blob: 1eccd4c5fdb7632396bd8f67a93f0264e515940f [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
30typedef double __v8df __attribute__((__vector_size__(64)));
31typedef float __v16sf __attribute__((__vector_size__(64)));
32typedef long long __v8di __attribute__((__vector_size__(64)));
33typedef int __v16si __attribute__((__vector_size__(64)));
34
35typedef float __m512 __attribute__((__vector_size__(64)));
36typedef double __m512d __attribute__((__vector_size__(64)));
37typedef long long __m512i __attribute__((__vector_size__(64)));
38
39typedef unsigned char __mmask8;
40typedef unsigned short __mmask16;
41
42/* Rounding mode macros. */
43#define _MM_FROUND_TO_NEAREST_INT 0x00
44#define _MM_FROUND_TO_NEG_INF 0x01
45#define _MM_FROUND_TO_POS_INF 0x02
46#define _MM_FROUND_TO_ZERO 0x03
47#define _MM_FROUND_CUR_DIRECTION 0x04
48
Michael Zuckermandef78752016-03-28 12:23:09 +000049typedef enum
50{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000051 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
52 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
53 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
54 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
55 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
56 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
57 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
58 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
59 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
60 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
61 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
62 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
63 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
64 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
65 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
66 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
67 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
68 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
69 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
70 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
71 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
72 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
73 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
74 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
75 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
76 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
77 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
78 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
79 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
80 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
81 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
82 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
83 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
84 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
85 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
86 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
87 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
88 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
89 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
90 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
91 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
92 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
93 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
94 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
95 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
96 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
97 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
98 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
99 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
100 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
101 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
102 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
103 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
104 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
105 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
106 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
107 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
108 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
109 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
110 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
111 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
112 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
113 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
114 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
115 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
116 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
117 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
118 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
119 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
120 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
121 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
122 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
123 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
124 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
125 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
126 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
127 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
128 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
129 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
130 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
131 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
132 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
133 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
134 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
135 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
136 _MM_PERM_DDDD = 0xFF
137} _MM_PERM_ENUM;
138
139typedef enum
140{
Michael Zuckermandef78752016-03-28 12:23:09 +0000141 _MM_MANT_NORM_1_2, /* interval [1, 2) */
142 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
143 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
144 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
145} _MM_MANTISSA_NORM_ENUM;
146
147typedef enum
148{
149 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
150 _MM_MANT_SIGN_zero, /* sign = 0 */
151 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
152} _MM_MANTISSA_SIGN_ENUM;
153
Eric Christopher4d1851682015-06-17 07:09:20 +0000154/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000155#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000156
Adam Nemet0d5bb552014-07-28 17:14:40 +0000157/* Create vectors with repeated elements */
158
Michael Kupersteine45af542015-06-30 13:36:19 +0000159static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000160_mm512_setzero_si512(void)
161{
162 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
163}
164
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000165static __inline__ __m512d __DEFAULT_FN_ATTRS
166_mm512_undefined_pd()
167{
168 return (__m512d)__builtin_ia32_undef512();
169}
170
171static __inline__ __m512 __DEFAULT_FN_ATTRS
172_mm512_undefined()
173{
174 return (__m512)__builtin_ia32_undef512();
175}
176
177static __inline__ __m512 __DEFAULT_FN_ATTRS
178_mm512_undefined_ps()
179{
180 return (__m512)__builtin_ia32_undef512();
181}
182
183static __inline__ __m512i __DEFAULT_FN_ATTRS
184_mm512_undefined_epi32()
185{
186 return (__m512i)__builtin_ia32_undef512();
187}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000188static __inline__ __m512i __DEFAULT_FN_ATTRS
189_mm512_broadcastd_epi32 (__m128i __A)
190{
191 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
192 (__v16si)
193 _mm512_undefined_epi32 (),
194 (__mmask16) -1);
195}
196
197static __inline__ __m512i __DEFAULT_FN_ATTRS
198_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
199{
200 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
201 (__v16si) __O, __M);
202}
203
204static __inline__ __m512i __DEFAULT_FN_ATTRS
205_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
206{
207 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
208 (__v16si)
209 _mm512_setzero_si512 (),
210 __M);
211}
212
213static __inline__ __m512i __DEFAULT_FN_ATTRS
214_mm512_broadcastq_epi64 (__m128i __A)
215{
216 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
217 (__v8di)
218 _mm512_undefined_pd (),
219 (__mmask8) -1);
220}
221
222static __inline__ __m512i __DEFAULT_FN_ATTRS
223_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
224{
225 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
226 (__v8di) __O, __M);
227}
228
229static __inline__ __m512i __DEFAULT_FN_ATTRS
230_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
231{
232 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
233 (__v8di)
234 _mm512_setzero_si512 (),
235 __M);
236}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000237
Michael Kupersteine45af542015-06-30 13:36:19 +0000238static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000239_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
240{
241 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
242 (__v16si)
243 _mm512_setzero_si512 (),
244 __M);
245}
246
Michael Kupersteine45af542015-06-30 13:36:19 +0000247static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000248_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
249{
250#ifdef __x86_64__
251 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
252 (__v8di)
253 _mm512_setzero_si512 (),
254 __M);
255#else
256 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
257 (__v8di)
258 _mm512_setzero_si512 (),
259 __M);
260#endif
261}
262
Michael Kupersteine45af542015-06-30 13:36:19 +0000263static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000264_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000265{
266 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
267 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
268}
Michael Kupersteine45af542015-06-30 13:36:19 +0000269static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000270_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000271{
272 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
273}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000276_mm512_set1_ps(float __w)
277{
278 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
279 __w, __w, __w, __w, __w, __w, __w, __w };
280}
281
Michael Kupersteine45af542015-06-30 13:36:19 +0000282static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000283_mm512_set1_pd(double __w)
284{
285 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
286}
287
Michael Kupersteine45af542015-06-30 13:36:19 +0000288static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000289_mm512_set1_epi32(int __s)
290{
291 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
292 __s, __s, __s, __s, __s, __s, __s, __s };
293}
294
Michael Kupersteine45af542015-06-30 13:36:19 +0000295static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000296_mm512_set1_epi64(long long __d)
297{
298 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
299}
300
Michael Kupersteine45af542015-06-30 13:36:19 +0000301static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000302_mm512_broadcastss_ps(__m128 __X)
303{
304 float __f = __X[0];
305 return (__v16sf){ __f, __f, __f, __f,
306 __f, __f, __f, __f,
307 __f, __f, __f, __f,
308 __f, __f, __f, __f };
309}
310
Michael Kupersteine45af542015-06-30 13:36:19 +0000311static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000312_mm512_broadcastsd_pd(__m128d __X)
313{
314 double __d = __X[0];
315 return (__v8df){ __d, __d, __d, __d,
316 __d, __d, __d, __d };
317}
318
Adam Nemetc871ff92014-07-30 16:51:24 +0000319/* Cast between vector types */
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000322_mm512_castpd256_pd512(__m256d __a)
323{
324 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
325}
326
Michael Kupersteine45af542015-06-30 13:36:19 +0000327static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000328_mm512_castps256_ps512(__m256 __a)
329{
330 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
331 -1, -1, -1, -1, -1, -1, -1, -1);
332}
333
Michael Kupersteine45af542015-06-30 13:36:19 +0000334static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000335_mm512_castpd512_pd128(__m512d __a)
336{
337 return __builtin_shufflevector(__a, __a, 0, 1);
338}
339
Michael Kupersteine45af542015-06-30 13:36:19 +0000340static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000341_mm512_castps512_ps128(__m512 __a)
342{
343 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
344}
345
Michael Zuckermanc6677032016-05-03 14:26:52 +0000346
347static __inline__ __m512d __DEFAULT_FN_ATTRS
348_mm512_castpd128_pd512 (__m128d __A)
349{
350 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
351}
352
353static __inline__ __m512 __DEFAULT_FN_ATTRS
354_mm512_castps128_ps512 (__m128 __A)
355{
356 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
357}
358
359static __inline__ __m512i __DEFAULT_FN_ATTRS
360_mm512_castsi128_si512 (__m128i __A)
361{
362 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
363}
364
365static __inline__ __m512i __DEFAULT_FN_ATTRS
366_mm512_castsi256_si512 (__m256i __A)
367{
368 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
369}
370
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000371/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000372static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000373_mm512_and_epi32(__m512i __a, __m512i __b)
374{
375 return __a & __b;
376}
377
Michael Kupersteine45af542015-06-30 13:36:19 +0000378static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000379_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
380{
381 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
382 (__v16si) __b,
383 (__v16si) __src,
384 (__mmask16) __k);
385}
Michael Kupersteine45af542015-06-30 13:36:19 +0000386static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000387_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
388{
389 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
390 (__v16si) __b,
391 (__v16si)
392 _mm512_setzero_si512 (),
393 (__mmask16) __k);
394}
395
Michael Kupersteine45af542015-06-30 13:36:19 +0000396static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000397_mm512_and_epi64(__m512i __a, __m512i __b)
398{
399 return __a & __b;
400}
401
Michael Kupersteine45af542015-06-30 13:36:19 +0000402static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000403_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
404{
405 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
406 (__v8di) __b,
407 (__v8di) __src,
408 (__mmask8) __k);
409}
Michael Kupersteine45af542015-06-30 13:36:19 +0000410static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000411_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
412{
413 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
414 (__v8di) __b,
415 (__v8di)
416 _mm512_setzero_si512 (),
417 (__mmask8) __k);
418}
419
Michael Kupersteine45af542015-06-30 13:36:19 +0000420static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000421_mm512_andnot_epi32 (__m512i __A, __m512i __B)
422{
423 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
424 (__v16si) __B,
425 (__v16si)
426 _mm512_setzero_si512 (),
427 (__mmask16) -1);
428}
429
Michael Kupersteine45af542015-06-30 13:36:19 +0000430static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000431_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
432{
433 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
434 (__v16si) __B,
435 (__v16si) __W,
436 (__mmask16) __U);
437}
438
Michael Kupersteine45af542015-06-30 13:36:19 +0000439static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000440_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
441{
442 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
443 (__v16si) __B,
444 (__v16si)
445 _mm512_setzero_si512 (),
446 (__mmask16) __U);
447}
448
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000450_mm512_andnot_epi64 (__m512i __A, __m512i __B)
451{
452 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
453 (__v8di) __B,
454 (__v8di)
455 _mm512_setzero_si512 (),
456 (__mmask8) -1);
457}
458
Michael Kupersteine45af542015-06-30 13:36:19 +0000459static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000460_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
461{
462 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
463 (__v8di) __B,
464 (__v8di) __W, __U);
465}
466
Michael Kupersteine45af542015-06-30 13:36:19 +0000467static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000468_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
469{
470 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
471 (__v8di) __B,
472 (__v8di)
473 _mm512_setzero_pd (),
474 __U);
475}
Michael Kupersteine45af542015-06-30 13:36:19 +0000476static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000477_mm512_or_epi32(__m512i __a, __m512i __b)
478{
479 return __a | __b;
480}
481
Michael Kupersteine45af542015-06-30 13:36:19 +0000482static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
484{
485 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
486 (__v16si) __b,
487 (__v16si) __src,
488 (__mmask16) __k);
489}
Michael Kupersteine45af542015-06-30 13:36:19 +0000490static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000491_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
492{
493 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
494 (__v16si) __b,
495 (__v16si)
496 _mm512_setzero_si512 (),
497 (__mmask16) __k);
498}
499
Michael Kupersteine45af542015-06-30 13:36:19 +0000500static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000501_mm512_or_epi64(__m512i __a, __m512i __b)
502{
503 return __a | __b;
504}
505
Michael Kupersteine45af542015-06-30 13:36:19 +0000506static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000507_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
508{
509 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
510 (__v8di) __b,
511 (__v8di) __src,
512 (__mmask8) __k);
513}
Michael Kupersteine45af542015-06-30 13:36:19 +0000514static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000515_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
516{
517 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
518 (__v8di) __b,
519 (__v8di)
520 _mm512_setzero_si512 (),
521 (__mmask8) __k);
522}
523
Michael Kupersteine45af542015-06-30 13:36:19 +0000524static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000525_mm512_xor_epi32(__m512i __a, __m512i __b)
526{
527 return __a ^ __b;
528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000531_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
532{
533 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
534 (__v16si) __b,
535 (__v16si) __src,
536 (__mmask16) __k);
537}
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000539_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
540{
541 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
542 (__v16si) __b,
543 (__v16si)
544 _mm512_setzero_si512 (),
545 (__mmask16) __k);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000549_mm512_xor_epi64(__m512i __a, __m512i __b)
550{
551 return __a ^ __b;
552}
553
Michael Kupersteine45af542015-06-30 13:36:19 +0000554static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000555_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
556{
557 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
558 (__v8di) __b,
559 (__v8di) __src,
560 (__mmask8) __k);
561}
Michael Kupersteine45af542015-06-30 13:36:19 +0000562static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000563_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
564{
565 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
566 (__v8di) __b,
567 (__v8di)
568 _mm512_setzero_si512 (),
569 (__mmask8) __k);
570}
571
Michael Kupersteine45af542015-06-30 13:36:19 +0000572static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000573_mm512_and_si512(__m512i __a, __m512i __b)
574{
575 return __a & __b;
576}
577
Michael Kupersteine45af542015-06-30 13:36:19 +0000578static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000579_mm512_or_si512(__m512i __a, __m512i __b)
580{
581 return __a | __b;
582}
583
Michael Kupersteine45af542015-06-30 13:36:19 +0000584static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000585_mm512_xor_si512(__m512i __a, __m512i __b)
586{
587 return __a ^ __b;
588}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000589/* Arithmetic */
590
Michael Kupersteine45af542015-06-30 13:36:19 +0000591static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000592_mm512_add_pd(__m512d __a, __m512d __b)
593{
594 return __a + __b;
595}
596
Michael Kupersteine45af542015-06-30 13:36:19 +0000597static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000598_mm512_add_ps(__m512 __a, __m512 __b)
599{
600 return __a + __b;
601}
602
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000604_mm512_mul_pd(__m512d __a, __m512d __b)
605{
606 return __a * __b;
607}
608
Michael Kupersteine45af542015-06-30 13:36:19 +0000609static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000610_mm512_mul_ps(__m512 __a, __m512 __b)
611{
612 return __a * __b;
613}
614
Michael Kupersteine45af542015-06-30 13:36:19 +0000615static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000616_mm512_sub_pd(__m512d __a, __m512d __b)
617{
618 return __a - __b;
619}
620
Michael Kupersteine45af542015-06-30 13:36:19 +0000621static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000622_mm512_sub_ps(__m512 __a, __m512 __b)
623{
624 return __a - __b;
625}
626
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000628_mm512_add_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_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
635{
636 return (__m512i) __builtin_ia32_paddq512_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_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
644{
645 return (__m512i) __builtin_ia32_paddq512_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_sub_epi64 (__m512i __A, __m512i __B)
654{
655 return (__m512i) ((__v8di) __A - (__v8di) __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_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
660{
661 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
662 (__v8di) __B,
663 (__v8di) __W,
664 (__mmask8) __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_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
669{
670 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
671 (__v8di) __B,
672 (__v8di)
673 _mm512_setzero_si512 (),
674 (__mmask8) __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_add_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_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
685{
686 return (__m512i) __builtin_ia32_paddd512_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_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
694{
695 return (__m512i) __builtin_ia32_paddd512_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__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000703_mm512_sub_epi32 (__m512i __A, __m512i __B)
704{
705 return (__m512i) ((__v16si) __A - (__v16si) __B);
706}
707
Michael Kupersteine45af542015-06-30 13:36:19 +0000708static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000709_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
710{
711 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
712 (__v16si) __B,
713 (__v16si) __W,
714 (__mmask16) __U);
715}
716
Michael Kupersteine45af542015-06-30 13:36:19 +0000717static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000718_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
719{
720 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
721 (__v16si) __B,
722 (__v16si)
723 _mm512_setzero_si512 (),
724 (__mmask16) __U);
725}
726
Michael Kupersteine45af542015-06-30 13:36:19 +0000727static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000728_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000729{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000730 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
731 (__v8df) __B,
732 (__v8df)
733 _mm512_setzero_pd (),
734 (__mmask8) -1,
735 _MM_FROUND_CUR_DIRECTION);
736}
737
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000738static __inline__ __m512d __DEFAULT_FN_ATTRS
739_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
740{
741 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
742 (__v8df) __B,
743 (__v8df) __W,
744 (__mmask8) __U,
745 _MM_FROUND_CUR_DIRECTION);
746}
747
748static __inline__ __m512d __DEFAULT_FN_ATTRS
749_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
750{
751 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
752 (__v8df) __B,
753 (__v8df)
754 _mm512_setzero_pd (),
755 (__mmask8) __U,
756 _MM_FROUND_CUR_DIRECTION);
757}
758
Michael Kupersteine45af542015-06-30 13:36:19 +0000759static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000760_mm512_max_ps(__m512 __A, __m512 __B)
761{
762 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
763 (__v16sf) __B,
764 (__v16sf)
765 _mm512_setzero_ps (),
766 (__mmask16) -1,
767 _MM_FROUND_CUR_DIRECTION);
768}
769
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000770static __inline__ __m512 __DEFAULT_FN_ATTRS
771_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
772{
773 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
774 (__v16sf) __B,
775 (__v16sf) __W,
776 (__mmask16) __U,
777 _MM_FROUND_CUR_DIRECTION);
778}
779
780static __inline__ __m512 __DEFAULT_FN_ATTRS
781_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
782{
783 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
784 (__v16sf) __B,
785 (__v16sf)
786 _mm512_setzero_ps (),
787 (__mmask16) __U,
788 _MM_FROUND_CUR_DIRECTION);
789}
790
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000791static __inline__ __m128 __DEFAULT_FN_ATTRS
792_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000793 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000794 (__v4sf) __B,
795 (__v4sf) __W,
796 (__mmask8) __U,
797 _MM_FROUND_CUR_DIRECTION);
798}
799
800static __inline__ __m128 __DEFAULT_FN_ATTRS
801_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000802 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000803 (__v4sf) __B,
804 (__v4sf) _mm_setzero_ps (),
805 (__mmask8) __U,
806 _MM_FROUND_CUR_DIRECTION);
807}
808
809#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000810 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000811 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
812
813#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000814 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000815 (__v4sf) __W, (__mmask8) __U,__R); })
816
817#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000818 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000819 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
820
821static __inline__ __m128d __DEFAULT_FN_ATTRS
822_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000823 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000824 (__v2df) __B,
825 (__v2df) __W,
826 (__mmask8) __U,
827 _MM_FROUND_CUR_DIRECTION);
828}
829
830static __inline__ __m128d __DEFAULT_FN_ATTRS
831_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000832 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000833 (__v2df) __B,
834 (__v2df) _mm_setzero_pd (),
835 (__mmask8) __U,
836 _MM_FROUND_CUR_DIRECTION);
837}
838
839#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000840 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000841 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
842
843#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000844 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000845 (__v2df) __W, (__mmask8) __U,__R); })
846
847#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000848 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000849 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
850
Adam Nemet0d5bb552014-07-28 17:14:40 +0000851static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000852__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000853_mm512_max_epi32(__m512i __A, __m512i __B)
854{
855 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
856 (__v16si) __B,
857 (__v16si)
858 _mm512_setzero_si512 (),
859 (__mmask16) -1);
860}
861
Michael Kupersteine45af542015-06-30 13:36:19 +0000862static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000863_mm512_max_epu32(__m512i __A, __m512i __B)
864{
865 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
866 (__v16si) __B,
867 (__v16si)
868 _mm512_setzero_si512 (),
869 (__mmask16) -1);
870}
871
Michael Kupersteine45af542015-06-30 13:36:19 +0000872static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000873_mm512_max_epi64(__m512i __A, __m512i __B)
874{
875 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
876 (__v8di) __B,
877 (__v8di)
878 _mm512_setzero_si512 (),
879 (__mmask8) -1);
880}
881
Michael Kupersteine45af542015-06-30 13:36:19 +0000882static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000883_mm512_max_epu64(__m512i __A, __m512i __B)
884{
885 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
886 (__v8di) __B,
887 (__v8di)
888 _mm512_setzero_si512 (),
889 (__mmask8) -1);
890}
891
Michael Kupersteine45af542015-06-30 13:36:19 +0000892static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000893_mm512_min_pd(__m512d __A, __m512d __B)
894{
895 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
896 (__v8df) __B,
897 (__v8df)
898 _mm512_setzero_pd (),
899 (__mmask8) -1,
900 _MM_FROUND_CUR_DIRECTION);
901}
902
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000903static __inline__ __m512d __DEFAULT_FN_ATTRS
904_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
905{
906 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
907 (__v8df) __B,
908 (__v8df) __W,
909 (__mmask8) __U,
910 _MM_FROUND_CUR_DIRECTION);
911}
912
913static __inline__ __m512d __DEFAULT_FN_ATTRS
914_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
915{
916 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
917 (__v8df) __B,
918 (__v8df)
919 _mm512_setzero_pd (),
920 (__mmask8) __U,
921 _MM_FROUND_CUR_DIRECTION);
922}
923
Michael Kupersteine45af542015-06-30 13:36:19 +0000924static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000925_mm512_min_ps(__m512 __A, __m512 __B)
926{
927 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
928 (__v16sf) __B,
929 (__v16sf)
930 _mm512_setzero_ps (),
931 (__mmask16) -1,
932 _MM_FROUND_CUR_DIRECTION);
933}
934
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000935static __inline__ __m512 __DEFAULT_FN_ATTRS
936_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
937{
938 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
939 (__v16sf) __B,
940 (__v16sf) __W,
941 (__mmask16) __U,
942 _MM_FROUND_CUR_DIRECTION);
943}
944
945static __inline__ __m512 __DEFAULT_FN_ATTRS
946_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
947{
948 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
949 (__v16sf) __B,
950 (__v16sf)
951 _mm512_setzero_ps (),
952 (__mmask16) __U,
953 _MM_FROUND_CUR_DIRECTION);
954}
955
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000956static __inline__ __m128 __DEFAULT_FN_ATTRS
957_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000958 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000959 (__v4sf) __B,
960 (__v4sf) __W,
961 (__mmask8) __U,
962 _MM_FROUND_CUR_DIRECTION);
963}
964
965static __inline__ __m128 __DEFAULT_FN_ATTRS
966_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000967 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000968 (__v4sf) __B,
969 (__v4sf) _mm_setzero_ps (),
970 (__mmask8) __U,
971 _MM_FROUND_CUR_DIRECTION);
972}
973
974#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000975 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000976 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
977
978#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000979 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000980 (__v4sf) __W, (__mmask8) __U,__R); })
981
982#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000983 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000984 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
985
986static __inline__ __m128d __DEFAULT_FN_ATTRS
987_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000988 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000989 (__v2df) __B,
990 (__v2df) __W,
991 (__mmask8) __U,
992 _MM_FROUND_CUR_DIRECTION);
993}
994
995static __inline__ __m128d __DEFAULT_FN_ATTRS
996_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000997 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000998 (__v2df) __B,
999 (__v2df) _mm_setzero_pd (),
1000 (__mmask8) __U,
1001 _MM_FROUND_CUR_DIRECTION);
1002}
1003
1004#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001005 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001006 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1007
1008#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001009 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001010 (__v2df) __W, (__mmask8) __U,__R); })
1011
1012#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001013 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001014 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1015
Adam Nemet0d5bb552014-07-28 17:14:40 +00001016static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001017__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001018_mm512_min_epi32(__m512i __A, __m512i __B)
1019{
1020 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1021 (__v16si) __B,
1022 (__v16si)
1023 _mm512_setzero_si512 (),
1024 (__mmask16) -1);
1025}
1026
Michael Kupersteine45af542015-06-30 13:36:19 +00001027static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001028_mm512_min_epu32(__m512i __A, __m512i __B)
1029{
1030 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1031 (__v16si) __B,
1032 (__v16si)
1033 _mm512_setzero_si512 (),
1034 (__mmask16) -1);
1035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001038_mm512_min_epi64(__m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1041 (__v8di) __B,
1042 (__v8di)
1043 _mm512_setzero_si512 (),
1044 (__mmask8) -1);
1045}
1046
Michael Kupersteine45af542015-06-30 13:36:19 +00001047static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001048_mm512_min_epu64(__m512i __A, __m512i __B)
1049{
1050 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1051 (__v8di) __B,
1052 (__v8di)
1053 _mm512_setzero_si512 (),
1054 (__mmask8) -1);
1055}
1056
Michael Kupersteine45af542015-06-30 13:36:19 +00001057static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001058_mm512_mul_epi32(__m512i __X, __m512i __Y)
1059{
1060 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1061 (__v16si) __Y,
1062 (__v8di)
1063 _mm512_setzero_si512 (),
1064 (__mmask8) -1);
1065}
1066
Michael Kupersteine45af542015-06-30 13:36:19 +00001067static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001068_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1069{
1070 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1071 (__v16si) __Y,
1072 (__v8di) __W, __M);
1073}
1074
Michael Kupersteine45af542015-06-30 13:36:19 +00001075static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001076_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1077{
1078 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1079 (__v16si) __Y,
1080 (__v8di)
1081 _mm512_setzero_si512 (),
1082 __M);
1083}
1084
Michael Kupersteine45af542015-06-30 13:36:19 +00001085static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001086_mm512_mul_epu32(__m512i __X, __m512i __Y)
1087{
1088 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1089 (__v16si) __Y,
1090 (__v8di)
1091 _mm512_setzero_si512 (),
1092 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001093}
1094
Michael Kupersteine45af542015-06-30 13:36:19 +00001095static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001096_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1097{
1098 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1099 (__v16si) __Y,
1100 (__v8di) __W, __M);
1101}
1102
Michael Kupersteine45af542015-06-30 13:36:19 +00001103static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001104_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1105{
1106 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1107 (__v16si) __Y,
1108 (__v8di)
1109 _mm512_setzero_si512 (),
1110 __M);
1111}
1112
Michael Kupersteine45af542015-06-30 13:36:19 +00001113static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001114_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1115{
1116 return (__m512i) ((__v16si) __A * (__v16si) __B);
1117}
1118
Michael Kupersteine45af542015-06-30 13:36:19 +00001119static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001120_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1121{
1122 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1123 (__v16si) __B,
1124 (__v16si)
1125 _mm512_setzero_si512 (),
1126 __M);
1127}
1128
Michael Kupersteine45af542015-06-30 13:36:19 +00001129static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001130_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1131{
1132 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1133 (__v16si) __B,
1134 (__v16si) __W, __M);
1135}
1136
Michael Kupersteine45af542015-06-30 13:36:19 +00001137static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001138_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001139{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001140 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001141 (__v8df) _mm512_setzero_pd (),
1142 (__mmask8) -1,
1143 _MM_FROUND_CUR_DIRECTION);
1144}
1145
Michael Kupersteine45af542015-06-30 13:36:19 +00001146static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001147_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001148{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001149 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001150 (__v16sf) _mm512_setzero_ps (),
1151 (__mmask16) -1,
1152 _MM_FROUND_CUR_DIRECTION);
1153}
1154
Michael Kupersteine45af542015-06-30 13:36:19 +00001155static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001156_mm512_rsqrt14_pd(__m512d __A)
1157{
1158 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1159 (__v8df)
1160 _mm512_setzero_pd (),
1161 (__mmask8) -1);}
1162
Michael Kupersteine45af542015-06-30 13:36:19 +00001163static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001164_mm512_rsqrt14_ps(__m512 __A)
1165{
1166 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1167 (__v16sf)
1168 _mm512_setzero_ps (),
1169 (__mmask16) -1);
1170}
1171
Michael Kupersteine45af542015-06-30 13:36:19 +00001172static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001173_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1174{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001175 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001176 (__v4sf) __B,
1177 (__v4sf)
1178 _mm_setzero_ps (),
1179 (__mmask8) -1);
1180}
1181
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001182static __inline__ __m128 __DEFAULT_FN_ATTRS
1183_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1184{
1185 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1186 (__v4sf) __B,
1187 (__v4sf) __W,
1188 (__mmask8) __U);
1189}
1190
1191static __inline__ __m128 __DEFAULT_FN_ATTRS
1192_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1193{
1194 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1195 (__v4sf) __B,
1196 (__v4sf) _mm_setzero_ps (),
1197 (__mmask8) __U);
1198}
1199
Michael Kupersteine45af542015-06-30 13:36:19 +00001200static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001201_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1202{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001203 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001204 (__v2df) __B,
1205 (__v2df)
1206 _mm_setzero_pd (),
1207 (__mmask8) -1);
1208}
1209
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001210static __inline__ __m128d __DEFAULT_FN_ATTRS
1211_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1212{
1213 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1214 (__v2df) __B,
1215 (__v2df) __W,
1216 (__mmask8) __U);
1217}
1218
1219static __inline__ __m128d __DEFAULT_FN_ATTRS
1220_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1221{
1222 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1223 (__v2df) __B,
1224 (__v2df) _mm_setzero_pd (),
1225 (__mmask8) __U);
1226}
1227
Michael Kupersteine45af542015-06-30 13:36:19 +00001228static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001229_mm512_rcp14_pd(__m512d __A)
1230{
1231 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1232 (__v8df)
1233 _mm512_setzero_pd (),
1234 (__mmask8) -1);
1235}
1236
Michael Kupersteine45af542015-06-30 13:36:19 +00001237static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001238_mm512_rcp14_ps(__m512 __A)
1239{
1240 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1241 (__v16sf)
1242 _mm512_setzero_ps (),
1243 (__mmask16) -1);
1244}
Michael Kupersteine45af542015-06-30 13:36:19 +00001245static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001246_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001247{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001248 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001249 (__v4sf) __B,
1250 (__v4sf)
1251 _mm_setzero_ps (),
1252 (__mmask8) -1);
1253}
1254
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001255static __inline__ __m128 __DEFAULT_FN_ATTRS
1256_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1257{
1258 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1259 (__v4sf) __B,
1260 (__v4sf) __W,
1261 (__mmask8) __U);
1262}
1263
1264static __inline__ __m128 __DEFAULT_FN_ATTRS
1265_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1266{
1267 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1268 (__v4sf) __B,
1269 (__v4sf) _mm_setzero_ps (),
1270 (__mmask8) __U);
1271}
1272
Michael Kupersteine45af542015-06-30 13:36:19 +00001273static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001274_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001275{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001276 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001277 (__v2df) __B,
1278 (__v2df)
1279 _mm_setzero_pd (),
1280 (__mmask8) -1);
1281}
1282
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001283static __inline__ __m128d __DEFAULT_FN_ATTRS
1284_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1285{
1286 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1287 (__v2df) __B,
1288 (__v2df) __W,
1289 (__mmask8) __U);
1290}
1291
1292static __inline__ __m128d __DEFAULT_FN_ATTRS
1293_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1294{
1295 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1296 (__v2df) __B,
1297 (__v2df) _mm_setzero_pd (),
1298 (__mmask8) __U);
1299}
1300
Michael Kupersteine45af542015-06-30 13:36:19 +00001301static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001302_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001303{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001304 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1305 _MM_FROUND_FLOOR,
1306 (__v16sf) __A, -1,
1307 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001308}
1309
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001310static __inline__ __m512 __DEFAULT_FN_ATTRS
1311_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1312{
1313 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1314 _MM_FROUND_FLOOR,
1315 (__v16sf) __W, __U,
1316 _MM_FROUND_CUR_DIRECTION);
1317}
1318
1319
Michael Kupersteine45af542015-06-30 13:36:19 +00001320static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001321_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001322{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001323 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1324 _MM_FROUND_FLOOR,
1325 (__v8df) __A, -1,
1326 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001327}
1328
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001329static __inline__ __m512d __DEFAULT_FN_ATTRS
1330_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1331{
1332 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1333 _MM_FROUND_FLOOR,
1334 (__v8df) __W, __U,
1335 _MM_FROUND_CUR_DIRECTION);
1336}
1337
1338
1339static __inline__ __m512 __DEFAULT_FN_ATTRS
1340_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1341{
1342 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1343 _MM_FROUND_CEIL,
1344 (__v16sf) __W, __U,
1345 _MM_FROUND_CUR_DIRECTION);
1346}
1347
Michael Kupersteine45af542015-06-30 13:36:19 +00001348static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001349_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001350{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001351 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1352 _MM_FROUND_CEIL,
1353 (__v16sf) __A, -1,
1354 _MM_FROUND_CUR_DIRECTION);
1355}
1356
Michael Kupersteine45af542015-06-30 13:36:19 +00001357static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001358_mm512_ceil_pd(__m512d __A)
1359{
1360 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1361 _MM_FROUND_CEIL,
1362 (__v8df) __A, -1,
1363 _MM_FROUND_CUR_DIRECTION);
1364}
1365
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001366static __inline__ __m512d __DEFAULT_FN_ATTRS
1367_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1368{
1369 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1370 _MM_FROUND_CEIL,
1371 (__v8df) __W, __U,
1372 _MM_FROUND_CUR_DIRECTION);
1373}
1374
Michael Kupersteine45af542015-06-30 13:36:19 +00001375static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001376_mm512_abs_epi64(__m512i __A)
1377{
1378 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1379 (__v8di)
1380 _mm512_setzero_si512 (),
1381 (__mmask8) -1);
1382}
1383
Michael Kupersteine45af542015-06-30 13:36:19 +00001384static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001385_mm512_abs_epi32(__m512i __A)
1386{
1387 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1388 (__v16si)
1389 _mm512_setzero_si512 (),
1390 (__mmask16) -1);
1391}
1392
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001393static __inline__ __m128 __DEFAULT_FN_ATTRS
1394_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001395 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001396 (__v4sf) __B,
1397 (__v4sf) __W,
1398 (__mmask8) __U,
1399 _MM_FROUND_CUR_DIRECTION);
1400}
1401
1402static __inline__ __m128 __DEFAULT_FN_ATTRS
1403_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001404 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001405 (__v4sf) __B,
1406 (__v4sf) _mm_setzero_ps (),
1407 (__mmask8) __U,
1408 _MM_FROUND_CUR_DIRECTION);
1409}
1410
1411#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001412 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001413 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1414
1415#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001416 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001417 (__v4sf) __W, (__mmask8) __U,__R); })
1418
1419#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001420 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001421 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1422
1423static __inline__ __m128d __DEFAULT_FN_ATTRS
1424_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001425 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001426 (__v2df) __B,
1427 (__v2df) __W,
1428 (__mmask8) __U,
1429 _MM_FROUND_CUR_DIRECTION);
1430}
1431
1432static __inline__ __m128d __DEFAULT_FN_ATTRS
1433_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001434 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001435 (__v2df) __B,
1436 (__v2df) _mm_setzero_pd (),
1437 (__mmask8) __U,
1438 _MM_FROUND_CUR_DIRECTION);
1439}
1440#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001441 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001442 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1443
1444#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001445 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001446 (__v2df) __W, (__mmask8) __U,__R); })
1447
1448#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001449 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001450 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1451
Asaf Badouhffeb6242015-07-21 15:27:28 +00001452static __inline__ __m512d __DEFAULT_FN_ATTRS
1453_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1454 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1455 (__v8df) __B,
1456 (__v8df) __W,
1457 (__mmask8) __U,
1458 _MM_FROUND_CUR_DIRECTION);
1459}
1460
1461static __inline__ __m512d __DEFAULT_FN_ATTRS
1462_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1463 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1464 (__v8df) __B,
1465 (__v8df) _mm512_setzero_pd (),
1466 (__mmask8) __U,
1467 _MM_FROUND_CUR_DIRECTION);
1468}
1469
1470static __inline__ __m512 __DEFAULT_FN_ATTRS
1471_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1472 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1473 (__v16sf) __B,
1474 (__v16sf) __W,
1475 (__mmask16) __U,
1476 _MM_FROUND_CUR_DIRECTION);
1477}
1478
1479static __inline__ __m512 __DEFAULT_FN_ATTRS
1480_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1481 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1482 (__v16sf) __B,
1483 (__v16sf) _mm512_setzero_ps (),
1484 (__mmask16) __U,
1485 _MM_FROUND_CUR_DIRECTION);
1486}
1487
1488#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1489 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1490 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1491
1492#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1493 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1494 (__v8df) __W, (__mmask8) __U, __R); })
1495
1496#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1497 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1498 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1499
1500#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1501 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1502 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1503
1504#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1505 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1506 (__v16sf) __W, (__mmask16)__U, __R); })
1507
1508#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1509 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1510 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1511
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001512static __inline__ __m128 __DEFAULT_FN_ATTRS
1513_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001514 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001515 (__v4sf) __B,
1516 (__v4sf) __W,
1517 (__mmask8) __U,
1518 _MM_FROUND_CUR_DIRECTION);
1519}
1520
1521static __inline__ __m128 __DEFAULT_FN_ATTRS
1522_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001523 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001524 (__v4sf) __B,
1525 (__v4sf) _mm_setzero_ps (),
1526 (__mmask8) __U,
1527 _MM_FROUND_CUR_DIRECTION);
1528}
1529#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001530 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001531 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1532
1533#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001534 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001535 (__v4sf) __W, (__mmask8) __U,__R); })
1536
1537#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001538 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001539 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1540
1541static __inline__ __m128d __DEFAULT_FN_ATTRS
1542_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001543 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001544 (__v2df) __B,
1545 (__v2df) __W,
1546 (__mmask8) __U,
1547 _MM_FROUND_CUR_DIRECTION);
1548}
1549
1550static __inline__ __m128d __DEFAULT_FN_ATTRS
1551_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001552 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001553 (__v2df) __B,
1554 (__v2df) _mm_setzero_pd (),
1555 (__mmask8) __U,
1556 _MM_FROUND_CUR_DIRECTION);
1557}
1558
1559#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001560 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001561 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1562
1563#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001564 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001565 (__v2df) __W, (__mmask8) __U,__R); })
1566
1567#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001568 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001569 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1570
Asaf Badouhffeb6242015-07-21 15:27:28 +00001571static __inline__ __m512d __DEFAULT_FN_ATTRS
1572_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1573 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1574 (__v8df) __B,
1575 (__v8df) __W,
1576 (__mmask8) __U,
1577 _MM_FROUND_CUR_DIRECTION);
1578}
1579
1580static __inline__ __m512d __DEFAULT_FN_ATTRS
1581_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1582 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1583 (__v8df) __B,
1584 (__v8df)
1585 _mm512_setzero_pd (),
1586 (__mmask8) __U,
1587 _MM_FROUND_CUR_DIRECTION);
1588}
1589
1590static __inline__ __m512 __DEFAULT_FN_ATTRS
1591_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1592 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1593 (__v16sf) __B,
1594 (__v16sf) __W,
1595 (__mmask16) __U,
1596 _MM_FROUND_CUR_DIRECTION);
1597}
1598
1599static __inline__ __m512 __DEFAULT_FN_ATTRS
1600_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1601 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1602 (__v16sf) __B,
1603 (__v16sf)
1604 _mm512_setzero_ps (),
1605 (__mmask16) __U,
1606 _MM_FROUND_CUR_DIRECTION);
1607}
1608
1609#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1610 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1611 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1612
1613#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1614 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1615 (__v8df) __W, (__mmask8) __U, __R); })
1616
1617#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1618 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1619 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1620
1621#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1622 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1623 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1624
1625#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1626 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1627 (__v16sf) __W, (__mmask16) __U, __R); });
1628
1629#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1630 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1631 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1632
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001633static __inline__ __m128 __DEFAULT_FN_ATTRS
1634_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001635 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001636 (__v4sf) __B,
1637 (__v4sf) __W,
1638 (__mmask8) __U,
1639 _MM_FROUND_CUR_DIRECTION);
1640}
1641
1642static __inline__ __m128 __DEFAULT_FN_ATTRS
1643_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001644 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001645 (__v4sf) __B,
1646 (__v4sf) _mm_setzero_ps (),
1647 (__mmask8) __U,
1648 _MM_FROUND_CUR_DIRECTION);
1649}
1650#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001651 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001652 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1653
1654#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001655 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001656 (__v4sf) __W, (__mmask8) __U,__R); })
1657
1658#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001659 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001660 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1661
1662static __inline__ __m128d __DEFAULT_FN_ATTRS
1663_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001664 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001665 (__v2df) __B,
1666 (__v2df) __W,
1667 (__mmask8) __U,
1668 _MM_FROUND_CUR_DIRECTION);
1669}
1670
1671static __inline__ __m128d __DEFAULT_FN_ATTRS
1672_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001673 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001674 (__v2df) __B,
1675 (__v2df) _mm_setzero_pd (),
1676 (__mmask8) __U,
1677 _MM_FROUND_CUR_DIRECTION);
1678}
1679
1680#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001681 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001682 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1683
1684#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001685 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001686 (__v2df) __W, (__mmask8) __U,__R); })
1687
1688#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001689 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001690 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1691
Asaf Badouhffeb6242015-07-21 15:27:28 +00001692static __inline__ __m512d __DEFAULT_FN_ATTRS
1693_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1694 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1695 (__v8df) __B,
1696 (__v8df) __W,
1697 (__mmask8) __U,
1698 _MM_FROUND_CUR_DIRECTION);
1699}
1700
1701static __inline__ __m512d __DEFAULT_FN_ATTRS
1702_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1703 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1704 (__v8df) __B,
1705 (__v8df)
1706 _mm512_setzero_pd (),
1707 (__mmask8) __U,
1708 _MM_FROUND_CUR_DIRECTION);
1709}
1710
1711static __inline__ __m512 __DEFAULT_FN_ATTRS
1712_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1713 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1714 (__v16sf) __B,
1715 (__v16sf) __W,
1716 (__mmask16) __U,
1717 _MM_FROUND_CUR_DIRECTION);
1718}
1719
1720static __inline__ __m512 __DEFAULT_FN_ATTRS
1721_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1722 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1723 (__v16sf) __B,
1724 (__v16sf)
1725 _mm512_setzero_ps (),
1726 (__mmask16) __U,
1727 _MM_FROUND_CUR_DIRECTION);
1728}
1729
1730#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1731 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1732 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1733
1734#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1735 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1736 (__v8df) __W, (__mmask8) __U, __R); })
1737
1738#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1739 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1740 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1741
1742#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1743 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1744 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1745
1746#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1747 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1748 (__v16sf) __W, (__mmask16) __U, __R); });
1749
1750#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1751 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1752 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1753
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001754static __inline__ __m128 __DEFAULT_FN_ATTRS
1755_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001756 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001757 (__v4sf) __B,
1758 (__v4sf) __W,
1759 (__mmask8) __U,
1760 _MM_FROUND_CUR_DIRECTION);
1761}
1762
1763static __inline__ __m128 __DEFAULT_FN_ATTRS
1764_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001765 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001766 (__v4sf) __B,
1767 (__v4sf) _mm_setzero_ps (),
1768 (__mmask8) __U,
1769 _MM_FROUND_CUR_DIRECTION);
1770}
1771
1772#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001773 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001774 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1775
1776#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001777 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001778 (__v4sf) __W, (__mmask8) __U,__R); })
1779
1780#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001781 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001782 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1783
1784static __inline__ __m128d __DEFAULT_FN_ATTRS
1785_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001786 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001787 (__v2df) __B,
1788 (__v2df) __W,
1789 (__mmask8) __U,
1790 _MM_FROUND_CUR_DIRECTION);
1791}
1792
1793static __inline__ __m128d __DEFAULT_FN_ATTRS
1794_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001795 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001796 (__v2df) __B,
1797 (__v2df) _mm_setzero_pd (),
1798 (__mmask8) __U,
1799 _MM_FROUND_CUR_DIRECTION);
1800}
1801
1802#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001803 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001804 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1805
1806#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001807 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001808 (__v2df) __W, (__mmask8) __U,__R); })
1809
1810#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001811 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001812 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1813
Asaf Badouhffeb6242015-07-21 15:27:28 +00001814static __inline__ __m512d __DEFAULT_FN_ATTRS
1815_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1816 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1817 (__v8df) __B,
1818 (__v8df) __W,
1819 (__mmask8) __U,
1820 _MM_FROUND_CUR_DIRECTION);
1821}
1822
1823static __inline__ __m512d __DEFAULT_FN_ATTRS
1824_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1825 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1826 (__v8df) __B,
1827 (__v8df)
1828 _mm512_setzero_pd (),
1829 (__mmask8) __U,
1830 _MM_FROUND_CUR_DIRECTION);
1831}
1832
1833static __inline__ __m512 __DEFAULT_FN_ATTRS
1834_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1835 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1836 (__v16sf) __B,
1837 (__v16sf) __W,
1838 (__mmask16) __U,
1839 _MM_FROUND_CUR_DIRECTION);
1840}
1841
1842static __inline__ __m512 __DEFAULT_FN_ATTRS
1843_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1844 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1845 (__v16sf) __B,
1846 (__v16sf)
1847 _mm512_setzero_ps (),
1848 (__mmask16) __U,
1849 _MM_FROUND_CUR_DIRECTION);
1850}
1851
1852#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1853 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1854 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1855
1856#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1857 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1858 (__v8df) __W, (__mmask8) __U, __R); })
1859
1860#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1861 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1862 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1863
1864#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1865 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1866 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1867
1868#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1869 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1870 (__v16sf) __W, (__mmask16) __U, __R); });
1871
1872#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
1873 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1874 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1875
Craig Topper72c7d512015-02-01 07:35:35 +00001876#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1877 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1878 -1, _MM_FROUND_CUR_DIRECTION); })
1879
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001880#define _mm512_mask_roundscale_ps( __A, __B, __C, __imm) __extension__ ({\
1881 (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,\
1882 (__v16sf) __A,(__mmask16) __B,\
1883 _MM_FROUND_CUR_DIRECTION);\
1884})
1885
1886#define _mm512_maskz_roundscale_ps( __A, __B, __imm) __extension__ ({\
1887 (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B, __imm,\
1888 (__v16sf) _mm512_setzero_ps (),\
1889 (__mmask16) __A, _MM_FROUND_CUR_DIRECTION);\
1890})
1891
Craig Topper72c7d512015-02-01 07:35:35 +00001892#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1893 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1894 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001895
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001896#define _mm512_mask_roundscale_pd(__A, __B, __C, __imm) __extension__ ({\
1897 (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,\
1898 (__v8df) __A, (__mmask8) __B,\
1899 _MM_FROUND_CUR_DIRECTION);\
1900})
1901
1902#define _mm512_maskz_roundscale_pd(__A, __B, __imm) __extension__ ({\
1903 (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B, __imm,\
1904 (__v8df) _mm512_setzero_pd (),\
1905 (__mmask8) __A, _MM_FROUND_CUR_DIRECTION);\
1906})
1907
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001908#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1909 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1910 (__v8df) (B), (__v8df) (C), \
1911 (__mmask8) -1, (R)); })
1912
1913
1914#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1915 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1916 (__v8df) (B), (__v8df) (C), \
1917 (__mmask8) (U), (R)); })
1918
1919
1920#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1921 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1922 (__v8df) (B), (__v8df) (C), \
1923 (__mmask8) (U), (R)); })
1924
1925
1926#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1927 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1928 (__v8df) (B), (__v8df) (C), \
1929 (__mmask8) (U), (R)); })
1930
1931
1932#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1933 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1934 (__v8df) (B), -(__v8df) (C), \
1935 (__mmask8) -1, (R)); })
1936
1937
1938#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1939 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1940 (__v8df) (B), -(__v8df) (C), \
1941 (__mmask8) (U), (R)); })
1942
1943
1944#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1945 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1946 (__v8df) (B), -(__v8df) (C), \
1947 (__mmask8) (U), (R)); })
1948
1949
1950#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1951 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1952 (__v8df) (B), (__v8df) (C), \
1953 (__mmask8) -1, (R)); })
1954
1955
1956#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1957 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1958 (__v8df) (B), (__v8df) (C), \
1959 (__mmask8) (U), (R)); })
1960
1961
1962#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1963 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1964 (__v8df) (B), (__v8df) (C), \
1965 (__mmask8) (U), (R)); })
1966
1967
1968#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1969 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1970 (__v8df) (B), -(__v8df) (C), \
1971 (__mmask8) -1, (R)); })
1972
1973
1974#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1975 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1976 (__v8df) (B), -(__v8df) (C), \
1977 (__mmask8) (U), (R)); })
1978
1979
Michael Kupersteine45af542015-06-30 13:36:19 +00001980static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001981_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1982{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001983 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1984 (__v8df) __B,
1985 (__v8df) __C,
1986 (__mmask8) -1,
1987 _MM_FROUND_CUR_DIRECTION);
1988}
1989
Michael Kupersteine45af542015-06-30 13:36:19 +00001990static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001991_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1992{
1993 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1994 (__v8df) __B,
1995 (__v8df) __C,
1996 (__mmask8) __U,
1997 _MM_FROUND_CUR_DIRECTION);
1998}
1999
Michael Kupersteine45af542015-06-30 13:36:19 +00002000static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002001_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2002{
2003 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2004 (__v8df) __B,
2005 (__v8df) __C,
2006 (__mmask8) __U,
2007 _MM_FROUND_CUR_DIRECTION);
2008}
2009
Michael Kupersteine45af542015-06-30 13:36:19 +00002010static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002011_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2012{
2013 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2014 (__v8df) __B,
2015 (__v8df) __C,
2016 (__mmask8) __U,
2017 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002018}
2019
Michael Kupersteine45af542015-06-30 13:36:19 +00002020static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002021_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2022{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002023 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2024 (__v8df) __B,
2025 -(__v8df) __C,
2026 (__mmask8) -1,
2027 _MM_FROUND_CUR_DIRECTION);
2028}
2029
Michael Kupersteine45af542015-06-30 13:36:19 +00002030static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002031_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2032{
2033 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2034 (__v8df) __B,
2035 -(__v8df) __C,
2036 (__mmask8) __U,
2037 _MM_FROUND_CUR_DIRECTION);
2038}
2039
Michael Kupersteine45af542015-06-30 13:36:19 +00002040static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002041_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2042{
2043 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2044 (__v8df) __B,
2045 -(__v8df) __C,
2046 (__mmask8) __U,
2047 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002048}
2049
Michael Kupersteine45af542015-06-30 13:36:19 +00002050static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002051_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2052{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002053 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2054 (__v8df) __B,
2055 (__v8df) __C,
2056 (__mmask8) -1,
2057 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002058}
2059
Michael Kupersteine45af542015-06-30 13:36:19 +00002060static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002061_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2062{
2063 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2064 (__v8df) __B,
2065 (__v8df) __C,
2066 (__mmask8) __U,
2067 _MM_FROUND_CUR_DIRECTION);
2068}
2069
Michael Kupersteine45af542015-06-30 13:36:19 +00002070static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002071_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2072{
2073 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2074 (__v8df) __B,
2075 (__v8df) __C,
2076 (__mmask8) __U,
2077 _MM_FROUND_CUR_DIRECTION);
2078}
2079
Michael Kupersteine45af542015-06-30 13:36:19 +00002080static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002081_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2082{
2083 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2084 (__v8df) __B,
2085 -(__v8df) __C,
2086 (__mmask8) -1,
2087 _MM_FROUND_CUR_DIRECTION);
2088}
2089
Michael Kupersteine45af542015-06-30 13:36:19 +00002090static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002091_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2092{
2093 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2094 (__v8df) __B,
2095 -(__v8df) __C,
2096 (__mmask8) __U,
2097 _MM_FROUND_CUR_DIRECTION);
2098}
2099
2100#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
2101 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2102 (__v16sf) (B), (__v16sf) (C), \
2103 (__mmask16) -1, (R)); })
2104
2105
2106#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2107 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2108 (__v16sf) (B), (__v16sf) (C), \
2109 (__mmask16) (U), (R)); })
2110
2111
2112#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
2113 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
2114 (__v16sf) (B), (__v16sf) (C), \
2115 (__mmask16) (U), (R)); })
2116
2117
2118#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
2119 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
2120 (__v16sf) (B), (__v16sf) (C), \
2121 (__mmask16) (U), (R)); })
2122
2123
2124#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
2125 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2126 (__v16sf) (B), -(__v16sf) (C), \
2127 (__mmask16) -1, (R)); })
2128
2129
2130#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2131 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2132 (__v16sf) (B), -(__v16sf) (C), \
2133 (__mmask16) (U), (R)); })
2134
2135
2136#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
2137 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
2138 (__v16sf) (B), -(__v16sf) (C), \
2139 (__mmask16) (U), (R)); })
2140
2141
2142#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
2143 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
2144 (__v16sf) (B), (__v16sf) (C), \
2145 (__mmask16) -1, (R)); })
2146
2147
2148#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
2149 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
2150 (__v16sf) (B), (__v16sf) (C), \
2151 (__mmask16) (U), (R)); })
2152
2153
2154#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
2155 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
2156 (__v16sf) (B), (__v16sf) (C), \
2157 (__mmask16) (U), (R)); })
2158
2159
2160#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
2161 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
2162 (__v16sf) (B), -(__v16sf) (C), \
2163 (__mmask16) -1, (R)); })
2164
2165
2166#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
2167 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
2168 (__v16sf) (B), -(__v16sf) (C), \
2169 (__mmask16) (U), (R)); })
2170
2171
Michael Kupersteine45af542015-06-30 13:36:19 +00002172static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002173_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2174{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002175 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2176 (__v16sf) __B,
2177 (__v16sf) __C,
2178 (__mmask16) -1,
2179 _MM_FROUND_CUR_DIRECTION);
2180}
2181
Michael Kupersteine45af542015-06-30 13:36:19 +00002182static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002183_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2184{
2185 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2186 (__v16sf) __B,
2187 (__v16sf) __C,
2188 (__mmask16) __U,
2189 _MM_FROUND_CUR_DIRECTION);
2190}
2191
Michael Kupersteine45af542015-06-30 13:36:19 +00002192static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002193_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2194{
2195 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2196 (__v16sf) __B,
2197 (__v16sf) __C,
2198 (__mmask16) __U,
2199 _MM_FROUND_CUR_DIRECTION);
2200}
2201
Michael Kupersteine45af542015-06-30 13:36:19 +00002202static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002203_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2204{
2205 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2206 (__v16sf) __B,
2207 (__v16sf) __C,
2208 (__mmask16) __U,
2209 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002210}
2211
Michael Kupersteine45af542015-06-30 13:36:19 +00002212static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002213_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2214{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002215 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2216 (__v16sf) __B,
2217 -(__v16sf) __C,
2218 (__mmask16) -1,
2219 _MM_FROUND_CUR_DIRECTION);
2220}
2221
Michael Kupersteine45af542015-06-30 13:36:19 +00002222static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002223_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2224{
2225 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2226 (__v16sf) __B,
2227 -(__v16sf) __C,
2228 (__mmask16) __U,
2229 _MM_FROUND_CUR_DIRECTION);
2230}
2231
Michael Kupersteine45af542015-06-30 13:36:19 +00002232static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002233_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2234{
2235 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2236 (__v16sf) __B,
2237 -(__v16sf) __C,
2238 (__mmask16) __U,
2239 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002240}
2241
Michael Kupersteine45af542015-06-30 13:36:19 +00002242static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002243_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2244{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002245 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2246 (__v16sf) __B,
2247 (__v16sf) __C,
2248 (__mmask16) -1,
2249 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002250}
2251
Michael Kupersteine45af542015-06-30 13:36:19 +00002252static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002253_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2254{
2255 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2256 (__v16sf) __B,
2257 (__v16sf) __C,
2258 (__mmask16) __U,
2259 _MM_FROUND_CUR_DIRECTION);
2260}
2261
Michael Kupersteine45af542015-06-30 13:36:19 +00002262static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002263_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2264{
2265 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2266 (__v16sf) __B,
2267 (__v16sf) __C,
2268 (__mmask16) __U,
2269 _MM_FROUND_CUR_DIRECTION);
2270}
2271
Michael Kupersteine45af542015-06-30 13:36:19 +00002272static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002273_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2274{
2275 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2276 (__v16sf) __B,
2277 -(__v16sf) __C,
2278 (__mmask16) -1,
2279 _MM_FROUND_CUR_DIRECTION);
2280}
2281
Michael Kupersteine45af542015-06-30 13:36:19 +00002282static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002283_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2284{
2285 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2286 (__v16sf) __B,
2287 -(__v16sf) __C,
2288 (__mmask16) __U,
2289 _MM_FROUND_CUR_DIRECTION);
2290}
2291
2292#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
2293 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2294 (__v8df) (B), (__v8df) (C), \
2295 (__mmask8) -1, (R)); })
2296
2297
2298#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
2299 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2300 (__v8df) (B), (__v8df) (C), \
2301 (__mmask8) (U), (R)); })
2302
2303
2304#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
2305 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
2306 (__v8df) (B), (__v8df) (C), \
2307 (__mmask8) (U), (R)); })
2308
2309
2310#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
2311 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2312 (__v8df) (B), (__v8df) (C), \
2313 (__mmask8) (U), (R)); })
2314
2315
2316#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
2317 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2318 (__v8df) (B), -(__v8df) (C), \
2319 (__mmask8) -1, (R)); })
2320
2321
2322#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
2323 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2324 (__v8df) (B), -(__v8df) (C), \
2325 (__mmask8) (U), (R)); })
2326
2327
2328#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
2329 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2330 (__v8df) (B), -(__v8df) (C), \
2331 (__mmask8) (U), (R)); })
2332
2333
Michael Kupersteine45af542015-06-30 13:36:19 +00002334static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002335_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2336{
2337 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2338 (__v8df) __B,
2339 (__v8df) __C,
2340 (__mmask8) -1,
2341 _MM_FROUND_CUR_DIRECTION);
2342}
2343
Michael Kupersteine45af542015-06-30 13:36:19 +00002344static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002345_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2346{
2347 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2348 (__v8df) __B,
2349 (__v8df) __C,
2350 (__mmask8) __U,
2351 _MM_FROUND_CUR_DIRECTION);
2352}
2353
Michael Kupersteine45af542015-06-30 13:36:19 +00002354static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002355_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2356{
2357 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2358 (__v8df) __B,
2359 (__v8df) __C,
2360 (__mmask8) __U,
2361 _MM_FROUND_CUR_DIRECTION);
2362}
2363
Michael Kupersteine45af542015-06-30 13:36:19 +00002364static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002365_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2366{
2367 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2368 (__v8df) __B,
2369 (__v8df) __C,
2370 (__mmask8) __U,
2371 _MM_FROUND_CUR_DIRECTION);
2372}
2373
Michael Kupersteine45af542015-06-30 13:36:19 +00002374static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002375_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2376{
2377 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2378 (__v8df) __B,
2379 -(__v8df) __C,
2380 (__mmask8) -1,
2381 _MM_FROUND_CUR_DIRECTION);
2382}
2383
Michael Kupersteine45af542015-06-30 13:36:19 +00002384static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002385_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2386{
2387 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2388 (__v8df) __B,
2389 -(__v8df) __C,
2390 (__mmask8) __U,
2391 _MM_FROUND_CUR_DIRECTION);
2392}
2393
Michael Kupersteine45af542015-06-30 13:36:19 +00002394static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002395_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2396{
2397 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2398 (__v8df) __B,
2399 -(__v8df) __C,
2400 (__mmask8) __U,
2401 _MM_FROUND_CUR_DIRECTION);
2402}
2403
2404#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2405 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2406 (__v16sf) (B), (__v16sf) (C), \
2407 (__mmask16) -1, (R)); })
2408
2409
2410#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2411 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2412 (__v16sf) (B), (__v16sf) (C), \
2413 (__mmask16) (U), (R)); })
2414
2415
2416#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2417 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2418 (__v16sf) (B), (__v16sf) (C), \
2419 (__mmask16) (U), (R)); })
2420
2421
2422#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2423 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2424 (__v16sf) (B), (__v16sf) (C), \
2425 (__mmask16) (U), (R)); })
2426
2427
2428#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2429 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2430 (__v16sf) (B), -(__v16sf) (C), \
2431 (__mmask16) -1, (R)); })
2432
2433
2434#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2435 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2436 (__v16sf) (B), -(__v16sf) (C), \
2437 (__mmask16) (U), (R)); })
2438
2439
2440#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2441 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2442 (__v16sf) (B), -(__v16sf) (C), \
2443 (__mmask16) (U), (R)); })
2444
2445
Michael Kupersteine45af542015-06-30 13:36:19 +00002446static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002447_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2448{
2449 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2450 (__v16sf) __B,
2451 (__v16sf) __C,
2452 (__mmask16) -1,
2453 _MM_FROUND_CUR_DIRECTION);
2454}
2455
Michael Kupersteine45af542015-06-30 13:36:19 +00002456static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002457_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2458{
2459 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2460 (__v16sf) __B,
2461 (__v16sf) __C,
2462 (__mmask16) __U,
2463 _MM_FROUND_CUR_DIRECTION);
2464}
2465
Michael Kupersteine45af542015-06-30 13:36:19 +00002466static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002467_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2468{
2469 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2470 (__v16sf) __B,
2471 (__v16sf) __C,
2472 (__mmask16) __U,
2473 _MM_FROUND_CUR_DIRECTION);
2474}
2475
Michael Kupersteine45af542015-06-30 13:36:19 +00002476static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002477_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2478{
2479 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2480 (__v16sf) __B,
2481 (__v16sf) __C,
2482 (__mmask16) __U,
2483 _MM_FROUND_CUR_DIRECTION);
2484}
2485
Michael Kupersteine45af542015-06-30 13:36:19 +00002486static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002487_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2488{
2489 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2490 (__v16sf) __B,
2491 -(__v16sf) __C,
2492 (__mmask16) -1,
2493 _MM_FROUND_CUR_DIRECTION);
2494}
2495
Michael Kupersteine45af542015-06-30 13:36:19 +00002496static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002497_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2498{
2499 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2500 (__v16sf) __B,
2501 -(__v16sf) __C,
2502 (__mmask16) __U,
2503 _MM_FROUND_CUR_DIRECTION);
2504}
2505
Michael Kupersteine45af542015-06-30 13:36:19 +00002506static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002507_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2508{
2509 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2510 (__v16sf) __B,
2511 -(__v16sf) __C,
2512 (__mmask16) __U,
2513 _MM_FROUND_CUR_DIRECTION);
2514}
2515
2516#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2517 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2518 (__v8df) (B), (__v8df) (C), \
2519 (__mmask8) (U), (R)); })
2520
2521
Michael Kupersteine45af542015-06-30 13:36:19 +00002522static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002523_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2524{
2525 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2526 (__v8df) __B,
2527 (__v8df) __C,
2528 (__mmask8) __U,
2529 _MM_FROUND_CUR_DIRECTION);
2530}
2531
2532#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2533 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2534 (__v16sf) (B), (__v16sf) (C), \
2535 (__mmask16) (U), (R)); })
2536
2537
Michael Kupersteine45af542015-06-30 13:36:19 +00002538static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002539_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2540{
2541 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2542 (__v16sf) __B,
2543 (__v16sf) __C,
2544 (__mmask16) __U,
2545 _MM_FROUND_CUR_DIRECTION);
2546}
2547
2548#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2549 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2550 (__v8df) (B), (__v8df) (C), \
2551 (__mmask8) (U), (R)); })
2552
2553
Michael Kupersteine45af542015-06-30 13:36:19 +00002554static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002555_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2556{
2557 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2558 (__v8df) __B,
2559 (__v8df) __C,
2560 (__mmask8) __U,
2561 _MM_FROUND_CUR_DIRECTION);
2562}
2563
2564#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2565 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2566 (__v16sf) (B), (__v16sf) (C), \
2567 (__mmask16) (U), (R)); })
2568
2569
Michael Kupersteine45af542015-06-30 13:36:19 +00002570static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002571_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2572{
2573 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2574 (__v16sf) __B,
2575 (__v16sf) __C,
2576 (__mmask16) __U,
2577 _MM_FROUND_CUR_DIRECTION);
2578}
2579
2580#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2581 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2582 (__v8df) (B), (__v8df) (C), \
2583 (__mmask8) (U), (R)); })
2584
2585
Michael Kupersteine45af542015-06-30 13:36:19 +00002586static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002587_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2588{
2589 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2590 (__v8df) __B,
2591 (__v8df) __C,
2592 (__mmask8) __U,
2593 _MM_FROUND_CUR_DIRECTION);
2594}
2595
2596#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2597 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2598 (__v16sf) (B), (__v16sf) (C), \
2599 (__mmask16) (U), (R)); })
2600
2601
Michael Kupersteine45af542015-06-30 13:36:19 +00002602static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002603_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2604{
2605 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2606 (__v16sf) __B,
2607 (__v16sf) __C,
2608 (__mmask16) __U,
2609 _MM_FROUND_CUR_DIRECTION);
2610}
2611
2612#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2613 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2614 (__v8df) (B), (__v8df) (C), \
2615 (__mmask8) (U), (R)); })
2616
2617
2618#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2619 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2620 (__v8df) (B), (__v8df) (C), \
2621 (__mmask8) (U), (R)); })
2622
2623
Michael Kupersteine45af542015-06-30 13:36:19 +00002624static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002625_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2626{
2627 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2628 (__v8df) __B,
2629 (__v8df) __C,
2630 (__mmask8) __U,
2631 _MM_FROUND_CUR_DIRECTION);
2632}
2633
Michael Kupersteine45af542015-06-30 13:36:19 +00002634static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002635_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2636{
2637 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2638 (__v8df) __B,
2639 (__v8df) __C,
2640 (__mmask8) __U,
2641 _MM_FROUND_CUR_DIRECTION);
2642}
2643
2644#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2645 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2646 (__v16sf) (B), (__v16sf) (C), \
2647 (__mmask16) (U), (R)); })
2648
2649
2650#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2651 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2652 (__v16sf) (B), (__v16sf) (C), \
2653 (__mmask16) (U), (R)); })
2654
2655
Michael Kupersteine45af542015-06-30 13:36:19 +00002656static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002657_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2658{
2659 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2660 (__v16sf) __B,
2661 (__v16sf) __C,
2662 (__mmask16) __U,
2663 _MM_FROUND_CUR_DIRECTION);
2664}
2665
Michael Kupersteine45af542015-06-30 13:36:19 +00002666static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002667_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2668{
2669 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2670 (__v16sf) __B,
2671 (__v16sf) __C,
2672 (__mmask16) __U,
2673 _MM_FROUND_CUR_DIRECTION);
2674}
2675
2676
2677
Adam Nemet0d5bb552014-07-28 17:14:40 +00002678/* Vector permutations */
2679
Michael Kupersteine45af542015-06-30 13:36:19 +00002680static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002681_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2682{
2683 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2684 /* idx */ ,
2685 (__v16si) __A,
2686 (__v16si) __B,
2687 (__mmask16) -1);
2688}
Michael Kupersteine45af542015-06-30 13:36:19 +00002689static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002690_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2691{
2692 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2693 /* idx */ ,
2694 (__v8di) __A,
2695 (__v8di) __B,
2696 (__mmask8) -1);
2697}
2698
Michael Kupersteine45af542015-06-30 13:36:19 +00002699static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002700_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2701{
2702 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2703 /* idx */ ,
2704 (__v8df) __A,
2705 (__v8df) __B,
2706 (__mmask8) -1);
2707}
Michael Kupersteine45af542015-06-30 13:36:19 +00002708static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002709_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2710{
2711 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2712 /* idx */ ,
2713 (__v16sf) __A,
2714 (__v16sf) __B,
2715 (__mmask16) -1);
2716}
2717
Craig Topper67826a52015-02-01 07:35:40 +00002718#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2719 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2720 (__v8di)(__m512i)(B), \
2721 (I), (__v8di)_mm512_setzero_si512(), \
2722 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002723
Michael Zuckerman533e0652016-04-28 12:47:30 +00002724#define _mm512_mask_alignr_epi64( __W, __U, __A, __B, __imm) __extension__({\
2725 (__m512i)__builtin_ia32_alignq512_mask ((__v8di) __A,\
2726 (__v8di) __B, __imm,\
2727 (__v8di) __W,\
2728 (__mmask8) __U);\
2729})
2730
2731#define _mm512_maskz_alignr_epi64( __U, __A, __B, __imm) __extension__({\
2732 (__m512i)__builtin_ia32_alignq512_mask ((__v8di) __A,\
2733 (__v8di) __B, __imm,\
2734 (__v8di) _mm512_setzero_si512 (),\
2735 (__mmask8) __U);\
2736})
2737
Craig Topper67826a52015-02-01 07:35:40 +00002738#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Michael Zuckerman533e0652016-04-28 12:47:30 +00002739 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
Craig Topper67826a52015-02-01 07:35:40 +00002740 (__v16si)(__m512i)(B), \
2741 (I), (__v16si)_mm512_setzero_si512(), \
Michael Zuckerman533e0652016-04-28 12:47:30 +00002742 (__mmask16)-1);\
2743})
2744
2745#define _mm512_mask_alignr_epi32( __W, __U, __A, __B, __imm) __extension__ ({\
2746 (__m512i) __builtin_ia32_alignd512_mask((__v16si) __A,\
2747 (__v16si) __B, __imm,\
2748 (__v16si) __W,\
2749 (__mmask16) __U);\
2750})
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002751
Michael Zuckerman533e0652016-04-28 12:47:30 +00002752#define _mm512_maskz_alignr_epi32( __U, __A, __B, __imm) __extension__({\
2753 (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,\
2754 (__v16si) __B, __imm,\
2755 (__v16si) _mm512_setzero_si512 (),\
2756 (__mmask16) __U);\
2757})
Adam Nemetf893ede2015-01-19 20:12:05 +00002758/* Vector Extract */
2759
2760#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002761 (__m256d) __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002762 (I), \
2763 (__v4df)_mm256_setzero_si256(), \
2764 (__mmask8) -1); })
2765
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002766#define _mm512_mask_extractf64x4_pd( __W, __U, __A, __imm) __extension__ ({\
2767 (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, \
2768 __imm,\
2769 (__v4df) __W,\
2770 (__mmask8) __U);\
2771})
2772
2773#define _mm512_maskz_extractf64x4_pd( __U, __A, __imm) __extension__ ({\
2774 (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,\
2775 __imm,\
2776 (__v4df)\
2777 _mm256_setzero_pd (),\
2778 (__mmask8) __U);\
2779})
2780
Adam Nemetf893ede2015-01-19 20:12:05 +00002781#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002782 (__m128) __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002783 (I), \
2784 (__v4sf)_mm_setzero_ps(), \
2785 (__mmask8) -1); })
2786
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00002787#define _mm512_mask_extractf32x4_ps( __W, __U, __A, __imm) __extension__ ({\
2788 (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,\
2789 __imm,\
2790 (__v4sf) __W,\
2791 (__mmask8) __U);\
2792})
2793
2794#define _mm512_maskz_extractf32x4_ps( __U, __A, __imm) __extension__ ({\
2795 (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,\
2796 __imm,\
2797 (__v4sf)\
2798 _mm_setzero_ps (),\
2799 (__mmask8) __U);\
2800})
Adam Nemet0d5bb552014-07-28 17:14:40 +00002801/* Vector Blend */
2802
Michael Kupersteine45af542015-06-30 13:36:19 +00002803static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002804_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2805{
2806 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2807 (__v8df) __W,
2808 (__mmask8) __U);
2809}
2810
Michael Kupersteine45af542015-06-30 13:36:19 +00002811static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002812_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2813{
2814 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2815 (__v16sf) __W,
2816 (__mmask16) __U);
2817}
2818
Michael Kupersteine45af542015-06-30 13:36:19 +00002819static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002820_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2821{
2822 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2823 (__v8di) __W,
2824 (__mmask8) __U);
2825}
2826
Michael Kupersteine45af542015-06-30 13:36:19 +00002827static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002828_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2829{
2830 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2831 (__v16si) __W,
2832 (__mmask16) __U);
2833}
2834
2835/* Compare */
2836
Craig Topper53565c62015-02-01 22:27:40 +00002837#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2838 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2839 (__v16sf)(__m512)(B), \
2840 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002841
Craig Topper53565c62015-02-01 22:27:40 +00002842#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2843 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2844 (__v16sf)(__m512)(B), \
2845 (P), (__mmask16)(U), (R)); })
2846
2847#define _mm512_cmp_ps_mask(A, B, P) \
2848 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2849
2850#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2851 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2852
2853#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2854 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2855 (__v8df)(__m512d)(B), \
2856 (P), (__mmask8)-1, (R)); })
2857
2858#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2859 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2860 (__v8df)(__m512d)(B), \
2861 (P), (__mmask8)(U), (R)); })
2862
2863#define _mm512_cmp_pd_mask(A, B, P) \
2864 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2865
2866#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2867 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002868
2869/* Conversion */
2870
Michael Kupersteine45af542015-06-30 13:36:19 +00002871static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002872_mm512_cvttps_epu32(__m512 __A)
2873{
2874 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2875 (__v16si)
2876 _mm512_setzero_si512 (),
2877 (__mmask16) -1,
2878 _MM_FROUND_CUR_DIRECTION);
2879}
2880
Michael Zuckermanf1544752016-05-09 10:32:51 +00002881static __inline__ __m512i __DEFAULT_FN_ATTRS
2882_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
2883{
2884 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2885 (__v16si) __W,
2886 (__mmask16) __U,
2887 _MM_FROUND_CUR_DIRECTION);
2888}
2889
2890static __inline__ __m512i __DEFAULT_FN_ATTRS
2891_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
2892{
2893 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2894 (__v16si) _mm512_setzero_si512 (),
2895 (__mmask16) __U,
2896 _MM_FROUND_CUR_DIRECTION);
2897}
2898
Craig Topper72c7d512015-02-01 07:35:35 +00002899#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2900 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2901 (__v16sf)_mm512_setzero_ps(), \
2902 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002903
Craig Topper72c7d512015-02-01 07:35:35 +00002904#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2905 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2906 (__v16sf)_mm512_setzero_ps(), \
2907 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002908
Michael Zuckermanf1544752016-05-09 10:32:51 +00002909static __inline__ __m512 __DEFAULT_FN_ATTRS
2910_mm512_cvtepu32_ps (__m512i __A)
2911{
2912 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
2913 (__v16sf) _mm512_undefined_ps (),
2914 (__mmask16) -1,
2915 _MM_FROUND_CUR_DIRECTION);
2916}
2917
2918static __inline__ __m512 __DEFAULT_FN_ATTRS
2919_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
2920{
2921 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
2922 (__v16sf) __W,
2923 (__mmask16) __U,
2924 _MM_FROUND_CUR_DIRECTION);
2925}
2926
2927static __inline__ __m512 __DEFAULT_FN_ATTRS
2928_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
2929{
2930 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
2931 (__v16sf) _mm512_setzero_ps (),
2932 (__mmask16) __U,
2933 _MM_FROUND_CUR_DIRECTION);
2934}
2935
Michael Kupersteine45af542015-06-30 13:36:19 +00002936static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002937_mm512_cvtepi32_pd(__m256i __A)
2938{
2939 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00002940 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002941 _mm512_setzero_pd (),
2942 (__mmask8) -1);
2943}
2944
Michael Zuckermanf1544752016-05-09 10:32:51 +00002945static __inline__ __m512d __DEFAULT_FN_ATTRS
2946_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
2947{
2948 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2949 (__v8df) __W,
2950 (__mmask8) __U);
2951}
2952
2953static __inline__ __m512d __DEFAULT_FN_ATTRS
2954_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
2955{
2956 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2957 (__v8df) _mm512_setzero_pd (),
2958 (__mmask8) __U);
2959}
2960
2961static __inline__ __m512 __DEFAULT_FN_ATTRS
2962_mm512_cvtepi32_ps (__m512i __A)
2963{
2964 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
2965 (__v16sf) _mm512_undefined_ps (),
2966 (__mmask16) -1,
2967 _MM_FROUND_CUR_DIRECTION);
2968}
2969
2970static __inline__ __m512 __DEFAULT_FN_ATTRS
2971_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
2972{
2973 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
2974 (__v16sf) __W,
2975 (__mmask16) __U,
2976 _MM_FROUND_CUR_DIRECTION);
2977}
2978
2979static __inline__ __m512 __DEFAULT_FN_ATTRS
2980_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
2981{
2982 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
2983 (__v16sf) _mm512_setzero_ps (),
2984 (__mmask16) __U,
2985 _MM_FROUND_CUR_DIRECTION);
2986}
2987
Michael Kupersteine45af542015-06-30 13:36:19 +00002988static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002989_mm512_cvtepu32_pd(__m256i __A)
2990{
2991 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2992 (__v8df)
2993 _mm512_setzero_pd (),
2994 (__mmask8) -1);
2995}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002996
Michael Zuckermanf1544752016-05-09 10:32:51 +00002997static __inline__ __m512d __DEFAULT_FN_ATTRS
2998_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
2999{
3000 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3001 (__v8df) __W,
3002 (__mmask8) __U);
3003}
3004
3005static __inline__ __m512d __DEFAULT_FN_ATTRS
3006_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3007{
3008 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3009 (__v8df) _mm512_setzero_pd (),
3010 (__mmask8) __U);
3011}
3012
Craig Topper72c7d512015-02-01 07:35:35 +00003013#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
3014 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
3015 (__v8sf)_mm256_setzero_ps(), \
3016 (__mmask8)-1, (R)); })
3017
Michael Zuckermanf1544752016-05-09 10:32:51 +00003018static __inline__ __m256 __DEFAULT_FN_ATTRS
3019_mm512_cvtpd_ps (__m512d __A)
3020{
3021 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3022 (__v8sf) _mm256_undefined_ps (),
3023 (__mmask8) -1,
3024 _MM_FROUND_CUR_DIRECTION);
3025}
3026
3027static __inline__ __m256 __DEFAULT_FN_ATTRS
3028_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3029{
3030 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3031 (__v8sf) __W,
3032 (__mmask8) __U,
3033 _MM_FROUND_CUR_DIRECTION);
3034}
3035
3036static __inline__ __m256 __DEFAULT_FN_ATTRS
3037_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3038{
3039 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3040 (__v8sf) _mm256_setzero_ps (),
3041 (__mmask8) __U,
3042 _MM_FROUND_CUR_DIRECTION);
3043}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003044
Craig Topper72c7d512015-02-01 07:35:35 +00003045#define _mm512_cvtps_ph(A, I) __extension__ ({ \
3046 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
3047 (__v16hi)_mm256_setzero_si256(), \
3048 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003049
Michael Zuckermanf1544752016-05-09 10:32:51 +00003050#define _mm512_mask_cvtps_ph(__U, __W, __A, __I) __extension__ ({ \
3051 (__m256i) __builtin_ia32_vcvtps2ph512_mask((__v16sf) __A,\
3052 __I,\
3053 (__v16hi) __U,\
3054 (__mmask16) __W);\
3055})
3056
3057#define _mm512_maskz_cvtps_ph( __W, __A, __I) __extension__ ({\
3058 (__m256i) __builtin_ia32_vcvtps2ph512_mask((__v16sf) __A,\
3059 __I,\
3060 (__v16hi)\
3061 _mm256_setzero_si256 (),\
3062 (__mmask16) __W);\
3063})
3064
3065
Michael Kupersteine45af542015-06-30 13:36:19 +00003066static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003067_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003068{
3069 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003070 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003071 _mm512_setzero_ps (),
3072 (__mmask16) -1,
3073 _MM_FROUND_CUR_DIRECTION);
3074}
3075
Michael Zuckermanf1544752016-05-09 10:32:51 +00003076static __inline__ __m512 __DEFAULT_FN_ATTRS
3077_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003078{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003079 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3080 (__v16sf) __W,
3081 (__mmask16) __U,
3082 _MM_FROUND_CUR_DIRECTION);
3083}
3084
3085static __inline__ __m512 __DEFAULT_FN_ATTRS
3086_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3087{
3088 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3089 (__v16sf) _mm512_setzero_ps (),
3090 (__mmask16) __U,
3091 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003092}
3093
Michael Kupersteine45af542015-06-30 13:36:19 +00003094static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003095_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003096{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003097 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003098 (__v8si)_mm256_setzero_si256(),
3099 (__mmask8) -1,
3100 _MM_FROUND_CUR_DIRECTION);
3101}
3102
Michael Zuckermanf1544752016-05-09 10:32:51 +00003103static __inline__ __m256i __DEFAULT_FN_ATTRS
3104_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3105{
3106 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3107 (__v8si) __W,
3108 (__mmask8) __U,
3109 _MM_FROUND_CUR_DIRECTION);
3110}
3111
3112static __inline__ __m256i __DEFAULT_FN_ATTRS
3113_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3114{
3115 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3116 (__v8si) _mm256_setzero_si256 (),
3117 (__mmask8) __U,
3118 _MM_FROUND_CUR_DIRECTION);
3119}
3120
Craig Topper72c7d512015-02-01 07:35:35 +00003121#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3122 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
3123 (__v8si)_mm256_setzero_si256(), \
3124 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003125
Craig Topper72c7d512015-02-01 07:35:35 +00003126#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
3127 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
3128 (__v16si)_mm512_setzero_si512(), \
3129 (__mmask16)-1, (R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003130
Michael Zuckermanf1544752016-05-09 10:32:51 +00003131static __inline __m512i __DEFAULT_FN_ATTRS
3132_mm512_cvttps_epi32(__m512 __a)
3133{
3134 return (__m512i)
3135 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3136 (__v16si) _mm512_setzero_si512 (),
3137 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3138}
3139
3140static __inline__ __m512i __DEFAULT_FN_ATTRS
3141_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3142{
3143 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3144 (__v16si) __W,
3145 (__mmask16) __U,
3146 _MM_FROUND_CUR_DIRECTION);
3147}
3148
3149static __inline__ __m512i __DEFAULT_FN_ATTRS
3150_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3151{
3152 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3153 (__v16si) _mm512_setzero_si512 (),
3154 (__mmask16) __U,
3155 _MM_FROUND_CUR_DIRECTION);
3156}
Craig Topper72c7d512015-02-01 07:35:35 +00003157
3158#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
3159 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
3160 (__v16si)_mm512_setzero_si512(), \
3161 (__mmask16)-1, (R)); })
3162
Michael Zuckermanf1544752016-05-09 10:32:51 +00003163static __inline__ __m512i __DEFAULT_FN_ATTRS
3164_mm512_cvtps_epi32 (__m512 __A)
3165{
3166 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3167 (__v16si) _mm512_undefined_epi32 (),
3168 (__mmask16) -1,
3169 _MM_FROUND_CUR_DIRECTION);
3170}
3171
3172static __inline__ __m512i __DEFAULT_FN_ATTRS
3173_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3174{
3175 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3176 (__v16si) __W,
3177 (__mmask16) __U,
3178 _MM_FROUND_CUR_DIRECTION);
3179}
3180
3181static __inline__ __m512i __DEFAULT_FN_ATTRS
3182_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3183{
3184 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3185 (__v16si)
3186 _mm512_setzero_si512 (),
3187 (__mmask16) __U,
3188 _MM_FROUND_CUR_DIRECTION);
3189}
3190
Craig Topper72c7d512015-02-01 07:35:35 +00003191#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
3192 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
3193 (__v8si)_mm256_setzero_si256(), \
3194 (__mmask8)-1, (R)); })
3195
Michael Zuckermanf1544752016-05-09 10:32:51 +00003196static __inline__ __m256i __DEFAULT_FN_ATTRS
3197_mm512_cvtpd_epi32 (__m512d __A)
3198{
3199 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3200 (__v8si)
3201 _mm256_undefined_si256 (),
3202 (__mmask8) -1,
3203 _MM_FROUND_CUR_DIRECTION);
3204}
3205
3206static __inline__ __m256i __DEFAULT_FN_ATTRS
3207_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3208{
3209 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3210 (__v8si) __W,
3211 (__mmask8) __U,
3212 _MM_FROUND_CUR_DIRECTION);
3213}
3214
3215static __inline__ __m256i __DEFAULT_FN_ATTRS
3216_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3217{
3218 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3219 (__v8si)
3220 _mm256_setzero_si256 (),
3221 (__mmask8) __U,
3222 _MM_FROUND_CUR_DIRECTION);
3223}
3224
Craig Topper72c7d512015-02-01 07:35:35 +00003225#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
3226 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
3227 (__v16si)_mm512_setzero_si512(), \
3228 (__mmask16)-1, (R)); })
3229
Michael Zuckermanf1544752016-05-09 10:32:51 +00003230static __inline__ __m512i __DEFAULT_FN_ATTRS
3231_mm512_cvtps_epu32 ( __m512 __A)
3232{
3233 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3234 (__v16si)\
3235 _mm512_undefined_epi32 (),\
3236 (__mmask16) -1,\
3237 _MM_FROUND_CUR_DIRECTION);\
3238}
3239
3240static __inline__ __m512i __DEFAULT_FN_ATTRS
3241_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3242{
3243 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3244 (__v16si) __W,
3245 (__mmask16) __U,
3246 _MM_FROUND_CUR_DIRECTION);
3247}
3248
Craig Topper72c7d512015-02-01 07:35:35 +00003249#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
3250 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
3251 (__v8si)_mm256_setzero_si256(), \
3252 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003253
Michael Zuckermanf1544752016-05-09 10:32:51 +00003254static __inline__ __m256i __DEFAULT_FN_ATTRS
3255_mm512_cvtpd_epu32 (__m512d __A)
3256{
3257 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3258 (__v8si)
3259 _mm256_undefined_si256 (),
3260 (__mmask8) -1,
3261 _MM_FROUND_CUR_DIRECTION);
3262}
3263
3264static __inline__ __m256i __DEFAULT_FN_ATTRS
3265_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3266{
3267 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3268 (__v8si) __W,
3269 (__mmask8) __U,
3270 _MM_FROUND_CUR_DIRECTION);
3271}
3272
3273static __inline__ __m256i __DEFAULT_FN_ATTRS
3274_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3275{
3276 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3277 (__v8si)
3278 _mm256_setzero_si256 (),
3279 (__mmask8) __U,
3280 _MM_FROUND_CUR_DIRECTION);
3281}
Adam Nemet63a951e2015-01-14 01:31:17 +00003282/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003283static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003284_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3285{
3286 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3287}
3288
Michael Kupersteine45af542015-06-30 13:36:19 +00003289static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003290_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3291{
3292 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3293}
3294
Michael Kupersteine45af542015-06-30 13:36:19 +00003295static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003296_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3297{
3298 return __builtin_shufflevector(__a, __b,
3299 2, 18, 3, 19,
3300 2+4, 18+4, 3+4, 19+4,
3301 2+8, 18+8, 3+8, 19+8,
3302 2+12, 18+12, 3+12, 19+12);
3303}
3304
Michael Kupersteine45af542015-06-30 13:36:19 +00003305static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003306_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3307{
3308 return __builtin_shufflevector(__a, __b,
3309 0, 16, 1, 17,
3310 0+4, 16+4, 1+4, 17+4,
3311 0+8, 16+8, 1+8, 17+8,
3312 0+12, 16+12, 1+12, 17+12);
3313}
3314
Adam Nemet0d5bb552014-07-28 17:14:40 +00003315/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003316
Michael Kupersteine45af542015-06-30 13:36:19 +00003317static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003318_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003319{
3320 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3321 (__v16si) __B,
3322 (__mmask16) -1);
3323}
3324
Michael Kupersteine45af542015-06-30 13:36:19 +00003325static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003326_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003327{
3328 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3329 (__v8di) __B,
3330 (__mmask8) -1);
3331}
3332
Adam Nemet0d5bb552014-07-28 17:14:40 +00003333/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003334
Michael Kupersteine45af542015-06-30 13:36:19 +00003335static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003336_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003337{
3338 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
3339 (__v16si)
3340 _mm512_setzero_si512 (),
3341 (__mmask16) __U);
3342}
3343
Michael Kupersteine45af542015-06-30 13:36:19 +00003344static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003345_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003346{
3347 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
3348 (__v8di)
3349 _mm512_setzero_si512 (),
3350 (__mmask8) __U);
3351}
3352
Michael Kupersteine45af542015-06-30 13:36:19 +00003353static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003354_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003355{
3356 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
3357 (__v16sf)
3358 _mm512_setzero_ps (),
3359 (__mmask16) __U);
3360}
3361
Michael Kupersteine45af542015-06-30 13:36:19 +00003362static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003363_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003364{
3365 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
3366 (__v8df)
3367 _mm512_setzero_pd (),
3368 (__mmask8) __U);
3369}
3370
Michael Kupersteine45af542015-06-30 13:36:19 +00003371static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003372_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
3373{
3374 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
3375 (__v16sf)
3376 _mm512_setzero_ps (),
3377 (__mmask16) __U);
3378}
3379
Michael Kupersteine45af542015-06-30 13:36:19 +00003380static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003381_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
3382{
3383 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
3384 (__v8df)
3385 _mm512_setzero_pd (),
3386 (__mmask8) __U);
3387}
3388
Michael Kupersteine45af542015-06-30 13:36:19 +00003389static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003390_mm512_loadu_pd(double const *__p)
3391{
3392 struct __loadu_pd {
3393 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003394 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003395 return ((struct __loadu_pd*)__p)->__v;
3396}
3397
Michael Kupersteine45af542015-06-30 13:36:19 +00003398static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003399_mm512_loadu_ps(float const *__p)
3400{
3401 struct __loadu_ps {
3402 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003403 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003404 return ((struct __loadu_ps*)__p)->__v;
3405}
3406
Michael Kupersteine45af542015-06-30 13:36:19 +00003407static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003408_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003409{
3410 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3411 (__v16sf)
3412 _mm512_setzero_ps (),
3413 (__mmask16) -1);
3414}
3415
Michael Kupersteine45af542015-06-30 13:36:19 +00003416static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003417_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003418{
3419 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
3420 (__v8df)
3421 _mm512_setzero_pd (),
3422 (__mmask8) -1);
3423}
3424
Adam Nemet0d5bb552014-07-28 17:14:40 +00003425/* SIMD store ops */
3426
Michael Kupersteine45af542015-06-30 13:36:19 +00003427static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003428_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003429{
3430 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
3431 (__mmask8) __U);
3432}
3433
Michael Kupersteine45af542015-06-30 13:36:19 +00003434static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003435_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003436{
3437 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
3438 (__mmask16) __U);
3439}
3440
Michael Kupersteine45af542015-06-30 13:36:19 +00003441static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003442_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003443{
3444 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
3445}
3446
Michael Kupersteine45af542015-06-30 13:36:19 +00003447static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003448_mm512_storeu_pd(void *__P, __m512d __A)
3449{
3450 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
3451}
3452
Michael Kupersteine45af542015-06-30 13:36:19 +00003453static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003454_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003455{
3456 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
3457 (__mmask16) __U);
3458}
3459
Michael Kupersteine45af542015-06-30 13:36:19 +00003460static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003461_mm512_storeu_ps(void *__P, __m512 __A)
3462{
3463 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
3464}
3465
Michael Kupersteine45af542015-06-30 13:36:19 +00003466static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003467_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00003468{
Adam Nemetc0cff242015-01-16 18:51:50 +00003469 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00003470}
3471
Michael Kupersteine45af542015-06-30 13:36:19 +00003472static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003473_mm512_store_pd(void *__P, __m512d __A)
3474{
3475 *(__m512d*)__P = __A;
3476}
3477
Michael Kupersteine45af542015-06-30 13:36:19 +00003478static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003479_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
3480{
3481 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
3482 (__mmask16) __U);
3483}
3484
Michael Kupersteine45af542015-06-30 13:36:19 +00003485static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003486_mm512_store_ps(void *__P, __m512 __A)
3487{
3488 *(__m512*)__P = __A;
3489}
3490
Adam Nemet2db1d2f2014-07-30 16:51:27 +00003491/* Mask ops */
3492
Michael Kupersteine45af542015-06-30 13:36:19 +00003493static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00003494_mm512_knot(__mmask16 __M)
3495{
3496 return __builtin_ia32_knothi(__M);
3497}
3498
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003499/* Integer compare */
3500
Michael Kupersteine45af542015-06-30 13:36:19 +00003501static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003502_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
3503 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
3504 (__mmask16)-1);
3505}
3506
Michael Kupersteine45af542015-06-30 13:36:19 +00003507static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003508_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3509 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
3510 __u);
3511}
3512
Michael Kupersteine45af542015-06-30 13:36:19 +00003513static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003514_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
3515 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
3516 (__mmask16)-1);
3517}
3518
Michael Kupersteine45af542015-06-30 13:36:19 +00003519static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003520_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3521 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
3522 __u);
3523}
3524
Michael Kupersteine45af542015-06-30 13:36:19 +00003525static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003526_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3527 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3528 __u);
3529}
3530
Michael Kupersteine45af542015-06-30 13:36:19 +00003531static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003532_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
3533 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3534 (__mmask8)-1);
3535}
3536
Michael Kupersteine45af542015-06-30 13:36:19 +00003537static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003538_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
3539 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3540 (__mmask8)-1);
3541}
3542
Michael Kupersteine45af542015-06-30 13:36:19 +00003543static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003544_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3545 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3546 __u);
3547}
3548
Michael Kupersteine45af542015-06-30 13:36:19 +00003549static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003550_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
3551 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3552 (__mmask16)-1);
3553}
3554
Michael Kupersteine45af542015-06-30 13:36:19 +00003555static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003556_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3557 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3558 __u);
3559}
3560
Michael Kupersteine45af542015-06-30 13:36:19 +00003561static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003562_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
3563 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3564 (__mmask16)-1);
3565}
3566
Michael Kupersteine45af542015-06-30 13:36:19 +00003567static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003568_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3569 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3570 __u);
3571}
3572
Michael Kupersteine45af542015-06-30 13:36:19 +00003573static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003574_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
3575 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3576 (__mmask8)-1);
3577}
3578
Michael Kupersteine45af542015-06-30 13:36:19 +00003579static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003580_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3581 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3582 __u);
3583}
3584
Michael Kupersteine45af542015-06-30 13:36:19 +00003585static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003586_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
3587 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3588 (__mmask8)-1);
3589}
3590
Michael Kupersteine45af542015-06-30 13:36:19 +00003591static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003592_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3593 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3594 __u);
3595}
3596
Michael Kupersteine45af542015-06-30 13:36:19 +00003597static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003598_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
3599 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3600 (__mmask16)-1);
3601}
3602
Michael Kupersteine45af542015-06-30 13:36:19 +00003603static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003604_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3605 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3606 __u);
3607}
3608
Michael Kupersteine45af542015-06-30 13:36:19 +00003609static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003610_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
3611 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3612 (__mmask16)-1);
3613}
3614
Michael Kupersteine45af542015-06-30 13:36:19 +00003615static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003616_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3617 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3618 __u);
3619}
3620
Michael Kupersteine45af542015-06-30 13:36:19 +00003621static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003622_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3623 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3624 __u);
3625}
3626
Michael Kupersteine45af542015-06-30 13:36:19 +00003627static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003628_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
3629 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3630 (__mmask8)-1);
3631}
3632
Michael Kupersteine45af542015-06-30 13:36:19 +00003633static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003634_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
3635 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3636 (__mmask8)-1);
3637}
3638
Michael Kupersteine45af542015-06-30 13:36:19 +00003639static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003640_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3641 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3642 __u);
3643}
3644
Michael Kupersteine45af542015-06-30 13:36:19 +00003645static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003646_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
3647 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3648 (__mmask16)-1);
3649}
3650
Michael Kupersteine45af542015-06-30 13:36:19 +00003651static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003652_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3653 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3654 __u);
3655}
3656
Michael Kupersteine45af542015-06-30 13:36:19 +00003657static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003658_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
3659 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3660 (__mmask16)-1);
3661}
3662
Michael Kupersteine45af542015-06-30 13:36:19 +00003663static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003664_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3665 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3666 __u);
3667}
3668
Michael Kupersteine45af542015-06-30 13:36:19 +00003669static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003670_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
3671 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3672 (__mmask8)-1);
3673}
3674
Michael Kupersteine45af542015-06-30 13:36:19 +00003675static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003676_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3677 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3678 __u);
3679}
3680
Michael Kupersteine45af542015-06-30 13:36:19 +00003681static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003682_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
3683 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3684 (__mmask8)-1);
3685}
3686
Michael Kupersteine45af542015-06-30 13:36:19 +00003687static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003688_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3689 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3690 __u);
3691}
3692
Michael Kupersteine45af542015-06-30 13:36:19 +00003693static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003694_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
3695 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3696 (__mmask16)-1);
3697}
3698
Michael Kupersteine45af542015-06-30 13:36:19 +00003699static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003700_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3701 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3702 __u);
3703}
3704
Michael Kupersteine45af542015-06-30 13:36:19 +00003705static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003706_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
3707 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3708 (__mmask16)-1);
3709}
3710
Michael Kupersteine45af542015-06-30 13:36:19 +00003711static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003712_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3713 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3714 __u);
3715}
3716
Michael Kupersteine45af542015-06-30 13:36:19 +00003717static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003718_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
3719 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3720 (__mmask8)-1);
3721}
3722
Michael Kupersteine45af542015-06-30 13:36:19 +00003723static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003724_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3725 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3726 __u);
3727}
3728
Michael Kupersteine45af542015-06-30 13:36:19 +00003729static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003730_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
3731 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3732 (__mmask8)-1);
3733}
3734
Michael Kupersteine45af542015-06-30 13:36:19 +00003735static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003736_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3737 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3738 __u);
3739}
3740
Michael Kupersteine45af542015-06-30 13:36:19 +00003741static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003742_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
3743 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3744 (__mmask16)-1);
3745}
3746
Michael Kupersteine45af542015-06-30 13:36:19 +00003747static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003748_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3749 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3750 __u);
3751}
3752
Michael Kupersteine45af542015-06-30 13:36:19 +00003753static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003754_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
3755 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3756 (__mmask16)-1);
3757}
3758
Michael Kupersteine45af542015-06-30 13:36:19 +00003759static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003760_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3761 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3762 __u);
3763}
3764
Michael Kupersteine45af542015-06-30 13:36:19 +00003765static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003766_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3767 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3768 (__mmask8)-1);
3769}
3770
Michael Kupersteine45af542015-06-30 13:36:19 +00003771static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003772_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3773 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3774 __u);
3775}
3776
Michael Kupersteine45af542015-06-30 13:36:19 +00003777static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003778_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3779 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3780 (__mmask8)-1);
3781}
3782
Michael Kupersteine45af542015-06-30 13:36:19 +00003783static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003784_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3785 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3786 __u);
3787}
3788
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003789static __inline__ __m512i __DEFAULT_FN_ATTRS
3790_mm512_cvtepi8_epi32 (__m128i __A)
3791{
3792 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3793 (__v16si)
3794 _mm512_setzero_si512 (),
3795 (__mmask16) -1);
3796}
3797
3798static __inline__ __m512i __DEFAULT_FN_ATTRS
3799_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3800{
3801 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3802 (__v16si) __W,
3803 (__mmask16) __U);
3804}
3805
3806static __inline__ __m512i __DEFAULT_FN_ATTRS
3807_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
3808{
3809 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3810 (__v16si)
3811 _mm512_setzero_si512 (),
3812 (__mmask16) __U);
3813}
3814
3815static __inline__ __m512i __DEFAULT_FN_ATTRS
3816_mm512_cvtepi8_epi64 (__m128i __A)
3817{
3818 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3819 (__v8di)
3820 _mm512_setzero_si512 (),
3821 (__mmask8) -1);
3822}
3823
3824static __inline__ __m512i __DEFAULT_FN_ATTRS
3825_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3826{
3827 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3828 (__v8di) __W,
3829 (__mmask8) __U);
3830}
3831
3832static __inline__ __m512i __DEFAULT_FN_ATTRS
3833_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
3834{
3835 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3836 (__v8di)
3837 _mm512_setzero_si512 (),
3838 (__mmask8) __U);
3839}
3840
3841static __inline__ __m512i __DEFAULT_FN_ATTRS
3842_mm512_cvtepi32_epi64 (__m256i __X)
3843{
3844 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3845 (__v8di)
3846 _mm512_setzero_si512 (),
3847 (__mmask8) -1);
3848}
3849
3850static __inline__ __m512i __DEFAULT_FN_ATTRS
3851_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3852{
3853 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3854 (__v8di) __W,
3855 (__mmask8) __U);
3856}
3857
3858static __inline__ __m512i __DEFAULT_FN_ATTRS
3859_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
3860{
3861 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3862 (__v8di)
3863 _mm512_setzero_si512 (),
3864 (__mmask8) __U);
3865}
3866
3867static __inline__ __m512i __DEFAULT_FN_ATTRS
3868_mm512_cvtepi16_epi32 (__m256i __A)
3869{
3870 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3871 (__v16si)
3872 _mm512_setzero_si512 (),
3873 (__mmask16) -1);
3874}
3875
3876static __inline__ __m512i __DEFAULT_FN_ATTRS
3877_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3878{
3879 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3880 (__v16si) __W,
3881 (__mmask16) __U);
3882}
3883
3884static __inline__ __m512i __DEFAULT_FN_ATTRS
3885_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
3886{
3887 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3888 (__v16si)
3889 _mm512_setzero_si512 (),
3890 (__mmask16) __U);
3891}
3892
3893static __inline__ __m512i __DEFAULT_FN_ATTRS
3894_mm512_cvtepi16_epi64 (__m128i __A)
3895{
3896 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3897 (__v8di)
3898 _mm512_setzero_si512 (),
3899 (__mmask8) -1);
3900}
3901
3902static __inline__ __m512i __DEFAULT_FN_ATTRS
3903_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3904{
3905 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3906 (__v8di) __W,
3907 (__mmask8) __U);
3908}
3909
3910static __inline__ __m512i __DEFAULT_FN_ATTRS
3911_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
3912{
3913 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3914 (__v8di)
3915 _mm512_setzero_si512 (),
3916 (__mmask8) __U);
3917}
3918
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003919static __inline__ __m512i __DEFAULT_FN_ATTRS
3920_mm512_cvtepu8_epi32 (__m128i __A)
3921{
3922 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3923 (__v16si)
3924 _mm512_setzero_si512 (),
3925 (__mmask16) -1);
3926}
3927
3928static __inline__ __m512i __DEFAULT_FN_ATTRS
3929_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3930{
3931 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3932 (__v16si) __W,
3933 (__mmask16) __U);
3934}
3935
3936static __inline__ __m512i __DEFAULT_FN_ATTRS
3937_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
3938{
3939 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3940 (__v16si)
3941 _mm512_setzero_si512 (),
3942 (__mmask16) __U);
3943}
3944
3945static __inline__ __m512i __DEFAULT_FN_ATTRS
3946_mm512_cvtepu8_epi64 (__m128i __A)
3947{
3948 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3949 (__v8di)
3950 _mm512_setzero_si512 (),
3951 (__mmask8) -1);
3952}
3953
3954static __inline__ __m512i __DEFAULT_FN_ATTRS
3955_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3956{
3957 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3958 (__v8di) __W,
3959 (__mmask8) __U);
3960}
3961
3962static __inline__ __m512i __DEFAULT_FN_ATTRS
3963_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
3964{
3965 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3966 (__v8di)
3967 _mm512_setzero_si512 (),
3968 (__mmask8) __U);
3969}
3970
3971static __inline__ __m512i __DEFAULT_FN_ATTRS
3972_mm512_cvtepu32_epi64 (__m256i __X)
3973{
3974 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3975 (__v8di)
3976 _mm512_setzero_si512 (),
3977 (__mmask8) -1);
3978}
3979
3980static __inline__ __m512i __DEFAULT_FN_ATTRS
3981_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3982{
3983 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3984 (__v8di) __W,
3985 (__mmask8) __U);
3986}
3987
3988static __inline__ __m512i __DEFAULT_FN_ATTRS
3989_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
3990{
3991 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3992 (__v8di)
3993 _mm512_setzero_si512 (),
3994 (__mmask8) __U);
3995}
3996
3997static __inline__ __m512i __DEFAULT_FN_ATTRS
3998_mm512_cvtepu16_epi32 (__m256i __A)
3999{
4000 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4001 (__v16si)
4002 _mm512_setzero_si512 (),
4003 (__mmask16) -1);
4004}
4005
4006static __inline__ __m512i __DEFAULT_FN_ATTRS
4007_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4008{
4009 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4010 (__v16si) __W,
4011 (__mmask16) __U);
4012}
4013
4014static __inline__ __m512i __DEFAULT_FN_ATTRS
4015_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4016{
4017 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4018 (__v16si)
4019 _mm512_setzero_si512 (),
4020 (__mmask16) __U);
4021}
4022
4023static __inline__ __m512i __DEFAULT_FN_ATTRS
4024_mm512_cvtepu16_epi64 (__m128i __A)
4025{
4026 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4027 (__v8di)
4028 _mm512_setzero_si512 (),
4029 (__mmask8) -1);
4030}
4031
4032static __inline__ __m512i __DEFAULT_FN_ATTRS
4033_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4034{
4035 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4036 (__v8di) __W,
4037 (__mmask8) __U);
4038}
4039
4040static __inline__ __m512i __DEFAULT_FN_ATTRS
4041_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4042{
4043 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4044 (__v8di)
4045 _mm512_setzero_si512 (),
4046 (__mmask8) __U);
4047}
4048
Michael Zuckermane98cc742016-02-23 15:59:47 +00004049static __inline__ __m512i __DEFAULT_FN_ATTRS
4050_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4051{
4052 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4053 (__v16si) __B,
4054 (__v16si)
4055 _mm512_setzero_si512 (),
4056 (__mmask16) -1);
4057}
4058
4059static __inline__ __m512i __DEFAULT_FN_ATTRS
4060_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4061{
4062 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4063 (__v16si) __B,
4064 (__v16si) __W,
4065 (__mmask16) __U);
4066}
4067
4068static __inline__ __m512i __DEFAULT_FN_ATTRS
4069_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4070{
4071 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4072 (__v16si) __B,
4073 (__v16si)
4074 _mm512_setzero_si512 (),
4075 (__mmask16) __U);
4076}
4077
4078static __inline__ __m512i __DEFAULT_FN_ATTRS
4079_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4080{
4081 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4082 (__v8di) __B,
4083 (__v8di)
4084 _mm512_setzero_si512 (),
4085 (__mmask8) -1);
4086}
4087
4088static __inline__ __m512i __DEFAULT_FN_ATTRS
4089_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4090{
4091 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4092 (__v8di) __B,
4093 (__v8di) __W,
4094 (__mmask8) __U);
4095}
4096
4097static __inline__ __m512i __DEFAULT_FN_ATTRS
4098_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4099{
4100 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4101 (__v8di) __B,
4102 (__v8di)
4103 _mm512_setzero_si512 (),
4104 (__mmask8) __U);
4105}
4106
4107
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004108
Craig Topper4cac1c22015-01-25 23:30:07 +00004109#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004110 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4111 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004112 (__mmask16)-1); })
4113
4114#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004115 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4116 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004117 (__mmask16)-1); })
4118
4119#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004120 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4121 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004122 (__mmask8)-1); })
4123
4124#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004125 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4126 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004127 (__mmask8)-1); })
4128
4129#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004130 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4131 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004132 (__mmask16)(m)); })
4133
4134#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004135 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4136 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004137 (__mmask16)(m)); })
4138
4139#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004140 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4141 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004142 (__mmask8)(m)); })
4143
4144#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004145 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4146 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004147 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004148
Michael Zuckerman38a27272016-02-22 09:05:41 +00004149#define _mm512_rol_epi32(a, b) __extension__ ({ \
4150 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4151 (__v16si)\
4152 _mm512_setzero_si512 (),\
4153 (__mmask16) -1); })
4154
4155#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
4156 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4157 (__v16si) (W),\
4158 (__mmask16) (U)); })
4159
4160#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
4161 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4162 (__v16si)\
4163 _mm512_setzero_si512 (),\
4164 (__mmask16) (U)); })
4165
4166#define _mm512_rol_epi64(a, b) __extension__ ({ \
4167 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4168 (__v8di)\
4169 _mm512_setzero_si512 (),\
4170 (__mmask8) -1); })
4171
4172#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
4173 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4174 (__v8di) (W),\
4175 (__mmask8) (U)); })
4176
4177#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
4178 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4179 (__v8di)\
4180 _mm512_setzero_si512 (),\
4181 (__mmask8) (U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004182static __inline__ __m512i __DEFAULT_FN_ATTRS
4183_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4184{
4185 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4186 (__v16si) __B,
4187 (__v16si)
4188 _mm512_setzero_si512 (),
4189 (__mmask16) -1);
4190}
4191
4192static __inline__ __m512i __DEFAULT_FN_ATTRS
4193_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4194{
4195 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4196 (__v16si) __B,
4197 (__v16si) __W,
4198 (__mmask16) __U);
4199}
4200
4201static __inline__ __m512i __DEFAULT_FN_ATTRS
4202_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4203{
4204 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4205 (__v16si) __B,
4206 (__v16si)
4207 _mm512_setzero_si512 (),
4208 (__mmask16) __U);
4209}
4210
4211static __inline__ __m512i __DEFAULT_FN_ATTRS
4212_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4213{
4214 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4215 (__v8di) __B,
4216 (__v8di)
4217 _mm512_setzero_si512 (),
4218 (__mmask8) -1);
4219}
4220
4221static __inline__ __m512i __DEFAULT_FN_ATTRS
4222_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4223{
4224 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4225 (__v8di) __B,
4226 (__v8di) __W,
4227 (__mmask8) __U);
4228}
4229
4230static __inline__ __m512i __DEFAULT_FN_ATTRS
4231_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4232{
4233 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4234 (__v8di) __B,
4235 (__v8di)
4236 _mm512_setzero_si512 (),
4237 (__mmask8) __U);
4238}
4239
4240#define _mm512_ror_epi32( __A, __B) __extension__ ({ \
4241__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4242 (__v16si)\
4243 _mm512_setzero_si512 (),\
4244 (__mmask16) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004245})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004246
4247#define _mm512_mask_ror_epi32( __W, __U, __A, __B) __extension__ ({ \
4248__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4249 (__v16si)( __W),\
4250 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004251})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004252
4253#define _mm512_maskz_ror_epi32( __U, __A, __B) __extension__ ({ \
4254__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4255 (__v16si)\
4256 _mm512_setzero_si512 (),\
4257 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004258})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004259
4260#define _mm512_ror_epi64( __A, __B) __extension__ ({ \
4261__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4262 (__v8di)\
4263 _mm512_setzero_si512 (),\
4264 (__mmask8) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004265})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004266
4267#define _mm512_mask_ror_epi64( __W, __U, __A, __B) __extension__ ({ \
4268__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4269 (__v8di)( __W),\
4270 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004271})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004272
4273#define _mm512_maskz_ror_epi64( __U, __A, __B) __extension__ ({ \
4274__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4275 (__v8di)\
4276 _mm512_setzero_si512 (),\
4277 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004278})
Michael Zuckerman38a27272016-02-22 09:05:41 +00004279
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004280#define _mm512_slli_epi32( __A, __B) __extension__ ({ \
4281__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
4282 (__v16si)\
4283 _mm512_setzero_si512 (),\
4284 (__mmask16) -1);\
4285})
4286
4287#define _mm512_mask_slli_epi32( __W, __U, __A ,__B) __extension__ ({ \
4288__builtin_ia32_pslldi512_mask ((__v16si) (__A), (__B),\
4289 (__v16si)( __W),\
4290 (__mmask16)( __U));\
4291})
4292
4293#define _mm512_maskz_slli_epi32( __U, __A, __B) __extension__ ({ \
4294__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
4295 (__v16si)\
4296 _mm512_setzero_si512 (),\
4297 (__mmask16)( __U));\
4298})
4299
4300#define _mm512_slli_epi64( __A, __B) __extension__ ({ \
4301__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
4302 (__v8di)\
4303 _mm512_setzero_si512 (),\
4304 (__mmask8) -1);\
4305})
4306
4307#define _mm512_mask_slli_epi64( __W, __U, __A ,__B) __extension__ ({ \
4308__builtin_ia32_psllqi512_mask ((__v8di) (__A), (__B),\
4309 (__v8di)( __W),\
4310 (__mmask8)( __U));\
4311})
4312
4313#define _mm512_maskz_slli_epi64( __U, __A, __B) __extension__ ({ \
4314__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
4315 (__v8di)\
4316 _mm512_setzero_si512 (),\
4317 (__mmask8)( __U));\
4318})
4319
Michael Zuckerman38a27272016-02-22 09:05:41 +00004320
Michael Zuckermand176d742016-03-01 17:49:03 +00004321
4322#define _mm512_srli_epi32( __A, __B) __extension__ ({ \
4323__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4324 (__v16si)\
4325 _mm512_setzero_si512 (),\
4326 (__mmask16) -1);\
4327})
4328
4329#define _mm512_mask_srli_epi32( __W, __U, __A, __B) __extension__ ({ \
4330__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4331 (__v16si)( __W),\
4332 (__mmask16)( __U));\
4333})
4334
4335#define _mm512_maskz_srli_epi32( __U, __A, __B) __extension__ ({ \
4336__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4337 (__v16si)\
4338 _mm512_setzero_si512 (),\
4339 (__mmask16)( __U));\
4340})
4341
4342#define _mm512_srli_epi64( __A, __B) __extension__ ({ \
4343__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4344 (__v8di)\
4345 _mm512_setzero_si512 (),\
4346 (__mmask8) -1);\
4347})
4348
4349#define _mm512_mask_srli_epi64( __W, __U, __A, __B) __extension__ ({ \
4350__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4351 (__v8di)( __W),\
4352 (__mmask8)( __U));\
4353})
4354
4355#define _mm512_maskz_srli_epi64( __U, __A, __B) __extension__ ({ \
4356__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4357 (__v8di)\
4358 _mm512_setzero_si512 (),\
4359 (__mmask8)( __U));\
4360})
4361
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004362static __inline__ __m512i __DEFAULT_FN_ATTRS
4363_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4364{
4365 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4366 (__v16si) __W,
4367 (__mmask16) __U);
4368}
4369
4370static __inline__ __m512i __DEFAULT_FN_ATTRS
4371_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4372{
4373 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4374 (__v16si)
4375 _mm512_setzero_si512 (),
4376 (__mmask16) __U);
4377}
4378
4379static __inline__ void __DEFAULT_FN_ATTRS
4380_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
4381{
4382 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
4383 (__mmask16) __U);
4384}
4385
4386static __inline__ __m512i __DEFAULT_FN_ATTRS
4387_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
4388{
4389 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4390 (__v8di) __W,
4391 (__mmask8) __U);
4392}
4393
4394static __inline__ __m512i __DEFAULT_FN_ATTRS
4395_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
4396{
4397 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4398 (__v8di)
4399 _mm512_setzero_si512 (),
4400 (__mmask8) __U);
4401}
4402
4403static __inline__ __m512i __DEFAULT_FN_ATTRS
4404_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4405{
4406 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4407 (__v8di) __W,
4408 (__mmask8) __U);
4409}
4410
4411static __inline__ __m512i __DEFAULT_FN_ATTRS
4412_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
4413{
4414 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4415 (__v8di)
4416 _mm512_setzero_si512 (),
4417 (__mmask8) __U);
4418}
4419
4420static __inline__ void __DEFAULT_FN_ATTRS
4421_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
4422{
4423 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
4424 (__mmask8) __U);
4425}
4426
4427
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00004428
4429static __inline__ __m512d __DEFAULT_FN_ATTRS
4430_mm512_movedup_pd (__m512d __A)
4431{
4432 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4433 (__v8df)
4434 _mm512_undefined_pd (),
4435 (__mmask8) -1);
4436}
4437
4438static __inline__ __m512d __DEFAULT_FN_ATTRS
4439_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
4440{
4441 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4442 (__v8df) __W,
4443 (__mmask8) __U);
4444}
4445
4446static __inline__ __m512d __DEFAULT_FN_ATTRS
4447_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
4448{
4449 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4450 (__v8df)
4451 _mm512_setzero_pd (),
4452 (__mmask8) __U);
4453}
4454
Michael Zuckermandef78752016-03-28 12:23:09 +00004455#define _mm512_fixupimm_round_pd( __A, __B, __C, __imm, __R) __extension__ ({ \
4456__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4457 (__v8df)( __B),\
4458 (__v8di)( __C),\
4459 (__imm),\
4460 (__mmask8) -1, (__R));\
4461})
4462
4463#define _mm512_mask_fixupimm_round_pd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4464__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4465 (__v8df)( __B),\
4466 (__v8di)( __C),\
4467 (__imm),\
4468 (__mmask8)( __U), (__R));\
4469})
4470
4471#define _mm512_fixupimm_pd( __A, __B, __C, __imm) __extension__ ({ \
4472__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4473 (__v8df)( __B),\
4474 (__v8di)( __C),\
4475 ( __imm),\
4476 (__mmask8) -1,\
4477 _MM_FROUND_CUR_DIRECTION);\
4478})
4479
4480#define _mm512_mask_fixupimm_pd( __A, __U, __B, __C, __imm) __extension__ ({ \
4481__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4482 (__v8df)( __B),\
4483 (__v8di)( __C),\
4484 ( __imm),\
4485 (__mmask8)( __U),\
4486 _MM_FROUND_CUR_DIRECTION);\
4487})
4488
4489#define _mm512_maskz_fixupimm_round_pd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4490__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
4491 (__v8df)( __B),\
4492 (__v8di)( __C),\
4493 (__imm),\
4494 (__mmask8)( __U), (__R));\
4495})
4496
4497#define _mm512_maskz_fixupimm_pd( __U, __A, __B, __C, __imm) __extension__ ({ \
4498__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
4499 (__v8df)( __B),\
4500 (__v8di)( __C),\
4501 ( __imm),\
4502 (__mmask8)( __U),\
4503 _MM_FROUND_CUR_DIRECTION);\
4504})
4505
4506#define _mm512_fixupimm_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
4507__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4508 (__v16sf)( __B),\
4509 (__v16si)( __C),\
4510 (__imm),\
4511 (__mmask16) -1, (__R));\
4512})
4513
4514#define _mm512_mask_fixupimm_round_ps( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4515__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4516 (__v16sf)( __B),\
4517 (__v16si)( __C),\
4518 (__imm),\
4519 (__mmask16)( __U), (__R));\
4520})
4521
4522#define _mm512_fixupimm_ps( __A, __B, __C, __imm) __extension__ ({ \
4523__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4524 (__v16sf)( __B),\
4525 (__v16si)( __C),\
4526 ( __imm),\
4527 (__mmask16) -1,\
4528 _MM_FROUND_CUR_DIRECTION);\
4529})
4530
4531#define _mm512_mask_fixupimm_ps( __A, __U, __B, __C, __imm) __extension__ ({ \
4532__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4533 (__v16sf)( __B),\
4534 (__v16si)( __C),\
4535 ( __imm),\
4536 (__mmask16)( __U),\
4537 _MM_FROUND_CUR_DIRECTION);\
4538})
4539
4540#define _mm512_maskz_fixupimm_round_ps( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4541__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4542 (__v16sf)( __B),\
4543 (__v16si)( __C),\
4544 (__imm),\
4545 (__mmask16)( __U), (__R));\
4546})
4547
4548#define _mm512_maskz_fixupimm_ps( __U, __A, __B, __C, __imm) __extension__ ({ \
4549__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4550 (__v16sf)( __B),\
4551 (__v16si)( __C),\
4552 ( __imm),\
4553 (__mmask16)( __U),\
4554 _MM_FROUND_CUR_DIRECTION);\
4555})
4556
4557#define _mm_fixupimm_round_sd( __A, __B, __C, __imm, __R) __extension__ ({ \
4558__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4559 (__v2df)( __B),\
4560 (__v2di)( __C), __imm,\
4561 (__mmask8) -1, (__R));\
4562})
4563
4564#define _mm_mask_fixupimm_round_sd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4565__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4566 (__v2df)( __B),\
4567 (__v2di)( __C), __imm,\
4568 (__mmask8)( __U), (__R));\
4569})
4570
4571#define _mm_fixupimm_sd( __A, __B, __C, __imm) __extension__ ({ \
4572__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4573 (__v2df)( __B),\
4574 (__v2di)( __C),( __imm),\
4575 (__mmask8) -1,\
4576 _MM_FROUND_CUR_DIRECTION);\
4577})
4578
4579#define _mm_mask_fixupimm_sd( __A, __U, __B, __C, __imm) __extension__ ({ \
4580__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4581 (__v2df)( __B),\
4582 (__v2di)( __C),( __imm),\
4583 (__mmask8)( __U),\
4584 _MM_FROUND_CUR_DIRECTION);\
4585})
4586
4587#define _mm_maskz_fixupimm_round_sd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4588__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4589 (__v2df)( __B),\
4590 (__v2di)( __C),\
4591 __imm,\
4592 (__mmask8)( __U), (__R));\
4593})
4594
4595#define _mm_maskz_fixupimm_sd( __U, __A, __B, __C, __imm) __extension__ ({ \
4596__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4597 (__v2df)( __B),\
4598 (__v2di)( __C),\
4599 ( __imm),\
4600 (__mmask8)( __U),\
4601 _MM_FROUND_CUR_DIRECTION);\
4602})
4603
4604#define _mm_fixupimm_round_ss( __A, __B, __C, __imm, __R) __extension__ ({ \
4605__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4606 (__v4sf)( __B),\
4607 (__v4si)( __C), (__imm),\
4608 (__mmask8) -1, (__R));\
4609})
4610
4611#define _mm_mask_fixupimm_round_ss( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4612__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4613 (__v4sf)( __B),\
4614 (__v4si)( __C), (__imm),\
4615 (__mmask8)( __U), (__R));\
4616})
4617
4618#define _mm_fixupimm_ss( __A, __B, __C, __imm) __extension__ ({ \
4619__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4620 (__v4sf)( __B),\
4621 (__v4si)( __C),( __imm),\
4622 (__mmask8) -1,\
4623 _MM_FROUND_CUR_DIRECTION);\
4624})
4625
4626#define _mm_mask_fixupimm_ss( __A, __U, __B, __C, __imm) __extension__ ({ \
4627__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4628 (__v4sf)( __B),\
4629 (__v4si)( __C),( __imm),\
4630 (__mmask8)( __U),\
4631 _MM_FROUND_CUR_DIRECTION);\
4632})
4633
4634#define _mm_maskz_fixupimm_round_ss( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4635__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4636 (__v4sf)( __B),\
4637 (__v4si)( __C), (__imm),\
4638 (__mmask8)( __U), (__R));\
4639})
4640
4641#define _mm_maskz_fixupimm_ss( __U, __A, __B, __C, __imm) __extension__ ({ \
4642__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4643 (__v4sf)( __B),\
4644 (__v4si)( __C),( __imm),\
4645 (__mmask8)( __U),\
4646 _MM_FROUND_CUR_DIRECTION);\
4647})
4648
4649#define _mm_getexp_round_sd( __A, __B ,__R) __extension__ ({ \
4650__builtin_ia32_getexpsd128_round_mask ((__v2df)(__A),\
4651 (__v2df)( __B), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4652 ( __R));\
4653})
4654
4655
4656static __inline__ __m128d __DEFAULT_FN_ATTRS
4657_mm_getexp_sd (__m128d __A, __m128d __B)
4658{
4659 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
4660 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4661}
4662
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004663static __inline__ __m128d __DEFAULT_FN_ATTRS
4664_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4665{
4666 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4667 (__v2df) __B,
4668 (__v2df) __W,
4669 (__mmask8) __U,
4670 _MM_FROUND_CUR_DIRECTION);
4671}
4672
4673#define _mm_mask_getexp_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
4674__builtin_ia32_getexpsd128_round_mask ((__v2df) __A,\
4675 (__v2df) __B,\
4676 (__v2df) __W,\
4677 (__mmask8) __U,\
4678 __R);\
4679})
4680
4681static __inline__ __m128d __DEFAULT_FN_ATTRS
4682_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
4683{
4684 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4685 (__v2df) __B,
4686 (__v2df) _mm_setzero_pd (),
4687 (__mmask8) __U,
4688 _MM_FROUND_CUR_DIRECTION);
4689}
4690
4691#define _mm_maskz_getexp_round_sd( __U, __A, __B, __R) __extension__ ({\
4692__builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,\
4693 (__v2df) __B,\
4694 (__v2df) _mm_setzero_pd (),\
4695 (__mmask8) __U,\
4696 __R);\
4697})
4698
Michael Zuckermandef78752016-03-28 12:23:09 +00004699#define _mm_getexp_round_ss( __A, __B, __R) __extension__ ({ \
4700__builtin_ia32_getexpss128_round_mask ((__v4sf)( __A),\
4701 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4702 ( __R));\
4703})
4704
4705static __inline__ __m128 __DEFAULT_FN_ATTRS
4706_mm_getexp_ss (__m128 __A, __m128 __B)
4707{
4708 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4709 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4710}
4711
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004712static __inline__ __m128d __DEFAULT_FN_ATTRS
4713_mm_mask_getexp_ss (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4714{
4715 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4716 (__v4sf) __B,
4717 (__v4sf) __W,
4718 (__mmask8) __U,
4719 _MM_FROUND_CUR_DIRECTION);
4720}
4721
4722#define _mm_mask_getexp_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
4723__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4724 (__v4sf) __B,\
4725 (__v4sf) __W,\
4726 (__mmask8) __U,\
4727 __R);\
4728})
4729
4730static __inline__ __m128d __DEFAULT_FN_ATTRS
4731_mm_maskz_getexp_ss (__mmask8 __U, __m128d __A, __m128d __B)
4732{
4733 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4734 (__v4sf) __B,
4735 (__v4sf) _mm_setzero_pd (),
4736 (__mmask8) __U,
4737 _MM_FROUND_CUR_DIRECTION);
4738}
4739
4740#define _mm_maskz_getexp_round_ss( __U, __A, __B, __R) __extension__ ({\
4741__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4742 (__v4sf) __B,\
4743 (__v4sf) _mm_setzero_ps (),\
4744 (__mmask8) __U,\
4745 __R);\
4746})
4747
Michael Zuckermandef78752016-03-28 12:23:09 +00004748#define _mm_getmant_round_sd( __A, __B, __C, __D, __R) __extension__ ({ \
4749__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4750 (__v2df)( __B),\
4751 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4752 ( __R));\
4753})
4754
4755#define _mm_getmant_sd( __A, __B, __C, __D) __extension__ ({ \
4756__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4757 (__v2df)( __B),\
4758 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4759 _MM_FROUND_CUR_DIRECTION);\
4760})
4761
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004762#define _mm_mask_getmant_sd( __W, __U, __A, __B, __C, __D) __extension__ ({\
4763__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4764 (__v2df) __B,\
4765 (( __D) << 2) |( __C),\
4766 (__v2df) __W,\
4767 (__mmask8) __U,\
4768 _MM_FROUND_CUR_DIRECTION);\
4769})
4770
4771#define _mm_mask_getmant_round_sd( __W, __U, __A, __B, __C, __D, __R)({\
4772__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4773 (__v2df) __B,\
4774 (( __D) << 2) |( __C),\
4775 (__v2df) __W,\
4776 (__mmask8) __U,\
4777 __R);\
4778})
4779
4780#define _mm_maskz_getmant_sd( __U, __A, __B, __C, __D) __extension__ ({\
4781__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4782 (__v2df) __B,\
4783 (( __D) << 2) |( __C),\
4784 (__v2df) _mm_setzero_pd (),\
4785 (__mmask8) __U,\
4786 _MM_FROUND_CUR_DIRECTION);\
4787})
4788
4789#define _mm_maskz_getmant_round_sd( __U, __A, __B, __C, __D, __R) __extension__ ({\
4790__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4791 (__v2df) __B,\
4792 (( __D) << 2) |( __C),\
4793 (__v2df) _mm_setzero_pd (),\
4794 (__mmask8) __U,\
4795 __R);\
4796})
4797
Michael Zuckermandef78752016-03-28 12:23:09 +00004798#define _mm_getmant_round_ss( __A, __B, __C, __D, __R) __extension__ ({ \
4799__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4800 (__v4sf)( __B),\
4801 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4802 ( __R));\
4803})
4804
4805#define _mm_getmant_ss(__A, __B, __C, __D) __extension__ ({ \
4806__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4807 (__v4sf)( __B),\
4808 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4809 _MM_FROUND_CUR_DIRECTION);\
4810})
4811
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004812#define _mm_mask_getmant_ss( __W, __U, __A, __B, __C, __D) __extension__ ({\
4813__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4814 (__v4sf) __B,\
4815 (( __D) << 2) |( __C),\
4816 (__v4sf) __W,\
4817 (__mmask8) __U,\
4818 _MM_FROUND_CUR_DIRECTION);\
4819})
4820
4821#define _mm_mask_getmant_round_ss( __W, __U, __A, __B, __C, __D, __R)({\
4822__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4823 (__v4sf) __B,\
4824 (( __D) << 2) |( __C),\
4825 (__v4sf) __W,\
4826 (__mmask8) __U,\
4827 __R);\
4828})
4829
4830#define _mm_maskz_getmant_ss( __U, __A, __B, __C, __D) __extension__ ({\
4831__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4832 (__v4sf) __B,\
4833 (( __D) << 2) |( __C),\
4834 (__v4sf) _mm_setzero_pd (),\
4835 (__mmask8) __U,\
4836 _MM_FROUND_CUR_DIRECTION);\
4837})
4838
4839#define _mm_maskz_getmant_round_ss( __U, __A, __B, __C, __D, __R) __extension__ ({\
4840__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4841 (__v4sf) __B,\
4842 (( __D) << 2) |( __C),\
4843 (__v4sf) _mm_setzero_ps (),\
4844 (__mmask8) __U,\
4845 __R);\
4846})
Michael Zuckermandef78752016-03-28 12:23:09 +00004847
4848static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4849_mm512_kmov (__mmask16 __A)
4850{
4851 return __A;
4852}
4853
Michael Zuckermane71d59f2016-03-07 19:15:00 +00004854#define _mm_comi_round_sd(__A, __B, __P, __R) __extension__ ({\
4855__builtin_ia32_vcomisd ((__v2df) (__A), (__v2df) (__B), ( __P), ( __R));\
4856})
4857
4858#define _mm_comi_round_ss( __A, __B, __P, __R) __extension__ ({\
4859__builtin_ia32_vcomiss ((__v4sf) (__A), (__v4sf) (__B), ( __P), ( __R));\
4860})
4861
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004862static __inline__ __m512d __DEFAULT_FN_ATTRS
4863_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4864{
4865 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
4866 (__v8df) __B,
4867 (__v8df) __W,
4868 (__mmask8) __U);
4869}
Michael Zuckerman8d161992016-04-10 17:24:03 +00004870#define _mm_cvt_roundsd_si64( __A, __R) __extension__ ({ \
4871__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
4872})
Michael Zuckermand8d2f622016-04-11 07:15:34 +00004873static __inline__ __m512i __DEFAULT_FN_ATTRS
4874_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
4875 __mmask16 __U, __m512i __B)
4876{
4877 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
4878 (__v16si) __I
4879 /* idx */ ,
4880 (__v16si) __B,
4881 (__mmask16) __U);
4882}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00004883static __inline__ __m512i __DEFAULT_FN_ATTRS
4884_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
4885{
4886 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
4887 (__v16si) __B,
4888 (__v16si)
4889 _mm512_setzero_si512 (),
4890 (__mmask16) -1);
4891}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004892
Michael Zuckerman81f468c2016-04-11 17:04:21 +00004893static __inline__ __m512i __DEFAULT_FN_ATTRS
4894_mm512_sll_epi32 (__m512i __A, __m128i __B)
4895{
4896 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4897 (__v4si) __B,
4898 (__v16si)
4899 _mm512_setzero_si512 (),
4900 (__mmask16) -1);
4901}
4902
4903static __inline__ __m512i __DEFAULT_FN_ATTRS
4904_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4905{
4906 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4907 (__v4si) __B,
4908 (__v16si) __W,
4909 (__mmask16) __U);
4910}
4911
4912static __inline__ __m512i __DEFAULT_FN_ATTRS
4913_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4914{
4915 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4916 (__v4si) __B,
4917 (__v16si)
4918 _mm512_setzero_si512 (),
4919 (__mmask16) __U);
4920}
4921
4922static __inline__ __m512i __DEFAULT_FN_ATTRS
4923_mm512_sll_epi64 (__m512i __A, __m128i __B)
4924{
4925 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4926 (__v2di) __B,
4927 (__v8di)
4928 _mm512_setzero_si512 (),
4929 (__mmask8) -1);
4930}
4931
4932static __inline__ __m512i __DEFAULT_FN_ATTRS
4933_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4934{
4935 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4936 (__v2di) __B,
4937 (__v8di) __W,
4938 (__mmask8) __U);
4939}
4940
4941static __inline__ __m512i __DEFAULT_FN_ATTRS
4942_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4943{
4944 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4945 (__v2di) __B,
4946 (__v8di)
4947 _mm512_setzero_si512 (),
4948 (__mmask8) __U);
4949}
4950
4951static __inline__ __m512i __DEFAULT_FN_ATTRS
4952_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
4953{
4954 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4955 (__v16si) __Y,
4956 (__v16si)
4957 _mm512_setzero_si512 (),
4958 (__mmask16) -1);
4959}
4960
4961static __inline__ __m512i __DEFAULT_FN_ATTRS
4962_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4963{
4964 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4965 (__v16si) __Y,
4966 (__v16si) __W,
4967 (__mmask16) __U);
4968}
4969
4970static __inline__ __m512i __DEFAULT_FN_ATTRS
4971_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4972{
4973 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4974 (__v16si) __Y,
4975 (__v16si)
4976 _mm512_setzero_si512 (),
4977 (__mmask16) __U);
4978}
4979
4980static __inline__ __m512i __DEFAULT_FN_ATTRS
4981_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
4982{
4983 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4984 (__v8di) __Y,
4985 (__v8di)
4986 _mm512_undefined_pd (),
4987 (__mmask8) -1);
4988}
4989
4990static __inline__ __m512i __DEFAULT_FN_ATTRS
4991_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4992{
4993 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4994 (__v8di) __Y,
4995 (__v8di) __W,
4996 (__mmask8) __U);
4997}
4998
4999static __inline__ __m512i __DEFAULT_FN_ATTRS
5000_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5001{
5002 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5003 (__v8di) __Y,
5004 (__v8di)
5005 _mm512_setzero_si512 (),
5006 (__mmask8) __U);
5007}
5008
5009static __inline__ __m512i __DEFAULT_FN_ATTRS
5010_mm512_sra_epi32 (__m512i __A, __m128i __B)
5011{
5012 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5013 (__v4si) __B,
5014 (__v16si)
5015 _mm512_setzero_si512 (),
5016 (__mmask16) -1);
5017}
5018
5019static __inline__ __m512i __DEFAULT_FN_ATTRS
5020_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5021{
5022 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5023 (__v4si) __B,
5024 (__v16si) __W,
5025 (__mmask16) __U);
5026}
5027
5028static __inline__ __m512i __DEFAULT_FN_ATTRS
5029_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5030{
5031 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5032 (__v4si) __B,
5033 (__v16si)
5034 _mm512_setzero_si512 (),
5035 (__mmask16) __U);
5036}
5037
5038static __inline__ __m512i __DEFAULT_FN_ATTRS
5039_mm512_sra_epi64 (__m512i __A, __m128i __B)
5040{
5041 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5042 (__v2di) __B,
5043 (__v8di)
5044 _mm512_setzero_si512 (),
5045 (__mmask8) -1);
5046}
5047
5048static __inline__ __m512i __DEFAULT_FN_ATTRS
5049_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5050{
5051 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5052 (__v2di) __B,
5053 (__v8di) __W,
5054 (__mmask8) __U);
5055}
5056
5057static __inline__ __m512i __DEFAULT_FN_ATTRS
5058_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5059{
5060 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5061 (__v2di) __B,
5062 (__v8di)
5063 _mm512_setzero_si512 (),
5064 (__mmask8) __U);
5065}
5066
5067static __inline__ __m512i __DEFAULT_FN_ATTRS
5068_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5069{
5070 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5071 (__v16si) __Y,
5072 (__v16si)
5073 _mm512_setzero_si512 (),
5074 (__mmask16) -1);
5075}
5076
5077static __inline__ __m512i __DEFAULT_FN_ATTRS
5078_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5079{
5080 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5081 (__v16si) __Y,
5082 (__v16si) __W,
5083 (__mmask16) __U);
5084}
5085
5086static __inline__ __m512i __DEFAULT_FN_ATTRS
5087_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5088{
5089 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5090 (__v16si) __Y,
5091 (__v16si)
5092 _mm512_setzero_si512 (),
5093 (__mmask16) __U);
5094}
5095
5096static __inline__ __m512i __DEFAULT_FN_ATTRS
5097_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5098{
5099 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5100 (__v8di) __Y,
5101 (__v8di)
5102 _mm512_setzero_si512 (),
5103 (__mmask8) -1);
5104}
5105
5106static __inline__ __m512i __DEFAULT_FN_ATTRS
5107_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5108{
5109 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5110 (__v8di) __Y,
5111 (__v8di) __W,
5112 (__mmask8) __U);
5113}
5114
5115static __inline__ __m512i __DEFAULT_FN_ATTRS
5116_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5117{
5118 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5119 (__v8di) __Y,
5120 (__v8di)
5121 _mm512_setzero_si512 (),
5122 (__mmask8) __U);
5123}
5124
5125static __inline__ __m512i __DEFAULT_FN_ATTRS
5126_mm512_srl_epi32 (__m512i __A, __m128i __B)
5127{
5128 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5129 (__v4si) __B,
5130 (__v16si)
5131 _mm512_setzero_si512 (),
5132 (__mmask16) -1);
5133}
5134
5135static __inline__ __m512i __DEFAULT_FN_ATTRS
5136_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5137{
5138 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5139 (__v4si) __B,
5140 (__v16si) __W,
5141 (__mmask16) __U);
5142}
5143
5144static __inline__ __m512i __DEFAULT_FN_ATTRS
5145_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5146{
5147 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5148 (__v4si) __B,
5149 (__v16si)
5150 _mm512_setzero_si512 (),
5151 (__mmask16) __U);
5152}
5153
5154static __inline__ __m512i __DEFAULT_FN_ATTRS
5155_mm512_srl_epi64 (__m512i __A, __m128i __B)
5156{
5157 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5158 (__v2di) __B,
5159 (__v8di)
5160 _mm512_setzero_si512 (),
5161 (__mmask8) -1);
5162}
5163
5164static __inline__ __m512i __DEFAULT_FN_ATTRS
5165_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5166{
5167 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5168 (__v2di) __B,
5169 (__v8di) __W,
5170 (__mmask8) __U);
5171}
5172
5173static __inline__ __m512i __DEFAULT_FN_ATTRS
5174_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5175{
5176 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5177 (__v2di) __B,
5178 (__v8di)
5179 _mm512_setzero_si512 (),
5180 (__mmask8) __U);
5181}
5182
5183static __inline__ __m512i __DEFAULT_FN_ATTRS
5184_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5185{
5186 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5187 (__v16si) __Y,
5188 (__v16si)
5189 _mm512_setzero_si512 (),
5190 (__mmask16) -1);
5191}
5192
5193static __inline__ __m512i __DEFAULT_FN_ATTRS
5194_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5195{
5196 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5197 (__v16si) __Y,
5198 (__v16si) __W,
5199 (__mmask16) __U);
5200}
5201
5202static __inline__ __m512i __DEFAULT_FN_ATTRS
5203_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5204{
5205 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5206 (__v16si) __Y,
5207 (__v16si)
5208 _mm512_setzero_si512 (),
5209 (__mmask16) __U);
5210}
5211
5212static __inline__ __m512i __DEFAULT_FN_ATTRS
5213_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5214{
5215 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5216 (__v8di) __Y,
5217 (__v8di)
5218 _mm512_setzero_si512 (),
5219 (__mmask8) -1);
5220}
5221
5222static __inline__ __m512i __DEFAULT_FN_ATTRS
5223_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5224{
5225 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5226 (__v8di) __Y,
5227 (__v8di) __W,
5228 (__mmask8) __U);
5229}
5230
5231static __inline__ __m512i __DEFAULT_FN_ATTRS
5232_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5233{
5234 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5235 (__v8di) __Y,
5236 (__v8di)
5237 _mm512_setzero_si512 (),
5238 (__mmask8) __U);
5239}
5240
5241#define _mm512_ternarylogic_epi32( __A, __B, __C, imm) __extension__ ({ \
5242__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
5243 (__v16si)( __B),\
5244 (__v16si)( __C),\
5245 ( imm), (__mmask16) -1);\
5246})
5247
5248#define _mm512_mask_ternarylogic_epi32( __A, __U, __B, __C, imm) __extension__ ({ \
5249__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
5250 (__v16si)( __B),\
5251 (__v16si)( __C),\
5252 ( imm), (__mmask16)( __U));\
5253})
5254
5255#define _mm512_maskz_ternarylogic_epi32( __U, __A, __B, __C, imm) __extension__ ({ \
5256__builtin_ia32_pternlogd512_maskz ((__v16si)( __A),\
5257 (__v16si)( __B),\
5258 (__v16si)( __C),\
5259 ( imm), (__mmask16)( __U));\
5260})
5261
5262#define _mm512_ternarylogic_epi64( __A, __B, __C, imm) __extension__ ({ \
5263__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
5264 (__v8di)( __B),\
5265 (__v8di)( __C),( imm),\
5266 (__mmask8) -1);\
5267})
5268
5269#define _mm512_mask_ternarylogic_epi64( __A, __U, __B, __C, imm) __extension__ ({ \
5270__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
5271 (__v8di)( __B),\
5272 (__v8di)( __C),( imm),\
5273 (__mmask8)( __U));\
5274})
5275
5276#define _mm512_maskz_ternarylogic_epi64( __U, __A, __B, __C, imm) __extension__ ({ \
5277__builtin_ia32_pternlogq512_maskz ((__v8di)( __A),\
5278 (__v8di)( __B),\
5279 (__v8di)( __C),\
5280 ( imm), (__mmask8)( __U));\
5281})
5282
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005283static __inline__ __m512d __DEFAULT_FN_ATTRS
5284_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5285{
5286 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5287 (__v8df) __B,
5288 (__v8df)
5289 _mm512_setzero_pd (),
5290 (__mmask8) __U);
5291}
5292
5293static __inline__ __m512 __DEFAULT_FN_ATTRS
5294_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5295{
5296 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5297 (__v16sf) __B,
5298 (__v16sf) __W,
5299 (__mmask16) __U);
5300}
5301
5302static __inline__ __m512 __DEFAULT_FN_ATTRS
5303_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5304{
5305 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5306 (__v16sf) __B,
5307 (__v16sf)
5308 _mm512_setzero_ps (),
5309 (__mmask16) __U);
5310}
5311
5312static __inline__ __m512d __DEFAULT_FN_ATTRS
5313_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5314{
5315 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5316 (__v8df) __B,
5317 (__v8df) __W,
5318 (__mmask8) __U);
5319}
5320
5321static __inline__ __m512d __DEFAULT_FN_ATTRS
5322_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5323{
5324 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5325 (__v8df) __B,
5326 (__v8df)
5327 _mm512_setzero_pd (),
5328 (__mmask8) __U);
5329}
5330
5331static __inline__ __m512 __DEFAULT_FN_ATTRS
5332_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5333{
5334 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5335 (__v16sf) __B,
5336 (__v16sf) __W,
5337 (__mmask16) __U);
5338}
5339
5340static __inline__ __m512 __DEFAULT_FN_ATTRS
5341_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5342{
5343 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5344 (__v16sf) __B,
5345 (__v16sf)
5346 _mm512_setzero_ps (),
5347 (__mmask16) __U);
5348}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005349
Michael Zuckerman8d161992016-04-10 17:24:03 +00005350#define _mm_cvt_roundsd_i64( __A, __R) __extension__ ({ \
5351__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
5352})
5353
5354#define _mm_cvt_roundsd_si32( __A, __R) __extension__ ({ \
5355__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
5356})
5357
5358#define _mm_cvt_roundsd_i32( __A, __R) __extension__ ({ \
5359__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
5360})
5361
5362#define _mm_cvt_roundsd_u32( __A, __R) __extension__ ({ \
5363__builtin_ia32_vcvtsd2usi32 ((__v2df)( __A),( __R));\
5364})
5365
5366static __inline__ unsigned __DEFAULT_FN_ATTRS
5367_mm_cvtsd_u32 (__m128d __A)
5368{
5369 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5370 _MM_FROUND_CUR_DIRECTION);
5371}
5372
5373#define _mm_cvt_roundsd_u64( __A, __R) __extension__ ({ \
5374__builtin_ia32_vcvtsd2usi64 ((__v2df)( __A),( __R));\
5375})
5376
5377static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5378_mm_cvtsd_u64 (__m128d __A)
5379{
5380 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5381 __A,
5382 _MM_FROUND_CUR_DIRECTION);
5383}
5384
5385#define _mm_cvt_roundss_si32( __A, __R) __extension__ ({ \
5386__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
5387})
5388
5389#define _mm_cvt_roundss_i32( __A, __R) __extension__ ({ \
5390__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
5391})
5392
5393#define _mm_cvt_roundss_si64( __A, __R) __extension__ ({ \
5394__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
5395})
5396
5397#define _mm_cvt_roundss_i64( __A, __R) __extension__ ({ \
5398__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
5399})
5400
5401#define _mm_cvt_roundss_u32( __A, __R) __extension__ ({ \
5402__builtin_ia32_vcvtss2usi32 ((__v4sf)( __A),( __R));\
5403})
5404
5405static __inline__ unsigned __DEFAULT_FN_ATTRS
5406_mm_cvtss_u32 (__m128 __A)
5407{
5408 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5409 _MM_FROUND_CUR_DIRECTION);
5410}
5411
5412#define _mm_cvt_roundss_u64( __A, __R) __extension__ ({ \
5413__builtin_ia32_vcvtss2usi64 ((__v4sf)( __A),( __R));\
5414})
5415
5416static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5417_mm_cvtss_u64 (__m128 __A)
5418{
5419 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5420 __A,
5421 _MM_FROUND_CUR_DIRECTION);
5422}
5423
5424#define _mm_cvtt_roundsd_i32( __A, __R) __extension__ ({ \
5425__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
5426})
5427
5428#define _mm_cvtt_roundsd_si32( __A, __R) __extension__ ({ \
5429__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
5430})
5431
5432static __inline__ int __DEFAULT_FN_ATTRS
5433_mm_cvttsd_i32 (__m128d __A)
5434{
5435 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
5436 _MM_FROUND_CUR_DIRECTION);
5437}
5438
5439#define _mm_cvtt_roundsd_si64( __A, __R) __extension__ ({ \
5440__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
5441})
5442
5443#define _mm_cvtt_roundsd_i64( __A, __R) __extension__ ({ \
5444__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
5445})
5446
5447static __inline__ long long __DEFAULT_FN_ATTRS
5448_mm_cvttsd_i64 (__m128d __A)
5449{
5450 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
5451 _MM_FROUND_CUR_DIRECTION);
5452}
5453
5454#define _mm_cvtt_roundsd_u32( __A, __R) __extension__ ({ \
5455__builtin_ia32_vcvttsd2usi32 ((__v2df)( __A),( __R));\
5456})
5457
5458static __inline__ unsigned __DEFAULT_FN_ATTRS
5459_mm_cvttsd_u32 (__m128d __A)
5460{
5461 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
5462 _MM_FROUND_CUR_DIRECTION);
5463}
5464
5465#define _mm_cvtt_roundsd_u64( __A, __R) __extension__ ({ \
5466__builtin_ia32_vcvttsd2usi64 ((__v2df)( __A),( __R));\
5467})
5468
5469static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5470_mm_cvttsd_u64 (__m128d __A)
5471{
5472 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
5473 __A,
5474 _MM_FROUND_CUR_DIRECTION);
5475}
5476
5477#define _mm_cvtt_roundss_i32( __A, __R) __extension__ ({ \
5478__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
5479})
5480
5481#define _mm_cvtt_roundss_si32( __A, __R) __extension__ ({ \
5482__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
5483})
5484
5485static __inline__ int __DEFAULT_FN_ATTRS
5486_mm_cvttss_i32 (__m128 __A)
5487{
5488 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
5489 _MM_FROUND_CUR_DIRECTION);
5490}
5491
5492#define _mm_cvtt_roundss_i64( __A, __R) __extension__ ({ \
5493__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
5494})
5495
5496#define _mm_cvtt_roundss_si64( __A, __R) __extension__ ({ \
5497__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
5498})
5499
5500static __inline__ long long __DEFAULT_FN_ATTRS
5501_mm_cvttss_i64 (__m128 __A)
5502{
5503 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
5504 _MM_FROUND_CUR_DIRECTION);
5505}
5506
5507#define _mm_cvtt_roundss_u32( __A, __R) __extension__ ({ \
5508__builtin_ia32_vcvttss2usi32 ((__v4sf)( __A),( __R));\
5509})
5510
5511static __inline__ unsigned __DEFAULT_FN_ATTRS
5512_mm_cvttss_u32 (__m128 __A)
5513{
5514 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
5515 _MM_FROUND_CUR_DIRECTION);
5516}
5517
5518#define _mm_cvtt_roundss_u64( __A, __R) __extension__ ({ \
5519__builtin_ia32_vcvttss2usi64 ((__v4sf)( __A),( __R));\
5520})
5521
5522static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5523_mm_cvttss_u64 (__m128 __A)
5524{
5525 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
5526 __A,
5527 _MM_FROUND_CUR_DIRECTION);
5528}
5529
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005530static __inline__ __m512d __DEFAULT_FN_ATTRS
5531_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
5532 __m512d __B)
5533{
5534 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
5535 (__v8di) __I
5536 /* idx */ ,
5537 (__v8df) __B,
5538 (__mmask8) __U);
5539}
5540
5541static __inline__ __m512 __DEFAULT_FN_ATTRS
5542_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
5543 __m512 __B)
5544{
5545 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
5546 (__v16si) __I
5547 /* idx */ ,
5548 (__v16sf) __B,
5549 (__mmask16) __U);
5550}
5551
5552static __inline__ __m512i __DEFAULT_FN_ATTRS
5553_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
5554 __mmask8 __U, __m512i __B)
5555{
5556 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
5557 (__v8di) __I
5558 /* idx */ ,
5559 (__v8di) __B,
5560 (__mmask8) __U);
5561}
5562
5563#define _mm512_permute_pd( __X, __C) __extension__ ({ \
5564__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5565 (__v8df)\
5566 _mm512_undefined_pd (),\
5567 (__mmask8) -1);\
5568})
5569
5570#define _mm512_mask_permute_pd( __W, __U, __X, __C) __extension__ ({ \
5571__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5572 (__v8df)( __W),\
5573 (__mmask8)( __U));\
5574})
5575
5576#define _mm512_maskz_permute_pd( __U, __X, __C) __extension__ ({ \
5577__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5578 (__v8df)\
5579 _mm512_setzero_pd (),\
5580 (__mmask8)( __U));\
5581})
5582
5583#define _mm512_permute_ps( __X, __C) __extension__ ({ \
5584__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5585 (__v16sf)\
5586 _mm512_undefined_ps (),\
5587 (__mmask16) -1);\
5588})
5589
5590#define _mm512_mask_permute_ps( __W, __U, __X, __C) __extension__ ({ \
5591__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5592 (__v16sf)( __W),\
5593 (__mmask16)( __U));\
5594})
5595
5596#define _mm512_maskz_permute_ps( __U, __X, __C) __extension__ ({ \
5597__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5598 (__v16sf)\
5599 _mm512_setzero_ps (),\
5600 (__mmask16)( __U));\
5601})
5602
5603static __inline__ __m512d __DEFAULT_FN_ATTRS
5604_mm512_permutevar_pd (__m512d __A, __m512i __C)
5605{
5606 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5607 (__v8di) __C,
5608 (__v8df)
5609 _mm512_undefined_pd (),
5610 (__mmask8) -1);
5611}
5612
5613static __inline__ __m512d __DEFAULT_FN_ATTRS
5614_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
5615{
5616 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5617 (__v8di) __C,
5618 (__v8df) __W,
5619 (__mmask8) __U);
5620}
5621
5622static __inline__ __m512d __DEFAULT_FN_ATTRS
5623_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
5624{
5625 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5626 (__v8di) __C,
5627 (__v8df)
5628 _mm512_setzero_pd (),
5629 (__mmask8) __U);
5630}
5631
5632static __inline__ __m512 __DEFAULT_FN_ATTRS
5633_mm512_permutevar_ps (__m512 __A, __m512i __C)
5634{
5635 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5636 (__v16si) __C,
5637 (__v16sf)
5638 _mm512_undefined_ps (),
5639 (__mmask16) -1);
5640}
5641
5642static __inline__ __m512 __DEFAULT_FN_ATTRS
5643_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
5644{
5645 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5646 (__v16si) __C,
5647 (__v16sf) __W,
5648 (__mmask16) __U);
5649}
5650
5651static __inline__ __m512 __DEFAULT_FN_ATTRS
5652_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
5653{
5654 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5655 (__v16si) __C,
5656 (__v16sf)
5657 _mm512_setzero_ps (),
5658 (__mmask16) __U);
5659}
5660
5661static __inline__ __m512i __DEFAULT_FN_ATTRS
5662_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
5663 __m512i __I, __m512i __B)
5664{
5665 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
5666 /* idx */ ,
5667 (__v16si) __A,
5668 (__v16si) __B,
5669 (__mmask16) __U);
5670}
5671
5672static __inline__ __m512d __DEFAULT_FN_ATTRS
5673_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
5674 __m512d __B)
5675{
5676 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
5677 /* idx */ ,
5678 (__v8df) __A,
5679 (__v8df) __B,
5680 (__mmask8) __U);
5681}
5682
5683static __inline__ __m512 __DEFAULT_FN_ATTRS
5684_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
5685 __m512 __B)
5686{
5687 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
5688 /* idx */ ,
5689 (__v16sf) __A,
5690 (__v16sf) __B,
5691 (__mmask16) __U);
5692}
5693
5694static __inline__ __m512i __DEFAULT_FN_ATTRS
5695_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
5696 __m512i __I, __m512i __B)
5697{
5698 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
5699 /* idx */ ,
5700 (__v8di) __A,
5701 (__v8di) __B,
5702 (__mmask8) __U);
5703}
5704
Michael Zuckerman07525092016-04-11 10:22:07 +00005705static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5706_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
5707{
5708 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5709 (__v16si) __B,
5710 (__mmask16) -1);
5711}
5712
5713static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5714_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5715{
5716 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5717 (__v16si) __B, __U);
5718}
5719
5720static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5721_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
5722{
5723 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5724 (__v8di) __B,
5725 (__mmask8) -1);
5726}
5727
5728static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5729_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5730{
5731 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5732 (__v8di) __B, __U);
5733}
5734
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00005735#define _mm512_cvtt_roundpd_epu32( __A, __R) __extension__ ({ \
5736__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
5737 (__v8si)\
5738 _mm256_undefined_si256 (),\
5739 (__mmask8) -1,( __R));\
5740})
5741
5742#define _mm512_mask_cvtt_roundpd_epu32( __W, __U, __A, __R) __extension__ ({ \
5743__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
5744 (__v8si)( __W),\
5745 (__mmask8)( __U),( __R));\
5746})
5747
5748#define _mm512_maskz_cvtt_roundpd_epu32( __U, __A, __R) __extension__ ({ \
5749__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
5750 (__v8si)\
5751 _mm256_setzero_si256 (),\
5752 (__mmask8)( __U),( __R));\
5753})
5754
5755static __inline__ __m256i __DEFAULT_FN_ATTRS
5756_mm512_cvttpd_epu32 (__m512d __A)
5757{
5758 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
5759 (__v8si)
5760 _mm256_undefined_si256 (),
5761 (__mmask8) -1,
5762 _MM_FROUND_CUR_DIRECTION);
5763}
5764
5765static __inline__ __m256i __DEFAULT_FN_ATTRS
5766_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
5767{
5768 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
5769 (__v8si) __W,
5770 (__mmask8) __U,
5771 _MM_FROUND_CUR_DIRECTION);
5772}
5773
5774static __inline__ __m256i __DEFAULT_FN_ATTRS
5775_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
5776{
5777 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
5778 (__v8si)
5779 _mm256_setzero_si256 (),
5780 (__mmask8) __U,
5781 _MM_FROUND_CUR_DIRECTION);
5782}
Michael Zuckerman07525092016-04-11 10:22:07 +00005783
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005784static __inline__ __m512i __DEFAULT_FN_ATTRS
5785_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5786 __m512i __B)
5787{
5788 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5789 (__v16si) __B,
5790 (__v16si) __W,
5791 (__mmask16) __U);
5792}
5793
5794static __inline__ __m512i __DEFAULT_FN_ATTRS
5795_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5796{
5797 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5798 (__v16si) __B,
5799 (__v16si)
5800 _mm512_setzero_si512 (),
5801 (__mmask16) __U);
5802}
5803
5804static __inline__ __m512i __DEFAULT_FN_ATTRS
5805_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
5806{
5807 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5808 (__v8di) __B,
5809 (__v8di)
5810 _mm512_setzero_si512 (),
5811 (__mmask8) -1);
5812}
5813
5814static __inline__ __m512i __DEFAULT_FN_ATTRS
5815_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5816{
5817 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5818 (__v8di) __B,
5819 (__v8di) __W,
5820 (__mmask8) __U);
5821}
5822
5823static __inline__ __m512i __DEFAULT_FN_ATTRS
5824_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5825{
5826 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5827 (__v8di) __B,
5828 (__v8di)
5829 _mm512_setzero_si512 (),
5830 (__mmask8) __U);
5831}
5832
5833static __inline__ __m512i __DEFAULT_FN_ATTRS
5834_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
5835{
5836 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5837 (__v16si) __B,
5838 (__v16si)
5839 _mm512_setzero_si512 (),
5840 (__mmask16) -1);
5841}
5842
5843static __inline__ __m512i __DEFAULT_FN_ATTRS
5844_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5845 __m512i __B)
5846{
5847 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5848 (__v16si) __B,
5849 (__v16si) __W,
5850 (__mmask16) __U);
5851}
5852
5853static __inline__ __m512i __DEFAULT_FN_ATTRS
5854_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5855{
5856 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5857 (__v16si) __B,
5858 (__v16si)
5859 _mm512_setzero_si512 (),
5860 (__mmask16) __U);
5861}
5862
5863static __inline__ __m512i __DEFAULT_FN_ATTRS
5864_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
5865{
5866 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5867 (__v8di) __B,
5868 (__v8di)
5869 _mm512_setzero_si512 (),
5870 (__mmask8) -1);
5871}
5872
5873static __inline__ __m512i __DEFAULT_FN_ATTRS
5874_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5875{
5876 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5877 (__v8di) __B,
5878 (__v8di) __W,
5879 (__mmask8) __U);
5880}
5881
5882static __inline__ __m512i __DEFAULT_FN_ATTRS
5883_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5884{
5885 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5886 (__v8di) __B,
5887 (__v8di)
5888 _mm512_setzero_si512 (),
5889 (__mmask8) __U);
5890}
5891
5892#define _mm_roundscale_round_sd( __A, __B, __imm, __R) __extension__ ({ \
5893__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
5894 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5895 (__mmask8) -1,( __imm),( __R));\
5896})
5897
5898#define _mm_roundscale_sd( __A, __B, __imm) __extension__ ({ \
5899__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
5900 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5901 (__mmask8) -1, ( __imm),\
5902 _MM_FROUND_CUR_DIRECTION);\
5903})
5904
5905#define _mm_mask_roundscale_sd( __W, __U, __A, __B, __imm) __extension__ ({ \
5906__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5907 (__v2df)( __B),\
5908 (__v2df)( __W),\
5909 (__mmask8)( __U),\
5910 (__imm),\
5911 _MM_FROUND_CUR_DIRECTION);\
5912})
5913
5914#define _mm_mask_roundscale_round_sd( __W, __U, __A, __B, __I, __R) __extension__ ({ \
5915__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5916 (__v2df)( __B),\
5917 (__v2df)( __W),\
5918 (__mmask8)( __U),\
5919 __I,\
5920 __R);\
5921})
5922
5923#define _mm_maskz_roundscale_sd( __U, __A, __B, __I) __extension__ ({ \
5924__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5925 (__v2df)( __B),\
5926 (__v2df) _mm_setzero_pd (),\
5927 (__mmask8)( __U),\
5928 __I,\
5929 _MM_FROUND_CUR_DIRECTION);\
5930})
5931
5932#define _mm_maskz_roundscale_round_sd( __U, __A, __B, __I, __R) __extension__ ({ \
5933__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5934 (__v2df)( __B),\
5935 (__v2df) _mm_setzero_pd (),\
5936 (__mmask8)( __U),\
5937 __I,\
5938 __R);\
5939})
5940
5941#define _mm_roundscale_round_ss( __A, __B, __imm, __R) __extension__ ({ \
5942__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
5943 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5944 (__mmask8) -1, __imm, __R);\
5945})
5946
5947#define _mm_roundscale_ss( __A, __B, __imm) __extension__ ({ \
5948__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
5949 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5950 (__mmask8) -1, ( __imm),\
5951 _MM_FROUND_CUR_DIRECTION);\
5952})
5953
5954#define _mm_mask_roundscale_ss( __W, __U, __A, __B, __I) __extension__ ({ \
5955__builtin_ia32_rndscaless_round_mask ( (__v4sf) ( __A),\
5956 (__v4sf)( __B),\
5957 (__v4sf)( __W),\
5958 (__mmask8)( __U),\
5959 __I,\
5960 _MM_FROUND_CUR_DIRECTION);\
5961})
5962
5963#define _mm_mask_roundscale_round_ss( __W, __U, __A, __B, __I, __R) __extension__ ({ \
5964__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5965 (__v4sf)( __B),\
5966 (__v4sf)( __W),\
5967 (__mmask8)( __U),\
5968 __I,\
5969 __R);\
5970})
5971
5972#define _mm_maskz_roundscale_ss( __U, __A, __B, __I) __extension__ ({ \
5973__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5974 (__v4sf)( __B),\
5975 (__v4sf) _mm_setzero_ps (),\
5976 (__mmask8)( __U),\
5977 __I,\
5978 _MM_FROUND_CUR_DIRECTION);\
5979})
5980
5981#define _mm_maskz_roundscale_round_ss( __U, __A, __B, __I, __R) __extension__ ({ \
5982__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5983 (__v4sf)( __B),\
5984 (__v4sf) _mm_setzero_ps (),\
5985 (__mmask8)( __U),\
5986 __I,\
5987 __R);\
5988})
5989
5990#define _mm512_scalef_round_pd( __A, __B, __R) __extension__ ({ \
5991__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5992 (__v8df)( __B),\
5993 (__v8df)\
5994 _mm512_undefined_pd (),\
5995 (__mmask8) -1,( __R));\
5996})
5997
5998#define _mm512_mask_scalef_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
5999__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6000 (__v8df)( __B),\
6001 (__v8df)( __W),\
6002 (__mmask8)( __U),( __R));\
6003})
6004
6005#define _mm512_maskz_scalef_round_pd( __U, __A, __B, __R) __extension__ ({ \
6006__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6007 (__v8df)( __B),\
6008 (__v8df)\
6009 _mm512_setzero_pd (),\
6010 (__mmask8)( __U),( __R));\
6011})
6012
6013static __inline__ __m512d __DEFAULT_FN_ATTRS
6014_mm512_scalef_pd (__m512d __A, __m512d __B)
6015{
6016 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6017 (__v8df) __B,
6018 (__v8df)
6019 _mm512_undefined_pd (),
6020 (__mmask8) -1,
6021 _MM_FROUND_CUR_DIRECTION);
6022}
6023
6024static __inline__ __m512d __DEFAULT_FN_ATTRS
6025_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6026{
6027 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6028 (__v8df) __B,
6029 (__v8df) __W,
6030 (__mmask8) __U,
6031 _MM_FROUND_CUR_DIRECTION);
6032}
6033
6034static __inline__ __m512d __DEFAULT_FN_ATTRS
6035_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6036{
6037 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6038 (__v8df) __B,
6039 (__v8df)
6040 _mm512_setzero_pd (),
6041 (__mmask8) __U,
6042 _MM_FROUND_CUR_DIRECTION);
6043}
6044
6045#define _mm512_scalef_round_ps( __A, __B, __R) __extension__ ({ \
6046__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6047 (__v16sf)( __B),\
6048 (__v16sf)\
6049 _mm512_undefined_ps (),\
6050 (__mmask16) -1,( __R));\
6051})
6052
6053#define _mm512_mask_scalef_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
6054__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6055 (__v16sf)( __B),\
6056 (__v16sf)( __W),\
6057 (__mmask16)( __U),( __R));\
6058})
6059
6060#define _mm512_maskz_scalef_round_ps( __U, __A, __B, __R) __extension__ ({ \
6061__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6062 (__v16sf)( __B),\
6063 (__v16sf)\
6064 _mm512_setzero_ps (),\
6065 (__mmask16)( __U),( __R));\
6066})
6067
6068static __inline__ __m512 __DEFAULT_FN_ATTRS
6069_mm512_scalef_ps (__m512 __A, __m512 __B)
6070{
6071 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6072 (__v16sf) __B,
6073 (__v16sf)
6074 _mm512_undefined_ps (),
6075 (__mmask16) -1,
6076 _MM_FROUND_CUR_DIRECTION);
6077}
6078
6079static __inline__ __m512 __DEFAULT_FN_ATTRS
6080_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6081{
6082 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6083 (__v16sf) __B,
6084 (__v16sf) __W,
6085 (__mmask16) __U,
6086 _MM_FROUND_CUR_DIRECTION);
6087}
6088
6089static __inline__ __m512 __DEFAULT_FN_ATTRS
6090_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6091{
6092 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6093 (__v16sf) __B,
6094 (__v16sf)
6095 _mm512_setzero_ps (),
6096 (__mmask16) __U,
6097 _MM_FROUND_CUR_DIRECTION);
6098}
6099
6100#define _mm_scalef_round_sd( __A, __B, __R) __extension__ ({ \
6101__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6102 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6103 (__mmask8) -1,\
6104 ( __R));\
6105})
6106
6107static __inline__ __m128d __DEFAULT_FN_ATTRS
6108_mm_scalef_sd (__m128d __A, __m128d __B)
6109{
6110 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6111 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6112 (__mmask8) -1,
6113 _MM_FROUND_CUR_DIRECTION);
6114}
6115
6116static __inline__ __m128d __DEFAULT_FN_ATTRS
6117_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6118{
6119 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6120 (__v2df) __B,
6121 (__v2df) __W,
6122 (__mmask8) __U,
6123 _MM_FROUND_CUR_DIRECTION);
6124}
6125
6126#define _mm_mask_scalef_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
6127__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6128 (__v2df)( __B), (__v2df) __W,\
6129 (__mmask8) __U,\
6130 ( __R));\
6131})
6132
6133static __inline__ __m128d __DEFAULT_FN_ATTRS
6134_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
6135{
6136 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6137 (__v2df) __B,
6138 (__v2df) _mm_setzero_pd (),
6139 (__mmask8) __U,
6140 _MM_FROUND_CUR_DIRECTION);
6141}
6142
6143#define _mm_maskz_scalef_round_sd( __U, __A, __B, __R) __extension__ ({ \
6144__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6145 (__v2df)( __B), (__v2df) _mm_setzero_pd (),\
6146 (__mmask8) __U,\
6147 ( __R));\
6148})
6149
6150#define _mm_scalef_round_ss( __A, __B, __R) __extension__ ({ \
6151__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6152 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6153 (__mmask8) -1,\
6154 ( __R));\
6155})
6156
6157static __inline__ __m128 __DEFAULT_FN_ATTRS
6158_mm_scalef_ss (__m128 __A, __m128 __B)
6159{
6160 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6161 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6162 (__mmask8) -1,
6163 _MM_FROUND_CUR_DIRECTION);
6164}
6165
6166static __inline__ __m128 __DEFAULT_FN_ATTRS
6167_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6168{
6169 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6170 (__v4sf) __B,
6171 (__v4sf) __W,
6172 (__mmask8) __U,
6173 _MM_FROUND_CUR_DIRECTION);
6174}
6175
6176#define _mm_mask_scalef_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
6177__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6178 (__v4sf)( __B), (__v4sf) __W,\
6179 (__mmask8) __U,\
6180 ( __R));\
6181})
6182
6183static __inline__ __m128 __DEFAULT_FN_ATTRS
6184_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
6185{
6186 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6187 (__v4sf) __B,
6188 (__v4sf) _mm_setzero_ps (),
6189 (__mmask8) __U,
6190 _MM_FROUND_CUR_DIRECTION);
6191}
6192
6193#define _mm_maskz_scalef_round_ss( __U, __A, __B, __R) __extension__ ({ \
6194__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6195 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6196 (__mmask8) __U,\
6197 _MM_FROUND_CUR_DIRECTION);\
6198})
6199
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006200static __inline__ __m512i __DEFAULT_FN_ATTRS
6201_mm512_srai_epi32 (__m512i __A, unsigned int __B)
6202{
6203 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
6204 (__v16si)
6205 _mm512_setzero_si512 (),
6206 (__mmask16) -1);
6207}
6208
6209#define _mm512_mask_srai_epi32( __W, __U, __A, __B) __extension__ ({ \
6210__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
6211 (__v16si)( __W),\
6212 (__mmask16)( __U));\
6213})
6214
6215#define _mm512_maskz_srai_epi32( __U, __A, __B) __extension__ ({ \
6216__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
6217 (__v16si)\
6218 _mm512_setzero_si512 (),\
6219 (__mmask16)( __U));\
6220})
6221
6222#define _mm512_srai_epi64( __A, __B) __extension__ ({ \
6223__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6224 (__v8di)\
6225 _mm512_setzero_si512 (),\
6226 (__mmask8) -1);\
6227})
6228
6229#define _mm512_mask_srai_epi64( __W, __U, __A, __B) __extension__ ({ \
6230__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6231 (__v8di)( __W),\
6232 (__mmask8)( __U));\
6233})
6234
6235#define _mm512_maskz_srai_epi64( __U, __A, __B) __extension__ ({ \
6236__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6237 (__v8di)\
6238 _mm512_setzero_si512 (),\
6239 (__mmask8)( __U));\
6240})
6241
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006242#define _mm512_shuffle_f32x4( __A, __B, __imm) __extension__ ({ \
6243__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6244 (__v16sf)( __B),( __imm),\
6245 (__v16sf)\
6246 _mm512_undefined_ps (),\
6247 (__mmask16) -1);\
6248})
6249
6250#define _mm512_mask_shuffle_f32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6251__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6252 (__v16sf)( __B),( __imm),\
6253 (__v16sf)( __W),\
6254 (__mmask16)( __U));\
6255})
6256
6257#define _mm512_maskz_shuffle_f32x4( __U, __A, __B, __imm) __extension__ ({ \
6258__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6259 (__v16sf)( __B),( __imm),\
6260 (__v16sf)\
6261 _mm512_setzero_ps (),\
6262 (__mmask16)( __U));\
6263})
6264
6265#define _mm512_shuffle_f64x2( __A, __B, __imm) __extension__ ({ \
6266__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6267 (__v8df)( __B),( __imm),\
6268 (__v8df)\
6269 _mm512_undefined_pd (),\
6270 (__mmask8) -1);\
6271})
6272
6273#define _mm512_mask_shuffle_f64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
6274__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6275 (__v8df)( __B),( __imm),\
6276 (__v8df)( __W),\
6277 (__mmask8)( __U));\
6278})
6279
6280#define _mm512_maskz_shuffle_f64x2( __U, __A, __B, __imm) __extension__ ({ \
6281__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6282 (__v8df)( __B),( __imm),\
6283 (__v8df)\
6284 _mm512_setzero_pd (),\
6285 (__mmask8)( __U));\
6286})
6287
6288#define _mm512_shuffle_i32x4( __A, __B, __imm) __extension__ ({ \
6289__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6290 (__v16si)( __B),\
6291 ( __imm),\
6292 (__v16si)\
6293 _mm512_setzero_si512 (),\
6294 (__mmask16) -1);\
6295})
6296
6297#define _mm512_mask_shuffle_i32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6298__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6299 (__v16si)( __B),\
6300 ( __imm),\
6301 (__v16si)( __W),\
6302 (__mmask16)( __U));\
6303})
6304
6305#define _mm512_maskz_shuffle_i32x4( __U, __A, __B, __imm) __extension__ ({ \
6306__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6307 (__v16si)( __B),\
6308 ( __imm),\
6309 (__v16si)\
6310 _mm512_setzero_si512 (),\
6311 (__mmask16)( __U));\
6312})
6313
6314#define _mm512_shuffle_i64x2( __A, __B, __imm) __extension__ ({ \
6315__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6316 (__v8di)( __B),( __imm),\
6317 (__v8di)\
6318 _mm512_setzero_si512 (),\
6319 (__mmask8) -1);\
6320})
6321
6322#define _mm512_mask_shuffle_i64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
6323__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6324 (__v8di)( __B),( __imm),\
6325 (__v8di)( __W),\
6326 (__mmask8)( __U));\
6327})
6328
6329#define _mm512_maskz_shuffle_i64x2( __U, __A, __B, __imm) __extension__ ({ \
6330__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6331 (__v8di)( __B),( __imm),\
6332 (__v8di)\
6333 _mm512_setzero_si512 (),\
6334 (__mmask8)( __U));\
6335})
6336
6337#define _mm512_shuffle_pd( __M, __V, __imm) __extension__ ({ \
6338__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6339 (__v8df)( __V),( __imm),\
6340 (__v8df)\
6341 _mm512_undefined_pd (),\
6342 (__mmask8) -1);\
6343})
6344
6345#define _mm512_mask_shuffle_pd( __W, __U, __M, __V, __imm) __extension__ ({ \
6346__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6347 (__v8df)( __V),( __imm),\
6348 (__v8df)( __W),\
6349 (__mmask8)( __U));\
6350})
6351
6352#define _mm512_maskz_shuffle_pd( __U, __M, __V, __imm) __extension__ ({ \
6353__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6354 (__v8df)( __V),( __imm),\
6355 (__v8df)\
6356 _mm512_setzero_pd (),\
6357 (__mmask8)( __U));\
6358})
6359
6360#define _mm512_shuffle_ps( __M, __V, __imm) __extension__ ({ \
6361__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6362 (__v16sf)( __V),( __imm),\
6363 (__v16sf)\
6364 _mm512_undefined_ps (),\
6365 (__mmask16) -1);\
6366})
6367
6368#define _mm512_mask_shuffle_ps( __W, __U, __M, __V, __imm) __extension__ ({ \
6369__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6370 (__v16sf)( __V),( __imm),\
6371 (__v16sf)( __W),\
6372 (__mmask16)( __U));\
6373})
6374
6375#define _mm512_maskz_shuffle_ps( __U, __M, __V, __imm) __extension__ ({ \
6376__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6377 (__v16sf)( __V),( __imm),\
6378 (__v16sf)\
6379 _mm512_setzero_ps (),\
6380 (__mmask16)( __U));\
6381})
6382
6383#define _mm_sqrt_round_sd( __A, __B, __R) __extension__ ({ \
6384__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6385 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
6386 (__mmask8) -1,\
6387 ( __R));\
6388})
6389
6390static __inline__ __m128d __DEFAULT_FN_ATTRS
6391_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6392{
6393 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6394 (__v2df) __A,
6395 (__v2df) __W,
6396 (__mmask8) __U,
6397 _MM_FROUND_CUR_DIRECTION);
6398}
6399
6400#define _mm_mask_sqrt_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
6401__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6402 (__v2df)( __A),(__v2df) __W,\
6403 (__mmask8) __U,\
6404 ( __R));\
6405})
6406
6407static __inline__ __m128d __DEFAULT_FN_ATTRS
6408_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
6409{
6410 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6411 (__v2df) __A,
6412 (__v2df) _mm_setzero_pd (),
6413 (__mmask8) __U,
6414 _MM_FROUND_CUR_DIRECTION);
6415}
6416
6417#define _mm_maskz_sqrt_round_sd( __U, __A, __B, __R) __extension__ ({ \
6418__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6419 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
6420 (__mmask8) __U,\
6421 ( __R));\
6422})
6423
6424#define _mm_sqrt_round_ss( __A, __B, __R) __extension__ ({ \
6425__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6426 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
6427 (__mmask8) -1,\
6428 ( __R));\
6429})
6430
6431static __inline__ __m128 __DEFAULT_FN_ATTRS
6432_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6433{
6434 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6435 (__v4sf) __A,
6436 (__v4sf) __W,
6437 (__mmask8) __U,
6438 _MM_FROUND_CUR_DIRECTION);
6439}
6440
6441#define _mm_mask_sqrt_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
6442__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6443 (__v4sf)( __A),(__v4sf) __W,\
6444 (__mmask8) __U,\
6445 ( __R));\
6446})
6447
6448static __inline__ __m128 __DEFAULT_FN_ATTRS
6449_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
6450{
6451 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6452 (__v4sf) __B,
6453 (__v4sf) _mm_setzero_ps (),
6454 (__mmask8) __U,
6455 _MM_FROUND_CUR_DIRECTION);
6456}
6457
6458#define _mm_maskz_sqrt_round_ss( __U, __A, __B, __R) __extension__ ({ \
6459__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6460 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
6461 (__mmask8) __U,\
6462 __R);\
6463})
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006464
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006465static __inline__ __m512 __DEFAULT_FN_ATTRS
6466_mm512_broadcast_f32x4 (__m128 __A)
6467{
6468 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6469 (__v16sf)
6470 _mm512_undefined_ps (),
6471 (__mmask16) -1);
6472}
6473
6474static __inline__ __m512 __DEFAULT_FN_ATTRS
6475_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6476{
6477 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6478 (__v16sf) __O,
6479 __M);
6480}
6481
6482static __inline__ __m512 __DEFAULT_FN_ATTRS
6483_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6484{
6485 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6486 (__v16sf)
6487 _mm512_setzero_ps (),
6488 __M);
6489}
6490
6491static __inline__ __m512d __DEFAULT_FN_ATTRS
6492_mm512_broadcast_f64x4 (__m256d __A)
6493{
6494 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6495 (__v8df)
6496 _mm512_undefined_pd (),
6497 (__mmask8) -1);
6498}
6499
6500static __inline__ __m512d __DEFAULT_FN_ATTRS
6501_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6502{
6503 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6504 (__v8df) __O,
6505 __M);
6506}
6507
6508static __inline__ __m512d __DEFAULT_FN_ATTRS
6509_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6510{
6511 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6512 (__v8df)
6513 _mm512_setzero_pd (),
6514 __M);
6515}
6516
6517static __inline__ __m512i __DEFAULT_FN_ATTRS
6518_mm512_broadcast_i32x4 (__m128i __A)
6519{
6520 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6521 (__v16si)
6522 _mm512_undefined_epi32 (),
6523 (__mmask16) -1);
6524}
6525
6526static __inline__ __m512i __DEFAULT_FN_ATTRS
6527_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
6528{
6529 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6530 (__v16si) __O,
6531 __M);
6532}
6533
6534static __inline__ __m512i __DEFAULT_FN_ATTRS
6535_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
6536{
6537 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6538 (__v16si)
6539 _mm512_setzero_si512 (),
6540 __M);
6541}
6542
6543static __inline__ __m512i __DEFAULT_FN_ATTRS
6544_mm512_broadcast_i64x4 (__m256i __A)
6545{
6546 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6547 (__v8di)
6548 _mm512_undefined_epi32 (),
6549 (__mmask8) -1);
6550}
6551
6552static __inline__ __m512i __DEFAULT_FN_ATTRS
6553_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
6554{
6555 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6556 (__v8di) __O,
6557 __M);
6558}
6559
6560static __inline__ __m512i __DEFAULT_FN_ATTRS
6561_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
6562{
6563 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6564 (__v8di)
6565 _mm512_setzero_si512 (),
6566 __M);
6567}
6568
6569static __inline__ __m512d __DEFAULT_FN_ATTRS
6570_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
6571{
6572 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6573 (__v8df) __O, __M);
6574}
6575
6576static __inline__ __m512d __DEFAULT_FN_ATTRS
6577_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6578{
6579 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
6580 (__v8df)
6581 _mm512_setzero_pd (),
6582 __M);
6583}
6584
6585static __inline__ __m512 __DEFAULT_FN_ATTRS
6586_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
6587{
6588 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6589 (__v16sf) __O, __M);
6590}
6591
6592static __inline__ __m512 __DEFAULT_FN_ATTRS
6593_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
6594{
6595 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
6596 (__v16sf)
6597 _mm512_setzero_ps (),
6598 __M);
6599}
6600
Michael Zuckermane1680612016-04-13 15:02:04 +00006601static __inline__ __m128i __DEFAULT_FN_ATTRS
6602_mm512_cvtsepi32_epi8 (__m512i __A)
6603{
6604 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6605 (__v16qi) _mm_undefined_si128 (),
6606 (__mmask16) -1);
6607}
6608
6609static __inline__ __m128i __DEFAULT_FN_ATTRS
6610_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6611{
6612 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6613 (__v16qi) __O, __M);
6614}
6615
6616static __inline__ __m128i __DEFAULT_FN_ATTRS
6617_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
6618{
6619 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
6620 (__v16qi) _mm_setzero_si128 (),
6621 __M);
6622}
6623
6624static __inline__ void __DEFAULT_FN_ATTRS
6625_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6626{
6627 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6628}
6629
6630static __inline__ __m256i __DEFAULT_FN_ATTRS
6631_mm512_cvtsepi32_epi16 (__m512i __A)
6632{
6633 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6634 (__v16hi) _mm256_undefined_si256 (),
6635 (__mmask16) -1);
6636}
6637
6638static __inline__ __m256i __DEFAULT_FN_ATTRS
6639_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6640{
6641 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6642 (__v16hi) __O, __M);
6643}
6644
6645static __inline__ __m256i __DEFAULT_FN_ATTRS
6646_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
6647{
6648 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
6649 (__v16hi) _mm256_setzero_si256 (),
6650 __M);
6651}
6652
6653static __inline__ void __DEFAULT_FN_ATTRS
6654_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6655{
6656 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6657}
6658
6659static __inline__ __m128i __DEFAULT_FN_ATTRS
6660_mm512_cvtsepi64_epi8 (__m512i __A)
6661{
6662 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6663 (__v16qi) _mm_undefined_si128 (),
6664 (__mmask8) -1);
6665}
6666
6667static __inline__ __m128i __DEFAULT_FN_ATTRS
6668_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6669{
6670 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6671 (__v16qi) __O, __M);
6672}
6673
6674static __inline__ __m128i __DEFAULT_FN_ATTRS
6675_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
6676{
6677 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
6678 (__v16qi) _mm_setzero_si128 (),
6679 __M);
6680}
6681
6682static __inline__ void __DEFAULT_FN_ATTRS
6683_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6684{
6685 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6686}
6687
6688static __inline__ __m256i __DEFAULT_FN_ATTRS
6689_mm512_cvtsepi64_epi32 (__m512i __A)
6690{
6691 __v8si __O;
6692 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6693 (__v8si) _mm256_undefined_si256 (),
6694 (__mmask8) -1);
6695}
6696
6697static __inline__ __m256i __DEFAULT_FN_ATTRS
6698_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6699{
6700 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6701 (__v8si) __O, __M);
6702}
6703
6704static __inline__ __m256i __DEFAULT_FN_ATTRS
6705_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
6706{
6707 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
6708 (__v8si) _mm256_setzero_si256 (),
6709 __M);
6710}
6711
6712static __inline__ void __DEFAULT_FN_ATTRS
6713_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
6714{
6715 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
6716}
6717
6718static __inline__ __m128i __DEFAULT_FN_ATTRS
6719_mm512_cvtsepi64_epi16 (__m512i __A)
6720{
6721 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6722 (__v8hi) _mm_undefined_si128 (),
6723 (__mmask8) -1);
6724}
6725
6726static __inline__ __m128i __DEFAULT_FN_ATTRS
6727_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6728{
6729 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6730 (__v8hi) __O, __M);
6731}
6732
6733static __inline__ __m128i __DEFAULT_FN_ATTRS
6734_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
6735{
6736 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
6737 (__v8hi) _mm_setzero_si128 (),
6738 __M);
6739}
6740
6741static __inline__ void __DEFAULT_FN_ATTRS
6742_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
6743{
6744 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
6745}
6746
Michael Zuckermand8715312016-04-14 06:48:09 +00006747static __inline__ __m128i __DEFAULT_FN_ATTRS
6748_mm512_cvtusepi32_epi8 (__m512i __A)
6749{
6750 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6751 (__v16qi) _mm_undefined_si128 (),
6752 (__mmask16) -1);
6753}
6754
6755static __inline__ __m128i __DEFAULT_FN_ATTRS
6756_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6757{
6758 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6759 (__v16qi) __O,
6760 __M);
6761}
6762
6763static __inline__ __m128i __DEFAULT_FN_ATTRS
6764_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
6765{
6766 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6767 (__v16qi) _mm_setzero_si128 (),
6768 __M);
6769}
6770
6771static __inline__ void __DEFAULT_FN_ATTRS
6772_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6773{
6774 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6775}
6776
6777static __inline__ __m256i __DEFAULT_FN_ATTRS
6778_mm512_cvtusepi32_epi16 (__m512i __A)
6779{
6780 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6781 (__v16hi) _mm256_undefined_si256 (),
6782 (__mmask16) -1);
6783}
6784
6785static __inline__ __m256i __DEFAULT_FN_ATTRS
6786_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6787{
6788 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6789 (__v16hi) __O,
6790 __M);
6791}
6792
6793static __inline__ __m256i __DEFAULT_FN_ATTRS
6794_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
6795{
6796 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6797 (__v16hi) _mm256_setzero_si256 (),
6798 __M);
6799}
6800
6801static __inline__ void __DEFAULT_FN_ATTRS
6802_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6803{
6804 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6805}
6806
6807static __inline__ __m128i __DEFAULT_FN_ATTRS
6808_mm512_cvtusepi64_epi8 (__m512i __A)
6809{
6810 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6811 (__v16qi) _mm_undefined_si128 (),
6812 (__mmask8) -1);
6813}
6814
6815static __inline__ __m128i __DEFAULT_FN_ATTRS
6816_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6817{
6818 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6819 (__v16qi) __O,
6820 __M);
6821}
6822
6823static __inline__ __m128i __DEFAULT_FN_ATTRS
6824_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
6825{
6826 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6827 (__v16qi) _mm_setzero_si128 (),
6828 __M);
6829}
6830
6831static __inline__ void __DEFAULT_FN_ATTRS
6832_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6833{
6834 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6835}
6836
6837static __inline__ __m256i __DEFAULT_FN_ATTRS
6838_mm512_cvtusepi64_epi32 (__m512i __A)
6839{
6840 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6841 (__v8si) _mm256_undefined_si256 (),
6842 (__mmask8) -1);
6843}
6844
6845static __inline__ __m256i __DEFAULT_FN_ATTRS
6846_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6847{
6848 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6849 (__v8si) __O, __M);
6850}
6851
6852static __inline__ __m256i __DEFAULT_FN_ATTRS
6853_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
6854{
6855 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6856 (__v8si) _mm256_setzero_si256 (),
6857 __M);
6858}
6859
6860static __inline__ void __DEFAULT_FN_ATTRS
6861_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
6862{
6863 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
6864}
6865
6866static __inline__ __m128i __DEFAULT_FN_ATTRS
6867_mm512_cvtusepi64_epi16 (__m512i __A)
6868{
6869 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6870 (__v8hi) _mm_undefined_si128 (),
6871 (__mmask8) -1);
6872}
6873
6874static __inline__ __m128i __DEFAULT_FN_ATTRS
6875_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6876{
6877 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6878 (__v8hi) __O, __M);
6879}
6880
6881static __inline__ __m128i __DEFAULT_FN_ATTRS
6882_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
6883{
6884 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6885 (__v8hi) _mm_setzero_si128 (),
6886 __M);
6887}
6888
6889static __inline__ void __DEFAULT_FN_ATTRS
6890_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
6891{
6892 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
6893}
6894
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00006895static __inline__ __m128i __DEFAULT_FN_ATTRS
6896_mm512_cvtepi32_epi8 (__m512i __A)
6897{
6898 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6899 (__v16qi) _mm_undefined_si128 (),
6900 (__mmask16) -1);
6901}
6902
6903static __inline__ __m128i __DEFAULT_FN_ATTRS
6904_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6905{
6906 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6907 (__v16qi) __O, __M);
6908}
6909
6910static __inline__ __m128i __DEFAULT_FN_ATTRS
6911_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
6912{
6913 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6914 (__v16qi) _mm_setzero_si128 (),
6915 __M);
6916}
6917
6918static __inline__ void __DEFAULT_FN_ATTRS
6919_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6920{
6921 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6922}
6923
6924static __inline__ __m256i __DEFAULT_FN_ATTRS
6925_mm512_cvtepi32_epi16 (__m512i __A)
6926{
6927 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6928 (__v16hi) _mm256_undefined_si256 (),
6929 (__mmask16) -1);
6930}
6931
6932static __inline__ __m256i __DEFAULT_FN_ATTRS
6933_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6934{
6935 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6936 (__v16hi) __O, __M);
6937}
6938
6939static __inline__ __m256i __DEFAULT_FN_ATTRS
6940_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
6941{
6942 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6943 (__v16hi) _mm256_setzero_si256 (),
6944 __M);
6945}
6946
6947static __inline__ void __DEFAULT_FN_ATTRS
6948_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
6949{
6950 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
6951}
6952
6953static __inline__ __m128i __DEFAULT_FN_ATTRS
6954_mm512_cvtepi64_epi8 (__m512i __A)
6955{
6956 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6957 (__v16qi) _mm_undefined_si128 (),
6958 (__mmask8) -1);
6959}
6960
6961static __inline__ __m128i __DEFAULT_FN_ATTRS
6962_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6963{
6964 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6965 (__v16qi) __O, __M);
6966}
6967
6968static __inline__ __m128i __DEFAULT_FN_ATTRS
6969_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
6970{
6971 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6972 (__v16qi) _mm_setzero_si128 (),
6973 __M);
6974}
6975
6976static __inline__ void __DEFAULT_FN_ATTRS
6977_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6978{
6979 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6980}
6981
6982static __inline__ __m256i __DEFAULT_FN_ATTRS
6983_mm512_cvtepi64_epi32 (__m512i __A)
6984{
6985 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6986 (__v8si) _mm256_undefined_si256 (),
6987 (__mmask8) -1);
6988}
6989
6990static __inline__ __m256i __DEFAULT_FN_ATTRS
6991_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6992{
6993 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6994 (__v8si) __O, __M);
6995}
6996
6997static __inline__ __m256i __DEFAULT_FN_ATTRS
6998_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
6999{
7000 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7001 (__v8si) _mm256_setzero_si256 (),
7002 __M);
7003}
7004
7005static __inline__ void __DEFAULT_FN_ATTRS
7006_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7007{
7008 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7009}
7010
7011static __inline__ __m128i __DEFAULT_FN_ATTRS
7012_mm512_cvtepi64_epi16 (__m512i __A)
7013{
7014 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7015 (__v8hi) _mm_undefined_si128 (),
7016 (__mmask8) -1);
7017}
7018
7019static __inline__ __m128i __DEFAULT_FN_ATTRS
7020_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7021{
7022 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7023 (__v8hi) __O, __M);
7024}
7025
7026static __inline__ __m128i __DEFAULT_FN_ATTRS
7027_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7028{
7029 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7030 (__v8hi) _mm_setzero_si128 (),
7031 __M);
7032}
7033
7034static __inline__ void __DEFAULT_FN_ATTRS
7035_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7036{
7037 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7038}
7039
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007040#define _mm512_extracti32x4_epi32( __A, __imm) __extension__ ({ \
7041__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7042 (__imm),\
7043 (__v4si) _mm_undefined_si128 (),\
7044 (__mmask8) -1);\
7045})
7046
7047#define _mm512_mask_extracti32x4_epi32( __W, __U, __A, __imm) __extension__ ({ \
7048__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7049 ( __imm),\
7050 (__v4si)( __W),\
7051 (__mmask8)( __U));\
7052})
7053
7054#define _mm512_maskz_extracti32x4_epi32( __U, __A, __imm) __extension__ ({ \
7055__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7056 ( __imm),\
7057 (__v4si) _mm_setzero_si128 (),\
7058 (__mmask8)( __U));\
7059})
7060
7061#define _mm512_extracti64x4_epi64( __A, __imm) __extension__ ({ \
7062__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7063 ( __imm),\
7064 (__v4di) _mm256_undefined_si256 (),\
7065 (__mmask8) -1);\
7066})
7067
7068#define _mm512_mask_extracti64x4_epi64( __W, __U, __A, __imm) __extension__ ({ \
7069__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7070 ( __imm),\
7071 (__v4di)( __W),\
7072 (__mmask8)( __U));\
7073})
7074
7075#define _mm512_maskz_extracti64x4_epi64( __U, __A, __imm) __extension__ ({ \
7076__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7077 ( __imm),\
7078 (__v4di) _mm256_setzero_si256 (),\
7079 (__mmask8)( __U));\
7080})
7081
7082#define _mm512_insertf64x4( __A, __B, __imm) __extension__ ({ \
7083__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7084 (__v4df)( __B),\
7085 ( __imm),\
7086 (__v8df) _mm512_undefined_pd (),\
7087 (__mmask8) -1);\
7088})
7089
7090#define _mm512_mask_insertf64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7091__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7092 (__v4df)( __B),\
7093 ( __imm),\
7094 (__v8df)( __W),\
7095 (__mmask8)( __U));\
7096})
7097
7098#define _mm512_maskz_insertf64x4( __U, __A, __B, __imm) __extension__ ({ \
7099__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7100 (__v4df)( __B),\
7101 ( __imm),\
7102 (__v8df) _mm512_setzero_pd (),\
7103 (__mmask8)( __U));\
7104})
7105
7106#define _mm512_inserti64x4( __A, __B, __imm) __extension__ ({ \
7107__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7108 (__v4di)( __B),\
7109 ( __imm),\
7110 (__v8di) _mm512_setzero_si512 (),\
7111 (__mmask8) -1);\
7112})
7113
7114#define _mm512_mask_inserti64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7115__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7116 (__v4di)( __B),\
7117 ( __imm),\
7118 (__v8di)( __W),\
7119 (__mmask8)( __U));\
7120})
7121
7122#define _mm512_maskz_inserti64x4( __U, __A, __B, __imm) __extension__ ({ \
7123__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7124 (__v4di)( __B),\
7125 ( __imm),\
7126 (__v8di) _mm512_setzero_si512 (),\
7127 (__mmask8)( __U));\
7128})
7129
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007130#define _mm512_getmant_round_pd( __A, __B, __C, __R) __extension__ ({ \
7131__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7132 (__C << 2) |( __B),\
7133 (__v8df) _mm512_undefined_pd (),\
7134 (__mmask8) -1,( __R));\
7135})
7136
7137#define _mm512_mask_getmant_round_pd( __W, __U, __A, __B, __C, __R) __extension__ ({ \
7138__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7139 (__C << 2) |( __B),\
7140 (__v8df)( __W),(__mmask8)( __U),\
7141 ( __R));\
7142})
7143
7144#define _mm512_maskz_getmant_round_pd( __U, __A, __B, __C, __R) __extension__ ({ \
7145__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7146 (__C << 2) |( __B),\
7147 (__v8df) _mm512_setzero_pd (),\
7148 (__mmask8)( __U),( __R));\
7149})
7150
7151#define _mm512_getmant_pd( __A, __B, __C) __extension__ ({ \
7152__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7153 (__C << 2) |( __B),\
7154 (__v8df) _mm512_setzero_pd (),\
7155 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);\
7156})
7157
7158#define _mm512_mask_getmant_pd( __W, __U, __A, __B, __C) __extension__ ({ \
7159__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7160 (__C << 2) |( __B),\
7161 (__v8df)( __W), (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
7162})
7163
7164#define _mm512_maskz_getmant_pd( __U, __A, __B, __C) __extension__ ({ \
7165__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7166 (__C << 2) |( __B),\
7167 (__v8df) _mm512_setzero_pd (),\
7168 (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
7169})
7170
7171#define _mm512_getmant_round_ps( __A, __B, __C, __R) __extension__ ({ \
7172__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7173 (__C << 2) |( __B),\
7174 (__v16sf) _mm512_undefined_ps (),\
7175 (__mmask16) -1,( __R));\
7176})
7177
7178#define _mm512_mask_getmant_round_ps( __W, __U, __A, __B, __C, __R) __extension__ ({ \
7179__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7180 (__C << 2) |( __B),\
7181 (__v16sf)( __W),(__mmask16)( __U),\
7182 ( __R));\
7183})
7184
7185#define _mm512_maskz_getmant_round_ps( __U, __A, __B, __C, __R) __extension__ ({ \
7186__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7187 (__C << 2) |( __B),\
7188 (__v16sf) _mm512_setzero_ps (),\
7189 ( __U),( __R));\
7190})
7191
7192#define _mm512_getmant_ps( __A, __B, __C) __extension__ ({ \
7193__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7194 (__C << 2) |( __B),\
7195 (__v16sf) _mm512_undefined_ps (),\
7196 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);\
7197})
7198
7199#define _mm512_mask_getmant_ps( __W, __U, __A, __B, __C) __extension__ ({ \
7200__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7201 (__C << 2) |( __B),\
7202 (__v16sf)( __W),(__mmask16) ( __U),\
7203 _MM_FROUND_CUR_DIRECTION);\
7204})
7205
7206#define _mm512_maskz_getmant_ps( __U, __A, __B, __C) __extension__ ({ \
7207__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7208 (__C << 2) |( __B),\
7209 (__v16sf) _mm512_setzero_ps (),\
7210 (__mmask16)( __U),_MM_FROUND_CUR_DIRECTION);\
7211})
7212
7213#define _mm512_getexp_round_pd( __A, __R) __extension__ ({ \
7214__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7215 (__v8df) _mm512_undefined_pd (),\
7216 (__mmask8) -1,( __R));\
7217})
7218
7219#define _mm512_mask_getexp_round_pd( __W, __U, __A, __R) __extension__ ({ \
7220__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7221 (__v8df)( __W),\
7222 (__mmask8)( __U),( __R));\
7223})
7224
7225#define _mm512_maskz_getexp_round_pd( __U, __A, __R) __extension__ ({ \
7226__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7227 (__v8df) _mm512_setzero_pd (),\
7228 (__mmask8)( __U),( __R));\
7229})
7230
7231static __inline__ __m512d __DEFAULT_FN_ATTRS
7232_mm512_getexp_pd (__m512d __A)
7233{
7234 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7235 (__v8df) _mm512_undefined_pd (),
7236 (__mmask8) -1,
7237 _MM_FROUND_CUR_DIRECTION);
7238}
7239
7240static __inline__ __m512d __DEFAULT_FN_ATTRS
7241_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7242{
7243 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7244 (__v8df) __W,
7245 (__mmask8) __U,
7246 _MM_FROUND_CUR_DIRECTION);
7247}
7248
7249static __inline__ __m512d __DEFAULT_FN_ATTRS
7250_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7251{
7252 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7253 (__v8df) _mm512_setzero_pd (),
7254 (__mmask8) __U,
7255 _MM_FROUND_CUR_DIRECTION);
7256}
7257
7258#define _mm512_getexp_round_ps( __A, __R) __extension__ ({ \
7259__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7260 (__v16sf) _mm512_undefined_ps (),\
7261 (__mmask16) -1,( __R));\
7262})
7263
7264#define _mm512_mask_getexp_round_ps( __W, __U, __A, __R) __extension__ ({ \
7265__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7266 (__v16sf)( __W),\
7267 (__mmask16)( __U),( __R));\
7268})
7269
7270#define _mm512_maskz_getexp_round_ps( __U, __A, __R) __extension__ ({ \
7271__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7272 (__v16sf) _mm512_setzero_ps (),\
7273 (__mmask16)( __U),( __R));\
7274})
7275
7276static __inline__ __m512 __DEFAULT_FN_ATTRS
7277_mm512_getexp_ps (__m512 __A)
7278{
7279 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7280 (__v16sf) _mm512_undefined_ps (),
7281 (__mmask16) -1,
7282 _MM_FROUND_CUR_DIRECTION);
7283}
7284
7285static __inline__ __m512 __DEFAULT_FN_ATTRS
7286_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7287{
7288 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7289 (__v16sf) __W,
7290 (__mmask16) __U,
7291 _MM_FROUND_CUR_DIRECTION);
7292}
7293
7294static __inline__ __m512 __DEFAULT_FN_ATTRS
7295_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7296{
7297 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7298 (__v16sf) _mm512_setzero_ps (),
7299 (__mmask16) __U,
7300 _MM_FROUND_CUR_DIRECTION);
7301}
7302
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007303#define _mm512_i64gather_ps( __index, __addr, __scale) __extension__ ({ \
7304__builtin_ia32_gatherdiv16sf ((__v8sf) _mm256_undefined_ps (),\
7305 __addr, (__v8di) __index, (__mmask8) -1, __scale);\
7306})
7307
7308#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7309 __addr, __scale) __extension__({\
7310__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7311 __addr,(__v8di) __index, __mask, __scale);\
7312})
7313
7314#define _mm512_i64gather_epi32(__index, __addr, __scale) __extension__ ({\
7315__builtin_ia32_gatherdiv16si ((__v8si) _mm256_undefined_ps (),\
7316 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7317})
7318
7319#define _mm512_mask_i64gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7320__builtin_ia32_gatherdiv16si ((__v8si) __v1_old,\
7321 __addr, (__v8di) __index, __mask , __scale);\
7322})
7323
7324#define _mm512_i64gather_pd(__index, __addr, __scale) __extension__ ({\
7325__builtin_ia32_gatherdiv8df ((__v8df) _mm512_undefined_pd(),\
7326 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7327})
7328
7329#define _mm512_mask_i64gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7330__builtin_ia32_gatherdiv8df ((__v8df) __v1_old,\
7331 __addr, (__v8di) __index, __mask , __scale);\
7332})
7333
7334#define _mm512_i64gather_epi64(__index, __addr, __scale) __extension__ ({\
7335__builtin_ia32_gatherdiv8di ((__v8di) _mm512_undefined_pd(),\
7336 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7337})
7338
7339#define _mm512_mask_i64gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7340__builtin_ia32_gatherdiv8di ((__v8di) __v1_old,\
7341 __addr, (__v8di) __index, __mask , __scale);\
7342})
7343
7344#define _mm512_i32gather_ps(__index, __addr, __scale) __extension__ ({\
7345__builtin_ia32_gathersiv16sf ((__v16sf) _mm512_undefined_ps(),\
7346 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
7347})
7348
7349#define _mm512_mask_i32gather_ps( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7350__builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,\
7351 __addr, (__v16si) __index, __mask , __scale);\
7352})
7353
7354#define _mm512_i32gather_epi32(__index, __addr, __scale) __extension__ ({\
7355__builtin_ia32_gathersiv16si ((__v16sf) _mm512_undefined_epi32(),\
7356 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
7357})
7358
7359#define _mm512_mask_i32gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7360__builtin_ia32_gathersiv16si ((__v16sf) __v1_old,\
7361 __addr, (__v16si) __index, __mask , __scale);\
7362})
7363
7364#define _mm512_i32gather_pd(__index, __addr, __scale) __extension__ ({\
7365__builtin_ia32_gathersiv8df ((__v8df) _mm512_undefined_pd(),\
7366 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
7367})
7368
7369#define _mm512_mask_i32gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7370__builtin_ia32_gathersiv8df ((__v8df) __v1_old,\
7371 __addr, (__v8si) __index, __mask , __scale);\
7372})
7373
7374#define _mm512_i32gather_epi64(__index, __addr, __scale) __extension__ ({\
7375__builtin_ia32_gathersiv8di ((__v8di) _mm512_undefined_epi32(),\
7376 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
7377})
7378
7379#define _mm512_mask_i32gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7380__builtin_ia32_gathersiv8di ((__v8di) __v1_old,\
7381 __addr, (__v8si) __index, __mask , __scale);\
7382})
7383
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007384#define _mm512_i64scatter_ps(__addr,__index, __v1, __scale) __extension__ ({\
7385__builtin_ia32_scatterdiv16sf(__addr, (__mmask8) -1,\
7386 (__v8di) __index, (__v8sf) __v1, __scale);\
7387})
7388
7389#define _mm512_mask_i64scatter_ps(__addr, __mask,__index, __v1, __scale) __extension__ ({\
7390__builtin_ia32_scatterdiv16sf(__addr, __mask,\
7391 (__v8di) __index, (__v8sf) __v1, __scale);\
7392})
7393
7394#define _mm512_i64scatter_epi32(__addr, __index, __v1, __scale) __extension__ ({\
7395__builtin_ia32_scatterdiv16si (__addr, (__mmask8) -1,\
7396 (__v8di) __index, (__v8si) __v1, __scale);\
7397})
7398
7399#define _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, __scale) __extension__ ({\
7400__builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,\
7401 (__v8si) __v1, __scale);\
7402})
7403
7404#define _mm512_i64scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
7405__builtin_ia32_scatterdiv8df (__addr, (__mmask8) -1,\
7406 (__v8di) __index, (__v8df) __v1, __scale);\
7407})
7408
7409#define _mm512_mask_i64scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7410__builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,\
7411 (__v8df) __v1, __scale);\
7412})
7413
7414#define _mm512_i64scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
7415__builtin_ia32_scatterdiv8di (__addr, (__mmask8) -1,\
7416 (__v8di) __index, (__v8di) __v1, __scale);\
7417})
7418
7419#define _mm512_mask_i64scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7420__builtin_ia32_scatterdiv8di(__addr, __mask, (__v8di) __index,\
7421 (__v8di) __v1, __scale);\
7422})
7423
7424#define _mm512_i32scatter_ps( __addr, __index, __v1, __scale) __extension__ ({\
7425__builtin_ia32_scattersiv16sf (__addr, (__mmask16) -1,\
7426 (__v16si) __index, (__v16sf) __v1, __scale);\
7427})
7428
7429#define _mm512_mask_i32scatter_ps( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7430__builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,\
7431 (__v16sf) __v1, __scale);\
7432})
7433
7434#define _mm512_i32scatter_epi32( __addr, __index, __v1, __scale) __extension__ ({\
7435__builtin_ia32_scattersiv16si (__addr, (__mmask16) -1,\
7436 (__v16si) __index, (__v16si) __v1, __scale);\
7437})
7438
7439#define _mm512_mask_i32scatter_epi32( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7440__builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,\
7441 (__v16si) __v1, __scale);\
7442})
7443
7444#define _mm512_i32scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
7445__builtin_ia32_scattersiv8df (__addr, (__mmask8) -1,\
7446 (__v8si) __index, (__v8df) __v1, __scale);\
7447})
7448
7449#define _mm512_mask_i32scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7450__builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,\
7451 (__v8df) __v1, __scale);\
7452})
7453
7454#define _mm512_i32scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
7455__builtin_ia32_scattersiv8di (__addr, (__mmask8) -1,\
7456 (__v8si) __index, (__v8di) __v1, __scale);\
7457})
7458
7459#define _mm512_mask_i32scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7460__builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,\
7461 (__v8di) __v1, __scale);\
7462})
7463
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007464static __inline__ __m128 __DEFAULT_FN_ATTRS
7465_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7466{
7467 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7468 (__v4sf) __B,
7469 (__v4sf) __W,
7470 (__mmask8) __U,
7471 _MM_FROUND_CUR_DIRECTION);
7472}
7473
7474#define _mm_mask_fmadd_round_ss( __W, __U, __A, __B, __R) __extension__({\
7475__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
7476 (__v4sf) __B,\
7477 (__v4sf) __W,\
7478 (__mmask8) __U,\
7479 __R);\
7480})
7481
7482static __inline__ __m128 __DEFAULT_FN_ATTRS
7483_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7484{
7485 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7486 (__v4sf) __B,
7487 (__v4sf) __C,
7488 (__mmask8) __U,
7489 _MM_FROUND_CUR_DIRECTION);
7490}
7491
7492#define _mm_maskz_fmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7493__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
7494 (__v4sf) __B,\
7495 (__v4sf) __C,\
7496 (__mmask8) __U,\
7497 _MM_FROUND_CUR_DIRECTION);\
7498})
7499
7500static __inline__ __m128 __DEFAULT_FN_ATTRS
7501_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7502{
7503 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7504 (__v4sf) __X,
7505 (__v4sf) __Y,
7506 (__mmask8) __U,
7507 _MM_FROUND_CUR_DIRECTION);
7508}
7509
7510#define _mm_mask3_fmadd_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
7511__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
7512 (__v4sf) __X,\
7513 (__v4sf) __Y,\
7514 (__mmask8) __U,\
7515 __R);\
7516})
7517
7518static __inline__ __m128 __DEFAULT_FN_ATTRS
7519_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7520{
7521 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7522 (__v4sf) -(__B),
7523 (__v4sf) __W,
7524 (__mmask8) __U,
7525 _MM_FROUND_CUR_DIRECTION);
7526}
7527
7528#define _mm_mask_fmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7529__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
7530 (__v4sf) -(__B),\
7531 (__v4sf) __W,\
7532 (__mmask8) __U,\
7533 __R);\
7534})
7535
7536static __inline__ __m128 __DEFAULT_FN_ATTRS
7537_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7538{
7539 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7540 (__v4sf) __B,
7541 (__v4sf) -(__C),
7542 (__mmask8) __U,
7543 _MM_FROUND_CUR_DIRECTION);
7544}
7545
7546#define _mm_maskz_fmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7547__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
7548 (__v4sf) __B,\
7549 (__v4sf) -(__C),\
7550 (__mmask8) __U,\
7551 __R);\
7552})
7553
7554static __inline__ __m128 __DEFAULT_FN_ATTRS
7555_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7556{
7557 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7558 (__v4sf) __X,
7559 (__v4sf) -(__Y),
7560 (__mmask8) __U,
7561 _MM_FROUND_CUR_DIRECTION);
7562}
7563
7564#define _mm_mask3_fmsub_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
7565__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
7566 (__v4sf) __X,\
7567 (__v4sf) -(__Y),\
7568 (__mmask8) __U,\
7569 __R);\
7570})
7571
7572static __inline__ __m128 __DEFAULT_FN_ATTRS
7573_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7574{
7575 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),
7576 (__v4sf) __B,
7577 (__v4sf) __W,
7578 (__mmask8) __U,
7579 _MM_FROUND_CUR_DIRECTION);
7580}
7581
7582#define _mm_mask_fnmadd_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7583__builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),\
7584 (__v4sf) __B,\
7585 (__v4sf) __W,\
7586 (__mmask8) __U,\
7587 __R);\
7588})
7589
7590static __inline__ __m128 __DEFAULT_FN_ATTRS
7591_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7592{
7593 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),
7594 (__v4sf) __B,
7595 (__v4sf) __C,
7596 (__mmask8) __U,
7597 _MM_FROUND_CUR_DIRECTION);
7598}
7599
7600#define _mm_maskz_fnmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7601__builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),\
7602 (__v4sf) __B,\
7603 (__v4sf) __C,\
7604 (__mmask8) __U,\
7605 __R);\
7606})
7607
7608static __inline__ __m128 __DEFAULT_FN_ATTRS
7609_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7610{
7611 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),
7612 (__v4sf) __X,
7613 (__v4sf) __Y,
7614 (__mmask8) __U,
7615 _MM_FROUND_CUR_DIRECTION);
7616}
7617
7618#define _mm_mask3_fnmadd_round_ss( __W, __X, __Y, __U, __R) __extension__({\
7619__builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),\
7620 (__v4sf) __X,\
7621 (__v4sf) __Y,\
7622 (__mmask8) __U,\
7623 __R);\
7624})
7625
7626static __inline__ __m128 __DEFAULT_FN_ATTRS
7627_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7628{
7629 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),
7630 (__v4sf) -(__B),
7631 (__v4sf) __W,
7632 (__mmask8) __U,
7633 _MM_FROUND_CUR_DIRECTION);
7634}
7635
7636#define _mm_mask_fnmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
7637__builtin_ia32_vfmaddss3_mask ((__v4sf) -(__A),\
7638 (__v4sf) -(__B),\
7639 (__v4sf) __W,\
7640 (__mmask8) __U,\
7641 __R);\
7642})
7643
7644static __inline__ __m128 __DEFAULT_FN_ATTRS
7645_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7646{
7647 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) -(__A),
7648 (__v4sf) __B,
7649 (__v4sf) -(__C),
7650 (__mmask8) __U,
7651 _MM_FROUND_CUR_DIRECTION);
7652}
7653
7654#define _mm_maskz_fnmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7655__builtin_ia32_vfmaddss3_maskz((__v4sf) -(__A),\
7656 (__v4sf) __B,\
7657 (__v4sf) -(__C),\
7658 (__mmask8) __U,\
7659 _MM_FROUND_CUR_DIRECTION);\
7660})
7661
7662static __inline__ __m128 __DEFAULT_FN_ATTRS
7663_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7664{
7665 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),
7666 (__v4sf) __X,
7667 (__v4sf) -(__Y),
7668 (__mmask8) __U,
7669 _MM_FROUND_CUR_DIRECTION);
7670}
7671
7672#define _mm_mask3_fnmsub_round_ss( __W, __X, __Y, __U, __R) __extension__({\
7673__builtin_ia32_vfmaddss3_mask3 ((__v4sf) -(__W),\
7674 (__v4sf) __X,\
7675 (__v4sf) -(__Y),\
7676 (__mmask8) __U,\
7677 __R);\
7678})
7679
7680static __inline__ __m128 __DEFAULT_FN_ATTRS
7681_mm_mask_fmadd_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7682{
7683 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
7684 (__v2df) __B,
7685 (__v2df) __W,
7686 (__mmask8) __U,
7687 _MM_FROUND_CUR_DIRECTION);
7688}
7689
7690#define _mm_mask_fmadd_round_sd( __W, __U, __A, __B, __R) __extension__({\
7691__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
7692 (__v2df) __B,\
7693 (__v2df) __W,\
7694 (__mmask8) __U,\
7695 __R);\
7696})
7697
7698static __inline__ __m128 __DEFAULT_FN_ATTRS
7699_mm_maskz_fmadd_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7700{
7701 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
7702 (__v2df) __B,
7703 (__v2df) __C,
7704 (__mmask8) __U,
7705 _MM_FROUND_CUR_DIRECTION);
7706}
7707
7708#define _mm_maskz_fmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7709__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
7710 (__v2df) __B,\
7711 (__v2df) __C,\
7712 (__mmask8) __U,\
7713 _MM_FROUND_CUR_DIRECTION);\
7714})
7715
7716static __inline__ __m128 __DEFAULT_FN_ATTRS
7717_mm_mask3_fmadd_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7718{
7719 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
7720 (__v2df) __X,
7721 (__v2df) __Y,
7722 (__mmask8) __U,
7723 _MM_FROUND_CUR_DIRECTION);
7724}
7725
7726#define _mm_mask3_fmadd_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
7727__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
7728 (__v2df) __X,\
7729 (__v2df) __Y,\
7730 (__mmask8) __U,\
7731 __R);\
7732})
7733
7734static __inline__ __m128 __DEFAULT_FN_ATTRS
7735_mm_mask_fmsub_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7736{
7737 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
7738 (__v2df) -(__B),
7739 (__v2df) __W,
7740 (__mmask8) __U,
7741 _MM_FROUND_CUR_DIRECTION);
7742}
7743
7744#define _mm_mask_fmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7745__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
7746 (__v2df) -(__B),\
7747 (__v2df) __W,\
7748 (__mmask8) __U,\
7749 __R);\
7750})
7751
7752static __inline__ __m128 __DEFAULT_FN_ATTRS
7753_mm_maskz_fmsub_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7754{
7755 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
7756 (__v2df) __B,
7757 (__v2df) -(__C),
7758 (__mmask8) __U,
7759 _MM_FROUND_CUR_DIRECTION);
7760}
7761
7762#define _mm_maskz_fmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7763__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
7764 (__v2df) __B,\
7765 (__v2df) -(__C),\
7766 (__mmask8) __U,\
7767 __R);\
7768})
7769
7770static __inline__ __m128 __DEFAULT_FN_ATTRS
7771_mm_mask3_fmsub_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7772{
7773 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
7774 (__v2df) __X,
7775 (__v2df) -(__Y),
7776 (__mmask8) __U,
7777 _MM_FROUND_CUR_DIRECTION);
7778}
7779
7780#define _mm_mask3_fmsub_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
7781__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
7782 (__v2df) __X,\
7783 (__v2df) -(__Y),\
7784 (__mmask8) __U, __R);\
7785})
7786
7787static __inline__ __m128 __DEFAULT_FN_ATTRS
7788_mm_mask_fnmadd_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7789{
7790 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),
7791 (__v2df) __B,
7792 (__v2df) __W,
7793 (__mmask8) __U,
7794 _MM_FROUND_CUR_DIRECTION);
7795}
7796
7797#define _mm_mask_fnmadd_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7798__builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),\
7799 (__v2df) __B,\
7800 (__v2df) __W,\
7801 (__mmask8) __U,\
7802 __R);\
7803})
7804
7805static __inline__ __m128 __DEFAULT_FN_ATTRS
7806_mm_maskz_fnmadd_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7807{
7808 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),
7809 (__v2df) __B,
7810 (__v2df) __C,
7811 (__mmask8) __U,
7812 _MM_FROUND_CUR_DIRECTION);
7813}
7814
7815#define _mm_maskz_fnmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7816__builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),\
7817 (__v2df) __B,\
7818 (__v2df) __C,\
7819 (__mmask8) __U,\
7820 __R);\
7821})
7822
7823static __inline__ __m128 __DEFAULT_FN_ATTRS
7824_mm_mask3_fnmadd_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7825{
7826 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),
7827 (__v2df) __X,
7828 (__v2df) __Y,
7829 (__mmask8) __U,
7830 _MM_FROUND_CUR_DIRECTION);
7831}
7832
7833#define _mm_mask3_fnmadd_round_sd( __W, __X, __Y, __U, __R) __extension__({\
7834__builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),\
7835 (__v2df) __X,\
7836 (__v2df) __Y,\
7837 (__mmask8) __U,\
7838 __R);\
7839})
7840
7841static __inline__ __m128 __DEFAULT_FN_ATTRS
7842_mm_mask_fnmsub_sd (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7843{
7844 return (__m128) __builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),
7845 (__v2df) -(__B),
7846 (__v2df) __W,
7847 (__mmask8) __U,
7848 _MM_FROUND_CUR_DIRECTION);
7849}
7850
7851#define _mm_mask_fnmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
7852__builtin_ia32_vfmaddsd3_mask ( (__v2df) -(__A),\
7853 (__v2df) -(__B),\
7854 (__v2df) __W,\
7855 (__mmask8) __U,\
7856 __R);\
7857})
7858
7859static __inline__ __m128 __DEFAULT_FN_ATTRS
7860_mm_maskz_fnmsub_sd (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7861{
7862 return (__m128) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) -(__A),
7863 (__v2df) __B,
7864 (__v2df) -(__C),
7865 (__mmask8) __U,
7866 _MM_FROUND_CUR_DIRECTION);
7867}
7868
7869#define _mm_maskz_fnmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
7870__builtin_ia32_vfmaddsd3_maskz( (__v2df) -(__A),\
7871 (__v2df) __B,\
7872 (__v2df) -(__C),\
7873 (__mmask8) __U,\
7874 _MM_FROUND_CUR_DIRECTION);\
7875})
7876
7877static __inline__ __m128 __DEFAULT_FN_ATTRS
7878_mm_mask3_fnmsub_sd (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7879{
7880 return (__m128) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),
7881 (__v2df) __X,
7882 (__v2df) -(__Y),
7883 (__mmask8) __U,
7884 _MM_FROUND_CUR_DIRECTION);
7885}
7886
7887#define _mm_mask3_fnmsub_round_sd( __W, __X, __Y, __U, __R) __extension__({\
7888__builtin_ia32_vfmaddsd3_mask3 ((__v2df) -(__W),\
7889 (__v2df) __X,\
7890 (__v2df) -(__Y),\
7891 (__mmask8) __U,\
7892 __R);\
7893})
7894
Michael Zuckerman8938e832016-04-25 05:32:35 +00007895#define _mm512_permutex_pd( __X, __M) __extension__ ({ \
7896__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
7897 (__v8df) _mm512_undefined_pd (),\
7898 (__mmask8) -1);\
7899})
7900
7901#define _mm512_mask_permutex_pd( __W, __U, __X, __M) __extension__ ({ \
7902__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
7903 (__v8df)( __W),\
7904 (__mmask8)( __U));\
7905})
7906
7907#define _mm512_maskz_permutex_pd( __U, __X, __M) __extension__ ({ \
7908__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
7909 (__v8df) _mm512_setzero_pd (),\
7910 (__mmask8)( __U));\
7911})
7912
7913#define _mm512_permutex_epi64( __X, __I) __extension__ ({ \
7914__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
7915 (__v8di) _mm512_undefined_epi32 (),\
7916 (__mmask8) (-1));\
7917})
7918
7919#define _mm512_mask_permutex_epi64( __W, __M, __X, __I) __extension__ ({ \
7920__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
7921 (__v8di)( __W),\
7922 (__mmask8)( __M));\
7923})
7924
7925#define _mm512_maskz_permutex_epi64( __M, __X, __I) __extension__ ({ \
7926__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
7927 (__v8di) _mm512_setzero_si512 (),\
7928 (__mmask8)( __M));\
7929})
7930
7931static __inline__ __m512d __DEFAULT_FN_ATTRS
7932_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
7933{
7934 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7935 (__v8di) __X,
7936 (__v8df) _mm512_undefined_pd (),
7937 (__mmask8) -1);
7938}
7939
7940static __inline__ __m512d __DEFAULT_FN_ATTRS
7941_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
7942{
7943 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7944 (__v8di) __X,
7945 (__v8df) __W,
7946 (__mmask8) __U);
7947}
7948
7949static __inline__ __m512d __DEFAULT_FN_ATTRS
7950_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
7951{
7952 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
7953 (__v8di) __X,
7954 (__v8df) _mm512_setzero_pd (),
7955 (__mmask8) __U);
7956}
7957
7958static __inline__ __m512i __DEFAULT_FN_ATTRS
7959_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
7960{
7961 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7962 (__v8di) __X,
7963 (__v8di) _mm512_setzero_si512 (),
7964 __M);
7965}
7966
7967static __inline__ __m512i __DEFAULT_FN_ATTRS
7968_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
7969{
7970 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7971 (__v8di) __X,
7972 (__v8di) _mm512_undefined_epi32 (),
7973 (__mmask8) -1);
7974}
7975
7976static __inline__ __m512i __DEFAULT_FN_ATTRS
7977_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
7978 __m512i __Y)
7979{
7980 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
7981 (__v8di) __X,
7982 (__v8di) __W,
7983 __M);
7984}
7985
7986static __inline__ __m512 __DEFAULT_FN_ATTRS
7987_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
7988{
7989 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7990 (__v16si) __X,
7991 (__v16sf) _mm512_undefined_ps (),
7992 (__mmask16) -1);
7993}
7994
7995static __inline__ __m512 __DEFAULT_FN_ATTRS
7996_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
7997{
7998 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
7999 (__v16si) __X,
8000 (__v16sf) __W,
8001 (__mmask16) __U);
8002}
8003
8004static __inline__ __m512 __DEFAULT_FN_ATTRS
8005_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8006{
8007 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8008 (__v16si) __X,
8009 (__v16sf) _mm512_setzero_ps (),
8010 (__mmask16) __U);
8011}
8012
8013static __inline__ __m512i __DEFAULT_FN_ATTRS
8014_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8015{
8016 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8017 (__v16si) __X,
8018 (__v16si) _mm512_setzero_si512 (),
8019 __M);
8020}
8021
8022static __inline__ __m512i __DEFAULT_FN_ATTRS
8023_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8024{
8025 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8026 (__v16si) __X,
8027 (__v16si) _mm512_undefined_epi32 (),
8028 (__mmask16) -1);
8029}
8030
8031static __inline__ __m512i __DEFAULT_FN_ATTRS
8032_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8033 __m512i __Y)
8034{
8035 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8036 (__v16si) __X,
8037 (__v16si) __W,
8038 __M);
8039}
8040
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008041static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8042_mm512_kand (__mmask16 __A, __mmask16 __B)
8043{
8044 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8045}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008046
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008047static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8048_mm512_kandn (__mmask16 __A, __mmask16 __B)
8049{
8050 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8051}
8052
8053static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8054_mm512_kor (__mmask16 __A, __mmask16 __B)
8055{
8056 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8057}
8058
8059static __inline__ int __DEFAULT_FN_ATTRS
8060_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8061{
8062 return (__mmask16) __builtin_ia32_kortestchi ((__mmask16) __A,
8063 (__mmask16) __B);
8064}
8065
8066static __inline__ int __DEFAULT_FN_ATTRS
8067_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8068{
8069 return (__mmask16) __builtin_ia32_kortestzhi ((__mmask16) __A,
8070 (__mmask16) __B);
8071}
8072
8073static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8074_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8075{
8076 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8077}
8078
8079static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8080_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8081{
8082 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8083}
8084
8085static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8086_mm512_kxor (__mmask16 __A, __mmask16 __B)
8087{
8088 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8089}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008090
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008091static __inline__ void __DEFAULT_FN_ATTRS
8092_mm512_stream_si512 (__m512i * __P, __m512i __A)
8093{
8094 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8095}
8096
8097static __inline__ __m512i __DEFAULT_FN_ATTRS
8098_mm512_stream_load_si512 (void *__P)
8099{
8100 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8101}
8102
8103static __inline__ void __DEFAULT_FN_ATTRS
8104_mm512_stream_pd (double *__P, __m512d __A)
8105{
8106 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8107}
8108
8109static __inline__ void __DEFAULT_FN_ATTRS
8110_mm512_stream_ps (float *__P, __m512 __A)
8111{
8112 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8113}
8114
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008115static __inline__ __m512d __DEFAULT_FN_ATTRS
8116_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8117{
8118 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8119 (__v8df) __W,
8120 (__mmask8) __U);
8121}
8122
8123static __inline__ __m512d __DEFAULT_FN_ATTRS
8124_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8125{
8126 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8127 (__v8df)
8128 _mm512_setzero_pd (),
8129 (__mmask8) __U);
8130}
8131
8132static __inline__ __m512i __DEFAULT_FN_ATTRS
8133_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8134{
8135 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8136 (__v8di) __W,
8137 (__mmask8) __U);
8138}
8139
8140static __inline__ __m512i __DEFAULT_FN_ATTRS
8141_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8142{
8143 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8144 (__v8di)
8145 _mm512_setzero_si512 (),
8146 (__mmask8) __U);
8147}
8148
8149static __inline__ __m512 __DEFAULT_FN_ATTRS
8150_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8151{
8152 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8153 (__v16sf) __W,
8154 (__mmask16) __U);
8155}
8156
8157static __inline__ __m512 __DEFAULT_FN_ATTRS
8158_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8159{
8160 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8161 (__v16sf)
8162 _mm512_setzero_ps (),
8163 (__mmask16) __U);
8164}
8165
8166static __inline__ __m512i __DEFAULT_FN_ATTRS
8167_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8168{
8169 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8170 (__v16si) __W,
8171 (__mmask16) __U);
8172}
8173
8174static __inline__ __m512i __DEFAULT_FN_ATTRS
8175_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8176{
8177 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8178 (__v16si)
8179 _mm512_setzero_si512 (),
8180 (__mmask16) __U);
8181}
8182
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008183#define _mm_cmp_round_ss_mask( __X, __Y, __P, __R) __extension__ ({ \
8184__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8185 (__v4sf)( __Y), __P,\
8186 (__mmask8) -1, __R);\
8187})
8188
8189#define _mm_mask_cmp_round_ss_mask( __M, __X, __Y, __P, __R) __extension__ ({ \
8190__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8191 (__v4sf)( __Y), __P,\
8192 (__mmask8)( __M), __R);\
8193})
8194
8195#define _mm_cmp_ss_mask( __X, __Y, __P) __extension__ ({ \
8196__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8197 (__v4sf)( __Y),( __P),\
8198 (__mmask8) -1,\
8199 _MM_FROUND_CUR_DIRECTION);\
8200})
8201
8202#define _mm_mask_cmp_ss_mask( __M, __X, __Y, __P) __extension__ ({ \
8203__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8204 (__v4sf)( __Y),( __P),\
8205 (__mmask8)( __M),\
8206 _MM_FROUND_CUR_DIRECTION);\
8207})
8208
8209#define _mm_cmp_round_sd_mask( __X, __Y, __P,__R) __extension__ ({ \
8210__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8211 (__v2df)( __Y), __P,\
8212 (__mmask8) -1, __R);\
8213})
8214
8215#define _mm_mask_cmp_round_sd_mask( __M, __X, __Y, __P, __R) __extension__ ({ \
8216__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8217 (__v2df)( __Y), __P,\
8218 (__mmask8)( __M), __R);\
8219})
8220
8221#define _mm_cmp_sd_mask( __X, __Y, __P) __extension__ ({ \
8222__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8223 (__v2df)( __Y),( __P),\
8224 (__mmask8) -1,\
8225 _MM_FROUND_CUR_DIRECTION);\
8226})
8227
8228#define _mm_mask_cmp_sd_mask( __M, __X, __Y, __P) __extension__ ({ \
8229__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8230 (__v2df)( __Y),( __P),\
8231 (__mmask8)( __M),\
8232 _MM_FROUND_CUR_DIRECTION);\
8233})
8234
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008235static __inline__ __m512 __DEFAULT_FN_ATTRS
8236_mm512_movehdup_ps (__m512 __A)
8237{
8238 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8239 (__v16sf)
8240 _mm512_undefined_ps (),
8241 (__mmask16) -1);
8242}
8243
8244static __inline__ __m512 __DEFAULT_FN_ATTRS
8245_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8246{
8247 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8248 (__v16sf) __W,
8249 (__mmask16) __U);
8250}
8251
8252static __inline__ __m512 __DEFAULT_FN_ATTRS
8253_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8254{
8255 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8256 (__v16sf)
8257 _mm512_setzero_ps (),
8258 (__mmask16) __U);
8259}
8260
8261static __inline__ __m512 __DEFAULT_FN_ATTRS
8262_mm512_moveldup_ps (__m512 __A)
8263{
8264 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8265 (__v16sf)
8266 _mm512_undefined_ps (),
8267 (__mmask16) -1);
8268}
8269
8270static __inline__ __m512 __DEFAULT_FN_ATTRS
8271_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8272{
8273 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8274 (__v16sf) __W,
8275 (__mmask16) __U);
8276}
8277
8278static __inline__ __m512 __DEFAULT_FN_ATTRS
8279_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8280{
8281 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8282 (__v16sf)
8283 _mm512_setzero_ps (),
8284 (__mmask16) __U);
8285}
8286
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008287#define _mm512_shuffle_epi32( __A, __I) __extension__ ({ \
8288__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8289 ( __I),\
8290 (__v16si) _mm512_undefined_epi32 (),\
8291 (__mmask16) -1);\
8292})
8293
8294#define _mm512_mask_shuffle_epi32( __W, __U, __A, __I) __extension__ ({ \
8295__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8296 ( __I),\
8297 (__v16si)( __W),\
8298 (__mmask16)( __U));\
8299})
8300
8301#define _mm512_maskz_shuffle_epi32( __U, __A, __I) __extension__ ({ \
8302__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8303 ( __I),\
8304 (__v16si) _mm512_setzero_si512 (),\
8305 (__mmask16)( __U));\
8306})
8307
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008308static __inline__ __m512d __DEFAULT_FN_ATTRS
8309_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8310{
8311 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8312 (__v8df) __W,
8313 (__mmask8) __U);
8314}
8315
8316static __inline__ __m512d __DEFAULT_FN_ATTRS
8317_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8318{
8319 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8320 (__v8df) _mm512_setzero_pd (),
8321 (__mmask8) __U);
8322}
8323
8324static __inline__ __m512i __DEFAULT_FN_ATTRS
8325_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8326{
8327 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8328 (__v8di) __W,
8329 (__mmask8) __U);
8330}
8331
8332static __inline__ __m512i __DEFAULT_FN_ATTRS
8333_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8334{
8335 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8336 (__v8di) _mm512_setzero_pd (),
8337 (__mmask8) __U);
8338}
8339
8340static __inline__ __m512d __DEFAULT_FN_ATTRS
8341_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8342{
8343 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8344 (__v8df) __W,
8345 (__mmask8) __U);
8346}
8347
8348static __inline__ __m512d __DEFAULT_FN_ATTRS
8349_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8350{
8351 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8352 (__v8df) _mm512_setzero_pd(),
8353 (__mmask8) __U);
8354}
8355
8356static __inline__ __m512i __DEFAULT_FN_ATTRS
8357_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8358{
8359 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8360 (__v8di) __W,
8361 (__mmask8) __U);
8362}
8363
8364static __inline__ __m512i __DEFAULT_FN_ATTRS
8365_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8366{
8367 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8368 (__v8di) _mm512_setzero_pd(),
8369 (__mmask8) __U);
8370}
8371
8372static __inline__ __m512 __DEFAULT_FN_ATTRS
8373_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8374{
8375 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8376 (__v16sf) __W,
8377 (__mmask16) __U);
8378}
8379
8380static __inline__ __m512 __DEFAULT_FN_ATTRS
8381_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8382{
8383 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8384 (__v16sf) _mm512_setzero_ps(),
8385 (__mmask16) __U);
8386}
8387
8388static __inline__ __m512i __DEFAULT_FN_ATTRS
8389_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8390{
8391 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8392 (__v16si) __W,
8393 (__mmask16) __U);
8394}
8395
8396static __inline__ __m512i __DEFAULT_FN_ATTRS
8397_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8398{
8399 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8400 (__v16si) _mm512_setzero_ps(),
8401 (__mmask16) __U);
8402}
8403
8404static __inline__ __m512 __DEFAULT_FN_ATTRS
8405_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8406{
8407 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8408 (__v16sf) __W,
8409 (__mmask16) __U);
8410}
8411
8412static __inline__ __m512 __DEFAULT_FN_ATTRS
8413_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8414{
8415 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8416 (__v16sf) _mm512_setzero_ps(),
8417 (__mmask16) __U);
8418}
8419
8420static __inline__ __m512i __DEFAULT_FN_ATTRS
8421_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8422{
8423 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8424 (__v16si) __W,
8425 (__mmask16) __U);
8426}
8427
8428static __inline__ __m512i __DEFAULT_FN_ATTRS
8429_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8430{
8431 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8432 (__v16si) _mm512_setzero_ps(),
8433 (__mmask16) __U);
8434}
8435
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008436#define _mm512_cvt_roundps_pd( __A, __R) __extension__ ({ \
8437__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8438 (__v8df)\
8439 _mm512_undefined_pd (),\
8440 (__mmask8) -1,( __R));\
8441})
8442
8443#define _mm512_mask_cvt_roundps_pd( __W, __U, __A, __R) __extension__ ({ \
8444__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8445 (__v8df)( __W),\
8446 (__mmask8)( __U),( __R));\
8447})
8448
8449#define _mm512_maskz_cvt_roundps_pd( __U, __A, __R) __extension__ ({ \
8450__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8451 (__v8df)\
8452 _mm512_setzero_pd (),\
8453 (__mmask8)( __U),( __R));\
8454})
8455
8456static __inline__ __m512d __DEFAULT_FN_ATTRS
8457_mm512_cvtps_pd (__m256 __A)
8458{
8459 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8460 (__v8df)
8461 _mm512_undefined_pd (),
8462 (__mmask8) -1,
8463 _MM_FROUND_CUR_DIRECTION);
8464}
8465
8466static __inline__ __m512d __DEFAULT_FN_ATTRS
8467_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8468{
8469 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8470 (__v8df) __W,
8471 (__mmask8) __U,
8472 _MM_FROUND_CUR_DIRECTION);
8473}
8474
8475static __inline__ __m512d __DEFAULT_FN_ATTRS
8476_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8477{
8478 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8479 (__v8df)
8480 _mm512_setzero_pd (),
8481 (__mmask8) __U,
8482 _MM_FROUND_CUR_DIRECTION);
8483}
8484
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008485static __inline__ __m512d __DEFAULT_FN_ATTRS
8486_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8487{
8488 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8489 (__v8df) __W,
8490 (__mmask8) __U);
8491}
8492
8493static __inline__ __m512d __DEFAULT_FN_ATTRS
8494_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8495{
8496 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8497 (__v8df)
8498 _mm512_setzero_pd (),
8499 (__mmask8) __U);
8500}
8501
8502static __inline__ __m512 __DEFAULT_FN_ATTRS
8503_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8504{
8505 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8506 (__v16sf) __W,
8507 (__mmask16) __U);
8508}
8509
8510static __inline__ __m512 __DEFAULT_FN_ATTRS
8511_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8512{
8513 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8514 (__v16sf)
8515 _mm512_setzero_ps (),
8516 (__mmask16) __U);
8517}
8518
Michael Zuckerman708e7592016-05-03 10:42:46 +00008519static __inline__ void __DEFAULT_FN_ATTRS
8520_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8521{
8522 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8523 (__mmask8) __U);
8524}
8525
8526static __inline__ void __DEFAULT_FN_ATTRS
8527_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8528{
8529 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8530 (__mmask8) __U);
8531}
8532
8533static __inline__ void __DEFAULT_FN_ATTRS
8534_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8535{
8536 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8537 (__mmask16) __U);
8538}
8539
8540static __inline__ void __DEFAULT_FN_ATTRS
8541_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8542{
8543 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8544 (__mmask16) __U);
8545}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008546
Michael Zuckermane6f73892016-05-04 08:55:11 +00008547#define _mm_cvt_roundsd_ss( __A, __B, __R) __extension__ ({ \
8548__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
8549 (__v2df)( __B),\
8550 (__v4sf) _mm_undefined_ps (),\
8551 (__mmask8) -1,\
8552 ( __R));\
8553})
8554
8555#define _mm_mask_cvt_roundsd_ss( __W, __U, __A, __B, __R) __extension__ ({ \
8556__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
8557 (__v2df)( __B),\
8558 (__v4sf) __W,\
8559 (__mmask8) __U,\
8560 ( __R));\
8561})
8562
8563#define _mm_maskz_cvt_roundsd_ss( __U, __A, __B, __R) __extension__ ({ \
8564__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
8565 (__v2df)( __B),\
8566 (__v4sf) _mm_setzero_ps (),\
8567 (__mmask8) __U,\
8568 ( __R));\
8569})
8570
8571#define _mm_cvt_roundi64_sd( __A, __B, __R) __extension__ ({ \
8572__builtin_ia32_cvtsi2sd64 ((__v2df)( __A),( __B),( __R));\
8573})
8574
8575#define _mm_cvt_roundsi64_sd( __A, __B, __R) __extension__ ({ \
8576__builtin_ia32_cvtsi2sd64 ((__v2df)( __A),( __B),( __R));\
8577})
8578
8579#define _mm_cvt_roundsi32_ss( __A, __B, __R) __extension__ ({ \
8580__builtin_ia32_cvtsi2ss32 ((__v4sf)( __A),( __B),( __R));\
8581})
8582
8583#define _mm_cvt_roundi32_ss( __A, __B, __R) __extension__ ({ \
8584__builtin_ia32_cvtsi2ss32 ((__v4sf)( __A),( __B),( __R));\
8585})
8586
8587#define _mm_cvt_roundsi64_ss( __A, __B, __R) __extension__ ({ \
8588__builtin_ia32_cvtsi2ss64 ((__v4sf)( __A),( __B),( __R));\
8589})
8590
8591#define _mm_cvt_roundi64_ss( __A, __B, __R) __extension__ ({ \
8592__builtin_ia32_cvtsi2ss64 ((__v4sf)( __A),( __B),( __R));\
8593})
8594
8595#define _mm_cvt_roundss_sd( __A, __B, __R) __extension__ ({ \
8596__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
8597 (__v4sf)( __B),\
8598 (__v2df) _mm_undefined_pd (),\
8599 (__mmask8)-1,\
8600 ( __R));\
8601})
8602
8603#define _mm_mask_cvt_roundss_sd(__W, __U,__A, __B, __R) __extension__ ({ \
8604__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
8605 (__v4sf)( __B),\
8606 (__v2df) __W,\
8607 (__mmask8) __U,\
8608 ( __R));\
8609})
8610
8611#define _mm_maskz_cvt_roundss_sd( __U,__A, __B, __R) __extension__ ({ \
8612__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
8613 (__v4sf)( __B),\
8614 (__v2df) _mm_setzero_pd(),\
8615 (__mmask8) __U,\
8616 ( __R));\
8617})
8618
8619static __inline__ __m128d __DEFAULT_FN_ATTRS
8620_mm_cvtu32_sd (__m128d __A, unsigned __B)
8621{
8622 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
8623}
8624
8625#define _mm_cvt_roundu64_sd( __A, __B, __R) __extension__ ({ \
8626__builtin_ia32_cvtusi2sd64 ((__v2df)( __A),( __B),( __R));\
8627})
8628
8629static __inline__ __m128d __DEFAULT_FN_ATTRS
8630_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
8631{
8632 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
8633 _MM_FROUND_CUR_DIRECTION);
8634}
8635
8636#define _mm_cvt_roundu32_ss( __A, __B, __R) __extension__ ({ \
8637__builtin_ia32_cvtusi2ss32 ((__v4sf)( __A),( __B),( __R));\
8638})
8639
8640static __inline__ __m128 __DEFAULT_FN_ATTRS
8641_mm_cvtu32_ss (__m128 __A, unsigned __B)
8642{
8643 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
8644 _MM_FROUND_CUR_DIRECTION);
8645}
8646
8647#define _mm_cvt_roundu64_ss( __A, __B, __R) __extension__ ({ \
8648__builtin_ia32_cvtusi2ss64 ((__v4sf)( __A),( __B),( __R));\
8649})
8650
8651static __inline__ __m128 __DEFAULT_FN_ATTRS
8652_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
8653{
8654 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
8655 _MM_FROUND_CUR_DIRECTION);
8656}
8657
Michael Kupersteine45af542015-06-30 13:36:19 +00008658#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008659
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00008660#endif // __AVX512FINTRIN_H