blob: 38d2ccb52af3e27d80a329ea2d9d8d7c143715f8 [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
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000346/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000347static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000348_mm512_and_epi32(__m512i __a, __m512i __b)
349{
350 return __a & __b;
351}
352
Michael Kupersteine45af542015-06-30 13:36:19 +0000353static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000354_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
355{
356 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
357 (__v16si) __b,
358 (__v16si) __src,
359 (__mmask16) __k);
360}
Michael Kupersteine45af542015-06-30 13:36:19 +0000361static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000362_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
363{
364 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
365 (__v16si) __b,
366 (__v16si)
367 _mm512_setzero_si512 (),
368 (__mmask16) __k);
369}
370
Michael Kupersteine45af542015-06-30 13:36:19 +0000371static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000372_mm512_and_epi64(__m512i __a, __m512i __b)
373{
374 return __a & __b;
375}
376
Michael Kupersteine45af542015-06-30 13:36:19 +0000377static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000378_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
379{
380 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
381 (__v8di) __b,
382 (__v8di) __src,
383 (__mmask8) __k);
384}
Michael Kupersteine45af542015-06-30 13:36:19 +0000385static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000386_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
387{
388 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
389 (__v8di) __b,
390 (__v8di)
391 _mm512_setzero_si512 (),
392 (__mmask8) __k);
393}
394
Michael Kupersteine45af542015-06-30 13:36:19 +0000395static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000396_mm512_andnot_epi32 (__m512i __A, __m512i __B)
397{
398 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
399 (__v16si) __B,
400 (__v16si)
401 _mm512_setzero_si512 (),
402 (__mmask16) -1);
403}
404
Michael Kupersteine45af542015-06-30 13:36:19 +0000405static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000406_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
407{
408 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
409 (__v16si) __B,
410 (__v16si) __W,
411 (__mmask16) __U);
412}
413
Michael Kupersteine45af542015-06-30 13:36:19 +0000414static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000415_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
416{
417 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
418 (__v16si) __B,
419 (__v16si)
420 _mm512_setzero_si512 (),
421 (__mmask16) __U);
422}
423
Michael Kupersteine45af542015-06-30 13:36:19 +0000424static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000425_mm512_andnot_epi64 (__m512i __A, __m512i __B)
426{
427 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
428 (__v8di) __B,
429 (__v8di)
430 _mm512_setzero_si512 (),
431 (__mmask8) -1);
432}
433
Michael Kupersteine45af542015-06-30 13:36:19 +0000434static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000435_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
436{
437 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
438 (__v8di) __B,
439 (__v8di) __W, __U);
440}
441
Michael Kupersteine45af542015-06-30 13:36:19 +0000442static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000443_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
444{
445 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
446 (__v8di) __B,
447 (__v8di)
448 _mm512_setzero_pd (),
449 __U);
450}
Michael Kupersteine45af542015-06-30 13:36:19 +0000451static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000452_mm512_or_epi32(__m512i __a, __m512i __b)
453{
454 return __a | __b;
455}
456
Michael Kupersteine45af542015-06-30 13:36:19 +0000457static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000458_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
459{
460 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
461 (__v16si) __b,
462 (__v16si) __src,
463 (__mmask16) __k);
464}
Michael Kupersteine45af542015-06-30 13:36:19 +0000465static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000466_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
467{
468 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
469 (__v16si) __b,
470 (__v16si)
471 _mm512_setzero_si512 (),
472 (__mmask16) __k);
473}
474
Michael Kupersteine45af542015-06-30 13:36:19 +0000475static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000476_mm512_or_epi64(__m512i __a, __m512i __b)
477{
478 return __a | __b;
479}
480
Michael Kupersteine45af542015-06-30 13:36:19 +0000481static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000482_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
483{
484 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
485 (__v8di) __b,
486 (__v8di) __src,
487 (__mmask8) __k);
488}
Michael Kupersteine45af542015-06-30 13:36:19 +0000489static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000490_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
491{
492 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
493 (__v8di) __b,
494 (__v8di)
495 _mm512_setzero_si512 (),
496 (__mmask8) __k);
497}
498
Michael Kupersteine45af542015-06-30 13:36:19 +0000499static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000500_mm512_xor_epi32(__m512i __a, __m512i __b)
501{
502 return __a ^ __b;
503}
504
Michael Kupersteine45af542015-06-30 13:36:19 +0000505static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000506_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
507{
508 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
509 (__v16si) __b,
510 (__v16si) __src,
511 (__mmask16) __k);
512}
Michael Kupersteine45af542015-06-30 13:36:19 +0000513static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000514_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
515{
516 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
517 (__v16si) __b,
518 (__v16si)
519 _mm512_setzero_si512 (),
520 (__mmask16) __k);
521}
522
Michael Kupersteine45af542015-06-30 13:36:19 +0000523static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000524_mm512_xor_epi64(__m512i __a, __m512i __b)
525{
526 return __a ^ __b;
527}
528
Michael Kupersteine45af542015-06-30 13:36:19 +0000529static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000530_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
531{
532 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
533 (__v8di) __b,
534 (__v8di) __src,
535 (__mmask8) __k);
536}
Michael Kupersteine45af542015-06-30 13:36:19 +0000537static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000538_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
539{
540 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
541 (__v8di) __b,
542 (__v8di)
543 _mm512_setzero_si512 (),
544 (__mmask8) __k);
545}
546
Michael Kupersteine45af542015-06-30 13:36:19 +0000547static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000548_mm512_and_si512(__m512i __a, __m512i __b)
549{
550 return __a & __b;
551}
552
Michael Kupersteine45af542015-06-30 13:36:19 +0000553static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000554_mm512_or_si512(__m512i __a, __m512i __b)
555{
556 return __a | __b;
557}
558
Michael Kupersteine45af542015-06-30 13:36:19 +0000559static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000560_mm512_xor_si512(__m512i __a, __m512i __b)
561{
562 return __a ^ __b;
563}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000564/* Arithmetic */
565
Michael Kupersteine45af542015-06-30 13:36:19 +0000566static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000567_mm512_add_pd(__m512d __a, __m512d __b)
568{
569 return __a + __b;
570}
571
Michael Kupersteine45af542015-06-30 13:36:19 +0000572static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000573_mm512_add_ps(__m512 __a, __m512 __b)
574{
575 return __a + __b;
576}
577
Michael Kupersteine45af542015-06-30 13:36:19 +0000578static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000579_mm512_mul_pd(__m512d __a, __m512d __b)
580{
581 return __a * __b;
582}
583
Michael Kupersteine45af542015-06-30 13:36:19 +0000584static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000585_mm512_mul_ps(__m512 __a, __m512 __b)
586{
587 return __a * __b;
588}
589
Michael Kupersteine45af542015-06-30 13:36:19 +0000590static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000591_mm512_sub_pd(__m512d __a, __m512d __b)
592{
593 return __a - __b;
594}
595
Michael Kupersteine45af542015-06-30 13:36:19 +0000596static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000597_mm512_sub_ps(__m512 __a, __m512 __b)
598{
599 return __a - __b;
600}
601
Michael Kupersteine45af542015-06-30 13:36:19 +0000602static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000603_mm512_add_epi64 (__m512i __A, __m512i __B)
604{
605 return (__m512i) ((__v8di) __A + (__v8di) __B);
606}
607
Michael Kupersteine45af542015-06-30 13:36:19 +0000608static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000609_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
610{
611 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
612 (__v8di) __B,
613 (__v8di) __W,
614 (__mmask8) __U);
615}
616
Michael Kupersteine45af542015-06-30 13:36:19 +0000617static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000618_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
619{
620 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
621 (__v8di) __B,
622 (__v8di)
623 _mm512_setzero_si512 (),
624 (__mmask8) __U);
625}
626
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000628_mm512_sub_epi64 (__m512i __A, __m512i __B)
629{
630 return (__m512i) ((__v8di) __A - (__v8di) __B);
631}
632
Michael Kupersteine45af542015-06-30 13:36:19 +0000633static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000634_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
635{
636 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
637 (__v8di) __B,
638 (__v8di) __W,
639 (__mmask8) __U);
640}
641
Michael Kupersteine45af542015-06-30 13:36:19 +0000642static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000643_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
644{
645 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
646 (__v8di) __B,
647 (__v8di)
648 _mm512_setzero_si512 (),
649 (__mmask8) __U);
650}
651
Michael Kupersteine45af542015-06-30 13:36:19 +0000652static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000653_mm512_add_epi32 (__m512i __A, __m512i __B)
654{
655 return (__m512i) ((__v16si) __A + (__v16si) __B);
656}
657
Michael Kupersteine45af542015-06-30 13:36:19 +0000658static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000659_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
660{
661 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
662 (__v16si) __B,
663 (__v16si) __W,
664 (__mmask16) __U);
665}
666
Michael Kupersteine45af542015-06-30 13:36:19 +0000667static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000668_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
669{
670 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
671 (__v16si) __B,
672 (__v16si)
673 _mm512_setzero_si512 (),
674 (__mmask16) __U);
675}
676
Michael Kupersteine45af542015-06-30 13:36:19 +0000677static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000678_mm512_sub_epi32 (__m512i __A, __m512i __B)
679{
680 return (__m512i) ((__v16si) __A - (__v16si) __B);
681}
682
Michael Kupersteine45af542015-06-30 13:36:19 +0000683static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000684_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
685{
686 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
687 (__v16si) __B,
688 (__v16si) __W,
689 (__mmask16) __U);
690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000693_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
694{
695 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
696 (__v16si) __B,
697 (__v16si)
698 _mm512_setzero_si512 (),
699 (__mmask16) __U);
700}
701
Michael Kupersteine45af542015-06-30 13:36:19 +0000702static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000703_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000704{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000705 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
706 (__v8df) __B,
707 (__v8df)
708 _mm512_setzero_pd (),
709 (__mmask8) -1,
710 _MM_FROUND_CUR_DIRECTION);
711}
712
Michael Kupersteine45af542015-06-30 13:36:19 +0000713static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000714_mm512_max_ps(__m512 __A, __m512 __B)
715{
716 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
717 (__v16sf) __B,
718 (__v16sf)
719 _mm512_setzero_ps (),
720 (__mmask16) -1,
721 _MM_FROUND_CUR_DIRECTION);
722}
723
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000724static __inline__ __m128 __DEFAULT_FN_ATTRS
725_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000726 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000727 (__v4sf) __B,
728 (__v4sf) __W,
729 (__mmask8) __U,
730 _MM_FROUND_CUR_DIRECTION);
731}
732
733static __inline__ __m128 __DEFAULT_FN_ATTRS
734_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000735 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000736 (__v4sf) __B,
737 (__v4sf) _mm_setzero_ps (),
738 (__mmask8) __U,
739 _MM_FROUND_CUR_DIRECTION);
740}
741
742#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000743 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000744 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
745
746#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000747 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000748 (__v4sf) __W, (__mmask8) __U,__R); })
749
750#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000751 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000752 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
753
754static __inline__ __m128d __DEFAULT_FN_ATTRS
755_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000756 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000757 (__v2df) __B,
758 (__v2df) __W,
759 (__mmask8) __U,
760 _MM_FROUND_CUR_DIRECTION);
761}
762
763static __inline__ __m128d __DEFAULT_FN_ATTRS
764_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000765 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000766 (__v2df) __B,
767 (__v2df) _mm_setzero_pd (),
768 (__mmask8) __U,
769 _MM_FROUND_CUR_DIRECTION);
770}
771
772#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000773 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000774 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
775
776#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000777 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000778 (__v2df) __W, (__mmask8) __U,__R); })
779
780#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000781 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000782 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
783
Adam Nemet0d5bb552014-07-28 17:14:40 +0000784static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000785__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000786_mm512_max_epi32(__m512i __A, __m512i __B)
787{
788 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
789 (__v16si) __B,
790 (__v16si)
791 _mm512_setzero_si512 (),
792 (__mmask16) -1);
793}
794
Michael Kupersteine45af542015-06-30 13:36:19 +0000795static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000796_mm512_max_epu32(__m512i __A, __m512i __B)
797{
798 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
799 (__v16si) __B,
800 (__v16si)
801 _mm512_setzero_si512 (),
802 (__mmask16) -1);
803}
804
Michael Kupersteine45af542015-06-30 13:36:19 +0000805static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000806_mm512_max_epi64(__m512i __A, __m512i __B)
807{
808 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
809 (__v8di) __B,
810 (__v8di)
811 _mm512_setzero_si512 (),
812 (__mmask8) -1);
813}
814
Michael Kupersteine45af542015-06-30 13:36:19 +0000815static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000816_mm512_max_epu64(__m512i __A, __m512i __B)
817{
818 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
819 (__v8di) __B,
820 (__v8di)
821 _mm512_setzero_si512 (),
822 (__mmask8) -1);
823}
824
Michael Kupersteine45af542015-06-30 13:36:19 +0000825static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000826_mm512_min_pd(__m512d __A, __m512d __B)
827{
828 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
829 (__v8df) __B,
830 (__v8df)
831 _mm512_setzero_pd (),
832 (__mmask8) -1,
833 _MM_FROUND_CUR_DIRECTION);
834}
835
Michael Kupersteine45af542015-06-30 13:36:19 +0000836static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000837_mm512_min_ps(__m512 __A, __m512 __B)
838{
839 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
840 (__v16sf) __B,
841 (__v16sf)
842 _mm512_setzero_ps (),
843 (__mmask16) -1,
844 _MM_FROUND_CUR_DIRECTION);
845}
846
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000847static __inline__ __m128 __DEFAULT_FN_ATTRS
848_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000849 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000850 (__v4sf) __B,
851 (__v4sf) __W,
852 (__mmask8) __U,
853 _MM_FROUND_CUR_DIRECTION);
854}
855
856static __inline__ __m128 __DEFAULT_FN_ATTRS
857_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000858 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000859 (__v4sf) __B,
860 (__v4sf) _mm_setzero_ps (),
861 (__mmask8) __U,
862 _MM_FROUND_CUR_DIRECTION);
863}
864
865#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000866 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000867 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
868
869#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000870 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000871 (__v4sf) __W, (__mmask8) __U,__R); })
872
873#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000874 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000875 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
876
877static __inline__ __m128d __DEFAULT_FN_ATTRS
878_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000879 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000880 (__v2df) __B,
881 (__v2df) __W,
882 (__mmask8) __U,
883 _MM_FROUND_CUR_DIRECTION);
884}
885
886static __inline__ __m128d __DEFAULT_FN_ATTRS
887_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000888 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000889 (__v2df) __B,
890 (__v2df) _mm_setzero_pd (),
891 (__mmask8) __U,
892 _MM_FROUND_CUR_DIRECTION);
893}
894
895#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000896 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000897 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
898
899#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000900 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000901 (__v2df) __W, (__mmask8) __U,__R); })
902
903#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000904 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000905 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
906
Adam Nemet0d5bb552014-07-28 17:14:40 +0000907static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000908__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000909_mm512_min_epi32(__m512i __A, __m512i __B)
910{
911 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
912 (__v16si) __B,
913 (__v16si)
914 _mm512_setzero_si512 (),
915 (__mmask16) -1);
916}
917
Michael Kupersteine45af542015-06-30 13:36:19 +0000918static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000919_mm512_min_epu32(__m512i __A, __m512i __B)
920{
921 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
922 (__v16si) __B,
923 (__v16si)
924 _mm512_setzero_si512 (),
925 (__mmask16) -1);
926}
927
Michael Kupersteine45af542015-06-30 13:36:19 +0000928static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000929_mm512_min_epi64(__m512i __A, __m512i __B)
930{
931 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
932 (__v8di) __B,
933 (__v8di)
934 _mm512_setzero_si512 (),
935 (__mmask8) -1);
936}
937
Michael Kupersteine45af542015-06-30 13:36:19 +0000938static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000939_mm512_min_epu64(__m512i __A, __m512i __B)
940{
941 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
942 (__v8di) __B,
943 (__v8di)
944 _mm512_setzero_si512 (),
945 (__mmask8) -1);
946}
947
Michael Kupersteine45af542015-06-30 13:36:19 +0000948static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000949_mm512_mul_epi32(__m512i __X, __m512i __Y)
950{
951 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
952 (__v16si) __Y,
953 (__v8di)
954 _mm512_setzero_si512 (),
955 (__mmask8) -1);
956}
957
Michael Kupersteine45af542015-06-30 13:36:19 +0000958static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000959_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
960{
961 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
962 (__v16si) __Y,
963 (__v8di) __W, __M);
964}
965
Michael Kupersteine45af542015-06-30 13:36:19 +0000966static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000967_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
968{
969 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
970 (__v16si) __Y,
971 (__v8di)
972 _mm512_setzero_si512 (),
973 __M);
974}
975
Michael Kupersteine45af542015-06-30 13:36:19 +0000976static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000977_mm512_mul_epu32(__m512i __X, __m512i __Y)
978{
979 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
980 (__v16si) __Y,
981 (__v8di)
982 _mm512_setzero_si512 (),
983 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000984}
985
Michael Kupersteine45af542015-06-30 13:36:19 +0000986static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000987_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
988{
989 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
990 (__v16si) __Y,
991 (__v8di) __W, __M);
992}
993
Michael Kupersteine45af542015-06-30 13:36:19 +0000994static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000995_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
996{
997 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
998 (__v16si) __Y,
999 (__v8di)
1000 _mm512_setzero_si512 (),
1001 __M);
1002}
1003
Michael Kupersteine45af542015-06-30 13:36:19 +00001004static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001005_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1006{
1007 return (__m512i) ((__v16si) __A * (__v16si) __B);
1008}
1009
Michael Kupersteine45af542015-06-30 13:36:19 +00001010static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001011_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1012{
1013 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1014 (__v16si) __B,
1015 (__v16si)
1016 _mm512_setzero_si512 (),
1017 __M);
1018}
1019
Michael Kupersteine45af542015-06-30 13:36:19 +00001020static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001021_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1022{
1023 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1024 (__v16si) __B,
1025 (__v16si) __W, __M);
1026}
1027
Michael Kupersteine45af542015-06-30 13:36:19 +00001028static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001029_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001030{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001031 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001032 (__v8df) _mm512_setzero_pd (),
1033 (__mmask8) -1,
1034 _MM_FROUND_CUR_DIRECTION);
1035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001038_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001039{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001040 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001041 (__v16sf) _mm512_setzero_ps (),
1042 (__mmask16) -1,
1043 _MM_FROUND_CUR_DIRECTION);
1044}
1045
Michael Kupersteine45af542015-06-30 13:36:19 +00001046static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001047_mm512_rsqrt14_pd(__m512d __A)
1048{
1049 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1050 (__v8df)
1051 _mm512_setzero_pd (),
1052 (__mmask8) -1);}
1053
Michael Kupersteine45af542015-06-30 13:36:19 +00001054static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001055_mm512_rsqrt14_ps(__m512 __A)
1056{
1057 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1058 (__v16sf)
1059 _mm512_setzero_ps (),
1060 (__mmask16) -1);
1061}
1062
Michael Kupersteine45af542015-06-30 13:36:19 +00001063static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001064_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1065{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001066 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001067 (__v4sf) __B,
1068 (__v4sf)
1069 _mm_setzero_ps (),
1070 (__mmask8) -1);
1071}
1072
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001073static __inline__ __m128 __DEFAULT_FN_ATTRS
1074_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1075{
1076 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1077 (__v4sf) __B,
1078 (__v4sf) __W,
1079 (__mmask8) __U);
1080}
1081
1082static __inline__ __m128 __DEFAULT_FN_ATTRS
1083_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1084{
1085 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1086 (__v4sf) __B,
1087 (__v4sf) _mm_setzero_ps (),
1088 (__mmask8) __U);
1089}
1090
Michael Kupersteine45af542015-06-30 13:36:19 +00001091static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001092_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1093{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001094 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001095 (__v2df) __B,
1096 (__v2df)
1097 _mm_setzero_pd (),
1098 (__mmask8) -1);
1099}
1100
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001101static __inline__ __m128d __DEFAULT_FN_ATTRS
1102_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1103{
1104 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1105 (__v2df) __B,
1106 (__v2df) __W,
1107 (__mmask8) __U);
1108}
1109
1110static __inline__ __m128d __DEFAULT_FN_ATTRS
1111_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1112{
1113 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1114 (__v2df) __B,
1115 (__v2df) _mm_setzero_pd (),
1116 (__mmask8) __U);
1117}
1118
Michael Kupersteine45af542015-06-30 13:36:19 +00001119static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001120_mm512_rcp14_pd(__m512d __A)
1121{
1122 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1123 (__v8df)
1124 _mm512_setzero_pd (),
1125 (__mmask8) -1);
1126}
1127
Michael Kupersteine45af542015-06-30 13:36:19 +00001128static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001129_mm512_rcp14_ps(__m512 __A)
1130{
1131 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1132 (__v16sf)
1133 _mm512_setzero_ps (),
1134 (__mmask16) -1);
1135}
Michael Kupersteine45af542015-06-30 13:36:19 +00001136static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001137_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001138{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001139 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001140 (__v4sf) __B,
1141 (__v4sf)
1142 _mm_setzero_ps (),
1143 (__mmask8) -1);
1144}
1145
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001146static __inline__ __m128 __DEFAULT_FN_ATTRS
1147_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1148{
1149 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1150 (__v4sf) __B,
1151 (__v4sf) __W,
1152 (__mmask8) __U);
1153}
1154
1155static __inline__ __m128 __DEFAULT_FN_ATTRS
1156_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1157{
1158 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1159 (__v4sf) __B,
1160 (__v4sf) _mm_setzero_ps (),
1161 (__mmask8) __U);
1162}
1163
Michael Kupersteine45af542015-06-30 13:36:19 +00001164static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001165_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001166{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001167 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001168 (__v2df) __B,
1169 (__v2df)
1170 _mm_setzero_pd (),
1171 (__mmask8) -1);
1172}
1173
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001174static __inline__ __m128d __DEFAULT_FN_ATTRS
1175_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1176{
1177 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1178 (__v2df) __B,
1179 (__v2df) __W,
1180 (__mmask8) __U);
1181}
1182
1183static __inline__ __m128d __DEFAULT_FN_ATTRS
1184_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1185{
1186 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1187 (__v2df) __B,
1188 (__v2df) _mm_setzero_pd (),
1189 (__mmask8) __U);
1190}
1191
Michael Kupersteine45af542015-06-30 13:36:19 +00001192static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001193_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001194{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001195 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1196 _MM_FROUND_FLOOR,
1197 (__v16sf) __A, -1,
1198 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001199}
1200
Michael Kupersteine45af542015-06-30 13:36:19 +00001201static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001202_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001203{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001204 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1205 _MM_FROUND_FLOOR,
1206 (__v8df) __A, -1,
1207 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001208}
1209
Michael Kupersteine45af542015-06-30 13:36:19 +00001210static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001211_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001212{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001213 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1214 _MM_FROUND_CEIL,
1215 (__v16sf) __A, -1,
1216 _MM_FROUND_CUR_DIRECTION);
1217}
1218
Michael Kupersteine45af542015-06-30 13:36:19 +00001219static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001220_mm512_ceil_pd(__m512d __A)
1221{
1222 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1223 _MM_FROUND_CEIL,
1224 (__v8df) __A, -1,
1225 _MM_FROUND_CUR_DIRECTION);
1226}
1227
Michael Kupersteine45af542015-06-30 13:36:19 +00001228static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001229_mm512_abs_epi64(__m512i __A)
1230{
1231 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1232 (__v8di)
1233 _mm512_setzero_si512 (),
1234 (__mmask8) -1);
1235}
1236
Michael Kupersteine45af542015-06-30 13:36:19 +00001237static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001238_mm512_abs_epi32(__m512i __A)
1239{
1240 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1241 (__v16si)
1242 _mm512_setzero_si512 (),
1243 (__mmask16) -1);
1244}
1245
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001246static __inline__ __m128 __DEFAULT_FN_ATTRS
1247_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001248 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001249 (__v4sf) __B,
1250 (__v4sf) __W,
1251 (__mmask8) __U,
1252 _MM_FROUND_CUR_DIRECTION);
1253}
1254
1255static __inline__ __m128 __DEFAULT_FN_ATTRS
1256_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001257 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001258 (__v4sf) __B,
1259 (__v4sf) _mm_setzero_ps (),
1260 (__mmask8) __U,
1261 _MM_FROUND_CUR_DIRECTION);
1262}
1263
1264#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001265 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001266 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1267
1268#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001269 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001270 (__v4sf) __W, (__mmask8) __U,__R); })
1271
1272#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001273 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001274 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1275
1276static __inline__ __m128d __DEFAULT_FN_ATTRS
1277_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001278 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001279 (__v2df) __B,
1280 (__v2df) __W,
1281 (__mmask8) __U,
1282 _MM_FROUND_CUR_DIRECTION);
1283}
1284
1285static __inline__ __m128d __DEFAULT_FN_ATTRS
1286_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001287 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001288 (__v2df) __B,
1289 (__v2df) _mm_setzero_pd (),
1290 (__mmask8) __U,
1291 _MM_FROUND_CUR_DIRECTION);
1292}
1293#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001294 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001295 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1296
1297#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001298 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001299 (__v2df) __W, (__mmask8) __U,__R); })
1300
1301#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001302 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001303 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1304
Asaf Badouhffeb6242015-07-21 15:27:28 +00001305static __inline__ __m512d __DEFAULT_FN_ATTRS
1306_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1307 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1308 (__v8df) __B,
1309 (__v8df) __W,
1310 (__mmask8) __U,
1311 _MM_FROUND_CUR_DIRECTION);
1312}
1313
1314static __inline__ __m512d __DEFAULT_FN_ATTRS
1315_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1316 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1317 (__v8df) __B,
1318 (__v8df) _mm512_setzero_pd (),
1319 (__mmask8) __U,
1320 _MM_FROUND_CUR_DIRECTION);
1321}
1322
1323static __inline__ __m512 __DEFAULT_FN_ATTRS
1324_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1325 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1326 (__v16sf) __B,
1327 (__v16sf) __W,
1328 (__mmask16) __U,
1329 _MM_FROUND_CUR_DIRECTION);
1330}
1331
1332static __inline__ __m512 __DEFAULT_FN_ATTRS
1333_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1334 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1335 (__v16sf) __B,
1336 (__v16sf) _mm512_setzero_ps (),
1337 (__mmask16) __U,
1338 _MM_FROUND_CUR_DIRECTION);
1339}
1340
1341#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1342 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1343 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1344
1345#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1346 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1347 (__v8df) __W, (__mmask8) __U, __R); })
1348
1349#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1350 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1351 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1352
1353#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1354 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1355 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1356
1357#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1358 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1359 (__v16sf) __W, (__mmask16)__U, __R); })
1360
1361#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1362 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1363 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1364
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001365static __inline__ __m128 __DEFAULT_FN_ATTRS
1366_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001367 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001368 (__v4sf) __B,
1369 (__v4sf) __W,
1370 (__mmask8) __U,
1371 _MM_FROUND_CUR_DIRECTION);
1372}
1373
1374static __inline__ __m128 __DEFAULT_FN_ATTRS
1375_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001376 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001377 (__v4sf) __B,
1378 (__v4sf) _mm_setzero_ps (),
1379 (__mmask8) __U,
1380 _MM_FROUND_CUR_DIRECTION);
1381}
1382#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001383 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001384 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1385
1386#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001387 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001388 (__v4sf) __W, (__mmask8) __U,__R); })
1389
1390#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001391 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001392 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1393
1394static __inline__ __m128d __DEFAULT_FN_ATTRS
1395_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001396 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001397 (__v2df) __B,
1398 (__v2df) __W,
1399 (__mmask8) __U,
1400 _MM_FROUND_CUR_DIRECTION);
1401}
1402
1403static __inline__ __m128d __DEFAULT_FN_ATTRS
1404_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001405 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001406 (__v2df) __B,
1407 (__v2df) _mm_setzero_pd (),
1408 (__mmask8) __U,
1409 _MM_FROUND_CUR_DIRECTION);
1410}
1411
1412#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001413 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001414 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1415
1416#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001417 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001418 (__v2df) __W, (__mmask8) __U,__R); })
1419
1420#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001421 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001422 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1423
Asaf Badouhffeb6242015-07-21 15:27:28 +00001424static __inline__ __m512d __DEFAULT_FN_ATTRS
1425_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1426 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1427 (__v8df) __B,
1428 (__v8df) __W,
1429 (__mmask8) __U,
1430 _MM_FROUND_CUR_DIRECTION);
1431}
1432
1433static __inline__ __m512d __DEFAULT_FN_ATTRS
1434_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1435 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1436 (__v8df) __B,
1437 (__v8df)
1438 _mm512_setzero_pd (),
1439 (__mmask8) __U,
1440 _MM_FROUND_CUR_DIRECTION);
1441}
1442
1443static __inline__ __m512 __DEFAULT_FN_ATTRS
1444_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1445 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1446 (__v16sf) __B,
1447 (__v16sf) __W,
1448 (__mmask16) __U,
1449 _MM_FROUND_CUR_DIRECTION);
1450}
1451
1452static __inline__ __m512 __DEFAULT_FN_ATTRS
1453_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1454 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1455 (__v16sf) __B,
1456 (__v16sf)
1457 _mm512_setzero_ps (),
1458 (__mmask16) __U,
1459 _MM_FROUND_CUR_DIRECTION);
1460}
1461
1462#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1463 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1464 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1465
1466#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1467 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1468 (__v8df) __W, (__mmask8) __U, __R); })
1469
1470#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1471 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1472 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1473
1474#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1475 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1476 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1477
1478#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1479 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1480 (__v16sf) __W, (__mmask16) __U, __R); });
1481
1482#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1483 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1484 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1485
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001486static __inline__ __m128 __DEFAULT_FN_ATTRS
1487_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001488 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001489 (__v4sf) __B,
1490 (__v4sf) __W,
1491 (__mmask8) __U,
1492 _MM_FROUND_CUR_DIRECTION);
1493}
1494
1495static __inline__ __m128 __DEFAULT_FN_ATTRS
1496_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001497 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001498 (__v4sf) __B,
1499 (__v4sf) _mm_setzero_ps (),
1500 (__mmask8) __U,
1501 _MM_FROUND_CUR_DIRECTION);
1502}
1503#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001504 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001505 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1506
1507#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001508 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001509 (__v4sf) __W, (__mmask8) __U,__R); })
1510
1511#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001512 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001513 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1514
1515static __inline__ __m128d __DEFAULT_FN_ATTRS
1516_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001517 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001518 (__v2df) __B,
1519 (__v2df) __W,
1520 (__mmask8) __U,
1521 _MM_FROUND_CUR_DIRECTION);
1522}
1523
1524static __inline__ __m128d __DEFAULT_FN_ATTRS
1525_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001526 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001527 (__v2df) __B,
1528 (__v2df) _mm_setzero_pd (),
1529 (__mmask8) __U,
1530 _MM_FROUND_CUR_DIRECTION);
1531}
1532
1533#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001534 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001535 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1536
1537#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001538 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001539 (__v2df) __W, (__mmask8) __U,__R); })
1540
1541#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001542 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001543 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1544
Asaf Badouhffeb6242015-07-21 15:27:28 +00001545static __inline__ __m512d __DEFAULT_FN_ATTRS
1546_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1547 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1548 (__v8df) __B,
1549 (__v8df) __W,
1550 (__mmask8) __U,
1551 _MM_FROUND_CUR_DIRECTION);
1552}
1553
1554static __inline__ __m512d __DEFAULT_FN_ATTRS
1555_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1556 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1557 (__v8df) __B,
1558 (__v8df)
1559 _mm512_setzero_pd (),
1560 (__mmask8) __U,
1561 _MM_FROUND_CUR_DIRECTION);
1562}
1563
1564static __inline__ __m512 __DEFAULT_FN_ATTRS
1565_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1566 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1567 (__v16sf) __B,
1568 (__v16sf) __W,
1569 (__mmask16) __U,
1570 _MM_FROUND_CUR_DIRECTION);
1571}
1572
1573static __inline__ __m512 __DEFAULT_FN_ATTRS
1574_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1575 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1576 (__v16sf) __B,
1577 (__v16sf)
1578 _mm512_setzero_ps (),
1579 (__mmask16) __U,
1580 _MM_FROUND_CUR_DIRECTION);
1581}
1582
1583#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1584 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1585 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1586
1587#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1588 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1589 (__v8df) __W, (__mmask8) __U, __R); })
1590
1591#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1592 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1593 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1594
1595#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1596 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1597 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1598
1599#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1600 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1601 (__v16sf) __W, (__mmask16) __U, __R); });
1602
1603#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1604 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1605 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1606
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001607static __inline__ __m128 __DEFAULT_FN_ATTRS
1608_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001609 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001610 (__v4sf) __B,
1611 (__v4sf) __W,
1612 (__mmask8) __U,
1613 _MM_FROUND_CUR_DIRECTION);
1614}
1615
1616static __inline__ __m128 __DEFAULT_FN_ATTRS
1617_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001618 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001619 (__v4sf) __B,
1620 (__v4sf) _mm_setzero_ps (),
1621 (__mmask8) __U,
1622 _MM_FROUND_CUR_DIRECTION);
1623}
1624
1625#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001626 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001627 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1628
1629#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001630 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001631 (__v4sf) __W, (__mmask8) __U,__R); })
1632
1633#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001634 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001635 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1636
1637static __inline__ __m128d __DEFAULT_FN_ATTRS
1638_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001639 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001640 (__v2df) __B,
1641 (__v2df) __W,
1642 (__mmask8) __U,
1643 _MM_FROUND_CUR_DIRECTION);
1644}
1645
1646static __inline__ __m128d __DEFAULT_FN_ATTRS
1647_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001648 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001649 (__v2df) __B,
1650 (__v2df) _mm_setzero_pd (),
1651 (__mmask8) __U,
1652 _MM_FROUND_CUR_DIRECTION);
1653}
1654
1655#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001656 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001657 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1658
1659#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001660 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001661 (__v2df) __W, (__mmask8) __U,__R); })
1662
1663#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001664 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001665 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1666
Asaf Badouhffeb6242015-07-21 15:27:28 +00001667static __inline__ __m512d __DEFAULT_FN_ATTRS
1668_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1669 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1670 (__v8df) __B,
1671 (__v8df) __W,
1672 (__mmask8) __U,
1673 _MM_FROUND_CUR_DIRECTION);
1674}
1675
1676static __inline__ __m512d __DEFAULT_FN_ATTRS
1677_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1678 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1679 (__v8df) __B,
1680 (__v8df)
1681 _mm512_setzero_pd (),
1682 (__mmask8) __U,
1683 _MM_FROUND_CUR_DIRECTION);
1684}
1685
1686static __inline__ __m512 __DEFAULT_FN_ATTRS
1687_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1688 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1689 (__v16sf) __B,
1690 (__v16sf) __W,
1691 (__mmask16) __U,
1692 _MM_FROUND_CUR_DIRECTION);
1693}
1694
1695static __inline__ __m512 __DEFAULT_FN_ATTRS
1696_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1697 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1698 (__v16sf) __B,
1699 (__v16sf)
1700 _mm512_setzero_ps (),
1701 (__mmask16) __U,
1702 _MM_FROUND_CUR_DIRECTION);
1703}
1704
1705#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1706 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1707 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1708
1709#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1710 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1711 (__v8df) __W, (__mmask8) __U, __R); })
1712
1713#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1714 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1715 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1716
1717#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1718 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1719 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1720
1721#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1722 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1723 (__v16sf) __W, (__mmask16) __U, __R); });
1724
1725#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
1726 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1727 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1728
Craig Topper72c7d512015-02-01 07:35:35 +00001729#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1730 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1731 -1, _MM_FROUND_CUR_DIRECTION); })
1732
1733#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1734 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1735 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001736
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001737#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1738 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1739 (__v8df) (B), (__v8df) (C), \
1740 (__mmask8) -1, (R)); })
1741
1742
1743#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1744 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1745 (__v8df) (B), (__v8df) (C), \
1746 (__mmask8) (U), (R)); })
1747
1748
1749#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1750 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1751 (__v8df) (B), (__v8df) (C), \
1752 (__mmask8) (U), (R)); })
1753
1754
1755#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1756 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1757 (__v8df) (B), (__v8df) (C), \
1758 (__mmask8) (U), (R)); })
1759
1760
1761#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1762 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1763 (__v8df) (B), -(__v8df) (C), \
1764 (__mmask8) -1, (R)); })
1765
1766
1767#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1768 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1769 (__v8df) (B), -(__v8df) (C), \
1770 (__mmask8) (U), (R)); })
1771
1772
1773#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1774 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1775 (__v8df) (B), -(__v8df) (C), \
1776 (__mmask8) (U), (R)); })
1777
1778
1779#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1780 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1781 (__v8df) (B), (__v8df) (C), \
1782 (__mmask8) -1, (R)); })
1783
1784
1785#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1786 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1787 (__v8df) (B), (__v8df) (C), \
1788 (__mmask8) (U), (R)); })
1789
1790
1791#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1792 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1793 (__v8df) (B), (__v8df) (C), \
1794 (__mmask8) (U), (R)); })
1795
1796
1797#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1798 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1799 (__v8df) (B), -(__v8df) (C), \
1800 (__mmask8) -1, (R)); })
1801
1802
1803#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1804 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1805 (__v8df) (B), -(__v8df) (C), \
1806 (__mmask8) (U), (R)); })
1807
1808
Michael Kupersteine45af542015-06-30 13:36:19 +00001809static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001810_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1811{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001812 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1813 (__v8df) __B,
1814 (__v8df) __C,
1815 (__mmask8) -1,
1816 _MM_FROUND_CUR_DIRECTION);
1817}
1818
Michael Kupersteine45af542015-06-30 13:36:19 +00001819static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001820_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1821{
1822 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1823 (__v8df) __B,
1824 (__v8df) __C,
1825 (__mmask8) __U,
1826 _MM_FROUND_CUR_DIRECTION);
1827}
1828
Michael Kupersteine45af542015-06-30 13:36:19 +00001829static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001830_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1831{
1832 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
1833 (__v8df) __B,
1834 (__v8df) __C,
1835 (__mmask8) __U,
1836 _MM_FROUND_CUR_DIRECTION);
1837}
1838
Michael Kupersteine45af542015-06-30 13:36:19 +00001839static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001840_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1841{
1842 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1843 (__v8df) __B,
1844 (__v8df) __C,
1845 (__mmask8) __U,
1846 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001847}
1848
Michael Kupersteine45af542015-06-30 13:36:19 +00001849static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001850_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1851{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001852 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1853 (__v8df) __B,
1854 -(__v8df) __C,
1855 (__mmask8) -1,
1856 _MM_FROUND_CUR_DIRECTION);
1857}
1858
Michael Kupersteine45af542015-06-30 13:36:19 +00001859static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001860_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1861{
1862 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1863 (__v8df) __B,
1864 -(__v8df) __C,
1865 (__mmask8) __U,
1866 _MM_FROUND_CUR_DIRECTION);
1867}
1868
Michael Kupersteine45af542015-06-30 13:36:19 +00001869static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001870_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1871{
1872 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1873 (__v8df) __B,
1874 -(__v8df) __C,
1875 (__mmask8) __U,
1876 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001877}
1878
Michael Kupersteine45af542015-06-30 13:36:19 +00001879static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001880_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1881{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001882 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1883 (__v8df) __B,
1884 (__v8df) __C,
1885 (__mmask8) -1,
1886 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001887}
1888
Michael Kupersteine45af542015-06-30 13:36:19 +00001889static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001890_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1891{
1892 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1893 (__v8df) __B,
1894 (__v8df) __C,
1895 (__mmask8) __U,
1896 _MM_FROUND_CUR_DIRECTION);
1897}
1898
Michael Kupersteine45af542015-06-30 13:36:19 +00001899static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001900_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1901{
1902 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1903 (__v8df) __B,
1904 (__v8df) __C,
1905 (__mmask8) __U,
1906 _MM_FROUND_CUR_DIRECTION);
1907}
1908
Michael Kupersteine45af542015-06-30 13:36:19 +00001909static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001910_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1911{
1912 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1913 (__v8df) __B,
1914 -(__v8df) __C,
1915 (__mmask8) -1,
1916 _MM_FROUND_CUR_DIRECTION);
1917}
1918
Michael Kupersteine45af542015-06-30 13:36:19 +00001919static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001920_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1921{
1922 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1923 (__v8df) __B,
1924 -(__v8df) __C,
1925 (__mmask8) __U,
1926 _MM_FROUND_CUR_DIRECTION);
1927}
1928
1929#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1930 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1931 (__v16sf) (B), (__v16sf) (C), \
1932 (__mmask16) -1, (R)); })
1933
1934
1935#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1936 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1937 (__v16sf) (B), (__v16sf) (C), \
1938 (__mmask16) (U), (R)); })
1939
1940
1941#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1942 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1943 (__v16sf) (B), (__v16sf) (C), \
1944 (__mmask16) (U), (R)); })
1945
1946
1947#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1948 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1949 (__v16sf) (B), (__v16sf) (C), \
1950 (__mmask16) (U), (R)); })
1951
1952
1953#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1954 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1955 (__v16sf) (B), -(__v16sf) (C), \
1956 (__mmask16) -1, (R)); })
1957
1958
1959#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1960 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1961 (__v16sf) (B), -(__v16sf) (C), \
1962 (__mmask16) (U), (R)); })
1963
1964
1965#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1966 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1967 (__v16sf) (B), -(__v16sf) (C), \
1968 (__mmask16) (U), (R)); })
1969
1970
1971#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1972 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1973 (__v16sf) (B), (__v16sf) (C), \
1974 (__mmask16) -1, (R)); })
1975
1976
1977#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1978 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1979 (__v16sf) (B), (__v16sf) (C), \
1980 (__mmask16) (U), (R)); })
1981
1982
1983#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1984 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1985 (__v16sf) (B), (__v16sf) (C), \
1986 (__mmask16) (U), (R)); })
1987
1988
1989#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1990 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1991 (__v16sf) (B), -(__v16sf) (C), \
1992 (__mmask16) -1, (R)); })
1993
1994
1995#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1996 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1997 (__v16sf) (B), -(__v16sf) (C), \
1998 (__mmask16) (U), (R)); })
1999
2000
Michael Kupersteine45af542015-06-30 13:36:19 +00002001static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002002_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2003{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002004 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2005 (__v16sf) __B,
2006 (__v16sf) __C,
2007 (__mmask16) -1,
2008 _MM_FROUND_CUR_DIRECTION);
2009}
2010
Michael Kupersteine45af542015-06-30 13:36:19 +00002011static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002012_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2013{
2014 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2015 (__v16sf) __B,
2016 (__v16sf) __C,
2017 (__mmask16) __U,
2018 _MM_FROUND_CUR_DIRECTION);
2019}
2020
Michael Kupersteine45af542015-06-30 13:36:19 +00002021static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002022_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2023{
2024 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2025 (__v16sf) __B,
2026 (__v16sf) __C,
2027 (__mmask16) __U,
2028 _MM_FROUND_CUR_DIRECTION);
2029}
2030
Michael Kupersteine45af542015-06-30 13:36:19 +00002031static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002032_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2033{
2034 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2035 (__v16sf) __B,
2036 (__v16sf) __C,
2037 (__mmask16) __U,
2038 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002039}
2040
Michael Kupersteine45af542015-06-30 13:36:19 +00002041static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002042_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2043{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002044 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2045 (__v16sf) __B,
2046 -(__v16sf) __C,
2047 (__mmask16) -1,
2048 _MM_FROUND_CUR_DIRECTION);
2049}
2050
Michael Kupersteine45af542015-06-30 13:36:19 +00002051static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002052_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2053{
2054 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2055 (__v16sf) __B,
2056 -(__v16sf) __C,
2057 (__mmask16) __U,
2058 _MM_FROUND_CUR_DIRECTION);
2059}
2060
Michael Kupersteine45af542015-06-30 13:36:19 +00002061static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002062_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2063{
2064 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2065 (__v16sf) __B,
2066 -(__v16sf) __C,
2067 (__mmask16) __U,
2068 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002069}
2070
Michael Kupersteine45af542015-06-30 13:36:19 +00002071static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002072_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2073{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002074 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2075 (__v16sf) __B,
2076 (__v16sf) __C,
2077 (__mmask16) -1,
2078 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002079}
2080
Michael Kupersteine45af542015-06-30 13:36:19 +00002081static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002082_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2083{
2084 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2085 (__v16sf) __B,
2086 (__v16sf) __C,
2087 (__mmask16) __U,
2088 _MM_FROUND_CUR_DIRECTION);
2089}
2090
Michael Kupersteine45af542015-06-30 13:36:19 +00002091static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002092_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2093{
2094 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2095 (__v16sf) __B,
2096 (__v16sf) __C,
2097 (__mmask16) __U,
2098 _MM_FROUND_CUR_DIRECTION);
2099}
2100
Michael Kupersteine45af542015-06-30 13:36:19 +00002101static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002102_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2103{
2104 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2105 (__v16sf) __B,
2106 -(__v16sf) __C,
2107 (__mmask16) -1,
2108 _MM_FROUND_CUR_DIRECTION);
2109}
2110
Michael Kupersteine45af542015-06-30 13:36:19 +00002111static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002112_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2113{
2114 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2115 (__v16sf) __B,
2116 -(__v16sf) __C,
2117 (__mmask16) __U,
2118 _MM_FROUND_CUR_DIRECTION);
2119}
2120
2121#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
2122 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2123 (__v8df) (B), (__v8df) (C), \
2124 (__mmask8) -1, (R)); })
2125
2126
2127#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
2128 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2129 (__v8df) (B), (__v8df) (C), \
2130 (__mmask8) (U), (R)); })
2131
2132
2133#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
2134 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
2135 (__v8df) (B), (__v8df) (C), \
2136 (__mmask8) (U), (R)); })
2137
2138
2139#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
2140 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2141 (__v8df) (B), (__v8df) (C), \
2142 (__mmask8) (U), (R)); })
2143
2144
2145#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
2146 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2147 (__v8df) (B), -(__v8df) (C), \
2148 (__mmask8) -1, (R)); })
2149
2150
2151#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
2152 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2153 (__v8df) (B), -(__v8df) (C), \
2154 (__mmask8) (U), (R)); })
2155
2156
2157#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
2158 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2159 (__v8df) (B), -(__v8df) (C), \
2160 (__mmask8) (U), (R)); })
2161
2162
Michael Kupersteine45af542015-06-30 13:36:19 +00002163static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002164_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2165{
2166 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2167 (__v8df) __B,
2168 (__v8df) __C,
2169 (__mmask8) -1,
2170 _MM_FROUND_CUR_DIRECTION);
2171}
2172
Michael Kupersteine45af542015-06-30 13:36:19 +00002173static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002174_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2175{
2176 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2177 (__v8df) __B,
2178 (__v8df) __C,
2179 (__mmask8) __U,
2180 _MM_FROUND_CUR_DIRECTION);
2181}
2182
Michael Kupersteine45af542015-06-30 13:36:19 +00002183static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002184_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2185{
2186 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2187 (__v8df) __B,
2188 (__v8df) __C,
2189 (__mmask8) __U,
2190 _MM_FROUND_CUR_DIRECTION);
2191}
2192
Michael Kupersteine45af542015-06-30 13:36:19 +00002193static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002194_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2195{
2196 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2197 (__v8df) __B,
2198 (__v8df) __C,
2199 (__mmask8) __U,
2200 _MM_FROUND_CUR_DIRECTION);
2201}
2202
Michael Kupersteine45af542015-06-30 13:36:19 +00002203static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002204_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2205{
2206 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2207 (__v8df) __B,
2208 -(__v8df) __C,
2209 (__mmask8) -1,
2210 _MM_FROUND_CUR_DIRECTION);
2211}
2212
Michael Kupersteine45af542015-06-30 13:36:19 +00002213static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002214_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2215{
2216 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2217 (__v8df) __B,
2218 -(__v8df) __C,
2219 (__mmask8) __U,
2220 _MM_FROUND_CUR_DIRECTION);
2221}
2222
Michael Kupersteine45af542015-06-30 13:36:19 +00002223static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002224_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2225{
2226 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2227 (__v8df) __B,
2228 -(__v8df) __C,
2229 (__mmask8) __U,
2230 _MM_FROUND_CUR_DIRECTION);
2231}
2232
2233#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2234 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2235 (__v16sf) (B), (__v16sf) (C), \
2236 (__mmask16) -1, (R)); })
2237
2238
2239#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2240 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2241 (__v16sf) (B), (__v16sf) (C), \
2242 (__mmask16) (U), (R)); })
2243
2244
2245#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2246 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2247 (__v16sf) (B), (__v16sf) (C), \
2248 (__mmask16) (U), (R)); })
2249
2250
2251#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2252 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2253 (__v16sf) (B), (__v16sf) (C), \
2254 (__mmask16) (U), (R)); })
2255
2256
2257#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2258 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2259 (__v16sf) (B), -(__v16sf) (C), \
2260 (__mmask16) -1, (R)); })
2261
2262
2263#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2264 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2265 (__v16sf) (B), -(__v16sf) (C), \
2266 (__mmask16) (U), (R)); })
2267
2268
2269#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2270 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2271 (__v16sf) (B), -(__v16sf) (C), \
2272 (__mmask16) (U), (R)); })
2273
2274
Michael Kupersteine45af542015-06-30 13:36:19 +00002275static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002276_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2277{
2278 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2279 (__v16sf) __B,
2280 (__v16sf) __C,
2281 (__mmask16) -1,
2282 _MM_FROUND_CUR_DIRECTION);
2283}
2284
Michael Kupersteine45af542015-06-30 13:36:19 +00002285static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002286_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2287{
2288 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2289 (__v16sf) __B,
2290 (__v16sf) __C,
2291 (__mmask16) __U,
2292 _MM_FROUND_CUR_DIRECTION);
2293}
2294
Michael Kupersteine45af542015-06-30 13:36:19 +00002295static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002296_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2297{
2298 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2299 (__v16sf) __B,
2300 (__v16sf) __C,
2301 (__mmask16) __U,
2302 _MM_FROUND_CUR_DIRECTION);
2303}
2304
Michael Kupersteine45af542015-06-30 13:36:19 +00002305static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002306_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2307{
2308 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2309 (__v16sf) __B,
2310 (__v16sf) __C,
2311 (__mmask16) __U,
2312 _MM_FROUND_CUR_DIRECTION);
2313}
2314
Michael Kupersteine45af542015-06-30 13:36:19 +00002315static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002316_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2317{
2318 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2319 (__v16sf) __B,
2320 -(__v16sf) __C,
2321 (__mmask16) -1,
2322 _MM_FROUND_CUR_DIRECTION);
2323}
2324
Michael Kupersteine45af542015-06-30 13:36:19 +00002325static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002326_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2327{
2328 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2329 (__v16sf) __B,
2330 -(__v16sf) __C,
2331 (__mmask16) __U,
2332 _MM_FROUND_CUR_DIRECTION);
2333}
2334
Michael Kupersteine45af542015-06-30 13:36:19 +00002335static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002336_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2337{
2338 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2339 (__v16sf) __B,
2340 -(__v16sf) __C,
2341 (__mmask16) __U,
2342 _MM_FROUND_CUR_DIRECTION);
2343}
2344
2345#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2346 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2347 (__v8df) (B), (__v8df) (C), \
2348 (__mmask8) (U), (R)); })
2349
2350
Michael Kupersteine45af542015-06-30 13:36:19 +00002351static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002352_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2353{
2354 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2355 (__v8df) __B,
2356 (__v8df) __C,
2357 (__mmask8) __U,
2358 _MM_FROUND_CUR_DIRECTION);
2359}
2360
2361#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2362 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2363 (__v16sf) (B), (__v16sf) (C), \
2364 (__mmask16) (U), (R)); })
2365
2366
Michael Kupersteine45af542015-06-30 13:36:19 +00002367static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002368_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2369{
2370 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2371 (__v16sf) __B,
2372 (__v16sf) __C,
2373 (__mmask16) __U,
2374 _MM_FROUND_CUR_DIRECTION);
2375}
2376
2377#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2378 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2379 (__v8df) (B), (__v8df) (C), \
2380 (__mmask8) (U), (R)); })
2381
2382
Michael Kupersteine45af542015-06-30 13:36:19 +00002383static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002384_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2385{
2386 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2387 (__v8df) __B,
2388 (__v8df) __C,
2389 (__mmask8) __U,
2390 _MM_FROUND_CUR_DIRECTION);
2391}
2392
2393#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2394 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2395 (__v16sf) (B), (__v16sf) (C), \
2396 (__mmask16) (U), (R)); })
2397
2398
Michael Kupersteine45af542015-06-30 13:36:19 +00002399static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002400_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2401{
2402 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2403 (__v16sf) __B,
2404 (__v16sf) __C,
2405 (__mmask16) __U,
2406 _MM_FROUND_CUR_DIRECTION);
2407}
2408
2409#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2410 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2411 (__v8df) (B), (__v8df) (C), \
2412 (__mmask8) (U), (R)); })
2413
2414
Michael Kupersteine45af542015-06-30 13:36:19 +00002415static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002416_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2417{
2418 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2419 (__v8df) __B,
2420 (__v8df) __C,
2421 (__mmask8) __U,
2422 _MM_FROUND_CUR_DIRECTION);
2423}
2424
2425#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2426 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2427 (__v16sf) (B), (__v16sf) (C), \
2428 (__mmask16) (U), (R)); })
2429
2430
Michael Kupersteine45af542015-06-30 13:36:19 +00002431static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002432_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2433{
2434 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2435 (__v16sf) __B,
2436 (__v16sf) __C,
2437 (__mmask16) __U,
2438 _MM_FROUND_CUR_DIRECTION);
2439}
2440
2441#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2442 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2443 (__v8df) (B), (__v8df) (C), \
2444 (__mmask8) (U), (R)); })
2445
2446
2447#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2448 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2449 (__v8df) (B), (__v8df) (C), \
2450 (__mmask8) (U), (R)); })
2451
2452
Michael Kupersteine45af542015-06-30 13:36:19 +00002453static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002454_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2455{
2456 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2457 (__v8df) __B,
2458 (__v8df) __C,
2459 (__mmask8) __U,
2460 _MM_FROUND_CUR_DIRECTION);
2461}
2462
Michael Kupersteine45af542015-06-30 13:36:19 +00002463static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002464_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2465{
2466 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2467 (__v8df) __B,
2468 (__v8df) __C,
2469 (__mmask8) __U,
2470 _MM_FROUND_CUR_DIRECTION);
2471}
2472
2473#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2474 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2475 (__v16sf) (B), (__v16sf) (C), \
2476 (__mmask16) (U), (R)); })
2477
2478
2479#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2480 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2481 (__v16sf) (B), (__v16sf) (C), \
2482 (__mmask16) (U), (R)); })
2483
2484
Michael Kupersteine45af542015-06-30 13:36:19 +00002485static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002486_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2487{
2488 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2489 (__v16sf) __B,
2490 (__v16sf) __C,
2491 (__mmask16) __U,
2492 _MM_FROUND_CUR_DIRECTION);
2493}
2494
Michael Kupersteine45af542015-06-30 13:36:19 +00002495static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002496_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2497{
2498 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2499 (__v16sf) __B,
2500 (__v16sf) __C,
2501 (__mmask16) __U,
2502 _MM_FROUND_CUR_DIRECTION);
2503}
2504
2505
2506
Adam Nemet0d5bb552014-07-28 17:14:40 +00002507/* Vector permutations */
2508
Michael Kupersteine45af542015-06-30 13:36:19 +00002509static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002510_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2511{
2512 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2513 /* idx */ ,
2514 (__v16si) __A,
2515 (__v16si) __B,
2516 (__mmask16) -1);
2517}
Michael Kupersteine45af542015-06-30 13:36:19 +00002518static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002519_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2520{
2521 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2522 /* idx */ ,
2523 (__v8di) __A,
2524 (__v8di) __B,
2525 (__mmask8) -1);
2526}
2527
Michael Kupersteine45af542015-06-30 13:36:19 +00002528static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002529_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2530{
2531 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2532 /* idx */ ,
2533 (__v8df) __A,
2534 (__v8df) __B,
2535 (__mmask8) -1);
2536}
Michael Kupersteine45af542015-06-30 13:36:19 +00002537static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002538_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2539{
2540 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2541 /* idx */ ,
2542 (__v16sf) __A,
2543 (__v16sf) __B,
2544 (__mmask16) -1);
2545}
2546
Craig Topper67826a52015-02-01 07:35:40 +00002547#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2548 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2549 (__v8di)(__m512i)(B), \
2550 (I), (__v8di)_mm512_setzero_si512(), \
2551 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002552
Craig Topper67826a52015-02-01 07:35:40 +00002553#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
2554 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
2555 (__v16si)(__m512i)(B), \
2556 (I), (__v16si)_mm512_setzero_si512(), \
2557 (__mmask16)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002558
Adam Nemetf893ede2015-01-19 20:12:05 +00002559/* Vector Extract */
2560
2561#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Adam Nemetf893ede2015-01-19 20:12:05 +00002562 (__m256d) \
Craig Topper3a71f352015-11-29 06:50:33 +00002563 __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002564 (I), \
2565 (__v4df)_mm256_setzero_si256(), \
2566 (__mmask8) -1); })
2567
2568#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Adam Nemetf893ede2015-01-19 20:12:05 +00002569 (__m128) \
Craig Topper3a71f352015-11-29 06:50:33 +00002570 __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002571 (I), \
2572 (__v4sf)_mm_setzero_ps(), \
2573 (__mmask8) -1); })
2574
Adam Nemet0d5bb552014-07-28 17:14:40 +00002575/* Vector Blend */
2576
Michael Kupersteine45af542015-06-30 13:36:19 +00002577static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002578_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2579{
2580 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2581 (__v8df) __W,
2582 (__mmask8) __U);
2583}
2584
Michael Kupersteine45af542015-06-30 13:36:19 +00002585static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002586_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2587{
2588 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2589 (__v16sf) __W,
2590 (__mmask16) __U);
2591}
2592
Michael Kupersteine45af542015-06-30 13:36:19 +00002593static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002594_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2595{
2596 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2597 (__v8di) __W,
2598 (__mmask8) __U);
2599}
2600
Michael Kupersteine45af542015-06-30 13:36:19 +00002601static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002602_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2603{
2604 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2605 (__v16si) __W,
2606 (__mmask16) __U);
2607}
2608
2609/* Compare */
2610
Craig Topper53565c62015-02-01 22:27:40 +00002611#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2612 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2613 (__v16sf)(__m512)(B), \
2614 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002615
Craig Topper53565c62015-02-01 22:27:40 +00002616#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2617 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2618 (__v16sf)(__m512)(B), \
2619 (P), (__mmask16)(U), (R)); })
2620
2621#define _mm512_cmp_ps_mask(A, B, P) \
2622 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2623
2624#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2625 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2626
2627#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2628 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2629 (__v8df)(__m512d)(B), \
2630 (P), (__mmask8)-1, (R)); })
2631
2632#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2633 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2634 (__v8df)(__m512d)(B), \
2635 (P), (__mmask8)(U), (R)); })
2636
2637#define _mm512_cmp_pd_mask(A, B, P) \
2638 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2639
2640#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2641 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002642
2643/* Conversion */
2644
Michael Kupersteine45af542015-06-30 13:36:19 +00002645static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002646_mm512_cvttps_epu32(__m512 __A)
2647{
2648 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2649 (__v16si)
2650 _mm512_setzero_si512 (),
2651 (__mmask16) -1,
2652 _MM_FROUND_CUR_DIRECTION);
2653}
2654
Craig Topper72c7d512015-02-01 07:35:35 +00002655#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2656 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2657 (__v16sf)_mm512_setzero_ps(), \
2658 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002659
Craig Topper72c7d512015-02-01 07:35:35 +00002660#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2661 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2662 (__v16sf)_mm512_setzero_ps(), \
2663 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002664
Michael Kupersteine45af542015-06-30 13:36:19 +00002665static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002666_mm512_cvtepi32_pd(__m256i __A)
2667{
2668 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2669 (__v8df)
2670 _mm512_setzero_pd (),
2671 (__mmask8) -1);
2672}
2673
Michael Kupersteine45af542015-06-30 13:36:19 +00002674static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002675_mm512_cvtepu32_pd(__m256i __A)
2676{
2677 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2678 (__v8df)
2679 _mm512_setzero_pd (),
2680 (__mmask8) -1);
2681}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002682
Craig Topper72c7d512015-02-01 07:35:35 +00002683#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2684 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2685 (__v8sf)_mm256_setzero_ps(), \
2686 (__mmask8)-1, (R)); })
2687
2688#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2689 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2690 (__v16hi)_mm256_setzero_si256(), \
2691 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002692
Michael Kupersteine45af542015-06-30 13:36:19 +00002693static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002694_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002695{
2696 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2697 (__v16sf)
2698 _mm512_setzero_ps (),
2699 (__mmask16) -1,
2700 _MM_FROUND_CUR_DIRECTION);
2701}
2702
Michael Kupersteine45af542015-06-30 13:36:19 +00002703static __inline __m512i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002704_mm512_cvttps_epi32(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002705{
2706 return (__m512i)
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002707 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002708 (__v16si) _mm512_setzero_si512 (),
2709 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2710}
2711
Michael Kupersteine45af542015-06-30 13:36:19 +00002712static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002713_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002714{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002715 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002716 (__v8si)_mm256_setzero_si256(),
2717 (__mmask8) -1,
2718 _MM_FROUND_CUR_DIRECTION);
2719}
2720
Craig Topper72c7d512015-02-01 07:35:35 +00002721#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2722 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2723 (__v8si)_mm256_setzero_si256(), \
2724 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002725
Craig Topper72c7d512015-02-01 07:35:35 +00002726#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2727 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2728 (__v16si)_mm512_setzero_si512(), \
2729 (__mmask16)-1, (R)); })
2730
2731#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2732 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2733 (__v16si)_mm512_setzero_si512(), \
2734 (__mmask16)-1, (R)); })
2735
2736#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2737 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2738 (__v8si)_mm256_setzero_si256(), \
2739 (__mmask8)-1, (R)); })
2740
2741#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2742 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2743 (__v16si)_mm512_setzero_si512(), \
2744 (__mmask16)-1, (R)); })
2745
2746#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2747 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2748 (__v8si)_mm256_setzero_si256(), \
2749 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002750
Adam Nemet63a951e2015-01-14 01:31:17 +00002751/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00002752static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002753_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2754{
2755 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2756}
2757
Michael Kupersteine45af542015-06-30 13:36:19 +00002758static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002759_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2760{
2761 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2762}
2763
Michael Kupersteine45af542015-06-30 13:36:19 +00002764static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002765_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2766{
2767 return __builtin_shufflevector(__a, __b,
2768 2, 18, 3, 19,
2769 2+4, 18+4, 3+4, 19+4,
2770 2+8, 18+8, 3+8, 19+8,
2771 2+12, 18+12, 3+12, 19+12);
2772}
2773
Michael Kupersteine45af542015-06-30 13:36:19 +00002774static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002775_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2776{
2777 return __builtin_shufflevector(__a, __b,
2778 0, 16, 1, 17,
2779 0+4, 16+4, 1+4, 17+4,
2780 0+8, 16+8, 1+8, 17+8,
2781 0+12, 16+12, 1+12, 17+12);
2782}
2783
Adam Nemet0d5bb552014-07-28 17:14:40 +00002784/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002785
Michael Kupersteine45af542015-06-30 13:36:19 +00002786static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002787_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002788{
2789 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2790 (__v16si) __B,
2791 (__mmask16) -1);
2792}
2793
Michael Kupersteine45af542015-06-30 13:36:19 +00002794static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002795_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002796{
2797 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2798 (__v8di) __B,
2799 (__mmask8) -1);
2800}
2801
Adam Nemet0d5bb552014-07-28 17:14:40 +00002802/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002803
Michael Kupersteine45af542015-06-30 13:36:19 +00002804static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002805_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002806{
2807 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2808 (__v16si)
2809 _mm512_setzero_si512 (),
2810 (__mmask16) __U);
2811}
2812
Michael Kupersteine45af542015-06-30 13:36:19 +00002813static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002814_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002815{
2816 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2817 (__v8di)
2818 _mm512_setzero_si512 (),
2819 (__mmask8) __U);
2820}
2821
Michael Kupersteine45af542015-06-30 13:36:19 +00002822static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002823_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002824{
2825 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2826 (__v16sf)
2827 _mm512_setzero_ps (),
2828 (__mmask16) __U);
2829}
2830
Michael Kupersteine45af542015-06-30 13:36:19 +00002831static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002832_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002833{
2834 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2835 (__v8df)
2836 _mm512_setzero_pd (),
2837 (__mmask8) __U);
2838}
2839
Michael Kupersteine45af542015-06-30 13:36:19 +00002840static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002841_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2842{
2843 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2844 (__v16sf)
2845 _mm512_setzero_ps (),
2846 (__mmask16) __U);
2847}
2848
Michael Kupersteine45af542015-06-30 13:36:19 +00002849static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002850_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2851{
2852 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2853 (__v8df)
2854 _mm512_setzero_pd (),
2855 (__mmask8) __U);
2856}
2857
Michael Kupersteine45af542015-06-30 13:36:19 +00002858static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002859_mm512_loadu_pd(double const *__p)
2860{
2861 struct __loadu_pd {
2862 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002863 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002864 return ((struct __loadu_pd*)__p)->__v;
2865}
2866
Michael Kupersteine45af542015-06-30 13:36:19 +00002867static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002868_mm512_loadu_ps(float const *__p)
2869{
2870 struct __loadu_ps {
2871 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002872 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002873 return ((struct __loadu_ps*)__p)->__v;
2874}
2875
Michael Kupersteine45af542015-06-30 13:36:19 +00002876static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00002877_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00002878{
2879 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2880 (__v16sf)
2881 _mm512_setzero_ps (),
2882 (__mmask16) -1);
2883}
2884
Michael Kupersteine45af542015-06-30 13:36:19 +00002885static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00002886_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00002887{
2888 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2889 (__v8df)
2890 _mm512_setzero_pd (),
2891 (__mmask8) -1);
2892}
2893
Adam Nemet0d5bb552014-07-28 17:14:40 +00002894/* SIMD store ops */
2895
Michael Kupersteine45af542015-06-30 13:36:19 +00002896static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002897_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002898{
2899 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2900 (__mmask8) __U);
2901}
2902
Michael Kupersteine45af542015-06-30 13:36:19 +00002903static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002904_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002905{
2906 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2907 (__mmask16) __U);
2908}
2909
Michael Kupersteine45af542015-06-30 13:36:19 +00002910static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002911_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002912{
2913 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2914}
2915
Michael Kupersteine45af542015-06-30 13:36:19 +00002916static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002917_mm512_storeu_pd(void *__P, __m512d __A)
2918{
2919 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2920}
2921
Michael Kupersteine45af542015-06-30 13:36:19 +00002922static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002923_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002924{
2925 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2926 (__mmask16) __U);
2927}
2928
Michael Kupersteine45af542015-06-30 13:36:19 +00002929static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002930_mm512_storeu_ps(void *__P, __m512 __A)
2931{
2932 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2933}
2934
Michael Kupersteine45af542015-06-30 13:36:19 +00002935static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002936_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002937{
Adam Nemetc0cff242015-01-16 18:51:50 +00002938 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002939}
2940
Michael Kupersteine45af542015-06-30 13:36:19 +00002941static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002942_mm512_store_pd(void *__P, __m512d __A)
2943{
2944 *(__m512d*)__P = __A;
2945}
2946
Michael Kupersteine45af542015-06-30 13:36:19 +00002947static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002948_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2949{
2950 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2951 (__mmask16) __U);
2952}
2953
Michael Kupersteine45af542015-06-30 13:36:19 +00002954static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002955_mm512_store_ps(void *__P, __m512 __A)
2956{
2957 *(__m512*)__P = __A;
2958}
2959
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002960/* Mask ops */
2961
Michael Kupersteine45af542015-06-30 13:36:19 +00002962static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002963_mm512_knot(__mmask16 __M)
2964{
2965 return __builtin_ia32_knothi(__M);
2966}
2967
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002968/* Integer compare */
2969
Michael Kupersteine45af542015-06-30 13:36:19 +00002970static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002971_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2972 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2973 (__mmask16)-1);
2974}
2975
Michael Kupersteine45af542015-06-30 13:36:19 +00002976static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002977_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2978 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2979 __u);
2980}
2981
Michael Kupersteine45af542015-06-30 13:36:19 +00002982static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002983_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2984 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2985 (__mmask16)-1);
2986}
2987
Michael Kupersteine45af542015-06-30 13:36:19 +00002988static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002989_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2990 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2991 __u);
2992}
2993
Michael Kupersteine45af542015-06-30 13:36:19 +00002994static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002995_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2996 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2997 __u);
2998}
2999
Michael Kupersteine45af542015-06-30 13:36:19 +00003000static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003001_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
3002 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3003 (__mmask8)-1);
3004}
3005
Michael Kupersteine45af542015-06-30 13:36:19 +00003006static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003007_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
3008 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3009 (__mmask8)-1);
3010}
3011
Michael Kupersteine45af542015-06-30 13:36:19 +00003012static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003013_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3014 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3015 __u);
3016}
3017
Michael Kupersteine45af542015-06-30 13:36:19 +00003018static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003019_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
3020 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3021 (__mmask16)-1);
3022}
3023
Michael Kupersteine45af542015-06-30 13:36:19 +00003024static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003025_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3026 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3027 __u);
3028}
3029
Michael Kupersteine45af542015-06-30 13:36:19 +00003030static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003031_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
3032 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3033 (__mmask16)-1);
3034}
3035
Michael Kupersteine45af542015-06-30 13:36:19 +00003036static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003037_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3038 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3039 __u);
3040}
3041
Michael Kupersteine45af542015-06-30 13:36:19 +00003042static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003043_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
3044 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3045 (__mmask8)-1);
3046}
3047
Michael Kupersteine45af542015-06-30 13:36:19 +00003048static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003049_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3050 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3051 __u);
3052}
3053
Michael Kupersteine45af542015-06-30 13:36:19 +00003054static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003055_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
3056 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3057 (__mmask8)-1);
3058}
3059
Michael Kupersteine45af542015-06-30 13:36:19 +00003060static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003061_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3062 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3063 __u);
3064}
3065
Michael Kupersteine45af542015-06-30 13:36:19 +00003066static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003067_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
3068 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3069 (__mmask16)-1);
3070}
3071
Michael Kupersteine45af542015-06-30 13:36:19 +00003072static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003073_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3074 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3075 __u);
3076}
3077
Michael Kupersteine45af542015-06-30 13:36:19 +00003078static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003079_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
3080 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3081 (__mmask16)-1);
3082}
3083
Michael Kupersteine45af542015-06-30 13:36:19 +00003084static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003085_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3086 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3087 __u);
3088}
3089
Michael Kupersteine45af542015-06-30 13:36:19 +00003090static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003091_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3092 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3093 __u);
3094}
3095
Michael Kupersteine45af542015-06-30 13:36:19 +00003096static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003097_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
3098 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3099 (__mmask8)-1);
3100}
3101
Michael Kupersteine45af542015-06-30 13:36:19 +00003102static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003103_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
3104 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3105 (__mmask8)-1);
3106}
3107
Michael Kupersteine45af542015-06-30 13:36:19 +00003108static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003109_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3110 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3111 __u);
3112}
3113
Michael Kupersteine45af542015-06-30 13:36:19 +00003114static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003115_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
3116 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3117 (__mmask16)-1);
3118}
3119
Michael Kupersteine45af542015-06-30 13:36:19 +00003120static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003121_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3122 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3123 __u);
3124}
3125
Michael Kupersteine45af542015-06-30 13:36:19 +00003126static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003127_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
3128 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3129 (__mmask16)-1);
3130}
3131
Michael Kupersteine45af542015-06-30 13:36:19 +00003132static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003133_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3134 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3135 __u);
3136}
3137
Michael Kupersteine45af542015-06-30 13:36:19 +00003138static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003139_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
3140 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3141 (__mmask8)-1);
3142}
3143
Michael Kupersteine45af542015-06-30 13:36:19 +00003144static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003145_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3146 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3147 __u);
3148}
3149
Michael Kupersteine45af542015-06-30 13:36:19 +00003150static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003151_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
3152 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3153 (__mmask8)-1);
3154}
3155
Michael Kupersteine45af542015-06-30 13:36:19 +00003156static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003157_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3158 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3159 __u);
3160}
3161
Michael Kupersteine45af542015-06-30 13:36:19 +00003162static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003163_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
3164 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3165 (__mmask16)-1);
3166}
3167
Michael Kupersteine45af542015-06-30 13:36:19 +00003168static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003169_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3170 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3171 __u);
3172}
3173
Michael Kupersteine45af542015-06-30 13:36:19 +00003174static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003175_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
3176 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3177 (__mmask16)-1);
3178}
3179
Michael Kupersteine45af542015-06-30 13:36:19 +00003180static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003181_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3182 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3183 __u);
3184}
3185
Michael Kupersteine45af542015-06-30 13:36:19 +00003186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003187_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
3188 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3189 (__mmask8)-1);
3190}
3191
Michael Kupersteine45af542015-06-30 13:36:19 +00003192static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003193_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3194 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3195 __u);
3196}
3197
Michael Kupersteine45af542015-06-30 13:36:19 +00003198static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003199_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
3200 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3201 (__mmask8)-1);
3202}
3203
Michael Kupersteine45af542015-06-30 13:36:19 +00003204static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003205_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3206 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3207 __u);
3208}
3209
Michael Kupersteine45af542015-06-30 13:36:19 +00003210static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003211_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
3212 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3213 (__mmask16)-1);
3214}
3215
Michael Kupersteine45af542015-06-30 13:36:19 +00003216static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003217_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3218 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3219 __u);
3220}
3221
Michael Kupersteine45af542015-06-30 13:36:19 +00003222static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003223_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
3224 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3225 (__mmask16)-1);
3226}
3227
Michael Kupersteine45af542015-06-30 13:36:19 +00003228static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003229_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3230 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3231 __u);
3232}
3233
Michael Kupersteine45af542015-06-30 13:36:19 +00003234static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003235_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3236 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3237 (__mmask8)-1);
3238}
3239
Michael Kupersteine45af542015-06-30 13:36:19 +00003240static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003241_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3242 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3243 __u);
3244}
3245
Michael Kupersteine45af542015-06-30 13:36:19 +00003246static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003247_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3248 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3249 (__mmask8)-1);
3250}
3251
Michael Kupersteine45af542015-06-30 13:36:19 +00003252static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003253_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3254 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3255 __u);
3256}
3257
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003258static __inline__ __m512i __DEFAULT_FN_ATTRS
3259_mm512_cvtepi8_epi32 (__m128i __A)
3260{
3261 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3262 (__v16si)
3263 _mm512_setzero_si512 (),
3264 (__mmask16) -1);
3265}
3266
3267static __inline__ __m512i __DEFAULT_FN_ATTRS
3268_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3269{
3270 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3271 (__v16si) __W,
3272 (__mmask16) __U);
3273}
3274
3275static __inline__ __m512i __DEFAULT_FN_ATTRS
3276_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
3277{
3278 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3279 (__v16si)
3280 _mm512_setzero_si512 (),
3281 (__mmask16) __U);
3282}
3283
3284static __inline__ __m512i __DEFAULT_FN_ATTRS
3285_mm512_cvtepi8_epi64 (__m128i __A)
3286{
3287 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3288 (__v8di)
3289 _mm512_setzero_si512 (),
3290 (__mmask8) -1);
3291}
3292
3293static __inline__ __m512i __DEFAULT_FN_ATTRS
3294_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3295{
3296 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3297 (__v8di) __W,
3298 (__mmask8) __U);
3299}
3300
3301static __inline__ __m512i __DEFAULT_FN_ATTRS
3302_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
3303{
3304 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3305 (__v8di)
3306 _mm512_setzero_si512 (),
3307 (__mmask8) __U);
3308}
3309
3310static __inline__ __m512i __DEFAULT_FN_ATTRS
3311_mm512_cvtepi32_epi64 (__m256i __X)
3312{
3313 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3314 (__v8di)
3315 _mm512_setzero_si512 (),
3316 (__mmask8) -1);
3317}
3318
3319static __inline__ __m512i __DEFAULT_FN_ATTRS
3320_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3321{
3322 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3323 (__v8di) __W,
3324 (__mmask8) __U);
3325}
3326
3327static __inline__ __m512i __DEFAULT_FN_ATTRS
3328_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
3329{
3330 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3331 (__v8di)
3332 _mm512_setzero_si512 (),
3333 (__mmask8) __U);
3334}
3335
3336static __inline__ __m512i __DEFAULT_FN_ATTRS
3337_mm512_cvtepi16_epi32 (__m256i __A)
3338{
3339 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3340 (__v16si)
3341 _mm512_setzero_si512 (),
3342 (__mmask16) -1);
3343}
3344
3345static __inline__ __m512i __DEFAULT_FN_ATTRS
3346_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3347{
3348 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3349 (__v16si) __W,
3350 (__mmask16) __U);
3351}
3352
3353static __inline__ __m512i __DEFAULT_FN_ATTRS
3354_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
3355{
3356 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3357 (__v16si)
3358 _mm512_setzero_si512 (),
3359 (__mmask16) __U);
3360}
3361
3362static __inline__ __m512i __DEFAULT_FN_ATTRS
3363_mm512_cvtepi16_epi64 (__m128i __A)
3364{
3365 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3366 (__v8di)
3367 _mm512_setzero_si512 (),
3368 (__mmask8) -1);
3369}
3370
3371static __inline__ __m512i __DEFAULT_FN_ATTRS
3372_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3373{
3374 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3375 (__v8di) __W,
3376 (__mmask8) __U);
3377}
3378
3379static __inline__ __m512i __DEFAULT_FN_ATTRS
3380_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
3381{
3382 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3383 (__v8di)
3384 _mm512_setzero_si512 (),
3385 (__mmask8) __U);
3386}
3387
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003388static __inline__ __m512i __DEFAULT_FN_ATTRS
3389_mm512_cvtepu8_epi32 (__m128i __A)
3390{
3391 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3392 (__v16si)
3393 _mm512_setzero_si512 (),
3394 (__mmask16) -1);
3395}
3396
3397static __inline__ __m512i __DEFAULT_FN_ATTRS
3398_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3399{
3400 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3401 (__v16si) __W,
3402 (__mmask16) __U);
3403}
3404
3405static __inline__ __m512i __DEFAULT_FN_ATTRS
3406_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
3407{
3408 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3409 (__v16si)
3410 _mm512_setzero_si512 (),
3411 (__mmask16) __U);
3412}
3413
3414static __inline__ __m512i __DEFAULT_FN_ATTRS
3415_mm512_cvtepu8_epi64 (__m128i __A)
3416{
3417 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3418 (__v8di)
3419 _mm512_setzero_si512 (),
3420 (__mmask8) -1);
3421}
3422
3423static __inline__ __m512i __DEFAULT_FN_ATTRS
3424_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3425{
3426 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3427 (__v8di) __W,
3428 (__mmask8) __U);
3429}
3430
3431static __inline__ __m512i __DEFAULT_FN_ATTRS
3432_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
3433{
3434 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3435 (__v8di)
3436 _mm512_setzero_si512 (),
3437 (__mmask8) __U);
3438}
3439
3440static __inline__ __m512i __DEFAULT_FN_ATTRS
3441_mm512_cvtepu32_epi64 (__m256i __X)
3442{
3443 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3444 (__v8di)
3445 _mm512_setzero_si512 (),
3446 (__mmask8) -1);
3447}
3448
3449static __inline__ __m512i __DEFAULT_FN_ATTRS
3450_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3451{
3452 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3453 (__v8di) __W,
3454 (__mmask8) __U);
3455}
3456
3457static __inline__ __m512i __DEFAULT_FN_ATTRS
3458_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
3459{
3460 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3461 (__v8di)
3462 _mm512_setzero_si512 (),
3463 (__mmask8) __U);
3464}
3465
3466static __inline__ __m512i __DEFAULT_FN_ATTRS
3467_mm512_cvtepu16_epi32 (__m256i __A)
3468{
3469 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3470 (__v16si)
3471 _mm512_setzero_si512 (),
3472 (__mmask16) -1);
3473}
3474
3475static __inline__ __m512i __DEFAULT_FN_ATTRS
3476_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3477{
3478 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3479 (__v16si) __W,
3480 (__mmask16) __U);
3481}
3482
3483static __inline__ __m512i __DEFAULT_FN_ATTRS
3484_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
3485{
3486 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3487 (__v16si)
3488 _mm512_setzero_si512 (),
3489 (__mmask16) __U);
3490}
3491
3492static __inline__ __m512i __DEFAULT_FN_ATTRS
3493_mm512_cvtepu16_epi64 (__m128i __A)
3494{
3495 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3496 (__v8di)
3497 _mm512_setzero_si512 (),
3498 (__mmask8) -1);
3499}
3500
3501static __inline__ __m512i __DEFAULT_FN_ATTRS
3502_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3503{
3504 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3505 (__v8di) __W,
3506 (__mmask8) __U);
3507}
3508
3509static __inline__ __m512i __DEFAULT_FN_ATTRS
3510_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
3511{
3512 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3513 (__v8di)
3514 _mm512_setzero_si512 (),
3515 (__mmask8) __U);
3516}
3517
Michael Zuckermane98cc742016-02-23 15:59:47 +00003518static __inline__ __m512i __DEFAULT_FN_ATTRS
3519_mm512_rorv_epi32 (__m512i __A, __m512i __B)
3520{
3521 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3522 (__v16si) __B,
3523 (__v16si)
3524 _mm512_setzero_si512 (),
3525 (__mmask16) -1);
3526}
3527
3528static __inline__ __m512i __DEFAULT_FN_ATTRS
3529_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
3530{
3531 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3532 (__v16si) __B,
3533 (__v16si) __W,
3534 (__mmask16) __U);
3535}
3536
3537static __inline__ __m512i __DEFAULT_FN_ATTRS
3538_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
3539{
3540 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3541 (__v16si) __B,
3542 (__v16si)
3543 _mm512_setzero_si512 (),
3544 (__mmask16) __U);
3545}
3546
3547static __inline__ __m512i __DEFAULT_FN_ATTRS
3548_mm512_rorv_epi64 (__m512i __A, __m512i __B)
3549{
3550 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3551 (__v8di) __B,
3552 (__v8di)
3553 _mm512_setzero_si512 (),
3554 (__mmask8) -1);
3555}
3556
3557static __inline__ __m512i __DEFAULT_FN_ATTRS
3558_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
3559{
3560 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3561 (__v8di) __B,
3562 (__v8di) __W,
3563 (__mmask8) __U);
3564}
3565
3566static __inline__ __m512i __DEFAULT_FN_ATTRS
3567_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
3568{
3569 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3570 (__v8di) __B,
3571 (__v8di)
3572 _mm512_setzero_si512 (),
3573 (__mmask8) __U);
3574}
3575
3576
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003577
Craig Topper4cac1c22015-01-25 23:30:07 +00003578#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003579 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3580 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003581 (__mmask16)-1); })
3582
3583#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003584 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3585 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003586 (__mmask16)-1); })
3587
3588#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003589 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3590 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003591 (__mmask8)-1); })
3592
3593#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003594 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3595 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003596 (__mmask8)-1); })
3597
3598#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003599 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3600 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003601 (__mmask16)(m)); })
3602
3603#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003604 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3605 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003606 (__mmask16)(m)); })
3607
3608#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003609 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3610 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003611 (__mmask8)(m)); })
3612
3613#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003614 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3615 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003616 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00003617
Michael Zuckerman38a27272016-02-22 09:05:41 +00003618#define _mm512_rol_epi32(a, b) __extension__ ({ \
3619 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3620 (__v16si)\
3621 _mm512_setzero_si512 (),\
3622 (__mmask16) -1); })
3623
3624#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
3625 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3626 (__v16si) (W),\
3627 (__mmask16) (U)); })
3628
3629#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
3630 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3631 (__v16si)\
3632 _mm512_setzero_si512 (),\
3633 (__mmask16) (U)); })
3634
3635#define _mm512_rol_epi64(a, b) __extension__ ({ \
3636 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3637 (__v8di)\
3638 _mm512_setzero_si512 (),\
3639 (__mmask8) -1); })
3640
3641#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
3642 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3643 (__v8di) (W),\
3644 (__mmask8) (U)); })
3645
3646#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
3647 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3648 (__v8di)\
3649 _mm512_setzero_si512 (),\
3650 (__mmask8) (U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00003651static __inline__ __m512i __DEFAULT_FN_ATTRS
3652_mm512_rolv_epi32 (__m512i __A, __m512i __B)
3653{
3654 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3655 (__v16si) __B,
3656 (__v16si)
3657 _mm512_setzero_si512 (),
3658 (__mmask16) -1);
3659}
3660
3661static __inline__ __m512i __DEFAULT_FN_ATTRS
3662_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
3663{
3664 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3665 (__v16si) __B,
3666 (__v16si) __W,
3667 (__mmask16) __U);
3668}
3669
3670static __inline__ __m512i __DEFAULT_FN_ATTRS
3671_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
3672{
3673 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3674 (__v16si) __B,
3675 (__v16si)
3676 _mm512_setzero_si512 (),
3677 (__mmask16) __U);
3678}
3679
3680static __inline__ __m512i __DEFAULT_FN_ATTRS
3681_mm512_rolv_epi64 (__m512i __A, __m512i __B)
3682{
3683 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3684 (__v8di) __B,
3685 (__v8di)
3686 _mm512_setzero_si512 (),
3687 (__mmask8) -1);
3688}
3689
3690static __inline__ __m512i __DEFAULT_FN_ATTRS
3691_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
3692{
3693 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3694 (__v8di) __B,
3695 (__v8di) __W,
3696 (__mmask8) __U);
3697}
3698
3699static __inline__ __m512i __DEFAULT_FN_ATTRS
3700_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
3701{
3702 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3703 (__v8di) __B,
3704 (__v8di)
3705 _mm512_setzero_si512 (),
3706 (__mmask8) __U);
3707}
3708
3709#define _mm512_ror_epi32( __A, __B) __extension__ ({ \
3710__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3711 (__v16si)\
3712 _mm512_setzero_si512 (),\
3713 (__mmask16) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003714})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003715
3716#define _mm512_mask_ror_epi32( __W, __U, __A, __B) __extension__ ({ \
3717__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3718 (__v16si)( __W),\
3719 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003720})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003721
3722#define _mm512_maskz_ror_epi32( __U, __A, __B) __extension__ ({ \
3723__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3724 (__v16si)\
3725 _mm512_setzero_si512 (),\
3726 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003727})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003728
3729#define _mm512_ror_epi64( __A, __B) __extension__ ({ \
3730__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3731 (__v8di)\
3732 _mm512_setzero_si512 (),\
3733 (__mmask8) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003734})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003735
3736#define _mm512_mask_ror_epi64( __W, __U, __A, __B) __extension__ ({ \
3737__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3738 (__v8di)( __W),\
3739 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003740})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003741
3742#define _mm512_maskz_ror_epi64( __U, __A, __B) __extension__ ({ \
3743__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3744 (__v8di)\
3745 _mm512_setzero_si512 (),\
3746 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003747})
Michael Zuckerman38a27272016-02-22 09:05:41 +00003748
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00003749#define _mm512_slli_epi32( __A, __B) __extension__ ({ \
3750__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
3751 (__v16si)\
3752 _mm512_setzero_si512 (),\
3753 (__mmask16) -1);\
3754})
3755
3756#define _mm512_mask_slli_epi32( __W, __U, __A ,__B) __extension__ ({ \
3757__builtin_ia32_pslldi512_mask ((__v16si) (__A), (__B),\
3758 (__v16si)( __W),\
3759 (__mmask16)( __U));\
3760})
3761
3762#define _mm512_maskz_slli_epi32( __U, __A, __B) __extension__ ({ \
3763__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
3764 (__v16si)\
3765 _mm512_setzero_si512 (),\
3766 (__mmask16)( __U));\
3767})
3768
3769#define _mm512_slli_epi64( __A, __B) __extension__ ({ \
3770__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
3771 (__v8di)\
3772 _mm512_setzero_si512 (),\
3773 (__mmask8) -1);\
3774})
3775
3776#define _mm512_mask_slli_epi64( __W, __U, __A ,__B) __extension__ ({ \
3777__builtin_ia32_psllqi512_mask ((__v8di) (__A), (__B),\
3778 (__v8di)( __W),\
3779 (__mmask8)( __U));\
3780})
3781
3782#define _mm512_maskz_slli_epi64( __U, __A, __B) __extension__ ({ \
3783__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
3784 (__v8di)\
3785 _mm512_setzero_si512 (),\
3786 (__mmask8)( __U));\
3787})
3788
Michael Zuckerman38a27272016-02-22 09:05:41 +00003789
Michael Zuckermand176d742016-03-01 17:49:03 +00003790
3791#define _mm512_srli_epi32( __A, __B) __extension__ ({ \
3792__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
3793 (__v16si)\
3794 _mm512_setzero_si512 (),\
3795 (__mmask16) -1);\
3796})
3797
3798#define _mm512_mask_srli_epi32( __W, __U, __A, __B) __extension__ ({ \
3799__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
3800 (__v16si)( __W),\
3801 (__mmask16)( __U));\
3802})
3803
3804#define _mm512_maskz_srli_epi32( __U, __A, __B) __extension__ ({ \
3805__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
3806 (__v16si)\
3807 _mm512_setzero_si512 (),\
3808 (__mmask16)( __U));\
3809})
3810
3811#define _mm512_srli_epi64( __A, __B) __extension__ ({ \
3812__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
3813 (__v8di)\
3814 _mm512_setzero_si512 (),\
3815 (__mmask8) -1);\
3816})
3817
3818#define _mm512_mask_srli_epi64( __W, __U, __A, __B) __extension__ ({ \
3819__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
3820 (__v8di)( __W),\
3821 (__mmask8)( __U));\
3822})
3823
3824#define _mm512_maskz_srli_epi64( __U, __A, __B) __extension__ ({ \
3825__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
3826 (__v8di)\
3827 _mm512_setzero_si512 (),\
3828 (__mmask8)( __U));\
3829})
3830
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00003831static __inline__ __m512i __DEFAULT_FN_ATTRS
3832_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3833{
3834 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
3835 (__v16si) __W,
3836 (__mmask16) __U);
3837}
3838
3839static __inline__ __m512i __DEFAULT_FN_ATTRS
3840_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
3841{
3842 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
3843 (__v16si)
3844 _mm512_setzero_si512 (),
3845 (__mmask16) __U);
3846}
3847
3848static __inline__ void __DEFAULT_FN_ATTRS
3849_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
3850{
3851 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
3852 (__mmask16) __U);
3853}
3854
3855static __inline__ __m512i __DEFAULT_FN_ATTRS
3856_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
3857{
3858 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
3859 (__v8di) __W,
3860 (__mmask8) __U);
3861}
3862
3863static __inline__ __m512i __DEFAULT_FN_ATTRS
3864_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
3865{
3866 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
3867 (__v8di)
3868 _mm512_setzero_si512 (),
3869 (__mmask8) __U);
3870}
3871
3872static __inline__ __m512i __DEFAULT_FN_ATTRS
3873_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3874{
3875 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
3876 (__v8di) __W,
3877 (__mmask8) __U);
3878}
3879
3880static __inline__ __m512i __DEFAULT_FN_ATTRS
3881_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
3882{
3883 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
3884 (__v8di)
3885 _mm512_setzero_si512 (),
3886 (__mmask8) __U);
3887}
3888
3889static __inline__ void __DEFAULT_FN_ATTRS
3890_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
3891{
3892 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
3893 (__mmask8) __U);
3894}
3895
3896
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00003897
3898static __inline__ __m512d __DEFAULT_FN_ATTRS
3899_mm512_movedup_pd (__m512d __A)
3900{
3901 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
3902 (__v8df)
3903 _mm512_undefined_pd (),
3904 (__mmask8) -1);
3905}
3906
3907static __inline__ __m512d __DEFAULT_FN_ATTRS
3908_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
3909{
3910 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
3911 (__v8df) __W,
3912 (__mmask8) __U);
3913}
3914
3915static __inline__ __m512d __DEFAULT_FN_ATTRS
3916_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
3917{
3918 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
3919 (__v8df)
3920 _mm512_setzero_pd (),
3921 (__mmask8) __U);
3922}
3923
Michael Zuckermandef78752016-03-28 12:23:09 +00003924#define _mm512_fixupimm_round_pd( __A, __B, __C, __imm, __R) __extension__ ({ \
3925__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3926 (__v8df)( __B),\
3927 (__v8di)( __C),\
3928 (__imm),\
3929 (__mmask8) -1, (__R));\
3930})
3931
3932#define _mm512_mask_fixupimm_round_pd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
3933__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3934 (__v8df)( __B),\
3935 (__v8di)( __C),\
3936 (__imm),\
3937 (__mmask8)( __U), (__R));\
3938})
3939
3940#define _mm512_fixupimm_pd( __A, __B, __C, __imm) __extension__ ({ \
3941__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3942 (__v8df)( __B),\
3943 (__v8di)( __C),\
3944 ( __imm),\
3945 (__mmask8) -1,\
3946 _MM_FROUND_CUR_DIRECTION);\
3947})
3948
3949#define _mm512_mask_fixupimm_pd( __A, __U, __B, __C, __imm) __extension__ ({ \
3950__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3951 (__v8df)( __B),\
3952 (__v8di)( __C),\
3953 ( __imm),\
3954 (__mmask8)( __U),\
3955 _MM_FROUND_CUR_DIRECTION);\
3956})
3957
3958#define _mm512_maskz_fixupimm_round_pd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
3959__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
3960 (__v8df)( __B),\
3961 (__v8di)( __C),\
3962 (__imm),\
3963 (__mmask8)( __U), (__R));\
3964})
3965
3966#define _mm512_maskz_fixupimm_pd( __U, __A, __B, __C, __imm) __extension__ ({ \
3967__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
3968 (__v8df)( __B),\
3969 (__v8di)( __C),\
3970 ( __imm),\
3971 (__mmask8)( __U),\
3972 _MM_FROUND_CUR_DIRECTION);\
3973})
3974
3975#define _mm512_fixupimm_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
3976__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3977 (__v16sf)( __B),\
3978 (__v16si)( __C),\
3979 (__imm),\
3980 (__mmask16) -1, (__R));\
3981})
3982
3983#define _mm512_mask_fixupimm_round_ps( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
3984__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3985 (__v16sf)( __B),\
3986 (__v16si)( __C),\
3987 (__imm),\
3988 (__mmask16)( __U), (__R));\
3989})
3990
3991#define _mm512_fixupimm_ps( __A, __B, __C, __imm) __extension__ ({ \
3992__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3993 (__v16sf)( __B),\
3994 (__v16si)( __C),\
3995 ( __imm),\
3996 (__mmask16) -1,\
3997 _MM_FROUND_CUR_DIRECTION);\
3998})
3999
4000#define _mm512_mask_fixupimm_ps( __A, __U, __B, __C, __imm) __extension__ ({ \
4001__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4002 (__v16sf)( __B),\
4003 (__v16si)( __C),\
4004 ( __imm),\
4005 (__mmask16)( __U),\
4006 _MM_FROUND_CUR_DIRECTION);\
4007})
4008
4009#define _mm512_maskz_fixupimm_round_ps( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4010__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4011 (__v16sf)( __B),\
4012 (__v16si)( __C),\
4013 (__imm),\
4014 (__mmask16)( __U), (__R));\
4015})
4016
4017#define _mm512_maskz_fixupimm_ps( __U, __A, __B, __C, __imm) __extension__ ({ \
4018__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4019 (__v16sf)( __B),\
4020 (__v16si)( __C),\
4021 ( __imm),\
4022 (__mmask16)( __U),\
4023 _MM_FROUND_CUR_DIRECTION);\
4024})
4025
4026#define _mm_fixupimm_round_sd( __A, __B, __C, __imm, __R) __extension__ ({ \
4027__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4028 (__v2df)( __B),\
4029 (__v2di)( __C), __imm,\
4030 (__mmask8) -1, (__R));\
4031})
4032
4033#define _mm_mask_fixupimm_round_sd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4034__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4035 (__v2df)( __B),\
4036 (__v2di)( __C), __imm,\
4037 (__mmask8)( __U), (__R));\
4038})
4039
4040#define _mm_fixupimm_sd( __A, __B, __C, __imm) __extension__ ({ \
4041__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4042 (__v2df)( __B),\
4043 (__v2di)( __C),( __imm),\
4044 (__mmask8) -1,\
4045 _MM_FROUND_CUR_DIRECTION);\
4046})
4047
4048#define _mm_mask_fixupimm_sd( __A, __U, __B, __C, __imm) __extension__ ({ \
4049__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4050 (__v2df)( __B),\
4051 (__v2di)( __C),( __imm),\
4052 (__mmask8)( __U),\
4053 _MM_FROUND_CUR_DIRECTION);\
4054})
4055
4056#define _mm_maskz_fixupimm_round_sd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4057__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4058 (__v2df)( __B),\
4059 (__v2di)( __C),\
4060 __imm,\
4061 (__mmask8)( __U), (__R));\
4062})
4063
4064#define _mm_maskz_fixupimm_sd( __U, __A, __B, __C, __imm) __extension__ ({ \
4065__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4066 (__v2df)( __B),\
4067 (__v2di)( __C),\
4068 ( __imm),\
4069 (__mmask8)( __U),\
4070 _MM_FROUND_CUR_DIRECTION);\
4071})
4072
4073#define _mm_fixupimm_round_ss( __A, __B, __C, __imm, __R) __extension__ ({ \
4074__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4075 (__v4sf)( __B),\
4076 (__v4si)( __C), (__imm),\
4077 (__mmask8) -1, (__R));\
4078})
4079
4080#define _mm_mask_fixupimm_round_ss( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4081__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4082 (__v4sf)( __B),\
4083 (__v4si)( __C), (__imm),\
4084 (__mmask8)( __U), (__R));\
4085})
4086
4087#define _mm_fixupimm_ss( __A, __B, __C, __imm) __extension__ ({ \
4088__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4089 (__v4sf)( __B),\
4090 (__v4si)( __C),( __imm),\
4091 (__mmask8) -1,\
4092 _MM_FROUND_CUR_DIRECTION);\
4093})
4094
4095#define _mm_mask_fixupimm_ss( __A, __U, __B, __C, __imm) __extension__ ({ \
4096__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4097 (__v4sf)( __B),\
4098 (__v4si)( __C),( __imm),\
4099 (__mmask8)( __U),\
4100 _MM_FROUND_CUR_DIRECTION);\
4101})
4102
4103#define _mm_maskz_fixupimm_round_ss( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4104__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4105 (__v4sf)( __B),\
4106 (__v4si)( __C), (__imm),\
4107 (__mmask8)( __U), (__R));\
4108})
4109
4110#define _mm_maskz_fixupimm_ss( __U, __A, __B, __C, __imm) __extension__ ({ \
4111__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4112 (__v4sf)( __B),\
4113 (__v4si)( __C),( __imm),\
4114 (__mmask8)( __U),\
4115 _MM_FROUND_CUR_DIRECTION);\
4116})
4117
4118#define _mm_getexp_round_sd( __A, __B ,__R) __extension__ ({ \
4119__builtin_ia32_getexpsd128_round_mask ((__v2df)(__A),\
4120 (__v2df)( __B), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4121 ( __R));\
4122})
4123
4124
4125static __inline__ __m128d __DEFAULT_FN_ATTRS
4126_mm_getexp_sd (__m128d __A, __m128d __B)
4127{
4128 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
4129 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4130}
4131
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004132static __inline__ __m128d __DEFAULT_FN_ATTRS
4133_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4134{
4135 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4136 (__v2df) __B,
4137 (__v2df) __W,
4138 (__mmask8) __U,
4139 _MM_FROUND_CUR_DIRECTION);
4140}
4141
4142#define _mm_mask_getexp_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
4143__builtin_ia32_getexpsd128_round_mask ((__v2df) __A,\
4144 (__v2df) __B,\
4145 (__v2df) __W,\
4146 (__mmask8) __U,\
4147 __R);\
4148})
4149
4150static __inline__ __m128d __DEFAULT_FN_ATTRS
4151_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
4152{
4153 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4154 (__v2df) __B,
4155 (__v2df) _mm_setzero_pd (),
4156 (__mmask8) __U,
4157 _MM_FROUND_CUR_DIRECTION);
4158}
4159
4160#define _mm_maskz_getexp_round_sd( __U, __A, __B, __R) __extension__ ({\
4161__builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,\
4162 (__v2df) __B,\
4163 (__v2df) _mm_setzero_pd (),\
4164 (__mmask8) __U,\
4165 __R);\
4166})
4167
Michael Zuckermandef78752016-03-28 12:23:09 +00004168#define _mm_getexp_round_ss( __A, __B, __R) __extension__ ({ \
4169__builtin_ia32_getexpss128_round_mask ((__v4sf)( __A),\
4170 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4171 ( __R));\
4172})
4173
4174static __inline__ __m128 __DEFAULT_FN_ATTRS
4175_mm_getexp_ss (__m128 __A, __m128 __B)
4176{
4177 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4178 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4179}
4180
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004181static __inline__ __m128d __DEFAULT_FN_ATTRS
4182_mm_mask_getexp_ss (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4183{
4184 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4185 (__v4sf) __B,
4186 (__v4sf) __W,
4187 (__mmask8) __U,
4188 _MM_FROUND_CUR_DIRECTION);
4189}
4190
4191#define _mm_mask_getexp_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
4192__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4193 (__v4sf) __B,\
4194 (__v4sf) __W,\
4195 (__mmask8) __U,\
4196 __R);\
4197})
4198
4199static __inline__ __m128d __DEFAULT_FN_ATTRS
4200_mm_maskz_getexp_ss (__mmask8 __U, __m128d __A, __m128d __B)
4201{
4202 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4203 (__v4sf) __B,
4204 (__v4sf) _mm_setzero_pd (),
4205 (__mmask8) __U,
4206 _MM_FROUND_CUR_DIRECTION);
4207}
4208
4209#define _mm_maskz_getexp_round_ss( __U, __A, __B, __R) __extension__ ({\
4210__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4211 (__v4sf) __B,\
4212 (__v4sf) _mm_setzero_ps (),\
4213 (__mmask8) __U,\
4214 __R);\
4215})
4216
Michael Zuckermandef78752016-03-28 12:23:09 +00004217#define _mm_getmant_round_sd( __A, __B, __C, __D, __R) __extension__ ({ \
4218__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4219 (__v2df)( __B),\
4220 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4221 ( __R));\
4222})
4223
4224#define _mm_getmant_sd( __A, __B, __C, __D) __extension__ ({ \
4225__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4226 (__v2df)( __B),\
4227 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4228 _MM_FROUND_CUR_DIRECTION);\
4229})
4230
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004231#define _mm_mask_getmant_sd( __W, __U, __A, __B, __C, __D) __extension__ ({\
4232__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4233 (__v2df) __B,\
4234 (( __D) << 2) |( __C),\
4235 (__v2df) __W,\
4236 (__mmask8) __U,\
4237 _MM_FROUND_CUR_DIRECTION);\
4238})
4239
4240#define _mm_mask_getmant_round_sd( __W, __U, __A, __B, __C, __D, __R)({\
4241__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4242 (__v2df) __B,\
4243 (( __D) << 2) |( __C),\
4244 (__v2df) __W,\
4245 (__mmask8) __U,\
4246 __R);\
4247})
4248
4249#define _mm_maskz_getmant_sd( __U, __A, __B, __C, __D) __extension__ ({\
4250__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4251 (__v2df) __B,\
4252 (( __D) << 2) |( __C),\
4253 (__v2df) _mm_setzero_pd (),\
4254 (__mmask8) __U,\
4255 _MM_FROUND_CUR_DIRECTION);\
4256})
4257
4258#define _mm_maskz_getmant_round_sd( __U, __A, __B, __C, __D, __R) __extension__ ({\
4259__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4260 (__v2df) __B,\
4261 (( __D) << 2) |( __C),\
4262 (__v2df) _mm_setzero_pd (),\
4263 (__mmask8) __U,\
4264 __R);\
4265})
4266
Michael Zuckermandef78752016-03-28 12:23:09 +00004267#define _mm_getmant_round_ss( __A, __B, __C, __D, __R) __extension__ ({ \
4268__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4269 (__v4sf)( __B),\
4270 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4271 ( __R));\
4272})
4273
4274#define _mm_getmant_ss(__A, __B, __C, __D) __extension__ ({ \
4275__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4276 (__v4sf)( __B),\
4277 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4278 _MM_FROUND_CUR_DIRECTION);\
4279})
4280
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004281#define _mm_mask_getmant_ss( __W, __U, __A, __B, __C, __D) __extension__ ({\
4282__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4283 (__v4sf) __B,\
4284 (( __D) << 2) |( __C),\
4285 (__v4sf) __W,\
4286 (__mmask8) __U,\
4287 _MM_FROUND_CUR_DIRECTION);\
4288})
4289
4290#define _mm_mask_getmant_round_ss( __W, __U, __A, __B, __C, __D, __R)({\
4291__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4292 (__v4sf) __B,\
4293 (( __D) << 2) |( __C),\
4294 (__v4sf) __W,\
4295 (__mmask8) __U,\
4296 __R);\
4297})
4298
4299#define _mm_maskz_getmant_ss( __U, __A, __B, __C, __D) __extension__ ({\
4300__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4301 (__v4sf) __B,\
4302 (( __D) << 2) |( __C),\
4303 (__v4sf) _mm_setzero_pd (),\
4304 (__mmask8) __U,\
4305 _MM_FROUND_CUR_DIRECTION);\
4306})
4307
4308#define _mm_maskz_getmant_round_ss( __U, __A, __B, __C, __D, __R) __extension__ ({\
4309__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4310 (__v4sf) __B,\
4311 (( __D) << 2) |( __C),\
4312 (__v4sf) _mm_setzero_ps (),\
4313 (__mmask8) __U,\
4314 __R);\
4315})
Michael Zuckermandef78752016-03-28 12:23:09 +00004316
4317static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4318_mm512_kmov (__mmask16 __A)
4319{
4320 return __A;
4321}
4322
Michael Zuckermane71d59f2016-03-07 19:15:00 +00004323#define _mm_comi_round_sd(__A, __B, __P, __R) __extension__ ({\
4324__builtin_ia32_vcomisd ((__v2df) (__A), (__v2df) (__B), ( __P), ( __R));\
4325})
4326
4327#define _mm_comi_round_ss( __A, __B, __P, __R) __extension__ ({\
4328__builtin_ia32_vcomiss ((__v4sf) (__A), (__v4sf) (__B), ( __P), ( __R));\
4329})
4330
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004331static __inline__ __m512d __DEFAULT_FN_ATTRS
4332_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4333{
4334 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
4335 (__v8df) __B,
4336 (__v8df) __W,
4337 (__mmask8) __U);
4338}
Michael Zuckerman8d161992016-04-10 17:24:03 +00004339#define _mm_cvt_roundsd_si64( __A, __R) __extension__ ({ \
4340__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
4341})
Michael Zuckermand8d2f622016-04-11 07:15:34 +00004342static __inline__ __m512i __DEFAULT_FN_ATTRS
4343_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
4344 __mmask16 __U, __m512i __B)
4345{
4346 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
4347 (__v16si) __I
4348 /* idx */ ,
4349 (__v16si) __B,
4350 (__mmask16) __U);
4351}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00004352static __inline__ __m512i __DEFAULT_FN_ATTRS
4353_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
4354{
4355 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
4356 (__v16si) __B,
4357 (__v16si)
4358 _mm512_setzero_si512 (),
4359 (__mmask16) -1);
4360}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004361
Michael Zuckerman81f468c2016-04-11 17:04:21 +00004362static __inline__ __m512i __DEFAULT_FN_ATTRS
4363_mm512_sll_epi32 (__m512i __A, __m128i __B)
4364{
4365 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4366 (__v4si) __B,
4367 (__v16si)
4368 _mm512_setzero_si512 (),
4369 (__mmask16) -1);
4370}
4371
4372static __inline__ __m512i __DEFAULT_FN_ATTRS
4373_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4374{
4375 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4376 (__v4si) __B,
4377 (__v16si) __W,
4378 (__mmask16) __U);
4379}
4380
4381static __inline__ __m512i __DEFAULT_FN_ATTRS
4382_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4383{
4384 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4385 (__v4si) __B,
4386 (__v16si)
4387 _mm512_setzero_si512 (),
4388 (__mmask16) __U);
4389}
4390
4391static __inline__ __m512i __DEFAULT_FN_ATTRS
4392_mm512_sll_epi64 (__m512i __A, __m128i __B)
4393{
4394 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4395 (__v2di) __B,
4396 (__v8di)
4397 _mm512_setzero_si512 (),
4398 (__mmask8) -1);
4399}
4400
4401static __inline__ __m512i __DEFAULT_FN_ATTRS
4402_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4403{
4404 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4405 (__v2di) __B,
4406 (__v8di) __W,
4407 (__mmask8) __U);
4408}
4409
4410static __inline__ __m512i __DEFAULT_FN_ATTRS
4411_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4412{
4413 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4414 (__v2di) __B,
4415 (__v8di)
4416 _mm512_setzero_si512 (),
4417 (__mmask8) __U);
4418}
4419
4420static __inline__ __m512i __DEFAULT_FN_ATTRS
4421_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
4422{
4423 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4424 (__v16si) __Y,
4425 (__v16si)
4426 _mm512_setzero_si512 (),
4427 (__mmask16) -1);
4428}
4429
4430static __inline__ __m512i __DEFAULT_FN_ATTRS
4431_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4432{
4433 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4434 (__v16si) __Y,
4435 (__v16si) __W,
4436 (__mmask16) __U);
4437}
4438
4439static __inline__ __m512i __DEFAULT_FN_ATTRS
4440_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4441{
4442 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4443 (__v16si) __Y,
4444 (__v16si)
4445 _mm512_setzero_si512 (),
4446 (__mmask16) __U);
4447}
4448
4449static __inline__ __m512i __DEFAULT_FN_ATTRS
4450_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
4451{
4452 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4453 (__v8di) __Y,
4454 (__v8di)
4455 _mm512_undefined_pd (),
4456 (__mmask8) -1);
4457}
4458
4459static __inline__ __m512i __DEFAULT_FN_ATTRS
4460_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4461{
4462 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4463 (__v8di) __Y,
4464 (__v8di) __W,
4465 (__mmask8) __U);
4466}
4467
4468static __inline__ __m512i __DEFAULT_FN_ATTRS
4469_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
4470{
4471 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4472 (__v8di) __Y,
4473 (__v8di)
4474 _mm512_setzero_si512 (),
4475 (__mmask8) __U);
4476}
4477
4478static __inline__ __m512i __DEFAULT_FN_ATTRS
4479_mm512_sra_epi32 (__m512i __A, __m128i __B)
4480{
4481 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
4482 (__v4si) __B,
4483 (__v16si)
4484 _mm512_setzero_si512 (),
4485 (__mmask16) -1);
4486}
4487
4488static __inline__ __m512i __DEFAULT_FN_ATTRS
4489_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4490{
4491 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
4492 (__v4si) __B,
4493 (__v16si) __W,
4494 (__mmask16) __U);
4495}
4496
4497static __inline__ __m512i __DEFAULT_FN_ATTRS
4498_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4499{
4500 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
4501 (__v4si) __B,
4502 (__v16si)
4503 _mm512_setzero_si512 (),
4504 (__mmask16) __U);
4505}
4506
4507static __inline__ __m512i __DEFAULT_FN_ATTRS
4508_mm512_sra_epi64 (__m512i __A, __m128i __B)
4509{
4510 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
4511 (__v2di) __B,
4512 (__v8di)
4513 _mm512_setzero_si512 (),
4514 (__mmask8) -1);
4515}
4516
4517static __inline__ __m512i __DEFAULT_FN_ATTRS
4518_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4519{
4520 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
4521 (__v2di) __B,
4522 (__v8di) __W,
4523 (__mmask8) __U);
4524}
4525
4526static __inline__ __m512i __DEFAULT_FN_ATTRS
4527_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4528{
4529 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
4530 (__v2di) __B,
4531 (__v8di)
4532 _mm512_setzero_si512 (),
4533 (__mmask8) __U);
4534}
4535
4536static __inline__ __m512i __DEFAULT_FN_ATTRS
4537_mm512_srav_epi32 (__m512i __X, __m512i __Y)
4538{
4539 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
4540 (__v16si) __Y,
4541 (__v16si)
4542 _mm512_setzero_si512 (),
4543 (__mmask16) -1);
4544}
4545
4546static __inline__ __m512i __DEFAULT_FN_ATTRS
4547_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4548{
4549 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
4550 (__v16si) __Y,
4551 (__v16si) __W,
4552 (__mmask16) __U);
4553}
4554
4555static __inline__ __m512i __DEFAULT_FN_ATTRS
4556_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4557{
4558 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
4559 (__v16si) __Y,
4560 (__v16si)
4561 _mm512_setzero_si512 (),
4562 (__mmask16) __U);
4563}
4564
4565static __inline__ __m512i __DEFAULT_FN_ATTRS
4566_mm512_srav_epi64 (__m512i __X, __m512i __Y)
4567{
4568 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
4569 (__v8di) __Y,
4570 (__v8di)
4571 _mm512_setzero_si512 (),
4572 (__mmask8) -1);
4573}
4574
4575static __inline__ __m512i __DEFAULT_FN_ATTRS
4576_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4577{
4578 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
4579 (__v8di) __Y,
4580 (__v8di) __W,
4581 (__mmask8) __U);
4582}
4583
4584static __inline__ __m512i __DEFAULT_FN_ATTRS
4585_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
4586{
4587 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
4588 (__v8di) __Y,
4589 (__v8di)
4590 _mm512_setzero_si512 (),
4591 (__mmask8) __U);
4592}
4593
4594static __inline__ __m512i __DEFAULT_FN_ATTRS
4595_mm512_srl_epi32 (__m512i __A, __m128i __B)
4596{
4597 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
4598 (__v4si) __B,
4599 (__v16si)
4600 _mm512_setzero_si512 (),
4601 (__mmask16) -1);
4602}
4603
4604static __inline__ __m512i __DEFAULT_FN_ATTRS
4605_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4606{
4607 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
4608 (__v4si) __B,
4609 (__v16si) __W,
4610 (__mmask16) __U);
4611}
4612
4613static __inline__ __m512i __DEFAULT_FN_ATTRS
4614_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4615{
4616 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
4617 (__v4si) __B,
4618 (__v16si)
4619 _mm512_setzero_si512 (),
4620 (__mmask16) __U);
4621}
4622
4623static __inline__ __m512i __DEFAULT_FN_ATTRS
4624_mm512_srl_epi64 (__m512i __A, __m128i __B)
4625{
4626 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
4627 (__v2di) __B,
4628 (__v8di)
4629 _mm512_setzero_si512 (),
4630 (__mmask8) -1);
4631}
4632
4633static __inline__ __m512i __DEFAULT_FN_ATTRS
4634_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4635{
4636 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
4637 (__v2di) __B,
4638 (__v8di) __W,
4639 (__mmask8) __U);
4640}
4641
4642static __inline__ __m512i __DEFAULT_FN_ATTRS
4643_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4644{
4645 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
4646 (__v2di) __B,
4647 (__v8di)
4648 _mm512_setzero_si512 (),
4649 (__mmask8) __U);
4650}
4651
4652static __inline__ __m512i __DEFAULT_FN_ATTRS
4653_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
4654{
4655 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
4656 (__v16si) __Y,
4657 (__v16si)
4658 _mm512_setzero_si512 (),
4659 (__mmask16) -1);
4660}
4661
4662static __inline__ __m512i __DEFAULT_FN_ATTRS
4663_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4664{
4665 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
4666 (__v16si) __Y,
4667 (__v16si) __W,
4668 (__mmask16) __U);
4669}
4670
4671static __inline__ __m512i __DEFAULT_FN_ATTRS
4672_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4673{
4674 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
4675 (__v16si) __Y,
4676 (__v16si)
4677 _mm512_setzero_si512 (),
4678 (__mmask16) __U);
4679}
4680
4681static __inline__ __m512i __DEFAULT_FN_ATTRS
4682_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
4683{
4684 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
4685 (__v8di) __Y,
4686 (__v8di)
4687 _mm512_setzero_si512 (),
4688 (__mmask8) -1);
4689}
4690
4691static __inline__ __m512i __DEFAULT_FN_ATTRS
4692_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4693{
4694 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
4695 (__v8di) __Y,
4696 (__v8di) __W,
4697 (__mmask8) __U);
4698}
4699
4700static __inline__ __m512i __DEFAULT_FN_ATTRS
4701_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
4702{
4703 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
4704 (__v8di) __Y,
4705 (__v8di)
4706 _mm512_setzero_si512 (),
4707 (__mmask8) __U);
4708}
4709
4710#define _mm512_ternarylogic_epi32( __A, __B, __C, imm) __extension__ ({ \
4711__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
4712 (__v16si)( __B),\
4713 (__v16si)( __C),\
4714 ( imm), (__mmask16) -1);\
4715})
4716
4717#define _mm512_mask_ternarylogic_epi32( __A, __U, __B, __C, imm) __extension__ ({ \
4718__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
4719 (__v16si)( __B),\
4720 (__v16si)( __C),\
4721 ( imm), (__mmask16)( __U));\
4722})
4723
4724#define _mm512_maskz_ternarylogic_epi32( __U, __A, __B, __C, imm) __extension__ ({ \
4725__builtin_ia32_pternlogd512_maskz ((__v16si)( __A),\
4726 (__v16si)( __B),\
4727 (__v16si)( __C),\
4728 ( imm), (__mmask16)( __U));\
4729})
4730
4731#define _mm512_ternarylogic_epi64( __A, __B, __C, imm) __extension__ ({ \
4732__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
4733 (__v8di)( __B),\
4734 (__v8di)( __C),( imm),\
4735 (__mmask8) -1);\
4736})
4737
4738#define _mm512_mask_ternarylogic_epi64( __A, __U, __B, __C, imm) __extension__ ({ \
4739__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
4740 (__v8di)( __B),\
4741 (__v8di)( __C),( imm),\
4742 (__mmask8)( __U));\
4743})
4744
4745#define _mm512_maskz_ternarylogic_epi64( __U, __A, __B, __C, imm) __extension__ ({ \
4746__builtin_ia32_pternlogq512_maskz ((__v8di)( __A),\
4747 (__v8di)( __B),\
4748 (__v8di)( __C),\
4749 ( imm), (__mmask8)( __U));\
4750})
4751
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004752static __inline__ __m512d __DEFAULT_FN_ATTRS
4753_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
4754{
4755 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
4756 (__v8df) __B,
4757 (__v8df)
4758 _mm512_setzero_pd (),
4759 (__mmask8) __U);
4760}
4761
4762static __inline__ __m512 __DEFAULT_FN_ATTRS
4763_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4764{
4765 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
4766 (__v16sf) __B,
4767 (__v16sf) __W,
4768 (__mmask16) __U);
4769}
4770
4771static __inline__ __m512 __DEFAULT_FN_ATTRS
4772_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
4773{
4774 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
4775 (__v16sf) __B,
4776 (__v16sf)
4777 _mm512_setzero_ps (),
4778 (__mmask16) __U);
4779}
4780
4781static __inline__ __m512d __DEFAULT_FN_ATTRS
4782_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4783{
4784 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
4785 (__v8df) __B,
4786 (__v8df) __W,
4787 (__mmask8) __U);
4788}
4789
4790static __inline__ __m512d __DEFAULT_FN_ATTRS
4791_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
4792{
4793 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
4794 (__v8df) __B,
4795 (__v8df)
4796 _mm512_setzero_pd (),
4797 (__mmask8) __U);
4798}
4799
4800static __inline__ __m512 __DEFAULT_FN_ATTRS
4801_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4802{
4803 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
4804 (__v16sf) __B,
4805 (__v16sf) __W,
4806 (__mmask16) __U);
4807}
4808
4809static __inline__ __m512 __DEFAULT_FN_ATTRS
4810_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
4811{
4812 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
4813 (__v16sf) __B,
4814 (__v16sf)
4815 _mm512_setzero_ps (),
4816 (__mmask16) __U);
4817}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00004818
Michael Zuckerman8d161992016-04-10 17:24:03 +00004819#define _mm_cvt_roundsd_i64( __A, __R) __extension__ ({ \
4820__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
4821})
4822
4823#define _mm_cvt_roundsd_si32( __A, __R) __extension__ ({ \
4824__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
4825})
4826
4827#define _mm_cvt_roundsd_i32( __A, __R) __extension__ ({ \
4828__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
4829})
4830
4831#define _mm_cvt_roundsd_u32( __A, __R) __extension__ ({ \
4832__builtin_ia32_vcvtsd2usi32 ((__v2df)( __A),( __R));\
4833})
4834
4835static __inline__ unsigned __DEFAULT_FN_ATTRS
4836_mm_cvtsd_u32 (__m128d __A)
4837{
4838 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
4839 _MM_FROUND_CUR_DIRECTION);
4840}
4841
4842#define _mm_cvt_roundsd_u64( __A, __R) __extension__ ({ \
4843__builtin_ia32_vcvtsd2usi64 ((__v2df)( __A),( __R));\
4844})
4845
4846static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4847_mm_cvtsd_u64 (__m128d __A)
4848{
4849 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
4850 __A,
4851 _MM_FROUND_CUR_DIRECTION);
4852}
4853
4854#define _mm_cvt_roundss_si32( __A, __R) __extension__ ({ \
4855__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
4856})
4857
4858#define _mm_cvt_roundss_i32( __A, __R) __extension__ ({ \
4859__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
4860})
4861
4862#define _mm_cvt_roundss_si64( __A, __R) __extension__ ({ \
4863__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
4864})
4865
4866#define _mm_cvt_roundss_i64( __A, __R) __extension__ ({ \
4867__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
4868})
4869
4870#define _mm_cvt_roundss_u32( __A, __R) __extension__ ({ \
4871__builtin_ia32_vcvtss2usi32 ((__v4sf)( __A),( __R));\
4872})
4873
4874static __inline__ unsigned __DEFAULT_FN_ATTRS
4875_mm_cvtss_u32 (__m128 __A)
4876{
4877 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
4878 _MM_FROUND_CUR_DIRECTION);
4879}
4880
4881#define _mm_cvt_roundss_u64( __A, __R) __extension__ ({ \
4882__builtin_ia32_vcvtss2usi64 ((__v4sf)( __A),( __R));\
4883})
4884
4885static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4886_mm_cvtss_u64 (__m128 __A)
4887{
4888 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
4889 __A,
4890 _MM_FROUND_CUR_DIRECTION);
4891}
4892
4893#define _mm_cvtt_roundsd_i32( __A, __R) __extension__ ({ \
4894__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
4895})
4896
4897#define _mm_cvtt_roundsd_si32( __A, __R) __extension__ ({ \
4898__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
4899})
4900
4901static __inline__ int __DEFAULT_FN_ATTRS
4902_mm_cvttsd_i32 (__m128d __A)
4903{
4904 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
4905 _MM_FROUND_CUR_DIRECTION);
4906}
4907
4908#define _mm_cvtt_roundsd_si64( __A, __R) __extension__ ({ \
4909__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
4910})
4911
4912#define _mm_cvtt_roundsd_i64( __A, __R) __extension__ ({ \
4913__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
4914})
4915
4916static __inline__ long long __DEFAULT_FN_ATTRS
4917_mm_cvttsd_i64 (__m128d __A)
4918{
4919 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
4920 _MM_FROUND_CUR_DIRECTION);
4921}
4922
4923#define _mm_cvtt_roundsd_u32( __A, __R) __extension__ ({ \
4924__builtin_ia32_vcvttsd2usi32 ((__v2df)( __A),( __R));\
4925})
4926
4927static __inline__ unsigned __DEFAULT_FN_ATTRS
4928_mm_cvttsd_u32 (__m128d __A)
4929{
4930 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
4931 _MM_FROUND_CUR_DIRECTION);
4932}
4933
4934#define _mm_cvtt_roundsd_u64( __A, __R) __extension__ ({ \
4935__builtin_ia32_vcvttsd2usi64 ((__v2df)( __A),( __R));\
4936})
4937
4938static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4939_mm_cvttsd_u64 (__m128d __A)
4940{
4941 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
4942 __A,
4943 _MM_FROUND_CUR_DIRECTION);
4944}
4945
4946#define _mm_cvtt_roundss_i32( __A, __R) __extension__ ({ \
4947__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
4948})
4949
4950#define _mm_cvtt_roundss_si32( __A, __R) __extension__ ({ \
4951__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
4952})
4953
4954static __inline__ int __DEFAULT_FN_ATTRS
4955_mm_cvttss_i32 (__m128 __A)
4956{
4957 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
4958 _MM_FROUND_CUR_DIRECTION);
4959}
4960
4961#define _mm_cvtt_roundss_i64( __A, __R) __extension__ ({ \
4962__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
4963})
4964
4965#define _mm_cvtt_roundss_si64( __A, __R) __extension__ ({ \
4966__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
4967})
4968
4969static __inline__ long long __DEFAULT_FN_ATTRS
4970_mm_cvttss_i64 (__m128 __A)
4971{
4972 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
4973 _MM_FROUND_CUR_DIRECTION);
4974}
4975
4976#define _mm_cvtt_roundss_u32( __A, __R) __extension__ ({ \
4977__builtin_ia32_vcvttss2usi32 ((__v4sf)( __A),( __R));\
4978})
4979
4980static __inline__ unsigned __DEFAULT_FN_ATTRS
4981_mm_cvttss_u32 (__m128 __A)
4982{
4983 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
4984 _MM_FROUND_CUR_DIRECTION);
4985}
4986
4987#define _mm_cvtt_roundss_u64( __A, __R) __extension__ ({ \
4988__builtin_ia32_vcvttss2usi64 ((__v4sf)( __A),( __R));\
4989})
4990
4991static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4992_mm_cvttss_u64 (__m128 __A)
4993{
4994 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
4995 __A,
4996 _MM_FROUND_CUR_DIRECTION);
4997}
4998
Michael Zuckermand8d2f622016-04-11 07:15:34 +00004999static __inline__ __m512d __DEFAULT_FN_ATTRS
5000_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
5001 __m512d __B)
5002{
5003 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
5004 (__v8di) __I
5005 /* idx */ ,
5006 (__v8df) __B,
5007 (__mmask8) __U);
5008}
5009
5010static __inline__ __m512 __DEFAULT_FN_ATTRS
5011_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
5012 __m512 __B)
5013{
5014 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
5015 (__v16si) __I
5016 /* idx */ ,
5017 (__v16sf) __B,
5018 (__mmask16) __U);
5019}
5020
5021static __inline__ __m512i __DEFAULT_FN_ATTRS
5022_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
5023 __mmask8 __U, __m512i __B)
5024{
5025 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
5026 (__v8di) __I
5027 /* idx */ ,
5028 (__v8di) __B,
5029 (__mmask8) __U);
5030}
5031
5032#define _mm512_permute_pd( __X, __C) __extension__ ({ \
5033__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5034 (__v8df)\
5035 _mm512_undefined_pd (),\
5036 (__mmask8) -1);\
5037})
5038
5039#define _mm512_mask_permute_pd( __W, __U, __X, __C) __extension__ ({ \
5040__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5041 (__v8df)( __W),\
5042 (__mmask8)( __U));\
5043})
5044
5045#define _mm512_maskz_permute_pd( __U, __X, __C) __extension__ ({ \
5046__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5047 (__v8df)\
5048 _mm512_setzero_pd (),\
5049 (__mmask8)( __U));\
5050})
5051
5052#define _mm512_permute_ps( __X, __C) __extension__ ({ \
5053__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5054 (__v16sf)\
5055 _mm512_undefined_ps (),\
5056 (__mmask16) -1);\
5057})
5058
5059#define _mm512_mask_permute_ps( __W, __U, __X, __C) __extension__ ({ \
5060__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5061 (__v16sf)( __W),\
5062 (__mmask16)( __U));\
5063})
5064
5065#define _mm512_maskz_permute_ps( __U, __X, __C) __extension__ ({ \
5066__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5067 (__v16sf)\
5068 _mm512_setzero_ps (),\
5069 (__mmask16)( __U));\
5070})
5071
5072static __inline__ __m512d __DEFAULT_FN_ATTRS
5073_mm512_permutevar_pd (__m512d __A, __m512i __C)
5074{
5075 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5076 (__v8di) __C,
5077 (__v8df)
5078 _mm512_undefined_pd (),
5079 (__mmask8) -1);
5080}
5081
5082static __inline__ __m512d __DEFAULT_FN_ATTRS
5083_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
5084{
5085 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5086 (__v8di) __C,
5087 (__v8df) __W,
5088 (__mmask8) __U);
5089}
5090
5091static __inline__ __m512d __DEFAULT_FN_ATTRS
5092_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
5093{
5094 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5095 (__v8di) __C,
5096 (__v8df)
5097 _mm512_setzero_pd (),
5098 (__mmask8) __U);
5099}
5100
5101static __inline__ __m512 __DEFAULT_FN_ATTRS
5102_mm512_permutevar_ps (__m512 __A, __m512i __C)
5103{
5104 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5105 (__v16si) __C,
5106 (__v16sf)
5107 _mm512_undefined_ps (),
5108 (__mmask16) -1);
5109}
5110
5111static __inline__ __m512 __DEFAULT_FN_ATTRS
5112_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
5113{
5114 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5115 (__v16si) __C,
5116 (__v16sf) __W,
5117 (__mmask16) __U);
5118}
5119
5120static __inline__ __m512 __DEFAULT_FN_ATTRS
5121_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
5122{
5123 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5124 (__v16si) __C,
5125 (__v16sf)
5126 _mm512_setzero_ps (),
5127 (__mmask16) __U);
5128}
5129
5130static __inline__ __m512i __DEFAULT_FN_ATTRS
5131_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
5132 __m512i __I, __m512i __B)
5133{
5134 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
5135 /* idx */ ,
5136 (__v16si) __A,
5137 (__v16si) __B,
5138 (__mmask16) __U);
5139}
5140
5141static __inline__ __m512d __DEFAULT_FN_ATTRS
5142_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
5143 __m512d __B)
5144{
5145 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
5146 /* idx */ ,
5147 (__v8df) __A,
5148 (__v8df) __B,
5149 (__mmask8) __U);
5150}
5151
5152static __inline__ __m512 __DEFAULT_FN_ATTRS
5153_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
5154 __m512 __B)
5155{
5156 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
5157 /* idx */ ,
5158 (__v16sf) __A,
5159 (__v16sf) __B,
5160 (__mmask16) __U);
5161}
5162
5163static __inline__ __m512i __DEFAULT_FN_ATTRS
5164_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
5165 __m512i __I, __m512i __B)
5166{
5167 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
5168 /* idx */ ,
5169 (__v8di) __A,
5170 (__v8di) __B,
5171 (__mmask8) __U);
5172}
5173
Michael Zuckerman07525092016-04-11 10:22:07 +00005174static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5175_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
5176{
5177 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5178 (__v16si) __B,
5179 (__mmask16) -1);
5180}
5181
5182static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5183_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5184{
5185 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5186 (__v16si) __B, __U);
5187}
5188
5189static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5190_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
5191{
5192 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5193 (__v8di) __B,
5194 (__mmask8) -1);
5195}
5196
5197static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5198_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5199{
5200 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5201 (__v8di) __B, __U);
5202}
5203
5204
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005205static __inline__ __m512i __DEFAULT_FN_ATTRS
5206_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5207 __m512i __B)
5208{
5209 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5210 (__v16si) __B,
5211 (__v16si) __W,
5212 (__mmask16) __U);
5213}
5214
5215static __inline__ __m512i __DEFAULT_FN_ATTRS
5216_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5217{
5218 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5219 (__v16si) __B,
5220 (__v16si)
5221 _mm512_setzero_si512 (),
5222 (__mmask16) __U);
5223}
5224
5225static __inline__ __m512i __DEFAULT_FN_ATTRS
5226_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
5227{
5228 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5229 (__v8di) __B,
5230 (__v8di)
5231 _mm512_setzero_si512 (),
5232 (__mmask8) -1);
5233}
5234
5235static __inline__ __m512i __DEFAULT_FN_ATTRS
5236_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5237{
5238 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5239 (__v8di) __B,
5240 (__v8di) __W,
5241 (__mmask8) __U);
5242}
5243
5244static __inline__ __m512i __DEFAULT_FN_ATTRS
5245_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5246{
5247 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5248 (__v8di) __B,
5249 (__v8di)
5250 _mm512_setzero_si512 (),
5251 (__mmask8) __U);
5252}
5253
5254static __inline__ __m512i __DEFAULT_FN_ATTRS
5255_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
5256{
5257 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5258 (__v16si) __B,
5259 (__v16si)
5260 _mm512_setzero_si512 (),
5261 (__mmask16) -1);
5262}
5263
5264static __inline__ __m512i __DEFAULT_FN_ATTRS
5265_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5266 __m512i __B)
5267{
5268 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5269 (__v16si) __B,
5270 (__v16si) __W,
5271 (__mmask16) __U);
5272}
5273
5274static __inline__ __m512i __DEFAULT_FN_ATTRS
5275_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5276{
5277 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5278 (__v16si) __B,
5279 (__v16si)
5280 _mm512_setzero_si512 (),
5281 (__mmask16) __U);
5282}
5283
5284static __inline__ __m512i __DEFAULT_FN_ATTRS
5285_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
5286{
5287 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5288 (__v8di) __B,
5289 (__v8di)
5290 _mm512_setzero_si512 (),
5291 (__mmask8) -1);
5292}
5293
5294static __inline__ __m512i __DEFAULT_FN_ATTRS
5295_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5296{
5297 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5298 (__v8di) __B,
5299 (__v8di) __W,
5300 (__mmask8) __U);
5301}
5302
5303static __inline__ __m512i __DEFAULT_FN_ATTRS
5304_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5305{
5306 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5307 (__v8di) __B,
5308 (__v8di)
5309 _mm512_setzero_si512 (),
5310 (__mmask8) __U);
5311}
5312
5313#define _mm_roundscale_round_sd( __A, __B, __imm, __R) __extension__ ({ \
5314__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
5315 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5316 (__mmask8) -1,( __imm),( __R));\
5317})
5318
5319#define _mm_roundscale_sd( __A, __B, __imm) __extension__ ({ \
5320__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
5321 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5322 (__mmask8) -1, ( __imm),\
5323 _MM_FROUND_CUR_DIRECTION);\
5324})
5325
5326#define _mm_mask_roundscale_sd( __W, __U, __A, __B, __imm) __extension__ ({ \
5327__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5328 (__v2df)( __B),\
5329 (__v2df)( __W),\
5330 (__mmask8)( __U),\
5331 (__imm),\
5332 _MM_FROUND_CUR_DIRECTION);\
5333})
5334
5335#define _mm_mask_roundscale_round_sd( __W, __U, __A, __B, __I, __R) __extension__ ({ \
5336__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5337 (__v2df)( __B),\
5338 (__v2df)( __W),\
5339 (__mmask8)( __U),\
5340 __I,\
5341 __R);\
5342})
5343
5344#define _mm_maskz_roundscale_sd( __U, __A, __B, __I) __extension__ ({ \
5345__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5346 (__v2df)( __B),\
5347 (__v2df) _mm_setzero_pd (),\
5348 (__mmask8)( __U),\
5349 __I,\
5350 _MM_FROUND_CUR_DIRECTION);\
5351})
5352
5353#define _mm_maskz_roundscale_round_sd( __U, __A, __B, __I, __R) __extension__ ({ \
5354__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5355 (__v2df)( __B),\
5356 (__v2df) _mm_setzero_pd (),\
5357 (__mmask8)( __U),\
5358 __I,\
5359 __R);\
5360})
5361
5362#define _mm_roundscale_round_ss( __A, __B, __imm, __R) __extension__ ({ \
5363__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
5364 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5365 (__mmask8) -1, __imm, __R);\
5366})
5367
5368#define _mm_roundscale_ss( __A, __B, __imm) __extension__ ({ \
5369__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
5370 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5371 (__mmask8) -1, ( __imm),\
5372 _MM_FROUND_CUR_DIRECTION);\
5373})
5374
5375#define _mm_mask_roundscale_ss( __W, __U, __A, __B, __I) __extension__ ({ \
5376__builtin_ia32_rndscaless_round_mask ( (__v4sf) ( __A),\
5377 (__v4sf)( __B),\
5378 (__v4sf)( __W),\
5379 (__mmask8)( __U),\
5380 __I,\
5381 _MM_FROUND_CUR_DIRECTION);\
5382})
5383
5384#define _mm_mask_roundscale_round_ss( __W, __U, __A, __B, __I, __R) __extension__ ({ \
5385__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5386 (__v4sf)( __B),\
5387 (__v4sf)( __W),\
5388 (__mmask8)( __U),\
5389 __I,\
5390 __R);\
5391})
5392
5393#define _mm_maskz_roundscale_ss( __U, __A, __B, __I) __extension__ ({ \
5394__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5395 (__v4sf)( __B),\
5396 (__v4sf) _mm_setzero_ps (),\
5397 (__mmask8)( __U),\
5398 __I,\
5399 _MM_FROUND_CUR_DIRECTION);\
5400})
5401
5402#define _mm_maskz_roundscale_round_ss( __U, __A, __B, __I, __R) __extension__ ({ \
5403__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5404 (__v4sf)( __B),\
5405 (__v4sf) _mm_setzero_ps (),\
5406 (__mmask8)( __U),\
5407 __I,\
5408 __R);\
5409})
5410
5411#define _mm512_scalef_round_pd( __A, __B, __R) __extension__ ({ \
5412__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5413 (__v8df)( __B),\
5414 (__v8df)\
5415 _mm512_undefined_pd (),\
5416 (__mmask8) -1,( __R));\
5417})
5418
5419#define _mm512_mask_scalef_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
5420__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5421 (__v8df)( __B),\
5422 (__v8df)( __W),\
5423 (__mmask8)( __U),( __R));\
5424})
5425
5426#define _mm512_maskz_scalef_round_pd( __U, __A, __B, __R) __extension__ ({ \
5427__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5428 (__v8df)( __B),\
5429 (__v8df)\
5430 _mm512_setzero_pd (),\
5431 (__mmask8)( __U),( __R));\
5432})
5433
5434static __inline__ __m512d __DEFAULT_FN_ATTRS
5435_mm512_scalef_pd (__m512d __A, __m512d __B)
5436{
5437 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
5438 (__v8df) __B,
5439 (__v8df)
5440 _mm512_undefined_pd (),
5441 (__mmask8) -1,
5442 _MM_FROUND_CUR_DIRECTION);
5443}
5444
5445static __inline__ __m512d __DEFAULT_FN_ATTRS
5446_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5447{
5448 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
5449 (__v8df) __B,
5450 (__v8df) __W,
5451 (__mmask8) __U,
5452 _MM_FROUND_CUR_DIRECTION);
5453}
5454
5455static __inline__ __m512d __DEFAULT_FN_ATTRS
5456_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
5457{
5458 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
5459 (__v8df) __B,
5460 (__v8df)
5461 _mm512_setzero_pd (),
5462 (__mmask8) __U,
5463 _MM_FROUND_CUR_DIRECTION);
5464}
5465
5466#define _mm512_scalef_round_ps( __A, __B, __R) __extension__ ({ \
5467__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
5468 (__v16sf)( __B),\
5469 (__v16sf)\
5470 _mm512_undefined_ps (),\
5471 (__mmask16) -1,( __R));\
5472})
5473
5474#define _mm512_mask_scalef_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
5475__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
5476 (__v16sf)( __B),\
5477 (__v16sf)( __W),\
5478 (__mmask16)( __U),( __R));\
5479})
5480
5481#define _mm512_maskz_scalef_round_ps( __U, __A, __B, __R) __extension__ ({ \
5482__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
5483 (__v16sf)( __B),\
5484 (__v16sf)\
5485 _mm512_setzero_ps (),\
5486 (__mmask16)( __U),( __R));\
5487})
5488
5489static __inline__ __m512 __DEFAULT_FN_ATTRS
5490_mm512_scalef_ps (__m512 __A, __m512 __B)
5491{
5492 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
5493 (__v16sf) __B,
5494 (__v16sf)
5495 _mm512_undefined_ps (),
5496 (__mmask16) -1,
5497 _MM_FROUND_CUR_DIRECTION);
5498}
5499
5500static __inline__ __m512 __DEFAULT_FN_ATTRS
5501_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5502{
5503 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
5504 (__v16sf) __B,
5505 (__v16sf) __W,
5506 (__mmask16) __U,
5507 _MM_FROUND_CUR_DIRECTION);
5508}
5509
5510static __inline__ __m512 __DEFAULT_FN_ATTRS
5511_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
5512{
5513 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
5514 (__v16sf) __B,
5515 (__v16sf)
5516 _mm512_setzero_ps (),
5517 (__mmask16) __U,
5518 _MM_FROUND_CUR_DIRECTION);
5519}
5520
5521#define _mm_scalef_round_sd( __A, __B, __R) __extension__ ({ \
5522__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
5523 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5524 (__mmask8) -1,\
5525 ( __R));\
5526})
5527
5528static __inline__ __m128d __DEFAULT_FN_ATTRS
5529_mm_scalef_sd (__m128d __A, __m128d __B)
5530{
5531 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
5532 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
5533 (__mmask8) -1,
5534 _MM_FROUND_CUR_DIRECTION);
5535}
5536
5537static __inline__ __m128d __DEFAULT_FN_ATTRS
5538_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5539{
5540 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
5541 (__v2df) __B,
5542 (__v2df) __W,
5543 (__mmask8) __U,
5544 _MM_FROUND_CUR_DIRECTION);
5545}
5546
5547#define _mm_mask_scalef_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
5548__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
5549 (__v2df)( __B), (__v2df) __W,\
5550 (__mmask8) __U,\
5551 ( __R));\
5552})
5553
5554static __inline__ __m128d __DEFAULT_FN_ATTRS
5555_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
5556{
5557 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
5558 (__v2df) __B,
5559 (__v2df) _mm_setzero_pd (),
5560 (__mmask8) __U,
5561 _MM_FROUND_CUR_DIRECTION);
5562}
5563
5564#define _mm_maskz_scalef_round_sd( __U, __A, __B, __R) __extension__ ({ \
5565__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
5566 (__v2df)( __B), (__v2df) _mm_setzero_pd (),\
5567 (__mmask8) __U,\
5568 ( __R));\
5569})
5570
5571#define _mm_scalef_round_ss( __A, __B, __R) __extension__ ({ \
5572__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
5573 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5574 (__mmask8) -1,\
5575 ( __R));\
5576})
5577
5578static __inline__ __m128 __DEFAULT_FN_ATTRS
5579_mm_scalef_ss (__m128 __A, __m128 __B)
5580{
5581 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
5582 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
5583 (__mmask8) -1,
5584 _MM_FROUND_CUR_DIRECTION);
5585}
5586
5587static __inline__ __m128 __DEFAULT_FN_ATTRS
5588_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
5589{
5590 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
5591 (__v4sf) __B,
5592 (__v4sf) __W,
5593 (__mmask8) __U,
5594 _MM_FROUND_CUR_DIRECTION);
5595}
5596
5597#define _mm_mask_scalef_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
5598__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
5599 (__v4sf)( __B), (__v4sf) __W,\
5600 (__mmask8) __U,\
5601 ( __R));\
5602})
5603
5604static __inline__ __m128 __DEFAULT_FN_ATTRS
5605_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
5606{
5607 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
5608 (__v4sf) __B,
5609 (__v4sf) _mm_setzero_ps (),
5610 (__mmask8) __U,
5611 _MM_FROUND_CUR_DIRECTION);
5612}
5613
5614#define _mm_maskz_scalef_round_ss( __U, __A, __B, __R) __extension__ ({ \
5615__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
5616 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5617 (__mmask8) __U,\
5618 _MM_FROUND_CUR_DIRECTION);\
5619})
5620
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00005621static __inline__ __m512i __DEFAULT_FN_ATTRS
5622_mm512_srai_epi32 (__m512i __A, unsigned int __B)
5623{
5624 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
5625 (__v16si)
5626 _mm512_setzero_si512 (),
5627 (__mmask16) -1);
5628}
5629
5630#define _mm512_mask_srai_epi32( __W, __U, __A, __B) __extension__ ({ \
5631__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
5632 (__v16si)( __W),\
5633 (__mmask16)( __U));\
5634})
5635
5636#define _mm512_maskz_srai_epi32( __U, __A, __B) __extension__ ({ \
5637__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
5638 (__v16si)\
5639 _mm512_setzero_si512 (),\
5640 (__mmask16)( __U));\
5641})
5642
5643#define _mm512_srai_epi64( __A, __B) __extension__ ({ \
5644__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
5645 (__v8di)\
5646 _mm512_setzero_si512 (),\
5647 (__mmask8) -1);\
5648})
5649
5650#define _mm512_mask_srai_epi64( __W, __U, __A, __B) __extension__ ({ \
5651__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
5652 (__v8di)( __W),\
5653 (__mmask8)( __U));\
5654})
5655
5656#define _mm512_maskz_srai_epi64( __U, __A, __B) __extension__ ({ \
5657__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
5658 (__v8di)\
5659 _mm512_setzero_si512 (),\
5660 (__mmask8)( __U));\
5661})
5662
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00005663#define _mm512_shuffle_f32x4( __A, __B, __imm) __extension__ ({ \
5664__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
5665 (__v16sf)( __B),( __imm),\
5666 (__v16sf)\
5667 _mm512_undefined_ps (),\
5668 (__mmask16) -1);\
5669})
5670
5671#define _mm512_mask_shuffle_f32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
5672__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
5673 (__v16sf)( __B),( __imm),\
5674 (__v16sf)( __W),\
5675 (__mmask16)( __U));\
5676})
5677
5678#define _mm512_maskz_shuffle_f32x4( __U, __A, __B, __imm) __extension__ ({ \
5679__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
5680 (__v16sf)( __B),( __imm),\
5681 (__v16sf)\
5682 _mm512_setzero_ps (),\
5683 (__mmask16)( __U));\
5684})
5685
5686#define _mm512_shuffle_f64x2( __A, __B, __imm) __extension__ ({ \
5687__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
5688 (__v8df)( __B),( __imm),\
5689 (__v8df)\
5690 _mm512_undefined_pd (),\
5691 (__mmask8) -1);\
5692})
5693
5694#define _mm512_mask_shuffle_f64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
5695__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
5696 (__v8df)( __B),( __imm),\
5697 (__v8df)( __W),\
5698 (__mmask8)( __U));\
5699})
5700
5701#define _mm512_maskz_shuffle_f64x2( __U, __A, __B, __imm) __extension__ ({ \
5702__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
5703 (__v8df)( __B),( __imm),\
5704 (__v8df)\
5705 _mm512_setzero_pd (),\
5706 (__mmask8)( __U));\
5707})
5708
5709#define _mm512_shuffle_i32x4( __A, __B, __imm) __extension__ ({ \
5710__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
5711 (__v16si)( __B),\
5712 ( __imm),\
5713 (__v16si)\
5714 _mm512_setzero_si512 (),\
5715 (__mmask16) -1);\
5716})
5717
5718#define _mm512_mask_shuffle_i32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
5719__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
5720 (__v16si)( __B),\
5721 ( __imm),\
5722 (__v16si)( __W),\
5723 (__mmask16)( __U));\
5724})
5725
5726#define _mm512_maskz_shuffle_i32x4( __U, __A, __B, __imm) __extension__ ({ \
5727__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
5728 (__v16si)( __B),\
5729 ( __imm),\
5730 (__v16si)\
5731 _mm512_setzero_si512 (),\
5732 (__mmask16)( __U));\
5733})
5734
5735#define _mm512_shuffle_i64x2( __A, __B, __imm) __extension__ ({ \
5736__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
5737 (__v8di)( __B),( __imm),\
5738 (__v8di)\
5739 _mm512_setzero_si512 (),\
5740 (__mmask8) -1);\
5741})
5742
5743#define _mm512_mask_shuffle_i64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
5744__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
5745 (__v8di)( __B),( __imm),\
5746 (__v8di)( __W),\
5747 (__mmask8)( __U));\
5748})
5749
5750#define _mm512_maskz_shuffle_i64x2( __U, __A, __B, __imm) __extension__ ({ \
5751__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
5752 (__v8di)( __B),( __imm),\
5753 (__v8di)\
5754 _mm512_setzero_si512 (),\
5755 (__mmask8)( __U));\
5756})
5757
5758#define _mm512_shuffle_pd( __M, __V, __imm) __extension__ ({ \
5759__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
5760 (__v8df)( __V),( __imm),\
5761 (__v8df)\
5762 _mm512_undefined_pd (),\
5763 (__mmask8) -1);\
5764})
5765
5766#define _mm512_mask_shuffle_pd( __W, __U, __M, __V, __imm) __extension__ ({ \
5767__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
5768 (__v8df)( __V),( __imm),\
5769 (__v8df)( __W),\
5770 (__mmask8)( __U));\
5771})
5772
5773#define _mm512_maskz_shuffle_pd( __U, __M, __V, __imm) __extension__ ({ \
5774__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
5775 (__v8df)( __V),( __imm),\
5776 (__v8df)\
5777 _mm512_setzero_pd (),\
5778 (__mmask8)( __U));\
5779})
5780
5781#define _mm512_shuffle_ps( __M, __V, __imm) __extension__ ({ \
5782__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
5783 (__v16sf)( __V),( __imm),\
5784 (__v16sf)\
5785 _mm512_undefined_ps (),\
5786 (__mmask16) -1);\
5787})
5788
5789#define _mm512_mask_shuffle_ps( __W, __U, __M, __V, __imm) __extension__ ({ \
5790__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
5791 (__v16sf)( __V),( __imm),\
5792 (__v16sf)( __W),\
5793 (__mmask16)( __U));\
5794})
5795
5796#define _mm512_maskz_shuffle_ps( __U, __M, __V, __imm) __extension__ ({ \
5797__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
5798 (__v16sf)( __V),( __imm),\
5799 (__v16sf)\
5800 _mm512_setzero_ps (),\
5801 (__mmask16)( __U));\
5802})
5803
5804#define _mm_sqrt_round_sd( __A, __B, __R) __extension__ ({ \
5805__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
5806 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
5807 (__mmask8) -1,\
5808 ( __R));\
5809})
5810
5811static __inline__ __m128d __DEFAULT_FN_ATTRS
5812_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5813{
5814 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
5815 (__v2df) __A,
5816 (__v2df) __W,
5817 (__mmask8) __U,
5818 _MM_FROUND_CUR_DIRECTION);
5819}
5820
5821#define _mm_mask_sqrt_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
5822__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
5823 (__v2df)( __A),(__v2df) __W,\
5824 (__mmask8) __U,\
5825 ( __R));\
5826})
5827
5828static __inline__ __m128d __DEFAULT_FN_ATTRS
5829_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
5830{
5831 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
5832 (__v2df) __A,
5833 (__v2df) _mm_setzero_pd (),
5834 (__mmask8) __U,
5835 _MM_FROUND_CUR_DIRECTION);
5836}
5837
5838#define _mm_maskz_sqrt_round_sd( __U, __A, __B, __R) __extension__ ({ \
5839__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
5840 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
5841 (__mmask8) __U,\
5842 ( __R));\
5843})
5844
5845#define _mm_sqrt_round_ss( __A, __B, __R) __extension__ ({ \
5846__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
5847 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
5848 (__mmask8) -1,\
5849 ( __R));\
5850})
5851
5852static __inline__ __m128 __DEFAULT_FN_ATTRS
5853_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
5854{
5855 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
5856 (__v4sf) __A,
5857 (__v4sf) __W,
5858 (__mmask8) __U,
5859 _MM_FROUND_CUR_DIRECTION);
5860}
5861
5862#define _mm_mask_sqrt_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
5863__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
5864 (__v4sf)( __A),(__v4sf) __W,\
5865 (__mmask8) __U,\
5866 ( __R));\
5867})
5868
5869static __inline__ __m128 __DEFAULT_FN_ATTRS
5870_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
5871{
5872 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
5873 (__v4sf) __B,
5874 (__v4sf) _mm_setzero_ps (),
5875 (__mmask8) __U,
5876 _MM_FROUND_CUR_DIRECTION);
5877}
5878
5879#define _mm_maskz_sqrt_round_ss( __U, __A, __B, __R) __extension__ ({ \
5880__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
5881 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
5882 (__mmask8) __U,\
5883 __R);\
5884})
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00005885
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00005886static __inline__ __m512 __DEFAULT_FN_ATTRS
5887_mm512_broadcast_f32x4 (__m128 __A)
5888{
5889 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
5890 (__v16sf)
5891 _mm512_undefined_ps (),
5892 (__mmask16) -1);
5893}
5894
5895static __inline__ __m512 __DEFAULT_FN_ATTRS
5896_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
5897{
5898 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
5899 (__v16sf) __O,
5900 __M);
5901}
5902
5903static __inline__ __m512 __DEFAULT_FN_ATTRS
5904_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
5905{
5906 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
5907 (__v16sf)
5908 _mm512_setzero_ps (),
5909 __M);
5910}
5911
5912static __inline__ __m512d __DEFAULT_FN_ATTRS
5913_mm512_broadcast_f64x4 (__m256d __A)
5914{
5915 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
5916 (__v8df)
5917 _mm512_undefined_pd (),
5918 (__mmask8) -1);
5919}
5920
5921static __inline__ __m512d __DEFAULT_FN_ATTRS
5922_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
5923{
5924 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
5925 (__v8df) __O,
5926 __M);
5927}
5928
5929static __inline__ __m512d __DEFAULT_FN_ATTRS
5930_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
5931{
5932 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
5933 (__v8df)
5934 _mm512_setzero_pd (),
5935 __M);
5936}
5937
5938static __inline__ __m512i __DEFAULT_FN_ATTRS
5939_mm512_broadcast_i32x4 (__m128i __A)
5940{
5941 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
5942 (__v16si)
5943 _mm512_undefined_epi32 (),
5944 (__mmask16) -1);
5945}
5946
5947static __inline__ __m512i __DEFAULT_FN_ATTRS
5948_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
5949{
5950 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
5951 (__v16si) __O,
5952 __M);
5953}
5954
5955static __inline__ __m512i __DEFAULT_FN_ATTRS
5956_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
5957{
5958 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
5959 (__v16si)
5960 _mm512_setzero_si512 (),
5961 __M);
5962}
5963
5964static __inline__ __m512i __DEFAULT_FN_ATTRS
5965_mm512_broadcast_i64x4 (__m256i __A)
5966{
5967 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
5968 (__v8di)
5969 _mm512_undefined_epi32 (),
5970 (__mmask8) -1);
5971}
5972
5973static __inline__ __m512i __DEFAULT_FN_ATTRS
5974_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
5975{
5976 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
5977 (__v8di) __O,
5978 __M);
5979}
5980
5981static __inline__ __m512i __DEFAULT_FN_ATTRS
5982_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
5983{
5984 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
5985 (__v8di)
5986 _mm512_setzero_si512 (),
5987 __M);
5988}
5989
5990static __inline__ __m512d __DEFAULT_FN_ATTRS
5991_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
5992{
5993 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
5994 (__v8df) __O, __M);
5995}
5996
5997static __inline__ __m512d __DEFAULT_FN_ATTRS
5998_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
5999{
6000 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6001 (__v8df)
6002 _mm512_setzero_pd (),
6003 __M);
6004}
6005
6006static __inline__ __m512 __DEFAULT_FN_ATTRS
6007_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
6008{
6009 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6010 (__v16sf) __O, __M);
6011}
6012
6013static __inline__ __m512 __DEFAULT_FN_ATTRS
6014_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
6015{
6016 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6017 (__v16sf)
6018 _mm512_setzero_ps (),
6019 __M);
6020}
6021
Michael Zuckermane1680612016-04-13 15:02:04 +00006022static __inline__ __m128i __DEFAULT_FN_ATTRS
6023_mm512_cvtsepi32_epi8 (__m512i __A)
6024{
6025 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6026 (__v16qi) _mm_undefined_si128 (),
6027 (__mmask16) -1);
6028}
6029
6030static __inline__ __m128i __DEFAULT_FN_ATTRS
6031_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6032{
6033 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6034 (__v16qi) __O, __M);
6035}
6036
6037static __inline__ __m128i __DEFAULT_FN_ATTRS
6038_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
6039{
6040 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6041 (__v16qi) _mm_setzero_si128 (),
6042 __M);
6043}
6044
6045static __inline__ void __DEFAULT_FN_ATTRS
6046_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6047{
6048 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6049}
6050
6051static __inline__ __m256i __DEFAULT_FN_ATTRS
6052_mm512_cvtsepi32_epi16 (__m512i __A)
6053{
6054 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6055 (__v16hi) _mm256_undefined_si256 (),
6056 (__mmask16) -1);
6057}
6058
6059static __inline__ __m256i __DEFAULT_FN_ATTRS
6060_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6061{
6062 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6063 (__v16hi) __O, __M);
6064}
6065
6066static __inline__ __m256i __DEFAULT_FN_ATTRS
6067_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
6068{
6069 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6070 (__v16hi) _mm256_setzero_si256 (),
6071 __M);
6072}
6073
6074static __inline__ void __DEFAULT_FN_ATTRS
6075_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6076{
6077 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6078}
6079
6080static __inline__ __m128i __DEFAULT_FN_ATTRS
6081_mm512_cvtsepi64_epi8 (__m512i __A)
6082{
6083 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6084 (__v16qi) _mm_undefined_si128 (),
6085 (__mmask8) -1);
6086}
6087
6088static __inline__ __m128i __DEFAULT_FN_ATTRS
6089_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6090{
6091 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6092 (__v16qi) __O, __M);
6093}
6094
6095static __inline__ __m128i __DEFAULT_FN_ATTRS
6096_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
6097{
6098 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6099 (__v16qi) _mm_setzero_si128 (),
6100 __M);
6101}
6102
6103static __inline__ void __DEFAULT_FN_ATTRS
6104_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6105{
6106 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6107}
6108
6109static __inline__ __m256i __DEFAULT_FN_ATTRS
6110_mm512_cvtsepi64_epi32 (__m512i __A)
6111{
6112 __v8si __O;
6113 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6114 (__v8si) _mm256_undefined_si256 (),
6115 (__mmask8) -1);
6116}
6117
6118static __inline__ __m256i __DEFAULT_FN_ATTRS
6119_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6120{
6121 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6122 (__v8si) __O, __M);
6123}
6124
6125static __inline__ __m256i __DEFAULT_FN_ATTRS
6126_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
6127{
6128 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6129 (__v8si) _mm256_setzero_si256 (),
6130 __M);
6131}
6132
6133static __inline__ void __DEFAULT_FN_ATTRS
6134_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
6135{
6136 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
6137}
6138
6139static __inline__ __m128i __DEFAULT_FN_ATTRS
6140_mm512_cvtsepi64_epi16 (__m512i __A)
6141{
6142 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6143 (__v8hi) _mm_undefined_si128 (),
6144 (__mmask8) -1);
6145}
6146
6147static __inline__ __m128i __DEFAULT_FN_ATTRS
6148_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6149{
6150 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6151 (__v8hi) __O, __M);
6152}
6153
6154static __inline__ __m128i __DEFAULT_FN_ATTRS
6155_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
6156{
6157 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6158 (__v8hi) _mm_setzero_si128 (),
6159 __M);
6160}
6161
6162static __inline__ void __DEFAULT_FN_ATTRS
6163_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
6164{
6165 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
6166}
6167
Michael Zuckermand8715312016-04-14 06:48:09 +00006168static __inline__ __m128i __DEFAULT_FN_ATTRS
6169_mm512_cvtusepi32_epi8 (__m512i __A)
6170{
6171 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6172 (__v16qi) _mm_undefined_si128 (),
6173 (__mmask16) -1);
6174}
6175
6176static __inline__ __m128i __DEFAULT_FN_ATTRS
6177_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6178{
6179 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6180 (__v16qi) __O,
6181 __M);
6182}
6183
6184static __inline__ __m128i __DEFAULT_FN_ATTRS
6185_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
6186{
6187 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6188 (__v16qi) _mm_setzero_si128 (),
6189 __M);
6190}
6191
6192static __inline__ void __DEFAULT_FN_ATTRS
6193_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6194{
6195 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6196}
6197
6198static __inline__ __m256i __DEFAULT_FN_ATTRS
6199_mm512_cvtusepi32_epi16 (__m512i __A)
6200{
6201 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6202 (__v16hi) _mm256_undefined_si256 (),
6203 (__mmask16) -1);
6204}
6205
6206static __inline__ __m256i __DEFAULT_FN_ATTRS
6207_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6208{
6209 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6210 (__v16hi) __O,
6211 __M);
6212}
6213
6214static __inline__ __m256i __DEFAULT_FN_ATTRS
6215_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
6216{
6217 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6218 (__v16hi) _mm256_setzero_si256 (),
6219 __M);
6220}
6221
6222static __inline__ void __DEFAULT_FN_ATTRS
6223_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6224{
6225 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6226}
6227
6228static __inline__ __m128i __DEFAULT_FN_ATTRS
6229_mm512_cvtusepi64_epi8 (__m512i __A)
6230{
6231 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6232 (__v16qi) _mm_undefined_si128 (),
6233 (__mmask8) -1);
6234}
6235
6236static __inline__ __m128i __DEFAULT_FN_ATTRS
6237_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6238{
6239 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6240 (__v16qi) __O,
6241 __M);
6242}
6243
6244static __inline__ __m128i __DEFAULT_FN_ATTRS
6245_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
6246{
6247 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6248 (__v16qi) _mm_setzero_si128 (),
6249 __M);
6250}
6251
6252static __inline__ void __DEFAULT_FN_ATTRS
6253_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6254{
6255 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6256}
6257
6258static __inline__ __m256i __DEFAULT_FN_ATTRS
6259_mm512_cvtusepi64_epi32 (__m512i __A)
6260{
6261 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6262 (__v8si) _mm256_undefined_si256 (),
6263 (__mmask8) -1);
6264}
6265
6266static __inline__ __m256i __DEFAULT_FN_ATTRS
6267_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6268{
6269 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6270 (__v8si) __O, __M);
6271}
6272
6273static __inline__ __m256i __DEFAULT_FN_ATTRS
6274_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
6275{
6276 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6277 (__v8si) _mm256_setzero_si256 (),
6278 __M);
6279}
6280
6281static __inline__ void __DEFAULT_FN_ATTRS
6282_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
6283{
6284 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
6285}
6286
6287static __inline__ __m128i __DEFAULT_FN_ATTRS
6288_mm512_cvtusepi64_epi16 (__m512i __A)
6289{
6290 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6291 (__v8hi) _mm_undefined_si128 (),
6292 (__mmask8) -1);
6293}
6294
6295static __inline__ __m128i __DEFAULT_FN_ATTRS
6296_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6297{
6298 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6299 (__v8hi) __O, __M);
6300}
6301
6302static __inline__ __m128i __DEFAULT_FN_ATTRS
6303_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
6304{
6305 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6306 (__v8hi) _mm_setzero_si128 (),
6307 __M);
6308}
6309
6310static __inline__ void __DEFAULT_FN_ATTRS
6311_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
6312{
6313 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
6314}
6315
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00006316static __inline__ __m128i __DEFAULT_FN_ATTRS
6317_mm512_cvtepi32_epi8 (__m512i __A)
6318{
6319 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6320 (__v16qi) _mm_undefined_si128 (),
6321 (__mmask16) -1);
6322}
6323
6324static __inline__ __m128i __DEFAULT_FN_ATTRS
6325_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6326{
6327 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6328 (__v16qi) __O, __M);
6329}
6330
6331static __inline__ __m128i __DEFAULT_FN_ATTRS
6332_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
6333{
6334 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6335 (__v16qi) _mm_setzero_si128 (),
6336 __M);
6337}
6338
6339static __inline__ void __DEFAULT_FN_ATTRS
6340_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6341{
6342 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6343}
6344
6345static __inline__ __m256i __DEFAULT_FN_ATTRS
6346_mm512_cvtepi32_epi16 (__m512i __A)
6347{
6348 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6349 (__v16hi) _mm256_undefined_si256 (),
6350 (__mmask16) -1);
6351}
6352
6353static __inline__ __m256i __DEFAULT_FN_ATTRS
6354_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6355{
6356 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6357 (__v16hi) __O, __M);
6358}
6359
6360static __inline__ __m256i __DEFAULT_FN_ATTRS
6361_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
6362{
6363 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6364 (__v16hi) _mm256_setzero_si256 (),
6365 __M);
6366}
6367
6368static __inline__ void __DEFAULT_FN_ATTRS
6369_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
6370{
6371 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
6372}
6373
6374static __inline__ __m128i __DEFAULT_FN_ATTRS
6375_mm512_cvtepi64_epi8 (__m512i __A)
6376{
6377 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6378 (__v16qi) _mm_undefined_si128 (),
6379 (__mmask8) -1);
6380}
6381
6382static __inline__ __m128i __DEFAULT_FN_ATTRS
6383_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6384{
6385 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6386 (__v16qi) __O, __M);
6387}
6388
6389static __inline__ __m128i __DEFAULT_FN_ATTRS
6390_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
6391{
6392 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6393 (__v16qi) _mm_setzero_si128 (),
6394 __M);
6395}
6396
6397static __inline__ void __DEFAULT_FN_ATTRS
6398_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6399{
6400 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6401}
6402
6403static __inline__ __m256i __DEFAULT_FN_ATTRS
6404_mm512_cvtepi64_epi32 (__m512i __A)
6405{
6406 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6407 (__v8si) _mm256_undefined_si256 (),
6408 (__mmask8) -1);
6409}
6410
6411static __inline__ __m256i __DEFAULT_FN_ATTRS
6412_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6413{
6414 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6415 (__v8si) __O, __M);
6416}
6417
6418static __inline__ __m256i __DEFAULT_FN_ATTRS
6419_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
6420{
6421 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6422 (__v8si) _mm256_setzero_si256 (),
6423 __M);
6424}
6425
6426static __inline__ void __DEFAULT_FN_ATTRS
6427_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
6428{
6429 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
6430}
6431
6432static __inline__ __m128i __DEFAULT_FN_ATTRS
6433_mm512_cvtepi64_epi16 (__m512i __A)
6434{
6435 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
6436 (__v8hi) _mm_undefined_si128 (),
6437 (__mmask8) -1);
6438}
6439
6440static __inline__ __m128i __DEFAULT_FN_ATTRS
6441_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6442{
6443 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
6444 (__v8hi) __O, __M);
6445}
6446
6447static __inline__ __m128i __DEFAULT_FN_ATTRS
6448_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
6449{
6450 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
6451 (__v8hi) _mm_setzero_si128 (),
6452 __M);
6453}
6454
6455static __inline__ void __DEFAULT_FN_ATTRS
6456_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
6457{
6458 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
6459}
6460
Michael Zuckermanef2979a2016-04-19 15:18:23 +00006461#define _mm512_extracti32x4_epi32( __A, __imm) __extension__ ({ \
6462__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
6463 (__imm),\
6464 (__v4si) _mm_undefined_si128 (),\
6465 (__mmask8) -1);\
6466})
6467
6468#define _mm512_mask_extracti32x4_epi32( __W, __U, __A, __imm) __extension__ ({ \
6469__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
6470 ( __imm),\
6471 (__v4si)( __W),\
6472 (__mmask8)( __U));\
6473})
6474
6475#define _mm512_maskz_extracti32x4_epi32( __U, __A, __imm) __extension__ ({ \
6476__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
6477 ( __imm),\
6478 (__v4si) _mm_setzero_si128 (),\
6479 (__mmask8)( __U));\
6480})
6481
6482#define _mm512_extracti64x4_epi64( __A, __imm) __extension__ ({ \
6483__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
6484 ( __imm),\
6485 (__v4di) _mm256_undefined_si256 (),\
6486 (__mmask8) -1);\
6487})
6488
6489#define _mm512_mask_extracti64x4_epi64( __W, __U, __A, __imm) __extension__ ({ \
6490__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
6491 ( __imm),\
6492 (__v4di)( __W),\
6493 (__mmask8)( __U));\
6494})
6495
6496#define _mm512_maskz_extracti64x4_epi64( __U, __A, __imm) __extension__ ({ \
6497__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
6498 ( __imm),\
6499 (__v4di) _mm256_setzero_si256 (),\
6500 (__mmask8)( __U));\
6501})
6502
6503#define _mm512_insertf64x4( __A, __B, __imm) __extension__ ({ \
6504__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
6505 (__v4df)( __B),\
6506 ( __imm),\
6507 (__v8df) _mm512_undefined_pd (),\
6508 (__mmask8) -1);\
6509})
6510
6511#define _mm512_mask_insertf64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6512__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
6513 (__v4df)( __B),\
6514 ( __imm),\
6515 (__v8df)( __W),\
6516 (__mmask8)( __U));\
6517})
6518
6519#define _mm512_maskz_insertf64x4( __U, __A, __B, __imm) __extension__ ({ \
6520__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
6521 (__v4df)( __B),\
6522 ( __imm),\
6523 (__v8df) _mm512_setzero_pd (),\
6524 (__mmask8)( __U));\
6525})
6526
6527#define _mm512_inserti64x4( __A, __B, __imm) __extension__ ({ \
6528__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
6529 (__v4di)( __B),\
6530 ( __imm),\
6531 (__v8di) _mm512_setzero_si512 (),\
6532 (__mmask8) -1);\
6533})
6534
6535#define _mm512_mask_inserti64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6536__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
6537 (__v4di)( __B),\
6538 ( __imm),\
6539 (__v8di)( __W),\
6540 (__mmask8)( __U));\
6541})
6542
6543#define _mm512_maskz_inserti64x4( __U, __A, __B, __imm) __extension__ ({ \
6544__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
6545 (__v4di)( __B),\
6546 ( __imm),\
6547 (__v8di) _mm512_setzero_si512 (),\
6548 (__mmask8)( __U));\
6549})
6550
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00006551#define _mm512_getmant_round_pd( __A, __B, __C, __R) __extension__ ({ \
6552__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6553 (__C << 2) |( __B),\
6554 (__v8df) _mm512_undefined_pd (),\
6555 (__mmask8) -1,( __R));\
6556})
6557
6558#define _mm512_mask_getmant_round_pd( __W, __U, __A, __B, __C, __R) __extension__ ({ \
6559__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6560 (__C << 2) |( __B),\
6561 (__v8df)( __W),(__mmask8)( __U),\
6562 ( __R));\
6563})
6564
6565#define _mm512_maskz_getmant_round_pd( __U, __A, __B, __C, __R) __extension__ ({ \
6566__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6567 (__C << 2) |( __B),\
6568 (__v8df) _mm512_setzero_pd (),\
6569 (__mmask8)( __U),( __R));\
6570})
6571
6572#define _mm512_getmant_pd( __A, __B, __C) __extension__ ({ \
6573__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6574 (__C << 2) |( __B),\
6575 (__v8df) _mm512_setzero_pd (),\
6576 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);\
6577})
6578
6579#define _mm512_mask_getmant_pd( __W, __U, __A, __B, __C) __extension__ ({ \
6580__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6581 (__C << 2) |( __B),\
6582 (__v8df)( __W), (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
6583})
6584
6585#define _mm512_maskz_getmant_pd( __U, __A, __B, __C) __extension__ ({ \
6586__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6587 (__C << 2) |( __B),\
6588 (__v8df) _mm512_setzero_pd (),\
6589 (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
6590})
6591
6592#define _mm512_getmant_round_ps( __A, __B, __C, __R) __extension__ ({ \
6593__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6594 (__C << 2) |( __B),\
6595 (__v16sf) _mm512_undefined_ps (),\
6596 (__mmask16) -1,( __R));\
6597})
6598
6599#define _mm512_mask_getmant_round_ps( __W, __U, __A, __B, __C, __R) __extension__ ({ \
6600__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6601 (__C << 2) |( __B),\
6602 (__v16sf)( __W),(__mmask16)( __U),\
6603 ( __R));\
6604})
6605
6606#define _mm512_maskz_getmant_round_ps( __U, __A, __B, __C, __R) __extension__ ({ \
6607__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6608 (__C << 2) |( __B),\
6609 (__v16sf) _mm512_setzero_ps (),\
6610 ( __U),( __R));\
6611})
6612
6613#define _mm512_getmant_ps( __A, __B, __C) __extension__ ({ \
6614__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6615 (__C << 2) |( __B),\
6616 (__v16sf) _mm512_undefined_ps (),\
6617 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);\
6618})
6619
6620#define _mm512_mask_getmant_ps( __W, __U, __A, __B, __C) __extension__ ({ \
6621__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6622 (__C << 2) |( __B),\
6623 (__v16sf)( __W),(__mmask16) ( __U),\
6624 _MM_FROUND_CUR_DIRECTION);\
6625})
6626
6627#define _mm512_maskz_getmant_ps( __U, __A, __B, __C) __extension__ ({ \
6628__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6629 (__C << 2) |( __B),\
6630 (__v16sf) _mm512_setzero_ps (),\
6631 (__mmask16)( __U),_MM_FROUND_CUR_DIRECTION);\
6632})
6633
6634#define _mm512_getexp_round_pd( __A, __R) __extension__ ({ \
6635__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
6636 (__v8df) _mm512_undefined_pd (),\
6637 (__mmask8) -1,( __R));\
6638})
6639
6640#define _mm512_mask_getexp_round_pd( __W, __U, __A, __R) __extension__ ({ \
6641__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
6642 (__v8df)( __W),\
6643 (__mmask8)( __U),( __R));\
6644})
6645
6646#define _mm512_maskz_getexp_round_pd( __U, __A, __R) __extension__ ({ \
6647__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
6648 (__v8df) _mm512_setzero_pd (),\
6649 (__mmask8)( __U),( __R));\
6650})
6651
6652static __inline__ __m512d __DEFAULT_FN_ATTRS
6653_mm512_getexp_pd (__m512d __A)
6654{
6655 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
6656 (__v8df) _mm512_undefined_pd (),
6657 (__mmask8) -1,
6658 _MM_FROUND_CUR_DIRECTION);
6659}
6660
6661static __inline__ __m512d __DEFAULT_FN_ATTRS
6662_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
6663{
6664 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
6665 (__v8df) __W,
6666 (__mmask8) __U,
6667 _MM_FROUND_CUR_DIRECTION);
6668}
6669
6670static __inline__ __m512d __DEFAULT_FN_ATTRS
6671_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
6672{
6673 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
6674 (__v8df) _mm512_setzero_pd (),
6675 (__mmask8) __U,
6676 _MM_FROUND_CUR_DIRECTION);
6677}
6678
6679#define _mm512_getexp_round_ps( __A, __R) __extension__ ({ \
6680__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
6681 (__v16sf) _mm512_undefined_ps (),\
6682 (__mmask16) -1,( __R));\
6683})
6684
6685#define _mm512_mask_getexp_round_ps( __W, __U, __A, __R) __extension__ ({ \
6686__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
6687 (__v16sf)( __W),\
6688 (__mmask16)( __U),( __R));\
6689})
6690
6691#define _mm512_maskz_getexp_round_ps( __U, __A, __R) __extension__ ({ \
6692__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
6693 (__v16sf) _mm512_setzero_ps (),\
6694 (__mmask16)( __U),( __R));\
6695})
6696
6697static __inline__ __m512 __DEFAULT_FN_ATTRS
6698_mm512_getexp_ps (__m512 __A)
6699{
6700 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
6701 (__v16sf) _mm512_undefined_ps (),
6702 (__mmask16) -1,
6703 _MM_FROUND_CUR_DIRECTION);
6704}
6705
6706static __inline__ __m512 __DEFAULT_FN_ATTRS
6707_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
6708{
6709 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
6710 (__v16sf) __W,
6711 (__mmask16) __U,
6712 _MM_FROUND_CUR_DIRECTION);
6713}
6714
6715static __inline__ __m512 __DEFAULT_FN_ATTRS
6716_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
6717{
6718 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
6719 (__v16sf) _mm512_setzero_ps (),
6720 (__mmask16) __U,
6721 _MM_FROUND_CUR_DIRECTION);
6722}
6723
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00006724#define _mm512_i64gather_ps( __index, __addr, __scale) __extension__ ({ \
6725__builtin_ia32_gatherdiv16sf ((__v8sf) _mm256_undefined_ps (),\
6726 __addr, (__v8di) __index, (__mmask8) -1, __scale);\
6727})
6728
6729#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
6730 __addr, __scale) __extension__({\
6731__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
6732 __addr,(__v8di) __index, __mask, __scale);\
6733})
6734
6735#define _mm512_i64gather_epi32(__index, __addr, __scale) __extension__ ({\
6736__builtin_ia32_gatherdiv16si ((__v8si) _mm256_undefined_ps (),\
6737 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
6738})
6739
6740#define _mm512_mask_i64gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6741__builtin_ia32_gatherdiv16si ((__v8si) __v1_old,\
6742 __addr, (__v8di) __index, __mask , __scale);\
6743})
6744
6745#define _mm512_i64gather_pd(__index, __addr, __scale) __extension__ ({\
6746__builtin_ia32_gatherdiv8df ((__v8df) _mm512_undefined_pd(),\
6747 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
6748})
6749
6750#define _mm512_mask_i64gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6751__builtin_ia32_gatherdiv8df ((__v8df) __v1_old,\
6752 __addr, (__v8di) __index, __mask , __scale);\
6753})
6754
6755#define _mm512_i64gather_epi64(__index, __addr, __scale) __extension__ ({\
6756__builtin_ia32_gatherdiv8di ((__v8di) _mm512_undefined_pd(),\
6757 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
6758})
6759
6760#define _mm512_mask_i64gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6761__builtin_ia32_gatherdiv8di ((__v8di) __v1_old,\
6762 __addr, (__v8di) __index, __mask , __scale);\
6763})
6764
6765#define _mm512_i32gather_ps(__index, __addr, __scale) __extension__ ({\
6766__builtin_ia32_gathersiv16sf ((__v16sf) _mm512_undefined_ps(),\
6767 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
6768})
6769
6770#define _mm512_mask_i32gather_ps( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6771__builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,\
6772 __addr, (__v16si) __index, __mask , __scale);\
6773})
6774
6775#define _mm512_i32gather_epi32(__index, __addr, __scale) __extension__ ({\
6776__builtin_ia32_gathersiv16si ((__v16sf) _mm512_undefined_epi32(),\
6777 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
6778})
6779
6780#define _mm512_mask_i32gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6781__builtin_ia32_gathersiv16si ((__v16sf) __v1_old,\
6782 __addr, (__v16si) __index, __mask , __scale);\
6783})
6784
6785#define _mm512_i32gather_pd(__index, __addr, __scale) __extension__ ({\
6786__builtin_ia32_gathersiv8df ((__v8df) _mm512_undefined_pd(),\
6787 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
6788})
6789
6790#define _mm512_mask_i32gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6791__builtin_ia32_gathersiv8df ((__v8df) __v1_old,\
6792 __addr, (__v8si) __index, __mask , __scale);\
6793})
6794
6795#define _mm512_i32gather_epi64(__index, __addr, __scale) __extension__ ({\
6796__builtin_ia32_gathersiv8di ((__v8di) _mm512_undefined_epi32(),\
6797 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
6798})
6799
6800#define _mm512_mask_i32gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6801__builtin_ia32_gathersiv8di ((__v8di) __v1_old,\
6802 __addr, (__v8si) __index, __mask , __scale);\
6803})
6804
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00006805#define _mm512_i64scatter_ps(__addr,__index, __v1, __scale) __extension__ ({\
6806__builtin_ia32_scatterdiv16sf(__addr, (__mmask8) -1,\
6807 (__v8di) __index, (__v8sf) __v1, __scale);\
6808})
6809
6810#define _mm512_mask_i64scatter_ps(__addr, __mask,__index, __v1, __scale) __extension__ ({\
6811__builtin_ia32_scatterdiv16sf(__addr, __mask,\
6812 (__v8di) __index, (__v8sf) __v1, __scale);\
6813})
6814
6815#define _mm512_i64scatter_epi32(__addr, __index, __v1, __scale) __extension__ ({\
6816__builtin_ia32_scatterdiv16si (__addr, (__mmask8) -1,\
6817 (__v8di) __index, (__v8si) __v1, __scale);\
6818})
6819
6820#define _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, __scale) __extension__ ({\
6821__builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,\
6822 (__v8si) __v1, __scale);\
6823})
6824
6825#define _mm512_i64scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
6826__builtin_ia32_scatterdiv8df (__addr, (__mmask8) -1,\
6827 (__v8di) __index, (__v8df) __v1, __scale);\
6828})
6829
6830#define _mm512_mask_i64scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
6831__builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,\
6832 (__v8df) __v1, __scale);\
6833})
6834
6835#define _mm512_i64scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
6836__builtin_ia32_scatterdiv8di (__addr, (__mmask8) -1,\
6837 (__v8di) __index, (__v8di) __v1, __scale);\
6838})
6839
6840#define _mm512_mask_i64scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
6841__builtin_ia32_scatterdiv8di(__addr, __mask, (__v8di) __index,\
6842 (__v8di) __v1, __scale);\
6843})
6844
6845#define _mm512_i32scatter_ps( __addr, __index, __v1, __scale) __extension__ ({\
6846__builtin_ia32_scattersiv16sf (__addr, (__mmask16) -1,\
6847 (__v16si) __index, (__v16sf) __v1, __scale);\
6848})
6849
6850#define _mm512_mask_i32scatter_ps( __addr, __mask, __index, __v1, __scale) __extension__ ({\
6851__builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,\
6852 (__v16sf) __v1, __scale);\
6853})
6854
6855#define _mm512_i32scatter_epi32( __addr, __index, __v1, __scale) __extension__ ({\
6856__builtin_ia32_scattersiv16si (__addr, (__mmask16) -1,\
6857 (__v16si) __index, (__v16si) __v1, __scale);\
6858})
6859
6860#define _mm512_mask_i32scatter_epi32( __addr, __mask, __index, __v1, __scale) __extension__ ({\
6861__builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,\
6862 (__v16si) __v1, __scale);\
6863})
6864
6865#define _mm512_i32scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
6866__builtin_ia32_scattersiv8df (__addr, (__mmask8) -1,\
6867 (__v8si) __index, (__v8df) __v1, __scale);\
6868})
6869
6870#define _mm512_mask_i32scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
6871__builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,\
6872 (__v8df) __v1, __scale);\
6873})
6874
6875#define _mm512_i32scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
6876__builtin_ia32_scattersiv8di (__addr, (__mmask8) -1,\
6877 (__v8si) __index, (__v8di) __v1, __scale);\
6878})
6879
6880#define _mm512_mask_i32scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
6881__builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,\
6882 (__v8di) __v1, __scale);\
6883})
6884
Michael Zuckerman743d68c2016-04-22 10:56:24 +00006885static __inline__ __m128 __DEFAULT_FN_ATTRS
6886_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6887{
6888 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
6889 (__v4sf) __B,
6890 (__v4sf) __W,
6891 (__mmask8) __U,
6892 _MM_FROUND_CUR_DIRECTION);
6893}
6894
6895#define _mm_mask_fmadd_round_ss( __W, __U, __A, __B, __R) __extension__({\
6896__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
6897 (__v4sf) __B,\
6898 (__v4sf) __W,\
6899 (__mmask8) __U,\
6900 __R);\
6901})
6902
6903static __inline__ __m128 __DEFAULT_FN_ATTRS
6904_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
6905{
6906 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
6907 (__v4sf) __B,
6908 (__v4sf) __C,
6909 (__mmask8) __U,
6910 _MM_FROUND_CUR_DIRECTION);
6911}
6912
6913#define _mm_maskz_fmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
6914__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
6915 (__v4sf) __B,\
6916 (__v4sf) __C,\
6917 (__mmask8) __U,\
6918 _MM_FROUND_CUR_DIRECTION);\
6919})
6920
6921static __inline__ __m128 __DEFAULT_FN_ATTRS
6922_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
6923{
6924 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
6925 (__v4sf) __X,
6926 (__v4sf) __Y,
6927 (__mmask8) __U,
6928 _MM_FROUND_CUR_DIRECTION);
6929}
6930
6931#define _mm_mask3_fmadd_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
6932__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
6933 (__v4sf) __X,\
6934 (__v4sf) __Y,\
6935 (__mmask8) __U,\
6936 __R);\
6937})
6938
6939static __inline__ __m128 __DEFAULT_FN_ATTRS
6940_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6941{
6942 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
6943 (__v4sf) -(__B),
6944 (__v4sf) __W,
6945 (__mmask8) __U,
6946 _MM_FROUND_CUR_DIRECTION);
6947}
6948
6949#define _mm_mask_fmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
6950__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
6951 (__v4sf) -(__B),\
6952 (__v4sf) __W,\
6953 (__mmask8) __U,\
6954 __R);\
6955})
6956
6957static __inline__ __m128 __DEFAULT_FN_ATTRS
6958_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
6959{
6960 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
6961 (__v4sf) __B,
6962 (__v4sf) -(__C),
6963 (__mmask8) __U,
6964 _MM_FROUND_CUR_DIRECTION);
6965}
6966
6967#define _mm_maskz_fmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
6968__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
6969 (__v4sf) __B,\
6970 (__v4sf) -(__C),\
6971 (__mmask8) __U,\
6972 __R);\
6973})
6974
6975static __inline__ __m128 __DEFAULT_FN_ATTRS
6976_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
6977{
6978 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
6979 (__v4sf) __X,
6980 (__v4sf) -(__Y),
6981 (__mmask8) __U,
6982 _MM_FROUND_CUR_DIRECTION);
6983}
6984
6985#define _mm_mask3_fmsub_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
6986__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
6987 (__v4sf) __X,\
6988 (__v4sf) -(__Y),\
6989 (__mmask8) __U,\
6990 __R);\
6991})
6992
6993static __inline__ __m128 __DEFAULT_FN_ATTRS
6994_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6995{
6996 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),
6997 (__v4sf) __B,
6998 (__v4sf) __W,
6999 (__mmask8) __U,
7000 _MM_FROUND_CUR_DIRECTION);
7001}
7002
7003#define _mm_mask_fnmadd_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7004__builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),\
7005 (__v4sf) __B,\
7006 (__v4sf) __W,\
7007 (__mmask8) __U,\
7008 __R);\
7009})
7010
7011static __inline__ __m128 __DEFAULT_FN_ATTRS
7012_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7013{
7014 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),
7015 (__v4sf) __B,
7016 (__v4sf) __C,
7017 (__mmask8) __U,
7018 _MM_FROUND_CUR_DIRECTION);
7019}
7020
7021#define _mm_maskz_fnmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7022__builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),\
7023 (__v4sf) __B,\
7024 (__v4sf) __C,\
7025 (__mmask8) __U,\
7026 __R);\
7027})
7028
7029static __inline__ __m128 __DEFAULT_FN_ATTRS
7030_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7031{
7032 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),
7033 (__v4sf) __X,
7034 (__v4sf) __Y,
7035 (__mmask8) __U,
7036 _MM_FROUND_CUR_DIRECTION);
7037}
7038
7039#define _mm_mask3_fnmadd_round_ss( __W, __X, __Y, __U, __R) __extension__({\
7040__builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),\
7041 (__v4sf) __X,\
7042 (__v4sf) __Y,\
7043 (__mmask8) __U,\
7044 __R);\
7045})
7046
7047static __inline__ __m128 __DEFAULT_FN_ATTRS
7048_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7049{
7050 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),
7051 (__v4sf) -(__B),
7052 (__v4sf) __W,
7053 (__mmask8) __U,
7054 _MM_FROUND_CUR_DIRECTION);
7055}
7056
7057#define _mm_mask_fnmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7058__builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),\
7059 (__v4sf) -(__B),\
7060 (__v4sf) __W,\
7061 (__mmask8) __U,\
7062 __R);\
7063})
7064
7065static __inline__ __m128 __DEFAULT_FN_ATTRS
7066_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7067{
7068 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),
7069 (__v4sf) __B,
7070 (__v4sf) -(__C),
7071 (__mmask8) __U,
7072 _MM_FROUND_CUR_DIRECTION);
7073}
7074
7075#define _mm_maskz_fnmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7076__builtin_ia32_vfmaddss3_maskz((__v4sf) -(__A),\
7077 (__v4sf) __B,\
7078 (__v4sf) -(__C),\
7079 (__mmask8) __U,\
7080 _MM_FROUND_CUR_DIRECTION);\
7081})
7082
7083static __inline__ __m128 __DEFAULT_FN_ATTRS
7084_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7085{
7086 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),
7087 (__v4sf) __X,
7088 (__v4sf) -(__Y),
7089 (__mmask8) __U,
7090 _MM_FROUND_CUR_DIRECTION);
7091}
7092
7093#define _mm_mask3_fnmsub_round_ss( __W, __X, __Y, __U, __R) __extension__({\
7094__builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),\
7095 (__v4sf) __X,\
7096 (__v4sf) -(__Y),\
7097 (__mmask8) __U,\
7098 __R);\
7099})
7100
7101static __inline__ __m128 __DEFAULT_FN_ATTRS
7102_mm_mask_fmadd_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7103{
7104 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
7105 (__v2df) __B,
7106 (__v2df) __W,
7107 (__mmask8) __U,
7108 _MM_FROUND_CUR_DIRECTION);
7109}
7110
7111#define _mm_mask_fmadd_round_sd( __W, __U, __A, __B, __R) __extension__({\
7112__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
7113 (__v2df) __B,\
7114 (__v2df) __W,\
7115 (__mmask8) __U,\
7116 __R);\
7117})
7118
7119static __inline__ __m128 __DEFAULT_FN_ATTRS
7120_mm_maskz_fmadd_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7121{
7122 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
7123 (__v2df) __B,
7124 (__v2df) __C,
7125 (__mmask8) __U,
7126 _MM_FROUND_CUR_DIRECTION);
7127}
7128
7129#define _mm_maskz_fmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7130__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
7131 (__v2df) __B,\
7132 (__v2df) __C,\
7133 (__mmask8) __U,\
7134 _MM_FROUND_CUR_DIRECTION);\
7135})
7136
7137static __inline__ __m128 __DEFAULT_FN_ATTRS
7138_mm_mask3_fmadd_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7139{
7140 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
7141 (__v2df) __X,
7142 (__v2df) __Y,
7143 (__mmask8) __U,
7144 _MM_FROUND_CUR_DIRECTION);
7145}
7146
7147#define _mm_mask3_fmadd_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
7148__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
7149 (__v2df) __X,\
7150 (__v2df) __Y,\
7151 (__mmask8) __U,\
7152 __R);\
7153})
7154
7155static __inline__ __m128 __DEFAULT_FN_ATTRS
7156_mm_mask_fmsub_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7157{
7158 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
7159 (__v2df) -(__B),
7160 (__v2df) __W,
7161 (__mmask8) __U,
7162 _MM_FROUND_CUR_DIRECTION);
7163}
7164
7165#define _mm_mask_fmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7166__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
7167 (__v2df) -(__B),\
7168 (__v2df) __W,\
7169 (__mmask8) __U,\
7170 __R);\
7171})
7172
7173static __inline__ __m128 __DEFAULT_FN_ATTRS
7174_mm_maskz_fmsub_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7175{
7176 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
7177 (__v2df) __B,
7178 (__v2df) -(__C),
7179 (__mmask8) __U,
7180 _MM_FROUND_CUR_DIRECTION);
7181}
7182
7183#define _mm_maskz_fmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7184__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
7185 (__v2df) __B,\
7186 (__v2df) -(__C),\
7187 (__mmask8) __U,\
7188 __R);\
7189})
7190
7191static __inline__ __m128 __DEFAULT_FN_ATTRS
7192_mm_mask3_fmsub_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7193{
7194 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
7195 (__v2df) __X,
7196 (__v2df) -(__Y),
7197 (__mmask8) __U,
7198 _MM_FROUND_CUR_DIRECTION);
7199}
7200
7201#define _mm_mask3_fmsub_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
7202__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
7203 (__v2df) __X,\
7204 (__v2df) -(__Y),\
7205 (__mmask8) __U, __R);\
7206})
7207
7208static __inline__ __m128 __DEFAULT_FN_ATTRS
7209_mm_mask_fnmadd_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7210{
7211 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),
7212 (__v2df) __B,
7213 (__v2df) __W,
7214 (__mmask8) __U,
7215 _MM_FROUND_CUR_DIRECTION);
7216}
7217
7218#define _mm_mask_fnmadd_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7219__builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),\
7220 (__v2df) __B,\
7221 (__v2df) __W,\
7222 (__mmask8) __U,\
7223 __R);\
7224})
7225
7226static __inline__ __m128 __DEFAULT_FN_ATTRS
7227_mm_maskz_fnmadd_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7228{
7229 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),
7230 (__v2df) __B,
7231 (__v2df) __C,
7232 (__mmask8) __U,
7233 _MM_FROUND_CUR_DIRECTION);
7234}
7235
7236#define _mm_maskz_fnmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7237__builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),\
7238 (__v2df) __B,\
7239 (__v2df) __C,\
7240 (__mmask8) __U,\
7241 __R);\
7242})
7243
7244static __inline__ __m128 __DEFAULT_FN_ATTRS
7245_mm_mask3_fnmadd_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7246{
7247 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),
7248 (__v2df) __X,
7249 (__v2df) __Y,
7250 (__mmask8) __U,
7251 _MM_FROUND_CUR_DIRECTION);
7252}
7253
7254#define _mm_mask3_fnmadd_round_sd( __W, __X, __Y, __U, __R) __extension__({\
7255__builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),\
7256 (__v2df) __X,\
7257 (__v2df) __Y,\
7258 (__mmask8) __U,\
7259 __R);\
7260})
7261
7262static __inline__ __m128 __DEFAULT_FN_ATTRS
7263_mm_mask_fnmsub_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7264{
7265 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),
7266 (__v2df) -(__B),
7267 (__v2df) __W,
7268 (__mmask8) __U,
7269 _MM_FROUND_CUR_DIRECTION);
7270}
7271
7272#define _mm_mask_fnmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7273__builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),\
7274 (__v2df) -(__B),\
7275 (__v2df) __W,\
7276 (__mmask8) __U,\
7277 __R);\
7278})
7279
7280static __inline__ __m128 __DEFAULT_FN_ATTRS
7281_mm_maskz_fnmsub_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7282{
7283 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),
7284 (__v2df) __B,
7285 (__v2df) -(__C),
7286 (__mmask8) __U,
7287 _MM_FROUND_CUR_DIRECTION);
7288}
7289
7290#define _mm_maskz_fnmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7291__builtin_ia32_vfmaddsd3_maskz( (__v2df) -(__A),\
7292 (__v2df) __B,\
7293 (__v2df) -(__C),\
7294 (__mmask8) __U,\
7295 _MM_FROUND_CUR_DIRECTION);\
7296})
7297
7298static __inline__ __m128 __DEFAULT_FN_ATTRS
7299_mm_mask3_fnmsub_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7300{
7301 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),
7302 (__v2df) __X,
7303 (__v2df) -(__Y),
7304 (__mmask8) __U,
7305 _MM_FROUND_CUR_DIRECTION);
7306}
7307
7308#define _mm_mask3_fnmsub_round_sd( __W, __X, __Y, __U, __R) __extension__({\
7309__builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),\
7310 (__v2df) __X,\
7311 (__v2df) -(__Y),\
7312 (__mmask8) __U,\
7313 __R);\
7314})
7315
Michael Zuckerman8938e832016-04-25 05:32:35 +00007316#define _mm512_permutex_pd( __X, __M) __extension__ ({ \
7317__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
7318 (__v8df) _mm512_undefined_pd (),\
7319 (__mmask8) -1);\
7320})
7321
7322#define _mm512_mask_permutex_pd( __W, __U, __X, __M) __extension__ ({ \
7323__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
7324 (__v8df)( __W),\
7325 (__mmask8)( __U));\
7326})
7327
7328#define _mm512_maskz_permutex_pd( __U, __X, __M) __extension__ ({ \
7329__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
7330 (__v8df) _mm512_setzero_pd (),\
7331 (__mmask8)( __U));\
7332})
7333
7334#define _mm512_permutex_epi64( __X, __I) __extension__ ({ \
7335__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
7336 (__v8di) _mm512_undefined_epi32 (),\
7337 (__mmask8) (-1));\
7338})
7339
7340#define _mm512_mask_permutex_epi64( __W, __M, __X, __I) __extension__ ({ \
7341__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
7342 (__v8di)( __W),\
7343 (__mmask8)( __M));\
7344})
7345
7346#define _mm512_maskz_permutex_epi64( __M, __X, __I) __extension__ ({ \
7347__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
7348 (__v8di) _mm512_setzero_si512 (),\
7349 (__mmask8)( __M));\
7350})
7351
7352static __inline__ __m512d __DEFAULT_FN_ATTRS
7353_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
7354{
7355 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7356 (__v8di) __X,
7357 (__v8df) _mm512_undefined_pd (),
7358 (__mmask8) -1);
7359}
7360
7361static __inline__ __m512d __DEFAULT_FN_ATTRS
7362_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
7363{
7364 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7365 (__v8di) __X,
7366 (__v8df) __W,
7367 (__mmask8) __U);
7368}
7369
7370static __inline__ __m512d __DEFAULT_FN_ATTRS
7371_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
7372{
7373 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7374 (__v8di) __X,
7375 (__v8df) _mm512_setzero_pd (),
7376 (__mmask8) __U);
7377}
7378
7379static __inline__ __m512i __DEFAULT_FN_ATTRS
7380_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
7381{
7382 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7383 (__v8di) __X,
7384 (__v8di) _mm512_setzero_si512 (),
7385 __M);
7386}
7387
7388static __inline__ __m512i __DEFAULT_FN_ATTRS
7389_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
7390{
7391 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7392 (__v8di) __X,
7393 (__v8di) _mm512_undefined_epi32 (),
7394 (__mmask8) -1);
7395}
7396
7397static __inline__ __m512i __DEFAULT_FN_ATTRS
7398_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
7399 __m512i __Y)
7400{
7401 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7402 (__v8di) __X,
7403 (__v8di) __W,
7404 __M);
7405}
7406
7407static __inline__ __m512 __DEFAULT_FN_ATTRS
7408_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
7409{
7410 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7411 (__v16si) __X,
7412 (__v16sf) _mm512_undefined_ps (),
7413 (__mmask16) -1);
7414}
7415
7416static __inline__ __m512 __DEFAULT_FN_ATTRS
7417_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
7418{
7419 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7420 (__v16si) __X,
7421 (__v16sf) __W,
7422 (__mmask16) __U);
7423}
7424
7425static __inline__ __m512 __DEFAULT_FN_ATTRS
7426_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
7427{
7428 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7429 (__v16si) __X,
7430 (__v16sf) _mm512_setzero_ps (),
7431 (__mmask16) __U);
7432}
7433
7434static __inline__ __m512i __DEFAULT_FN_ATTRS
7435_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
7436{
7437 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
7438 (__v16si) __X,
7439 (__v16si) _mm512_setzero_si512 (),
7440 __M);
7441}
7442
7443static __inline__ __m512i __DEFAULT_FN_ATTRS
7444_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
7445{
7446 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
7447 (__v16si) __X,
7448 (__v16si) _mm512_undefined_epi32 (),
7449 (__mmask16) -1);
7450}
7451
7452static __inline__ __m512i __DEFAULT_FN_ATTRS
7453_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
7454 __m512i __Y)
7455{
7456 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
7457 (__v16si) __X,
7458 (__v16si) __W,
7459 __M);
7460}
7461
Michael Zuckermanfa508e82016-04-25 16:42:29 +00007462static __inline__ __mmask16 __DEFAULT_FN_ATTRS
7463_mm512_kand (__mmask16 __A, __mmask16 __B)
7464{
7465 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
7466}
Michael Zuckerman8938e832016-04-25 05:32:35 +00007467
Michael Zuckermanfa508e82016-04-25 16:42:29 +00007468static __inline__ __mmask16 __DEFAULT_FN_ATTRS
7469_mm512_kandn (__mmask16 __A, __mmask16 __B)
7470{
7471 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
7472}
7473
7474static __inline__ __mmask16 __DEFAULT_FN_ATTRS
7475_mm512_kor (__mmask16 __A, __mmask16 __B)
7476{
7477 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
7478}
7479
7480static __inline__ int __DEFAULT_FN_ATTRS
7481_mm512_kortestc (__mmask16 __A, __mmask16 __B)
7482{
7483 return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
7484 (__mmask16) __B);
7485}
7486
7487static __inline__ int __DEFAULT_FN_ATTRS
7488_mm512_kortestz (__mmask16 __A, __mmask16 __B)
7489{
7490 return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
7491 (__mmask16) __B);
7492}
7493
7494static __inline__ __mmask16 __DEFAULT_FN_ATTRS
7495_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
7496{
7497 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
7498}
7499
7500static __inline__ __mmask16 __DEFAULT_FN_ATTRS
7501_mm512_kxnor (__mmask16 __A, __mmask16 __B)
7502{
7503 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
7504}
7505
7506static __inline__ __mmask16 __DEFAULT_FN_ATTRS
7507_mm512_kxor (__mmask16 __A, __mmask16 __B)
7508{
7509 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
7510}
Michael Zuckerman8938e832016-04-25 05:32:35 +00007511
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00007512static __inline__ void __DEFAULT_FN_ATTRS
7513_mm512_stream_si512 (__m512i * __P, __m512i __A)
7514{
7515 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
7516}
7517
7518static __inline__ __m512i __DEFAULT_FN_ATTRS
7519_mm512_stream_load_si512 (void *__P)
7520{
7521 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
7522}
7523
7524static __inline__ void __DEFAULT_FN_ATTRS
7525_mm512_stream_pd (double *__P, __m512d __A)
7526{
7527 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
7528}
7529
7530static __inline__ void __DEFAULT_FN_ATTRS
7531_mm512_stream_ps (float *__P, __m512 __A)
7532{
7533 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
7534}
7535
Michael Kupersteine45af542015-06-30 13:36:19 +00007536#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00007537
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00007538#endif // __AVX512FINTRIN_H