blob: 54dc534f552117d31f4adf6fd1973a64a224991f [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 Kupersteine45af542015-06-30 13:36:19 +0000340static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000341_mm512_castps512_ps128(__m512 __a)
342{
343 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
344}
345
Michael Zuckermanc6677032016-05-03 14:26:52 +0000346
347static __inline__ __m512d __DEFAULT_FN_ATTRS
348_mm512_castpd128_pd512 (__m128d __A)
349{
350 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
351}
352
353static __inline__ __m512 __DEFAULT_FN_ATTRS
354_mm512_castps128_ps512 (__m128 __A)
355{
356 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
357}
358
359static __inline__ __m512i __DEFAULT_FN_ATTRS
360_mm512_castsi128_si512 (__m128i __A)
361{
362 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
363}
364
365static __inline__ __m512i __DEFAULT_FN_ATTRS
366_mm512_castsi256_si512 (__m256i __A)
367{
368 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
369}
370
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000371/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000372static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000373_mm512_and_epi32(__m512i __a, __m512i __b)
374{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000375 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000376}
377
Michael Kupersteine45af542015-06-30 13:36:19 +0000378static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000379_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
380{
381 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
382 (__v16si) __b,
383 (__v16si) __src,
384 (__mmask16) __k);
385}
Michael Kupersteine45af542015-06-30 13:36:19 +0000386static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000387_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
388{
389 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
390 (__v16si) __b,
391 (__v16si)
392 _mm512_setzero_si512 (),
393 (__mmask16) __k);
394}
395
Michael Kupersteine45af542015-06-30 13:36:19 +0000396static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000397_mm512_and_epi64(__m512i __a, __m512i __b)
398{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000399 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000400}
401
Michael Kupersteine45af542015-06-30 13:36:19 +0000402static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000403_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
404{
405 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
406 (__v8di) __b,
407 (__v8di) __src,
408 (__mmask8) __k);
409}
Michael Kupersteine45af542015-06-30 13:36:19 +0000410static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000411_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
412{
413 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
414 (__v8di) __b,
415 (__v8di)
416 _mm512_setzero_si512 (),
417 (__mmask8) __k);
418}
419
Michael Kupersteine45af542015-06-30 13:36:19 +0000420static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000421_mm512_andnot_si512 (__m512i __A, __m512i __B)
422{
423 return (__m512i)(~(__A) & __B);
424}
425
426static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000427_mm512_andnot_epi32 (__m512i __A, __m512i __B)
428{
429 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
430 (__v16si) __B,
431 (__v16si)
432 _mm512_setzero_si512 (),
433 (__mmask16) -1);
434}
435
Michael Kupersteine45af542015-06-30 13:36:19 +0000436static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000437_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
438{
439 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
440 (__v16si) __B,
441 (__v16si) __W,
442 (__mmask16) __U);
443}
444
Michael Kupersteine45af542015-06-30 13:36:19 +0000445static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000446_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
447{
448 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
449 (__v16si) __B,
450 (__v16si)
451 _mm512_setzero_si512 (),
452 (__mmask16) __U);
453}
454
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000456_mm512_andnot_epi64 (__m512i __A, __m512i __B)
457{
458 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
459 (__v8di) __B,
460 (__v8di)
461 _mm512_setzero_si512 (),
462 (__mmask8) -1);
463}
464
Michael Kupersteine45af542015-06-30 13:36:19 +0000465static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000466_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
467{
468 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
469 (__v8di) __B,
470 (__v8di) __W, __U);
471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000474_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
475{
476 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
477 (__v8di) __B,
478 (__v8di)
479 _mm512_setzero_pd (),
480 __U);
481}
Michael Kupersteine45af542015-06-30 13:36:19 +0000482static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483_mm512_or_epi32(__m512i __a, __m512i __b)
484{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000485 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000486}
487
Michael Kupersteine45af542015-06-30 13:36:19 +0000488static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000489_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
490{
491 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
492 (__v16si) __b,
493 (__v16si) __src,
494 (__mmask16) __k);
495}
Michael Kupersteine45af542015-06-30 13:36:19 +0000496static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000497_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
498{
499 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
500 (__v16si) __b,
501 (__v16si)
502 _mm512_setzero_si512 (),
503 (__mmask16) __k);
504}
505
Michael Kupersteine45af542015-06-30 13:36:19 +0000506static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000507_mm512_or_epi64(__m512i __a, __m512i __b)
508{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000509 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000510}
511
Michael Kupersteine45af542015-06-30 13:36:19 +0000512static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000513_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
514{
515 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
516 (__v8di) __b,
517 (__v8di) __src,
518 (__mmask8) __k);
519}
Michael Kupersteine45af542015-06-30 13:36:19 +0000520static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000521_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
522{
523 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
524 (__v8di) __b,
525 (__v8di)
526 _mm512_setzero_si512 (),
527 (__mmask8) __k);
528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000531_mm512_xor_epi32(__m512i __a, __m512i __b)
532{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000533 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000534}
535
Michael Kupersteine45af542015-06-30 13:36:19 +0000536static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000537_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
538{
539 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
540 (__v16si) __b,
541 (__v16si) __src,
542 (__mmask16) __k);
543}
Michael Kupersteine45af542015-06-30 13:36:19 +0000544static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000545_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
546{
547 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
548 (__v16si) __b,
549 (__v16si)
550 _mm512_setzero_si512 (),
551 (__mmask16) __k);
552}
553
Michael Kupersteine45af542015-06-30 13:36:19 +0000554static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000555_mm512_xor_epi64(__m512i __a, __m512i __b)
556{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000557 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000558}
559
Michael Kupersteine45af542015-06-30 13:36:19 +0000560static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000561_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
562{
563 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
564 (__v8di) __b,
565 (__v8di) __src,
566 (__mmask8) __k);
567}
Michael Kupersteine45af542015-06-30 13:36:19 +0000568static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000569_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
570{
571 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
572 (__v8di) __b,
573 (__v8di)
574 _mm512_setzero_si512 (),
575 (__mmask8) __k);
576}
577
Michael Kupersteine45af542015-06-30 13:36:19 +0000578static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000579_mm512_and_si512(__m512i __a, __m512i __b)
580{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000581 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000582}
583
Michael Kupersteine45af542015-06-30 13:36:19 +0000584static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000585_mm512_or_si512(__m512i __a, __m512i __b)
586{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000587 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000588}
589
Michael Kupersteine45af542015-06-30 13:36:19 +0000590static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000591_mm512_xor_si512(__m512i __a, __m512i __b)
592{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000593 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000594}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000595/* Arithmetic */
596
Michael Kupersteine45af542015-06-30 13:36:19 +0000597static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000598_mm512_add_pd(__m512d __a, __m512d __b)
599{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000600 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000601}
602
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000604_mm512_add_ps(__m512 __a, __m512 __b)
605{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000606 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000607}
608
Michael Kupersteine45af542015-06-30 13:36:19 +0000609static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000610_mm512_mul_pd(__m512d __a, __m512d __b)
611{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000612 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000613}
614
Michael Kupersteine45af542015-06-30 13:36:19 +0000615static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000616_mm512_mul_ps(__m512 __a, __m512 __b)
617{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000618 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000619}
620
Michael Kupersteine45af542015-06-30 13:36:19 +0000621static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000622_mm512_sub_pd(__m512d __a, __m512d __b)
623{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000624 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000625}
626
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000628_mm512_sub_ps(__m512 __a, __m512 __b)
629{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000630 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000631}
632
Michael Kupersteine45af542015-06-30 13:36:19 +0000633static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000634_mm512_add_epi64 (__m512i __A, __m512i __B)
635{
636 return (__m512i) ((__v8di) __A + (__v8di) __B);
637}
638
Michael Kupersteine45af542015-06-30 13:36:19 +0000639static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000640_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
641{
642 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
643 (__v8di) __B,
644 (__v8di) __W,
645 (__mmask8) __U);
646}
647
Michael Kupersteine45af542015-06-30 13:36:19 +0000648static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000649_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
650{
651 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
652 (__v8di) __B,
653 (__v8di)
654 _mm512_setzero_si512 (),
655 (__mmask8) __U);
656}
657
Michael Kupersteine45af542015-06-30 13:36:19 +0000658static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000659_mm512_sub_epi64 (__m512i __A, __m512i __B)
660{
661 return (__m512i) ((__v8di) __A - (__v8di) __B);
662}
663
Michael Kupersteine45af542015-06-30 13:36:19 +0000664static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000665_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
666{
667 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
668 (__v8di) __B,
669 (__v8di) __W,
670 (__mmask8) __U);
671}
672
Michael Kupersteine45af542015-06-30 13:36:19 +0000673static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000674_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
675{
676 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
677 (__v8di) __B,
678 (__v8di)
679 _mm512_setzero_si512 (),
680 (__mmask8) __U);
681}
682
Michael Kupersteine45af542015-06-30 13:36:19 +0000683static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000684_mm512_add_epi32 (__m512i __A, __m512i __B)
685{
686 return (__m512i) ((__v16si) __A + (__v16si) __B);
687}
688
Michael Kupersteine45af542015-06-30 13:36:19 +0000689static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000690_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
691{
692 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
693 (__v16si) __B,
694 (__v16si) __W,
695 (__mmask16) __U);
696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000699_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
700{
701 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
702 (__v16si) __B,
703 (__v16si)
704 _mm512_setzero_si512 (),
705 (__mmask16) __U);
706}
707
Michael Kupersteine45af542015-06-30 13:36:19 +0000708static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000709_mm512_sub_epi32 (__m512i __A, __m512i __B)
710{
711 return (__m512i) ((__v16si) __A - (__v16si) __B);
712}
713
Michael Kupersteine45af542015-06-30 13:36:19 +0000714static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000715_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
716{
717 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
718 (__v16si) __B,
719 (__v16si) __W,
720 (__mmask16) __U);
721}
722
Michael Kupersteine45af542015-06-30 13:36:19 +0000723static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000724_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
725{
726 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
727 (__v16si) __B,
728 (__v16si)
729 _mm512_setzero_si512 (),
730 (__mmask16) __U);
731}
732
Michael Kupersteine45af542015-06-30 13:36:19 +0000733static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000734_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000735{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000736 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
737 (__v8df) __B,
738 (__v8df)
739 _mm512_setzero_pd (),
740 (__mmask8) -1,
741 _MM_FROUND_CUR_DIRECTION);
742}
743
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000744static __inline__ __m512d __DEFAULT_FN_ATTRS
745_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
746{
747 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
748 (__v8df) __B,
749 (__v8df) __W,
750 (__mmask8) __U,
751 _MM_FROUND_CUR_DIRECTION);
752}
753
754static __inline__ __m512d __DEFAULT_FN_ATTRS
755_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
756{
757 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
758 (__v8df) __B,
759 (__v8df)
760 _mm512_setzero_pd (),
761 (__mmask8) __U,
762 _MM_FROUND_CUR_DIRECTION);
763}
764
Michael Kupersteine45af542015-06-30 13:36:19 +0000765static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000766_mm512_max_ps(__m512 __A, __m512 __B)
767{
768 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
769 (__v16sf) __B,
770 (__v16sf)
771 _mm512_setzero_ps (),
772 (__mmask16) -1,
773 _MM_FROUND_CUR_DIRECTION);
774}
775
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000776static __inline__ __m512 __DEFAULT_FN_ATTRS
777_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
778{
779 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
780 (__v16sf) __B,
781 (__v16sf) __W,
782 (__mmask16) __U,
783 _MM_FROUND_CUR_DIRECTION);
784}
785
786static __inline__ __m512 __DEFAULT_FN_ATTRS
787_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
788{
789 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
790 (__v16sf) __B,
791 (__v16sf)
792 _mm512_setzero_ps (),
793 (__mmask16) __U,
794 _MM_FROUND_CUR_DIRECTION);
795}
796
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000797static __inline__ __m128 __DEFAULT_FN_ATTRS
798_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000799 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000800 (__v4sf) __B,
801 (__v4sf) __W,
802 (__mmask8) __U,
803 _MM_FROUND_CUR_DIRECTION);
804}
805
806static __inline__ __m128 __DEFAULT_FN_ATTRS
807_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000808 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000809 (__v4sf) __B,
810 (__v4sf) _mm_setzero_ps (),
811 (__mmask8) __U,
812 _MM_FROUND_CUR_DIRECTION);
813}
814
Craig Topper8c18e112016-05-17 04:41:50 +0000815#define _mm_max_round_ss(A, B, R) __extension__ ({ \
816 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
817 (__v4sf)(__m128)(B), \
818 (__v4sf)_mm_setzero_ps(), \
819 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000820
Craig Topper8c18e112016-05-17 04:41:50 +0000821#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
822 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
823 (__v4sf)(__m128)(B), \
824 (__v4sf)(__m128)(W), (__mmask8)(U), \
825 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000826
Craig Topper8c18e112016-05-17 04:41:50 +0000827#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
828 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
829 (__v4sf)(__m128)(B), \
830 (__v4sf)_mm_setzero_ps(), \
831 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000832
833static __inline__ __m128d __DEFAULT_FN_ATTRS
834_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000835 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000836 (__v2df) __B,
837 (__v2df) __W,
838 (__mmask8) __U,
839 _MM_FROUND_CUR_DIRECTION);
840}
841
842static __inline__ __m128d __DEFAULT_FN_ATTRS
843_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000844 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000845 (__v2df) __B,
846 (__v2df) _mm_setzero_pd (),
847 (__mmask8) __U,
848 _MM_FROUND_CUR_DIRECTION);
849}
850
Craig Topper8c18e112016-05-17 04:41:50 +0000851#define _mm_max_round_sd(A, B, R) __extension__ ({ \
852 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
853 (__v2df)(__m128d)(B), \
854 (__v2df)_mm_setzero_pd(), \
855 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000856
Craig Topper8c18e112016-05-17 04:41:50 +0000857#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
858 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
859 (__v2df)(__m128d)(B), \
860 (__v2df)(__m128d)(W), \
861 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000862
Craig Topper8c18e112016-05-17 04:41:50 +0000863#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
864 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
865 (__v2df)(__m128d)(B), \
866 (__v2df)_mm_setzero_pd(), \
867 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000868
Michael Zuckermande860e52016-05-10 11:34:19 +0000869static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000870__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000871_mm512_max_epi32(__m512i __A, __m512i __B)
872{
873 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
874 (__v16si) __B,
875 (__v16si)
876 _mm512_setzero_si512 (),
877 (__mmask16) -1);
878}
879
Michael Zuckermande860e52016-05-10 11:34:19 +0000880static __inline__ __m512i __DEFAULT_FN_ATTRS
881_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
882{
883 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
884 (__v16si) __B,
885 (__v16si) __W, __M);
886}
887
888static __inline__ __m512i __DEFAULT_FN_ATTRS
889_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
890{
891 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
892 (__v16si) __B,
893 (__v16si)
894 _mm512_setzero_si512 (),
895 __M);
896}
897
Michael Kupersteine45af542015-06-30 13:36:19 +0000898static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000899_mm512_max_epu32(__m512i __A, __m512i __B)
900{
901 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
902 (__v16si) __B,
903 (__v16si)
904 _mm512_setzero_si512 (),
905 (__mmask16) -1);
906}
907
Michael Zuckermande860e52016-05-10 11:34:19 +0000908static __inline__ __m512i __DEFAULT_FN_ATTRS
909_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
910{
911 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
912 (__v16si) __B,
913 (__v16si) __W, __M);
914}
915
916static __inline__ __m512i __DEFAULT_FN_ATTRS
917_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
918{
919 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
920 (__v16si) __B,
921 (__v16si)
922 _mm512_setzero_si512 (),
923 __M);
924}
925
Michael Kupersteine45af542015-06-30 13:36:19 +0000926static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000927_mm512_max_epi64(__m512i __A, __m512i __B)
928{
929 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
930 (__v8di) __B,
931 (__v8di)
932 _mm512_setzero_si512 (),
933 (__mmask8) -1);
934}
935
Michael Zuckermande860e52016-05-10 11:34:19 +0000936static __inline__ __m512i __DEFAULT_FN_ATTRS
937_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
938{
939 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
940 (__v8di) __B,
941 (__v8di) __W, __M);
942}
943
944static __inline__ __m512i __DEFAULT_FN_ATTRS
945_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
946{
947 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
948 (__v8di) __B,
949 (__v8di)
950 _mm512_setzero_si512 (),
951 __M);
952}
953
Michael Kupersteine45af542015-06-30 13:36:19 +0000954static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000955_mm512_max_epu64(__m512i __A, __m512i __B)
956{
957 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
958 (__v8di) __B,
959 (__v8di)
960 _mm512_setzero_si512 (),
961 (__mmask8) -1);
962}
963
Michael Zuckermande860e52016-05-10 11:34:19 +0000964static __inline__ __m512i __DEFAULT_FN_ATTRS
965_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
966{
967 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
968 (__v8di) __B,
969 (__v8di) __W, __M);
970}
971
972static __inline__ __m512i __DEFAULT_FN_ATTRS
973_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
974{
975 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
976 (__v8di) __B,
977 (__v8di)
978 _mm512_setzero_si512 (),
979 __M);
980}
981
Michael Kupersteine45af542015-06-30 13:36:19 +0000982static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000983_mm512_min_pd(__m512d __A, __m512d __B)
984{
985 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
986 (__v8df) __B,
987 (__v8df)
988 _mm512_setzero_pd (),
989 (__mmask8) -1,
990 _MM_FROUND_CUR_DIRECTION);
991}
992
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000993static __inline__ __m512d __DEFAULT_FN_ATTRS
994_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
995{
996 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
997 (__v8df) __B,
998 (__v8df) __W,
999 (__mmask8) __U,
1000 _MM_FROUND_CUR_DIRECTION);
1001}
1002
1003static __inline__ __m512d __DEFAULT_FN_ATTRS
1004_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1005{
1006 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1007 (__v8df) __B,
1008 (__v8df)
1009 _mm512_setzero_pd (),
1010 (__mmask8) __U,
1011 _MM_FROUND_CUR_DIRECTION);
1012}
1013
Michael Kupersteine45af542015-06-30 13:36:19 +00001014static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001015_mm512_min_ps(__m512 __A, __m512 __B)
1016{
1017 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1018 (__v16sf) __B,
1019 (__v16sf)
1020 _mm512_setzero_ps (),
1021 (__mmask16) -1,
1022 _MM_FROUND_CUR_DIRECTION);
1023}
1024
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001025static __inline__ __m512 __DEFAULT_FN_ATTRS
1026_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1027{
1028 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1029 (__v16sf) __B,
1030 (__v16sf) __W,
1031 (__mmask16) __U,
1032 _MM_FROUND_CUR_DIRECTION);
1033}
1034
1035static __inline__ __m512 __DEFAULT_FN_ATTRS
1036_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1037{
1038 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1039 (__v16sf) __B,
1040 (__v16sf)
1041 _mm512_setzero_ps (),
1042 (__mmask16) __U,
1043 _MM_FROUND_CUR_DIRECTION);
1044}
1045
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001046static __inline__ __m128 __DEFAULT_FN_ATTRS
1047_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001048 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001049 (__v4sf) __B,
1050 (__v4sf) __W,
1051 (__mmask8) __U,
1052 _MM_FROUND_CUR_DIRECTION);
1053}
1054
1055static __inline__ __m128 __DEFAULT_FN_ATTRS
1056_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001057 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001058 (__v4sf) __B,
1059 (__v4sf) _mm_setzero_ps (),
1060 (__mmask8) __U,
1061 _MM_FROUND_CUR_DIRECTION);
1062}
1063
Craig Topper8c18e112016-05-17 04:41:50 +00001064#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1065 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1066 (__v4sf)(__m128)(B), \
1067 (__v4sf)_mm_setzero_ps(), \
1068 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001069
Craig Topper8c18e112016-05-17 04:41:50 +00001070#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1071 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1072 (__v4sf)(__m128)(B), \
1073 (__v4sf)(__m128)(W), (__mmask8)(U), \
1074 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001075
Craig Topper8c18e112016-05-17 04:41:50 +00001076#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1077 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1078 (__v4sf)(__m128)(B), \
1079 (__v4sf)_mm_setzero_ps(), \
1080 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001081
1082static __inline__ __m128d __DEFAULT_FN_ATTRS
1083_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001084 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001085 (__v2df) __B,
1086 (__v2df) __W,
1087 (__mmask8) __U,
1088 _MM_FROUND_CUR_DIRECTION);
1089}
1090
1091static __inline__ __m128d __DEFAULT_FN_ATTRS
1092_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001093 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001094 (__v2df) __B,
1095 (__v2df) _mm_setzero_pd (),
1096 (__mmask8) __U,
1097 _MM_FROUND_CUR_DIRECTION);
1098}
1099
Craig Topper8c18e112016-05-17 04:41:50 +00001100#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1101 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1102 (__v2df)(__m128d)(B), \
1103 (__v2df)_mm_setzero_pd(), \
1104 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001105
Craig Topper8c18e112016-05-17 04:41:50 +00001106#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1107 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1108 (__v2df)(__m128d)(B), \
1109 (__v2df)(__m128d)(W), \
1110 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001111
Craig Topper8c18e112016-05-17 04:41:50 +00001112#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1113 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1114 (__v2df)(__m128d)(B), \
1115 (__v2df)_mm_setzero_pd(), \
1116 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001117
Adam Nemet0d5bb552014-07-28 17:14:40 +00001118static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001119__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001120_mm512_min_epi32(__m512i __A, __m512i __B)
1121{
1122 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1123 (__v16si) __B,
1124 (__v16si)
1125 _mm512_setzero_si512 (),
1126 (__mmask16) -1);
1127}
1128
Michael Zuckermande860e52016-05-10 11:34:19 +00001129static __inline__ __m512i __DEFAULT_FN_ATTRS
1130_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1131{
1132 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1133 (__v16si) __B,
1134 (__v16si) __W, __M);
1135}
1136
1137static __inline__ __m512i __DEFAULT_FN_ATTRS
1138_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1139{
1140 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1141 (__v16si) __B,
1142 (__v16si)
1143 _mm512_setzero_si512 (),
1144 __M);
1145}
1146
Michael Kupersteine45af542015-06-30 13:36:19 +00001147static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001148_mm512_min_epu32(__m512i __A, __m512i __B)
1149{
1150 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1151 (__v16si) __B,
1152 (__v16si)
1153 _mm512_setzero_si512 (),
1154 (__mmask16) -1);
1155}
1156
Michael Zuckermande860e52016-05-10 11:34:19 +00001157static __inline__ __m512i __DEFAULT_FN_ATTRS
1158_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1159{
1160 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1161 (__v16si) __B,
1162 (__v16si) __W, __M);
1163}
1164
1165static __inline__ __m512i __DEFAULT_FN_ATTRS
1166_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1167{
1168 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1169 (__v16si) __B,
1170 (__v16si)
1171 _mm512_setzero_si512 (),
1172 __M);
1173}
1174
Michael Kupersteine45af542015-06-30 13:36:19 +00001175static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001176_mm512_min_epi64(__m512i __A, __m512i __B)
1177{
1178 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1179 (__v8di) __B,
1180 (__v8di)
1181 _mm512_setzero_si512 (),
1182 (__mmask8) -1);
1183}
1184
Michael Zuckermande860e52016-05-10 11:34:19 +00001185static __inline__ __m512i __DEFAULT_FN_ATTRS
1186_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1187{
1188 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1189 (__v8di) __B,
1190 (__v8di) __W, __M);
1191}
1192
1193static __inline__ __m512i __DEFAULT_FN_ATTRS
1194_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1195{
1196 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1197 (__v8di) __B,
1198 (__v8di)
1199 _mm512_setzero_si512 (),
1200 __M);
1201}
1202
Michael Kupersteine45af542015-06-30 13:36:19 +00001203static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001204_mm512_min_epu64(__m512i __A, __m512i __B)
1205{
1206 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1207 (__v8di) __B,
1208 (__v8di)
1209 _mm512_setzero_si512 (),
1210 (__mmask8) -1);
1211}
1212
Michael Zuckermande860e52016-05-10 11:34:19 +00001213static __inline__ __m512i __DEFAULT_FN_ATTRS
1214_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1215{
1216 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1217 (__v8di) __B,
1218 (__v8di) __W, __M);
1219}
1220
1221static __inline__ __m512i __DEFAULT_FN_ATTRS
1222_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1223{
1224 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1225 (__v8di) __B,
1226 (__v8di)
1227 _mm512_setzero_si512 (),
1228 __M);
1229}
1230
Michael Kupersteine45af542015-06-30 13:36:19 +00001231static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001232_mm512_mul_epi32(__m512i __X, __m512i __Y)
1233{
1234 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1235 (__v16si) __Y,
1236 (__v8di)
1237 _mm512_setzero_si512 (),
1238 (__mmask8) -1);
1239}
1240
Michael Kupersteine45af542015-06-30 13:36:19 +00001241static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001242_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1243{
1244 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1245 (__v16si) __Y,
1246 (__v8di) __W, __M);
1247}
1248
Michael Kupersteine45af542015-06-30 13:36:19 +00001249static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001250_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1251{
1252 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1253 (__v16si) __Y,
1254 (__v8di)
1255 _mm512_setzero_si512 (),
1256 __M);
1257}
1258
Michael Kupersteine45af542015-06-30 13:36:19 +00001259static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001260_mm512_mul_epu32(__m512i __X, __m512i __Y)
1261{
1262 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1263 (__v16si) __Y,
1264 (__v8di)
1265 _mm512_setzero_si512 (),
1266 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001267}
1268
Michael Kupersteine45af542015-06-30 13:36:19 +00001269static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001270_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1271{
1272 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1273 (__v16si) __Y,
1274 (__v8di) __W, __M);
1275}
1276
Michael Kupersteine45af542015-06-30 13:36:19 +00001277static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001278_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1279{
1280 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1281 (__v16si) __Y,
1282 (__v8di)
1283 _mm512_setzero_si512 (),
1284 __M);
1285}
1286
Michael Kupersteine45af542015-06-30 13:36:19 +00001287static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001288_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1289{
1290 return (__m512i) ((__v16si) __A * (__v16si) __B);
1291}
1292
Michael Kupersteine45af542015-06-30 13:36:19 +00001293static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001294_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1295{
1296 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1297 (__v16si) __B,
1298 (__v16si)
1299 _mm512_setzero_si512 (),
1300 __M);
1301}
1302
Michael Kupersteine45af542015-06-30 13:36:19 +00001303static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001304_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1305{
1306 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1307 (__v16si) __B,
1308 (__v16si) __W, __M);
1309}
1310
Michael Kupersteine45af542015-06-30 13:36:19 +00001311static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001312_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001313{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001314 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001315 (__v8df) _mm512_setzero_pd (),
1316 (__mmask8) -1,
1317 _MM_FROUND_CUR_DIRECTION);
1318}
1319
Michael Zuckermancb856772016-05-16 11:42:01 +00001320static __inline__ __m512d __DEFAULT_FN_ATTRS
1321_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1322{
1323 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1324 (__v8df) __W,
1325 (__mmask8) __U,
1326 _MM_FROUND_CUR_DIRECTION);
1327}
1328
1329static __inline__ __m512d __DEFAULT_FN_ATTRS
1330_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1331{
1332 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1333 (__v8df)
1334 _mm512_setzero_pd (),
1335 (__mmask8) __U,
1336 _MM_FROUND_CUR_DIRECTION);
1337}
1338
Michael Kupersteine45af542015-06-30 13:36:19 +00001339static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001340_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001341{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001342 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001343 (__v16sf) _mm512_setzero_ps (),
1344 (__mmask16) -1,
1345 _MM_FROUND_CUR_DIRECTION);
1346}
1347
Michael Zuckermancb856772016-05-16 11:42:01 +00001348static __inline__ __m512 __DEFAULT_FN_ATTRS
1349_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1350{
1351 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1352 (__v16sf) __W,
1353 (__mmask16) __U,
1354 _MM_FROUND_CUR_DIRECTION);
1355}
1356
1357static __inline__ __m512 __DEFAULT_FN_ATTRS
1358_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1359{
1360 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1361 (__v16sf) _mm512_setzero_ps (),
1362 (__mmask16) __U,
1363 _MM_FROUND_CUR_DIRECTION);
1364}
1365
Michael Kupersteine45af542015-06-30 13:36:19 +00001366static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001367_mm512_rsqrt14_pd(__m512d __A)
1368{
1369 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1370 (__v8df)
1371 _mm512_setzero_pd (),
1372 (__mmask8) -1);}
1373
Michael Zuckermancb856772016-05-16 11:42:01 +00001374static __inline__ __m512d __DEFAULT_FN_ATTRS
1375_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1376{
1377 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1378 (__v8df) __W,
1379 (__mmask8) __U);
1380}
1381
1382static __inline__ __m512d __DEFAULT_FN_ATTRS
1383_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1384{
1385 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1386 (__v8df)
1387 _mm512_setzero_pd (),
1388 (__mmask8) __U);
1389}
1390
Michael Kupersteine45af542015-06-30 13:36:19 +00001391static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001392_mm512_rsqrt14_ps(__m512 __A)
1393{
1394 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1395 (__v16sf)
1396 _mm512_setzero_ps (),
1397 (__mmask16) -1);
1398}
1399
Michael Zuckermancb856772016-05-16 11:42:01 +00001400static __inline__ __m512 __DEFAULT_FN_ATTRS
1401_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1402{
1403 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1404 (__v16sf) __W,
1405 (__mmask16) __U);
1406}
1407
1408static __inline__ __m512 __DEFAULT_FN_ATTRS
1409_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1410{
1411 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1412 (__v16sf)
1413 _mm512_setzero_ps (),
1414 (__mmask16) __U);
1415}
1416
Michael Kupersteine45af542015-06-30 13:36:19 +00001417static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001418_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1419{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001420 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001421 (__v4sf) __B,
1422 (__v4sf)
1423 _mm_setzero_ps (),
1424 (__mmask8) -1);
1425}
1426
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001427static __inline__ __m128 __DEFAULT_FN_ATTRS
1428_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1429{
1430 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1431 (__v4sf) __B,
1432 (__v4sf) __W,
1433 (__mmask8) __U);
1434}
1435
1436static __inline__ __m128 __DEFAULT_FN_ATTRS
1437_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1438{
1439 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1440 (__v4sf) __B,
1441 (__v4sf) _mm_setzero_ps (),
1442 (__mmask8) __U);
1443}
1444
Michael Kupersteine45af542015-06-30 13:36:19 +00001445static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001446_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1447{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001448 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001449 (__v2df) __B,
1450 (__v2df)
1451 _mm_setzero_pd (),
1452 (__mmask8) -1);
1453}
1454
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001455static __inline__ __m128d __DEFAULT_FN_ATTRS
1456_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1457{
1458 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1459 (__v2df) __B,
1460 (__v2df) __W,
1461 (__mmask8) __U);
1462}
1463
1464static __inline__ __m128d __DEFAULT_FN_ATTRS
1465_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1466{
1467 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1468 (__v2df) __B,
1469 (__v2df) _mm_setzero_pd (),
1470 (__mmask8) __U);
1471}
1472
Michael Kupersteine45af542015-06-30 13:36:19 +00001473static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001474_mm512_rcp14_pd(__m512d __A)
1475{
1476 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1477 (__v8df)
1478 _mm512_setzero_pd (),
1479 (__mmask8) -1);
1480}
1481
Michael Zuckermancb856772016-05-16 11:42:01 +00001482static __inline__ __m512d __DEFAULT_FN_ATTRS
1483_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1484{
1485 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1486 (__v8df) __W,
1487 (__mmask8) __U);
1488}
1489
1490static __inline__ __m512d __DEFAULT_FN_ATTRS
1491_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1492{
1493 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1494 (__v8df)
1495 _mm512_setzero_pd (),
1496 (__mmask8) __U);
1497}
1498
Michael Kupersteine45af542015-06-30 13:36:19 +00001499static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001500_mm512_rcp14_ps(__m512 __A)
1501{
1502 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1503 (__v16sf)
1504 _mm512_setzero_ps (),
1505 (__mmask16) -1);
1506}
Michael Zuckermancb856772016-05-16 11:42:01 +00001507
1508static __inline__ __m512 __DEFAULT_FN_ATTRS
1509_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1510{
1511 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1512 (__v16sf) __W,
1513 (__mmask16) __U);
1514}
1515
1516static __inline__ __m512 __DEFAULT_FN_ATTRS
1517_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1518{
1519 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1520 (__v16sf)
1521 _mm512_setzero_ps (),
1522 (__mmask16) __U);
1523}
1524
Michael Kupersteine45af542015-06-30 13:36:19 +00001525static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001526_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001527{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001528 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001529 (__v4sf) __B,
1530 (__v4sf)
1531 _mm_setzero_ps (),
1532 (__mmask8) -1);
1533}
1534
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001535static __inline__ __m128 __DEFAULT_FN_ATTRS
1536_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1537{
1538 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1539 (__v4sf) __B,
1540 (__v4sf) __W,
1541 (__mmask8) __U);
1542}
1543
1544static __inline__ __m128 __DEFAULT_FN_ATTRS
1545_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1546{
1547 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1548 (__v4sf) __B,
1549 (__v4sf) _mm_setzero_ps (),
1550 (__mmask8) __U);
1551}
1552
Michael Kupersteine45af542015-06-30 13:36:19 +00001553static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001554_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001555{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001556 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001557 (__v2df) __B,
1558 (__v2df)
1559 _mm_setzero_pd (),
1560 (__mmask8) -1);
1561}
1562
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001563static __inline__ __m128d __DEFAULT_FN_ATTRS
1564_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1565{
1566 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1567 (__v2df) __B,
1568 (__v2df) __W,
1569 (__mmask8) __U);
1570}
1571
1572static __inline__ __m128d __DEFAULT_FN_ATTRS
1573_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1574{
1575 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1576 (__v2df) __B,
1577 (__v2df) _mm_setzero_pd (),
1578 (__mmask8) __U);
1579}
1580
Michael Kupersteine45af542015-06-30 13:36:19 +00001581static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001582_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001583{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001584 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1585 _MM_FROUND_FLOOR,
1586 (__v16sf) __A, -1,
1587 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001588}
1589
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001590static __inline__ __m512 __DEFAULT_FN_ATTRS
1591_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1592{
1593 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1594 _MM_FROUND_FLOOR,
1595 (__v16sf) __W, __U,
1596 _MM_FROUND_CUR_DIRECTION);
1597}
1598
1599
Michael Kupersteine45af542015-06-30 13:36:19 +00001600static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001601_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001602{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001603 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1604 _MM_FROUND_FLOOR,
1605 (__v8df) __A, -1,
1606 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001607}
1608
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001609static __inline__ __m512d __DEFAULT_FN_ATTRS
1610_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1611{
1612 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1613 _MM_FROUND_FLOOR,
1614 (__v8df) __W, __U,
1615 _MM_FROUND_CUR_DIRECTION);
1616}
1617
1618
1619static __inline__ __m512 __DEFAULT_FN_ATTRS
1620_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1621{
1622 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1623 _MM_FROUND_CEIL,
1624 (__v16sf) __W, __U,
1625 _MM_FROUND_CUR_DIRECTION);
1626}
1627
Michael Kupersteine45af542015-06-30 13:36:19 +00001628static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001629_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001630{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001631 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1632 _MM_FROUND_CEIL,
1633 (__v16sf) __A, -1,
1634 _MM_FROUND_CUR_DIRECTION);
1635}
1636
Michael Kupersteine45af542015-06-30 13:36:19 +00001637static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001638_mm512_ceil_pd(__m512d __A)
1639{
1640 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1641 _MM_FROUND_CEIL,
1642 (__v8df) __A, -1,
1643 _MM_FROUND_CUR_DIRECTION);
1644}
1645
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001646static __inline__ __m512d __DEFAULT_FN_ATTRS
1647_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1648{
1649 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1650 _MM_FROUND_CEIL,
1651 (__v8df) __W, __U,
1652 _MM_FROUND_CUR_DIRECTION);
1653}
1654
Michael Kupersteine45af542015-06-30 13:36:19 +00001655static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001656_mm512_abs_epi64(__m512i __A)
1657{
1658 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1659 (__v8di)
1660 _mm512_setzero_si512 (),
1661 (__mmask8) -1);
1662}
1663
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001664static __inline__ __m512i __DEFAULT_FN_ATTRS
1665_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1666{
1667 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1668 (__v8di) __W,
1669 (__mmask8) __U);
1670}
1671
1672static __inline__ __m512i __DEFAULT_FN_ATTRS
1673_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1674{
1675 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1676 (__v8di)
1677 _mm512_setzero_si512 (),
1678 (__mmask8) __U);
1679}
1680
Michael Kupersteine45af542015-06-30 13:36:19 +00001681static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001682_mm512_abs_epi32(__m512i __A)
1683{
1684 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1685 (__v16si)
1686 _mm512_setzero_si512 (),
1687 (__mmask16) -1);
1688}
1689
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001690static __inline__ __m512i __DEFAULT_FN_ATTRS
1691_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1692{
1693 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1694 (__v16si) __W,
1695 (__mmask16) __U);
1696}
1697
1698static __inline__ __m512i __DEFAULT_FN_ATTRS
1699_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1700{
1701 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1702 (__v16si)
1703 _mm512_setzero_si512 (),
1704 (__mmask16) __U);
1705}
1706
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001707static __inline__ __m128 __DEFAULT_FN_ATTRS
1708_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001709 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001710 (__v4sf) __B,
1711 (__v4sf) __W,
1712 (__mmask8) __U,
1713 _MM_FROUND_CUR_DIRECTION);
1714}
1715
1716static __inline__ __m128 __DEFAULT_FN_ATTRS
1717_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001718 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001719 (__v4sf) __B,
1720 (__v4sf) _mm_setzero_ps (),
1721 (__mmask8) __U,
1722 _MM_FROUND_CUR_DIRECTION);
1723}
1724
Craig Topper8c18e112016-05-17 04:41:50 +00001725#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1726 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1727 (__v4sf)(__m128)(B), \
1728 (__v4sf)_mm_setzero_ps(), \
1729 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001730
Craig Topper8c18e112016-05-17 04:41:50 +00001731#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1732 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1733 (__v4sf)(__m128)(B), \
1734 (__v4sf)(__m128)(W), (__mmask8)(U), \
1735 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001736
Craig Topper8c18e112016-05-17 04:41:50 +00001737#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1738 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1739 (__v4sf)(__m128)(B), \
1740 (__v4sf)_mm_setzero_ps(), \
1741 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001742
1743static __inline__ __m128d __DEFAULT_FN_ATTRS
1744_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001745 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001746 (__v2df) __B,
1747 (__v2df) __W,
1748 (__mmask8) __U,
1749 _MM_FROUND_CUR_DIRECTION);
1750}
1751
1752static __inline__ __m128d __DEFAULT_FN_ATTRS
1753_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001754 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001755 (__v2df) __B,
1756 (__v2df) _mm_setzero_pd (),
1757 (__mmask8) __U,
1758 _MM_FROUND_CUR_DIRECTION);
1759}
Craig Topper8c18e112016-05-17 04:41:50 +00001760#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1761 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1762 (__v2df)(__m128d)(B), \
1763 (__v2df)_mm_setzero_pd(), \
1764 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001765
Craig Topper8c18e112016-05-17 04:41:50 +00001766#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1767 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1768 (__v2df)(__m128d)(B), \
1769 (__v2df)(__m128d)(W), \
1770 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001771
Craig Topper8c18e112016-05-17 04:41:50 +00001772#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1773 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1774 (__v2df)(__m128d)(B), \
1775 (__v2df)_mm_setzero_pd(), \
1776 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001777
Asaf Badouhffeb6242015-07-21 15:27:28 +00001778static __inline__ __m512d __DEFAULT_FN_ATTRS
1779_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1780 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1781 (__v8df) __B,
1782 (__v8df) __W,
1783 (__mmask8) __U,
1784 _MM_FROUND_CUR_DIRECTION);
1785}
1786
1787static __inline__ __m512d __DEFAULT_FN_ATTRS
1788_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1789 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1790 (__v8df) __B,
1791 (__v8df) _mm512_setzero_pd (),
1792 (__mmask8) __U,
1793 _MM_FROUND_CUR_DIRECTION);
1794}
1795
1796static __inline__ __m512 __DEFAULT_FN_ATTRS
1797_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1798 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1799 (__v16sf) __B,
1800 (__v16sf) __W,
1801 (__mmask16) __U,
1802 _MM_FROUND_CUR_DIRECTION);
1803}
1804
1805static __inline__ __m512 __DEFAULT_FN_ATTRS
1806_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1807 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1808 (__v16sf) __B,
1809 (__v16sf) _mm512_setzero_ps (),
1810 (__mmask16) __U,
1811 _MM_FROUND_CUR_DIRECTION);
1812}
1813
Craig Topper8c18e112016-05-17 04:41:50 +00001814#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1815 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1816 (__v8df)(__m512d)(B), \
1817 (__v8df)_mm512_setzero_pd(), \
1818 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001819
Craig Topper8c18e112016-05-17 04:41:50 +00001820#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1821 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1822 (__v8df)(__m512d)(B), \
1823 (__v8df)(__m512d)(W), (__mmask8)(U), \
1824 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001825
Craig Topper8c18e112016-05-17 04:41:50 +00001826#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1827 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1828 (__v8df)(__m512d)(B), \
1829 (__v8df)_mm512_setzero_pd(), \
1830 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001831
Craig Topper8c18e112016-05-17 04:41:50 +00001832#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1833 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1834 (__v16sf)(__m512)(B), \
1835 (__v16sf)_mm512_setzero_ps(), \
1836 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001837
Craig Topper8c18e112016-05-17 04:41:50 +00001838#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1839 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1840 (__v16sf)(__m512)(B), \
1841 (__v16sf)(__m512)(W), (__mmask16)(U), \
1842 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001843
Craig Topper8c18e112016-05-17 04:41:50 +00001844#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1845 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1846 (__v16sf)(__m512)(B), \
1847 (__v16sf)_mm512_setzero_ps(), \
1848 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001849
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001850static __inline__ __m128 __DEFAULT_FN_ATTRS
1851_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001852 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001853 (__v4sf) __B,
1854 (__v4sf) __W,
1855 (__mmask8) __U,
1856 _MM_FROUND_CUR_DIRECTION);
1857}
1858
1859static __inline__ __m128 __DEFAULT_FN_ATTRS
1860_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001861 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001862 (__v4sf) __B,
1863 (__v4sf) _mm_setzero_ps (),
1864 (__mmask8) __U,
1865 _MM_FROUND_CUR_DIRECTION);
1866}
Craig Topper8c18e112016-05-17 04:41:50 +00001867#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1868 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1869 (__v4sf)(__m128)(B), \
1870 (__v4sf)_mm_setzero_ps(), \
1871 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001872
Craig Topper8c18e112016-05-17 04:41:50 +00001873#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1874 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1875 (__v4sf)(__m128)(B), \
1876 (__v4sf)(__m128)(W), (__mmask8)(U), \
1877 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001878
Craig Topper8c18e112016-05-17 04:41:50 +00001879#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1880 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1881 (__v4sf)(__m128)(B), \
1882 (__v4sf)_mm_setzero_ps(), \
1883 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001884
1885static __inline__ __m128d __DEFAULT_FN_ATTRS
1886_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001887 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001888 (__v2df) __B,
1889 (__v2df) __W,
1890 (__mmask8) __U,
1891 _MM_FROUND_CUR_DIRECTION);
1892}
1893
1894static __inline__ __m128d __DEFAULT_FN_ATTRS
1895_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001896 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001897 (__v2df) __B,
1898 (__v2df) _mm_setzero_pd (),
1899 (__mmask8) __U,
1900 _MM_FROUND_CUR_DIRECTION);
1901}
1902
Craig Topper8c18e112016-05-17 04:41:50 +00001903#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1904 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1905 (__v2df)(__m128d)(B), \
1906 (__v2df)_mm_setzero_pd(), \
1907 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001908
Craig Topper8c18e112016-05-17 04:41:50 +00001909#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1910 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1911 (__v2df)(__m128d)(B), \
1912 (__v2df)(__m128d)(W), \
1913 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001914
Craig Topper8c18e112016-05-17 04:41:50 +00001915#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1916 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1917 (__v2df)(__m128d)(B), \
1918 (__v2df)_mm_setzero_pd(), \
1919 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001920
Asaf Badouhffeb6242015-07-21 15:27:28 +00001921static __inline__ __m512d __DEFAULT_FN_ATTRS
1922_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1923 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1924 (__v8df) __B,
1925 (__v8df) __W,
1926 (__mmask8) __U,
1927 _MM_FROUND_CUR_DIRECTION);
1928}
1929
1930static __inline__ __m512d __DEFAULT_FN_ATTRS
1931_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1932 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1933 (__v8df) __B,
1934 (__v8df)
1935 _mm512_setzero_pd (),
1936 (__mmask8) __U,
1937 _MM_FROUND_CUR_DIRECTION);
1938}
1939
1940static __inline__ __m512 __DEFAULT_FN_ATTRS
1941_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1942 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1943 (__v16sf) __B,
1944 (__v16sf) __W,
1945 (__mmask16) __U,
1946 _MM_FROUND_CUR_DIRECTION);
1947}
1948
1949static __inline__ __m512 __DEFAULT_FN_ATTRS
1950_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1951 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1952 (__v16sf) __B,
1953 (__v16sf)
1954 _mm512_setzero_ps (),
1955 (__mmask16) __U,
1956 _MM_FROUND_CUR_DIRECTION);
1957}
1958
Craig Topper8c18e112016-05-17 04:41:50 +00001959#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
1960 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
1961 (__v8df)(__m512d)(B), \
1962 (__v8df)_mm512_setzero_pd(), \
1963 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001964
Craig Topper8c18e112016-05-17 04:41:50 +00001965#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
1966 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
1967 (__v8df)(__m512d)(B), \
1968 (__v8df)(__m512d)(W), (__mmask8)(U), \
1969 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001970
Craig Topper8c18e112016-05-17 04:41:50 +00001971#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
1972 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
1973 (__v8df)(__m512d)(B), \
1974 (__v8df)_mm512_setzero_pd(), \
1975 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001976
Craig Topper8c18e112016-05-17 04:41:50 +00001977#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
1978 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
1979 (__v16sf)(__m512)(B), \
1980 (__v16sf)_mm512_setzero_ps(), \
1981 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001982
Craig Topper8c18e112016-05-17 04:41:50 +00001983#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
1984 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
1985 (__v16sf)(__m512)(B), \
1986 (__v16sf)(__m512)(W), (__mmask16)(U), \
1987 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00001988
Craig Topper8c18e112016-05-17 04:41:50 +00001989#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
1990 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
1991 (__v16sf)(__m512)(B), \
1992 (__v16sf)_mm512_setzero_ps(), \
1993 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00001994
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001995static __inline__ __m128 __DEFAULT_FN_ATTRS
1996_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001997 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001998 (__v4sf) __B,
1999 (__v4sf) __W,
2000 (__mmask8) __U,
2001 _MM_FROUND_CUR_DIRECTION);
2002}
2003
2004static __inline__ __m128 __DEFAULT_FN_ATTRS
2005_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002006 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002007 (__v4sf) __B,
2008 (__v4sf) _mm_setzero_ps (),
2009 (__mmask8) __U,
2010 _MM_FROUND_CUR_DIRECTION);
2011}
Craig Topper8c18e112016-05-17 04:41:50 +00002012#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2013 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2014 (__v4sf)(__m128)(B), \
2015 (__v4sf)_mm_setzero_ps(), \
2016 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002017
Craig Topper8c18e112016-05-17 04:41:50 +00002018#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2019 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2020 (__v4sf)(__m128)(B), \
2021 (__v4sf)(__m128)(W), (__mmask8)(U), \
2022 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002023
Craig Topper8c18e112016-05-17 04:41:50 +00002024#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2025 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2026 (__v4sf)(__m128)(B), \
2027 (__v4sf)_mm_setzero_ps(), \
2028 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002029
2030static __inline__ __m128d __DEFAULT_FN_ATTRS
2031_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002032 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002033 (__v2df) __B,
2034 (__v2df) __W,
2035 (__mmask8) __U,
2036 _MM_FROUND_CUR_DIRECTION);
2037}
2038
2039static __inline__ __m128d __DEFAULT_FN_ATTRS
2040_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002041 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002042 (__v2df) __B,
2043 (__v2df) _mm_setzero_pd (),
2044 (__mmask8) __U,
2045 _MM_FROUND_CUR_DIRECTION);
2046}
2047
Craig Topper8c18e112016-05-17 04:41:50 +00002048#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2049 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2050 (__v2df)(__m128d)(B), \
2051 (__v2df)_mm_setzero_pd(), \
2052 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002053
Craig Topper8c18e112016-05-17 04:41:50 +00002054#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2055 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2056 (__v2df)(__m128d)(B), \
2057 (__v2df)(__m128d)(W), \
2058 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002059
Craig Topper8c18e112016-05-17 04:41:50 +00002060#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2061 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2062 (__v2df)(__m128d)(B), \
2063 (__v2df)_mm_setzero_pd(), \
2064 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002065
Asaf Badouhffeb6242015-07-21 15:27:28 +00002066static __inline__ __m512d __DEFAULT_FN_ATTRS
2067_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2068 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2069 (__v8df) __B,
2070 (__v8df) __W,
2071 (__mmask8) __U,
2072 _MM_FROUND_CUR_DIRECTION);
2073}
2074
2075static __inline__ __m512d __DEFAULT_FN_ATTRS
2076_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2077 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2078 (__v8df) __B,
2079 (__v8df)
2080 _mm512_setzero_pd (),
2081 (__mmask8) __U,
2082 _MM_FROUND_CUR_DIRECTION);
2083}
2084
2085static __inline__ __m512 __DEFAULT_FN_ATTRS
2086_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2087 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2088 (__v16sf) __B,
2089 (__v16sf) __W,
2090 (__mmask16) __U,
2091 _MM_FROUND_CUR_DIRECTION);
2092}
2093
2094static __inline__ __m512 __DEFAULT_FN_ATTRS
2095_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2096 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2097 (__v16sf) __B,
2098 (__v16sf)
2099 _mm512_setzero_ps (),
2100 (__mmask16) __U,
2101 _MM_FROUND_CUR_DIRECTION);
2102}
2103
Craig Topper8c18e112016-05-17 04:41:50 +00002104#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2105 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2106 (__v8df)(__m512d)(B), \
2107 (__v8df)_mm512_setzero_pd(), \
2108 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002109
Craig Topper8c18e112016-05-17 04:41:50 +00002110#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2111 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2112 (__v8df)(__m512d)(B), \
2113 (__v8df)(__m512d)(W), (__mmask8)(U), \
2114 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002115
Craig Topper8c18e112016-05-17 04:41:50 +00002116#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2117 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2118 (__v8df)(__m512d)(B), \
2119 (__v8df)_mm512_setzero_pd(), \
2120 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002121
Craig Topper8c18e112016-05-17 04:41:50 +00002122#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2123 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2124 (__v16sf)(__m512)(B), \
2125 (__v16sf)_mm512_setzero_ps(), \
2126 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002127
Craig Topper8c18e112016-05-17 04:41:50 +00002128#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2129 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2130 (__v16sf)(__m512)(B), \
2131 (__v16sf)(__m512)(W), (__mmask16)(U), \
2132 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002133
Craig Topper8c18e112016-05-17 04:41:50 +00002134#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2135 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2136 (__v16sf)(__m512)(B), \
2137 (__v16sf)_mm512_setzero_ps(), \
2138 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002139
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002140static __inline__ __m128 __DEFAULT_FN_ATTRS
2141_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002142 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002143 (__v4sf) __B,
2144 (__v4sf) __W,
2145 (__mmask8) __U,
2146 _MM_FROUND_CUR_DIRECTION);
2147}
2148
2149static __inline__ __m128 __DEFAULT_FN_ATTRS
2150_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002151 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002152 (__v4sf) __B,
2153 (__v4sf) _mm_setzero_ps (),
2154 (__mmask8) __U,
2155 _MM_FROUND_CUR_DIRECTION);
2156}
2157
Craig Topper8c18e112016-05-17 04:41:50 +00002158#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2159 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2160 (__v4sf)(__m128)(B), \
2161 (__v4sf)_mm_setzero_ps(), \
2162 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002163
Craig Topper8c18e112016-05-17 04:41:50 +00002164#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2165 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2166 (__v4sf)(__m128)(B), \
2167 (__v4sf)(__m128)(W), (__mmask8)(U), \
2168 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002169
Craig Topper8c18e112016-05-17 04:41:50 +00002170#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2171 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2172 (__v4sf)(__m128)(B), \
2173 (__v4sf)_mm_setzero_ps(), \
2174 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002175
2176static __inline__ __m128d __DEFAULT_FN_ATTRS
2177_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002178 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002179 (__v2df) __B,
2180 (__v2df) __W,
2181 (__mmask8) __U,
2182 _MM_FROUND_CUR_DIRECTION);
2183}
2184
2185static __inline__ __m128d __DEFAULT_FN_ATTRS
2186_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002187 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002188 (__v2df) __B,
2189 (__v2df) _mm_setzero_pd (),
2190 (__mmask8) __U,
2191 _MM_FROUND_CUR_DIRECTION);
2192}
2193
Craig Topper8c18e112016-05-17 04:41:50 +00002194#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2195 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2196 (__v2df)(__m128d)(B), \
2197 (__v2df)_mm_setzero_pd(), \
2198 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002199
Craig Topper8c18e112016-05-17 04:41:50 +00002200#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2201 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2202 (__v2df)(__m128d)(B), \
2203 (__v2df)(__m128d)(W), \
2204 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002205
Craig Topper8c18e112016-05-17 04:41:50 +00002206#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2207 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2208 (__v2df)(__m128d)(B), \
2209 (__v2df)_mm_setzero_pd(), \
2210 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002211
Asaf Badouhffeb6242015-07-21 15:27:28 +00002212static __inline__ __m512d __DEFAULT_FN_ATTRS
2213_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2214 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2215 (__v8df) __B,
2216 (__v8df) __W,
2217 (__mmask8) __U,
2218 _MM_FROUND_CUR_DIRECTION);
2219}
2220
2221static __inline__ __m512d __DEFAULT_FN_ATTRS
2222_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2223 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2224 (__v8df) __B,
2225 (__v8df)
2226 _mm512_setzero_pd (),
2227 (__mmask8) __U,
2228 _MM_FROUND_CUR_DIRECTION);
2229}
2230
2231static __inline__ __m512 __DEFAULT_FN_ATTRS
2232_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2233 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2234 (__v16sf) __B,
2235 (__v16sf) __W,
2236 (__mmask16) __U,
2237 _MM_FROUND_CUR_DIRECTION);
2238}
2239
2240static __inline__ __m512 __DEFAULT_FN_ATTRS
2241_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2242 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2243 (__v16sf) __B,
2244 (__v16sf)
2245 _mm512_setzero_ps (),
2246 (__mmask16) __U,
2247 _MM_FROUND_CUR_DIRECTION);
2248}
2249
Craig Topper8c18e112016-05-17 04:41:50 +00002250#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2251 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2252 (__v8df)(__m512d)(B), \
2253 (__v8df)_mm512_setzero_pd(), \
2254 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002255
Craig Topper8c18e112016-05-17 04:41:50 +00002256#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2257 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2258 (__v8df)(__m512d)(B), \
2259 (__v8df)(__m512d)(W), (__mmask8)(U), \
2260 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002261
Craig Topper8c18e112016-05-17 04:41:50 +00002262#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2263 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2264 (__v8df)(__m512d)(B), \
2265 (__v8df)_mm512_setzero_pd(), \
2266 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002267
Craig Topper8c18e112016-05-17 04:41:50 +00002268#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2269 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2270 (__v16sf)(__m512)(B), \
2271 (__v16sf)_mm512_setzero_ps(), \
2272 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002273
Craig Topper8c18e112016-05-17 04:41:50 +00002274#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2275 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2276 (__v16sf)(__m512)(B), \
2277 (__v16sf)(__m512)(W), (__mmask16)(U), \
2278 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002279
Craig Topper8c18e112016-05-17 04:41:50 +00002280#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2281 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2282 (__v16sf)(__m512)(B), \
2283 (__v16sf)_mm512_setzero_ps(), \
2284 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002285
Craig Topper72c7d512015-02-01 07:35:35 +00002286#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002287 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2288 (__v16sf)(__m512)(A), (__mmask16)-1, \
2289 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002290
Craig Topper8c18e112016-05-17 04:41:50 +00002291#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2292 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2293 (__v16sf)(__m512)(A), (__mmask16)(B), \
2294 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002295
Craig Topper8c18e112016-05-17 04:41:50 +00002296#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2297 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2298 (__v16sf)_mm512_setzero_ps(), \
2299 (__mmask16)(A), \
2300 _MM_FROUND_CUR_DIRECTION); })
2301
Craig Topper72c7d512015-02-01 07:35:35 +00002302#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002303 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2304 (__v8df)(__m512d)(A), (__mmask8)-1, \
2305 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002306
Craig Topper8c18e112016-05-17 04:41:50 +00002307#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2308 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2309 (__v8df)(__m512d)(A), (__mmask8)(B), \
2310 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002311
Craig Topper8c18e112016-05-17 04:41:50 +00002312#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2313 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2314 (__v8df)_mm512_setzero_pd(), \
2315 (__mmask8)(A), \
2316 _MM_FROUND_CUR_DIRECTION); })
2317
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002318#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002319 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2320 (__v8df)(__m512d)(B), \
2321 (__v8df)(__m512d)(C), (__mmask8)-1, \
2322 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002323
2324
2325#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002326 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2327 (__v8df)(__m512d)(B), \
2328 (__v8df)(__m512d)(C), \
2329 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002330
2331
2332#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002333 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2334 (__v8df)(__m512d)(B), \
2335 (__v8df)(__m512d)(C), \
2336 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002337
2338
2339#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002340 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2341 (__v8df)(__m512d)(B), \
2342 (__v8df)(__m512d)(C), \
2343 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002344
2345
2346#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002347 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2348 (__v8df)(__m512d)(B), \
2349 -(__v8df)(__m512d)(C), \
2350 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002351
2352
2353#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002354 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2355 (__v8df)(__m512d)(B), \
2356 -(__v8df)(__m512d)(C), \
2357 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002358
2359
2360#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002361 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2362 (__v8df)(__m512d)(B), \
2363 -(__v8df)(__m512d)(C), \
2364 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002365
2366
2367#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002368 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2369 (__v8df)(__m512d)(B), \
2370 (__v8df)(__m512d)(C), (__mmask8)-1, \
2371 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002372
2373
2374#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002375 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2376 (__v8df)(__m512d)(B), \
2377 (__v8df)(__m512d)(C), \
2378 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002379
2380
2381#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002382 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2383 (__v8df)(__m512d)(B), \
2384 (__v8df)(__m512d)(C), \
2385 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002386
2387
2388#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002389 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2390 (__v8df)(__m512d)(B), \
2391 -(__v8df)(__m512d)(C), \
2392 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002393
2394
2395#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002396 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2397 (__v8df)(__m512d)(B), \
2398 -(__v8df)(__m512d)(C), \
2399 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002400
2401
Michael Kupersteine45af542015-06-30 13:36:19 +00002402static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002403_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2404{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002405 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2406 (__v8df) __B,
2407 (__v8df) __C,
2408 (__mmask8) -1,
2409 _MM_FROUND_CUR_DIRECTION);
2410}
2411
Michael Kupersteine45af542015-06-30 13:36:19 +00002412static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002413_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2414{
2415 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2416 (__v8df) __B,
2417 (__v8df) __C,
2418 (__mmask8) __U,
2419 _MM_FROUND_CUR_DIRECTION);
2420}
2421
Michael Kupersteine45af542015-06-30 13:36:19 +00002422static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002423_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2424{
2425 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2426 (__v8df) __B,
2427 (__v8df) __C,
2428 (__mmask8) __U,
2429 _MM_FROUND_CUR_DIRECTION);
2430}
2431
Michael Kupersteine45af542015-06-30 13:36:19 +00002432static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002433_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2434{
2435 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2436 (__v8df) __B,
2437 (__v8df) __C,
2438 (__mmask8) __U,
2439 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002440}
2441
Michael Kupersteine45af542015-06-30 13:36:19 +00002442static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002443_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2444{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002445 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2446 (__v8df) __B,
2447 -(__v8df) __C,
2448 (__mmask8) -1,
2449 _MM_FROUND_CUR_DIRECTION);
2450}
2451
Michael Kupersteine45af542015-06-30 13:36:19 +00002452static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002453_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2454{
2455 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2456 (__v8df) __B,
2457 -(__v8df) __C,
2458 (__mmask8) __U,
2459 _MM_FROUND_CUR_DIRECTION);
2460}
2461
Michael Kupersteine45af542015-06-30 13:36:19 +00002462static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002463_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2464{
2465 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2466 (__v8df) __B,
2467 -(__v8df) __C,
2468 (__mmask8) __U,
2469 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002470}
2471
Michael Kupersteine45af542015-06-30 13:36:19 +00002472static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002473_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2474{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002475 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2476 (__v8df) __B,
2477 (__v8df) __C,
2478 (__mmask8) -1,
2479 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002480}
2481
Michael Kupersteine45af542015-06-30 13:36:19 +00002482static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002483_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2484{
2485 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2486 (__v8df) __B,
2487 (__v8df) __C,
2488 (__mmask8) __U,
2489 _MM_FROUND_CUR_DIRECTION);
2490}
2491
Michael Kupersteine45af542015-06-30 13:36:19 +00002492static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002493_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2494{
2495 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2496 (__v8df) __B,
2497 (__v8df) __C,
2498 (__mmask8) __U,
2499 _MM_FROUND_CUR_DIRECTION);
2500}
2501
Michael Kupersteine45af542015-06-30 13:36:19 +00002502static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002503_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2504{
2505 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2506 (__v8df) __B,
2507 -(__v8df) __C,
2508 (__mmask8) -1,
2509 _MM_FROUND_CUR_DIRECTION);
2510}
2511
Michael Kupersteine45af542015-06-30 13:36:19 +00002512static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002513_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2514{
2515 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2516 (__v8df) __B,
2517 -(__v8df) __C,
2518 (__mmask8) __U,
2519 _MM_FROUND_CUR_DIRECTION);
2520}
2521
2522#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002523 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2524 (__v16sf)(__m512)(B), \
2525 (__v16sf)(__m512)(C), (__mmask16)-1, \
2526 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002527
2528
2529#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002530 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2531 (__v16sf)(__m512)(B), \
2532 (__v16sf)(__m512)(C), \
2533 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002534
2535
2536#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002537 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2538 (__v16sf)(__m512)(B), \
2539 (__v16sf)(__m512)(C), \
2540 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002541
2542
2543#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002544 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2545 (__v16sf)(__m512)(B), \
2546 (__v16sf)(__m512)(C), \
2547 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002548
2549
2550#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002551 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2552 (__v16sf)(__m512)(B), \
2553 -(__v16sf)(__m512)(C), \
2554 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002555
2556
2557#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002558 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2559 (__v16sf)(__m512)(B), \
2560 -(__v16sf)(__m512)(C), \
2561 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002562
2563
2564#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002565 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2566 (__v16sf)(__m512)(B), \
2567 -(__v16sf)(__m512)(C), \
2568 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002569
2570
2571#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002572 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2573 (__v16sf)(__m512)(B), \
2574 (__v16sf)(__m512)(C), (__mmask16)-1, \
2575 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002576
2577
2578#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002579 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2580 (__v16sf)(__m512)(B), \
2581 (__v16sf)(__m512)(C), \
2582 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002583
2584
2585#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002586 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2587 (__v16sf)(__m512)(B), \
2588 (__v16sf)(__m512)(C), \
2589 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002590
2591
2592#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002593 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2594 (__v16sf)(__m512)(B), \
2595 -(__v16sf)(__m512)(C), \
2596 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002597
2598
2599#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002600 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2601 (__v16sf)(__m512)(B), \
2602 -(__v16sf)(__m512)(C), \
2603 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002604
2605
Michael Kupersteine45af542015-06-30 13:36:19 +00002606static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002607_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2608{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002609 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2610 (__v16sf) __B,
2611 (__v16sf) __C,
2612 (__mmask16) -1,
2613 _MM_FROUND_CUR_DIRECTION);
2614}
2615
Michael Kupersteine45af542015-06-30 13:36:19 +00002616static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002617_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2618{
2619 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2620 (__v16sf) __B,
2621 (__v16sf) __C,
2622 (__mmask16) __U,
2623 _MM_FROUND_CUR_DIRECTION);
2624}
2625
Michael Kupersteine45af542015-06-30 13:36:19 +00002626static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002627_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2628{
2629 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2630 (__v16sf) __B,
2631 (__v16sf) __C,
2632 (__mmask16) __U,
2633 _MM_FROUND_CUR_DIRECTION);
2634}
2635
Michael Kupersteine45af542015-06-30 13:36:19 +00002636static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002637_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2638{
2639 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2640 (__v16sf) __B,
2641 (__v16sf) __C,
2642 (__mmask16) __U,
2643 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002644}
2645
Michael Kupersteine45af542015-06-30 13:36:19 +00002646static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002647_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2648{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002649 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2650 (__v16sf) __B,
2651 -(__v16sf) __C,
2652 (__mmask16) -1,
2653 _MM_FROUND_CUR_DIRECTION);
2654}
2655
Michael Kupersteine45af542015-06-30 13:36:19 +00002656static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002657_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2658{
2659 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2660 (__v16sf) __B,
2661 -(__v16sf) __C,
2662 (__mmask16) __U,
2663 _MM_FROUND_CUR_DIRECTION);
2664}
2665
Michael Kupersteine45af542015-06-30 13:36:19 +00002666static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002667_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2668{
2669 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2670 (__v16sf) __B,
2671 -(__v16sf) __C,
2672 (__mmask16) __U,
2673 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002674}
2675
Michael Kupersteine45af542015-06-30 13:36:19 +00002676static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002677_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2678{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002679 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2680 (__v16sf) __B,
2681 (__v16sf) __C,
2682 (__mmask16) -1,
2683 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002684}
2685
Michael Kupersteine45af542015-06-30 13:36:19 +00002686static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002687_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2688{
2689 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2690 (__v16sf) __B,
2691 (__v16sf) __C,
2692 (__mmask16) __U,
2693 _MM_FROUND_CUR_DIRECTION);
2694}
2695
Michael Kupersteine45af542015-06-30 13:36:19 +00002696static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002697_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2698{
2699 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2700 (__v16sf) __B,
2701 (__v16sf) __C,
2702 (__mmask16) __U,
2703 _MM_FROUND_CUR_DIRECTION);
2704}
2705
Michael Kupersteine45af542015-06-30 13:36:19 +00002706static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002707_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2708{
2709 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2710 (__v16sf) __B,
2711 -(__v16sf) __C,
2712 (__mmask16) -1,
2713 _MM_FROUND_CUR_DIRECTION);
2714}
2715
Michael Kupersteine45af542015-06-30 13:36:19 +00002716static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002717_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2718{
2719 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2720 (__v16sf) __B,
2721 -(__v16sf) __C,
2722 (__mmask16) __U,
2723 _MM_FROUND_CUR_DIRECTION);
2724}
2725
2726#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002727 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2728 (__v8df)(__m512d)(B), \
2729 (__v8df)(__m512d)(C), \
2730 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002731
2732
2733#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002734 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2735 (__v8df)(__m512d)(B), \
2736 (__v8df)(__m512d)(C), \
2737 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002738
2739
2740#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002741 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2742 (__v8df)(__m512d)(B), \
2743 (__v8df)(__m512d)(C), \
2744 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002745
2746
2747#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002748 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2749 (__v8df)(__m512d)(B), \
2750 (__v8df)(__m512d)(C), \
2751 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002752
2753
2754#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002755 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2756 (__v8df)(__m512d)(B), \
2757 -(__v8df)(__m512d)(C), \
2758 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002759
2760
2761#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002762 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2763 (__v8df)(__m512d)(B), \
2764 -(__v8df)(__m512d)(C), \
2765 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002766
2767
2768#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002769 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2770 (__v8df)(__m512d)(B), \
2771 -(__v8df)(__m512d)(C), \
2772 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002773
2774
Michael Kupersteine45af542015-06-30 13:36:19 +00002775static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002776_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2777{
2778 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2779 (__v8df) __B,
2780 (__v8df) __C,
2781 (__mmask8) -1,
2782 _MM_FROUND_CUR_DIRECTION);
2783}
2784
Michael Kupersteine45af542015-06-30 13:36:19 +00002785static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002786_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2787{
2788 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2789 (__v8df) __B,
2790 (__v8df) __C,
2791 (__mmask8) __U,
2792 _MM_FROUND_CUR_DIRECTION);
2793}
2794
Michael Kupersteine45af542015-06-30 13:36:19 +00002795static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002796_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2797{
2798 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2799 (__v8df) __B,
2800 (__v8df) __C,
2801 (__mmask8) __U,
2802 _MM_FROUND_CUR_DIRECTION);
2803}
2804
Michael Kupersteine45af542015-06-30 13:36:19 +00002805static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002806_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2807{
2808 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2809 (__v8df) __B,
2810 (__v8df) __C,
2811 (__mmask8) __U,
2812 _MM_FROUND_CUR_DIRECTION);
2813}
2814
Michael Kupersteine45af542015-06-30 13:36:19 +00002815static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002816_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2817{
2818 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2819 (__v8df) __B,
2820 -(__v8df) __C,
2821 (__mmask8) -1,
2822 _MM_FROUND_CUR_DIRECTION);
2823}
2824
Michael Kupersteine45af542015-06-30 13:36:19 +00002825static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002826_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2827{
2828 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2829 (__v8df) __B,
2830 -(__v8df) __C,
2831 (__mmask8) __U,
2832 _MM_FROUND_CUR_DIRECTION);
2833}
2834
Michael Kupersteine45af542015-06-30 13:36:19 +00002835static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002836_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2837{
2838 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2839 (__v8df) __B,
2840 -(__v8df) __C,
2841 (__mmask8) __U,
2842 _MM_FROUND_CUR_DIRECTION);
2843}
2844
2845#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002846 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2847 (__v16sf)(__m512)(B), \
2848 (__v16sf)(__m512)(C), \
2849 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002850
2851
2852#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002853 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2854 (__v16sf)(__m512)(B), \
2855 (__v16sf)(__m512)(C), \
2856 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002857
2858
2859#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002860 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2861 (__v16sf)(__m512)(B), \
2862 (__v16sf)(__m512)(C), \
2863 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002864
2865
2866#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002867 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2868 (__v16sf)(__m512)(B), \
2869 (__v16sf)(__m512)(C), \
2870 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002871
2872
2873#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002874 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2875 (__v16sf)(__m512)(B), \
2876 -(__v16sf)(__m512)(C), \
2877 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002878
2879
2880#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002881 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2882 (__v16sf)(__m512)(B), \
2883 -(__v16sf)(__m512)(C), \
2884 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002885
2886
2887#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002888 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2889 (__v16sf)(__m512)(B), \
2890 -(__v16sf)(__m512)(C), \
2891 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002892
2893
Michael Kupersteine45af542015-06-30 13:36:19 +00002894static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002895_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2896{
2897 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2898 (__v16sf) __B,
2899 (__v16sf) __C,
2900 (__mmask16) -1,
2901 _MM_FROUND_CUR_DIRECTION);
2902}
2903
Michael Kupersteine45af542015-06-30 13:36:19 +00002904static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002905_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2906{
2907 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2908 (__v16sf) __B,
2909 (__v16sf) __C,
2910 (__mmask16) __U,
2911 _MM_FROUND_CUR_DIRECTION);
2912}
2913
Michael Kupersteine45af542015-06-30 13:36:19 +00002914static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002915_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2916{
2917 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2918 (__v16sf) __B,
2919 (__v16sf) __C,
2920 (__mmask16) __U,
2921 _MM_FROUND_CUR_DIRECTION);
2922}
2923
Michael Kupersteine45af542015-06-30 13:36:19 +00002924static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002925_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2926{
2927 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2928 (__v16sf) __B,
2929 (__v16sf) __C,
2930 (__mmask16) __U,
2931 _MM_FROUND_CUR_DIRECTION);
2932}
2933
Michael Kupersteine45af542015-06-30 13:36:19 +00002934static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002935_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2936{
2937 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2938 (__v16sf) __B,
2939 -(__v16sf) __C,
2940 (__mmask16) -1,
2941 _MM_FROUND_CUR_DIRECTION);
2942}
2943
Michael Kupersteine45af542015-06-30 13:36:19 +00002944static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002945_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2946{
2947 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2948 (__v16sf) __B,
2949 -(__v16sf) __C,
2950 (__mmask16) __U,
2951 _MM_FROUND_CUR_DIRECTION);
2952}
2953
Michael Kupersteine45af542015-06-30 13:36:19 +00002954static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002955_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2956{
2957 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2958 (__v16sf) __B,
2959 -(__v16sf) __C,
2960 (__mmask16) __U,
2961 _MM_FROUND_CUR_DIRECTION);
2962}
2963
2964#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002965 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
2966 (__v8df)(__m512d)(B), \
2967 (__v8df)(__m512d)(C), \
2968 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002969
2970
Michael Kupersteine45af542015-06-30 13:36:19 +00002971static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002972_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2973{
2974 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2975 (__v8df) __B,
2976 (__v8df) __C,
2977 (__mmask8) __U,
2978 _MM_FROUND_CUR_DIRECTION);
2979}
2980
2981#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002982 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
2983 (__v16sf)(__m512)(B), \
2984 (__v16sf)(__m512)(C), \
2985 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002986
2987
Michael Kupersteine45af542015-06-30 13:36:19 +00002988static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002989_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2990{
2991 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2992 (__v16sf) __B,
2993 (__v16sf) __C,
2994 (__mmask16) __U,
2995 _MM_FROUND_CUR_DIRECTION);
2996}
2997
2998#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002999 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3000 (__v8df)(__m512d)(B), \
3001 (__v8df)(__m512d)(C), \
3002 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003003
3004
Michael Kupersteine45af542015-06-30 13:36:19 +00003005static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003006_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3007{
3008 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3009 (__v8df) __B,
3010 (__v8df) __C,
3011 (__mmask8) __U,
3012 _MM_FROUND_CUR_DIRECTION);
3013}
3014
3015#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003016 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3017 (__v16sf)(__m512)(B), \
3018 (__v16sf)(__m512)(C), \
3019 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003020
3021
Michael Kupersteine45af542015-06-30 13:36:19 +00003022static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003023_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3024{
3025 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3026 (__v16sf) __B,
3027 (__v16sf) __C,
3028 (__mmask16) __U,
3029 _MM_FROUND_CUR_DIRECTION);
3030}
3031
3032#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003033 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3034 (__v8df)(__m512d)(B), \
3035 (__v8df)(__m512d)(C), \
3036 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003037
3038
Michael Kupersteine45af542015-06-30 13:36:19 +00003039static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003040_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3041{
3042 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3043 (__v8df) __B,
3044 (__v8df) __C,
3045 (__mmask8) __U,
3046 _MM_FROUND_CUR_DIRECTION);
3047}
3048
3049#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003050 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3051 (__v16sf)(__m512)(B), \
3052 (__v16sf)(__m512)(C), \
3053 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003054
3055
Michael Kupersteine45af542015-06-30 13:36:19 +00003056static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003057_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3058{
3059 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3060 (__v16sf) __B,
3061 (__v16sf) __C,
3062 (__mmask16) __U,
3063 _MM_FROUND_CUR_DIRECTION);
3064}
3065
3066#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003067 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3068 (__v8df)(__m512d)(B), \
3069 (__v8df)(__m512d)(C), \
3070 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003071
3072
3073#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003074 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3075 (__v8df)(__m512d)(B), \
3076 (__v8df)(__m512d)(C), \
3077 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003078
3079
Michael Kupersteine45af542015-06-30 13:36:19 +00003080static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003081_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3082{
3083 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3084 (__v8df) __B,
3085 (__v8df) __C,
3086 (__mmask8) __U,
3087 _MM_FROUND_CUR_DIRECTION);
3088}
3089
Michael Kupersteine45af542015-06-30 13:36:19 +00003090static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003091_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3092{
3093 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3094 (__v8df) __B,
3095 (__v8df) __C,
3096 (__mmask8) __U,
3097 _MM_FROUND_CUR_DIRECTION);
3098}
3099
3100#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003101 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3102 (__v16sf)(__m512)(B), \
3103 (__v16sf)(__m512)(C), \
3104 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003105
3106
3107#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003108 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3109 (__v16sf)(__m512)(B), \
3110 (__v16sf)(__m512)(C), \
3111 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003112
3113
Michael Kupersteine45af542015-06-30 13:36:19 +00003114static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003115_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3116{
3117 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3118 (__v16sf) __B,
3119 (__v16sf) __C,
3120 (__mmask16) __U,
3121 _MM_FROUND_CUR_DIRECTION);
3122}
3123
Michael Kupersteine45af542015-06-30 13:36:19 +00003124static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003125_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3126{
3127 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3128 (__v16sf) __B,
3129 (__v16sf) __C,
3130 (__mmask16) __U,
3131 _MM_FROUND_CUR_DIRECTION);
3132}
3133
3134
3135
Adam Nemet0d5bb552014-07-28 17:14:40 +00003136/* Vector permutations */
3137
Michael Kupersteine45af542015-06-30 13:36:19 +00003138static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003139_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3140{
3141 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3142 /* idx */ ,
3143 (__v16si) __A,
3144 (__v16si) __B,
3145 (__mmask16) -1);
3146}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003147
3148static __inline__ __m512i __DEFAULT_FN_ATTRS
3149_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3150 __m512i __I, __m512i __B)
3151{
3152 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3153 /* idx */ ,
3154 (__v16si) __A,
3155 (__v16si) __B,
3156 (__mmask16) __U);
3157}
3158
3159static __inline__ __m512i __DEFAULT_FN_ATTRS
3160_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3161 __m512i __I, __m512i __B)
3162{
3163 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3164 /* idx */ ,
3165 (__v16si) __A,
3166 (__v16si) __B,
3167 (__mmask16) __U);
3168}
3169
Michael Kupersteine45af542015-06-30 13:36:19 +00003170static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003171_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3172{
3173 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3174 /* idx */ ,
3175 (__v8di) __A,
3176 (__v8di) __B,
3177 (__mmask8) -1);
3178}
3179
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003180static __inline__ __m512i __DEFAULT_FN_ATTRS
3181_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3182 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003183{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003184 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003185 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003186 (__v8di) __A,
3187 (__v8di) __B,
3188 (__mmask8) __U);
3189}
3190
3191
3192static __inline__ __m512i __DEFAULT_FN_ATTRS
3193_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3194 __m512i __I, __m512i __B)
3195{
3196 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3197 /* idx */ ,
3198 (__v8di) __A,
3199 (__v8di) __B,
3200 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003201}
3202
Craig Topper67826a52015-02-01 07:35:40 +00003203#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3204 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003205 (__v8di)(__m512i)(B), (int)(I), \
3206 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003207 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003208
Craig Topper8c18e112016-05-17 04:41:50 +00003209#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3210 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3211 (__v8di)(__m512i)(B), (int)(imm), \
3212 (__v8di)(__m512i)(W), \
3213 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003214
Craig Topper8c18e112016-05-17 04:41:50 +00003215#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3216 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3217 (__v8di)(__m512i)(B), (int)(imm), \
3218 (__v8di)_mm512_setzero_si512(), \
3219 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003220
Craig Topper67826a52015-02-01 07:35:40 +00003221#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003222 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3223 (__v16si)(__m512i)(B), (int)(I), \
3224 (__v16si)_mm512_setzero_si512(), \
3225 (__mmask16)-1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003226
Craig Topper8c18e112016-05-17 04:41:50 +00003227#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3228 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3229 (__v16si)(__m512i)(B), (int)(imm), \
3230 (__v16si)(__m512i)(W), \
3231 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003232
Craig Topper8c18e112016-05-17 04:41:50 +00003233#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3234 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3235 (__v16si)(__m512i)(B), (int)(imm), \
3236 (__v16si)_mm512_setzero_si512(), \
3237 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003238/* Vector Extract */
3239
3240#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003241 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3242 (__v4df)_mm256_setzero_si256(), \
3243 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003244
Craig Topper8c18e112016-05-17 04:41:50 +00003245#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3246 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3247 (__v4df)(__m256d)(W), \
3248 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003249
Craig Topper8c18e112016-05-17 04:41:50 +00003250#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3251 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3252 (__v4df)_mm256_setzero_pd(), \
3253 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003254
Adam Nemetf893ede2015-01-19 20:12:05 +00003255#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003256 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3257 (__v4sf)_mm_setzero_ps(), \
3258 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003259
Craig Topper8c18e112016-05-17 04:41:50 +00003260#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3261 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3262 (__v4sf)(__m128)(W), \
3263 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003264
Craig Topper8c18e112016-05-17 04:41:50 +00003265#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3266 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3267 (__v4sf)_mm_setzero_ps(), \
3268 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003269/* Vector Blend */
3270
Michael Kupersteine45af542015-06-30 13:36:19 +00003271static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003272_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3273{
3274 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3275 (__v8df) __W,
3276 (__mmask8) __U);
3277}
3278
Michael Kupersteine45af542015-06-30 13:36:19 +00003279static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003280_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3281{
3282 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3283 (__v16sf) __W,
3284 (__mmask16) __U);
3285}
3286
Michael Kupersteine45af542015-06-30 13:36:19 +00003287static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003288_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3289{
3290 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3291 (__v8di) __W,
3292 (__mmask8) __U);
3293}
3294
Michael Kupersteine45af542015-06-30 13:36:19 +00003295static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003296_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3297{
3298 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3299 (__v16si) __W,
3300 (__mmask16) __U);
3301}
3302
3303/* Compare */
3304
Craig Topper53565c62015-02-01 22:27:40 +00003305#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3306 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003307 (__v16sf)(__m512)(B), (int)(P), \
3308 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003309
Craig Topper53565c62015-02-01 22:27:40 +00003310#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3311 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003312 (__v16sf)(__m512)(B), (int)(P), \
3313 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003314
3315#define _mm512_cmp_ps_mask(A, B, P) \
3316 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3317
3318#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3319 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3320
3321#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3322 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003323 (__v8df)(__m512d)(B), (int)(P), \
3324 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003325
3326#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3327 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003328 (__v8df)(__m512d)(B), (int)(P), \
3329 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003330
3331#define _mm512_cmp_pd_mask(A, B, P) \
3332 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3333
3334#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3335 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003336
3337/* Conversion */
3338
Michael Kupersteine45af542015-06-30 13:36:19 +00003339static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003340_mm512_cvttps_epu32(__m512 __A)
3341{
3342 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3343 (__v16si)
3344 _mm512_setzero_si512 (),
3345 (__mmask16) -1,
3346 _MM_FROUND_CUR_DIRECTION);
3347}
3348
Michael Zuckermanf1544752016-05-09 10:32:51 +00003349static __inline__ __m512i __DEFAULT_FN_ATTRS
3350_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3351{
3352 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3353 (__v16si) __W,
3354 (__mmask16) __U,
3355 _MM_FROUND_CUR_DIRECTION);
3356}
3357
3358static __inline__ __m512i __DEFAULT_FN_ATTRS
3359_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3360{
3361 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3362 (__v16si) _mm512_setzero_si512 (),
3363 (__mmask16) __U,
3364 _MM_FROUND_CUR_DIRECTION);
3365}
3366
Craig Topper72c7d512015-02-01 07:35:35 +00003367#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003368 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003369 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003370 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003371
Craig Topper72c7d512015-02-01 07:35:35 +00003372#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003373 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003374 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003375 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003376
Michael Zuckermanf1544752016-05-09 10:32:51 +00003377static __inline__ __m512 __DEFAULT_FN_ATTRS
3378_mm512_cvtepu32_ps (__m512i __A)
3379{
3380 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3381 (__v16sf) _mm512_undefined_ps (),
3382 (__mmask16) -1,
3383 _MM_FROUND_CUR_DIRECTION);
3384}
3385
3386static __inline__ __m512 __DEFAULT_FN_ATTRS
3387_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3388{
3389 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3390 (__v16sf) __W,
3391 (__mmask16) __U,
3392 _MM_FROUND_CUR_DIRECTION);
3393}
3394
3395static __inline__ __m512 __DEFAULT_FN_ATTRS
3396_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3397{
3398 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3399 (__v16sf) _mm512_setzero_ps (),
3400 (__mmask16) __U,
3401 _MM_FROUND_CUR_DIRECTION);
3402}
3403
Michael Kupersteine45af542015-06-30 13:36:19 +00003404static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003405_mm512_cvtepi32_pd(__m256i __A)
3406{
3407 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003408 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003409 _mm512_setzero_pd (),
3410 (__mmask8) -1);
3411}
3412
Michael Zuckermanf1544752016-05-09 10:32:51 +00003413static __inline__ __m512d __DEFAULT_FN_ATTRS
3414_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3415{
3416 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3417 (__v8df) __W,
3418 (__mmask8) __U);
3419}
3420
3421static __inline__ __m512d __DEFAULT_FN_ATTRS
3422_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3423{
3424 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3425 (__v8df) _mm512_setzero_pd (),
3426 (__mmask8) __U);
3427}
3428
3429static __inline__ __m512 __DEFAULT_FN_ATTRS
3430_mm512_cvtepi32_ps (__m512i __A)
3431{
3432 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3433 (__v16sf) _mm512_undefined_ps (),
3434 (__mmask16) -1,
3435 _MM_FROUND_CUR_DIRECTION);
3436}
3437
3438static __inline__ __m512 __DEFAULT_FN_ATTRS
3439_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3440{
3441 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3442 (__v16sf) __W,
3443 (__mmask16) __U,
3444 _MM_FROUND_CUR_DIRECTION);
3445}
3446
3447static __inline__ __m512 __DEFAULT_FN_ATTRS
3448_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3449{
3450 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3451 (__v16sf) _mm512_setzero_ps (),
3452 (__mmask16) __U,
3453 _MM_FROUND_CUR_DIRECTION);
3454}
3455
Michael Kupersteine45af542015-06-30 13:36:19 +00003456static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003457_mm512_cvtepu32_pd(__m256i __A)
3458{
3459 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3460 (__v8df)
3461 _mm512_setzero_pd (),
3462 (__mmask8) -1);
3463}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003464
Michael Zuckermanf1544752016-05-09 10:32:51 +00003465static __inline__ __m512d __DEFAULT_FN_ATTRS
3466_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3467{
3468 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3469 (__v8df) __W,
3470 (__mmask8) __U);
3471}
3472
3473static __inline__ __m512d __DEFAULT_FN_ATTRS
3474_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3475{
3476 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3477 (__v8df) _mm512_setzero_pd (),
3478 (__mmask8) __U);
3479}
3480
Craig Topper72c7d512015-02-01 07:35:35 +00003481#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003482 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003483 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003484 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003485
Michael Zuckermanf1544752016-05-09 10:32:51 +00003486static __inline__ __m256 __DEFAULT_FN_ATTRS
3487_mm512_cvtpd_ps (__m512d __A)
3488{
3489 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3490 (__v8sf) _mm256_undefined_ps (),
3491 (__mmask8) -1,
3492 _MM_FROUND_CUR_DIRECTION);
3493}
3494
3495static __inline__ __m256 __DEFAULT_FN_ATTRS
3496_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3497{
3498 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3499 (__v8sf) __W,
3500 (__mmask8) __U,
3501 _MM_FROUND_CUR_DIRECTION);
3502}
3503
3504static __inline__ __m256 __DEFAULT_FN_ATTRS
3505_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3506{
3507 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3508 (__v8sf) _mm256_setzero_ps (),
3509 (__mmask8) __U,
3510 _MM_FROUND_CUR_DIRECTION);
3511}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003512
Craig Topper72c7d512015-02-01 07:35:35 +00003513#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003514 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003515 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003516 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003517
Craig Topper8c18e112016-05-17 04:41:50 +00003518#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3519 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3520 (__v16hi)(__m256i)(U), \
3521 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003522
Craig Topper8c18e112016-05-17 04:41:50 +00003523#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3524 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3525 (__v16hi)_mm256_setzero_si256(), \
3526 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003527
3528
Michael Kupersteine45af542015-06-30 13:36:19 +00003529static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003530_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003531{
3532 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003533 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003534 _mm512_setzero_ps (),
3535 (__mmask16) -1,
3536 _MM_FROUND_CUR_DIRECTION);
3537}
3538
Michael Zuckermanf1544752016-05-09 10:32:51 +00003539static __inline__ __m512 __DEFAULT_FN_ATTRS
3540_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003541{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003542 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3543 (__v16sf) __W,
3544 (__mmask16) __U,
3545 _MM_FROUND_CUR_DIRECTION);
3546}
3547
3548static __inline__ __m512 __DEFAULT_FN_ATTRS
3549_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3550{
3551 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3552 (__v16sf) _mm512_setzero_ps (),
3553 (__mmask16) __U,
3554 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003555}
3556
Michael Kupersteine45af542015-06-30 13:36:19 +00003557static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003558_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003559{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003560 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003561 (__v8si)_mm256_setzero_si256(),
3562 (__mmask8) -1,
3563 _MM_FROUND_CUR_DIRECTION);
3564}
3565
Michael Zuckermanf1544752016-05-09 10:32:51 +00003566static __inline__ __m256i __DEFAULT_FN_ATTRS
3567_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3568{
3569 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3570 (__v8si) __W,
3571 (__mmask8) __U,
3572 _MM_FROUND_CUR_DIRECTION);
3573}
3574
3575static __inline__ __m256i __DEFAULT_FN_ATTRS
3576_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3577{
3578 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3579 (__v8si) _mm256_setzero_si256 (),
3580 (__mmask8) __U,
3581 _MM_FROUND_CUR_DIRECTION);
3582}
3583
Craig Topper72c7d512015-02-01 07:35:35 +00003584#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003585 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003586 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003587 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003588
Craig Topper72c7d512015-02-01 07:35:35 +00003589#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003590 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003591 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003592 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003593
Michael Zuckermanf1544752016-05-09 10:32:51 +00003594static __inline __m512i __DEFAULT_FN_ATTRS
3595_mm512_cvttps_epi32(__m512 __a)
3596{
3597 return (__m512i)
3598 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3599 (__v16si) _mm512_setzero_si512 (),
3600 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3601}
3602
3603static __inline__ __m512i __DEFAULT_FN_ATTRS
3604_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3605{
3606 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3607 (__v16si) __W,
3608 (__mmask16) __U,
3609 _MM_FROUND_CUR_DIRECTION);
3610}
3611
3612static __inline__ __m512i __DEFAULT_FN_ATTRS
3613_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3614{
3615 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3616 (__v16si) _mm512_setzero_si512 (),
3617 (__mmask16) __U,
3618 _MM_FROUND_CUR_DIRECTION);
3619}
Craig Topper72c7d512015-02-01 07:35:35 +00003620
3621#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003622 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003623 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003624 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003625
Michael Zuckermanf1544752016-05-09 10:32:51 +00003626static __inline__ __m512i __DEFAULT_FN_ATTRS
3627_mm512_cvtps_epi32 (__m512 __A)
3628{
3629 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3630 (__v16si) _mm512_undefined_epi32 (),
3631 (__mmask16) -1,
3632 _MM_FROUND_CUR_DIRECTION);
3633}
3634
3635static __inline__ __m512i __DEFAULT_FN_ATTRS
3636_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3637{
3638 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3639 (__v16si) __W,
3640 (__mmask16) __U,
3641 _MM_FROUND_CUR_DIRECTION);
3642}
3643
3644static __inline__ __m512i __DEFAULT_FN_ATTRS
3645_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3646{
3647 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3648 (__v16si)
3649 _mm512_setzero_si512 (),
3650 (__mmask16) __U,
3651 _MM_FROUND_CUR_DIRECTION);
3652}
3653
Craig Topper72c7d512015-02-01 07:35:35 +00003654#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003655 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003656 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003657 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003658
Michael Zuckermanf1544752016-05-09 10:32:51 +00003659static __inline__ __m256i __DEFAULT_FN_ATTRS
3660_mm512_cvtpd_epi32 (__m512d __A)
3661{
3662 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3663 (__v8si)
3664 _mm256_undefined_si256 (),
3665 (__mmask8) -1,
3666 _MM_FROUND_CUR_DIRECTION);
3667}
3668
3669static __inline__ __m256i __DEFAULT_FN_ATTRS
3670_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3671{
3672 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3673 (__v8si) __W,
3674 (__mmask8) __U,
3675 _MM_FROUND_CUR_DIRECTION);
3676}
3677
3678static __inline__ __m256i __DEFAULT_FN_ATTRS
3679_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3680{
3681 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3682 (__v8si)
3683 _mm256_setzero_si256 (),
3684 (__mmask8) __U,
3685 _MM_FROUND_CUR_DIRECTION);
3686}
3687
Craig Topper72c7d512015-02-01 07:35:35 +00003688#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003689 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003690 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003691 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003692
Michael Zuckermanf1544752016-05-09 10:32:51 +00003693static __inline__ __m512i __DEFAULT_FN_ATTRS
3694_mm512_cvtps_epu32 ( __m512 __A)
3695{
3696 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3697 (__v16si)\
3698 _mm512_undefined_epi32 (),\
3699 (__mmask16) -1,\
3700 _MM_FROUND_CUR_DIRECTION);\
3701}
3702
3703static __inline__ __m512i __DEFAULT_FN_ATTRS
3704_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3705{
3706 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3707 (__v16si) __W,
3708 (__mmask16) __U,
3709 _MM_FROUND_CUR_DIRECTION);
3710}
3711
Craig Topper72c7d512015-02-01 07:35:35 +00003712#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003713 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003714 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003715 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003716
Michael Zuckermanf1544752016-05-09 10:32:51 +00003717static __inline__ __m256i __DEFAULT_FN_ATTRS
3718_mm512_cvtpd_epu32 (__m512d __A)
3719{
3720 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3721 (__v8si)
3722 _mm256_undefined_si256 (),
3723 (__mmask8) -1,
3724 _MM_FROUND_CUR_DIRECTION);
3725}
3726
3727static __inline__ __m256i __DEFAULT_FN_ATTRS
3728_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3729{
3730 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3731 (__v8si) __W,
3732 (__mmask8) __U,
3733 _MM_FROUND_CUR_DIRECTION);
3734}
3735
3736static __inline__ __m256i __DEFAULT_FN_ATTRS
3737_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3738{
3739 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3740 (__v8si)
3741 _mm256_setzero_si256 (),
3742 (__mmask8) __U,
3743 _MM_FROUND_CUR_DIRECTION);
3744}
Adam Nemet63a951e2015-01-14 01:31:17 +00003745/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003746static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003747_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3748{
3749 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3750}
3751
Michael Kupersteine45af542015-06-30 13:36:19 +00003752static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003753_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3754{
3755 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3756}
3757
Michael Kupersteine45af542015-06-30 13:36:19 +00003758static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003759_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3760{
3761 return __builtin_shufflevector(__a, __b,
3762 2, 18, 3, 19,
3763 2+4, 18+4, 3+4, 19+4,
3764 2+8, 18+8, 3+8, 19+8,
3765 2+12, 18+12, 3+12, 19+12);
3766}
3767
Michael Kupersteine45af542015-06-30 13:36:19 +00003768static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003769_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3770{
3771 return __builtin_shufflevector(__a, __b,
3772 0, 16, 1, 17,
3773 0+4, 16+4, 1+4, 17+4,
3774 0+8, 16+8, 1+8, 17+8,
3775 0+12, 16+12, 1+12, 17+12);
3776}
3777
Adam Nemet0d5bb552014-07-28 17:14:40 +00003778/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003779
Michael Kupersteine45af542015-06-30 13:36:19 +00003780static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003781_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003782{
3783 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3784 (__v16si) __B,
3785 (__mmask16) -1);
3786}
3787
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003788static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3789_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3790{
3791 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3792 (__v16si) __B, __U);
3793}
3794
Michael Kupersteine45af542015-06-30 13:36:19 +00003795static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003796_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003797{
3798 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3799 (__v8di) __B,
3800 (__mmask8) -1);
3801}
3802
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003803static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3804_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3805{
3806 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
3807}
3808
3809
Adam Nemet0d5bb552014-07-28 17:14:40 +00003810/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003811
Michael Kupersteine45af542015-06-30 13:36:19 +00003812static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003813_mm512_loadu_si512 (void const *__P)
3814{
Craig Topper4537ea72016-05-14 06:03:13 +00003815 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003816 (__v16si)
3817 _mm512_setzero_si512 (),
3818 (__mmask16) -1);
3819}
3820
3821static __inline __m512i __DEFAULT_FN_ATTRS
3822_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3823{
Craig Topper4537ea72016-05-14 06:03:13 +00003824 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003825 (__v16si) __W,
3826 (__mmask16) __U);
3827}
3828
3829
3830static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003831_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003832{
Craig Topper4537ea72016-05-14 06:03:13 +00003833 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003834 (__v16si)
3835 _mm512_setzero_si512 (),
3836 (__mmask16) __U);
3837}
3838
Michael Kupersteine45af542015-06-30 13:36:19 +00003839static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003840_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3841{
Craig Topper4537ea72016-05-14 06:03:13 +00003842 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003843 (__v8di) __W,
3844 (__mmask8) __U);
3845}
3846
3847static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003848_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003849{
Craig Topper4537ea72016-05-14 06:03:13 +00003850 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003851 (__v8di)
3852 _mm512_setzero_si512 (),
3853 (__mmask8) __U);
3854}
3855
Michael Kupersteine45af542015-06-30 13:36:19 +00003856static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003857_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
3858{
Craig Topper4537ea72016-05-14 06:03:13 +00003859 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003860 (__v16sf) __W,
3861 (__mmask16) __U);
3862}
3863
3864static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003865_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003866{
Craig Topper4537ea72016-05-14 06:03:13 +00003867 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003868 (__v16sf)
3869 _mm512_setzero_ps (),
3870 (__mmask16) __U);
3871}
3872
Michael Kupersteine45af542015-06-30 13:36:19 +00003873static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003874_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003875{
Craig Topper4537ea72016-05-14 06:03:13 +00003876 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003877 (__v8df) __W,
3878 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00003879}
3880
Michael Kupersteine45af542015-06-30 13:36:19 +00003881static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003882_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00003883{
Craig Topper4537ea72016-05-14 06:03:13 +00003884 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00003885 (__v8df)
3886 _mm512_setzero_pd (),
3887 (__mmask8) __U);
3888}
3889
Michael Kupersteine45af542015-06-30 13:36:19 +00003890static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003891_mm512_loadu_pd(double const *__p)
3892{
3893 struct __loadu_pd {
3894 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003895 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003896 return ((struct __loadu_pd*)__p)->__v;
3897}
3898
Michael Kupersteine45af542015-06-30 13:36:19 +00003899static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003900_mm512_loadu_ps(float const *__p)
3901{
3902 struct __loadu_ps {
3903 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003904 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003905 return ((struct __loadu_ps*)__p)->__v;
3906}
3907
Michael Kupersteine45af542015-06-30 13:36:19 +00003908static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003909_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003910{
3911 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3912 (__v16sf)
3913 _mm512_setzero_ps (),
3914 (__mmask16) -1);
3915}
3916
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003917static __inline __m512 __DEFAULT_FN_ATTRS
3918_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
3919{
3920 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
3921 (__v16sf) __W,
3922 (__mmask16) __U);
3923}
3924
3925static __inline __m512 __DEFAULT_FN_ATTRS
3926_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
3927{
3928 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
3929 (__v16sf)
3930 _mm512_setzero_ps (),
3931 (__mmask16) __U);
3932}
3933
Michael Kupersteine45af542015-06-30 13:36:19 +00003934static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003935_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003936{
3937 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
3938 (__v8df)
3939 _mm512_setzero_pd (),
3940 (__mmask8) -1);
3941}
3942
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003943static __inline __m512d __DEFAULT_FN_ATTRS
3944_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
3945{
3946 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
3947 (__v8df) __W,
3948 (__mmask8) __U);
3949}
3950
3951static __inline __m512d __DEFAULT_FN_ATTRS
3952_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
3953{
3954 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
3955 (__v8df)
3956 _mm512_setzero_pd (),
3957 (__mmask8) __U);
3958}
3959
3960static __inline __m512i __DEFAULT_FN_ATTRS
3961_mm512_load_si512 (void const *__P)
3962{
3963 return *(__m512i *) __P;
3964}
3965
3966static __inline __m512i __DEFAULT_FN_ATTRS
3967_mm512_load_epi32 (void const *__P)
3968{
3969 return *(__m512i *) __P;
3970}
3971
3972static __inline __m512i __DEFAULT_FN_ATTRS
3973_mm512_load_epi64 (void const *__P)
3974{
3975 return *(__m512i *) __P;
3976}
3977
Adam Nemet0d5bb552014-07-28 17:14:40 +00003978/* SIMD store ops */
3979
Michael Kupersteine45af542015-06-30 13:36:19 +00003980static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003981_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003982{
Craig Topper4537ea72016-05-14 06:03:13 +00003983 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003984 (__mmask8) __U);
3985}
3986
Michael Kupersteine45af542015-06-30 13:36:19 +00003987static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003988_mm512_storeu_si512 (void *__P, __m512i __A)
3989{
Craig Topper4537ea72016-05-14 06:03:13 +00003990 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003991 (__mmask16) -1);
3992}
3993
3994static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003995_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003996{
Craig Topper4537ea72016-05-14 06:03:13 +00003997 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003998 (__mmask16) __U);
3999}
4000
Michael Kupersteine45af542015-06-30 13:36:19 +00004001static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004002_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004003{
Craig Topper4537ea72016-05-14 06:03:13 +00004004 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004005}
4006
Michael Kupersteine45af542015-06-30 13:36:19 +00004007static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004008_mm512_storeu_pd(void *__P, __m512d __A)
4009{
Craig Topper4537ea72016-05-14 06:03:13 +00004010 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004011}
4012
Michael Kupersteine45af542015-06-30 13:36:19 +00004013static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004014_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004015{
Craig Topper4537ea72016-05-14 06:03:13 +00004016 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004017 (__mmask16) __U);
4018}
4019
Michael Kupersteine45af542015-06-30 13:36:19 +00004020static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004021_mm512_storeu_ps(void *__P, __m512 __A)
4022{
Craig Topper4537ea72016-05-14 06:03:13 +00004023 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004024}
4025
Michael Kupersteine45af542015-06-30 13:36:19 +00004026static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004027_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004028{
Adam Nemetc0cff242015-01-16 18:51:50 +00004029 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004030}
4031
Michael Kupersteine45af542015-06-30 13:36:19 +00004032static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004033_mm512_store_pd(void *__P, __m512d __A)
4034{
4035 *(__m512d*)__P = __A;
4036}
4037
Michael Kupersteine45af542015-06-30 13:36:19 +00004038static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004039_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4040{
4041 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4042 (__mmask16) __U);
4043}
4044
Michael Kupersteine45af542015-06-30 13:36:19 +00004045static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004046_mm512_store_ps(void *__P, __m512 __A)
4047{
4048 *(__m512*)__P = __A;
4049}
4050
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004051static __inline void __DEFAULT_FN_ATTRS
4052_mm512_store_si512 (void *__P, __m512i __A)
4053{
4054 *(__m512i *) __P = __A;
4055}
4056
4057static __inline void __DEFAULT_FN_ATTRS
4058_mm512_store_epi32 (void *__P, __m512i __A)
4059{
4060 *(__m512i *) __P = __A;
4061}
4062
4063static __inline void __DEFAULT_FN_ATTRS
4064_mm512_store_epi64 (void *__P, __m512i __A)
4065{
4066 *(__m512i *) __P = __A;
4067}
4068
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004069/* Mask ops */
4070
Michael Kupersteine45af542015-06-30 13:36:19 +00004071static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004072_mm512_knot(__mmask16 __M)
4073{
4074 return __builtin_ia32_knothi(__M);
4075}
4076
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004077/* Integer compare */
4078
Michael Kupersteine45af542015-06-30 13:36:19 +00004079static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004080_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4081 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4082 (__mmask16)-1);
4083}
4084
Michael Kupersteine45af542015-06-30 13:36:19 +00004085static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004086_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4087 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4088 __u);
4089}
4090
Michael Kupersteine45af542015-06-30 13:36:19 +00004091static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004092_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4093 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4094 (__mmask16)-1);
4095}
4096
Michael Kupersteine45af542015-06-30 13:36:19 +00004097static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004098_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4099 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4100 __u);
4101}
4102
Michael Kupersteine45af542015-06-30 13:36:19 +00004103static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004104_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4105 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4106 __u);
4107}
4108
Michael Kupersteine45af542015-06-30 13:36:19 +00004109static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004110_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4111 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4112 (__mmask8)-1);
4113}
4114
Michael Kupersteine45af542015-06-30 13:36:19 +00004115static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004116_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4117 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4118 (__mmask8)-1);
4119}
4120
Michael Kupersteine45af542015-06-30 13:36:19 +00004121static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004122_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4123 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4124 __u);
4125}
4126
Michael Kupersteine45af542015-06-30 13:36:19 +00004127static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004128_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4129 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4130 (__mmask16)-1);
4131}
4132
Michael Kupersteine45af542015-06-30 13:36:19 +00004133static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004134_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4135 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4136 __u);
4137}
4138
Michael Kupersteine45af542015-06-30 13:36:19 +00004139static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004140_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4141 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4142 (__mmask16)-1);
4143}
4144
Michael Kupersteine45af542015-06-30 13:36:19 +00004145static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004146_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4147 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4148 __u);
4149}
4150
Michael Kupersteine45af542015-06-30 13:36:19 +00004151static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004152_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4153 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4154 (__mmask8)-1);
4155}
4156
Michael Kupersteine45af542015-06-30 13:36:19 +00004157static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004158_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4159 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4160 __u);
4161}
4162
Michael Kupersteine45af542015-06-30 13:36:19 +00004163static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004164_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4165 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4166 (__mmask8)-1);
4167}
4168
Michael Kupersteine45af542015-06-30 13:36:19 +00004169static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004170_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4171 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4172 __u);
4173}
4174
Michael Kupersteine45af542015-06-30 13:36:19 +00004175static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004176_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4177 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4178 (__mmask16)-1);
4179}
4180
Michael Kupersteine45af542015-06-30 13:36:19 +00004181static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004182_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4183 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4184 __u);
4185}
4186
Michael Kupersteine45af542015-06-30 13:36:19 +00004187static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004188_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4189 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4190 (__mmask16)-1);
4191}
4192
Michael Kupersteine45af542015-06-30 13:36:19 +00004193static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004194_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4195 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4196 __u);
4197}
4198
Michael Kupersteine45af542015-06-30 13:36:19 +00004199static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004200_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4201 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4202 __u);
4203}
4204
Michael Kupersteine45af542015-06-30 13:36:19 +00004205static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004206_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4207 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4208 (__mmask8)-1);
4209}
4210
Michael Kupersteine45af542015-06-30 13:36:19 +00004211static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004212_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4213 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4214 (__mmask8)-1);
4215}
4216
Michael Kupersteine45af542015-06-30 13:36:19 +00004217static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004218_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4219 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4220 __u);
4221}
4222
Michael Kupersteine45af542015-06-30 13:36:19 +00004223static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004224_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4225 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4226 (__mmask16)-1);
4227}
4228
Michael Kupersteine45af542015-06-30 13:36:19 +00004229static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004230_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4231 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4232 __u);
4233}
4234
Michael Kupersteine45af542015-06-30 13:36:19 +00004235static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004236_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4237 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4238 (__mmask16)-1);
4239}
4240
Michael Kupersteine45af542015-06-30 13:36:19 +00004241static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004242_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4243 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4244 __u);
4245}
4246
Michael Kupersteine45af542015-06-30 13:36:19 +00004247static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004248_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4249 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4250 (__mmask8)-1);
4251}
4252
Michael Kupersteine45af542015-06-30 13:36:19 +00004253static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004254_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4255 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4256 __u);
4257}
4258
Michael Kupersteine45af542015-06-30 13:36:19 +00004259static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004260_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4261 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4262 (__mmask8)-1);
4263}
4264
Michael Kupersteine45af542015-06-30 13:36:19 +00004265static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004266_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4267 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4268 __u);
4269}
4270
Michael Kupersteine45af542015-06-30 13:36:19 +00004271static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004272_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4273 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4274 (__mmask16)-1);
4275}
4276
Michael Kupersteine45af542015-06-30 13:36:19 +00004277static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004278_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4279 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4280 __u);
4281}
4282
Michael Kupersteine45af542015-06-30 13:36:19 +00004283static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004284_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4285 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4286 (__mmask16)-1);
4287}
4288
Michael Kupersteine45af542015-06-30 13:36:19 +00004289static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004290_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4291 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4292 __u);
4293}
4294
Michael Kupersteine45af542015-06-30 13:36:19 +00004295static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004296_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4297 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4298 (__mmask8)-1);
4299}
4300
Michael Kupersteine45af542015-06-30 13:36:19 +00004301static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004302_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4303 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4304 __u);
4305}
4306
Michael Kupersteine45af542015-06-30 13:36:19 +00004307static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004308_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4309 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4310 (__mmask8)-1);
4311}
4312
Michael Kupersteine45af542015-06-30 13:36:19 +00004313static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004314_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4315 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4316 __u);
4317}
4318
Michael Kupersteine45af542015-06-30 13:36:19 +00004319static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004320_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4321 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4322 (__mmask16)-1);
4323}
4324
Michael Kupersteine45af542015-06-30 13:36:19 +00004325static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004326_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4327 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4328 __u);
4329}
4330
Michael Kupersteine45af542015-06-30 13:36:19 +00004331static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004332_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4333 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4334 (__mmask16)-1);
4335}
4336
Michael Kupersteine45af542015-06-30 13:36:19 +00004337static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004338_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4339 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4340 __u);
4341}
4342
Michael Kupersteine45af542015-06-30 13:36:19 +00004343static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004344_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4345 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4346 (__mmask8)-1);
4347}
4348
Michael Kupersteine45af542015-06-30 13:36:19 +00004349static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004350_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4351 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4352 __u);
4353}
4354
Michael Kupersteine45af542015-06-30 13:36:19 +00004355static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004356_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4357 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4358 (__mmask8)-1);
4359}
4360
Michael Kupersteine45af542015-06-30 13:36:19 +00004361static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004362_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4363 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4364 __u);
4365}
4366
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004367static __inline__ __m512i __DEFAULT_FN_ATTRS
4368_mm512_cvtepi8_epi32 (__m128i __A)
4369{
4370 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4371 (__v16si)
4372 _mm512_setzero_si512 (),
4373 (__mmask16) -1);
4374}
4375
4376static __inline__ __m512i __DEFAULT_FN_ATTRS
4377_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4378{
4379 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4380 (__v16si) __W,
4381 (__mmask16) __U);
4382}
4383
4384static __inline__ __m512i __DEFAULT_FN_ATTRS
4385_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4386{
4387 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4388 (__v16si)
4389 _mm512_setzero_si512 (),
4390 (__mmask16) __U);
4391}
4392
4393static __inline__ __m512i __DEFAULT_FN_ATTRS
4394_mm512_cvtepi8_epi64 (__m128i __A)
4395{
4396 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4397 (__v8di)
4398 _mm512_setzero_si512 (),
4399 (__mmask8) -1);
4400}
4401
4402static __inline__ __m512i __DEFAULT_FN_ATTRS
4403_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4404{
4405 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4406 (__v8di) __W,
4407 (__mmask8) __U);
4408}
4409
4410static __inline__ __m512i __DEFAULT_FN_ATTRS
4411_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4412{
4413 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4414 (__v8di)
4415 _mm512_setzero_si512 (),
4416 (__mmask8) __U);
4417}
4418
4419static __inline__ __m512i __DEFAULT_FN_ATTRS
4420_mm512_cvtepi32_epi64 (__m256i __X)
4421{
4422 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4423 (__v8di)
4424 _mm512_setzero_si512 (),
4425 (__mmask8) -1);
4426}
4427
4428static __inline__ __m512i __DEFAULT_FN_ATTRS
4429_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4430{
4431 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4432 (__v8di) __W,
4433 (__mmask8) __U);
4434}
4435
4436static __inline__ __m512i __DEFAULT_FN_ATTRS
4437_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4438{
4439 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4440 (__v8di)
4441 _mm512_setzero_si512 (),
4442 (__mmask8) __U);
4443}
4444
4445static __inline__ __m512i __DEFAULT_FN_ATTRS
4446_mm512_cvtepi16_epi32 (__m256i __A)
4447{
4448 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4449 (__v16si)
4450 _mm512_setzero_si512 (),
4451 (__mmask16) -1);
4452}
4453
4454static __inline__ __m512i __DEFAULT_FN_ATTRS
4455_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4456{
4457 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4458 (__v16si) __W,
4459 (__mmask16) __U);
4460}
4461
4462static __inline__ __m512i __DEFAULT_FN_ATTRS
4463_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4464{
4465 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4466 (__v16si)
4467 _mm512_setzero_si512 (),
4468 (__mmask16) __U);
4469}
4470
4471static __inline__ __m512i __DEFAULT_FN_ATTRS
4472_mm512_cvtepi16_epi64 (__m128i __A)
4473{
4474 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4475 (__v8di)
4476 _mm512_setzero_si512 (),
4477 (__mmask8) -1);
4478}
4479
4480static __inline__ __m512i __DEFAULT_FN_ATTRS
4481_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4482{
4483 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4484 (__v8di) __W,
4485 (__mmask8) __U);
4486}
4487
4488static __inline__ __m512i __DEFAULT_FN_ATTRS
4489_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4490{
4491 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4492 (__v8di)
4493 _mm512_setzero_si512 (),
4494 (__mmask8) __U);
4495}
4496
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004497static __inline__ __m512i __DEFAULT_FN_ATTRS
4498_mm512_cvtepu8_epi32 (__m128i __A)
4499{
4500 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4501 (__v16si)
4502 _mm512_setzero_si512 (),
4503 (__mmask16) -1);
4504}
4505
4506static __inline__ __m512i __DEFAULT_FN_ATTRS
4507_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4508{
4509 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4510 (__v16si) __W,
4511 (__mmask16) __U);
4512}
4513
4514static __inline__ __m512i __DEFAULT_FN_ATTRS
4515_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4516{
4517 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4518 (__v16si)
4519 _mm512_setzero_si512 (),
4520 (__mmask16) __U);
4521}
4522
4523static __inline__ __m512i __DEFAULT_FN_ATTRS
4524_mm512_cvtepu8_epi64 (__m128i __A)
4525{
4526 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4527 (__v8di)
4528 _mm512_setzero_si512 (),
4529 (__mmask8) -1);
4530}
4531
4532static __inline__ __m512i __DEFAULT_FN_ATTRS
4533_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4534{
4535 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4536 (__v8di) __W,
4537 (__mmask8) __U);
4538}
4539
4540static __inline__ __m512i __DEFAULT_FN_ATTRS
4541_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4542{
4543 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4544 (__v8di)
4545 _mm512_setzero_si512 (),
4546 (__mmask8) __U);
4547}
4548
4549static __inline__ __m512i __DEFAULT_FN_ATTRS
4550_mm512_cvtepu32_epi64 (__m256i __X)
4551{
4552 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4553 (__v8di)
4554 _mm512_setzero_si512 (),
4555 (__mmask8) -1);
4556}
4557
4558static __inline__ __m512i __DEFAULT_FN_ATTRS
4559_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4560{
4561 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4562 (__v8di) __W,
4563 (__mmask8) __U);
4564}
4565
4566static __inline__ __m512i __DEFAULT_FN_ATTRS
4567_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4568{
4569 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4570 (__v8di)
4571 _mm512_setzero_si512 (),
4572 (__mmask8) __U);
4573}
4574
4575static __inline__ __m512i __DEFAULT_FN_ATTRS
4576_mm512_cvtepu16_epi32 (__m256i __A)
4577{
4578 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4579 (__v16si)
4580 _mm512_setzero_si512 (),
4581 (__mmask16) -1);
4582}
4583
4584static __inline__ __m512i __DEFAULT_FN_ATTRS
4585_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4586{
4587 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4588 (__v16si) __W,
4589 (__mmask16) __U);
4590}
4591
4592static __inline__ __m512i __DEFAULT_FN_ATTRS
4593_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4594{
4595 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4596 (__v16si)
4597 _mm512_setzero_si512 (),
4598 (__mmask16) __U);
4599}
4600
4601static __inline__ __m512i __DEFAULT_FN_ATTRS
4602_mm512_cvtepu16_epi64 (__m128i __A)
4603{
4604 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4605 (__v8di)
4606 _mm512_setzero_si512 (),
4607 (__mmask8) -1);
4608}
4609
4610static __inline__ __m512i __DEFAULT_FN_ATTRS
4611_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4612{
4613 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4614 (__v8di) __W,
4615 (__mmask8) __U);
4616}
4617
4618static __inline__ __m512i __DEFAULT_FN_ATTRS
4619_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4620{
4621 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4622 (__v8di)
4623 _mm512_setzero_si512 (),
4624 (__mmask8) __U);
4625}
4626
Michael Zuckermane98cc742016-02-23 15:59:47 +00004627static __inline__ __m512i __DEFAULT_FN_ATTRS
4628_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4629{
4630 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4631 (__v16si) __B,
4632 (__v16si)
4633 _mm512_setzero_si512 (),
4634 (__mmask16) -1);
4635}
4636
4637static __inline__ __m512i __DEFAULT_FN_ATTRS
4638_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4639{
4640 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4641 (__v16si) __B,
4642 (__v16si) __W,
4643 (__mmask16) __U);
4644}
4645
4646static __inline__ __m512i __DEFAULT_FN_ATTRS
4647_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4648{
4649 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4650 (__v16si) __B,
4651 (__v16si)
4652 _mm512_setzero_si512 (),
4653 (__mmask16) __U);
4654}
4655
4656static __inline__ __m512i __DEFAULT_FN_ATTRS
4657_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4658{
4659 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4660 (__v8di) __B,
4661 (__v8di)
4662 _mm512_setzero_si512 (),
4663 (__mmask8) -1);
4664}
4665
4666static __inline__ __m512i __DEFAULT_FN_ATTRS
4667_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4668{
4669 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4670 (__v8di) __B,
4671 (__v8di) __W,
4672 (__mmask8) __U);
4673}
4674
4675static __inline__ __m512i __DEFAULT_FN_ATTRS
4676_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4677{
4678 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4679 (__v8di) __B,
4680 (__v8di)
4681 _mm512_setzero_si512 (),
4682 (__mmask8) __U);
4683}
4684
4685
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004686
Craig Topper4cac1c22015-01-25 23:30:07 +00004687#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004688 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004689 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004690 (__mmask16)-1); })
4691
4692#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004693 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004694 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004695 (__mmask16)-1); })
4696
4697#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004698 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004699 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004700 (__mmask8)-1); })
4701
4702#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004703 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004704 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004705 (__mmask8)-1); })
4706
4707#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004708 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004709 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004710 (__mmask16)(m)); })
4711
4712#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004713 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004714 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004715 (__mmask16)(m)); })
4716
4717#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004718 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004719 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004720 (__mmask8)(m)); })
4721
4722#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004723 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004724 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004725 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004726
Michael Zuckerman38a27272016-02-22 09:05:41 +00004727#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004728 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4729 (__v16si)_mm512_setzero_si512(), \
4730 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004731
4732#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004733 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4734 (__v16si)(__m512i)(W), \
4735 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004736
4737#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004738 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4739 (__v16si)_mm512_setzero_si512(), \
4740 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004741
4742#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004743 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4744 (__v8di)_mm512_setzero_si512(), \
4745 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004746
4747#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004748 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4749 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004750
4751#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004752 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4753 (__v8di)_mm512_setzero_si512(), \
4754 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004755static __inline__ __m512i __DEFAULT_FN_ATTRS
4756_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4757{
4758 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4759 (__v16si) __B,
4760 (__v16si)
4761 _mm512_setzero_si512 (),
4762 (__mmask16) -1);
4763}
4764
4765static __inline__ __m512i __DEFAULT_FN_ATTRS
4766_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4767{
4768 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4769 (__v16si) __B,
4770 (__v16si) __W,
4771 (__mmask16) __U);
4772}
4773
4774static __inline__ __m512i __DEFAULT_FN_ATTRS
4775_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4776{
4777 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4778 (__v16si) __B,
4779 (__v16si)
4780 _mm512_setzero_si512 (),
4781 (__mmask16) __U);
4782}
4783
4784static __inline__ __m512i __DEFAULT_FN_ATTRS
4785_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4786{
4787 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4788 (__v8di) __B,
4789 (__v8di)
4790 _mm512_setzero_si512 (),
4791 (__mmask8) -1);
4792}
4793
4794static __inline__ __m512i __DEFAULT_FN_ATTRS
4795_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4796{
4797 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4798 (__v8di) __B,
4799 (__v8di) __W,
4800 (__mmask8) __U);
4801}
4802
4803static __inline__ __m512i __DEFAULT_FN_ATTRS
4804_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4805{
4806 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4807 (__v8di) __B,
4808 (__v8di)
4809 _mm512_setzero_si512 (),
4810 (__mmask8) __U);
4811}
4812
Craig Topper8c18e112016-05-17 04:41:50 +00004813#define _mm512_ror_epi32(A, B) __extension__ ({ \
4814 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4815 (__v16si)_mm512_setzero_si512(), \
4816 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004817
Craig Topper8c18e112016-05-17 04:41:50 +00004818#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4819 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4820 (__v16si)(__m512i)(W), \
4821 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004822
Craig Topper8c18e112016-05-17 04:41:50 +00004823#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
4824 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4825 (__v16si)_mm512_setzero_si512(), \
4826 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004827
Craig Topper8c18e112016-05-17 04:41:50 +00004828#define _mm512_ror_epi64(A, B) __extension__ ({ \
4829 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4830 (__v8di)_mm512_setzero_si512(), \
4831 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004832
Craig Topper8c18e112016-05-17 04:41:50 +00004833#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4834 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4835 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004836
Craig Topper8c18e112016-05-17 04:41:50 +00004837#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
4838 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4839 (__v8di)_mm512_setzero_si512(), \
4840 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004841
Craig Topper8c18e112016-05-17 04:41:50 +00004842#define _mm512_slli_epi32(A, B) __extension__ ({ \
4843 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4844 (__v16si)_mm512_setzero_si512(), \
4845 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004846
Craig Topper8c18e112016-05-17 04:41:50 +00004847#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
4848 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4849 (__v16si)(__m512i)(W), \
4850 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004851
Craig Topper8c18e112016-05-17 04:41:50 +00004852#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
4853 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4854 (__v16si)_mm512_setzero_si512(), \
4855 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004856
Craig Topper8c18e112016-05-17 04:41:50 +00004857#define _mm512_slli_epi64(A, B) __extension__ ({ \
4858 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4859 (__v8di)_mm512_setzero_si512(), \
4860 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004861
Craig Topper8c18e112016-05-17 04:41:50 +00004862#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
4863 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4864 (__v8di)(__m512i)(W), \
4865 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004866
Craig Topper8c18e112016-05-17 04:41:50 +00004867#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
4868 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4869 (__v8di)_mm512_setzero_si512(), \
4870 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004871
Michael Zuckerman38a27272016-02-22 09:05:41 +00004872
Michael Zuckermand176d742016-03-01 17:49:03 +00004873
Craig Topper8c18e112016-05-17 04:41:50 +00004874#define _mm512_srli_epi32(A, B) __extension__ ({ \
4875 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4876 (__v16si)_mm512_setzero_si512(), \
4877 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004878
Craig Topper8c18e112016-05-17 04:41:50 +00004879#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
4880 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4881 (__v16si)(__m512i)(W), \
4882 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004883
Craig Topper8c18e112016-05-17 04:41:50 +00004884#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
4885 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4886 (__v16si)_mm512_setzero_si512(), \
4887 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004888
Craig Topper8c18e112016-05-17 04:41:50 +00004889#define _mm512_srli_epi64(A, B) __extension__ ({ \
4890 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4891 (__v8di)_mm512_setzero_si512(), \
4892 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004893
Craig Topper8c18e112016-05-17 04:41:50 +00004894#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
4895 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4896 (__v8di)(__m512i)(W), \
4897 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004898
Craig Topper8c18e112016-05-17 04:41:50 +00004899#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
4900 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4901 (__v8di)_mm512_setzero_si512(), \
4902 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004903
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004904static __inline__ __m512i __DEFAULT_FN_ATTRS
4905_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4906{
4907 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4908 (__v16si) __W,
4909 (__mmask16) __U);
4910}
4911
4912static __inline__ __m512i __DEFAULT_FN_ATTRS
4913_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4914{
4915 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4916 (__v16si)
4917 _mm512_setzero_si512 (),
4918 (__mmask16) __U);
4919}
4920
4921static __inline__ void __DEFAULT_FN_ATTRS
4922_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
4923{
4924 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
4925 (__mmask16) __U);
4926}
4927
4928static __inline__ __m512i __DEFAULT_FN_ATTRS
4929_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
4930{
4931 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4932 (__v8di) __W,
4933 (__mmask8) __U);
4934}
4935
4936static __inline__ __m512i __DEFAULT_FN_ATTRS
4937_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
4938{
4939 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4940 (__v8di)
4941 _mm512_setzero_si512 (),
4942 (__mmask8) __U);
4943}
4944
4945static __inline__ __m512i __DEFAULT_FN_ATTRS
4946_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4947{
4948 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4949 (__v8di) __W,
4950 (__mmask8) __U);
4951}
4952
4953static __inline__ __m512i __DEFAULT_FN_ATTRS
4954_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
4955{
4956 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4957 (__v8di)
4958 _mm512_setzero_si512 (),
4959 (__mmask8) __U);
4960}
4961
4962static __inline__ void __DEFAULT_FN_ATTRS
4963_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
4964{
4965 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
4966 (__mmask8) __U);
4967}
4968
4969
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00004970
4971static __inline__ __m512d __DEFAULT_FN_ATTRS
4972_mm512_movedup_pd (__m512d __A)
4973{
4974 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4975 (__v8df)
4976 _mm512_undefined_pd (),
4977 (__mmask8) -1);
4978}
4979
4980static __inline__ __m512d __DEFAULT_FN_ATTRS
4981_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
4982{
4983 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4984 (__v8df) __W,
4985 (__mmask8) __U);
4986}
4987
4988static __inline__ __m512d __DEFAULT_FN_ATTRS
4989_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
4990{
4991 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4992 (__v8df)
4993 _mm512_setzero_pd (),
4994 (__mmask8) __U);
4995}
4996
Craig Topper8c18e112016-05-17 04:41:50 +00004997#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
4998 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
4999 (__v8df)(__m512d)(B), \
5000 (__v8di)(__m512i)(C), (int)(imm), \
5001 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005002
Craig Topper8c18e112016-05-17 04:41:50 +00005003#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5004 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5005 (__v8df)(__m512d)(B), \
5006 (__v8di)(__m512i)(C), (int)(imm), \
5007 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005008
Craig Topper8c18e112016-05-17 04:41:50 +00005009#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5010 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5011 (__v8df)(__m512d)(B), \
5012 (__v8di)(__m512i)(C), (int)(imm), \
5013 (__mmask8)-1, \
5014 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005015
Craig Topper8c18e112016-05-17 04:41:50 +00005016#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5017 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5018 (__v8df)(__m512d)(B), \
5019 (__v8di)(__m512i)(C), (int)(imm), \
5020 (__mmask8)(U), \
5021 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005022
Craig Topper8c18e112016-05-17 04:41:50 +00005023#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5024 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5025 (__v8df)(__m512d)(B), \
5026 (__v8di)(__m512i)(C), \
5027 (int)(imm), (__mmask8)(U), \
5028 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005029
Craig Topper8c18e112016-05-17 04:41:50 +00005030#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5031 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5032 (__v8df)(__m512d)(B), \
5033 (__v8di)(__m512i)(C), \
5034 (int)(imm), (__mmask8)(U), \
5035 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005036
Craig Topper8c18e112016-05-17 04:41:50 +00005037#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5038 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5039 (__v16sf)(__m512)(B), \
5040 (__v16si)(__m512i)(C), (int)(imm), \
5041 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005042
Craig Topper8c18e112016-05-17 04:41:50 +00005043#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5044 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5045 (__v16sf)(__m512)(B), \
5046 (__v16si)(__m512i)(C), (int)(imm), \
5047 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005048
Craig Topper8c18e112016-05-17 04:41:50 +00005049#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5050 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5051 (__v16sf)(__m512)(B), \
5052 (__v16si)(__m512i)(C), (int)(imm), \
5053 (__mmask16)-1, \
5054 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005055
Craig Topper8c18e112016-05-17 04:41:50 +00005056#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5057 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5058 (__v16sf)(__m512)(B), \
5059 (__v16si)(__m512i)(C), (int)(imm), \
5060 (__mmask16)(U), \
5061 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005062
Craig Topper8c18e112016-05-17 04:41:50 +00005063#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5064 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5065 (__v16sf)(__m512)(B), \
5066 (__v16si)(__m512i)(C), \
5067 (int)(imm), (__mmask16)(U), \
5068 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005069
Craig Topper8c18e112016-05-17 04:41:50 +00005070#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5071 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5072 (__v16sf)(__m512)(B), \
5073 (__v16si)(__m512i)(C), \
5074 (int)(imm), (__mmask16)(U), \
5075 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005076
Craig Topper8c18e112016-05-17 04:41:50 +00005077#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5078 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5079 (__v2df)(__m128d)(B), \
5080 (__v2di)(__m128i)(C), (int)(imm), \
5081 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005082
Craig Topper8c18e112016-05-17 04:41:50 +00005083#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5084 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5085 (__v2df)(__m128d)(B), \
5086 (__v2di)(__m128i)(C), (int)(imm), \
5087 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005088
Craig Topper8c18e112016-05-17 04:41:50 +00005089#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5090 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5091 (__v2df)(__m128d)(B), \
5092 (__v2di)(__m128i)(C), (int)(imm), \
5093 (__mmask8)-1, \
5094 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005095
Craig Topper8c18e112016-05-17 04:41:50 +00005096#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5097 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5098 (__v2df)(__m128d)(B), \
5099 (__v2di)(__m128i)(C), (int)(imm), \
5100 (__mmask8)(U), \
5101 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005102
Craig Topper8c18e112016-05-17 04:41:50 +00005103#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5104 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5105 (__v2df)(__m128d)(B), \
5106 (__v2di)(__m128i)(C), (int)(imm), \
5107 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005108
Craig Topper8c18e112016-05-17 04:41:50 +00005109#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5110 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5111 (__v2df)(__m128d)(B), \
5112 (__v2di)(__m128i)(C), (int)(imm), \
5113 (__mmask8)(U), \
5114 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005115
Craig Topper8c18e112016-05-17 04:41:50 +00005116#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5117 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5118 (__v4sf)(__m128)(B), \
5119 (__v4si)(__m128i)(C), (int)(imm), \
5120 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005121
Craig Topper8c18e112016-05-17 04:41:50 +00005122#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5123 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5124 (__v4sf)(__m128)(B), \
5125 (__v4si)(__m128i)(C), (int)(imm), \
5126 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005127
Craig Topper8c18e112016-05-17 04:41:50 +00005128#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5129 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5130 (__v4sf)(__m128)(B), \
5131 (__v4si)(__m128i)(C), (int)(imm), \
5132 (__mmask8)-1, \
5133 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005134
Craig Topper8c18e112016-05-17 04:41:50 +00005135#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5136 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5137 (__v4sf)(__m128)(B), \
5138 (__v4si)(__m128i)(C), (int)(imm), \
5139 (__mmask8)(U), \
5140 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005141
Craig Topper8c18e112016-05-17 04:41:50 +00005142#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5143 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5144 (__v4sf)(__m128)(B), \
5145 (__v4si)(__m128i)(C), (int)(imm), \
5146 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005147
Craig Topper8c18e112016-05-17 04:41:50 +00005148#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5149 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5150 (__v4sf)(__m128)(B), \
5151 (__v4si)(__m128i)(C), (int)(imm), \
5152 (__mmask8)(U), \
5153 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005154
Craig Topper8c18e112016-05-17 04:41:50 +00005155#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5156 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5157 (__v2df)(__m128d)(B), \
5158 (__v2df)_mm_setzero_pd(), \
5159 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005160
5161
5162static __inline__ __m128d __DEFAULT_FN_ATTRS
5163_mm_getexp_sd (__m128d __A, __m128d __B)
5164{
5165 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5166 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5167}
5168
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005169static __inline__ __m128d __DEFAULT_FN_ATTRS
5170_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5171{
5172 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5173 (__v2df) __B,
5174 (__v2df) __W,
5175 (__mmask8) __U,
5176 _MM_FROUND_CUR_DIRECTION);
5177}
5178
Craig Topper8c18e112016-05-17 04:41:50 +00005179#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5180 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5181 (__v2df)(__m128d)(B), \
5182 (__v2df)(__m128d)(W), \
5183 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005184
5185static __inline__ __m128d __DEFAULT_FN_ATTRS
5186_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
5187{
5188 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5189 (__v2df) __B,
5190 (__v2df) _mm_setzero_pd (),
5191 (__mmask8) __U,
5192 _MM_FROUND_CUR_DIRECTION);
5193}
5194
Craig Topper8c18e112016-05-17 04:41:50 +00005195#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5196 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5197 (__v2df)(__m128d)(B), \
5198 (__v2df)_mm_setzero_pd(), \
5199 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005200
Craig Topper8c18e112016-05-17 04:41:50 +00005201#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5202 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5203 (__v4sf)(__m128)(B), \
5204 (__v4sf)_mm_setzero_ps(), \
5205 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005206
5207static __inline__ __m128 __DEFAULT_FN_ATTRS
5208_mm_getexp_ss (__m128 __A, __m128 __B)
5209{
5210 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5211 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5212}
5213
Craig Topper58187d32016-05-17 04:41:29 +00005214static __inline__ __m128 __DEFAULT_FN_ATTRS
5215_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005216{
Craig Topper58187d32016-05-17 04:41:29 +00005217 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005218 (__v4sf) __B,
5219 (__v4sf) __W,
5220 (__mmask8) __U,
5221 _MM_FROUND_CUR_DIRECTION);
5222}
5223
Craig Topper8c18e112016-05-17 04:41:50 +00005224#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5225 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5226 (__v4sf)(__m128)(B), \
5227 (__v4sf)(__m128)(W), \
5228 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005229
Craig Topper58187d32016-05-17 04:41:29 +00005230static __inline__ __m128 __DEFAULT_FN_ATTRS
5231_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005232{
Craig Topper58187d32016-05-17 04:41:29 +00005233 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005234 (__v4sf) __B,
5235 (__v4sf) _mm_setzero_pd (),
5236 (__mmask8) __U,
5237 _MM_FROUND_CUR_DIRECTION);
5238}
5239
Craig Topper8c18e112016-05-17 04:41:50 +00005240#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5241 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5242 (__v4sf)(__m128)(B), \
5243 (__v4sf)_mm_setzero_ps(), \
5244 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005245
Craig Topper8c18e112016-05-17 04:41:50 +00005246#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5247 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5248 (__v2df)(__m128d)(B), \
5249 (int)(((D)<<2) | (C)), \
5250 (__v2df)_mm_setzero_pd(), \
5251 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005252
Craig Topper8c18e112016-05-17 04:41:50 +00005253#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5254 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5255 (__v2df)(__m128d)(B), \
5256 (int)(((D)<<2) | (C)), \
5257 (__v2df)_mm_setzero_pd(), \
5258 (__mmask8)-1, \
5259 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005260
Craig Topper8c18e112016-05-17 04:41:50 +00005261#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5262 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5263 (__v2df)(__m128d)(B), \
5264 (int)(((D)<<2) | (C)), \
5265 (__v2df)(__m128d)(W), \
5266 (__mmask8)(U), \
5267 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005268
Craig Topper8c18e112016-05-17 04:41:50 +00005269#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5270 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5271 (__v2df)(__m128d)(B), \
5272 (int)(((D)<<2) | (C)), \
5273 (__v2df)(__m128d)(W), \
5274 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005275
Craig Topper8c18e112016-05-17 04:41:50 +00005276#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5277 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5278 (__v2df)(__m128d)(B), \
5279 (int)(((D)<<2) | (C)), \
5280 (__v2df)_mm_setzero_pd(), \
5281 (__mmask8)(U), \
5282 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005283
Craig Topper8c18e112016-05-17 04:41:50 +00005284#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5285 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5286 (__v2df)(__m128d)(B), \
5287 (int)(((D)<<2) | (C)), \
5288 (__v2df)_mm_setzero_pd(), \
5289 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005290
Craig Topper8c18e112016-05-17 04:41:50 +00005291#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5292 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5293 (__v4sf)(__m128)(B), \
5294 (int)(((D)<<2) | (C)), \
5295 (__v4sf)_mm_setzero_ps(), \
5296 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005297
Craig Topper8c18e112016-05-17 04:41:50 +00005298#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5299 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5300 (__v4sf)(__m128)(B), \
5301 (int)(((D)<<2) | (C)), \
5302 (__v4sf)_mm_setzero_ps(), \
5303 (__mmask8)-1, \
5304 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005305
Craig Topper8c18e112016-05-17 04:41:50 +00005306#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5307 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5308 (__v4sf)(__m128)(B), \
5309 (int)(((D)<<2) | (C)), \
5310 (__v4sf)(__m128)(W), \
5311 (__mmask8)(U), \
5312 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005313
Craig Topper8c18e112016-05-17 04:41:50 +00005314#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5315 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5316 (__v4sf)(__m128)(B), \
5317 (int)(((D)<<2) | (C)), \
5318 (__v4sf)(__m128)(W), \
5319 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005320
Craig Topper8c18e112016-05-17 04:41:50 +00005321#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5322 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5323 (__v4sf)(__m128)(B), \
5324 (int)(((D)<<2) | (C)), \
5325 (__v4sf)_mm_setzero_pd(), \
5326 (__mmask8)(U), \
5327 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005328
Craig Topper8c18e112016-05-17 04:41:50 +00005329#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5330 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5331 (__v4sf)(__m128)(B), \
5332 (int)(((D)<<2) | (C)), \
5333 (__v4sf)_mm_setzero_ps(), \
5334 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005335
5336static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5337_mm512_kmov (__mmask16 __A)
5338{
5339 return __A;
5340}
5341
Craig Topper8c18e112016-05-17 04:41:50 +00005342#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5343 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5344 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005345
Craig Topper8c18e112016-05-17 04:41:50 +00005346#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5347 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5348 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005349
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005350static __inline__ __m512d __DEFAULT_FN_ATTRS
5351_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5352{
5353 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5354 (__v8df) __B,
5355 (__v8df) __W,
5356 (__mmask8) __U);
5357}
Craig Topper8c18e112016-05-17 04:41:50 +00005358#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5359 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005360static __inline__ __m512i __DEFAULT_FN_ATTRS
5361_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5362 __mmask16 __U, __m512i __B)
5363{
5364 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5365 (__v16si) __I
5366 /* idx */ ,
5367 (__v16si) __B,
5368 (__mmask16) __U);
5369}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005370static __inline__ __m512i __DEFAULT_FN_ATTRS
5371_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5372{
5373 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5374 (__v16si) __B,
5375 (__v16si)
5376 _mm512_setzero_si512 (),
5377 (__mmask16) -1);
5378}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005379
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005380static __inline__ __m512i __DEFAULT_FN_ATTRS
5381_mm512_sll_epi32 (__m512i __A, __m128i __B)
5382{
5383 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5384 (__v4si) __B,
5385 (__v16si)
5386 _mm512_setzero_si512 (),
5387 (__mmask16) -1);
5388}
5389
5390static __inline__ __m512i __DEFAULT_FN_ATTRS
5391_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5392{
5393 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5394 (__v4si) __B,
5395 (__v16si) __W,
5396 (__mmask16) __U);
5397}
5398
5399static __inline__ __m512i __DEFAULT_FN_ATTRS
5400_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5401{
5402 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5403 (__v4si) __B,
5404 (__v16si)
5405 _mm512_setzero_si512 (),
5406 (__mmask16) __U);
5407}
5408
5409static __inline__ __m512i __DEFAULT_FN_ATTRS
5410_mm512_sll_epi64 (__m512i __A, __m128i __B)
5411{
5412 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5413 (__v2di) __B,
5414 (__v8di)
5415 _mm512_setzero_si512 (),
5416 (__mmask8) -1);
5417}
5418
5419static __inline__ __m512i __DEFAULT_FN_ATTRS
5420_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5421{
5422 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5423 (__v2di) __B,
5424 (__v8di) __W,
5425 (__mmask8) __U);
5426}
5427
5428static __inline__ __m512i __DEFAULT_FN_ATTRS
5429_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5430{
5431 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5432 (__v2di) __B,
5433 (__v8di)
5434 _mm512_setzero_si512 (),
5435 (__mmask8) __U);
5436}
5437
5438static __inline__ __m512i __DEFAULT_FN_ATTRS
5439_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5440{
5441 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5442 (__v16si) __Y,
5443 (__v16si)
5444 _mm512_setzero_si512 (),
5445 (__mmask16) -1);
5446}
5447
5448static __inline__ __m512i __DEFAULT_FN_ATTRS
5449_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5450{
5451 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5452 (__v16si) __Y,
5453 (__v16si) __W,
5454 (__mmask16) __U);
5455}
5456
5457static __inline__ __m512i __DEFAULT_FN_ATTRS
5458_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5459{
5460 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5461 (__v16si) __Y,
5462 (__v16si)
5463 _mm512_setzero_si512 (),
5464 (__mmask16) __U);
5465}
5466
5467static __inline__ __m512i __DEFAULT_FN_ATTRS
5468_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5469{
5470 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5471 (__v8di) __Y,
5472 (__v8di)
5473 _mm512_undefined_pd (),
5474 (__mmask8) -1);
5475}
5476
5477static __inline__ __m512i __DEFAULT_FN_ATTRS
5478_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5479{
5480 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5481 (__v8di) __Y,
5482 (__v8di) __W,
5483 (__mmask8) __U);
5484}
5485
5486static __inline__ __m512i __DEFAULT_FN_ATTRS
5487_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5488{
5489 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5490 (__v8di) __Y,
5491 (__v8di)
5492 _mm512_setzero_si512 (),
5493 (__mmask8) __U);
5494}
5495
5496static __inline__ __m512i __DEFAULT_FN_ATTRS
5497_mm512_sra_epi32 (__m512i __A, __m128i __B)
5498{
5499 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5500 (__v4si) __B,
5501 (__v16si)
5502 _mm512_setzero_si512 (),
5503 (__mmask16) -1);
5504}
5505
5506static __inline__ __m512i __DEFAULT_FN_ATTRS
5507_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5508{
5509 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5510 (__v4si) __B,
5511 (__v16si) __W,
5512 (__mmask16) __U);
5513}
5514
5515static __inline__ __m512i __DEFAULT_FN_ATTRS
5516_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5517{
5518 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5519 (__v4si) __B,
5520 (__v16si)
5521 _mm512_setzero_si512 (),
5522 (__mmask16) __U);
5523}
5524
5525static __inline__ __m512i __DEFAULT_FN_ATTRS
5526_mm512_sra_epi64 (__m512i __A, __m128i __B)
5527{
5528 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5529 (__v2di) __B,
5530 (__v8di)
5531 _mm512_setzero_si512 (),
5532 (__mmask8) -1);
5533}
5534
5535static __inline__ __m512i __DEFAULT_FN_ATTRS
5536_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5537{
5538 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5539 (__v2di) __B,
5540 (__v8di) __W,
5541 (__mmask8) __U);
5542}
5543
5544static __inline__ __m512i __DEFAULT_FN_ATTRS
5545_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5546{
5547 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5548 (__v2di) __B,
5549 (__v8di)
5550 _mm512_setzero_si512 (),
5551 (__mmask8) __U);
5552}
5553
5554static __inline__ __m512i __DEFAULT_FN_ATTRS
5555_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5556{
5557 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5558 (__v16si) __Y,
5559 (__v16si)
5560 _mm512_setzero_si512 (),
5561 (__mmask16) -1);
5562}
5563
5564static __inline__ __m512i __DEFAULT_FN_ATTRS
5565_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5566{
5567 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5568 (__v16si) __Y,
5569 (__v16si) __W,
5570 (__mmask16) __U);
5571}
5572
5573static __inline__ __m512i __DEFAULT_FN_ATTRS
5574_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5575{
5576 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5577 (__v16si) __Y,
5578 (__v16si)
5579 _mm512_setzero_si512 (),
5580 (__mmask16) __U);
5581}
5582
5583static __inline__ __m512i __DEFAULT_FN_ATTRS
5584_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5585{
5586 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5587 (__v8di) __Y,
5588 (__v8di)
5589 _mm512_setzero_si512 (),
5590 (__mmask8) -1);
5591}
5592
5593static __inline__ __m512i __DEFAULT_FN_ATTRS
5594_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5595{
5596 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5597 (__v8di) __Y,
5598 (__v8di) __W,
5599 (__mmask8) __U);
5600}
5601
5602static __inline__ __m512i __DEFAULT_FN_ATTRS
5603_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5604{
5605 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5606 (__v8di) __Y,
5607 (__v8di)
5608 _mm512_setzero_si512 (),
5609 (__mmask8) __U);
5610}
5611
5612static __inline__ __m512i __DEFAULT_FN_ATTRS
5613_mm512_srl_epi32 (__m512i __A, __m128i __B)
5614{
5615 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5616 (__v4si) __B,
5617 (__v16si)
5618 _mm512_setzero_si512 (),
5619 (__mmask16) -1);
5620}
5621
5622static __inline__ __m512i __DEFAULT_FN_ATTRS
5623_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5624{
5625 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5626 (__v4si) __B,
5627 (__v16si) __W,
5628 (__mmask16) __U);
5629}
5630
5631static __inline__ __m512i __DEFAULT_FN_ATTRS
5632_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5633{
5634 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5635 (__v4si) __B,
5636 (__v16si)
5637 _mm512_setzero_si512 (),
5638 (__mmask16) __U);
5639}
5640
5641static __inline__ __m512i __DEFAULT_FN_ATTRS
5642_mm512_srl_epi64 (__m512i __A, __m128i __B)
5643{
5644 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5645 (__v2di) __B,
5646 (__v8di)
5647 _mm512_setzero_si512 (),
5648 (__mmask8) -1);
5649}
5650
5651static __inline__ __m512i __DEFAULT_FN_ATTRS
5652_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5653{
5654 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5655 (__v2di) __B,
5656 (__v8di) __W,
5657 (__mmask8) __U);
5658}
5659
5660static __inline__ __m512i __DEFAULT_FN_ATTRS
5661_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5662{
5663 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5664 (__v2di) __B,
5665 (__v8di)
5666 _mm512_setzero_si512 (),
5667 (__mmask8) __U);
5668}
5669
5670static __inline__ __m512i __DEFAULT_FN_ATTRS
5671_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5672{
5673 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5674 (__v16si) __Y,
5675 (__v16si)
5676 _mm512_setzero_si512 (),
5677 (__mmask16) -1);
5678}
5679
5680static __inline__ __m512i __DEFAULT_FN_ATTRS
5681_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5682{
5683 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5684 (__v16si) __Y,
5685 (__v16si) __W,
5686 (__mmask16) __U);
5687}
5688
5689static __inline__ __m512i __DEFAULT_FN_ATTRS
5690_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5691{
5692 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5693 (__v16si) __Y,
5694 (__v16si)
5695 _mm512_setzero_si512 (),
5696 (__mmask16) __U);
5697}
5698
5699static __inline__ __m512i __DEFAULT_FN_ATTRS
5700_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5701{
5702 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5703 (__v8di) __Y,
5704 (__v8di)
5705 _mm512_setzero_si512 (),
5706 (__mmask8) -1);
5707}
5708
5709static __inline__ __m512i __DEFAULT_FN_ATTRS
5710_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5711{
5712 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5713 (__v8di) __Y,
5714 (__v8di) __W,
5715 (__mmask8) __U);
5716}
5717
5718static __inline__ __m512i __DEFAULT_FN_ATTRS
5719_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5720{
5721 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5722 (__v8di) __Y,
5723 (__v8di)
5724 _mm512_setzero_si512 (),
5725 (__mmask8) __U);
5726}
5727
Craig Topper8c18e112016-05-17 04:41:50 +00005728#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5729 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5730 (__v16si)(__m512i)(B), \
5731 (__v16si)(__m512i)(C), (int)(imm), \
5732 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005733
Craig Topper8c18e112016-05-17 04:41:50 +00005734#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5735 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5736 (__v16si)(__m512i)(B), \
5737 (__v16si)(__m512i)(C), (int)(imm), \
5738 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005739
Craig Topper8c18e112016-05-17 04:41:50 +00005740#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5741 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5742 (__v16si)(__m512i)(B), \
5743 (__v16si)(__m512i)(C), \
5744 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005745
Craig Topper8c18e112016-05-17 04:41:50 +00005746#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5747 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5748 (__v8di)(__m512i)(B), \
5749 (__v8di)(__m512i)(C), (int)(imm), \
5750 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005751
Craig Topper8c18e112016-05-17 04:41:50 +00005752#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
5753 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5754 (__v8di)(__m512i)(B), \
5755 (__v8di)(__m512i)(C), (int)(imm), \
5756 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005757
Craig Topper8c18e112016-05-17 04:41:50 +00005758#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
5759 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
5760 (__v8di)(__m512i)(B), \
5761 (__v8di)(__m512i)(C), (int)(imm), \
5762 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005763
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005764static __inline__ __m512d __DEFAULT_FN_ATTRS
5765_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5766{
5767 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5768 (__v8df) __B,
5769 (__v8df)
5770 _mm512_setzero_pd (),
5771 (__mmask8) __U);
5772}
5773
5774static __inline__ __m512 __DEFAULT_FN_ATTRS
5775_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5776{
5777 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5778 (__v16sf) __B,
5779 (__v16sf) __W,
5780 (__mmask16) __U);
5781}
5782
5783static __inline__ __m512 __DEFAULT_FN_ATTRS
5784_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5785{
5786 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5787 (__v16sf) __B,
5788 (__v16sf)
5789 _mm512_setzero_ps (),
5790 (__mmask16) __U);
5791}
5792
5793static __inline__ __m512d __DEFAULT_FN_ATTRS
5794_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5795{
5796 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5797 (__v8df) __B,
5798 (__v8df) __W,
5799 (__mmask8) __U);
5800}
5801
5802static __inline__ __m512d __DEFAULT_FN_ATTRS
5803_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5804{
5805 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5806 (__v8df) __B,
5807 (__v8df)
5808 _mm512_setzero_pd (),
5809 (__mmask8) __U);
5810}
5811
5812static __inline__ __m512 __DEFAULT_FN_ATTRS
5813_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5814{
5815 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5816 (__v16sf) __B,
5817 (__v16sf) __W,
5818 (__mmask16) __U);
5819}
5820
5821static __inline__ __m512 __DEFAULT_FN_ATTRS
5822_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5823{
5824 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5825 (__v16sf) __B,
5826 (__v16sf)
5827 _mm512_setzero_ps (),
5828 (__mmask16) __U);
5829}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005830
Craig Topper8c18e112016-05-17 04:41:50 +00005831#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
5832 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005833
Craig Topper8c18e112016-05-17 04:41:50 +00005834#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
5835 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005836
Craig Topper8c18e112016-05-17 04:41:50 +00005837#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
5838 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005839
Craig Topper8c18e112016-05-17 04:41:50 +00005840#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
5841 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005842
5843static __inline__ unsigned __DEFAULT_FN_ATTRS
5844_mm_cvtsd_u32 (__m128d __A)
5845{
5846 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5847 _MM_FROUND_CUR_DIRECTION);
5848}
5849
Craig Topper8c18e112016-05-17 04:41:50 +00005850#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
5851 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
5852 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005853
5854static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5855_mm_cvtsd_u64 (__m128d __A)
5856{
5857 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5858 __A,
5859 _MM_FROUND_CUR_DIRECTION);
5860}
5861
Craig Topper8c18e112016-05-17 04:41:50 +00005862#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
5863 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005864
Craig Topper8c18e112016-05-17 04:41:50 +00005865#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
5866 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005867
Craig Topper8c18e112016-05-17 04:41:50 +00005868#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
5869 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005870
Craig Topper8c18e112016-05-17 04:41:50 +00005871#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
5872 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005873
Craig Topper8c18e112016-05-17 04:41:50 +00005874#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
5875 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005876
5877static __inline__ unsigned __DEFAULT_FN_ATTRS
5878_mm_cvtss_u32 (__m128 __A)
5879{
5880 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5881 _MM_FROUND_CUR_DIRECTION);
5882}
5883
Craig Topper8c18e112016-05-17 04:41:50 +00005884#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
5885 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
5886 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005887
5888static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5889_mm_cvtss_u64 (__m128 __A)
5890{
5891 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5892 __A,
5893 _MM_FROUND_CUR_DIRECTION);
5894}
5895
Craig Topper8c18e112016-05-17 04:41:50 +00005896#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
5897 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005898
Craig Topper8c18e112016-05-17 04:41:50 +00005899#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
5900 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005901
5902static __inline__ int __DEFAULT_FN_ATTRS
5903_mm_cvttsd_i32 (__m128d __A)
5904{
5905 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
5906 _MM_FROUND_CUR_DIRECTION);
5907}
5908
Craig Topper8c18e112016-05-17 04:41:50 +00005909#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
5910 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005911
Craig Topper8c18e112016-05-17 04:41:50 +00005912#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
5913 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005914
5915static __inline__ long long __DEFAULT_FN_ATTRS
5916_mm_cvttsd_i64 (__m128d __A)
5917{
5918 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
5919 _MM_FROUND_CUR_DIRECTION);
5920}
5921
Craig Topper8c18e112016-05-17 04:41:50 +00005922#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
5923 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005924
5925static __inline__ unsigned __DEFAULT_FN_ATTRS
5926_mm_cvttsd_u32 (__m128d __A)
5927{
5928 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
5929 _MM_FROUND_CUR_DIRECTION);
5930}
5931
Craig Topper8c18e112016-05-17 04:41:50 +00005932#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
5933 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
5934 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005935
5936static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5937_mm_cvttsd_u64 (__m128d __A)
5938{
5939 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
5940 __A,
5941 _MM_FROUND_CUR_DIRECTION);
5942}
5943
Craig Topper8c18e112016-05-17 04:41:50 +00005944#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
5945 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005946
Craig Topper8c18e112016-05-17 04:41:50 +00005947#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
5948 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005949
5950static __inline__ int __DEFAULT_FN_ATTRS
5951_mm_cvttss_i32 (__m128 __A)
5952{
5953 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
5954 _MM_FROUND_CUR_DIRECTION);
5955}
5956
Craig Topper8c18e112016-05-17 04:41:50 +00005957#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
5958 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005959
Craig Topper8c18e112016-05-17 04:41:50 +00005960#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
5961 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005962
5963static __inline__ long long __DEFAULT_FN_ATTRS
5964_mm_cvttss_i64 (__m128 __A)
5965{
5966 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
5967 _MM_FROUND_CUR_DIRECTION);
5968}
5969
Craig Topper8c18e112016-05-17 04:41:50 +00005970#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
5971 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005972
5973static __inline__ unsigned __DEFAULT_FN_ATTRS
5974_mm_cvttss_u32 (__m128 __A)
5975{
5976 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
5977 _MM_FROUND_CUR_DIRECTION);
5978}
5979
Craig Topper8c18e112016-05-17 04:41:50 +00005980#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
5981 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
5982 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005983
5984static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5985_mm_cvttss_u64 (__m128 __A)
5986{
5987 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
5988 __A,
5989 _MM_FROUND_CUR_DIRECTION);
5990}
5991
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005992static __inline__ __m512d __DEFAULT_FN_ATTRS
5993_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
5994 __m512d __B)
5995{
5996 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
5997 (__v8di) __I
5998 /* idx */ ,
5999 (__v8df) __B,
6000 (__mmask8) __U);
6001}
6002
6003static __inline__ __m512 __DEFAULT_FN_ATTRS
6004_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6005 __m512 __B)
6006{
6007 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6008 (__v16si) __I
6009 /* idx */ ,
6010 (__v16sf) __B,
6011 (__mmask16) __U);
6012}
6013
6014static __inline__ __m512i __DEFAULT_FN_ATTRS
6015_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6016 __mmask8 __U, __m512i __B)
6017{
6018 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6019 (__v8di) __I
6020 /* idx */ ,
6021 (__v8di) __B,
6022 (__mmask8) __U);
6023}
6024
Craig Topper8c18e112016-05-17 04:41:50 +00006025#define _mm512_permute_pd(X, C) __extension__ ({ \
6026 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6027 (__v8df)_mm512_undefined_pd(), \
6028 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006029
Craig Topper8c18e112016-05-17 04:41:50 +00006030#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6031 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6032 (__v8df)(__m512d)(W), \
6033 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006034
Craig Topper8c18e112016-05-17 04:41:50 +00006035#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6036 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6037 (__v8df)_mm512_setzero_pd(), \
6038 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006039
Craig Topper8c18e112016-05-17 04:41:50 +00006040#define _mm512_permute_ps(X, C) __extension__ ({ \
6041 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6042 (__v16sf)_mm512_undefined_ps(), \
6043 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006044
Craig Topper8c18e112016-05-17 04:41:50 +00006045#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6046 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6047 (__v16sf)(__m512)(W), \
6048 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006049
Craig Topper8c18e112016-05-17 04:41:50 +00006050#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6051 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6052 (__v16sf)_mm512_setzero_ps(), \
6053 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006054
6055static __inline__ __m512d __DEFAULT_FN_ATTRS
6056_mm512_permutevar_pd (__m512d __A, __m512i __C)
6057{
6058 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6059 (__v8di) __C,
6060 (__v8df)
6061 _mm512_undefined_pd (),
6062 (__mmask8) -1);
6063}
6064
6065static __inline__ __m512d __DEFAULT_FN_ATTRS
6066_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6067{
6068 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6069 (__v8di) __C,
6070 (__v8df) __W,
6071 (__mmask8) __U);
6072}
6073
6074static __inline__ __m512d __DEFAULT_FN_ATTRS
6075_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6076{
6077 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6078 (__v8di) __C,
6079 (__v8df)
6080 _mm512_setzero_pd (),
6081 (__mmask8) __U);
6082}
6083
6084static __inline__ __m512 __DEFAULT_FN_ATTRS
6085_mm512_permutevar_ps (__m512 __A, __m512i __C)
6086{
6087 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6088 (__v16si) __C,
6089 (__v16sf)
6090 _mm512_undefined_ps (),
6091 (__mmask16) -1);
6092}
6093
6094static __inline__ __m512 __DEFAULT_FN_ATTRS
6095_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6096{
6097 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6098 (__v16si) __C,
6099 (__v16sf) __W,
6100 (__mmask16) __U);
6101}
6102
6103static __inline__ __m512 __DEFAULT_FN_ATTRS
6104_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6105{
6106 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6107 (__v16si) __C,
6108 (__v16sf)
6109 _mm512_setzero_ps (),
6110 (__mmask16) __U);
6111}
6112
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006113static __inline __m512d __DEFAULT_FN_ATTRS
6114_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006115{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006116 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6117 /* idx */ ,
6118 (__v8df) __A,
6119 (__v8df) __B,
6120 (__mmask8) -1);
6121}
6122
6123static __inline__ __m512d __DEFAULT_FN_ATTRS
6124_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6125{
6126 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6127 /* idx */ ,
6128 (__v8df) __A,
6129 (__v8df) __B,
6130 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006131}
6132
6133static __inline__ __m512d __DEFAULT_FN_ATTRS
6134_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6135 __m512d __B)
6136{
6137 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006138 /* idx */ ,
6139 (__v8df) __A,
6140 (__v8df) __B,
6141 (__mmask8) __U);
6142}
6143
6144static __inline __m512 __DEFAULT_FN_ATTRS
6145_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6146{
6147 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6148 /* idx */ ,
6149 (__v16sf) __A,
6150 (__v16sf) __B,
6151 (__mmask16) -1);
6152}
6153
6154static __inline__ __m512 __DEFAULT_FN_ATTRS
6155_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6156{
6157 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6158 /* idx */ ,
6159 (__v16sf) __A,
6160 (__v16sf) __B,
6161 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006162}
6163
6164static __inline__ __m512 __DEFAULT_FN_ATTRS
6165_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6166 __m512 __B)
6167{
6168 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006169 /* idx */ ,
6170 (__v16sf) __A,
6171 (__v16sf) __B,
6172 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006173}
6174
Michael Zuckerman07525092016-04-11 10:22:07 +00006175static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6176_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6177{
6178 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6179 (__v16si) __B,
6180 (__mmask16) -1);
6181}
6182
6183static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6184_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6185{
6186 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6187 (__v16si) __B, __U);
6188}
6189
6190static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6191_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6192{
6193 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6194 (__v8di) __B,
6195 (__mmask8) -1);
6196}
6197
6198static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6199_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6200{
6201 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6202 (__v8di) __B, __U);
6203}
6204
Craig Topper8c18e112016-05-17 04:41:50 +00006205#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6206 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6207 (__v8si)_mm256_undefined_si256(), \
6208 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006209
Craig Topper8c18e112016-05-17 04:41:50 +00006210#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6211 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6212 (__v8si)(__m256i)(W), \
6213 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006214
Craig Topper8c18e112016-05-17 04:41:50 +00006215#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6216 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6217 (__v8si)_mm256_setzero_si256(), \
6218 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006219
6220static __inline__ __m256i __DEFAULT_FN_ATTRS
6221_mm512_cvttpd_epu32 (__m512d __A)
6222{
6223 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6224 (__v8si)
6225 _mm256_undefined_si256 (),
6226 (__mmask8) -1,
6227 _MM_FROUND_CUR_DIRECTION);
6228}
6229
6230static __inline__ __m256i __DEFAULT_FN_ATTRS
6231_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6232{
6233 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6234 (__v8si) __W,
6235 (__mmask8) __U,
6236 _MM_FROUND_CUR_DIRECTION);
6237}
6238
6239static __inline__ __m256i __DEFAULT_FN_ATTRS
6240_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6241{
6242 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6243 (__v8si)
6244 _mm256_setzero_si256 (),
6245 (__mmask8) __U,
6246 _MM_FROUND_CUR_DIRECTION);
6247}
Michael Zuckerman07525092016-04-11 10:22:07 +00006248
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006249static __inline__ __m512i __DEFAULT_FN_ATTRS
6250_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6251 __m512i __B)
6252{
6253 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6254 (__v16si) __B,
6255 (__v16si) __W,
6256 (__mmask16) __U);
6257}
6258
6259static __inline__ __m512i __DEFAULT_FN_ATTRS
6260_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6261{
6262 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6263 (__v16si) __B,
6264 (__v16si)
6265 _mm512_setzero_si512 (),
6266 (__mmask16) __U);
6267}
6268
6269static __inline__ __m512i __DEFAULT_FN_ATTRS
6270_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6271{
6272 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6273 (__v8di) __B,
6274 (__v8di)
6275 _mm512_setzero_si512 (),
6276 (__mmask8) -1);
6277}
6278
6279static __inline__ __m512i __DEFAULT_FN_ATTRS
6280_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6281{
6282 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6283 (__v8di) __B,
6284 (__v8di) __W,
6285 (__mmask8) __U);
6286}
6287
6288static __inline__ __m512i __DEFAULT_FN_ATTRS
6289_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6290{
6291 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6292 (__v8di) __B,
6293 (__v8di)
6294 _mm512_setzero_si512 (),
6295 (__mmask8) __U);
6296}
6297
6298static __inline__ __m512i __DEFAULT_FN_ATTRS
6299_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6300{
6301 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6302 (__v16si) __B,
6303 (__v16si)
6304 _mm512_setzero_si512 (),
6305 (__mmask16) -1);
6306}
6307
6308static __inline__ __m512i __DEFAULT_FN_ATTRS
6309_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6310 __m512i __B)
6311{
6312 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6313 (__v16si) __B,
6314 (__v16si) __W,
6315 (__mmask16) __U);
6316}
6317
6318static __inline__ __m512i __DEFAULT_FN_ATTRS
6319_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6320{
6321 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6322 (__v16si) __B,
6323 (__v16si)
6324 _mm512_setzero_si512 (),
6325 (__mmask16) __U);
6326}
6327
6328static __inline__ __m512i __DEFAULT_FN_ATTRS
6329_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6330{
6331 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6332 (__v8di) __B,
6333 (__v8di)
6334 _mm512_setzero_si512 (),
6335 (__mmask8) -1);
6336}
6337
6338static __inline__ __m512i __DEFAULT_FN_ATTRS
6339_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6340{
6341 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6342 (__v8di) __B,
6343 (__v8di) __W,
6344 (__mmask8) __U);
6345}
6346
6347static __inline__ __m512i __DEFAULT_FN_ATTRS
6348_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6349{
6350 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6351 (__v8di) __B,
6352 (__v8di)
6353 _mm512_setzero_si512 (),
6354 (__mmask8) __U);
6355}
6356
Craig Topper8c18e112016-05-17 04:41:50 +00006357#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6358 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6359 (__v2df)(__m128d)(B), \
6360 (__v2df)_mm_setzero_pd(), \
6361 (__mmask8)-1, (int)(imm), \
6362 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006363
Craig Topper8c18e112016-05-17 04:41:50 +00006364#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6365 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6366 (__v2df)(__m128d)(B), \
6367 (__v2df)_mm_setzero_pd(), \
6368 (__mmask8)-1, (int)(imm), \
6369 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006370
Craig Topper8c18e112016-05-17 04:41:50 +00006371#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6372 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6373 (__v2df)(__m128d)(B), \
6374 (__v2df)(__m128d)(W), \
6375 (__mmask8)(U), (int)(imm), \
6376 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006377
Craig Topper8c18e112016-05-17 04:41:50 +00006378#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6379 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6380 (__v2df)(__m128d)(B), \
6381 (__v2df)(__m128d)(W), \
6382 (__mmask8)(U), (int)(I), \
6383 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006384
Craig Topper8c18e112016-05-17 04:41:50 +00006385#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6386 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6387 (__v2df)(__m128d)(B), \
6388 (__v2df)_mm_setzero_pd(), \
6389 (__mmask8)(U), (int)(I), \
6390 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006391
Craig Topper8c18e112016-05-17 04:41:50 +00006392#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6393 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6394 (__v2df)(__m128d)(B), \
6395 (__v2df)_mm_setzero_pd(), \
6396 (__mmask8)(U), (int)(I), \
6397 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006398
Craig Topper8c18e112016-05-17 04:41:50 +00006399#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6400 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6401 (__v4sf)(__m128)(B), \
6402 (__v4sf)_mm_setzero_ps(), \
6403 (__mmask8)-1, (int)(imm), \
6404 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006405
Craig Topper8c18e112016-05-17 04:41:50 +00006406#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6407 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6408 (__v4sf)(__m128)(B), \
6409 (__v4sf)_mm_setzero_ps(), \
6410 (__mmask8)-1, (int)(imm), \
6411 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006412
Craig Topper8c18e112016-05-17 04:41:50 +00006413#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6414 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6415 (__v4sf)(__m128)(B), \
6416 (__v4sf)(__m128)(W), \
6417 (__mmask8)(U), (int)(I), \
6418 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006419
Craig Topper8c18e112016-05-17 04:41:50 +00006420#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6421 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6422 (__v4sf)(__m128)(B), \
6423 (__v4sf)(__m128)(W), \
6424 (__mmask8)(U), (int)(I), \
6425 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006426
Craig Topper8c18e112016-05-17 04:41:50 +00006427#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6428 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6429 (__v4sf)(__m128)(B), \
6430 (__v4sf)_mm_setzero_ps(), \
6431 (__mmask8)(U), (int)(I), \
6432 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006433
Craig Topper8c18e112016-05-17 04:41:50 +00006434#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6435 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6436 (__v4sf)(__m128)(B), \
6437 (__v4sf)_mm_setzero_ps(), \
6438 (__mmask8)(U), (int)(I), \
6439 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006440
Craig Topper8c18e112016-05-17 04:41:50 +00006441#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6442 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6443 (__v8df)(__m512d)(B), \
6444 (__v8df)_mm512_undefined_pd(), \
6445 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006446
Craig Topper8c18e112016-05-17 04:41:50 +00006447#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6448 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6449 (__v8df)(__m512d)(B), \
6450 (__v8df)(__m512d)(W), \
6451 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006452
Craig Topper8c18e112016-05-17 04:41:50 +00006453#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6454 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6455 (__v8df)(__m512d)(B), \
6456 (__v8df)_mm512_setzero_pd(), \
6457 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006458
6459static __inline__ __m512d __DEFAULT_FN_ATTRS
6460_mm512_scalef_pd (__m512d __A, __m512d __B)
6461{
6462 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6463 (__v8df) __B,
6464 (__v8df)
6465 _mm512_undefined_pd (),
6466 (__mmask8) -1,
6467 _MM_FROUND_CUR_DIRECTION);
6468}
6469
6470static __inline__ __m512d __DEFAULT_FN_ATTRS
6471_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6472{
6473 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6474 (__v8df) __B,
6475 (__v8df) __W,
6476 (__mmask8) __U,
6477 _MM_FROUND_CUR_DIRECTION);
6478}
6479
6480static __inline__ __m512d __DEFAULT_FN_ATTRS
6481_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6482{
6483 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6484 (__v8df) __B,
6485 (__v8df)
6486 _mm512_setzero_pd (),
6487 (__mmask8) __U,
6488 _MM_FROUND_CUR_DIRECTION);
6489}
6490
Craig Topper8c18e112016-05-17 04:41:50 +00006491#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6492 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6493 (__v16sf)(__m512)(B), \
6494 (__v16sf)_mm512_undefined_ps(), \
6495 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006496
Craig Topper8c18e112016-05-17 04:41:50 +00006497#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6498 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6499 (__v16sf)(__m512)(B), \
6500 (__v16sf)(__m512)(W), \
6501 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006502
Craig Topper8c18e112016-05-17 04:41:50 +00006503#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6504 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6505 (__v16sf)(__m512)(B), \
6506 (__v16sf)_mm512_setzero_ps(), \
6507 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006508
6509static __inline__ __m512 __DEFAULT_FN_ATTRS
6510_mm512_scalef_ps (__m512 __A, __m512 __B)
6511{
6512 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6513 (__v16sf) __B,
6514 (__v16sf)
6515 _mm512_undefined_ps (),
6516 (__mmask16) -1,
6517 _MM_FROUND_CUR_DIRECTION);
6518}
6519
6520static __inline__ __m512 __DEFAULT_FN_ATTRS
6521_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6522{
6523 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6524 (__v16sf) __B,
6525 (__v16sf) __W,
6526 (__mmask16) __U,
6527 _MM_FROUND_CUR_DIRECTION);
6528}
6529
6530static __inline__ __m512 __DEFAULT_FN_ATTRS
6531_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6532{
6533 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6534 (__v16sf) __B,
6535 (__v16sf)
6536 _mm512_setzero_ps (),
6537 (__mmask16) __U,
6538 _MM_FROUND_CUR_DIRECTION);
6539}
6540
Craig Topper8c18e112016-05-17 04:41:50 +00006541#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6542 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6543 (__v2df)(__m128d)(B), \
6544 (__v2df)_mm_setzero_pd(), \
6545 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006546
6547static __inline__ __m128d __DEFAULT_FN_ATTRS
6548_mm_scalef_sd (__m128d __A, __m128d __B)
6549{
6550 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6551 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6552 (__mmask8) -1,
6553 _MM_FROUND_CUR_DIRECTION);
6554}
6555
6556static __inline__ __m128d __DEFAULT_FN_ATTRS
6557_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6558{
6559 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6560 (__v2df) __B,
6561 (__v2df) __W,
6562 (__mmask8) __U,
6563 _MM_FROUND_CUR_DIRECTION);
6564}
6565
Craig Topper8c18e112016-05-17 04:41:50 +00006566#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6567 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6568 (__v2df)(__m128d)(B), \
6569 (__v2df)(__m128d)(W), \
6570 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006571
6572static __inline__ __m128d __DEFAULT_FN_ATTRS
6573_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
6574{
6575 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6576 (__v2df) __B,
6577 (__v2df) _mm_setzero_pd (),
6578 (__mmask8) __U,
6579 _MM_FROUND_CUR_DIRECTION);
6580}
6581
Craig Topper8c18e112016-05-17 04:41:50 +00006582#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6583 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6584 (__v2df)(__m128d)(B), \
6585 (__v2df)_mm_setzero_pd(), \
6586 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006587
Craig Topper8c18e112016-05-17 04:41:50 +00006588#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6589 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6590 (__v4sf)(__m128)(B), \
6591 (__v4sf)_mm_setzero_ps(), \
6592 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006593
6594static __inline__ __m128 __DEFAULT_FN_ATTRS
6595_mm_scalef_ss (__m128 __A, __m128 __B)
6596{
6597 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6598 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6599 (__mmask8) -1,
6600 _MM_FROUND_CUR_DIRECTION);
6601}
6602
6603static __inline__ __m128 __DEFAULT_FN_ATTRS
6604_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6605{
6606 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6607 (__v4sf) __B,
6608 (__v4sf) __W,
6609 (__mmask8) __U,
6610 _MM_FROUND_CUR_DIRECTION);
6611}
6612
Craig Topper8c18e112016-05-17 04:41:50 +00006613#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6614 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6615 (__v4sf)(__m128)(B), \
6616 (__v4sf)(__m128)(W), \
6617 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006618
6619static __inline__ __m128 __DEFAULT_FN_ATTRS
6620_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
6621{
6622 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6623 (__v4sf) __B,
6624 (__v4sf) _mm_setzero_ps (),
6625 (__mmask8) __U,
6626 _MM_FROUND_CUR_DIRECTION);
6627}
6628
Craig Topper8c18e112016-05-17 04:41:50 +00006629#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6630 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6631 (__v4sf)(__m128)(B), \
6632 (__v4sf)_mm_setzero_ps(), \
6633 (__mmask8)(U), \
6634 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006635
Craig Topper79d05c92016-05-15 20:10:06 +00006636#define _mm512_srai_epi32(A, B) __extension__ ({ \
6637 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6638 (__v16si)_mm512_setzero_si512(), \
6639 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006640
Craig Topper8c18e112016-05-17 04:41:50 +00006641#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6642 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6643 (__v16si)(__m512i)(W), \
6644 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006645
Craig Topper8c18e112016-05-17 04:41:50 +00006646#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6647 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6648 (__v16si)_mm512_setzero_si512(), \
6649 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006650
Craig Topper8c18e112016-05-17 04:41:50 +00006651#define _mm512_srai_epi64(A, B) __extension__ ({ \
6652 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6653 (__v8di)_mm512_setzero_si512(), \
6654 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006655
Craig Topper8c18e112016-05-17 04:41:50 +00006656#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6657 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6658 (__v8di)(__m512i)(W), \
6659 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006660
Craig Topper8c18e112016-05-17 04:41:50 +00006661#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6662 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6663 (__v8di)_mm512_setzero_si512(), \
6664 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006665
Craig Topper8c18e112016-05-17 04:41:50 +00006666#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6667 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6668 (__v16sf)(__m512)(B), (int)(imm), \
6669 (__v16sf)_mm512_undefined_ps(), \
6670 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006671
Craig Topper8c18e112016-05-17 04:41:50 +00006672#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6673 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6674 (__v16sf)(__m512)(B), (int)(imm), \
6675 (__v16sf)(__m512)(W), \
6676 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006677
Craig Topper8c18e112016-05-17 04:41:50 +00006678#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6679 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6680 (__v16sf)(__m512)(B), (int)(imm), \
6681 (__v16sf)_mm512_setzero_ps(), \
6682 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006683
Craig Topper8c18e112016-05-17 04:41:50 +00006684#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6685 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6686 (__v8df)(__m512d)(B), (int)(imm), \
6687 (__v8df)_mm512_undefined_pd(), \
6688 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006689
Craig Topper8c18e112016-05-17 04:41:50 +00006690#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6691 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6692 (__v8df)(__m512d)(B), (int)(imm), \
6693 (__v8df)(__m512d)(W), \
6694 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006695
Craig Topper8c18e112016-05-17 04:41:50 +00006696#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6697 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6698 (__v8df)(__m512d)(B), (int)(imm), \
6699 (__v8df)_mm512_setzero_pd(), \
6700 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006701
Craig Topper8c18e112016-05-17 04:41:50 +00006702#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6703 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6704 (__v16si)(__m512i)(B), (int)(imm), \
6705 (__v16si)_mm512_setzero_si512(), \
6706 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006707
Craig Topper8c18e112016-05-17 04:41:50 +00006708#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6709 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6710 (__v16si)(__m512i)(B), (int)(imm), \
6711 (__v16si)(__m512i)(W), \
6712 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006713
Craig Topper8c18e112016-05-17 04:41:50 +00006714#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6715 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6716 (__v16si)(__m512i)(B), (int)(imm), \
6717 (__v16si)_mm512_setzero_si512(), \
6718 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006719
Craig Topper8c18e112016-05-17 04:41:50 +00006720#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6721 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6722 (__v8di)(__m512i)(B), (int)(imm), \
6723 (__v8di)_mm512_setzero_si512(), \
6724 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006725
Craig Topper8c18e112016-05-17 04:41:50 +00006726#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6727 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6728 (__v8di)(__m512i)(B), (int)(imm), \
6729 (__v8di)(__m512i)(W), \
6730 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006731
Craig Topper8c18e112016-05-17 04:41:50 +00006732#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6733 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6734 (__v8di)(__m512i)(B), (int)(imm), \
6735 (__v8di)_mm512_setzero_si512(), \
6736 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006737
Craig Topper8c18e112016-05-17 04:41:50 +00006738#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6739 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6740 (__v8df)(__m512d)(V), (int)(imm), \
6741 (__v8df)_mm512_undefined_pd(), \
6742 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006743
Craig Topper8c18e112016-05-17 04:41:50 +00006744#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6745 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6746 (__v8df)(__m512d)(V), (int)(imm), \
6747 (__v8df)(__m512d)(W), \
6748 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006749
Craig Topper8c18e112016-05-17 04:41:50 +00006750#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6751 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6752 (__v8df)(__m512d)(V), (int)(imm), \
6753 (__v8df)_mm512_setzero_pd(), \
6754 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006755
Craig Topper8c18e112016-05-17 04:41:50 +00006756#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
6757 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6758 (__v16sf)(__m512)(V), (int)(imm), \
6759 (__v16sf)_mm512_undefined_ps(), \
6760 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006761
Craig Topper8c18e112016-05-17 04:41:50 +00006762#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
6763 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6764 (__v16sf)(__m512)(V), (int)(imm), \
6765 (__v16sf)(__m512)(W), \
6766 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006767
Craig Topper8c18e112016-05-17 04:41:50 +00006768#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
6769 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6770 (__v16sf)(__m512)(V), (int)(imm), \
6771 (__v16sf)_mm512_setzero_ps(), \
6772 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006773
Craig Topper8c18e112016-05-17 04:41:50 +00006774#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
6775 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6776 (__v2df)(__m128d)(A), \
6777 (__v2df)_mm_setzero_pd(), \
6778 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006779
6780static __inline__ __m128d __DEFAULT_FN_ATTRS
6781_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6782{
6783 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6784 (__v2df) __A,
6785 (__v2df) __W,
6786 (__mmask8) __U,
6787 _MM_FROUND_CUR_DIRECTION);
6788}
6789
Craig Topper8c18e112016-05-17 04:41:50 +00006790#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
6791 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6792 (__v2df)(__m128d)(A), \
6793 (__v2df)(__m128d)(W), \
6794 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006795
6796static __inline__ __m128d __DEFAULT_FN_ATTRS
6797_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
6798{
6799 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6800 (__v2df) __A,
6801 (__v2df) _mm_setzero_pd (),
6802 (__mmask8) __U,
6803 _MM_FROUND_CUR_DIRECTION);
6804}
6805
Craig Topper8c18e112016-05-17 04:41:50 +00006806#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
6807 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6808 (__v2df)(__m128d)(A), \
6809 (__v2df)_mm_setzero_pd(), \
6810 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006811
Craig Topper8c18e112016-05-17 04:41:50 +00006812#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
6813 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6814 (__v4sf)(__m128)(A), \
6815 (__v4sf)_mm_setzero_ps(), \
6816 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006817
6818static __inline__ __m128 __DEFAULT_FN_ATTRS
6819_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6820{
6821 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6822 (__v4sf) __A,
6823 (__v4sf) __W,
6824 (__mmask8) __U,
6825 _MM_FROUND_CUR_DIRECTION);
6826}
6827
Craig Topper8c18e112016-05-17 04:41:50 +00006828#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
6829 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6830 (__v4sf)(__m128)(A), \
6831 (__v4sf)(__m128)(W), (__mmask8)(U), \
6832 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006833
6834static __inline__ __m128 __DEFAULT_FN_ATTRS
6835_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
6836{
6837 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6838 (__v4sf) __B,
6839 (__v4sf) _mm_setzero_ps (),
6840 (__mmask8) __U,
6841 _MM_FROUND_CUR_DIRECTION);
6842}
6843
Craig Topper8c18e112016-05-17 04:41:50 +00006844#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
6845 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6846 (__v4sf)(__m128)(A), \
6847 (__v4sf)_mm_setzero_ps(), \
6848 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006849
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006850static __inline__ __m512 __DEFAULT_FN_ATTRS
6851_mm512_broadcast_f32x4 (__m128 __A)
6852{
6853 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6854 (__v16sf)
6855 _mm512_undefined_ps (),
6856 (__mmask16) -1);
6857}
6858
6859static __inline__ __m512 __DEFAULT_FN_ATTRS
6860_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6861{
6862 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6863 (__v16sf) __O,
6864 __M);
6865}
6866
6867static __inline__ __m512 __DEFAULT_FN_ATTRS
6868_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6869{
6870 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6871 (__v16sf)
6872 _mm512_setzero_ps (),
6873 __M);
6874}
6875
6876static __inline__ __m512d __DEFAULT_FN_ATTRS
6877_mm512_broadcast_f64x4 (__m256d __A)
6878{
6879 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6880 (__v8df)
6881 _mm512_undefined_pd (),
6882 (__mmask8) -1);
6883}
6884
6885static __inline__ __m512d __DEFAULT_FN_ATTRS
6886_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6887{
6888 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6889 (__v8df) __O,
6890 __M);
6891}
6892
6893static __inline__ __m512d __DEFAULT_FN_ATTRS
6894_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6895{
6896 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6897 (__v8df)
6898 _mm512_setzero_pd (),
6899 __M);
6900}
6901
6902static __inline__ __m512i __DEFAULT_FN_ATTRS
6903_mm512_broadcast_i32x4 (__m128i __A)
6904{
6905 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6906 (__v16si)
6907 _mm512_undefined_epi32 (),
6908 (__mmask16) -1);
6909}
6910
6911static __inline__ __m512i __DEFAULT_FN_ATTRS
6912_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
6913{
6914 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6915 (__v16si) __O,
6916 __M);
6917}
6918
6919static __inline__ __m512i __DEFAULT_FN_ATTRS
6920_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
6921{
6922 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6923 (__v16si)
6924 _mm512_setzero_si512 (),
6925 __M);
6926}
6927
6928static __inline__ __m512i __DEFAULT_FN_ATTRS
6929_mm512_broadcast_i64x4 (__m256i __A)
6930{
6931 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6932 (__v8di)
6933 _mm512_undefined_epi32 (),
6934 (__mmask8) -1);
6935}
6936
6937static __inline__ __m512i __DEFAULT_FN_ATTRS
6938_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
6939{
6940 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6941 (__v8di) __O,
6942 __M);
6943}
6944
6945static __inline__ __m512i __DEFAULT_FN_ATTRS
6946_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
6947{
6948 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6949 (__v8di)
6950 _mm512_setzero_si512 (),
6951 __M);
6952}
6953
6954static __inline__ __m512d __DEFAULT_FN_ATTRS
6955_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
6956{
6957 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6958 (__v8df) __O, __M);
6959}
6960
6961static __inline__ __m512d __DEFAULT_FN_ATTRS
6962_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6963{
6964 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6965 (__v8df)
6966 _mm512_setzero_pd (),
6967 __M);
6968}
6969
6970static __inline__ __m512 __DEFAULT_FN_ATTRS
6971_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
6972{
6973 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6974 (__v16sf) __O, __M);
6975}
6976
6977static __inline__ __m512 __DEFAULT_FN_ATTRS
6978_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
6979{
6980 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6981 (__v16sf)
6982 _mm512_setzero_ps (),
6983 __M);
6984}
6985
Michael Zuckermane1680612016-04-13 15:02:04 +00006986static __inline__ __m128i __DEFAULT_FN_ATTRS
6987_mm512_cvtsepi32_epi8 (__m512i __A)
6988{
6989 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6990 (__v16qi) _mm_undefined_si128 (),
6991 (__mmask16) -1);
6992}
6993
6994static __inline__ __m128i __DEFAULT_FN_ATTRS
6995_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6996{
6997 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6998 (__v16qi) __O, __M);
6999}
7000
7001static __inline__ __m128i __DEFAULT_FN_ATTRS
7002_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7003{
7004 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7005 (__v16qi) _mm_setzero_si128 (),
7006 __M);
7007}
7008
7009static __inline__ void __DEFAULT_FN_ATTRS
7010_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7011{
7012 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7013}
7014
7015static __inline__ __m256i __DEFAULT_FN_ATTRS
7016_mm512_cvtsepi32_epi16 (__m512i __A)
7017{
7018 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7019 (__v16hi) _mm256_undefined_si256 (),
7020 (__mmask16) -1);
7021}
7022
7023static __inline__ __m256i __DEFAULT_FN_ATTRS
7024_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7025{
7026 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7027 (__v16hi) __O, __M);
7028}
7029
7030static __inline__ __m256i __DEFAULT_FN_ATTRS
7031_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7032{
7033 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7034 (__v16hi) _mm256_setzero_si256 (),
7035 __M);
7036}
7037
7038static __inline__ void __DEFAULT_FN_ATTRS
7039_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7040{
7041 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7042}
7043
7044static __inline__ __m128i __DEFAULT_FN_ATTRS
7045_mm512_cvtsepi64_epi8 (__m512i __A)
7046{
7047 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7048 (__v16qi) _mm_undefined_si128 (),
7049 (__mmask8) -1);
7050}
7051
7052static __inline__ __m128i __DEFAULT_FN_ATTRS
7053_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7054{
7055 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7056 (__v16qi) __O, __M);
7057}
7058
7059static __inline__ __m128i __DEFAULT_FN_ATTRS
7060_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7061{
7062 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7063 (__v16qi) _mm_setzero_si128 (),
7064 __M);
7065}
7066
7067static __inline__ void __DEFAULT_FN_ATTRS
7068_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7069{
7070 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7071}
7072
7073static __inline__ __m256i __DEFAULT_FN_ATTRS
7074_mm512_cvtsepi64_epi32 (__m512i __A)
7075{
7076 __v8si __O;
7077 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7078 (__v8si) _mm256_undefined_si256 (),
7079 (__mmask8) -1);
7080}
7081
7082static __inline__ __m256i __DEFAULT_FN_ATTRS
7083_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7084{
7085 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7086 (__v8si) __O, __M);
7087}
7088
7089static __inline__ __m256i __DEFAULT_FN_ATTRS
7090_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7091{
7092 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7093 (__v8si) _mm256_setzero_si256 (),
7094 __M);
7095}
7096
7097static __inline__ void __DEFAULT_FN_ATTRS
7098_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7099{
7100 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7101}
7102
7103static __inline__ __m128i __DEFAULT_FN_ATTRS
7104_mm512_cvtsepi64_epi16 (__m512i __A)
7105{
7106 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7107 (__v8hi) _mm_undefined_si128 (),
7108 (__mmask8) -1);
7109}
7110
7111static __inline__ __m128i __DEFAULT_FN_ATTRS
7112_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7113{
7114 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7115 (__v8hi) __O, __M);
7116}
7117
7118static __inline__ __m128i __DEFAULT_FN_ATTRS
7119_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7120{
7121 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7122 (__v8hi) _mm_setzero_si128 (),
7123 __M);
7124}
7125
7126static __inline__ void __DEFAULT_FN_ATTRS
7127_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7128{
7129 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7130}
7131
Michael Zuckermand8715312016-04-14 06:48:09 +00007132static __inline__ __m128i __DEFAULT_FN_ATTRS
7133_mm512_cvtusepi32_epi8 (__m512i __A)
7134{
7135 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7136 (__v16qi) _mm_undefined_si128 (),
7137 (__mmask16) -1);
7138}
7139
7140static __inline__ __m128i __DEFAULT_FN_ATTRS
7141_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7142{
7143 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7144 (__v16qi) __O,
7145 __M);
7146}
7147
7148static __inline__ __m128i __DEFAULT_FN_ATTRS
7149_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7150{
7151 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7152 (__v16qi) _mm_setzero_si128 (),
7153 __M);
7154}
7155
7156static __inline__ void __DEFAULT_FN_ATTRS
7157_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7158{
7159 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7160}
7161
7162static __inline__ __m256i __DEFAULT_FN_ATTRS
7163_mm512_cvtusepi32_epi16 (__m512i __A)
7164{
7165 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7166 (__v16hi) _mm256_undefined_si256 (),
7167 (__mmask16) -1);
7168}
7169
7170static __inline__ __m256i __DEFAULT_FN_ATTRS
7171_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7172{
7173 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7174 (__v16hi) __O,
7175 __M);
7176}
7177
7178static __inline__ __m256i __DEFAULT_FN_ATTRS
7179_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7180{
7181 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7182 (__v16hi) _mm256_setzero_si256 (),
7183 __M);
7184}
7185
7186static __inline__ void __DEFAULT_FN_ATTRS
7187_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7188{
7189 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7190}
7191
7192static __inline__ __m128i __DEFAULT_FN_ATTRS
7193_mm512_cvtusepi64_epi8 (__m512i __A)
7194{
7195 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7196 (__v16qi) _mm_undefined_si128 (),
7197 (__mmask8) -1);
7198}
7199
7200static __inline__ __m128i __DEFAULT_FN_ATTRS
7201_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7202{
7203 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7204 (__v16qi) __O,
7205 __M);
7206}
7207
7208static __inline__ __m128i __DEFAULT_FN_ATTRS
7209_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7210{
7211 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7212 (__v16qi) _mm_setzero_si128 (),
7213 __M);
7214}
7215
7216static __inline__ void __DEFAULT_FN_ATTRS
7217_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7218{
7219 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7220}
7221
7222static __inline__ __m256i __DEFAULT_FN_ATTRS
7223_mm512_cvtusepi64_epi32 (__m512i __A)
7224{
7225 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7226 (__v8si) _mm256_undefined_si256 (),
7227 (__mmask8) -1);
7228}
7229
7230static __inline__ __m256i __DEFAULT_FN_ATTRS
7231_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7232{
7233 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7234 (__v8si) __O, __M);
7235}
7236
7237static __inline__ __m256i __DEFAULT_FN_ATTRS
7238_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7239{
7240 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7241 (__v8si) _mm256_setzero_si256 (),
7242 __M);
7243}
7244
7245static __inline__ void __DEFAULT_FN_ATTRS
7246_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7247{
7248 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7249}
7250
7251static __inline__ __m128i __DEFAULT_FN_ATTRS
7252_mm512_cvtusepi64_epi16 (__m512i __A)
7253{
7254 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7255 (__v8hi) _mm_undefined_si128 (),
7256 (__mmask8) -1);
7257}
7258
7259static __inline__ __m128i __DEFAULT_FN_ATTRS
7260_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7261{
7262 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7263 (__v8hi) __O, __M);
7264}
7265
7266static __inline__ __m128i __DEFAULT_FN_ATTRS
7267_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7268{
7269 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7270 (__v8hi) _mm_setzero_si128 (),
7271 __M);
7272}
7273
7274static __inline__ void __DEFAULT_FN_ATTRS
7275_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7276{
7277 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7278}
7279
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007280static __inline__ __m128i __DEFAULT_FN_ATTRS
7281_mm512_cvtepi32_epi8 (__m512i __A)
7282{
7283 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7284 (__v16qi) _mm_undefined_si128 (),
7285 (__mmask16) -1);
7286}
7287
7288static __inline__ __m128i __DEFAULT_FN_ATTRS
7289_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7290{
7291 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7292 (__v16qi) __O, __M);
7293}
7294
7295static __inline__ __m128i __DEFAULT_FN_ATTRS
7296_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7297{
7298 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7299 (__v16qi) _mm_setzero_si128 (),
7300 __M);
7301}
7302
7303static __inline__ void __DEFAULT_FN_ATTRS
7304_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7305{
7306 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7307}
7308
7309static __inline__ __m256i __DEFAULT_FN_ATTRS
7310_mm512_cvtepi32_epi16 (__m512i __A)
7311{
7312 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7313 (__v16hi) _mm256_undefined_si256 (),
7314 (__mmask16) -1);
7315}
7316
7317static __inline__ __m256i __DEFAULT_FN_ATTRS
7318_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7319{
7320 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7321 (__v16hi) __O, __M);
7322}
7323
7324static __inline__ __m256i __DEFAULT_FN_ATTRS
7325_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7326{
7327 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7328 (__v16hi) _mm256_setzero_si256 (),
7329 __M);
7330}
7331
7332static __inline__ void __DEFAULT_FN_ATTRS
7333_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7334{
7335 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7336}
7337
7338static __inline__ __m128i __DEFAULT_FN_ATTRS
7339_mm512_cvtepi64_epi8 (__m512i __A)
7340{
7341 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7342 (__v16qi) _mm_undefined_si128 (),
7343 (__mmask8) -1);
7344}
7345
7346static __inline__ __m128i __DEFAULT_FN_ATTRS
7347_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7348{
7349 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7350 (__v16qi) __O, __M);
7351}
7352
7353static __inline__ __m128i __DEFAULT_FN_ATTRS
7354_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7355{
7356 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7357 (__v16qi) _mm_setzero_si128 (),
7358 __M);
7359}
7360
7361static __inline__ void __DEFAULT_FN_ATTRS
7362_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7363{
7364 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7365}
7366
7367static __inline__ __m256i __DEFAULT_FN_ATTRS
7368_mm512_cvtepi64_epi32 (__m512i __A)
7369{
7370 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7371 (__v8si) _mm256_undefined_si256 (),
7372 (__mmask8) -1);
7373}
7374
7375static __inline__ __m256i __DEFAULT_FN_ATTRS
7376_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7377{
7378 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7379 (__v8si) __O, __M);
7380}
7381
7382static __inline__ __m256i __DEFAULT_FN_ATTRS
7383_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7384{
7385 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7386 (__v8si) _mm256_setzero_si256 (),
7387 __M);
7388}
7389
7390static __inline__ void __DEFAULT_FN_ATTRS
7391_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7392{
7393 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7394}
7395
7396static __inline__ __m128i __DEFAULT_FN_ATTRS
7397_mm512_cvtepi64_epi16 (__m512i __A)
7398{
7399 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7400 (__v8hi) _mm_undefined_si128 (),
7401 (__mmask8) -1);
7402}
7403
7404static __inline__ __m128i __DEFAULT_FN_ATTRS
7405_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7406{
7407 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7408 (__v8hi) __O, __M);
7409}
7410
7411static __inline__ __m128i __DEFAULT_FN_ATTRS
7412_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7413{
7414 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7415 (__v8hi) _mm_setzero_si128 (),
7416 __M);
7417}
7418
7419static __inline__ void __DEFAULT_FN_ATTRS
7420_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7421{
7422 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7423}
7424
Craig Topper8c18e112016-05-17 04:41:50 +00007425#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7426 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7427 (__v4si)_mm_undefined_si128(), \
7428 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007429
Craig Topper8c18e112016-05-17 04:41:50 +00007430#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7431 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7432 (__v4si)(__m128i)(W), \
7433 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007434
Craig Topper8c18e112016-05-17 04:41:50 +00007435#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7436 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7437 (__v4si)_mm_setzero_si128(), \
7438 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007439
Craig Topper8c18e112016-05-17 04:41:50 +00007440#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7441 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7442 (__v4di)_mm256_undefined_si256(), \
7443 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007444
Craig Topper8c18e112016-05-17 04:41:50 +00007445#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7446 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7447 (__v4di)(__m256i)(W), \
7448 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007449
Craig Topper8c18e112016-05-17 04:41:50 +00007450#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7451 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7452 (__v4di)_mm256_setzero_si256(), \
7453 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007454
Craig Topper8c18e112016-05-17 04:41:50 +00007455#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7456 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7457 (__v4df)(__m256d)(B), (int)(imm), \
7458 (__v8df)_mm512_undefined_pd(), \
7459 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007460
Craig Topper8c18e112016-05-17 04:41:50 +00007461#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7462 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7463 (__v4df)(__m256d)(B), (int)(imm), \
7464 (__v8df)(__m512d)(W), \
7465 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007466
Craig Topper8c18e112016-05-17 04:41:50 +00007467#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7468 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7469 (__v4df)(__m256d)(B), (int)(imm), \
7470 (__v8df)_mm512_setzero_pd(), \
7471 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007472
Craig Topper8c18e112016-05-17 04:41:50 +00007473#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7474 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7475 (__v4di)(__m256i)(B), (int)(imm), \
7476 (__v8di)_mm512_setzero_si512(), \
7477 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007478
Craig Topper8c18e112016-05-17 04:41:50 +00007479#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7480 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7481 (__v4di)(__m256i)(B), (int)(imm), \
7482 (__v8di)(__m512i)(W), \
7483 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007484
Craig Topper8c18e112016-05-17 04:41:50 +00007485#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7486 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7487 (__v4di)(__m256i)(B), (int)(imm), \
7488 (__v8di)_mm512_setzero_si512(), \
7489 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007490
Craig Topper8c18e112016-05-17 04:41:50 +00007491#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7492 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7493 (__v4sf)(__m128)(B), (int)(imm), \
7494 (__v16sf)_mm512_undefined_ps(), \
7495 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007496
Craig Topper8c18e112016-05-17 04:41:50 +00007497#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7498 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7499 (__v4sf)(__m128)(B), (int)(imm), \
7500 (__v16sf)(__m512)(W), \
7501 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007502
Craig Topper8c18e112016-05-17 04:41:50 +00007503#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7504 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7505 (__v4sf)(__m128)(B), (int)(imm), \
7506 (__v16sf)_mm512_setzero_ps(), \
7507 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007508
Craig Topper8c18e112016-05-17 04:41:50 +00007509#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7510 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7511 (__v4si)(__m128i)(B), (int)(imm), \
7512 (__v16si)_mm512_setzero_si512(), \
7513 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007514
Craig Topper8c18e112016-05-17 04:41:50 +00007515#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7516 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7517 (__v4si)(__m128i)(B), (int)(imm), \
7518 (__v16si)(__m512i)(W), \
7519 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007520
Craig Topper8c18e112016-05-17 04:41:50 +00007521#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7522 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7523 (__v4si)(__m128i)(B), (int)(imm), \
7524 (__v16si)_mm512_setzero_si512(), \
7525 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007526
Craig Topper8c18e112016-05-17 04:41:50 +00007527#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7528 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7529 (int)(((C)<<2) | (B)), \
7530 (__v8df)_mm512_undefined_pd(), \
7531 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007532
Craig Topper8c18e112016-05-17 04:41:50 +00007533#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7534 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7535 (int)(((C)<<2) | (B)), \
7536 (__v8df)(__m512d)(W), \
7537 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007538
Craig Topper8c18e112016-05-17 04:41:50 +00007539#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7540 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7541 (int)(((C)<<2) | (B)), \
7542 (__v8df)_mm512_setzero_pd(), \
7543 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007544
Craig Topper8c18e112016-05-17 04:41:50 +00007545#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7546 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7547 (int)(((C)<<2) | (B)), \
7548 (__v8df)_mm512_setzero_pd(), \
7549 (__mmask8)-1, \
7550 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007551
Craig Topper8c18e112016-05-17 04:41:50 +00007552#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7553 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7554 (int)(((C)<<2) | (B)), \
7555 (__v8df)(__m512d)(W), \
7556 (__mmask8)(U), \
7557 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007558
Craig Topper8c18e112016-05-17 04:41:50 +00007559#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7560 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7561 (int)(((C)<<2) | (B)), \
7562 (__v8df)_mm512_setzero_pd(), \
7563 (__mmask8)(U), \
7564 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007565
Craig Topper8c18e112016-05-17 04:41:50 +00007566#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7567 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7568 (int)(((C)<<2) | (B)), \
7569 (__v16sf)_mm512_undefined_ps(), \
7570 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007571
Craig Topper8c18e112016-05-17 04:41:50 +00007572#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7573 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7574 (int)(((C)<<2) | (B)), \
7575 (__v16sf)(__m512)(W), \
7576 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007577
Craig Topper8c18e112016-05-17 04:41:50 +00007578#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7579 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7580 (int)(((C)<<2) | (B)), \
7581 (__v16sf)_mm512_setzero_ps(), \
7582 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007583
Craig Topper8c18e112016-05-17 04:41:50 +00007584#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7585 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7586 (int)(((C)<<2)|(B)), \
7587 (__v16sf)_mm512_undefined_ps(), \
7588 (__mmask16)-1, \
7589 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007590
Craig Topper8c18e112016-05-17 04:41:50 +00007591#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7592 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7593 (int)(((C)<<2)|(B)), \
7594 (__v16sf)(__m512)(W), \
7595 (__mmask16)(U), \
7596 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007597
Craig Topper8c18e112016-05-17 04:41:50 +00007598#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7599 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7600 (int)(((C)<<2)|(B)), \
7601 (__v16sf)_mm512_setzero_ps(), \
7602 (__mmask16)(U), \
7603 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007604
Craig Topper8c18e112016-05-17 04:41:50 +00007605#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7606 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7607 (__v8df)_mm512_undefined_pd(), \
7608 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007609
Craig Topper8c18e112016-05-17 04:41:50 +00007610#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7611 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7612 (__v8df)(__m512d)(W), \
7613 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007614
Craig Topper8c18e112016-05-17 04:41:50 +00007615#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7616 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7617 (__v8df)_mm512_setzero_pd(), \
7618 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007619
7620static __inline__ __m512d __DEFAULT_FN_ATTRS
7621_mm512_getexp_pd (__m512d __A)
7622{
7623 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7624 (__v8df) _mm512_undefined_pd (),
7625 (__mmask8) -1,
7626 _MM_FROUND_CUR_DIRECTION);
7627}
7628
7629static __inline__ __m512d __DEFAULT_FN_ATTRS
7630_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7631{
7632 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7633 (__v8df) __W,
7634 (__mmask8) __U,
7635 _MM_FROUND_CUR_DIRECTION);
7636}
7637
7638static __inline__ __m512d __DEFAULT_FN_ATTRS
7639_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7640{
7641 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7642 (__v8df) _mm512_setzero_pd (),
7643 (__mmask8) __U,
7644 _MM_FROUND_CUR_DIRECTION);
7645}
7646
Craig Topper8c18e112016-05-17 04:41:50 +00007647#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7648 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7649 (__v16sf)_mm512_undefined_ps(), \
7650 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007651
Craig Topper8c18e112016-05-17 04:41:50 +00007652#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7653 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7654 (__v16sf)(__m512)(W), \
7655 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007656
Craig Topper8c18e112016-05-17 04:41:50 +00007657#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7658 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7659 (__v16sf)_mm512_setzero_ps(), \
7660 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007661
7662static __inline__ __m512 __DEFAULT_FN_ATTRS
7663_mm512_getexp_ps (__m512 __A)
7664{
7665 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7666 (__v16sf) _mm512_undefined_ps (),
7667 (__mmask16) -1,
7668 _MM_FROUND_CUR_DIRECTION);
7669}
7670
7671static __inline__ __m512 __DEFAULT_FN_ATTRS
7672_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7673{
7674 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7675 (__v16sf) __W,
7676 (__mmask16) __U,
7677 _MM_FROUND_CUR_DIRECTION);
7678}
7679
7680static __inline__ __m512 __DEFAULT_FN_ATTRS
7681_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7682{
7683 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7684 (__v16sf) _mm512_setzero_ps (),
7685 (__mmask16) __U,
7686 _MM_FROUND_CUR_DIRECTION);
7687}
7688
Craig Topper8c18e112016-05-17 04:41:50 +00007689#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7690 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7691 (float const *)(addr), \
7692 (__v8di)(__m512i)(index), (__mmask8)-1, \
7693 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007694
7695#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7696 __addr, __scale) __extension__({\
7697__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7698 __addr,(__v8di) __index, __mask, __scale);\
7699})
7700
Craig Topper8c18e112016-05-17 04:41:50 +00007701#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7702 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7703 (int const *)(addr), \
7704 (__v8di)(__m512i)(index), \
7705 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007706
Craig Topper8c18e112016-05-17 04:41:50 +00007707#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7708 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7709 (int const *)(addr), \
7710 (__v8di)(__m512i)(index), \
7711 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007712
Craig Topper8c18e112016-05-17 04:41:50 +00007713#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7714 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7715 (double const *)(addr), \
7716 (__v8di)(__m512i)(index), (__mmask8)-1, \
7717 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007718
Craig Topper8c18e112016-05-17 04:41:50 +00007719#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7720 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7721 (double const *)(addr), \
7722 (__v8di)(__m512i)(index), \
7723 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007724
Craig Topper8c18e112016-05-17 04:41:50 +00007725#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7726 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7727 (long long const *)(addr), \
7728 (__v8di)(__m512i)(index), (__mmask8)-1, \
7729 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007730
Craig Topper8c18e112016-05-17 04:41:50 +00007731#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7732 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7733 (long long const *)(addr), \
7734 (__v8di)(__m512i)(index), \
7735 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007736
Craig Topper8c18e112016-05-17 04:41:50 +00007737#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7738 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7739 (float const *)(addr), \
7740 (__v16sf)(__m512)(index), \
7741 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007742
Craig Topper8c18e112016-05-17 04:41:50 +00007743#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7744 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7745 (float const *)(addr), \
7746 (__v16sf)(__m512)(index), \
7747 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007748
Craig Topper8c18e112016-05-17 04:41:50 +00007749#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7750 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7751 (int const *)(addr), \
7752 (__v16si)(__m512i)(index), \
7753 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007754
Craig Topper8c18e112016-05-17 04:41:50 +00007755#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7756 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
7757 (int const *)(addr), \
7758 (__v16si)(__m512i)(index), \
7759 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007760
Craig Topper8c18e112016-05-17 04:41:50 +00007761#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
7762 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
7763 (double const *)(addr), \
7764 (__v8si)(__m256i)(index), (__mmask8)-1, \
7765 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007766
Craig Topper8c18e112016-05-17 04:41:50 +00007767#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7768 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
7769 (double const *)(addr), \
7770 (__v8si)(__m256i)(index), \
7771 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007772
Craig Topper8c18e112016-05-17 04:41:50 +00007773#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
7774 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
7775 (long long const *)(addr), \
7776 (__v8si)(__m256i)(index), (__mmask8)-1, \
7777 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007778
Craig Topper8c18e112016-05-17 04:41:50 +00007779#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7780 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
7781 (long long const *)(addr), \
7782 (__v8si)(__m256i)(index), \
7783 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007784
Craig Topper8c18e112016-05-17 04:41:50 +00007785#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
7786 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
7787 (__v8di)(__m512i)(index), \
7788 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007789
Craig Topper8c18e112016-05-17 04:41:50 +00007790#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7791 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
7792 (__v8di)(__m512i)(index), \
7793 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007794
Craig Topper8c18e112016-05-17 04:41:50 +00007795#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
7796 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
7797 (__v8di)(__m512i)(index), \
7798 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007799
Craig Topper8c18e112016-05-17 04:41:50 +00007800#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7801 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
7802 (__v8di)(__m512i)(index), \
7803 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007804
Craig Topper8c18e112016-05-17 04:41:50 +00007805#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
7806 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
7807 (__v8di)(__m512i)(index), \
7808 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007809
Craig Topper8c18e112016-05-17 04:41:50 +00007810#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7811 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
7812 (__v8di)(__m512i)(index), \
7813 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007814
Craig Topper8c18e112016-05-17 04:41:50 +00007815#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
7816 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
7817 (__v8di)(__m512i)(index), \
7818 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007819
Craig Topper8c18e112016-05-17 04:41:50 +00007820#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7821 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
7822 (__v8di)(__m512i)(index), \
7823 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007824
Craig Topper8c18e112016-05-17 04:41:50 +00007825#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
7826 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
7827 (__v16si)(__m512i)(index), \
7828 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007829
Craig Topper8c18e112016-05-17 04:41:50 +00007830#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7831 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
7832 (__v16si)(__m512i)(index), \
7833 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007834
Craig Topper8c18e112016-05-17 04:41:50 +00007835#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
7836 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
7837 (__v16si)(__m512i)(index), \
7838 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007839
Craig Topper8c18e112016-05-17 04:41:50 +00007840#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7841 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
7842 (__v16si)(__m512i)(index), \
7843 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007844
Craig Topper8c18e112016-05-17 04:41:50 +00007845#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
7846 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
7847 (__v8si)(__m256i)(index), \
7848 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007849
Craig Topper8c18e112016-05-17 04:41:50 +00007850#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7851 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
7852 (__v8si)(__m256i)(index), \
7853 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007854
Craig Topper8c18e112016-05-17 04:41:50 +00007855#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
7856 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
7857 (__v8si)(__m256i)(index), \
7858 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007859
Craig Topper8c18e112016-05-17 04:41:50 +00007860#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7861 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
7862 (__v8si)(__m256i)(index), \
7863 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007864
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007865static __inline__ __m128 __DEFAULT_FN_ATTRS
7866_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7867{
7868 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7869 (__v4sf) __B,
7870 (__v4sf) __W,
7871 (__mmask8) __U,
7872 _MM_FROUND_CUR_DIRECTION);
7873}
7874
Craig Topper8c18e112016-05-17 04:41:50 +00007875#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
7876 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7877 (__v4sf)(__m128)(B), \
7878 (__v4sf)(__m128)(W), (__mmask8)(U), \
7879 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007880
7881static __inline__ __m128 __DEFAULT_FN_ATTRS
7882_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7883{
7884 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7885 (__v4sf) __B,
7886 (__v4sf) __C,
7887 (__mmask8) __U,
7888 _MM_FROUND_CUR_DIRECTION);
7889}
7890
Craig Topper8c18e112016-05-17 04:41:50 +00007891#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
7892 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
7893 (__v4sf)(__m128)(B), \
7894 (__v4sf)(__m128)(C), (__mmask8)(U), \
7895 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007896
7897static __inline__ __m128 __DEFAULT_FN_ATTRS
7898_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7899{
7900 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7901 (__v4sf) __X,
7902 (__v4sf) __Y,
7903 (__mmask8) __U,
7904 _MM_FROUND_CUR_DIRECTION);
7905}
7906
Craig Topper8c18e112016-05-17 04:41:50 +00007907#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
7908 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
7909 (__v4sf)(__m128)(X), \
7910 (__v4sf)(__m128)(Y), (__mmask8)(U), \
7911 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007912
7913static __inline__ __m128 __DEFAULT_FN_ATTRS
7914_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7915{
7916 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00007917 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007918 (__v4sf) __W,
7919 (__mmask8) __U,
7920 _MM_FROUND_CUR_DIRECTION);
7921}
7922
Craig Topper8c18e112016-05-17 04:41:50 +00007923#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
7924 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7925 -(__v4sf)(__m128)(B), \
7926 (__v4sf)(__m128)(W), (__mmask8)(U), \
7927 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007928
7929static __inline__ __m128 __DEFAULT_FN_ATTRS
7930_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7931{
7932 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7933 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00007934 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007935 (__mmask8) __U,
7936 _MM_FROUND_CUR_DIRECTION);
7937}
7938
Craig Topper8c18e112016-05-17 04:41:50 +00007939#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
7940 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
7941 (__v4sf)(__m128)(B), \
7942 -(__v4sf)(__m128)(C), (__mmask8)(U), \
7943 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007944
7945static __inline__ __m128 __DEFAULT_FN_ATTRS
7946_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7947{
7948 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7949 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00007950 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007951 (__mmask8) __U,
7952 _MM_FROUND_CUR_DIRECTION);
7953}
7954
Craig Topper8c18e112016-05-17 04:41:50 +00007955#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
7956 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
7957 (__v4sf)(__m128)(X), \
7958 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
7959 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007960
7961static __inline__ __m128 __DEFAULT_FN_ATTRS
7962_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7963{
Craig Topper9864c592016-05-15 20:10:03 +00007964 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007965 (__v4sf) __B,
7966 (__v4sf) __W,
7967 (__mmask8) __U,
7968 _MM_FROUND_CUR_DIRECTION);
7969}
7970
Craig Topper8c18e112016-05-17 04:41:50 +00007971#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
7972 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
7973 (__v4sf)(__m128)(B), \
7974 (__v4sf)(__m128)(W), (__mmask8)(U), \
7975 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007976
7977static __inline__ __m128 __DEFAULT_FN_ATTRS
7978_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7979{
Craig Topper9864c592016-05-15 20:10:03 +00007980 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007981 (__v4sf) __B,
7982 (__v4sf) __C,
7983 (__mmask8) __U,
7984 _MM_FROUND_CUR_DIRECTION);
7985}
7986
Craig Topper8c18e112016-05-17 04:41:50 +00007987#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
7988 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
7989 (__v4sf)(__m128)(B), \
7990 (__v4sf)(__m128)(C), (__mmask8)(U), \
7991 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007992
7993static __inline__ __m128 __DEFAULT_FN_ATTRS
7994_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7995{
Craig Topper9864c592016-05-15 20:10:03 +00007996 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007997 (__v4sf) __X,
7998 (__v4sf) __Y,
7999 (__mmask8) __U,
8000 _MM_FROUND_CUR_DIRECTION);
8001}
8002
Craig Topper8c18e112016-05-17 04:41:50 +00008003#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8004 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8005 (__v4sf)(__m128)(X), \
8006 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8007 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008008
8009static __inline__ __m128 __DEFAULT_FN_ATTRS
8010_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8011{
Craig Topper9864c592016-05-15 20:10:03 +00008012 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8013 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008014 (__v4sf) __W,
8015 (__mmask8) __U,
8016 _MM_FROUND_CUR_DIRECTION);
8017}
8018
Craig Topper8c18e112016-05-17 04:41:50 +00008019#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8020 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8021 -(__v4sf)(__m128)(B), \
8022 (__v4sf)(__m128)(W), (__mmask8)(U), \
8023 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008024
8025static __inline__ __m128 __DEFAULT_FN_ATTRS
8026_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8027{
Craig Topper9864c592016-05-15 20:10:03 +00008028 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008029 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008030 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008031 (__mmask8) __U,
8032 _MM_FROUND_CUR_DIRECTION);
8033}
8034
Craig Topper8c18e112016-05-17 04:41:50 +00008035#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8036 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8037 (__v4sf)(__m128)(B), \
8038 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8039 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008040
8041static __inline__ __m128 __DEFAULT_FN_ATTRS
8042_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8043{
Craig Topper9864c592016-05-15 20:10:03 +00008044 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008045 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008046 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008047 (__mmask8) __U,
8048 _MM_FROUND_CUR_DIRECTION);
8049}
8050
Craig Topper8c18e112016-05-17 04:41:50 +00008051#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8052 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8053 (__v4sf)(__m128)(X), \
8054 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8055 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008056
Craig Topper58187d32016-05-17 04:41:29 +00008057static __inline__ __m128d __DEFAULT_FN_ATTRS
8058_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008059{
Craig Topper58187d32016-05-17 04:41:29 +00008060 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008061 (__v2df) __B,
8062 (__v2df) __W,
8063 (__mmask8) __U,
8064 _MM_FROUND_CUR_DIRECTION);
8065}
8066
Craig Topper8c18e112016-05-17 04:41:50 +00008067#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8068 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8069 (__v2df)(__m128d)(B), \
8070 (__v2df)(__m128d)(W), (__mmask8)(U), \
8071 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008072
Craig Topper58187d32016-05-17 04:41:29 +00008073static __inline__ __m128d __DEFAULT_FN_ATTRS
8074_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008075{
Craig Topper58187d32016-05-17 04:41:29 +00008076 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008077 (__v2df) __B,
8078 (__v2df) __C,
8079 (__mmask8) __U,
8080 _MM_FROUND_CUR_DIRECTION);
8081}
8082
Craig Topper8c18e112016-05-17 04:41:50 +00008083#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8084 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8085 (__v2df)(__m128d)(B), \
8086 (__v2df)(__m128d)(C), (__mmask8)(U), \
8087 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008088
Craig Topper58187d32016-05-17 04:41:29 +00008089static __inline__ __m128d __DEFAULT_FN_ATTRS
8090_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008091{
Craig Topper58187d32016-05-17 04:41:29 +00008092 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008093 (__v2df) __X,
8094 (__v2df) __Y,
8095 (__mmask8) __U,
8096 _MM_FROUND_CUR_DIRECTION);
8097}
8098
Craig Topper8c18e112016-05-17 04:41:50 +00008099#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8100 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8101 (__v2df)(__m128d)(X), \
8102 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8103 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008104
Craig Topper58187d32016-05-17 04:41:29 +00008105static __inline__ __m128d __DEFAULT_FN_ATTRS
8106_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008107{
Craig Topper58187d32016-05-17 04:41:29 +00008108 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008109 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008110 (__v2df) __W,
8111 (__mmask8) __U,
8112 _MM_FROUND_CUR_DIRECTION);
8113}
8114
Craig Topper8c18e112016-05-17 04:41:50 +00008115#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8116 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8117 -(__v2df)(__m128d)(B), \
8118 (__v2df)(__m128d)(W), (__mmask8)(U), \
8119 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008120
Craig Topper58187d32016-05-17 04:41:29 +00008121static __inline__ __m128d __DEFAULT_FN_ATTRS
8122_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008123{
Craig Topper58187d32016-05-17 04:41:29 +00008124 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008125 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008126 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008127 (__mmask8) __U,
8128 _MM_FROUND_CUR_DIRECTION);
8129}
8130
Craig Topper8c18e112016-05-17 04:41:50 +00008131#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8132 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8133 (__v2df)(__m128d)(B), \
8134 -(__v2df)(__m128d)(C), \
8135 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008136
Craig Topper58187d32016-05-17 04:41:29 +00008137static __inline__ __m128d __DEFAULT_FN_ATTRS
8138_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008139{
Craig Topper58187d32016-05-17 04:41:29 +00008140 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008141 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008142 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008143 (__mmask8) __U,
8144 _MM_FROUND_CUR_DIRECTION);
8145}
8146
Craig Topper8c18e112016-05-17 04:41:50 +00008147#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8148 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8149 (__v2df)(__m128d)(X), \
8150 -(__v2df)(__m128d)(Y), \
8151 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008152
Craig Topper58187d32016-05-17 04:41:29 +00008153static __inline__ __m128d __DEFAULT_FN_ATTRS
8154_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008155{
Craig Topper58187d32016-05-17 04:41:29 +00008156 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008157 (__v2df) __B,
8158 (__v2df) __W,
8159 (__mmask8) __U,
8160 _MM_FROUND_CUR_DIRECTION);
8161}
8162
Craig Topper8c18e112016-05-17 04:41:50 +00008163#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8164 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8165 (__v2df)(__m128d)(B), \
8166 (__v2df)(__m128d)(W), (__mmask8)(U), \
8167 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008168
Craig Topper58187d32016-05-17 04:41:29 +00008169static __inline__ __m128d __DEFAULT_FN_ATTRS
8170_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008171{
Craig Topper58187d32016-05-17 04:41:29 +00008172 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008173 (__v2df) __B,
8174 (__v2df) __C,
8175 (__mmask8) __U,
8176 _MM_FROUND_CUR_DIRECTION);
8177}
8178
Craig Topper8c18e112016-05-17 04:41:50 +00008179#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8180 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8181 (__v2df)(__m128d)(B), \
8182 (__v2df)(__m128d)(C), (__mmask8)(U), \
8183 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008184
Craig Topper58187d32016-05-17 04:41:29 +00008185static __inline__ __m128d __DEFAULT_FN_ATTRS
8186_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008187{
Craig Topper58187d32016-05-17 04:41:29 +00008188 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008189 (__v2df) __X,
8190 (__v2df) __Y,
8191 (__mmask8) __U,
8192 _MM_FROUND_CUR_DIRECTION);
8193}
8194
Craig Topper8c18e112016-05-17 04:41:50 +00008195#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8196 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8197 (__v2df)(__m128d)(X), \
8198 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8199 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008200
Craig Topper58187d32016-05-17 04:41:29 +00008201static __inline__ __m128d __DEFAULT_FN_ATTRS
8202_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008203{
Craig Topper58187d32016-05-17 04:41:29 +00008204 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008205 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008206 (__v2df) __W,
8207 (__mmask8) __U,
8208 _MM_FROUND_CUR_DIRECTION);
8209}
8210
Craig Topper8c18e112016-05-17 04:41:50 +00008211#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8212 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8213 -(__v2df)(__m128d)(B), \
8214 (__v2df)(__m128d)(W), (__mmask8)(U), \
8215 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008216
Craig Topper58187d32016-05-17 04:41:29 +00008217static __inline__ __m128d __DEFAULT_FN_ATTRS
8218_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008219{
Craig Topper58187d32016-05-17 04:41:29 +00008220 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008221 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008222 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008223 (__mmask8) __U,
8224 _MM_FROUND_CUR_DIRECTION);
8225}
8226
Craig Topper8c18e112016-05-17 04:41:50 +00008227#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8228 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8229 (__v2df)(__m128d)(B), \
8230 -(__v2df)(__m128d)(C), \
8231 (__mmask8)(U), \
8232 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008233
Craig Topper58187d32016-05-17 04:41:29 +00008234static __inline__ __m128d __DEFAULT_FN_ATTRS
8235_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008236{
Craig Topper58187d32016-05-17 04:41:29 +00008237 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008238 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008239 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008240 (__mmask8) __U,
8241 _MM_FROUND_CUR_DIRECTION);
8242}
8243
Craig Topper8c18e112016-05-17 04:41:50 +00008244#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8245 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8246 (__v2df)(__m128d)(X), \
8247 -(__v2df)(__m128d)(Y), \
8248 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008249
Craig Topper8c18e112016-05-17 04:41:50 +00008250#define _mm512_permutex_pd(X, M) __extension__ ({ \
8251 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8252 (__v8df)_mm512_undefined_pd(), \
8253 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008254
Craig Topper8c18e112016-05-17 04:41:50 +00008255#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8256 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8257 (__v8df)(__m512d)(W), \
8258 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008259
Craig Topper8c18e112016-05-17 04:41:50 +00008260#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8261 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8262 (__v8df)_mm512_setzero_pd(), \
8263 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008264
Craig Topper8c18e112016-05-17 04:41:50 +00008265#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8266 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8267 (__v8di)_mm512_undefined_epi32(), \
8268 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008269
Craig Topper8c18e112016-05-17 04:41:50 +00008270#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8271 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8272 (__v8di)(__m512i)(W), \
8273 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008274
Craig Topper8c18e112016-05-17 04:41:50 +00008275#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8276 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8277 (__v8di)_mm512_setzero_si512(), \
8278 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008279
8280static __inline__ __m512d __DEFAULT_FN_ATTRS
8281_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8282{
8283 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8284 (__v8di) __X,
8285 (__v8df) _mm512_undefined_pd (),
8286 (__mmask8) -1);
8287}
8288
8289static __inline__ __m512d __DEFAULT_FN_ATTRS
8290_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8291{
8292 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8293 (__v8di) __X,
8294 (__v8df) __W,
8295 (__mmask8) __U);
8296}
8297
8298static __inline__ __m512d __DEFAULT_FN_ATTRS
8299_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8300{
8301 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8302 (__v8di) __X,
8303 (__v8df) _mm512_setzero_pd (),
8304 (__mmask8) __U);
8305}
8306
8307static __inline__ __m512i __DEFAULT_FN_ATTRS
8308_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8309{
8310 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8311 (__v8di) __X,
8312 (__v8di) _mm512_setzero_si512 (),
8313 __M);
8314}
8315
8316static __inline__ __m512i __DEFAULT_FN_ATTRS
8317_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8318{
8319 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8320 (__v8di) __X,
8321 (__v8di) _mm512_undefined_epi32 (),
8322 (__mmask8) -1);
8323}
8324
8325static __inline__ __m512i __DEFAULT_FN_ATTRS
8326_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8327 __m512i __Y)
8328{
8329 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8330 (__v8di) __X,
8331 (__v8di) __W,
8332 __M);
8333}
8334
8335static __inline__ __m512 __DEFAULT_FN_ATTRS
8336_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8337{
8338 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8339 (__v16si) __X,
8340 (__v16sf) _mm512_undefined_ps (),
8341 (__mmask16) -1);
8342}
8343
8344static __inline__ __m512 __DEFAULT_FN_ATTRS
8345_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8346{
8347 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8348 (__v16si) __X,
8349 (__v16sf) __W,
8350 (__mmask16) __U);
8351}
8352
8353static __inline__ __m512 __DEFAULT_FN_ATTRS
8354_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8355{
8356 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8357 (__v16si) __X,
8358 (__v16sf) _mm512_setzero_ps (),
8359 (__mmask16) __U);
8360}
8361
8362static __inline__ __m512i __DEFAULT_FN_ATTRS
8363_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8364{
8365 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8366 (__v16si) __X,
8367 (__v16si) _mm512_setzero_si512 (),
8368 __M);
8369}
8370
8371static __inline__ __m512i __DEFAULT_FN_ATTRS
8372_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8373{
8374 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8375 (__v16si) __X,
8376 (__v16si) _mm512_undefined_epi32 (),
8377 (__mmask16) -1);
8378}
8379
8380static __inline__ __m512i __DEFAULT_FN_ATTRS
8381_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8382 __m512i __Y)
8383{
8384 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8385 (__v16si) __X,
8386 (__v16si) __W,
8387 __M);
8388}
8389
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008390static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8391_mm512_kand (__mmask16 __A, __mmask16 __B)
8392{
8393 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8394}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008395
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008396static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8397_mm512_kandn (__mmask16 __A, __mmask16 __B)
8398{
8399 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8400}
8401
8402static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8403_mm512_kor (__mmask16 __A, __mmask16 __B)
8404{
8405 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8406}
8407
8408static __inline__ int __DEFAULT_FN_ATTRS
8409_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8410{
Craig Topper91f23d92016-05-16 01:09:16 +00008411 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008412}
8413
8414static __inline__ int __DEFAULT_FN_ATTRS
8415_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8416{
Craig Topper91f23d92016-05-16 01:09:16 +00008417 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008418}
8419
8420static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8421_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8422{
8423 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8424}
8425
8426static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8427_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8428{
8429 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8430}
8431
8432static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8433_mm512_kxor (__mmask16 __A, __mmask16 __B)
8434{
8435 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8436}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008437
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008438static __inline__ void __DEFAULT_FN_ATTRS
8439_mm512_stream_si512 (__m512i * __P, __m512i __A)
8440{
8441 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8442}
8443
8444static __inline__ __m512i __DEFAULT_FN_ATTRS
8445_mm512_stream_load_si512 (void *__P)
8446{
8447 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8448}
8449
8450static __inline__ void __DEFAULT_FN_ATTRS
8451_mm512_stream_pd (double *__P, __m512d __A)
8452{
8453 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8454}
8455
8456static __inline__ void __DEFAULT_FN_ATTRS
8457_mm512_stream_ps (float *__P, __m512 __A)
8458{
8459 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8460}
8461
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008462static __inline__ __m512d __DEFAULT_FN_ATTRS
8463_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8464{
8465 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8466 (__v8df) __W,
8467 (__mmask8) __U);
8468}
8469
8470static __inline__ __m512d __DEFAULT_FN_ATTRS
8471_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8472{
8473 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8474 (__v8df)
8475 _mm512_setzero_pd (),
8476 (__mmask8) __U);
8477}
8478
8479static __inline__ __m512i __DEFAULT_FN_ATTRS
8480_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8481{
8482 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8483 (__v8di) __W,
8484 (__mmask8) __U);
8485}
8486
8487static __inline__ __m512i __DEFAULT_FN_ATTRS
8488_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8489{
8490 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8491 (__v8di)
8492 _mm512_setzero_si512 (),
8493 (__mmask8) __U);
8494}
8495
8496static __inline__ __m512 __DEFAULT_FN_ATTRS
8497_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8498{
8499 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8500 (__v16sf) __W,
8501 (__mmask16) __U);
8502}
8503
8504static __inline__ __m512 __DEFAULT_FN_ATTRS
8505_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8506{
8507 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8508 (__v16sf)
8509 _mm512_setzero_ps (),
8510 (__mmask16) __U);
8511}
8512
8513static __inline__ __m512i __DEFAULT_FN_ATTRS
8514_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8515{
8516 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8517 (__v16si) __W,
8518 (__mmask16) __U);
8519}
8520
8521static __inline__ __m512i __DEFAULT_FN_ATTRS
8522_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8523{
8524 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8525 (__v16si)
8526 _mm512_setzero_si512 (),
8527 (__mmask16) __U);
8528}
8529
Craig Topper8c18e112016-05-17 04:41:50 +00008530#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8531 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8532 (__v4sf)(__m128)(Y), (int)(P), \
8533 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008534
Craig Topper8c18e112016-05-17 04:41:50 +00008535#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8536 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8537 (__v4sf)(__m128)(Y), (int)(P), \
8538 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008539
Craig Topper8c18e112016-05-17 04:41:50 +00008540#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8541 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8542 (__v4sf)(__m128)(Y), (int)(P), \
8543 (__mmask8)-1, \
8544 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008545
Craig Topper8c18e112016-05-17 04:41:50 +00008546#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8547 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8548 (__v4sf)(__m128)(Y), (int)(P), \
8549 (__mmask8)(M), \
8550 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008551
Craig Topper8c18e112016-05-17 04:41:50 +00008552#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8553 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8554 (__v2df)(__m128d)(Y), (int)(P), \
8555 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008556
Craig Topper8c18e112016-05-17 04:41:50 +00008557#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8558 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8559 (__v2df)(__m128d)(Y), (int)(P), \
8560 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008561
Craig Topper8c18e112016-05-17 04:41:50 +00008562#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8563 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8564 (__v2df)(__m128d)(Y), (int)(P), \
8565 (__mmask8)-1, \
8566 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008567
Craig Topper8c18e112016-05-17 04:41:50 +00008568#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8569 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8570 (__v2df)(__m128d)(Y), (int)(P), \
8571 (__mmask8)(M), \
8572 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008573
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008574static __inline__ __m512 __DEFAULT_FN_ATTRS
8575_mm512_movehdup_ps (__m512 __A)
8576{
8577 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8578 (__v16sf)
8579 _mm512_undefined_ps (),
8580 (__mmask16) -1);
8581}
8582
8583static __inline__ __m512 __DEFAULT_FN_ATTRS
8584_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8585{
8586 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8587 (__v16sf) __W,
8588 (__mmask16) __U);
8589}
8590
8591static __inline__ __m512 __DEFAULT_FN_ATTRS
8592_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8593{
8594 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8595 (__v16sf)
8596 _mm512_setzero_ps (),
8597 (__mmask16) __U);
8598}
8599
8600static __inline__ __m512 __DEFAULT_FN_ATTRS
8601_mm512_moveldup_ps (__m512 __A)
8602{
8603 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8604 (__v16sf)
8605 _mm512_undefined_ps (),
8606 (__mmask16) -1);
8607}
8608
8609static __inline__ __m512 __DEFAULT_FN_ATTRS
8610_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8611{
8612 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8613 (__v16sf) __W,
8614 (__mmask16) __U);
8615}
8616
8617static __inline__ __m512 __DEFAULT_FN_ATTRS
8618_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8619{
8620 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8621 (__v16sf)
8622 _mm512_setzero_ps (),
8623 (__mmask16) __U);
8624}
8625
Craig Topper8c18e112016-05-17 04:41:50 +00008626#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8627 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8628 (__v16si)_mm512_undefined_epi32(), \
8629 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008630
Craig Topper8c18e112016-05-17 04:41:50 +00008631#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8632 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8633 (__v16si)(__m512i)(W), \
8634 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008635
Craig Topper8c18e112016-05-17 04:41:50 +00008636#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8637 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8638 (__v16si)_mm512_setzero_si512(), \
8639 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008640
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008641static __inline__ __m512d __DEFAULT_FN_ATTRS
8642_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8643{
8644 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8645 (__v8df) __W,
8646 (__mmask8) __U);
8647}
8648
8649static __inline__ __m512d __DEFAULT_FN_ATTRS
8650_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8651{
8652 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8653 (__v8df) _mm512_setzero_pd (),
8654 (__mmask8) __U);
8655}
8656
8657static __inline__ __m512i __DEFAULT_FN_ATTRS
8658_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8659{
8660 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8661 (__v8di) __W,
8662 (__mmask8) __U);
8663}
8664
8665static __inline__ __m512i __DEFAULT_FN_ATTRS
8666_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8667{
8668 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8669 (__v8di) _mm512_setzero_pd (),
8670 (__mmask8) __U);
8671}
8672
8673static __inline__ __m512d __DEFAULT_FN_ATTRS
8674_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8675{
8676 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8677 (__v8df) __W,
8678 (__mmask8) __U);
8679}
8680
8681static __inline__ __m512d __DEFAULT_FN_ATTRS
8682_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8683{
8684 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8685 (__v8df) _mm512_setzero_pd(),
8686 (__mmask8) __U);
8687}
8688
8689static __inline__ __m512i __DEFAULT_FN_ATTRS
8690_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8691{
8692 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8693 (__v8di) __W,
8694 (__mmask8) __U);
8695}
8696
8697static __inline__ __m512i __DEFAULT_FN_ATTRS
8698_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8699{
8700 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8701 (__v8di) _mm512_setzero_pd(),
8702 (__mmask8) __U);
8703}
8704
8705static __inline__ __m512 __DEFAULT_FN_ATTRS
8706_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8707{
8708 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8709 (__v16sf) __W,
8710 (__mmask16) __U);
8711}
8712
8713static __inline__ __m512 __DEFAULT_FN_ATTRS
8714_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8715{
8716 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8717 (__v16sf) _mm512_setzero_ps(),
8718 (__mmask16) __U);
8719}
8720
8721static __inline__ __m512i __DEFAULT_FN_ATTRS
8722_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8723{
8724 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8725 (__v16si) __W,
8726 (__mmask16) __U);
8727}
8728
8729static __inline__ __m512i __DEFAULT_FN_ATTRS
8730_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8731{
8732 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8733 (__v16si) _mm512_setzero_ps(),
8734 (__mmask16) __U);
8735}
8736
8737static __inline__ __m512 __DEFAULT_FN_ATTRS
8738_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8739{
8740 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8741 (__v16sf) __W,
8742 (__mmask16) __U);
8743}
8744
8745static __inline__ __m512 __DEFAULT_FN_ATTRS
8746_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8747{
8748 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8749 (__v16sf) _mm512_setzero_ps(),
8750 (__mmask16) __U);
8751}
8752
8753static __inline__ __m512i __DEFAULT_FN_ATTRS
8754_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8755{
8756 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8757 (__v16si) __W,
8758 (__mmask16) __U);
8759}
8760
8761static __inline__ __m512i __DEFAULT_FN_ATTRS
8762_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8763{
8764 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8765 (__v16si) _mm512_setzero_ps(),
8766 (__mmask16) __U);
8767}
8768
Craig Topper8c18e112016-05-17 04:41:50 +00008769#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
8770 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8771 (__v8df)_mm512_undefined_pd(), \
8772 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008773
Craig Topper8c18e112016-05-17 04:41:50 +00008774#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
8775 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8776 (__v8df)(__m512d)(W), \
8777 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008778
Craig Topper8c18e112016-05-17 04:41:50 +00008779#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
8780 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8781 (__v8df)_mm512_setzero_pd(), \
8782 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008783
8784static __inline__ __m512d __DEFAULT_FN_ATTRS
8785_mm512_cvtps_pd (__m256 __A)
8786{
8787 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8788 (__v8df)
8789 _mm512_undefined_pd (),
8790 (__mmask8) -1,
8791 _MM_FROUND_CUR_DIRECTION);
8792}
8793
8794static __inline__ __m512d __DEFAULT_FN_ATTRS
8795_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8796{
8797 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8798 (__v8df) __W,
8799 (__mmask8) __U,
8800 _MM_FROUND_CUR_DIRECTION);
8801}
8802
8803static __inline__ __m512d __DEFAULT_FN_ATTRS
8804_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8805{
8806 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8807 (__v8df)
8808 _mm512_setzero_pd (),
8809 (__mmask8) __U,
8810 _MM_FROUND_CUR_DIRECTION);
8811}
8812
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008813static __inline__ __m512d __DEFAULT_FN_ATTRS
8814_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8815{
8816 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8817 (__v8df) __W,
8818 (__mmask8) __U);
8819}
8820
8821static __inline__ __m512d __DEFAULT_FN_ATTRS
8822_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8823{
8824 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8825 (__v8df)
8826 _mm512_setzero_pd (),
8827 (__mmask8) __U);
8828}
8829
8830static __inline__ __m512 __DEFAULT_FN_ATTRS
8831_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8832{
8833 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8834 (__v16sf) __W,
8835 (__mmask16) __U);
8836}
8837
8838static __inline__ __m512 __DEFAULT_FN_ATTRS
8839_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8840{
8841 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8842 (__v16sf)
8843 _mm512_setzero_ps (),
8844 (__mmask16) __U);
8845}
8846
Michael Zuckerman708e7592016-05-03 10:42:46 +00008847static __inline__ void __DEFAULT_FN_ATTRS
8848_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8849{
8850 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8851 (__mmask8) __U);
8852}
8853
8854static __inline__ void __DEFAULT_FN_ATTRS
8855_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8856{
8857 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8858 (__mmask8) __U);
8859}
8860
8861static __inline__ void __DEFAULT_FN_ATTRS
8862_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8863{
8864 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8865 (__mmask16) __U);
8866}
8867
8868static __inline__ void __DEFAULT_FN_ATTRS
8869_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8870{
8871 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8872 (__mmask16) __U);
8873}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008874
Craig Topper8c18e112016-05-17 04:41:50 +00008875#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
8876 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8877 (__v2df)(__m128d)(B), \
8878 (__v4sf)_mm_undefined_ps(), \
8879 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008880
Craig Topper8c18e112016-05-17 04:41:50 +00008881#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
8882 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8883 (__v2df)(__m128d)(B), \
8884 (__v4sf)(__m128)(W), \
8885 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008886
Craig Topper8c18e112016-05-17 04:41:50 +00008887#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
8888 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8889 (__v2df)(__m128d)(B), \
8890 (__v4sf)_mm_setzero_ps(), \
8891 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008892
Craig Topper8c18e112016-05-17 04:41:50 +00008893#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
8894 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8895 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008896
Craig Topper8c18e112016-05-17 04:41:50 +00008897#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
8898 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8899 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008900
Craig Topper8c18e112016-05-17 04:41:50 +00008901#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
8902 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008903
Craig Topper8c18e112016-05-17 04:41:50 +00008904#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
8905 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008906
Craig Topper8c18e112016-05-17 04:41:50 +00008907#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
8908 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
8909 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008910
Craig Topper8c18e112016-05-17 04:41:50 +00008911#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
8912 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
8913 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008914
Craig Topper8c18e112016-05-17 04:41:50 +00008915#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
8916 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
8917 (__v4sf)(__m128)(B), \
8918 (__v2df)_mm_undefined_pd(), \
8919 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008920
Craig Topper8c18e112016-05-17 04:41:50 +00008921#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
8922 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
8923 (__v4sf)(__m128)(B), \
8924 (__v2df)(__m128d)(W), \
8925 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008926
Craig Topper8c18e112016-05-17 04:41:50 +00008927#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
8928 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
8929 (__v4sf)(__m128)(B), \
8930 (__v2df)_mm_setzero_pd(), \
8931 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008932
8933static __inline__ __m128d __DEFAULT_FN_ATTRS
8934_mm_cvtu32_sd (__m128d __A, unsigned __B)
8935{
8936 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
8937}
8938
Craig Topper8c18e112016-05-17 04:41:50 +00008939#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
8940 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
8941 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008942
8943static __inline__ __m128d __DEFAULT_FN_ATTRS
8944_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
8945{
8946 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
8947 _MM_FROUND_CUR_DIRECTION);
8948}
8949
Craig Topper8c18e112016-05-17 04:41:50 +00008950#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
8951 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
8952 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008953
8954static __inline__ __m128 __DEFAULT_FN_ATTRS
8955_mm_cvtu32_ss (__m128 __A, unsigned __B)
8956{
8957 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
8958 _MM_FROUND_CUR_DIRECTION);
8959}
8960
Craig Topper8c18e112016-05-17 04:41:50 +00008961#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
8962 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
8963 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008964
8965static __inline__ __m128 __DEFAULT_FN_ATTRS
8966_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
8967{
8968 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
8969 _MM_FROUND_CUR_DIRECTION);
8970}
8971
Michael Zuckerman13d3c002016-05-11 11:41:29 +00008972static __inline__ __m512i __DEFAULT_FN_ATTRS
8973_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
8974{
8975 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
8976 __M);
8977}
8978
8979static __inline__ __m512i __DEFAULT_FN_ATTRS
8980_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
8981{
8982 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
8983 __M);
8984}
8985
8986static __inline__ __m512i __DEFAULT_FN_ATTRS
8987_mm512_set_epi64 (long long __A, long long __B, long long __C,
8988 long long __D, long long __E, long long __F,
8989 long long __G, long long __H)
8990{
8991 return __extension__ (__m512i) (__v8di)
8992 { __H, __G, __F, __E, __D, __C, __B, __A };
8993}
8994
8995static __inline__ __m512d __DEFAULT_FN_ATTRS
8996_mm512_set_pd (double __A, double __B, double __C, double __D,
8997 double __E, double __F, double __G, double __H)
8998{
8999 return __extension__ (__m512d)
9000 { __H, __G, __F, __E, __D, __C, __B, __A };
9001}
9002
9003static __inline__ __m512 __DEFAULT_FN_ATTRS
9004_mm512_set_ps (float __A, float __B, float __C, float __D,
9005 float __E, float __F, float __G, float __H,
9006 float __I, float __J, float __K, float __L,
9007 float __M, float __N, float __O, float __P)
9008{
9009 return __extension__ (__m512)
9010 { __P, __O, __N, __M, __L, __K, __J, __I,
9011 __H, __G, __F, __E, __D, __C, __B, __A };
9012}
9013
Michael Kupersteine45af542015-06-30 13:36:19 +00009014#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009015
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009016#endif // __AVX512FINTRIN_H