blob: adceed9e056b4c0bee4c7f0e99a1d691f559537a [file] [log] [blame]
Craig Topper991d4992015-11-03 06:16:31 +00001/*===---- avx512fintrin.h - AVX512F intrinsics -----------------------------===
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23#ifndef __IMMINTRIN_H
24#error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
25#endif
26
27#ifndef __AVX512FINTRIN_H
28#define __AVX512FINTRIN_H
29
30typedef double __v8df __attribute__((__vector_size__(64)));
31typedef float __v16sf __attribute__((__vector_size__(64)));
32typedef long long __v8di __attribute__((__vector_size__(64)));
33typedef int __v16si __attribute__((__vector_size__(64)));
34
35typedef float __m512 __attribute__((__vector_size__(64)));
36typedef double __m512d __attribute__((__vector_size__(64)));
37typedef long long __m512i __attribute__((__vector_size__(64)));
38
39typedef unsigned char __mmask8;
40typedef unsigned short __mmask16;
41
42/* Rounding mode macros. */
43#define _MM_FROUND_TO_NEAREST_INT 0x00
44#define _MM_FROUND_TO_NEG_INF 0x01
45#define _MM_FROUND_TO_POS_INF 0x02
46#define _MM_FROUND_TO_ZERO 0x03
47#define _MM_FROUND_CUR_DIRECTION 0x04
48
Michael Zuckermandef78752016-03-28 12:23:09 +000049typedef enum
50{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000051 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
52 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
53 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
54 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
55 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
56 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
57 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
58 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
59 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
60 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
61 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
62 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
63 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
64 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
65 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
66 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
67 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
68 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
69 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
70 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
71 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
72 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
73 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
74 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
75 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
76 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
77 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
78 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
79 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
80 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
81 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
82 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
83 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
84 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
85 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
86 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
87 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
88 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
89 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
90 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
91 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
92 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
93 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
94 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
95 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
96 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
97 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
98 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
99 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
100 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
101 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
102 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
103 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
104 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
105 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
106 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
107 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
108 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
109 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
110 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
111 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
112 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
113 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
114 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
115 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
116 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
117 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
118 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
119 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
120 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
121 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
122 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
123 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
124 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
125 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
126 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
127 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
128 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
129 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
130 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
131 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
132 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
133 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
134 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
135 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
136 _MM_PERM_DDDD = 0xFF
137} _MM_PERM_ENUM;
138
139typedef enum
140{
Michael Zuckermandef78752016-03-28 12:23:09 +0000141 _MM_MANT_NORM_1_2, /* interval [1, 2) */
142 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
143 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
144 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
145} _MM_MANTISSA_NORM_ENUM;
146
147typedef enum
148{
149 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
150 _MM_MANT_SIGN_zero, /* sign = 0 */
151 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
152} _MM_MANTISSA_SIGN_ENUM;
153
Eric Christopher4d1851682015-06-17 07:09:20 +0000154/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000155#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000156
Adam Nemet0d5bb552014-07-28 17:14:40 +0000157/* Create vectors with repeated elements */
158
Michael Kupersteine45af542015-06-30 13:36:19 +0000159static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000160_mm512_setzero_si512(void)
161{
162 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
163}
164
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000165static __inline__ __m512d __DEFAULT_FN_ATTRS
166_mm512_undefined_pd()
167{
168 return (__m512d)__builtin_ia32_undef512();
169}
170
171static __inline__ __m512 __DEFAULT_FN_ATTRS
172_mm512_undefined()
173{
174 return (__m512)__builtin_ia32_undef512();
175}
176
177static __inline__ __m512 __DEFAULT_FN_ATTRS
178_mm512_undefined_ps()
179{
180 return (__m512)__builtin_ia32_undef512();
181}
182
183static __inline__ __m512i __DEFAULT_FN_ATTRS
184_mm512_undefined_epi32()
185{
186 return (__m512i)__builtin_ia32_undef512();
187}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000188static __inline__ __m512i __DEFAULT_FN_ATTRS
189_mm512_broadcastd_epi32 (__m128i __A)
190{
191 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
192 (__v16si)
193 _mm512_undefined_epi32 (),
194 (__mmask16) -1);
195}
196
197static __inline__ __m512i __DEFAULT_FN_ATTRS
198_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
199{
200 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
201 (__v16si) __O, __M);
202}
203
204static __inline__ __m512i __DEFAULT_FN_ATTRS
205_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
206{
207 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
208 (__v16si)
209 _mm512_setzero_si512 (),
210 __M);
211}
212
213static __inline__ __m512i __DEFAULT_FN_ATTRS
214_mm512_broadcastq_epi64 (__m128i __A)
215{
216 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
217 (__v8di)
218 _mm512_undefined_pd (),
219 (__mmask8) -1);
220}
221
222static __inline__ __m512i __DEFAULT_FN_ATTRS
223_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
224{
225 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
226 (__v8di) __O, __M);
227}
228
229static __inline__ __m512i __DEFAULT_FN_ATTRS
230_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
231{
232 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
233 (__v8di)
234 _mm512_setzero_si512 (),
235 __M);
236}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000237
Michael Kupersteine45af542015-06-30 13:36:19 +0000238static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000239_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
240{
241 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
242 (__v16si)
243 _mm512_setzero_si512 (),
244 __M);
245}
246
Michael Kupersteine45af542015-06-30 13:36:19 +0000247static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000248_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
249{
250#ifdef __x86_64__
251 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
252 (__v8di)
253 _mm512_setzero_si512 (),
254 __M);
255#else
256 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
257 (__v8di)
258 _mm512_setzero_si512 (),
259 __M);
260#endif
261}
262
Michael Kupersteine45af542015-06-30 13:36:19 +0000263static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000264_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000265{
266 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
267 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
268}
Michael Kupersteine45af542015-06-30 13:36:19 +0000269static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000270_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000271{
272 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
273}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000276_mm512_set1_ps(float __w)
277{
278 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
279 __w, __w, __w, __w, __w, __w, __w, __w };
280}
281
Michael Kupersteine45af542015-06-30 13:36:19 +0000282static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000283_mm512_set1_pd(double __w)
284{
285 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
286}
287
Michael Kupersteine45af542015-06-30 13:36:19 +0000288static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000289_mm512_set1_epi32(int __s)
290{
291 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
292 __s, __s, __s, __s, __s, __s, __s, __s };
293}
294
Michael Kupersteine45af542015-06-30 13:36:19 +0000295static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000296_mm512_set1_epi64(long long __d)
297{
298 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
299}
300
Michael Kupersteine45af542015-06-30 13:36:19 +0000301static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000302_mm512_broadcastss_ps(__m128 __X)
303{
304 float __f = __X[0];
305 return (__v16sf){ __f, __f, __f, __f,
306 __f, __f, __f, __f,
307 __f, __f, __f, __f,
308 __f, __f, __f, __f };
309}
310
Michael Kupersteine45af542015-06-30 13:36:19 +0000311static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000312_mm512_broadcastsd_pd(__m128d __X)
313{
314 double __d = __X[0];
315 return (__v8df){ __d, __d, __d, __d,
316 __d, __d, __d, __d };
317}
318
Adam Nemetc871ff92014-07-30 16:51:24 +0000319/* Cast between vector types */
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000322_mm512_castpd256_pd512(__m256d __a)
323{
324 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
325}
326
Michael Kupersteine45af542015-06-30 13:36:19 +0000327static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000328_mm512_castps256_ps512(__m256 __a)
329{
330 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
331 -1, -1, -1, -1, -1, -1, -1, -1);
332}
333
Michael Kupersteine45af542015-06-30 13:36:19 +0000334static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000335_mm512_castpd512_pd128(__m512d __a)
336{
337 return __builtin_shufflevector(__a, __a, 0, 1);
338}
339
Michael Kupersteine45af542015-06-30 13:36:19 +0000340static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000341_mm512_castps512_ps128(__m512 __a)
342{
343 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
344}
345
Michael Zuckermanc6677032016-05-03 14:26:52 +0000346
347static __inline__ __m512d __DEFAULT_FN_ATTRS
348_mm512_castpd128_pd512 (__m128d __A)
349{
350 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
351}
352
353static __inline__ __m512 __DEFAULT_FN_ATTRS
354_mm512_castps128_ps512 (__m128 __A)
355{
356 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
357}
358
359static __inline__ __m512i __DEFAULT_FN_ATTRS
360_mm512_castsi128_si512 (__m128i __A)
361{
362 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
363}
364
365static __inline__ __m512i __DEFAULT_FN_ATTRS
366_mm512_castsi256_si512 (__m256i __A)
367{
368 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
369}
370
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000371/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000372static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000373_mm512_and_epi32(__m512i __a, __m512i __b)
374{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000375 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000376}
377
Michael Kupersteine45af542015-06-30 13:36:19 +0000378static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000379_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
380{
381 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
382 (__v16si) __b,
383 (__v16si) __src,
384 (__mmask16) __k);
385}
Michael Kupersteine45af542015-06-30 13:36:19 +0000386static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000387_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
388{
389 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
390 (__v16si) __b,
391 (__v16si)
392 _mm512_setzero_si512 (),
393 (__mmask16) __k);
394}
395
Michael Kupersteine45af542015-06-30 13:36:19 +0000396static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000397_mm512_and_epi64(__m512i __a, __m512i __b)
398{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000399 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000400}
401
Michael Kupersteine45af542015-06-30 13:36:19 +0000402static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000403_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
404{
405 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
406 (__v8di) __b,
407 (__v8di) __src,
408 (__mmask8) __k);
409}
Michael Kupersteine45af542015-06-30 13:36:19 +0000410static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000411_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
412{
413 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
414 (__v8di) __b,
415 (__v8di)
416 _mm512_setzero_si512 (),
417 (__mmask8) __k);
418}
419
Michael Kupersteine45af542015-06-30 13:36:19 +0000420static __inline__ __m512i __DEFAULT_FN_ATTRS
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000479 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000480}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000503 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000504}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000527 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000528}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000551 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000552}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000575 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000576}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000581 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000582}
583
Michael Kupersteine45af542015-06-30 13:36:19 +0000584static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000585_mm512_xor_si512(__m512i __a, __m512i __b)
586{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000587 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000588}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000594 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000595}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000600 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000601}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000606 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000607}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000612 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000613}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000618 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000619}
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{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000624 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000625}
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
Michael Zuckermande860e52016-05-10 11:34:19 +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 Zuckermande860e52016-05-10 11:34:19 +0000862static __inline__ __m512i __DEFAULT_FN_ATTRS
863_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
864{
865 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
866 (__v16si) __B,
867 (__v16si) __W, __M);
868}
869
870static __inline__ __m512i __DEFAULT_FN_ATTRS
871_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
872{
873 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
874 (__v16si) __B,
875 (__v16si)
876 _mm512_setzero_si512 (),
877 __M);
878}
879
Michael Kupersteine45af542015-06-30 13:36:19 +0000880static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000881_mm512_max_epu32(__m512i __A, __m512i __B)
882{
883 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
884 (__v16si) __B,
885 (__v16si)
886 _mm512_setzero_si512 (),
887 (__mmask16) -1);
888}
889
Michael Zuckermande860e52016-05-10 11:34:19 +0000890static __inline__ __m512i __DEFAULT_FN_ATTRS
891_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
892{
893 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
894 (__v16si) __B,
895 (__v16si) __W, __M);
896}
897
898static __inline__ __m512i __DEFAULT_FN_ATTRS
899_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
900{
901 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
902 (__v16si) __B,
903 (__v16si)
904 _mm512_setzero_si512 (),
905 __M);
906}
907
Michael Kupersteine45af542015-06-30 13:36:19 +0000908static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000909_mm512_max_epi64(__m512i __A, __m512i __B)
910{
911 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
912 (__v8di) __B,
913 (__v8di)
914 _mm512_setzero_si512 (),
915 (__mmask8) -1);
916}
917
Michael Zuckermande860e52016-05-10 11:34:19 +0000918static __inline__ __m512i __DEFAULT_FN_ATTRS
919_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
920{
921 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
922 (__v8di) __B,
923 (__v8di) __W, __M);
924}
925
926static __inline__ __m512i __DEFAULT_FN_ATTRS
927_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
928{
929 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
930 (__v8di) __B,
931 (__v8di)
932 _mm512_setzero_si512 (),
933 __M);
934}
935
Michael Kupersteine45af542015-06-30 13:36:19 +0000936static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000937_mm512_max_epu64(__m512i __A, __m512i __B)
938{
939 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
940 (__v8di) __B,
941 (__v8di)
942 _mm512_setzero_si512 (),
943 (__mmask8) -1);
944}
945
Michael Zuckermande860e52016-05-10 11:34:19 +0000946static __inline__ __m512i __DEFAULT_FN_ATTRS
947_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
948{
949 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
950 (__v8di) __B,
951 (__v8di) __W, __M);
952}
953
954static __inline__ __m512i __DEFAULT_FN_ATTRS
955_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
956{
957 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
958 (__v8di) __B,
959 (__v8di)
960 _mm512_setzero_si512 (),
961 __M);
962}
963
Michael Kupersteine45af542015-06-30 13:36:19 +0000964static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000965_mm512_min_pd(__m512d __A, __m512d __B)
966{
967 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
968 (__v8df) __B,
969 (__v8df)
970 _mm512_setzero_pd (),
971 (__mmask8) -1,
972 _MM_FROUND_CUR_DIRECTION);
973}
974
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000975static __inline__ __m512d __DEFAULT_FN_ATTRS
976_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
977{
978 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
979 (__v8df) __B,
980 (__v8df) __W,
981 (__mmask8) __U,
982 _MM_FROUND_CUR_DIRECTION);
983}
984
985static __inline__ __m512d __DEFAULT_FN_ATTRS
986_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
987{
988 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
989 (__v8df) __B,
990 (__v8df)
991 _mm512_setzero_pd (),
992 (__mmask8) __U,
993 _MM_FROUND_CUR_DIRECTION);
994}
995
Michael Kupersteine45af542015-06-30 13:36:19 +0000996static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000997_mm512_min_ps(__m512 __A, __m512 __B)
998{
999 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1000 (__v16sf) __B,
1001 (__v16sf)
1002 _mm512_setzero_ps (),
1003 (__mmask16) -1,
1004 _MM_FROUND_CUR_DIRECTION);
1005}
1006
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001007static __inline__ __m512 __DEFAULT_FN_ATTRS
1008_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1009{
1010 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1011 (__v16sf) __B,
1012 (__v16sf) __W,
1013 (__mmask16) __U,
1014 _MM_FROUND_CUR_DIRECTION);
1015}
1016
1017static __inline__ __m512 __DEFAULT_FN_ATTRS
1018_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1019{
1020 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1021 (__v16sf) __B,
1022 (__v16sf)
1023 _mm512_setzero_ps (),
1024 (__mmask16) __U,
1025 _MM_FROUND_CUR_DIRECTION);
1026}
1027
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001028static __inline__ __m128 __DEFAULT_FN_ATTRS
1029_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001030 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001031 (__v4sf) __B,
1032 (__v4sf) __W,
1033 (__mmask8) __U,
1034 _MM_FROUND_CUR_DIRECTION);
1035}
1036
1037static __inline__ __m128 __DEFAULT_FN_ATTRS
1038_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001039 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001040 (__v4sf) __B,
1041 (__v4sf) _mm_setzero_ps (),
1042 (__mmask8) __U,
1043 _MM_FROUND_CUR_DIRECTION);
1044}
1045
1046#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001047 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001048 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1049
1050#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001051 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001052 (__v4sf) __W, (__mmask8) __U,__R); })
1053
1054#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001055 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001056 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1057
1058static __inline__ __m128d __DEFAULT_FN_ATTRS
1059_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001060 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001061 (__v2df) __B,
1062 (__v2df) __W,
1063 (__mmask8) __U,
1064 _MM_FROUND_CUR_DIRECTION);
1065}
1066
1067static __inline__ __m128d __DEFAULT_FN_ATTRS
1068_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001069 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001070 (__v2df) __B,
1071 (__v2df) _mm_setzero_pd (),
1072 (__mmask8) __U,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
1076#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001077 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001078 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1079
1080#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001081 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001082 (__v2df) __W, (__mmask8) __U,__R); })
1083
1084#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001085 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001086 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1087
Adam Nemet0d5bb552014-07-28 17:14:40 +00001088static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001089__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001090_mm512_min_epi32(__m512i __A, __m512i __B)
1091{
1092 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1093 (__v16si) __B,
1094 (__v16si)
1095 _mm512_setzero_si512 (),
1096 (__mmask16) -1);
1097}
1098
Michael Zuckermande860e52016-05-10 11:34:19 +00001099static __inline__ __m512i __DEFAULT_FN_ATTRS
1100_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1101{
1102 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1103 (__v16si) __B,
1104 (__v16si) __W, __M);
1105}
1106
1107static __inline__ __m512i __DEFAULT_FN_ATTRS
1108_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1109{
1110 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1111 (__v16si) __B,
1112 (__v16si)
1113 _mm512_setzero_si512 (),
1114 __M);
1115}
1116
Michael Kupersteine45af542015-06-30 13:36:19 +00001117static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001118_mm512_min_epu32(__m512i __A, __m512i __B)
1119{
1120 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1121 (__v16si) __B,
1122 (__v16si)
1123 _mm512_setzero_si512 (),
1124 (__mmask16) -1);
1125}
1126
Michael Zuckermande860e52016-05-10 11:34:19 +00001127static __inline__ __m512i __DEFAULT_FN_ATTRS
1128_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1129{
1130 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1131 (__v16si) __B,
1132 (__v16si) __W, __M);
1133}
1134
1135static __inline__ __m512i __DEFAULT_FN_ATTRS
1136_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1137{
1138 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1139 (__v16si) __B,
1140 (__v16si)
1141 _mm512_setzero_si512 (),
1142 __M);
1143}
1144
Michael Kupersteine45af542015-06-30 13:36:19 +00001145static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001146_mm512_min_epi64(__m512i __A, __m512i __B)
1147{
1148 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1149 (__v8di) __B,
1150 (__v8di)
1151 _mm512_setzero_si512 (),
1152 (__mmask8) -1);
1153}
1154
Michael Zuckermande860e52016-05-10 11:34:19 +00001155static __inline__ __m512i __DEFAULT_FN_ATTRS
1156_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1157{
1158 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1159 (__v8di) __B,
1160 (__v8di) __W, __M);
1161}
1162
1163static __inline__ __m512i __DEFAULT_FN_ATTRS
1164_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1165{
1166 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1167 (__v8di) __B,
1168 (__v8di)
1169 _mm512_setzero_si512 (),
1170 __M);
1171}
1172
Michael Kupersteine45af542015-06-30 13:36:19 +00001173static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001174_mm512_min_epu64(__m512i __A, __m512i __B)
1175{
1176 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1177 (__v8di) __B,
1178 (__v8di)
1179 _mm512_setzero_si512 (),
1180 (__mmask8) -1);
1181}
1182
Michael Zuckermande860e52016-05-10 11:34:19 +00001183static __inline__ __m512i __DEFAULT_FN_ATTRS
1184_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1185{
1186 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1187 (__v8di) __B,
1188 (__v8di) __W, __M);
1189}
1190
1191static __inline__ __m512i __DEFAULT_FN_ATTRS
1192_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1193{
1194 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1195 (__v8di) __B,
1196 (__v8di)
1197 _mm512_setzero_si512 (),
1198 __M);
1199}
1200
Michael Kupersteine45af542015-06-30 13:36:19 +00001201static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001202_mm512_mul_epi32(__m512i __X, __m512i __Y)
1203{
1204 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1205 (__v16si) __Y,
1206 (__v8di)
1207 _mm512_setzero_si512 (),
1208 (__mmask8) -1);
1209}
1210
Michael Kupersteine45af542015-06-30 13:36:19 +00001211static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001212_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1213{
1214 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1215 (__v16si) __Y,
1216 (__v8di) __W, __M);
1217}
1218
Michael Kupersteine45af542015-06-30 13:36:19 +00001219static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001220_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1221{
1222 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1223 (__v16si) __Y,
1224 (__v8di)
1225 _mm512_setzero_si512 (),
1226 __M);
1227}
1228
Michael Kupersteine45af542015-06-30 13:36:19 +00001229static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001230_mm512_mul_epu32(__m512i __X, __m512i __Y)
1231{
1232 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1233 (__v16si) __Y,
1234 (__v8di)
1235 _mm512_setzero_si512 (),
1236 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001237}
1238
Michael Kupersteine45af542015-06-30 13:36:19 +00001239static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001240_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1241{
1242 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1243 (__v16si) __Y,
1244 (__v8di) __W, __M);
1245}
1246
Michael Kupersteine45af542015-06-30 13:36:19 +00001247static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001248_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1249{
1250 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1251 (__v16si) __Y,
1252 (__v8di)
1253 _mm512_setzero_si512 (),
1254 __M);
1255}
1256
Michael Kupersteine45af542015-06-30 13:36:19 +00001257static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001258_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1259{
1260 return (__m512i) ((__v16si) __A * (__v16si) __B);
1261}
1262
Michael Kupersteine45af542015-06-30 13:36:19 +00001263static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001264_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1265{
1266 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1267 (__v16si) __B,
1268 (__v16si)
1269 _mm512_setzero_si512 (),
1270 __M);
1271}
1272
Michael Kupersteine45af542015-06-30 13:36:19 +00001273static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001274_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1275{
1276 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1277 (__v16si) __B,
1278 (__v16si) __W, __M);
1279}
1280
Michael Kupersteine45af542015-06-30 13:36:19 +00001281static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001282_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001283{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001284 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001285 (__v8df) _mm512_setzero_pd (),
1286 (__mmask8) -1,
1287 _MM_FROUND_CUR_DIRECTION);
1288}
1289
Michael Zuckermancb856772016-05-16 11:42:01 +00001290static __inline__ __m512d __DEFAULT_FN_ATTRS
1291_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1292{
1293 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1294 (__v8df) __W,
1295 (__mmask8) __U,
1296 _MM_FROUND_CUR_DIRECTION);
1297}
1298
1299static __inline__ __m512d __DEFAULT_FN_ATTRS
1300_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1301{
1302 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1303 (__v8df)
1304 _mm512_setzero_pd (),
1305 (__mmask8) __U,
1306 _MM_FROUND_CUR_DIRECTION);
1307}
1308
Michael Kupersteine45af542015-06-30 13:36:19 +00001309static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001310_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001311{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001312 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001313 (__v16sf) _mm512_setzero_ps (),
1314 (__mmask16) -1,
1315 _MM_FROUND_CUR_DIRECTION);
1316}
1317
Michael Zuckermancb856772016-05-16 11:42:01 +00001318static __inline__ __m512 __DEFAULT_FN_ATTRS
1319_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1320{
1321 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1322 (__v16sf) __W,
1323 (__mmask16) __U,
1324 _MM_FROUND_CUR_DIRECTION);
1325}
1326
1327static __inline__ __m512 __DEFAULT_FN_ATTRS
1328_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1329{
1330 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1331 (__v16sf) _mm512_setzero_ps (),
1332 (__mmask16) __U,
1333 _MM_FROUND_CUR_DIRECTION);
1334}
1335
Michael Kupersteine45af542015-06-30 13:36:19 +00001336static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001337_mm512_rsqrt14_pd(__m512d __A)
1338{
1339 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1340 (__v8df)
1341 _mm512_setzero_pd (),
1342 (__mmask8) -1);}
1343
Michael Zuckermancb856772016-05-16 11:42:01 +00001344static __inline__ __m512d __DEFAULT_FN_ATTRS
1345_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1346{
1347 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1348 (__v8df) __W,
1349 (__mmask8) __U);
1350}
1351
1352static __inline__ __m512d __DEFAULT_FN_ATTRS
1353_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1354{
1355 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1356 (__v8df)
1357 _mm512_setzero_pd (),
1358 (__mmask8) __U);
1359}
1360
Michael Kupersteine45af542015-06-30 13:36:19 +00001361static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001362_mm512_rsqrt14_ps(__m512 __A)
1363{
1364 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1365 (__v16sf)
1366 _mm512_setzero_ps (),
1367 (__mmask16) -1);
1368}
1369
Michael Zuckermancb856772016-05-16 11:42:01 +00001370static __inline__ __m512 __DEFAULT_FN_ATTRS
1371_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1372{
1373 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1374 (__v16sf) __W,
1375 (__mmask16) __U);
1376}
1377
1378static __inline__ __m512 __DEFAULT_FN_ATTRS
1379_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1380{
1381 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1382 (__v16sf)
1383 _mm512_setzero_ps (),
1384 (__mmask16) __U);
1385}
1386
Michael Kupersteine45af542015-06-30 13:36:19 +00001387static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001388_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1389{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001390 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001391 (__v4sf) __B,
1392 (__v4sf)
1393 _mm_setzero_ps (),
1394 (__mmask8) -1);
1395}
1396
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001397static __inline__ __m128 __DEFAULT_FN_ATTRS
1398_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1399{
1400 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1401 (__v4sf) __B,
1402 (__v4sf) __W,
1403 (__mmask8) __U);
1404}
1405
1406static __inline__ __m128 __DEFAULT_FN_ATTRS
1407_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1408{
1409 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1410 (__v4sf) __B,
1411 (__v4sf) _mm_setzero_ps (),
1412 (__mmask8) __U);
1413}
1414
Michael Kupersteine45af542015-06-30 13:36:19 +00001415static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001416_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1417{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001418 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001419 (__v2df) __B,
1420 (__v2df)
1421 _mm_setzero_pd (),
1422 (__mmask8) -1);
1423}
1424
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001425static __inline__ __m128d __DEFAULT_FN_ATTRS
1426_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1427{
1428 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1429 (__v2df) __B,
1430 (__v2df) __W,
1431 (__mmask8) __U);
1432}
1433
1434static __inline__ __m128d __DEFAULT_FN_ATTRS
1435_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1436{
1437 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1438 (__v2df) __B,
1439 (__v2df) _mm_setzero_pd (),
1440 (__mmask8) __U);
1441}
1442
Michael Kupersteine45af542015-06-30 13:36:19 +00001443static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001444_mm512_rcp14_pd(__m512d __A)
1445{
1446 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1447 (__v8df)
1448 _mm512_setzero_pd (),
1449 (__mmask8) -1);
1450}
1451
Michael Zuckermancb856772016-05-16 11:42:01 +00001452static __inline__ __m512d __DEFAULT_FN_ATTRS
1453_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1454{
1455 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1456 (__v8df) __W,
1457 (__mmask8) __U);
1458}
1459
1460static __inline__ __m512d __DEFAULT_FN_ATTRS
1461_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1462{
1463 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1464 (__v8df)
1465 _mm512_setzero_pd (),
1466 (__mmask8) __U);
1467}
1468
Michael Kupersteine45af542015-06-30 13:36:19 +00001469static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001470_mm512_rcp14_ps(__m512 __A)
1471{
1472 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1473 (__v16sf)
1474 _mm512_setzero_ps (),
1475 (__mmask16) -1);
1476}
Michael Zuckermancb856772016-05-16 11:42:01 +00001477
1478static __inline__ __m512 __DEFAULT_FN_ATTRS
1479_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1480{
1481 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1482 (__v16sf) __W,
1483 (__mmask16) __U);
1484}
1485
1486static __inline__ __m512 __DEFAULT_FN_ATTRS
1487_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1488{
1489 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1490 (__v16sf)
1491 _mm512_setzero_ps (),
1492 (__mmask16) __U);
1493}
1494
Michael Kupersteine45af542015-06-30 13:36:19 +00001495static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001496_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001497{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001498 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001499 (__v4sf) __B,
1500 (__v4sf)
1501 _mm_setzero_ps (),
1502 (__mmask8) -1);
1503}
1504
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001505static __inline__ __m128 __DEFAULT_FN_ATTRS
1506_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1507{
1508 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1509 (__v4sf) __B,
1510 (__v4sf) __W,
1511 (__mmask8) __U);
1512}
1513
1514static __inline__ __m128 __DEFAULT_FN_ATTRS
1515_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1516{
1517 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1518 (__v4sf) __B,
1519 (__v4sf) _mm_setzero_ps (),
1520 (__mmask8) __U);
1521}
1522
Michael Kupersteine45af542015-06-30 13:36:19 +00001523static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001524_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001525{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001526 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001527 (__v2df) __B,
1528 (__v2df)
1529 _mm_setzero_pd (),
1530 (__mmask8) -1);
1531}
1532
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001533static __inline__ __m128d __DEFAULT_FN_ATTRS
1534_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1535{
1536 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1537 (__v2df) __B,
1538 (__v2df) __W,
1539 (__mmask8) __U);
1540}
1541
1542static __inline__ __m128d __DEFAULT_FN_ATTRS
1543_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1544{
1545 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1546 (__v2df) __B,
1547 (__v2df) _mm_setzero_pd (),
1548 (__mmask8) __U);
1549}
1550
Michael Kupersteine45af542015-06-30 13:36:19 +00001551static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001552_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001553{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001554 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1555 _MM_FROUND_FLOOR,
1556 (__v16sf) __A, -1,
1557 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001558}
1559
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001560static __inline__ __m512 __DEFAULT_FN_ATTRS
1561_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1562{
1563 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1564 _MM_FROUND_FLOOR,
1565 (__v16sf) __W, __U,
1566 _MM_FROUND_CUR_DIRECTION);
1567}
1568
1569
Michael Kupersteine45af542015-06-30 13:36:19 +00001570static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001571_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001572{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001573 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1574 _MM_FROUND_FLOOR,
1575 (__v8df) __A, -1,
1576 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001577}
1578
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001579static __inline__ __m512d __DEFAULT_FN_ATTRS
1580_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1581{
1582 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1583 _MM_FROUND_FLOOR,
1584 (__v8df) __W, __U,
1585 _MM_FROUND_CUR_DIRECTION);
1586}
1587
1588
1589static __inline__ __m512 __DEFAULT_FN_ATTRS
1590_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1591{
1592 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1593 _MM_FROUND_CEIL,
1594 (__v16sf) __W, __U,
1595 _MM_FROUND_CUR_DIRECTION);
1596}
1597
Michael Kupersteine45af542015-06-30 13:36:19 +00001598static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001599_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001600{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001601 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1602 _MM_FROUND_CEIL,
1603 (__v16sf) __A, -1,
1604 _MM_FROUND_CUR_DIRECTION);
1605}
1606
Michael Kupersteine45af542015-06-30 13:36:19 +00001607static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001608_mm512_ceil_pd(__m512d __A)
1609{
1610 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1611 _MM_FROUND_CEIL,
1612 (__v8df) __A, -1,
1613 _MM_FROUND_CUR_DIRECTION);
1614}
1615
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001616static __inline__ __m512d __DEFAULT_FN_ATTRS
1617_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1618{
1619 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1620 _MM_FROUND_CEIL,
1621 (__v8df) __W, __U,
1622 _MM_FROUND_CUR_DIRECTION);
1623}
1624
Michael Kupersteine45af542015-06-30 13:36:19 +00001625static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001626_mm512_abs_epi64(__m512i __A)
1627{
1628 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1629 (__v8di)
1630 _mm512_setzero_si512 (),
1631 (__mmask8) -1);
1632}
1633
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001634static __inline__ __m512i __DEFAULT_FN_ATTRS
1635_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1636{
1637 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1638 (__v8di) __W,
1639 (__mmask8) __U);
1640}
1641
1642static __inline__ __m512i __DEFAULT_FN_ATTRS
1643_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1644{
1645 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1646 (__v8di)
1647 _mm512_setzero_si512 (),
1648 (__mmask8) __U);
1649}
1650
Michael Kupersteine45af542015-06-30 13:36:19 +00001651static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001652_mm512_abs_epi32(__m512i __A)
1653{
1654 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1655 (__v16si)
1656 _mm512_setzero_si512 (),
1657 (__mmask16) -1);
1658}
1659
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001660static __inline__ __m512i __DEFAULT_FN_ATTRS
1661_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1662{
1663 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1664 (__v16si) __W,
1665 (__mmask16) __U);
1666}
1667
1668static __inline__ __m512i __DEFAULT_FN_ATTRS
1669_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1670{
1671 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1672 (__v16si)
1673 _mm512_setzero_si512 (),
1674 (__mmask16) __U);
1675}
1676
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001677static __inline__ __m128 __DEFAULT_FN_ATTRS
1678_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001679 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001680 (__v4sf) __B,
1681 (__v4sf) __W,
1682 (__mmask8) __U,
1683 _MM_FROUND_CUR_DIRECTION);
1684}
1685
1686static __inline__ __m128 __DEFAULT_FN_ATTRS
1687_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001688 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001689 (__v4sf) __B,
1690 (__v4sf) _mm_setzero_ps (),
1691 (__mmask8) __U,
1692 _MM_FROUND_CUR_DIRECTION);
1693}
1694
1695#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001696 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001697 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1698
1699#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001700 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001701 (__v4sf) __W, (__mmask8) __U,__R); })
1702
1703#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001704 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001705 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1706
1707static __inline__ __m128d __DEFAULT_FN_ATTRS
1708_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001709 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001710 (__v2df) __B,
1711 (__v2df) __W,
1712 (__mmask8) __U,
1713 _MM_FROUND_CUR_DIRECTION);
1714}
1715
1716static __inline__ __m128d __DEFAULT_FN_ATTRS
1717_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001718 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001719 (__v2df) __B,
1720 (__v2df) _mm_setzero_pd (),
1721 (__mmask8) __U,
1722 _MM_FROUND_CUR_DIRECTION);
1723}
1724#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001725 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001726 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1727
1728#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001729 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001730 (__v2df) __W, (__mmask8) __U,__R); })
1731
1732#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001733 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001734 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1735
Asaf Badouhffeb6242015-07-21 15:27:28 +00001736static __inline__ __m512d __DEFAULT_FN_ATTRS
1737_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1738 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1739 (__v8df) __B,
1740 (__v8df) __W,
1741 (__mmask8) __U,
1742 _MM_FROUND_CUR_DIRECTION);
1743}
1744
1745static __inline__ __m512d __DEFAULT_FN_ATTRS
1746_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1747 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1748 (__v8df) __B,
1749 (__v8df) _mm512_setzero_pd (),
1750 (__mmask8) __U,
1751 _MM_FROUND_CUR_DIRECTION);
1752}
1753
1754static __inline__ __m512 __DEFAULT_FN_ATTRS
1755_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1756 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1757 (__v16sf) __B,
1758 (__v16sf) __W,
1759 (__mmask16) __U,
1760 _MM_FROUND_CUR_DIRECTION);
1761}
1762
1763static __inline__ __m512 __DEFAULT_FN_ATTRS
1764_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1765 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1766 (__v16sf) __B,
1767 (__v16sf) _mm512_setzero_ps (),
1768 (__mmask16) __U,
1769 _MM_FROUND_CUR_DIRECTION);
1770}
1771
1772#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1773 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1774 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1775
1776#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1777 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1778 (__v8df) __W, (__mmask8) __U, __R); })
1779
1780#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1781 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1782 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1783
1784#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1785 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1786 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1787
1788#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1789 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1790 (__v16sf) __W, (__mmask16)__U, __R); })
1791
1792#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1793 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1794 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1795
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001796static __inline__ __m128 __DEFAULT_FN_ATTRS
1797_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001798 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001799 (__v4sf) __B,
1800 (__v4sf) __W,
1801 (__mmask8) __U,
1802 _MM_FROUND_CUR_DIRECTION);
1803}
1804
1805static __inline__ __m128 __DEFAULT_FN_ATTRS
1806_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001807 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001808 (__v4sf) __B,
1809 (__v4sf) _mm_setzero_ps (),
1810 (__mmask8) __U,
1811 _MM_FROUND_CUR_DIRECTION);
1812}
1813#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001814 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001815 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1816
1817#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001818 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001819 (__v4sf) __W, (__mmask8) __U,__R); })
1820
1821#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001822 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001823 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1824
1825static __inline__ __m128d __DEFAULT_FN_ATTRS
1826_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001827 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001828 (__v2df) __B,
1829 (__v2df) __W,
1830 (__mmask8) __U,
1831 _MM_FROUND_CUR_DIRECTION);
1832}
1833
1834static __inline__ __m128d __DEFAULT_FN_ATTRS
1835_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001836 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001837 (__v2df) __B,
1838 (__v2df) _mm_setzero_pd (),
1839 (__mmask8) __U,
1840 _MM_FROUND_CUR_DIRECTION);
1841}
1842
1843#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001844 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001845 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1846
1847#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001848 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001849 (__v2df) __W, (__mmask8) __U,__R); })
1850
1851#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001852 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001853 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1854
Asaf Badouhffeb6242015-07-21 15:27:28 +00001855static __inline__ __m512d __DEFAULT_FN_ATTRS
1856_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1857 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1858 (__v8df) __B,
1859 (__v8df) __W,
1860 (__mmask8) __U,
1861 _MM_FROUND_CUR_DIRECTION);
1862}
1863
1864static __inline__ __m512d __DEFAULT_FN_ATTRS
1865_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1866 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1867 (__v8df) __B,
1868 (__v8df)
1869 _mm512_setzero_pd (),
1870 (__mmask8) __U,
1871 _MM_FROUND_CUR_DIRECTION);
1872}
1873
1874static __inline__ __m512 __DEFAULT_FN_ATTRS
1875_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1876 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1877 (__v16sf) __B,
1878 (__v16sf) __W,
1879 (__mmask16) __U,
1880 _MM_FROUND_CUR_DIRECTION);
1881}
1882
1883static __inline__ __m512 __DEFAULT_FN_ATTRS
1884_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1885 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1886 (__v16sf) __B,
1887 (__v16sf)
1888 _mm512_setzero_ps (),
1889 (__mmask16) __U,
1890 _MM_FROUND_CUR_DIRECTION);
1891}
1892
1893#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1894 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1895 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1896
1897#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1898 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1899 (__v8df) __W, (__mmask8) __U, __R); })
1900
1901#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1902 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1903 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1904
1905#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1906 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1907 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1908
1909#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1910 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1911 (__v16sf) __W, (__mmask16) __U, __R); });
1912
1913#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1914 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1915 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1916
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001917static __inline__ __m128 __DEFAULT_FN_ATTRS
1918_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001919 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001920 (__v4sf) __B,
1921 (__v4sf) __W,
1922 (__mmask8) __U,
1923 _MM_FROUND_CUR_DIRECTION);
1924}
1925
1926static __inline__ __m128 __DEFAULT_FN_ATTRS
1927_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001928 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001929 (__v4sf) __B,
1930 (__v4sf) _mm_setzero_ps (),
1931 (__mmask8) __U,
1932 _MM_FROUND_CUR_DIRECTION);
1933}
1934#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001935 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001936 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1937
1938#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001939 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001940 (__v4sf) __W, (__mmask8) __U,__R); })
1941
1942#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001943 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001944 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1945
1946static __inline__ __m128d __DEFAULT_FN_ATTRS
1947_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001948 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001949 (__v2df) __B,
1950 (__v2df) __W,
1951 (__mmask8) __U,
1952 _MM_FROUND_CUR_DIRECTION);
1953}
1954
1955static __inline__ __m128d __DEFAULT_FN_ATTRS
1956_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001957 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001958 (__v2df) __B,
1959 (__v2df) _mm_setzero_pd (),
1960 (__mmask8) __U,
1961 _MM_FROUND_CUR_DIRECTION);
1962}
1963
1964#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001965 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001966 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1967
1968#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001969 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001970 (__v2df) __W, (__mmask8) __U,__R); })
1971
1972#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001973 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001974 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1975
Asaf Badouhffeb6242015-07-21 15:27:28 +00001976static __inline__ __m512d __DEFAULT_FN_ATTRS
1977_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1978 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1979 (__v8df) __B,
1980 (__v8df) __W,
1981 (__mmask8) __U,
1982 _MM_FROUND_CUR_DIRECTION);
1983}
1984
1985static __inline__ __m512d __DEFAULT_FN_ATTRS
1986_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1987 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1988 (__v8df) __B,
1989 (__v8df)
1990 _mm512_setzero_pd (),
1991 (__mmask8) __U,
1992 _MM_FROUND_CUR_DIRECTION);
1993}
1994
1995static __inline__ __m512 __DEFAULT_FN_ATTRS
1996_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1997 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1998 (__v16sf) __B,
1999 (__v16sf) __W,
2000 (__mmask16) __U,
2001 _MM_FROUND_CUR_DIRECTION);
2002}
2003
2004static __inline__ __m512 __DEFAULT_FN_ATTRS
2005_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2006 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2007 (__v16sf) __B,
2008 (__v16sf)
2009 _mm512_setzero_ps (),
2010 (__mmask16) __U,
2011 _MM_FROUND_CUR_DIRECTION);
2012}
2013
2014#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
2015 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
2016 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
2017
2018#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
2019 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
2020 (__v8df) __W, (__mmask8) __U, __R); })
2021
2022#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
2023 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
2024 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
2025
2026#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
2027 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
2028 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
2029
2030#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
2031 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
2032 (__v16sf) __W, (__mmask16) __U, __R); });
2033
2034#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
2035 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
2036 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
2037
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002038static __inline__ __m128 __DEFAULT_FN_ATTRS
2039_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002040 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002041 (__v4sf) __B,
2042 (__v4sf) __W,
2043 (__mmask8) __U,
2044 _MM_FROUND_CUR_DIRECTION);
2045}
2046
2047static __inline__ __m128 __DEFAULT_FN_ATTRS
2048_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002049 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002050 (__v4sf) __B,
2051 (__v4sf) _mm_setzero_ps (),
2052 (__mmask8) __U,
2053 _MM_FROUND_CUR_DIRECTION);
2054}
2055
2056#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002057 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002058 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
2059
2060#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002061 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002062 (__v4sf) __W, (__mmask8) __U,__R); })
2063
2064#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002065 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002066 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
2067
2068static __inline__ __m128d __DEFAULT_FN_ATTRS
2069_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002070 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002071 (__v2df) __B,
2072 (__v2df) __W,
2073 (__mmask8) __U,
2074 _MM_FROUND_CUR_DIRECTION);
2075}
2076
2077static __inline__ __m128d __DEFAULT_FN_ATTRS
2078_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002079 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002080 (__v2df) __B,
2081 (__v2df) _mm_setzero_pd (),
2082 (__mmask8) __U,
2083 _MM_FROUND_CUR_DIRECTION);
2084}
2085
2086#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002087 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002088 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
2089
2090#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002091 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002092 (__v2df) __W, (__mmask8) __U,__R); })
2093
2094#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002095 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002096 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
2097
Asaf Badouhffeb6242015-07-21 15:27:28 +00002098static __inline__ __m512d __DEFAULT_FN_ATTRS
2099_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2100 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2101 (__v8df) __B,
2102 (__v8df) __W,
2103 (__mmask8) __U,
2104 _MM_FROUND_CUR_DIRECTION);
2105}
2106
2107static __inline__ __m512d __DEFAULT_FN_ATTRS
2108_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2109 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2110 (__v8df) __B,
2111 (__v8df)
2112 _mm512_setzero_pd (),
2113 (__mmask8) __U,
2114 _MM_FROUND_CUR_DIRECTION);
2115}
2116
2117static __inline__ __m512 __DEFAULT_FN_ATTRS
2118_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2119 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2120 (__v16sf) __B,
2121 (__v16sf) __W,
2122 (__mmask16) __U,
2123 _MM_FROUND_CUR_DIRECTION);
2124}
2125
2126static __inline__ __m512 __DEFAULT_FN_ATTRS
2127_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2128 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2129 (__v16sf) __B,
2130 (__v16sf)
2131 _mm512_setzero_ps (),
2132 (__mmask16) __U,
2133 _MM_FROUND_CUR_DIRECTION);
2134}
2135
2136#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
2137 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
2138 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
2139
2140#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
2141 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
2142 (__v8df) __W, (__mmask8) __U, __R); })
2143
2144#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
2145 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
2146 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
2147
2148#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
2149 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
2150 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
2151
2152#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
2153 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
2154 (__v16sf) __W, (__mmask16) __U, __R); });
2155
2156#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
2157 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
2158 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
2159
Craig Topper72c7d512015-02-01 07:35:35 +00002160#define _mm512_roundscale_ps(A, B) __extension__ ({ \
2161 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
2162 -1, _MM_FROUND_CUR_DIRECTION); })
2163
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002164#define _mm512_mask_roundscale_ps( __A, __B, __C, __imm) __extension__ ({\
2165 (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __C, __imm,\
2166 (__v16sf) __A,(__mmask16) __B,\
2167 _MM_FROUND_CUR_DIRECTION);\
2168})
2169
2170#define _mm512_maskz_roundscale_ps( __A, __B, __imm) __extension__ ({\
2171 (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __B, __imm,\
2172 (__v16sf) _mm512_setzero_ps (),\
2173 (__mmask16) __A, _MM_FROUND_CUR_DIRECTION);\
2174})
2175
Craig Topper72c7d512015-02-01 07:35:35 +00002176#define _mm512_roundscale_pd(A, B) __extension__ ({ \
2177 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
2178 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002179
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002180#define _mm512_mask_roundscale_pd(__A, __B, __C, __imm) __extension__ ({\
2181 (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __C, __imm,\
2182 (__v8df) __A, (__mmask8) __B,\
2183 _MM_FROUND_CUR_DIRECTION);\
2184})
2185
2186#define _mm512_maskz_roundscale_pd(__A, __B, __imm) __extension__ ({\
2187 (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __B, __imm,\
2188 (__v8df) _mm512_setzero_pd (),\
2189 (__mmask8) __A, _MM_FROUND_CUR_DIRECTION);\
2190})
2191
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002192#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
2193 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2194 (__v8df) (B), (__v8df) (C), \
2195 (__mmask8) -1, (R)); })
2196
2197
2198#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2199 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2200 (__v8df) (B), (__v8df) (C), \
2201 (__mmask8) (U), (R)); })
2202
2203
2204#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
2205 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
2206 (__v8df) (B), (__v8df) (C), \
2207 (__mmask8) (U), (R)); })
2208
2209
2210#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
2211 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
2212 (__v8df) (B), (__v8df) (C), \
2213 (__mmask8) (U), (R)); })
2214
2215
2216#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
2217 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2218 (__v8df) (B), -(__v8df) (C), \
2219 (__mmask8) -1, (R)); })
2220
2221
2222#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2223 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
2224 (__v8df) (B), -(__v8df) (C), \
2225 (__mmask8) (U), (R)); })
2226
2227
2228#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
2229 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
2230 (__v8df) (B), -(__v8df) (C), \
2231 (__mmask8) (U), (R)); })
2232
2233
2234#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
2235 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
2236 (__v8df) (B), (__v8df) (C), \
2237 (__mmask8) -1, (R)); })
2238
2239
2240#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
2241 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
2242 (__v8df) (B), (__v8df) (C), \
2243 (__mmask8) (U), (R)); })
2244
2245
2246#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
2247 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
2248 (__v8df) (B), (__v8df) (C), \
2249 (__mmask8) (U), (R)); })
2250
2251
2252#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
2253 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
2254 (__v8df) (B), -(__v8df) (C), \
2255 (__mmask8) -1, (R)); })
2256
2257
2258#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
2259 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
2260 (__v8df) (B), -(__v8df) (C), \
2261 (__mmask8) (U), (R)); })
2262
2263
Michael Kupersteine45af542015-06-30 13:36:19 +00002264static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002265_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2266{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002267 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2268 (__v8df) __B,
2269 (__v8df) __C,
2270 (__mmask8) -1,
2271 _MM_FROUND_CUR_DIRECTION);
2272}
2273
Michael Kupersteine45af542015-06-30 13:36:19 +00002274static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002275_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2276{
2277 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2278 (__v8df) __B,
2279 (__v8df) __C,
2280 (__mmask8) __U,
2281 _MM_FROUND_CUR_DIRECTION);
2282}
2283
Michael Kupersteine45af542015-06-30 13:36:19 +00002284static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002285_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2286{
2287 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2288 (__v8df) __B,
2289 (__v8df) __C,
2290 (__mmask8) __U,
2291 _MM_FROUND_CUR_DIRECTION);
2292}
2293
Michael Kupersteine45af542015-06-30 13:36:19 +00002294static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002295_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2296{
2297 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2298 (__v8df) __B,
2299 (__v8df) __C,
2300 (__mmask8) __U,
2301 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002302}
2303
Michael Kupersteine45af542015-06-30 13:36:19 +00002304static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002305_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2306{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002307 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2308 (__v8df) __B,
2309 -(__v8df) __C,
2310 (__mmask8) -1,
2311 _MM_FROUND_CUR_DIRECTION);
2312}
2313
Michael Kupersteine45af542015-06-30 13:36:19 +00002314static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002315_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2316{
2317 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2318 (__v8df) __B,
2319 -(__v8df) __C,
2320 (__mmask8) __U,
2321 _MM_FROUND_CUR_DIRECTION);
2322}
2323
Michael Kupersteine45af542015-06-30 13:36:19 +00002324static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002325_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2326{
2327 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2328 (__v8df) __B,
2329 -(__v8df) __C,
2330 (__mmask8) __U,
2331 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002332}
2333
Michael Kupersteine45af542015-06-30 13:36:19 +00002334static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002335_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2336{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002337 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2338 (__v8df) __B,
2339 (__v8df) __C,
2340 (__mmask8) -1,
2341 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002342}
2343
Michael Kupersteine45af542015-06-30 13:36:19 +00002344static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002345_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2346{
2347 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__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_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2356{
2357 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__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_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2366{
2367 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2368 (__v8df) __B,
2369 -(__v8df) __C,
2370 (__mmask8) -1,
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_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2376{
2377 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2378 (__v8df) __B,
2379 -(__v8df) __C,
2380 (__mmask8) __U,
2381 _MM_FROUND_CUR_DIRECTION);
2382}
2383
2384#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
2385 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2386 (__v16sf) (B), (__v16sf) (C), \
2387 (__mmask16) -1, (R)); })
2388
2389
2390#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2391 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2392 (__v16sf) (B), (__v16sf) (C), \
2393 (__mmask16) (U), (R)); })
2394
2395
2396#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
2397 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
2398 (__v16sf) (B), (__v16sf) (C), \
2399 (__mmask16) (U), (R)); })
2400
2401
2402#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
2403 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
2404 (__v16sf) (B), (__v16sf) (C), \
2405 (__mmask16) (U), (R)); })
2406
2407
2408#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
2409 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2410 (__v16sf) (B), -(__v16sf) (C), \
2411 (__mmask16) -1, (R)); })
2412
2413
2414#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2415 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
2416 (__v16sf) (B), -(__v16sf) (C), \
2417 (__mmask16) (U), (R)); })
2418
2419
2420#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
2421 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
2422 (__v16sf) (B), -(__v16sf) (C), \
2423 (__mmask16) (U), (R)); })
2424
2425
2426#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
2427 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
2428 (__v16sf) (B), (__v16sf) (C), \
2429 (__mmask16) -1, (R)); })
2430
2431
2432#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
2433 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
2434 (__v16sf) (B), (__v16sf) (C), \
2435 (__mmask16) (U), (R)); })
2436
2437
2438#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
2439 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
2440 (__v16sf) (B), (__v16sf) (C), \
2441 (__mmask16) (U), (R)); })
2442
2443
2444#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
2445 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
2446 (__v16sf) (B), -(__v16sf) (C), \
2447 (__mmask16) -1, (R)); })
2448
2449
2450#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
2451 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
2452 (__v16sf) (B), -(__v16sf) (C), \
2453 (__mmask16) (U), (R)); })
2454
2455
Michael Kupersteine45af542015-06-30 13:36:19 +00002456static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002457_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2458{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002459 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2460 (__v16sf) __B,
2461 (__v16sf) __C,
2462 (__mmask16) -1,
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_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2468{
2469 return (__m512) __builtin_ia32_vfmaddps512_mask ((__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_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2478{
2479 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__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_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2488{
2489 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2490 (__v16sf) __B,
2491 (__v16sf) __C,
2492 (__mmask16) __U,
2493 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002494}
2495
Michael Kupersteine45af542015-06-30 13:36:19 +00002496static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002497_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2498{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002499 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2500 (__v16sf) __B,
2501 -(__v16sf) __C,
2502 (__mmask16) -1,
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_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2508{
2509 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2510 (__v16sf) __B,
2511 -(__v16sf) __C,
2512 (__mmask16) __U,
2513 _MM_FROUND_CUR_DIRECTION);
2514}
2515
Michael Kupersteine45af542015-06-30 13:36:19 +00002516static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002517_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2518{
2519 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2520 (__v16sf) __B,
2521 -(__v16sf) __C,
2522 (__mmask16) __U,
2523 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002524}
2525
Michael Kupersteine45af542015-06-30 13:36:19 +00002526static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002527_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2528{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002529 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2530 (__v16sf) __B,
2531 (__v16sf) __C,
2532 (__mmask16) -1,
2533 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002534}
2535
Michael Kupersteine45af542015-06-30 13:36:19 +00002536static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002537_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2538{
2539 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2540 (__v16sf) __B,
2541 (__v16sf) __C,
2542 (__mmask16) __U,
2543 _MM_FROUND_CUR_DIRECTION);
2544}
2545
Michael Kupersteine45af542015-06-30 13:36:19 +00002546static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002547_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2548{
2549 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2550 (__v16sf) __B,
2551 (__v16sf) __C,
2552 (__mmask16) __U,
2553 _MM_FROUND_CUR_DIRECTION);
2554}
2555
Michael Kupersteine45af542015-06-30 13:36:19 +00002556static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002557_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2558{
2559 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2560 (__v16sf) __B,
2561 -(__v16sf) __C,
2562 (__mmask16) -1,
2563 _MM_FROUND_CUR_DIRECTION);
2564}
2565
Michael Kupersteine45af542015-06-30 13:36:19 +00002566static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002567_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2568{
2569 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2570 (__v16sf) __B,
2571 -(__v16sf) __C,
2572 (__mmask16) __U,
2573 _MM_FROUND_CUR_DIRECTION);
2574}
2575
2576#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
2577 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2578 (__v8df) (B), (__v8df) (C), \
2579 (__mmask8) -1, (R)); })
2580
2581
2582#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
2583 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2584 (__v8df) (B), (__v8df) (C), \
2585 (__mmask8) (U), (R)); })
2586
2587
2588#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
2589 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
2590 (__v8df) (B), (__v8df) (C), \
2591 (__mmask8) (U), (R)); })
2592
2593
2594#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
2595 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2596 (__v8df) (B), (__v8df) (C), \
2597 (__mmask8) (U), (R)); })
2598
2599
2600#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
2601 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2602 (__v8df) (B), -(__v8df) (C), \
2603 (__mmask8) -1, (R)); })
2604
2605
2606#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
2607 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2608 (__v8df) (B), -(__v8df) (C), \
2609 (__mmask8) (U), (R)); })
2610
2611
2612#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
2613 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2614 (__v8df) (B), -(__v8df) (C), \
2615 (__mmask8) (U), (R)); })
2616
2617
Michael Kupersteine45af542015-06-30 13:36:19 +00002618static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002619_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2620{
2621 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2622 (__v8df) __B,
2623 (__v8df) __C,
2624 (__mmask8) -1,
2625 _MM_FROUND_CUR_DIRECTION);
2626}
2627
Michael Kupersteine45af542015-06-30 13:36:19 +00002628static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002629_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2630{
2631 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2632 (__v8df) __B,
2633 (__v8df) __C,
2634 (__mmask8) __U,
2635 _MM_FROUND_CUR_DIRECTION);
2636}
2637
Michael Kupersteine45af542015-06-30 13:36:19 +00002638static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002639_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2640{
2641 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2642 (__v8df) __B,
2643 (__v8df) __C,
2644 (__mmask8) __U,
2645 _MM_FROUND_CUR_DIRECTION);
2646}
2647
Michael Kupersteine45af542015-06-30 13:36:19 +00002648static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002649_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2650{
2651 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2652 (__v8df) __B,
2653 (__v8df) __C,
2654 (__mmask8) __U,
2655 _MM_FROUND_CUR_DIRECTION);
2656}
2657
Michael Kupersteine45af542015-06-30 13:36:19 +00002658static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002659_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2660{
2661 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2662 (__v8df) __B,
2663 -(__v8df) __C,
2664 (__mmask8) -1,
2665 _MM_FROUND_CUR_DIRECTION);
2666}
2667
Michael Kupersteine45af542015-06-30 13:36:19 +00002668static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002669_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2670{
2671 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2672 (__v8df) __B,
2673 -(__v8df) __C,
2674 (__mmask8) __U,
2675 _MM_FROUND_CUR_DIRECTION);
2676}
2677
Michael Kupersteine45af542015-06-30 13:36:19 +00002678static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002679_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2680{
2681 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2682 (__v8df) __B,
2683 -(__v8df) __C,
2684 (__mmask8) __U,
2685 _MM_FROUND_CUR_DIRECTION);
2686}
2687
2688#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2689 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2690 (__v16sf) (B), (__v16sf) (C), \
2691 (__mmask16) -1, (R)); })
2692
2693
2694#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2695 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2696 (__v16sf) (B), (__v16sf) (C), \
2697 (__mmask16) (U), (R)); })
2698
2699
2700#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2701 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2702 (__v16sf) (B), (__v16sf) (C), \
2703 (__mmask16) (U), (R)); })
2704
2705
2706#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2707 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2708 (__v16sf) (B), (__v16sf) (C), \
2709 (__mmask16) (U), (R)); })
2710
2711
2712#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2713 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2714 (__v16sf) (B), -(__v16sf) (C), \
2715 (__mmask16) -1, (R)); })
2716
2717
2718#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2719 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2720 (__v16sf) (B), -(__v16sf) (C), \
2721 (__mmask16) (U), (R)); })
2722
2723
2724#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2725 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2726 (__v16sf) (B), -(__v16sf) (C), \
2727 (__mmask16) (U), (R)); })
2728
2729
Michael Kupersteine45af542015-06-30 13:36:19 +00002730static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002731_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2732{
2733 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2734 (__v16sf) __B,
2735 (__v16sf) __C,
2736 (__mmask16) -1,
2737 _MM_FROUND_CUR_DIRECTION);
2738}
2739
Michael Kupersteine45af542015-06-30 13:36:19 +00002740static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002741_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2742{
2743 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2744 (__v16sf) __B,
2745 (__v16sf) __C,
2746 (__mmask16) __U,
2747 _MM_FROUND_CUR_DIRECTION);
2748}
2749
Michael Kupersteine45af542015-06-30 13:36:19 +00002750static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002751_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2752{
2753 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2754 (__v16sf) __B,
2755 (__v16sf) __C,
2756 (__mmask16) __U,
2757 _MM_FROUND_CUR_DIRECTION);
2758}
2759
Michael Kupersteine45af542015-06-30 13:36:19 +00002760static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002761_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2762{
2763 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2764 (__v16sf) __B,
2765 (__v16sf) __C,
2766 (__mmask16) __U,
2767 _MM_FROUND_CUR_DIRECTION);
2768}
2769
Michael Kupersteine45af542015-06-30 13:36:19 +00002770static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002771_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2772{
2773 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2774 (__v16sf) __B,
2775 -(__v16sf) __C,
2776 (__mmask16) -1,
2777 _MM_FROUND_CUR_DIRECTION);
2778}
2779
Michael Kupersteine45af542015-06-30 13:36:19 +00002780static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002781_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2782{
2783 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2784 (__v16sf) __B,
2785 -(__v16sf) __C,
2786 (__mmask16) __U,
2787 _MM_FROUND_CUR_DIRECTION);
2788}
2789
Michael Kupersteine45af542015-06-30 13:36:19 +00002790static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002791_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2792{
2793 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2794 (__v16sf) __B,
2795 -(__v16sf) __C,
2796 (__mmask16) __U,
2797 _MM_FROUND_CUR_DIRECTION);
2798}
2799
2800#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2801 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2802 (__v8df) (B), (__v8df) (C), \
2803 (__mmask8) (U), (R)); })
2804
2805
Michael Kupersteine45af542015-06-30 13:36:19 +00002806static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002807_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2808{
2809 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2810 (__v8df) __B,
2811 (__v8df) __C,
2812 (__mmask8) __U,
2813 _MM_FROUND_CUR_DIRECTION);
2814}
2815
2816#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2817 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2818 (__v16sf) (B), (__v16sf) (C), \
2819 (__mmask16) (U), (R)); })
2820
2821
Michael Kupersteine45af542015-06-30 13:36:19 +00002822static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002823_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2824{
2825 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2826 (__v16sf) __B,
2827 (__v16sf) __C,
2828 (__mmask16) __U,
2829 _MM_FROUND_CUR_DIRECTION);
2830}
2831
2832#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2833 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2834 (__v8df) (B), (__v8df) (C), \
2835 (__mmask8) (U), (R)); })
2836
2837
Michael Kupersteine45af542015-06-30 13:36:19 +00002838static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002839_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2840{
2841 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2842 (__v8df) __B,
2843 (__v8df) __C,
2844 (__mmask8) __U,
2845 _MM_FROUND_CUR_DIRECTION);
2846}
2847
2848#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2849 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2850 (__v16sf) (B), (__v16sf) (C), \
2851 (__mmask16) (U), (R)); })
2852
2853
Michael Kupersteine45af542015-06-30 13:36:19 +00002854static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002855_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2856{
2857 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2858 (__v16sf) __B,
2859 (__v16sf) __C,
2860 (__mmask16) __U,
2861 _MM_FROUND_CUR_DIRECTION);
2862}
2863
2864#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2865 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2866 (__v8df) (B), (__v8df) (C), \
2867 (__mmask8) (U), (R)); })
2868
2869
Michael Kupersteine45af542015-06-30 13:36:19 +00002870static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002871_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2872{
2873 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2874 (__v8df) __B,
2875 (__v8df) __C,
2876 (__mmask8) __U,
2877 _MM_FROUND_CUR_DIRECTION);
2878}
2879
2880#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2881 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2882 (__v16sf) (B), (__v16sf) (C), \
2883 (__mmask16) (U), (R)); })
2884
2885
Michael Kupersteine45af542015-06-30 13:36:19 +00002886static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002887_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2888{
2889 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2890 (__v16sf) __B,
2891 (__v16sf) __C,
2892 (__mmask16) __U,
2893 _MM_FROUND_CUR_DIRECTION);
2894}
2895
2896#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2897 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2898 (__v8df) (B), (__v8df) (C), \
2899 (__mmask8) (U), (R)); })
2900
2901
2902#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2903 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2904 (__v8df) (B), (__v8df) (C), \
2905 (__mmask8) (U), (R)); })
2906
2907
Michael Kupersteine45af542015-06-30 13:36:19 +00002908static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002909_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2910{
2911 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2912 (__v8df) __B,
2913 (__v8df) __C,
2914 (__mmask8) __U,
2915 _MM_FROUND_CUR_DIRECTION);
2916}
2917
Michael Kupersteine45af542015-06-30 13:36:19 +00002918static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002919_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2920{
2921 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2922 (__v8df) __B,
2923 (__v8df) __C,
2924 (__mmask8) __U,
2925 _MM_FROUND_CUR_DIRECTION);
2926}
2927
2928#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2929 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2930 (__v16sf) (B), (__v16sf) (C), \
2931 (__mmask16) (U), (R)); })
2932
2933
2934#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2935 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2936 (__v16sf) (B), (__v16sf) (C), \
2937 (__mmask16) (U), (R)); })
2938
2939
Michael Kupersteine45af542015-06-30 13:36:19 +00002940static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002941_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2942{
2943 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2944 (__v16sf) __B,
2945 (__v16sf) __C,
2946 (__mmask16) __U,
2947 _MM_FROUND_CUR_DIRECTION);
2948}
2949
Michael Kupersteine45af542015-06-30 13:36:19 +00002950static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002951_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2952{
2953 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2954 (__v16sf) __B,
2955 (__v16sf) __C,
2956 (__mmask16) __U,
2957 _MM_FROUND_CUR_DIRECTION);
2958}
2959
2960
2961
Adam Nemet0d5bb552014-07-28 17:14:40 +00002962/* Vector permutations */
2963
Michael Kupersteine45af542015-06-30 13:36:19 +00002964static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002965_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2966{
2967 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2968 /* idx */ ,
2969 (__v16si) __A,
2970 (__v16si) __B,
2971 (__mmask16) -1);
2972}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00002973
2974static __inline__ __m512i __DEFAULT_FN_ATTRS
2975_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
2976 __m512i __I, __m512i __B)
2977{
2978 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2979 /* idx */ ,
2980 (__v16si) __A,
2981 (__v16si) __B,
2982 (__mmask16) __U);
2983}
2984
2985static __inline__ __m512i __DEFAULT_FN_ATTRS
2986_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
2987 __m512i __I, __m512i __B)
2988{
2989 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
2990 /* idx */ ,
2991 (__v16si) __A,
2992 (__v16si) __B,
2993 (__mmask16) __U);
2994}
2995
Michael Kupersteine45af542015-06-30 13:36:19 +00002996static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002997_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2998{
2999 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3000 /* idx */ ,
3001 (__v8di) __A,
3002 (__v8di) __B,
3003 (__mmask8) -1);
3004}
3005
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003006static __inline__ __m512i __DEFAULT_FN_ATTRS
3007_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3008 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003009{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003010 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003011 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003012 (__v8di) __A,
3013 (__v8di) __B,
3014 (__mmask8) __U);
3015}
3016
3017
3018static __inline__ __m512i __DEFAULT_FN_ATTRS
3019_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3020 __m512i __I, __m512i __B)
3021{
3022 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3023 /* idx */ ,
3024 (__v8di) __A,
3025 (__v8di) __B,
3026 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003027}
3028
Craig Topper67826a52015-02-01 07:35:40 +00003029#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3030 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3031 (__v8di)(__m512i)(B), \
3032 (I), (__v8di)_mm512_setzero_si512(), \
3033 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003034
Michael Zuckerman533e0652016-04-28 12:47:30 +00003035#define _mm512_mask_alignr_epi64( __W, __U, __A, __B, __imm) __extension__({\
3036 (__m512i)__builtin_ia32_alignq512_mask ((__v8di) __A,\
3037 (__v8di) __B, __imm,\
3038 (__v8di) __W,\
3039 (__mmask8) __U);\
3040})
3041
3042#define _mm512_maskz_alignr_epi64( __U, __A, __B, __imm) __extension__({\
3043 (__m512i)__builtin_ia32_alignq512_mask ((__v8di) __A,\
3044 (__v8di) __B, __imm,\
3045 (__v8di) _mm512_setzero_si512 (),\
3046 (__mmask8) __U);\
3047})
3048
Craig Topper67826a52015-02-01 07:35:40 +00003049#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Michael Zuckerman533e0652016-04-28 12:47:30 +00003050 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
Craig Topper67826a52015-02-01 07:35:40 +00003051 (__v16si)(__m512i)(B), \
3052 (I), (__v16si)_mm512_setzero_si512(), \
Michael Zuckerman533e0652016-04-28 12:47:30 +00003053 (__mmask16)-1);\
3054})
3055
3056#define _mm512_mask_alignr_epi32( __W, __U, __A, __B, __imm) __extension__ ({\
3057 (__m512i) __builtin_ia32_alignd512_mask((__v16si) __A,\
3058 (__v16si) __B, __imm,\
3059 (__v16si) __W,\
3060 (__mmask16) __U);\
3061})
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003062
Michael Zuckerman533e0652016-04-28 12:47:30 +00003063#define _mm512_maskz_alignr_epi32( __U, __A, __B, __imm) __extension__({\
3064 (__m512i) __builtin_ia32_alignd512_mask ((__v16si) __A,\
3065 (__v16si) __B, __imm,\
3066 (__v16si) _mm512_setzero_si512 (),\
3067 (__mmask16) __U);\
3068})
Adam Nemetf893ede2015-01-19 20:12:05 +00003069/* Vector Extract */
3070
3071#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003072 (__m256d) __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00003073 (I), \
3074 (__v4df)_mm256_setzero_si256(), \
3075 (__mmask8) -1); })
3076
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003077#define _mm512_mask_extractf64x4_pd( __W, __U, __A, __imm) __extension__ ({\
3078 (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A, \
3079 __imm,\
3080 (__v4df) __W,\
3081 (__mmask8) __U);\
3082})
3083
3084#define _mm512_maskz_extractf64x4_pd( __U, __A, __imm) __extension__ ({\
3085 (__m256d) __builtin_ia32_extractf64x4_mask ((__v8df) __A,\
3086 __imm,\
3087 (__v4df)\
3088 _mm256_setzero_pd (),\
3089 (__mmask8) __U);\
3090})
3091
Adam Nemetf893ede2015-01-19 20:12:05 +00003092#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003093 (__m128) __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00003094 (I), \
3095 (__v4sf)_mm_setzero_ps(), \
3096 (__mmask8) -1); })
3097
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003098#define _mm512_mask_extractf32x4_ps( __W, __U, __A, __imm) __extension__ ({\
3099 (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,\
3100 __imm,\
3101 (__v4sf) __W,\
3102 (__mmask8) __U);\
3103})
3104
3105#define _mm512_maskz_extractf32x4_ps( __U, __A, __imm) __extension__ ({\
3106 (__m128) __builtin_ia32_extractf32x4_mask ((__v16sf) __A,\
3107 __imm,\
3108 (__v4sf)\
3109 _mm_setzero_ps (),\
3110 (__mmask8) __U);\
3111})
Adam Nemet0d5bb552014-07-28 17:14:40 +00003112/* Vector Blend */
3113
Michael Kupersteine45af542015-06-30 13:36:19 +00003114static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003115_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3116{
3117 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3118 (__v8df) __W,
3119 (__mmask8) __U);
3120}
3121
Michael Kupersteine45af542015-06-30 13:36:19 +00003122static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003123_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3124{
3125 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3126 (__v16sf) __W,
3127 (__mmask16) __U);
3128}
3129
Michael Kupersteine45af542015-06-30 13:36:19 +00003130static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003131_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3132{
3133 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3134 (__v8di) __W,
3135 (__mmask8) __U);
3136}
3137
Michael Kupersteine45af542015-06-30 13:36:19 +00003138static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003139_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3140{
3141 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3142 (__v16si) __W,
3143 (__mmask16) __U);
3144}
3145
3146/* Compare */
3147
Craig Topper53565c62015-02-01 22:27:40 +00003148#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3149 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
3150 (__v16sf)(__m512)(B), \
3151 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003152
Craig Topper53565c62015-02-01 22:27:40 +00003153#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3154 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
3155 (__v16sf)(__m512)(B), \
3156 (P), (__mmask16)(U), (R)); })
3157
3158#define _mm512_cmp_ps_mask(A, B, P) \
3159 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3160
3161#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3162 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3163
3164#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3165 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
3166 (__v8df)(__m512d)(B), \
3167 (P), (__mmask8)-1, (R)); })
3168
3169#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3170 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
3171 (__v8df)(__m512d)(B), \
3172 (P), (__mmask8)(U), (R)); })
3173
3174#define _mm512_cmp_pd_mask(A, B, P) \
3175 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3176
3177#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3178 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003179
3180/* Conversion */
3181
Michael Kupersteine45af542015-06-30 13:36:19 +00003182static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003183_mm512_cvttps_epu32(__m512 __A)
3184{
3185 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3186 (__v16si)
3187 _mm512_setzero_si512 (),
3188 (__mmask16) -1,
3189 _MM_FROUND_CUR_DIRECTION);
3190}
3191
Michael Zuckermanf1544752016-05-09 10:32:51 +00003192static __inline__ __m512i __DEFAULT_FN_ATTRS
3193_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3194{
3195 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3196 (__v16si) __W,
3197 (__mmask16) __U,
3198 _MM_FROUND_CUR_DIRECTION);
3199}
3200
3201static __inline__ __m512i __DEFAULT_FN_ATTRS
3202_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3203{
3204 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3205 (__v16si) _mm512_setzero_si512 (),
3206 (__mmask16) __U,
3207 _MM_FROUND_CUR_DIRECTION);
3208}
3209
Craig Topper72c7d512015-02-01 07:35:35 +00003210#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
3211 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
3212 (__v16sf)_mm512_setzero_ps(), \
3213 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003214
Craig Topper72c7d512015-02-01 07:35:35 +00003215#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
3216 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
3217 (__v16sf)_mm512_setzero_ps(), \
3218 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003219
Michael Zuckermanf1544752016-05-09 10:32:51 +00003220static __inline__ __m512 __DEFAULT_FN_ATTRS
3221_mm512_cvtepu32_ps (__m512i __A)
3222{
3223 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3224 (__v16sf) _mm512_undefined_ps (),
3225 (__mmask16) -1,
3226 _MM_FROUND_CUR_DIRECTION);
3227}
3228
3229static __inline__ __m512 __DEFAULT_FN_ATTRS
3230_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3231{
3232 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3233 (__v16sf) __W,
3234 (__mmask16) __U,
3235 _MM_FROUND_CUR_DIRECTION);
3236}
3237
3238static __inline__ __m512 __DEFAULT_FN_ATTRS
3239_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3240{
3241 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3242 (__v16sf) _mm512_setzero_ps (),
3243 (__mmask16) __U,
3244 _MM_FROUND_CUR_DIRECTION);
3245}
3246
Michael Kupersteine45af542015-06-30 13:36:19 +00003247static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003248_mm512_cvtepi32_pd(__m256i __A)
3249{
3250 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003251 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003252 _mm512_setzero_pd (),
3253 (__mmask8) -1);
3254}
3255
Michael Zuckermanf1544752016-05-09 10:32:51 +00003256static __inline__ __m512d __DEFAULT_FN_ATTRS
3257_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3258{
3259 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3260 (__v8df) __W,
3261 (__mmask8) __U);
3262}
3263
3264static __inline__ __m512d __DEFAULT_FN_ATTRS
3265_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3266{
3267 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3268 (__v8df) _mm512_setzero_pd (),
3269 (__mmask8) __U);
3270}
3271
3272static __inline__ __m512 __DEFAULT_FN_ATTRS
3273_mm512_cvtepi32_ps (__m512i __A)
3274{
3275 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3276 (__v16sf) _mm512_undefined_ps (),
3277 (__mmask16) -1,
3278 _MM_FROUND_CUR_DIRECTION);
3279}
3280
3281static __inline__ __m512 __DEFAULT_FN_ATTRS
3282_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3283{
3284 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3285 (__v16sf) __W,
3286 (__mmask16) __U,
3287 _MM_FROUND_CUR_DIRECTION);
3288}
3289
3290static __inline__ __m512 __DEFAULT_FN_ATTRS
3291_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3292{
3293 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3294 (__v16sf) _mm512_setzero_ps (),
3295 (__mmask16) __U,
3296 _MM_FROUND_CUR_DIRECTION);
3297}
3298
Michael Kupersteine45af542015-06-30 13:36:19 +00003299static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003300_mm512_cvtepu32_pd(__m256i __A)
3301{
3302 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3303 (__v8df)
3304 _mm512_setzero_pd (),
3305 (__mmask8) -1);
3306}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003307
Michael Zuckermanf1544752016-05-09 10:32:51 +00003308static __inline__ __m512d __DEFAULT_FN_ATTRS
3309_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3310{
3311 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3312 (__v8df) __W,
3313 (__mmask8) __U);
3314}
3315
3316static __inline__ __m512d __DEFAULT_FN_ATTRS
3317_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3318{
3319 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3320 (__v8df) _mm512_setzero_pd (),
3321 (__mmask8) __U);
3322}
3323
Craig Topper72c7d512015-02-01 07:35:35 +00003324#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
3325 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
3326 (__v8sf)_mm256_setzero_ps(), \
3327 (__mmask8)-1, (R)); })
3328
Michael Zuckermanf1544752016-05-09 10:32:51 +00003329static __inline__ __m256 __DEFAULT_FN_ATTRS
3330_mm512_cvtpd_ps (__m512d __A)
3331{
3332 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3333 (__v8sf) _mm256_undefined_ps (),
3334 (__mmask8) -1,
3335 _MM_FROUND_CUR_DIRECTION);
3336}
3337
3338static __inline__ __m256 __DEFAULT_FN_ATTRS
3339_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3340{
3341 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3342 (__v8sf) __W,
3343 (__mmask8) __U,
3344 _MM_FROUND_CUR_DIRECTION);
3345}
3346
3347static __inline__ __m256 __DEFAULT_FN_ATTRS
3348_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3349{
3350 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3351 (__v8sf) _mm256_setzero_ps (),
3352 (__mmask8) __U,
3353 _MM_FROUND_CUR_DIRECTION);
3354}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003355
Craig Topper72c7d512015-02-01 07:35:35 +00003356#define _mm512_cvtps_ph(A, I) __extension__ ({ \
3357 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
3358 (__v16hi)_mm256_setzero_si256(), \
3359 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003360
Michael Zuckermanf1544752016-05-09 10:32:51 +00003361#define _mm512_mask_cvtps_ph(__U, __W, __A, __I) __extension__ ({ \
3362 (__m256i) __builtin_ia32_vcvtps2ph512_mask((__v16sf) __A,\
3363 __I,\
3364 (__v16hi) __U,\
3365 (__mmask16) __W);\
3366})
3367
3368#define _mm512_maskz_cvtps_ph( __W, __A, __I) __extension__ ({\
3369 (__m256i) __builtin_ia32_vcvtps2ph512_mask((__v16sf) __A,\
3370 __I,\
3371 (__v16hi)\
3372 _mm256_setzero_si256 (),\
3373 (__mmask16) __W);\
3374})
3375
3376
Michael Kupersteine45af542015-06-30 13:36:19 +00003377static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003378_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003379{
3380 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003381 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003382 _mm512_setzero_ps (),
3383 (__mmask16) -1,
3384 _MM_FROUND_CUR_DIRECTION);
3385}
3386
Michael Zuckermanf1544752016-05-09 10:32:51 +00003387static __inline__ __m512 __DEFAULT_FN_ATTRS
3388_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003389{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003390 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3391 (__v16sf) __W,
3392 (__mmask16) __U,
3393 _MM_FROUND_CUR_DIRECTION);
3394}
3395
3396static __inline__ __m512 __DEFAULT_FN_ATTRS
3397_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3398{
3399 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3400 (__v16sf) _mm512_setzero_ps (),
3401 (__mmask16) __U,
3402 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003403}
3404
Michael Kupersteine45af542015-06-30 13:36:19 +00003405static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003406_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003407{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003408 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003409 (__v8si)_mm256_setzero_si256(),
3410 (__mmask8) -1,
3411 _MM_FROUND_CUR_DIRECTION);
3412}
3413
Michael Zuckermanf1544752016-05-09 10:32:51 +00003414static __inline__ __m256i __DEFAULT_FN_ATTRS
3415_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3416{
3417 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3418 (__v8si) __W,
3419 (__mmask8) __U,
3420 _MM_FROUND_CUR_DIRECTION);
3421}
3422
3423static __inline__ __m256i __DEFAULT_FN_ATTRS
3424_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3425{
3426 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3427 (__v8si) _mm256_setzero_si256 (),
3428 (__mmask8) __U,
3429 _MM_FROUND_CUR_DIRECTION);
3430}
3431
Craig Topper72c7d512015-02-01 07:35:35 +00003432#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3433 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
3434 (__v8si)_mm256_setzero_si256(), \
3435 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003436
Craig Topper72c7d512015-02-01 07:35:35 +00003437#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
3438 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
3439 (__v16si)_mm512_setzero_si512(), \
3440 (__mmask16)-1, (R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003441
Michael Zuckermanf1544752016-05-09 10:32:51 +00003442static __inline __m512i __DEFAULT_FN_ATTRS
3443_mm512_cvttps_epi32(__m512 __a)
3444{
3445 return (__m512i)
3446 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3447 (__v16si) _mm512_setzero_si512 (),
3448 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3449}
3450
3451static __inline__ __m512i __DEFAULT_FN_ATTRS
3452_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3453{
3454 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3455 (__v16si) __W,
3456 (__mmask16) __U,
3457 _MM_FROUND_CUR_DIRECTION);
3458}
3459
3460static __inline__ __m512i __DEFAULT_FN_ATTRS
3461_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3462{
3463 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3464 (__v16si) _mm512_setzero_si512 (),
3465 (__mmask16) __U,
3466 _MM_FROUND_CUR_DIRECTION);
3467}
Craig Topper72c7d512015-02-01 07:35:35 +00003468
3469#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
3470 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
3471 (__v16si)_mm512_setzero_si512(), \
3472 (__mmask16)-1, (R)); })
3473
Michael Zuckermanf1544752016-05-09 10:32:51 +00003474static __inline__ __m512i __DEFAULT_FN_ATTRS
3475_mm512_cvtps_epi32 (__m512 __A)
3476{
3477 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3478 (__v16si) _mm512_undefined_epi32 (),
3479 (__mmask16) -1,
3480 _MM_FROUND_CUR_DIRECTION);
3481}
3482
3483static __inline__ __m512i __DEFAULT_FN_ATTRS
3484_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3485{
3486 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3487 (__v16si) __W,
3488 (__mmask16) __U,
3489 _MM_FROUND_CUR_DIRECTION);
3490}
3491
3492static __inline__ __m512i __DEFAULT_FN_ATTRS
3493_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3494{
3495 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3496 (__v16si)
3497 _mm512_setzero_si512 (),
3498 (__mmask16) __U,
3499 _MM_FROUND_CUR_DIRECTION);
3500}
3501
Craig Topper72c7d512015-02-01 07:35:35 +00003502#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
3503 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
3504 (__v8si)_mm256_setzero_si256(), \
3505 (__mmask8)-1, (R)); })
3506
Michael Zuckermanf1544752016-05-09 10:32:51 +00003507static __inline__ __m256i __DEFAULT_FN_ATTRS
3508_mm512_cvtpd_epi32 (__m512d __A)
3509{
3510 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3511 (__v8si)
3512 _mm256_undefined_si256 (),
3513 (__mmask8) -1,
3514 _MM_FROUND_CUR_DIRECTION);
3515}
3516
3517static __inline__ __m256i __DEFAULT_FN_ATTRS
3518_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3519{
3520 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3521 (__v8si) __W,
3522 (__mmask8) __U,
3523 _MM_FROUND_CUR_DIRECTION);
3524}
3525
3526static __inline__ __m256i __DEFAULT_FN_ATTRS
3527_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3528{
3529 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3530 (__v8si)
3531 _mm256_setzero_si256 (),
3532 (__mmask8) __U,
3533 _MM_FROUND_CUR_DIRECTION);
3534}
3535
Craig Topper72c7d512015-02-01 07:35:35 +00003536#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
3537 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
3538 (__v16si)_mm512_setzero_si512(), \
3539 (__mmask16)-1, (R)); })
3540
Michael Zuckermanf1544752016-05-09 10:32:51 +00003541static __inline__ __m512i __DEFAULT_FN_ATTRS
3542_mm512_cvtps_epu32 ( __m512 __A)
3543{
3544 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3545 (__v16si)\
3546 _mm512_undefined_epi32 (),\
3547 (__mmask16) -1,\
3548 _MM_FROUND_CUR_DIRECTION);\
3549}
3550
3551static __inline__ __m512i __DEFAULT_FN_ATTRS
3552_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3553{
3554 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3555 (__v16si) __W,
3556 (__mmask16) __U,
3557 _MM_FROUND_CUR_DIRECTION);
3558}
3559
Craig Topper72c7d512015-02-01 07:35:35 +00003560#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
3561 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
3562 (__v8si)_mm256_setzero_si256(), \
3563 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003564
Michael Zuckermanf1544752016-05-09 10:32:51 +00003565static __inline__ __m256i __DEFAULT_FN_ATTRS
3566_mm512_cvtpd_epu32 (__m512d __A)
3567{
3568 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3569 (__v8si)
3570 _mm256_undefined_si256 (),
3571 (__mmask8) -1,
3572 _MM_FROUND_CUR_DIRECTION);
3573}
3574
3575static __inline__ __m256i __DEFAULT_FN_ATTRS
3576_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3577{
3578 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3579 (__v8si) __W,
3580 (__mmask8) __U,
3581 _MM_FROUND_CUR_DIRECTION);
3582}
3583
3584static __inline__ __m256i __DEFAULT_FN_ATTRS
3585_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3586{
3587 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3588 (__v8si)
3589 _mm256_setzero_si256 (),
3590 (__mmask8) __U,
3591 _MM_FROUND_CUR_DIRECTION);
3592}
Adam Nemet63a951e2015-01-14 01:31:17 +00003593/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003594static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003595_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3596{
3597 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3598}
3599
Michael Kupersteine45af542015-06-30 13:36:19 +00003600static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003601_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3602{
3603 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3604}
3605
Michael Kupersteine45af542015-06-30 13:36:19 +00003606static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003607_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3608{
3609 return __builtin_shufflevector(__a, __b,
3610 2, 18, 3, 19,
3611 2+4, 18+4, 3+4, 19+4,
3612 2+8, 18+8, 3+8, 19+8,
3613 2+12, 18+12, 3+12, 19+12);
3614}
3615
Michael Kupersteine45af542015-06-30 13:36:19 +00003616static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003617_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3618{
3619 return __builtin_shufflevector(__a, __b,
3620 0, 16, 1, 17,
3621 0+4, 16+4, 1+4, 17+4,
3622 0+8, 16+8, 1+8, 17+8,
3623 0+12, 16+12, 1+12, 17+12);
3624}
3625
Adam Nemet0d5bb552014-07-28 17:14:40 +00003626/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003627
Michael Kupersteine45af542015-06-30 13:36:19 +00003628static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003629_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003630{
3631 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3632 (__v16si) __B,
3633 (__mmask16) -1);
3634}
3635
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003636static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3637_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3638{
3639 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3640 (__v16si) __B, __U);
3641}
3642
Michael Kupersteine45af542015-06-30 13:36:19 +00003643static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003644_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003645{
3646 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3647 (__v8di) __B,
3648 (__mmask8) -1);
3649}
3650
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003651static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3652_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3653{
3654 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
3655}
3656
3657
Adam Nemet0d5bb552014-07-28 17:14:40 +00003658/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003659
Michael Kupersteine45af542015-06-30 13:36:19 +00003660static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003661_mm512_loadu_si512 (void const *__P)
3662{
Craig Topper4537ea72016-05-14 06:03:13 +00003663 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003664 (__v16si)
3665 _mm512_setzero_si512 (),
3666 (__mmask16) -1);
3667}
3668
3669static __inline __m512i __DEFAULT_FN_ATTRS
3670_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3671{
Craig Topper4537ea72016-05-14 06:03:13 +00003672 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003673 (__v16si) __W,
3674 (__mmask16) __U);
3675}
3676
3677
3678static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003679_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003680{
Craig Topper4537ea72016-05-14 06:03:13 +00003681 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003682 (__v16si)
3683 _mm512_setzero_si512 (),
3684 (__mmask16) __U);
3685}
3686
Michael Kupersteine45af542015-06-30 13:36:19 +00003687static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003688_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3689{
Craig Topper4537ea72016-05-14 06:03:13 +00003690 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003691 (__v8di) __W,
3692 (__mmask8) __U);
3693}
3694
3695static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003696_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003697{
Craig Topper4537ea72016-05-14 06:03:13 +00003698 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003699 (__v8di)
3700 _mm512_setzero_si512 (),
3701 (__mmask8) __U);
3702}
3703
Michael Kupersteine45af542015-06-30 13:36:19 +00003704static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003705_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
3706{
Craig Topper4537ea72016-05-14 06:03:13 +00003707 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003708 (__v16sf) __W,
3709 (__mmask16) __U);
3710}
3711
3712static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003713_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003714{
Craig Topper4537ea72016-05-14 06:03:13 +00003715 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003716 (__v16sf)
3717 _mm512_setzero_ps (),
3718 (__mmask16) __U);
3719}
3720
Michael Kupersteine45af542015-06-30 13:36:19 +00003721static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003722_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003723{
Craig Topper4537ea72016-05-14 06:03:13 +00003724 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003725 (__v8df) __W,
3726 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00003727}
3728
Michael Kupersteine45af542015-06-30 13:36:19 +00003729static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003730_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00003731{
Craig Topper4537ea72016-05-14 06:03:13 +00003732 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00003733 (__v8df)
3734 _mm512_setzero_pd (),
3735 (__mmask8) __U);
3736}
3737
Michael Kupersteine45af542015-06-30 13:36:19 +00003738static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003739_mm512_loadu_pd(double const *__p)
3740{
3741 struct __loadu_pd {
3742 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003743 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003744 return ((struct __loadu_pd*)__p)->__v;
3745}
3746
Michael Kupersteine45af542015-06-30 13:36:19 +00003747static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003748_mm512_loadu_ps(float const *__p)
3749{
3750 struct __loadu_ps {
3751 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003752 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003753 return ((struct __loadu_ps*)__p)->__v;
3754}
3755
Michael Kupersteine45af542015-06-30 13:36:19 +00003756static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003757_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003758{
3759 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3760 (__v16sf)
3761 _mm512_setzero_ps (),
3762 (__mmask16) -1);
3763}
3764
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003765static __inline __m512 __DEFAULT_FN_ATTRS
3766_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
3767{
3768 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
3769 (__v16sf) __W,
3770 (__mmask16) __U);
3771}
3772
3773static __inline __m512 __DEFAULT_FN_ATTRS
3774_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
3775{
3776 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
3777 (__v16sf)
3778 _mm512_setzero_ps (),
3779 (__mmask16) __U);
3780}
3781
Michael Kupersteine45af542015-06-30 13:36:19 +00003782static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003783_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003784{
3785 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
3786 (__v8df)
3787 _mm512_setzero_pd (),
3788 (__mmask8) -1);
3789}
3790
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003791static __inline __m512d __DEFAULT_FN_ATTRS
3792_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
3793{
3794 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
3795 (__v8df) __W,
3796 (__mmask8) __U);
3797}
3798
3799static __inline __m512d __DEFAULT_FN_ATTRS
3800_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
3801{
3802 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
3803 (__v8df)
3804 _mm512_setzero_pd (),
3805 (__mmask8) __U);
3806}
3807
3808static __inline __m512i __DEFAULT_FN_ATTRS
3809_mm512_load_si512 (void const *__P)
3810{
3811 return *(__m512i *) __P;
3812}
3813
3814static __inline __m512i __DEFAULT_FN_ATTRS
3815_mm512_load_epi32 (void const *__P)
3816{
3817 return *(__m512i *) __P;
3818}
3819
3820static __inline __m512i __DEFAULT_FN_ATTRS
3821_mm512_load_epi64 (void const *__P)
3822{
3823 return *(__m512i *) __P;
3824}
3825
Adam Nemet0d5bb552014-07-28 17:14:40 +00003826/* SIMD store ops */
3827
Michael Kupersteine45af542015-06-30 13:36:19 +00003828static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003829_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003830{
Craig Topper4537ea72016-05-14 06:03:13 +00003831 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003832 (__mmask8) __U);
3833}
3834
Michael Kupersteine45af542015-06-30 13:36:19 +00003835static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003836_mm512_storeu_si512 (void *__P, __m512i __A)
3837{
Craig Topper4537ea72016-05-14 06:03:13 +00003838 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003839 (__mmask16) -1);
3840}
3841
3842static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003843_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003844{
Craig Topper4537ea72016-05-14 06:03:13 +00003845 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003846 (__mmask16) __U);
3847}
3848
Michael Kupersteine45af542015-06-30 13:36:19 +00003849static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003850_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003851{
Craig Topper4537ea72016-05-14 06:03:13 +00003852 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003853}
3854
Michael Kupersteine45af542015-06-30 13:36:19 +00003855static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003856_mm512_storeu_pd(void *__P, __m512d __A)
3857{
Craig Topper4537ea72016-05-14 06:03:13 +00003858 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00003859}
3860
Michael Kupersteine45af542015-06-30 13:36:19 +00003861static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003862_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003863{
Craig Topper4537ea72016-05-14 06:03:13 +00003864 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003865 (__mmask16) __U);
3866}
3867
Michael Kupersteine45af542015-06-30 13:36:19 +00003868static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003869_mm512_storeu_ps(void *__P, __m512 __A)
3870{
Craig Topper4537ea72016-05-14 06:03:13 +00003871 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00003872}
3873
Michael Kupersteine45af542015-06-30 13:36:19 +00003874static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003875_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00003876{
Adam Nemetc0cff242015-01-16 18:51:50 +00003877 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00003878}
3879
Michael Kupersteine45af542015-06-30 13:36:19 +00003880static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00003881_mm512_store_pd(void *__P, __m512d __A)
3882{
3883 *(__m512d*)__P = __A;
3884}
3885
Michael Kupersteine45af542015-06-30 13:36:19 +00003886static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003887_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
3888{
3889 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
3890 (__mmask16) __U);
3891}
3892
Michael Kupersteine45af542015-06-30 13:36:19 +00003893static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00003894_mm512_store_ps(void *__P, __m512 __A)
3895{
3896 *(__m512*)__P = __A;
3897}
3898
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003899static __inline void __DEFAULT_FN_ATTRS
3900_mm512_store_si512 (void *__P, __m512i __A)
3901{
3902 *(__m512i *) __P = __A;
3903}
3904
3905static __inline void __DEFAULT_FN_ATTRS
3906_mm512_store_epi32 (void *__P, __m512i __A)
3907{
3908 *(__m512i *) __P = __A;
3909}
3910
3911static __inline void __DEFAULT_FN_ATTRS
3912_mm512_store_epi64 (void *__P, __m512i __A)
3913{
3914 *(__m512i *) __P = __A;
3915}
3916
Adam Nemet2db1d2f2014-07-30 16:51:27 +00003917/* Mask ops */
3918
Michael Kupersteine45af542015-06-30 13:36:19 +00003919static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00003920_mm512_knot(__mmask16 __M)
3921{
3922 return __builtin_ia32_knothi(__M);
3923}
3924
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003925/* Integer compare */
3926
Michael Kupersteine45af542015-06-30 13:36:19 +00003927static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003928_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
3929 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
3930 (__mmask16)-1);
3931}
3932
Michael Kupersteine45af542015-06-30 13:36:19 +00003933static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003934_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3935 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
3936 __u);
3937}
3938
Michael Kupersteine45af542015-06-30 13:36:19 +00003939static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003940_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
3941 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
3942 (__mmask16)-1);
3943}
3944
Michael Kupersteine45af542015-06-30 13:36:19 +00003945static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003946_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3947 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
3948 __u);
3949}
3950
Michael Kupersteine45af542015-06-30 13:36:19 +00003951static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003952_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3953 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3954 __u);
3955}
3956
Michael Kupersteine45af542015-06-30 13:36:19 +00003957static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00003958_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
3959 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
3960 (__mmask8)-1);
3961}
3962
Michael Kupersteine45af542015-06-30 13:36:19 +00003963static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003964_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
3965 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3966 (__mmask8)-1);
3967}
3968
Michael Kupersteine45af542015-06-30 13:36:19 +00003969static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003970_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3971 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
3972 __u);
3973}
3974
Michael Kupersteine45af542015-06-30 13:36:19 +00003975static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003976_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
3977 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3978 (__mmask16)-1);
3979}
3980
Michael Kupersteine45af542015-06-30 13:36:19 +00003981static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003982_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3983 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3984 __u);
3985}
3986
Michael Kupersteine45af542015-06-30 13:36:19 +00003987static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003988_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
3989 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3990 (__mmask16)-1);
3991}
3992
Michael Kupersteine45af542015-06-30 13:36:19 +00003993static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003994_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3995 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
3996 __u);
3997}
3998
Michael Kupersteine45af542015-06-30 13:36:19 +00003999static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004000_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4001 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4002 (__mmask8)-1);
4003}
4004
Michael Kupersteine45af542015-06-30 13:36:19 +00004005static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004006_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4007 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4008 __u);
4009}
4010
Michael Kupersteine45af542015-06-30 13:36:19 +00004011static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004012_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4013 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4014 (__mmask8)-1);
4015}
4016
Michael Kupersteine45af542015-06-30 13:36:19 +00004017static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004018_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4019 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4020 __u);
4021}
4022
Michael Kupersteine45af542015-06-30 13:36:19 +00004023static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004024_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4025 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4026 (__mmask16)-1);
4027}
4028
Michael Kupersteine45af542015-06-30 13:36:19 +00004029static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004030_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4031 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4032 __u);
4033}
4034
Michael Kupersteine45af542015-06-30 13:36:19 +00004035static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004036_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4037 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4038 (__mmask16)-1);
4039}
4040
Michael Kupersteine45af542015-06-30 13:36:19 +00004041static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004042_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4043 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4044 __u);
4045}
4046
Michael Kupersteine45af542015-06-30 13:36:19 +00004047static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004048_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4049 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4050 __u);
4051}
4052
Michael Kupersteine45af542015-06-30 13:36:19 +00004053static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004054_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4055 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4056 (__mmask8)-1);
4057}
4058
Michael Kupersteine45af542015-06-30 13:36:19 +00004059static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004060_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4061 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4062 (__mmask8)-1);
4063}
4064
Michael Kupersteine45af542015-06-30 13:36:19 +00004065static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004066_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4067 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4068 __u);
4069}
4070
Michael Kupersteine45af542015-06-30 13:36:19 +00004071static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004072_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4073 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4074 (__mmask16)-1);
4075}
4076
Michael Kupersteine45af542015-06-30 13:36:19 +00004077static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004078_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4079 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4080 __u);
4081}
4082
Michael Kupersteine45af542015-06-30 13:36:19 +00004083static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004084_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4085 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4086 (__mmask16)-1);
4087}
4088
Michael Kupersteine45af542015-06-30 13:36:19 +00004089static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004090_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4091 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4092 __u);
4093}
4094
Michael Kupersteine45af542015-06-30 13:36:19 +00004095static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004096_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4097 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4098 (__mmask8)-1);
4099}
4100
Michael Kupersteine45af542015-06-30 13:36:19 +00004101static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004102_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4103 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4104 __u);
4105}
4106
Michael Kupersteine45af542015-06-30 13:36:19 +00004107static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004108_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4109 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4110 (__mmask8)-1);
4111}
4112
Michael Kupersteine45af542015-06-30 13:36:19 +00004113static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004114_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4115 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4116 __u);
4117}
4118
Michael Kupersteine45af542015-06-30 13:36:19 +00004119static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004120_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4121 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4122 (__mmask16)-1);
4123}
4124
Michael Kupersteine45af542015-06-30 13:36:19 +00004125static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004126_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4127 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4128 __u);
4129}
4130
Michael Kupersteine45af542015-06-30 13:36:19 +00004131static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004132_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4133 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4134 (__mmask16)-1);
4135}
4136
Michael Kupersteine45af542015-06-30 13:36:19 +00004137static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004138_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4139 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4140 __u);
4141}
4142
Michael Kupersteine45af542015-06-30 13:36:19 +00004143static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004144_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4145 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4146 (__mmask8)-1);
4147}
4148
Michael Kupersteine45af542015-06-30 13:36:19 +00004149static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004150_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4151 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4152 __u);
4153}
4154
Michael Kupersteine45af542015-06-30 13:36:19 +00004155static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004156_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4157 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4158 (__mmask8)-1);
4159}
4160
Michael Kupersteine45af542015-06-30 13:36:19 +00004161static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004162_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4163 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4164 __u);
4165}
4166
Michael Kupersteine45af542015-06-30 13:36:19 +00004167static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004168_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4169 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4170 (__mmask16)-1);
4171}
4172
Michael Kupersteine45af542015-06-30 13:36:19 +00004173static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004174_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4175 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4176 __u);
4177}
4178
Michael Kupersteine45af542015-06-30 13:36:19 +00004179static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004180_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4181 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4182 (__mmask16)-1);
4183}
4184
Michael Kupersteine45af542015-06-30 13:36:19 +00004185static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004186_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4187 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4188 __u);
4189}
4190
Michael Kupersteine45af542015-06-30 13:36:19 +00004191static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004192_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4193 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4194 (__mmask8)-1);
4195}
4196
Michael Kupersteine45af542015-06-30 13:36:19 +00004197static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004198_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4199 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4200 __u);
4201}
4202
Michael Kupersteine45af542015-06-30 13:36:19 +00004203static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004204_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4205 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4206 (__mmask8)-1);
4207}
4208
Michael Kupersteine45af542015-06-30 13:36:19 +00004209static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004210_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4211 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4212 __u);
4213}
4214
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004215static __inline__ __m512i __DEFAULT_FN_ATTRS
4216_mm512_cvtepi8_epi32 (__m128i __A)
4217{
4218 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4219 (__v16si)
4220 _mm512_setzero_si512 (),
4221 (__mmask16) -1);
4222}
4223
4224static __inline__ __m512i __DEFAULT_FN_ATTRS
4225_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4226{
4227 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4228 (__v16si) __W,
4229 (__mmask16) __U);
4230}
4231
4232static __inline__ __m512i __DEFAULT_FN_ATTRS
4233_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4234{
4235 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4236 (__v16si)
4237 _mm512_setzero_si512 (),
4238 (__mmask16) __U);
4239}
4240
4241static __inline__ __m512i __DEFAULT_FN_ATTRS
4242_mm512_cvtepi8_epi64 (__m128i __A)
4243{
4244 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4245 (__v8di)
4246 _mm512_setzero_si512 (),
4247 (__mmask8) -1);
4248}
4249
4250static __inline__ __m512i __DEFAULT_FN_ATTRS
4251_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4252{
4253 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4254 (__v8di) __W,
4255 (__mmask8) __U);
4256}
4257
4258static __inline__ __m512i __DEFAULT_FN_ATTRS
4259_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4260{
4261 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4262 (__v8di)
4263 _mm512_setzero_si512 (),
4264 (__mmask8) __U);
4265}
4266
4267static __inline__ __m512i __DEFAULT_FN_ATTRS
4268_mm512_cvtepi32_epi64 (__m256i __X)
4269{
4270 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4271 (__v8di)
4272 _mm512_setzero_si512 (),
4273 (__mmask8) -1);
4274}
4275
4276static __inline__ __m512i __DEFAULT_FN_ATTRS
4277_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4278{
4279 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4280 (__v8di) __W,
4281 (__mmask8) __U);
4282}
4283
4284static __inline__ __m512i __DEFAULT_FN_ATTRS
4285_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4286{
4287 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4288 (__v8di)
4289 _mm512_setzero_si512 (),
4290 (__mmask8) __U);
4291}
4292
4293static __inline__ __m512i __DEFAULT_FN_ATTRS
4294_mm512_cvtepi16_epi32 (__m256i __A)
4295{
4296 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4297 (__v16si)
4298 _mm512_setzero_si512 (),
4299 (__mmask16) -1);
4300}
4301
4302static __inline__ __m512i __DEFAULT_FN_ATTRS
4303_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4304{
4305 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4306 (__v16si) __W,
4307 (__mmask16) __U);
4308}
4309
4310static __inline__ __m512i __DEFAULT_FN_ATTRS
4311_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4312{
4313 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4314 (__v16si)
4315 _mm512_setzero_si512 (),
4316 (__mmask16) __U);
4317}
4318
4319static __inline__ __m512i __DEFAULT_FN_ATTRS
4320_mm512_cvtepi16_epi64 (__m128i __A)
4321{
4322 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4323 (__v8di)
4324 _mm512_setzero_si512 (),
4325 (__mmask8) -1);
4326}
4327
4328static __inline__ __m512i __DEFAULT_FN_ATTRS
4329_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4330{
4331 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4332 (__v8di) __W,
4333 (__mmask8) __U);
4334}
4335
4336static __inline__ __m512i __DEFAULT_FN_ATTRS
4337_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4338{
4339 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4340 (__v8di)
4341 _mm512_setzero_si512 (),
4342 (__mmask8) __U);
4343}
4344
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004345static __inline__ __m512i __DEFAULT_FN_ATTRS
4346_mm512_cvtepu8_epi32 (__m128i __A)
4347{
4348 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4349 (__v16si)
4350 _mm512_setzero_si512 (),
4351 (__mmask16) -1);
4352}
4353
4354static __inline__ __m512i __DEFAULT_FN_ATTRS
4355_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4356{
4357 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4358 (__v16si) __W,
4359 (__mmask16) __U);
4360}
4361
4362static __inline__ __m512i __DEFAULT_FN_ATTRS
4363_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4364{
4365 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4366 (__v16si)
4367 _mm512_setzero_si512 (),
4368 (__mmask16) __U);
4369}
4370
4371static __inline__ __m512i __DEFAULT_FN_ATTRS
4372_mm512_cvtepu8_epi64 (__m128i __A)
4373{
4374 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4375 (__v8di)
4376 _mm512_setzero_si512 (),
4377 (__mmask8) -1);
4378}
4379
4380static __inline__ __m512i __DEFAULT_FN_ATTRS
4381_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4382{
4383 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4384 (__v8di) __W,
4385 (__mmask8) __U);
4386}
4387
4388static __inline__ __m512i __DEFAULT_FN_ATTRS
4389_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4390{
4391 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4392 (__v8di)
4393 _mm512_setzero_si512 (),
4394 (__mmask8) __U);
4395}
4396
4397static __inline__ __m512i __DEFAULT_FN_ATTRS
4398_mm512_cvtepu32_epi64 (__m256i __X)
4399{
4400 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4401 (__v8di)
4402 _mm512_setzero_si512 (),
4403 (__mmask8) -1);
4404}
4405
4406static __inline__ __m512i __DEFAULT_FN_ATTRS
4407_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4408{
4409 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4410 (__v8di) __W,
4411 (__mmask8) __U);
4412}
4413
4414static __inline__ __m512i __DEFAULT_FN_ATTRS
4415_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4416{
4417 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4418 (__v8di)
4419 _mm512_setzero_si512 (),
4420 (__mmask8) __U);
4421}
4422
4423static __inline__ __m512i __DEFAULT_FN_ATTRS
4424_mm512_cvtepu16_epi32 (__m256i __A)
4425{
4426 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4427 (__v16si)
4428 _mm512_setzero_si512 (),
4429 (__mmask16) -1);
4430}
4431
4432static __inline__ __m512i __DEFAULT_FN_ATTRS
4433_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4434{
4435 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4436 (__v16si) __W,
4437 (__mmask16) __U);
4438}
4439
4440static __inline__ __m512i __DEFAULT_FN_ATTRS
4441_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4442{
4443 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4444 (__v16si)
4445 _mm512_setzero_si512 (),
4446 (__mmask16) __U);
4447}
4448
4449static __inline__ __m512i __DEFAULT_FN_ATTRS
4450_mm512_cvtepu16_epi64 (__m128i __A)
4451{
4452 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4453 (__v8di)
4454 _mm512_setzero_si512 (),
4455 (__mmask8) -1);
4456}
4457
4458static __inline__ __m512i __DEFAULT_FN_ATTRS
4459_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4460{
4461 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4462 (__v8di) __W,
4463 (__mmask8) __U);
4464}
4465
4466static __inline__ __m512i __DEFAULT_FN_ATTRS
4467_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4468{
4469 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4470 (__v8di)
4471 _mm512_setzero_si512 (),
4472 (__mmask8) __U);
4473}
4474
Michael Zuckermane98cc742016-02-23 15:59:47 +00004475static __inline__ __m512i __DEFAULT_FN_ATTRS
4476_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4477{
4478 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4479 (__v16si) __B,
4480 (__v16si)
4481 _mm512_setzero_si512 (),
4482 (__mmask16) -1);
4483}
4484
4485static __inline__ __m512i __DEFAULT_FN_ATTRS
4486_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4487{
4488 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4489 (__v16si) __B,
4490 (__v16si) __W,
4491 (__mmask16) __U);
4492}
4493
4494static __inline__ __m512i __DEFAULT_FN_ATTRS
4495_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4496{
4497 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4498 (__v16si) __B,
4499 (__v16si)
4500 _mm512_setzero_si512 (),
4501 (__mmask16) __U);
4502}
4503
4504static __inline__ __m512i __DEFAULT_FN_ATTRS
4505_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4506{
4507 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4508 (__v8di) __B,
4509 (__v8di)
4510 _mm512_setzero_si512 (),
4511 (__mmask8) -1);
4512}
4513
4514static __inline__ __m512i __DEFAULT_FN_ATTRS
4515_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4516{
4517 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4518 (__v8di) __B,
4519 (__v8di) __W,
4520 (__mmask8) __U);
4521}
4522
4523static __inline__ __m512i __DEFAULT_FN_ATTRS
4524_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4525{
4526 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4527 (__v8di) __B,
4528 (__v8di)
4529 _mm512_setzero_si512 (),
4530 (__mmask8) __U);
4531}
4532
4533
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004534
Craig Topper4cac1c22015-01-25 23:30:07 +00004535#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004536 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4537 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004538 (__mmask16)-1); })
4539
4540#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004541 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4542 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004543 (__mmask16)-1); })
4544
4545#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004546 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4547 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004548 (__mmask8)-1); })
4549
4550#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004551 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4552 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004553 (__mmask8)-1); })
4554
4555#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004556 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
4557 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004558 (__mmask16)(m)); })
4559
4560#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004561 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
4562 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004563 (__mmask16)(m)); })
4564
4565#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004566 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
4567 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004568 (__mmask8)(m)); })
4569
4570#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004571 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
4572 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004573 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004574
Michael Zuckerman38a27272016-02-22 09:05:41 +00004575#define _mm512_rol_epi32(a, b) __extension__ ({ \
4576 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4577 (__v16si)\
4578 _mm512_setzero_si512 (),\
4579 (__mmask16) -1); })
4580
4581#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
4582 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4583 (__v16si) (W),\
4584 (__mmask16) (U)); })
4585
4586#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
4587 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
4588 (__v16si)\
4589 _mm512_setzero_si512 (),\
4590 (__mmask16) (U)); })
4591
4592#define _mm512_rol_epi64(a, b) __extension__ ({ \
4593 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4594 (__v8di)\
4595 _mm512_setzero_si512 (),\
4596 (__mmask8) -1); })
4597
4598#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
4599 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4600 (__v8di) (W),\
4601 (__mmask8) (U)); })
4602
4603#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
4604 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
4605 (__v8di)\
4606 _mm512_setzero_si512 (),\
4607 (__mmask8) (U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004608static __inline__ __m512i __DEFAULT_FN_ATTRS
4609_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4610{
4611 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4612 (__v16si) __B,
4613 (__v16si)
4614 _mm512_setzero_si512 (),
4615 (__mmask16) -1);
4616}
4617
4618static __inline__ __m512i __DEFAULT_FN_ATTRS
4619_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4620{
4621 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4622 (__v16si) __B,
4623 (__v16si) __W,
4624 (__mmask16) __U);
4625}
4626
4627static __inline__ __m512i __DEFAULT_FN_ATTRS
4628_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4629{
4630 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4631 (__v16si) __B,
4632 (__v16si)
4633 _mm512_setzero_si512 (),
4634 (__mmask16) __U);
4635}
4636
4637static __inline__ __m512i __DEFAULT_FN_ATTRS
4638_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4639{
4640 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4641 (__v8di) __B,
4642 (__v8di)
4643 _mm512_setzero_si512 (),
4644 (__mmask8) -1);
4645}
4646
4647static __inline__ __m512i __DEFAULT_FN_ATTRS
4648_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4649{
4650 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4651 (__v8di) __B,
4652 (__v8di) __W,
4653 (__mmask8) __U);
4654}
4655
4656static __inline__ __m512i __DEFAULT_FN_ATTRS
4657_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4658{
4659 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4660 (__v8di) __B,
4661 (__v8di)
4662 _mm512_setzero_si512 (),
4663 (__mmask8) __U);
4664}
4665
4666#define _mm512_ror_epi32( __A, __B) __extension__ ({ \
4667__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4668 (__v16si)\
4669 _mm512_setzero_si512 (),\
4670 (__mmask16) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004671})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004672
4673#define _mm512_mask_ror_epi32( __W, __U, __A, __B) __extension__ ({ \
4674__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4675 (__v16si)( __W),\
4676 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004677})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004678
4679#define _mm512_maskz_ror_epi32( __U, __A, __B) __extension__ ({ \
4680__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
4681 (__v16si)\
4682 _mm512_setzero_si512 (),\
4683 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004684})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004685
4686#define _mm512_ror_epi64( __A, __B) __extension__ ({ \
4687__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4688 (__v8di)\
4689 _mm512_setzero_si512 (),\
4690 (__mmask8) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004691})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004692
4693#define _mm512_mask_ror_epi64( __W, __U, __A, __B) __extension__ ({ \
4694__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4695 (__v8di)( __W),\
4696 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004697})
Michael Zuckerman0231f162016-02-23 13:41:13 +00004698
4699#define _mm512_maskz_ror_epi64( __U, __A, __B) __extension__ ({ \
4700__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
4701 (__v8di)\
4702 _mm512_setzero_si512 (),\
4703 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00004704})
Michael Zuckerman38a27272016-02-22 09:05:41 +00004705
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004706#define _mm512_slli_epi32( __A, __B) __extension__ ({ \
4707__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
4708 (__v16si)\
4709 _mm512_setzero_si512 (),\
4710 (__mmask16) -1);\
4711})
4712
4713#define _mm512_mask_slli_epi32( __W, __U, __A ,__B) __extension__ ({ \
4714__builtin_ia32_pslldi512_mask ((__v16si) (__A), (__B),\
4715 (__v16si)( __W),\
4716 (__mmask16)( __U));\
4717})
4718
4719#define _mm512_maskz_slli_epi32( __U, __A, __B) __extension__ ({ \
4720__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
4721 (__v16si)\
4722 _mm512_setzero_si512 (),\
4723 (__mmask16)( __U));\
4724})
4725
4726#define _mm512_slli_epi64( __A, __B) __extension__ ({ \
4727__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
4728 (__v8di)\
4729 _mm512_setzero_si512 (),\
4730 (__mmask8) -1);\
4731})
4732
4733#define _mm512_mask_slli_epi64( __W, __U, __A ,__B) __extension__ ({ \
4734__builtin_ia32_psllqi512_mask ((__v8di) (__A), (__B),\
4735 (__v8di)( __W),\
4736 (__mmask8)( __U));\
4737})
4738
4739#define _mm512_maskz_slli_epi64( __U, __A, __B) __extension__ ({ \
4740__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
4741 (__v8di)\
4742 _mm512_setzero_si512 (),\
4743 (__mmask8)( __U));\
4744})
4745
Michael Zuckerman38a27272016-02-22 09:05:41 +00004746
Michael Zuckermand176d742016-03-01 17:49:03 +00004747
4748#define _mm512_srli_epi32( __A, __B) __extension__ ({ \
4749__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4750 (__v16si)\
4751 _mm512_setzero_si512 (),\
4752 (__mmask16) -1);\
4753})
4754
4755#define _mm512_mask_srli_epi32( __W, __U, __A, __B) __extension__ ({ \
4756__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4757 (__v16si)( __W),\
4758 (__mmask16)( __U));\
4759})
4760
4761#define _mm512_maskz_srli_epi32( __U, __A, __B) __extension__ ({ \
4762__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
4763 (__v16si)\
4764 _mm512_setzero_si512 (),\
4765 (__mmask16)( __U));\
4766})
4767
4768#define _mm512_srli_epi64( __A, __B) __extension__ ({ \
4769__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4770 (__v8di)\
4771 _mm512_setzero_si512 (),\
4772 (__mmask8) -1);\
4773})
4774
4775#define _mm512_mask_srli_epi64( __W, __U, __A, __B) __extension__ ({ \
4776__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4777 (__v8di)( __W),\
4778 (__mmask8)( __U));\
4779})
4780
4781#define _mm512_maskz_srli_epi64( __U, __A, __B) __extension__ ({ \
4782__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
4783 (__v8di)\
4784 _mm512_setzero_si512 (),\
4785 (__mmask8)( __U));\
4786})
4787
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004788static __inline__ __m512i __DEFAULT_FN_ATTRS
4789_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4790{
4791 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4792 (__v16si) __W,
4793 (__mmask16) __U);
4794}
4795
4796static __inline__ __m512i __DEFAULT_FN_ATTRS
4797_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4798{
4799 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4800 (__v16si)
4801 _mm512_setzero_si512 (),
4802 (__mmask16) __U);
4803}
4804
4805static __inline__ void __DEFAULT_FN_ATTRS
4806_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
4807{
4808 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
4809 (__mmask16) __U);
4810}
4811
4812static __inline__ __m512i __DEFAULT_FN_ATTRS
4813_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
4814{
4815 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4816 (__v8di) __W,
4817 (__mmask8) __U);
4818}
4819
4820static __inline__ __m512i __DEFAULT_FN_ATTRS
4821_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
4822{
4823 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
4824 (__v8di)
4825 _mm512_setzero_si512 (),
4826 (__mmask8) __U);
4827}
4828
4829static __inline__ __m512i __DEFAULT_FN_ATTRS
4830_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4831{
4832 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4833 (__v8di) __W,
4834 (__mmask8) __U);
4835}
4836
4837static __inline__ __m512i __DEFAULT_FN_ATTRS
4838_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
4839{
4840 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
4841 (__v8di)
4842 _mm512_setzero_si512 (),
4843 (__mmask8) __U);
4844}
4845
4846static __inline__ void __DEFAULT_FN_ATTRS
4847_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
4848{
4849 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
4850 (__mmask8) __U);
4851}
4852
4853
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00004854
4855static __inline__ __m512d __DEFAULT_FN_ATTRS
4856_mm512_movedup_pd (__m512d __A)
4857{
4858 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4859 (__v8df)
4860 _mm512_undefined_pd (),
4861 (__mmask8) -1);
4862}
4863
4864static __inline__ __m512d __DEFAULT_FN_ATTRS
4865_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
4866{
4867 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4868 (__v8df) __W,
4869 (__mmask8) __U);
4870}
4871
4872static __inline__ __m512d __DEFAULT_FN_ATTRS
4873_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
4874{
4875 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
4876 (__v8df)
4877 _mm512_setzero_pd (),
4878 (__mmask8) __U);
4879}
4880
Michael Zuckermandef78752016-03-28 12:23:09 +00004881#define _mm512_fixupimm_round_pd( __A, __B, __C, __imm, __R) __extension__ ({ \
4882__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4883 (__v8df)( __B),\
4884 (__v8di)( __C),\
4885 (__imm),\
4886 (__mmask8) -1, (__R));\
4887})
4888
4889#define _mm512_mask_fixupimm_round_pd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4890__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4891 (__v8df)( __B),\
4892 (__v8di)( __C),\
4893 (__imm),\
4894 (__mmask8)( __U), (__R));\
4895})
4896
4897#define _mm512_fixupimm_pd( __A, __B, __C, __imm) __extension__ ({ \
4898__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4899 (__v8df)( __B),\
4900 (__v8di)( __C),\
4901 ( __imm),\
4902 (__mmask8) -1,\
4903 _MM_FROUND_CUR_DIRECTION);\
4904})
4905
4906#define _mm512_mask_fixupimm_pd( __A, __U, __B, __C, __imm) __extension__ ({ \
4907__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
4908 (__v8df)( __B),\
4909 (__v8di)( __C),\
4910 ( __imm),\
4911 (__mmask8)( __U),\
4912 _MM_FROUND_CUR_DIRECTION);\
4913})
4914
4915#define _mm512_maskz_fixupimm_round_pd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4916__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
4917 (__v8df)( __B),\
4918 (__v8di)( __C),\
4919 (__imm),\
4920 (__mmask8)( __U), (__R));\
4921})
4922
4923#define _mm512_maskz_fixupimm_pd( __U, __A, __B, __C, __imm) __extension__ ({ \
4924__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
4925 (__v8df)( __B),\
4926 (__v8di)( __C),\
4927 ( __imm),\
4928 (__mmask8)( __U),\
4929 _MM_FROUND_CUR_DIRECTION);\
4930})
4931
4932#define _mm512_fixupimm_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
4933__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4934 (__v16sf)( __B),\
4935 (__v16si)( __C),\
4936 (__imm),\
4937 (__mmask16) -1, (__R));\
4938})
4939
4940#define _mm512_mask_fixupimm_round_ps( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4941__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4942 (__v16sf)( __B),\
4943 (__v16si)( __C),\
4944 (__imm),\
4945 (__mmask16)( __U), (__R));\
4946})
4947
4948#define _mm512_fixupimm_ps( __A, __B, __C, __imm) __extension__ ({ \
4949__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4950 (__v16sf)( __B),\
4951 (__v16si)( __C),\
4952 ( __imm),\
4953 (__mmask16) -1,\
4954 _MM_FROUND_CUR_DIRECTION);\
4955})
4956
4957#define _mm512_mask_fixupimm_ps( __A, __U, __B, __C, __imm) __extension__ ({ \
4958__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
4959 (__v16sf)( __B),\
4960 (__v16si)( __C),\
4961 ( __imm),\
4962 (__mmask16)( __U),\
4963 _MM_FROUND_CUR_DIRECTION);\
4964})
4965
4966#define _mm512_maskz_fixupimm_round_ps( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4967__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4968 (__v16sf)( __B),\
4969 (__v16si)( __C),\
4970 (__imm),\
4971 (__mmask16)( __U), (__R));\
4972})
4973
4974#define _mm512_maskz_fixupimm_ps( __U, __A, __B, __C, __imm) __extension__ ({ \
4975__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
4976 (__v16sf)( __B),\
4977 (__v16si)( __C),\
4978 ( __imm),\
4979 (__mmask16)( __U),\
4980 _MM_FROUND_CUR_DIRECTION);\
4981})
4982
4983#define _mm_fixupimm_round_sd( __A, __B, __C, __imm, __R) __extension__ ({ \
4984__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4985 (__v2df)( __B),\
4986 (__v2di)( __C), __imm,\
4987 (__mmask8) -1, (__R));\
4988})
4989
4990#define _mm_mask_fixupimm_round_sd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4991__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4992 (__v2df)( __B),\
4993 (__v2di)( __C), __imm,\
4994 (__mmask8)( __U), (__R));\
4995})
4996
4997#define _mm_fixupimm_sd( __A, __B, __C, __imm) __extension__ ({ \
4998__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4999 (__v2df)( __B),\
5000 (__v2di)( __C),( __imm),\
5001 (__mmask8) -1,\
5002 _MM_FROUND_CUR_DIRECTION);\
5003})
5004
5005#define _mm_mask_fixupimm_sd( __A, __U, __B, __C, __imm) __extension__ ({ \
5006__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
5007 (__v2df)( __B),\
5008 (__v2di)( __C),( __imm),\
5009 (__mmask8)( __U),\
5010 _MM_FROUND_CUR_DIRECTION);\
5011})
5012
5013#define _mm_maskz_fixupimm_round_sd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
5014__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
5015 (__v2df)( __B),\
5016 (__v2di)( __C),\
5017 __imm,\
5018 (__mmask8)( __U), (__R));\
5019})
5020
5021#define _mm_maskz_fixupimm_sd( __U, __A, __B, __C, __imm) __extension__ ({ \
5022__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
5023 (__v2df)( __B),\
5024 (__v2di)( __C),\
5025 ( __imm),\
5026 (__mmask8)( __U),\
5027 _MM_FROUND_CUR_DIRECTION);\
5028})
5029
5030#define _mm_fixupimm_round_ss( __A, __B, __C, __imm, __R) __extension__ ({ \
5031__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
5032 (__v4sf)( __B),\
5033 (__v4si)( __C), (__imm),\
5034 (__mmask8) -1, (__R));\
5035})
5036
5037#define _mm_mask_fixupimm_round_ss( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
5038__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
5039 (__v4sf)( __B),\
5040 (__v4si)( __C), (__imm),\
5041 (__mmask8)( __U), (__R));\
5042})
5043
5044#define _mm_fixupimm_ss( __A, __B, __C, __imm) __extension__ ({ \
5045__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
5046 (__v4sf)( __B),\
5047 (__v4si)( __C),( __imm),\
5048 (__mmask8) -1,\
5049 _MM_FROUND_CUR_DIRECTION);\
5050})
5051
5052#define _mm_mask_fixupimm_ss( __A, __U, __B, __C, __imm) __extension__ ({ \
5053__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
5054 (__v4sf)( __B),\
5055 (__v4si)( __C),( __imm),\
5056 (__mmask8)( __U),\
5057 _MM_FROUND_CUR_DIRECTION);\
5058})
5059
5060#define _mm_maskz_fixupimm_round_ss( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
5061__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
5062 (__v4sf)( __B),\
5063 (__v4si)( __C), (__imm),\
5064 (__mmask8)( __U), (__R));\
5065})
5066
5067#define _mm_maskz_fixupimm_ss( __U, __A, __B, __C, __imm) __extension__ ({ \
5068__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
5069 (__v4sf)( __B),\
5070 (__v4si)( __C),( __imm),\
5071 (__mmask8)( __U),\
5072 _MM_FROUND_CUR_DIRECTION);\
5073})
5074
5075#define _mm_getexp_round_sd( __A, __B ,__R) __extension__ ({ \
5076__builtin_ia32_getexpsd128_round_mask ((__v2df)(__A),\
5077 (__v2df)( __B), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
5078 ( __R));\
5079})
5080
5081
5082static __inline__ __m128d __DEFAULT_FN_ATTRS
5083_mm_getexp_sd (__m128d __A, __m128d __B)
5084{
5085 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5086 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5087}
5088
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005089static __inline__ __m128d __DEFAULT_FN_ATTRS
5090_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5091{
5092 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5093 (__v2df) __B,
5094 (__v2df) __W,
5095 (__mmask8) __U,
5096 _MM_FROUND_CUR_DIRECTION);
5097}
5098
5099#define _mm_mask_getexp_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
5100__builtin_ia32_getexpsd128_round_mask ((__v2df) __A,\
5101 (__v2df) __B,\
5102 (__v2df) __W,\
5103 (__mmask8) __U,\
5104 __R);\
5105})
5106
5107static __inline__ __m128d __DEFAULT_FN_ATTRS
5108_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
5109{
5110 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5111 (__v2df) __B,
5112 (__v2df) _mm_setzero_pd (),
5113 (__mmask8) __U,
5114 _MM_FROUND_CUR_DIRECTION);
5115}
5116
5117#define _mm_maskz_getexp_round_sd( __U, __A, __B, __R) __extension__ ({\
5118__builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,\
5119 (__v2df) __B,\
5120 (__v2df) _mm_setzero_pd (),\
5121 (__mmask8) __U,\
5122 __R);\
5123})
5124
Michael Zuckermandef78752016-03-28 12:23:09 +00005125#define _mm_getexp_round_ss( __A, __B, __R) __extension__ ({ \
5126__builtin_ia32_getexpss128_round_mask ((__v4sf)( __A),\
5127 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
5128 ( __R));\
5129})
5130
5131static __inline__ __m128 __DEFAULT_FN_ATTRS
5132_mm_getexp_ss (__m128 __A, __m128 __B)
5133{
5134 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5135 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5136}
5137
Craig Topper58187d32016-05-17 04:41:29 +00005138static __inline__ __m128 __DEFAULT_FN_ATTRS
5139_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005140{
Craig Topper58187d32016-05-17 04:41:29 +00005141 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005142 (__v4sf) __B,
5143 (__v4sf) __W,
5144 (__mmask8) __U,
5145 _MM_FROUND_CUR_DIRECTION);
5146}
5147
5148#define _mm_mask_getexp_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
5149__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
5150 (__v4sf) __B,\
5151 (__v4sf) __W,\
5152 (__mmask8) __U,\
5153 __R);\
5154})
5155
Craig Topper58187d32016-05-17 04:41:29 +00005156static __inline__ __m128 __DEFAULT_FN_ATTRS
5157_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005158{
Craig Topper58187d32016-05-17 04:41:29 +00005159 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005160 (__v4sf) __B,
5161 (__v4sf) _mm_setzero_pd (),
5162 (__mmask8) __U,
5163 _MM_FROUND_CUR_DIRECTION);
5164}
5165
5166#define _mm_maskz_getexp_round_ss( __U, __A, __B, __R) __extension__ ({\
5167__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
5168 (__v4sf) __B,\
5169 (__v4sf) _mm_setzero_ps (),\
5170 (__mmask8) __U,\
5171 __R);\
5172})
5173
Michael Zuckermandef78752016-03-28 12:23:09 +00005174#define _mm_getmant_round_sd( __A, __B, __C, __D, __R) __extension__ ({ \
5175__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
5176 (__v2df)( __B),\
5177 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
5178 ( __R));\
5179})
5180
5181#define _mm_getmant_sd( __A, __B, __C, __D) __extension__ ({ \
5182__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
5183 (__v2df)( __B),\
5184 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
5185 _MM_FROUND_CUR_DIRECTION);\
5186})
5187
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005188#define _mm_mask_getmant_sd( __W, __U, __A, __B, __C, __D) __extension__ ({\
5189__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
5190 (__v2df) __B,\
5191 (( __D) << 2) |( __C),\
5192 (__v2df) __W,\
5193 (__mmask8) __U,\
5194 _MM_FROUND_CUR_DIRECTION);\
5195})
5196
5197#define _mm_mask_getmant_round_sd( __W, __U, __A, __B, __C, __D, __R)({\
5198__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
5199 (__v2df) __B,\
5200 (( __D) << 2) |( __C),\
5201 (__v2df) __W,\
5202 (__mmask8) __U,\
5203 __R);\
5204})
5205
5206#define _mm_maskz_getmant_sd( __U, __A, __B, __C, __D) __extension__ ({\
5207__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
5208 (__v2df) __B,\
5209 (( __D) << 2) |( __C),\
5210 (__v2df) _mm_setzero_pd (),\
5211 (__mmask8) __U,\
5212 _MM_FROUND_CUR_DIRECTION);\
5213})
5214
5215#define _mm_maskz_getmant_round_sd( __U, __A, __B, __C, __D, __R) __extension__ ({\
5216__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
5217 (__v2df) __B,\
5218 (( __D) << 2) |( __C),\
5219 (__v2df) _mm_setzero_pd (),\
5220 (__mmask8) __U,\
5221 __R);\
5222})
5223
Michael Zuckermandef78752016-03-28 12:23:09 +00005224#define _mm_getmant_round_ss( __A, __B, __C, __D, __R) __extension__ ({ \
5225__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
5226 (__v4sf)( __B),\
5227 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
5228 ( __R));\
5229})
5230
5231#define _mm_getmant_ss(__A, __B, __C, __D) __extension__ ({ \
5232__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
5233 (__v4sf)( __B),\
5234 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
5235 _MM_FROUND_CUR_DIRECTION);\
5236})
5237
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005238#define _mm_mask_getmant_ss( __W, __U, __A, __B, __C, __D) __extension__ ({\
5239__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
5240 (__v4sf) __B,\
5241 (( __D) << 2) |( __C),\
5242 (__v4sf) __W,\
5243 (__mmask8) __U,\
5244 _MM_FROUND_CUR_DIRECTION);\
5245})
5246
5247#define _mm_mask_getmant_round_ss( __W, __U, __A, __B, __C, __D, __R)({\
5248__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
5249 (__v4sf) __B,\
5250 (( __D) << 2) |( __C),\
5251 (__v4sf) __W,\
5252 (__mmask8) __U,\
5253 __R);\
5254})
5255
5256#define _mm_maskz_getmant_ss( __U, __A, __B, __C, __D) __extension__ ({\
5257__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
5258 (__v4sf) __B,\
5259 (( __D) << 2) |( __C),\
5260 (__v4sf) _mm_setzero_pd (),\
5261 (__mmask8) __U,\
5262 _MM_FROUND_CUR_DIRECTION);\
5263})
5264
5265#define _mm_maskz_getmant_round_ss( __U, __A, __B, __C, __D, __R) __extension__ ({\
5266__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
5267 (__v4sf) __B,\
5268 (( __D) << 2) |( __C),\
5269 (__v4sf) _mm_setzero_ps (),\
5270 (__mmask8) __U,\
5271 __R);\
5272})
Michael Zuckermandef78752016-03-28 12:23:09 +00005273
5274static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5275_mm512_kmov (__mmask16 __A)
5276{
5277 return __A;
5278}
5279
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005280#define _mm_comi_round_sd(__A, __B, __P, __R) __extension__ ({\
5281__builtin_ia32_vcomisd ((__v2df) (__A), (__v2df) (__B), ( __P), ( __R));\
5282})
5283
5284#define _mm_comi_round_ss( __A, __B, __P, __R) __extension__ ({\
5285__builtin_ia32_vcomiss ((__v4sf) (__A), (__v4sf) (__B), ( __P), ( __R));\
5286})
5287
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005288static __inline__ __m512d __DEFAULT_FN_ATTRS
5289_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5290{
5291 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5292 (__v8df) __B,
5293 (__v8df) __W,
5294 (__mmask8) __U);
5295}
Michael Zuckerman8d161992016-04-10 17:24:03 +00005296#define _mm_cvt_roundsd_si64( __A, __R) __extension__ ({ \
5297__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
5298})
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005299static __inline__ __m512i __DEFAULT_FN_ATTRS
5300_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5301 __mmask16 __U, __m512i __B)
5302{
5303 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5304 (__v16si) __I
5305 /* idx */ ,
5306 (__v16si) __B,
5307 (__mmask16) __U);
5308}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005309static __inline__ __m512i __DEFAULT_FN_ATTRS
5310_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5311{
5312 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5313 (__v16si) __B,
5314 (__v16si)
5315 _mm512_setzero_si512 (),
5316 (__mmask16) -1);
5317}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005318
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005319static __inline__ __m512i __DEFAULT_FN_ATTRS
5320_mm512_sll_epi32 (__m512i __A, __m128i __B)
5321{
5322 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5323 (__v4si) __B,
5324 (__v16si)
5325 _mm512_setzero_si512 (),
5326 (__mmask16) -1);
5327}
5328
5329static __inline__ __m512i __DEFAULT_FN_ATTRS
5330_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5331{
5332 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5333 (__v4si) __B,
5334 (__v16si) __W,
5335 (__mmask16) __U);
5336}
5337
5338static __inline__ __m512i __DEFAULT_FN_ATTRS
5339_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5340{
5341 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5342 (__v4si) __B,
5343 (__v16si)
5344 _mm512_setzero_si512 (),
5345 (__mmask16) __U);
5346}
5347
5348static __inline__ __m512i __DEFAULT_FN_ATTRS
5349_mm512_sll_epi64 (__m512i __A, __m128i __B)
5350{
5351 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5352 (__v2di) __B,
5353 (__v8di)
5354 _mm512_setzero_si512 (),
5355 (__mmask8) -1);
5356}
5357
5358static __inline__ __m512i __DEFAULT_FN_ATTRS
5359_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5360{
5361 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5362 (__v2di) __B,
5363 (__v8di) __W,
5364 (__mmask8) __U);
5365}
5366
5367static __inline__ __m512i __DEFAULT_FN_ATTRS
5368_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5369{
5370 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5371 (__v2di) __B,
5372 (__v8di)
5373 _mm512_setzero_si512 (),
5374 (__mmask8) __U);
5375}
5376
5377static __inline__ __m512i __DEFAULT_FN_ATTRS
5378_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5379{
5380 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5381 (__v16si) __Y,
5382 (__v16si)
5383 _mm512_setzero_si512 (),
5384 (__mmask16) -1);
5385}
5386
5387static __inline__ __m512i __DEFAULT_FN_ATTRS
5388_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5389{
5390 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5391 (__v16si) __Y,
5392 (__v16si) __W,
5393 (__mmask16) __U);
5394}
5395
5396static __inline__ __m512i __DEFAULT_FN_ATTRS
5397_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5398{
5399 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5400 (__v16si) __Y,
5401 (__v16si)
5402 _mm512_setzero_si512 (),
5403 (__mmask16) __U);
5404}
5405
5406static __inline__ __m512i __DEFAULT_FN_ATTRS
5407_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5408{
5409 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5410 (__v8di) __Y,
5411 (__v8di)
5412 _mm512_undefined_pd (),
5413 (__mmask8) -1);
5414}
5415
5416static __inline__ __m512i __DEFAULT_FN_ATTRS
5417_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5418{
5419 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5420 (__v8di) __Y,
5421 (__v8di) __W,
5422 (__mmask8) __U);
5423}
5424
5425static __inline__ __m512i __DEFAULT_FN_ATTRS
5426_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5427{
5428 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5429 (__v8di) __Y,
5430 (__v8di)
5431 _mm512_setzero_si512 (),
5432 (__mmask8) __U);
5433}
5434
5435static __inline__ __m512i __DEFAULT_FN_ATTRS
5436_mm512_sra_epi32 (__m512i __A, __m128i __B)
5437{
5438 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5439 (__v4si) __B,
5440 (__v16si)
5441 _mm512_setzero_si512 (),
5442 (__mmask16) -1);
5443}
5444
5445static __inline__ __m512i __DEFAULT_FN_ATTRS
5446_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5447{
5448 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5449 (__v4si) __B,
5450 (__v16si) __W,
5451 (__mmask16) __U);
5452}
5453
5454static __inline__ __m512i __DEFAULT_FN_ATTRS
5455_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5456{
5457 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5458 (__v4si) __B,
5459 (__v16si)
5460 _mm512_setzero_si512 (),
5461 (__mmask16) __U);
5462}
5463
5464static __inline__ __m512i __DEFAULT_FN_ATTRS
5465_mm512_sra_epi64 (__m512i __A, __m128i __B)
5466{
5467 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5468 (__v2di) __B,
5469 (__v8di)
5470 _mm512_setzero_si512 (),
5471 (__mmask8) -1);
5472}
5473
5474static __inline__ __m512i __DEFAULT_FN_ATTRS
5475_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5476{
5477 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5478 (__v2di) __B,
5479 (__v8di) __W,
5480 (__mmask8) __U);
5481}
5482
5483static __inline__ __m512i __DEFAULT_FN_ATTRS
5484_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5485{
5486 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5487 (__v2di) __B,
5488 (__v8di)
5489 _mm512_setzero_si512 (),
5490 (__mmask8) __U);
5491}
5492
5493static __inline__ __m512i __DEFAULT_FN_ATTRS
5494_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5495{
5496 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5497 (__v16si) __Y,
5498 (__v16si)
5499 _mm512_setzero_si512 (),
5500 (__mmask16) -1);
5501}
5502
5503static __inline__ __m512i __DEFAULT_FN_ATTRS
5504_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5505{
5506 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5507 (__v16si) __Y,
5508 (__v16si) __W,
5509 (__mmask16) __U);
5510}
5511
5512static __inline__ __m512i __DEFAULT_FN_ATTRS
5513_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5514{
5515 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5516 (__v16si) __Y,
5517 (__v16si)
5518 _mm512_setzero_si512 (),
5519 (__mmask16) __U);
5520}
5521
5522static __inline__ __m512i __DEFAULT_FN_ATTRS
5523_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5524{
5525 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5526 (__v8di) __Y,
5527 (__v8di)
5528 _mm512_setzero_si512 (),
5529 (__mmask8) -1);
5530}
5531
5532static __inline__ __m512i __DEFAULT_FN_ATTRS
5533_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5534{
5535 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5536 (__v8di) __Y,
5537 (__v8di) __W,
5538 (__mmask8) __U);
5539}
5540
5541static __inline__ __m512i __DEFAULT_FN_ATTRS
5542_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5543{
5544 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5545 (__v8di) __Y,
5546 (__v8di)
5547 _mm512_setzero_si512 (),
5548 (__mmask8) __U);
5549}
5550
5551static __inline__ __m512i __DEFAULT_FN_ATTRS
5552_mm512_srl_epi32 (__m512i __A, __m128i __B)
5553{
5554 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5555 (__v4si) __B,
5556 (__v16si)
5557 _mm512_setzero_si512 (),
5558 (__mmask16) -1);
5559}
5560
5561static __inline__ __m512i __DEFAULT_FN_ATTRS
5562_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5563{
5564 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5565 (__v4si) __B,
5566 (__v16si) __W,
5567 (__mmask16) __U);
5568}
5569
5570static __inline__ __m512i __DEFAULT_FN_ATTRS
5571_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5572{
5573 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5574 (__v4si) __B,
5575 (__v16si)
5576 _mm512_setzero_si512 (),
5577 (__mmask16) __U);
5578}
5579
5580static __inline__ __m512i __DEFAULT_FN_ATTRS
5581_mm512_srl_epi64 (__m512i __A, __m128i __B)
5582{
5583 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5584 (__v2di) __B,
5585 (__v8di)
5586 _mm512_setzero_si512 (),
5587 (__mmask8) -1);
5588}
5589
5590static __inline__ __m512i __DEFAULT_FN_ATTRS
5591_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5592{
5593 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5594 (__v2di) __B,
5595 (__v8di) __W,
5596 (__mmask8) __U);
5597}
5598
5599static __inline__ __m512i __DEFAULT_FN_ATTRS
5600_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5601{
5602 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5603 (__v2di) __B,
5604 (__v8di)
5605 _mm512_setzero_si512 (),
5606 (__mmask8) __U);
5607}
5608
5609static __inline__ __m512i __DEFAULT_FN_ATTRS
5610_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5611{
5612 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5613 (__v16si) __Y,
5614 (__v16si)
5615 _mm512_setzero_si512 (),
5616 (__mmask16) -1);
5617}
5618
5619static __inline__ __m512i __DEFAULT_FN_ATTRS
5620_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5621{
5622 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5623 (__v16si) __Y,
5624 (__v16si) __W,
5625 (__mmask16) __U);
5626}
5627
5628static __inline__ __m512i __DEFAULT_FN_ATTRS
5629_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5630{
5631 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5632 (__v16si) __Y,
5633 (__v16si)
5634 _mm512_setzero_si512 (),
5635 (__mmask16) __U);
5636}
5637
5638static __inline__ __m512i __DEFAULT_FN_ATTRS
5639_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5640{
5641 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5642 (__v8di) __Y,
5643 (__v8di)
5644 _mm512_setzero_si512 (),
5645 (__mmask8) -1);
5646}
5647
5648static __inline__ __m512i __DEFAULT_FN_ATTRS
5649_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5650{
5651 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5652 (__v8di) __Y,
5653 (__v8di) __W,
5654 (__mmask8) __U);
5655}
5656
5657static __inline__ __m512i __DEFAULT_FN_ATTRS
5658_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5659{
5660 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5661 (__v8di) __Y,
5662 (__v8di)
5663 _mm512_setzero_si512 (),
5664 (__mmask8) __U);
5665}
5666
5667#define _mm512_ternarylogic_epi32( __A, __B, __C, imm) __extension__ ({ \
5668__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
5669 (__v16si)( __B),\
5670 (__v16si)( __C),\
5671 ( imm), (__mmask16) -1);\
5672})
5673
5674#define _mm512_mask_ternarylogic_epi32( __A, __U, __B, __C, imm) __extension__ ({ \
5675__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
5676 (__v16si)( __B),\
5677 (__v16si)( __C),\
5678 ( imm), (__mmask16)( __U));\
5679})
5680
5681#define _mm512_maskz_ternarylogic_epi32( __U, __A, __B, __C, imm) __extension__ ({ \
5682__builtin_ia32_pternlogd512_maskz ((__v16si)( __A),\
5683 (__v16si)( __B),\
5684 (__v16si)( __C),\
5685 ( imm), (__mmask16)( __U));\
5686})
5687
5688#define _mm512_ternarylogic_epi64( __A, __B, __C, imm) __extension__ ({ \
5689__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
5690 (__v8di)( __B),\
5691 (__v8di)( __C),( imm),\
5692 (__mmask8) -1);\
5693})
5694
5695#define _mm512_mask_ternarylogic_epi64( __A, __U, __B, __C, imm) __extension__ ({ \
5696__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
5697 (__v8di)( __B),\
5698 (__v8di)( __C),( imm),\
5699 (__mmask8)( __U));\
5700})
5701
5702#define _mm512_maskz_ternarylogic_epi64( __U, __A, __B, __C, imm) __extension__ ({ \
5703__builtin_ia32_pternlogq512_maskz ((__v8di)( __A),\
5704 (__v8di)( __B),\
5705 (__v8di)( __C),\
5706 ( imm), (__mmask8)( __U));\
5707})
5708
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005709static __inline__ __m512d __DEFAULT_FN_ATTRS
5710_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5711{
5712 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5713 (__v8df) __B,
5714 (__v8df)
5715 _mm512_setzero_pd (),
5716 (__mmask8) __U);
5717}
5718
5719static __inline__ __m512 __DEFAULT_FN_ATTRS
5720_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5721{
5722 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5723 (__v16sf) __B,
5724 (__v16sf) __W,
5725 (__mmask16) __U);
5726}
5727
5728static __inline__ __m512 __DEFAULT_FN_ATTRS
5729_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5730{
5731 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5732 (__v16sf) __B,
5733 (__v16sf)
5734 _mm512_setzero_ps (),
5735 (__mmask16) __U);
5736}
5737
5738static __inline__ __m512d __DEFAULT_FN_ATTRS
5739_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5740{
5741 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5742 (__v8df) __B,
5743 (__v8df) __W,
5744 (__mmask8) __U);
5745}
5746
5747static __inline__ __m512d __DEFAULT_FN_ATTRS
5748_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5749{
5750 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5751 (__v8df) __B,
5752 (__v8df)
5753 _mm512_setzero_pd (),
5754 (__mmask8) __U);
5755}
5756
5757static __inline__ __m512 __DEFAULT_FN_ATTRS
5758_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5759{
5760 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5761 (__v16sf) __B,
5762 (__v16sf) __W,
5763 (__mmask16) __U);
5764}
5765
5766static __inline__ __m512 __DEFAULT_FN_ATTRS
5767_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5768{
5769 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5770 (__v16sf) __B,
5771 (__v16sf)
5772 _mm512_setzero_ps (),
5773 (__mmask16) __U);
5774}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005775
Michael Zuckerman8d161992016-04-10 17:24:03 +00005776#define _mm_cvt_roundsd_i64( __A, __R) __extension__ ({ \
5777__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
5778})
5779
5780#define _mm_cvt_roundsd_si32( __A, __R) __extension__ ({ \
5781__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
5782})
5783
5784#define _mm_cvt_roundsd_i32( __A, __R) __extension__ ({ \
5785__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
5786})
5787
5788#define _mm_cvt_roundsd_u32( __A, __R) __extension__ ({ \
5789__builtin_ia32_vcvtsd2usi32 ((__v2df)( __A),( __R));\
5790})
5791
5792static __inline__ unsigned __DEFAULT_FN_ATTRS
5793_mm_cvtsd_u32 (__m128d __A)
5794{
5795 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5796 _MM_FROUND_CUR_DIRECTION);
5797}
5798
5799#define _mm_cvt_roundsd_u64( __A, __R) __extension__ ({ \
5800__builtin_ia32_vcvtsd2usi64 ((__v2df)( __A),( __R));\
5801})
5802
5803static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5804_mm_cvtsd_u64 (__m128d __A)
5805{
5806 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5807 __A,
5808 _MM_FROUND_CUR_DIRECTION);
5809}
5810
5811#define _mm_cvt_roundss_si32( __A, __R) __extension__ ({ \
5812__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
5813})
5814
5815#define _mm_cvt_roundss_i32( __A, __R) __extension__ ({ \
5816__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
5817})
5818
5819#define _mm_cvt_roundss_si64( __A, __R) __extension__ ({ \
5820__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
5821})
5822
5823#define _mm_cvt_roundss_i64( __A, __R) __extension__ ({ \
5824__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
5825})
5826
5827#define _mm_cvt_roundss_u32( __A, __R) __extension__ ({ \
5828__builtin_ia32_vcvtss2usi32 ((__v4sf)( __A),( __R));\
5829})
5830
5831static __inline__ unsigned __DEFAULT_FN_ATTRS
5832_mm_cvtss_u32 (__m128 __A)
5833{
5834 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5835 _MM_FROUND_CUR_DIRECTION);
5836}
5837
5838#define _mm_cvt_roundss_u64( __A, __R) __extension__ ({ \
5839__builtin_ia32_vcvtss2usi64 ((__v4sf)( __A),( __R));\
5840})
5841
5842static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5843_mm_cvtss_u64 (__m128 __A)
5844{
5845 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5846 __A,
5847 _MM_FROUND_CUR_DIRECTION);
5848}
5849
5850#define _mm_cvtt_roundsd_i32( __A, __R) __extension__ ({ \
5851__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
5852})
5853
5854#define _mm_cvtt_roundsd_si32( __A, __R) __extension__ ({ \
5855__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
5856})
5857
5858static __inline__ int __DEFAULT_FN_ATTRS
5859_mm_cvttsd_i32 (__m128d __A)
5860{
5861 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
5862 _MM_FROUND_CUR_DIRECTION);
5863}
5864
5865#define _mm_cvtt_roundsd_si64( __A, __R) __extension__ ({ \
5866__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
5867})
5868
5869#define _mm_cvtt_roundsd_i64( __A, __R) __extension__ ({ \
5870__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
5871})
5872
5873static __inline__ long long __DEFAULT_FN_ATTRS
5874_mm_cvttsd_i64 (__m128d __A)
5875{
5876 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
5877 _MM_FROUND_CUR_DIRECTION);
5878}
5879
5880#define _mm_cvtt_roundsd_u32( __A, __R) __extension__ ({ \
5881__builtin_ia32_vcvttsd2usi32 ((__v2df)( __A),( __R));\
5882})
5883
5884static __inline__ unsigned __DEFAULT_FN_ATTRS
5885_mm_cvttsd_u32 (__m128d __A)
5886{
5887 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
5888 _MM_FROUND_CUR_DIRECTION);
5889}
5890
5891#define _mm_cvtt_roundsd_u64( __A, __R) __extension__ ({ \
5892__builtin_ia32_vcvttsd2usi64 ((__v2df)( __A),( __R));\
5893})
5894
5895static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5896_mm_cvttsd_u64 (__m128d __A)
5897{
5898 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
5899 __A,
5900 _MM_FROUND_CUR_DIRECTION);
5901}
5902
5903#define _mm_cvtt_roundss_i32( __A, __R) __extension__ ({ \
5904__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
5905})
5906
5907#define _mm_cvtt_roundss_si32( __A, __R) __extension__ ({ \
5908__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
5909})
5910
5911static __inline__ int __DEFAULT_FN_ATTRS
5912_mm_cvttss_i32 (__m128 __A)
5913{
5914 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
5915 _MM_FROUND_CUR_DIRECTION);
5916}
5917
5918#define _mm_cvtt_roundss_i64( __A, __R) __extension__ ({ \
5919__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
5920})
5921
5922#define _mm_cvtt_roundss_si64( __A, __R) __extension__ ({ \
5923__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
5924})
5925
5926static __inline__ long long __DEFAULT_FN_ATTRS
5927_mm_cvttss_i64 (__m128 __A)
5928{
5929 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
5930 _MM_FROUND_CUR_DIRECTION);
5931}
5932
5933#define _mm_cvtt_roundss_u32( __A, __R) __extension__ ({ \
5934__builtin_ia32_vcvttss2usi32 ((__v4sf)( __A),( __R));\
5935})
5936
5937static __inline__ unsigned __DEFAULT_FN_ATTRS
5938_mm_cvttss_u32 (__m128 __A)
5939{
5940 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
5941 _MM_FROUND_CUR_DIRECTION);
5942}
5943
5944#define _mm_cvtt_roundss_u64( __A, __R) __extension__ ({ \
5945__builtin_ia32_vcvttss2usi64 ((__v4sf)( __A),( __R));\
5946})
5947
5948static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5949_mm_cvttss_u64 (__m128 __A)
5950{
5951 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
5952 __A,
5953 _MM_FROUND_CUR_DIRECTION);
5954}
5955
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005956static __inline__ __m512d __DEFAULT_FN_ATTRS
5957_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
5958 __m512d __B)
5959{
5960 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
5961 (__v8di) __I
5962 /* idx */ ,
5963 (__v8df) __B,
5964 (__mmask8) __U);
5965}
5966
5967static __inline__ __m512 __DEFAULT_FN_ATTRS
5968_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
5969 __m512 __B)
5970{
5971 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
5972 (__v16si) __I
5973 /* idx */ ,
5974 (__v16sf) __B,
5975 (__mmask16) __U);
5976}
5977
5978static __inline__ __m512i __DEFAULT_FN_ATTRS
5979_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
5980 __mmask8 __U, __m512i __B)
5981{
5982 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
5983 (__v8di) __I
5984 /* idx */ ,
5985 (__v8di) __B,
5986 (__mmask8) __U);
5987}
5988
5989#define _mm512_permute_pd( __X, __C) __extension__ ({ \
5990__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5991 (__v8df)\
5992 _mm512_undefined_pd (),\
5993 (__mmask8) -1);\
5994})
5995
5996#define _mm512_mask_permute_pd( __W, __U, __X, __C) __extension__ ({ \
5997__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
5998 (__v8df)( __W),\
5999 (__mmask8)( __U));\
6000})
6001
6002#define _mm512_maskz_permute_pd( __U, __X, __C) __extension__ ({ \
6003__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
6004 (__v8df)\
6005 _mm512_setzero_pd (),\
6006 (__mmask8)( __U));\
6007})
6008
6009#define _mm512_permute_ps( __X, __C) __extension__ ({ \
6010__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
6011 (__v16sf)\
6012 _mm512_undefined_ps (),\
6013 (__mmask16) -1);\
6014})
6015
6016#define _mm512_mask_permute_ps( __W, __U, __X, __C) __extension__ ({ \
6017__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
6018 (__v16sf)( __W),\
6019 (__mmask16)( __U));\
6020})
6021
6022#define _mm512_maskz_permute_ps( __U, __X, __C) __extension__ ({ \
6023__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
6024 (__v16sf)\
6025 _mm512_setzero_ps (),\
6026 (__mmask16)( __U));\
6027})
6028
6029static __inline__ __m512d __DEFAULT_FN_ATTRS
6030_mm512_permutevar_pd (__m512d __A, __m512i __C)
6031{
6032 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6033 (__v8di) __C,
6034 (__v8df)
6035 _mm512_undefined_pd (),
6036 (__mmask8) -1);
6037}
6038
6039static __inline__ __m512d __DEFAULT_FN_ATTRS
6040_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6041{
6042 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6043 (__v8di) __C,
6044 (__v8df) __W,
6045 (__mmask8) __U);
6046}
6047
6048static __inline__ __m512d __DEFAULT_FN_ATTRS
6049_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6050{
6051 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6052 (__v8di) __C,
6053 (__v8df)
6054 _mm512_setzero_pd (),
6055 (__mmask8) __U);
6056}
6057
6058static __inline__ __m512 __DEFAULT_FN_ATTRS
6059_mm512_permutevar_ps (__m512 __A, __m512i __C)
6060{
6061 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6062 (__v16si) __C,
6063 (__v16sf)
6064 _mm512_undefined_ps (),
6065 (__mmask16) -1);
6066}
6067
6068static __inline__ __m512 __DEFAULT_FN_ATTRS
6069_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6070{
6071 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6072 (__v16si) __C,
6073 (__v16sf) __W,
6074 (__mmask16) __U);
6075}
6076
6077static __inline__ __m512 __DEFAULT_FN_ATTRS
6078_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6079{
6080 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6081 (__v16si) __C,
6082 (__v16sf)
6083 _mm512_setzero_ps (),
6084 (__mmask16) __U);
6085}
6086
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006087static __inline __m512d __DEFAULT_FN_ATTRS
6088_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006089{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006090 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6091 /* idx */ ,
6092 (__v8df) __A,
6093 (__v8df) __B,
6094 (__mmask8) -1);
6095}
6096
6097static __inline__ __m512d __DEFAULT_FN_ATTRS
6098_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6099{
6100 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6101 /* idx */ ,
6102 (__v8df) __A,
6103 (__v8df) __B,
6104 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006105}
6106
6107static __inline__ __m512d __DEFAULT_FN_ATTRS
6108_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6109 __m512d __B)
6110{
6111 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006112 /* idx */ ,
6113 (__v8df) __A,
6114 (__v8df) __B,
6115 (__mmask8) __U);
6116}
6117
6118static __inline __m512 __DEFAULT_FN_ATTRS
6119_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6120{
6121 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6122 /* idx */ ,
6123 (__v16sf) __A,
6124 (__v16sf) __B,
6125 (__mmask16) -1);
6126}
6127
6128static __inline__ __m512 __DEFAULT_FN_ATTRS
6129_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6130{
6131 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6132 /* idx */ ,
6133 (__v16sf) __A,
6134 (__v16sf) __B,
6135 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006136}
6137
6138static __inline__ __m512 __DEFAULT_FN_ATTRS
6139_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6140 __m512 __B)
6141{
6142 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006143 /* idx */ ,
6144 (__v16sf) __A,
6145 (__v16sf) __B,
6146 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006147}
6148
Michael Zuckerman07525092016-04-11 10:22:07 +00006149static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6150_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6151{
6152 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6153 (__v16si) __B,
6154 (__mmask16) -1);
6155}
6156
6157static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6158_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6159{
6160 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6161 (__v16si) __B, __U);
6162}
6163
6164static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6165_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6166{
6167 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6168 (__v8di) __B,
6169 (__mmask8) -1);
6170}
6171
6172static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6173_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6174{
6175 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6176 (__v8di) __B, __U);
6177}
6178
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006179#define _mm512_cvtt_roundpd_epu32( __A, __R) __extension__ ({ \
6180__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
6181 (__v8si)\
6182 _mm256_undefined_si256 (),\
6183 (__mmask8) -1,( __R));\
6184})
6185
6186#define _mm512_mask_cvtt_roundpd_epu32( __W, __U, __A, __R) __extension__ ({ \
6187__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
6188 (__v8si)( __W),\
6189 (__mmask8)( __U),( __R));\
6190})
6191
6192#define _mm512_maskz_cvtt_roundpd_epu32( __U, __A, __R) __extension__ ({ \
6193__builtin_ia32_cvttpd2udq512_mask ((__v8df)( __A),\
6194 (__v8si)\
6195 _mm256_setzero_si256 (),\
6196 (__mmask8)( __U),( __R));\
6197})
6198
6199static __inline__ __m256i __DEFAULT_FN_ATTRS
6200_mm512_cvttpd_epu32 (__m512d __A)
6201{
6202 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6203 (__v8si)
6204 _mm256_undefined_si256 (),
6205 (__mmask8) -1,
6206 _MM_FROUND_CUR_DIRECTION);
6207}
6208
6209static __inline__ __m256i __DEFAULT_FN_ATTRS
6210_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6211{
6212 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6213 (__v8si) __W,
6214 (__mmask8) __U,
6215 _MM_FROUND_CUR_DIRECTION);
6216}
6217
6218static __inline__ __m256i __DEFAULT_FN_ATTRS
6219_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6220{
6221 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6222 (__v8si)
6223 _mm256_setzero_si256 (),
6224 (__mmask8) __U,
6225 _MM_FROUND_CUR_DIRECTION);
6226}
Michael Zuckerman07525092016-04-11 10:22:07 +00006227
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006228static __inline__ __m512i __DEFAULT_FN_ATTRS
6229_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6230 __m512i __B)
6231{
6232 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6233 (__v16si) __B,
6234 (__v16si) __W,
6235 (__mmask16) __U);
6236}
6237
6238static __inline__ __m512i __DEFAULT_FN_ATTRS
6239_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6240{
6241 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6242 (__v16si) __B,
6243 (__v16si)
6244 _mm512_setzero_si512 (),
6245 (__mmask16) __U);
6246}
6247
6248static __inline__ __m512i __DEFAULT_FN_ATTRS
6249_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6250{
6251 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6252 (__v8di) __B,
6253 (__v8di)
6254 _mm512_setzero_si512 (),
6255 (__mmask8) -1);
6256}
6257
6258static __inline__ __m512i __DEFAULT_FN_ATTRS
6259_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6260{
6261 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6262 (__v8di) __B,
6263 (__v8di) __W,
6264 (__mmask8) __U);
6265}
6266
6267static __inline__ __m512i __DEFAULT_FN_ATTRS
6268_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6269{
6270 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6271 (__v8di) __B,
6272 (__v8di)
6273 _mm512_setzero_si512 (),
6274 (__mmask8) __U);
6275}
6276
6277static __inline__ __m512i __DEFAULT_FN_ATTRS
6278_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6279{
6280 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6281 (__v16si) __B,
6282 (__v16si)
6283 _mm512_setzero_si512 (),
6284 (__mmask16) -1);
6285}
6286
6287static __inline__ __m512i __DEFAULT_FN_ATTRS
6288_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6289 __m512i __B)
6290{
6291 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6292 (__v16si) __B,
6293 (__v16si) __W,
6294 (__mmask16) __U);
6295}
6296
6297static __inline__ __m512i __DEFAULT_FN_ATTRS
6298_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6299{
6300 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6301 (__v16si) __B,
6302 (__v16si)
6303 _mm512_setzero_si512 (),
6304 (__mmask16) __U);
6305}
6306
6307static __inline__ __m512i __DEFAULT_FN_ATTRS
6308_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6309{
6310 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6311 (__v8di) __B,
6312 (__v8di)
6313 _mm512_setzero_si512 (),
6314 (__mmask8) -1);
6315}
6316
6317static __inline__ __m512i __DEFAULT_FN_ATTRS
6318_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6319{
6320 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6321 (__v8di) __B,
6322 (__v8di) __W,
6323 (__mmask8) __U);
6324}
6325
6326static __inline__ __m512i __DEFAULT_FN_ATTRS
6327_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6328{
6329 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6330 (__v8di) __B,
6331 (__v8di)
6332 _mm512_setzero_si512 (),
6333 (__mmask8) __U);
6334}
6335
6336#define _mm_roundscale_round_sd( __A, __B, __imm, __R) __extension__ ({ \
6337__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
6338 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6339 (__mmask8) -1,( __imm),( __R));\
6340})
6341
6342#define _mm_roundscale_sd( __A, __B, __imm) __extension__ ({ \
6343__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
6344 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6345 (__mmask8) -1, ( __imm),\
6346 _MM_FROUND_CUR_DIRECTION);\
6347})
6348
6349#define _mm_mask_roundscale_sd( __W, __U, __A, __B, __imm) __extension__ ({ \
6350__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6351 (__v2df)( __B),\
6352 (__v2df)( __W),\
6353 (__mmask8)( __U),\
6354 (__imm),\
6355 _MM_FROUND_CUR_DIRECTION);\
6356})
6357
6358#define _mm_mask_roundscale_round_sd( __W, __U, __A, __B, __I, __R) __extension__ ({ \
6359__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6360 (__v2df)( __B),\
6361 (__v2df)( __W),\
6362 (__mmask8)( __U),\
6363 __I,\
6364 __R);\
6365})
6366
6367#define _mm_maskz_roundscale_sd( __U, __A, __B, __I) __extension__ ({ \
6368__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6369 (__v2df)( __B),\
6370 (__v2df) _mm_setzero_pd (),\
6371 (__mmask8)( __U),\
6372 __I,\
6373 _MM_FROUND_CUR_DIRECTION);\
6374})
6375
6376#define _mm_maskz_roundscale_round_sd( __U, __A, __B, __I, __R) __extension__ ({ \
6377__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
6378 (__v2df)( __B),\
6379 (__v2df) _mm_setzero_pd (),\
6380 (__mmask8)( __U),\
6381 __I,\
6382 __R);\
6383})
6384
6385#define _mm_roundscale_round_ss( __A, __B, __imm, __R) __extension__ ({ \
6386__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
6387 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6388 (__mmask8) -1, __imm, __R);\
6389})
6390
6391#define _mm_roundscale_ss( __A, __B, __imm) __extension__ ({ \
6392__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
6393 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6394 (__mmask8) -1, ( __imm),\
6395 _MM_FROUND_CUR_DIRECTION);\
6396})
6397
6398#define _mm_mask_roundscale_ss( __W, __U, __A, __B, __I) __extension__ ({ \
6399__builtin_ia32_rndscaless_round_mask ( (__v4sf) ( __A),\
6400 (__v4sf)( __B),\
6401 (__v4sf)( __W),\
6402 (__mmask8)( __U),\
6403 __I,\
6404 _MM_FROUND_CUR_DIRECTION);\
6405})
6406
6407#define _mm_mask_roundscale_round_ss( __W, __U, __A, __B, __I, __R) __extension__ ({ \
6408__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
6409 (__v4sf)( __B),\
6410 (__v4sf)( __W),\
6411 (__mmask8)( __U),\
6412 __I,\
6413 __R);\
6414})
6415
6416#define _mm_maskz_roundscale_ss( __U, __A, __B, __I) __extension__ ({ \
6417__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
6418 (__v4sf)( __B),\
6419 (__v4sf) _mm_setzero_ps (),\
6420 (__mmask8)( __U),\
6421 __I,\
6422 _MM_FROUND_CUR_DIRECTION);\
6423})
6424
6425#define _mm_maskz_roundscale_round_ss( __U, __A, __B, __I, __R) __extension__ ({ \
6426__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
6427 (__v4sf)( __B),\
6428 (__v4sf) _mm_setzero_ps (),\
6429 (__mmask8)( __U),\
6430 __I,\
6431 __R);\
6432})
6433
6434#define _mm512_scalef_round_pd( __A, __B, __R) __extension__ ({ \
6435__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6436 (__v8df)( __B),\
6437 (__v8df)\
6438 _mm512_undefined_pd (),\
6439 (__mmask8) -1,( __R));\
6440})
6441
6442#define _mm512_mask_scalef_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
6443__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6444 (__v8df)( __B),\
6445 (__v8df)( __W),\
6446 (__mmask8)( __U),( __R));\
6447})
6448
6449#define _mm512_maskz_scalef_round_pd( __U, __A, __B, __R) __extension__ ({ \
6450__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
6451 (__v8df)( __B),\
6452 (__v8df)\
6453 _mm512_setzero_pd (),\
6454 (__mmask8)( __U),( __R));\
6455})
6456
6457static __inline__ __m512d __DEFAULT_FN_ATTRS
6458_mm512_scalef_pd (__m512d __A, __m512d __B)
6459{
6460 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6461 (__v8df) __B,
6462 (__v8df)
6463 _mm512_undefined_pd (),
6464 (__mmask8) -1,
6465 _MM_FROUND_CUR_DIRECTION);
6466}
6467
6468static __inline__ __m512d __DEFAULT_FN_ATTRS
6469_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6470{
6471 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6472 (__v8df) __B,
6473 (__v8df) __W,
6474 (__mmask8) __U,
6475 _MM_FROUND_CUR_DIRECTION);
6476}
6477
6478static __inline__ __m512d __DEFAULT_FN_ATTRS
6479_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6480{
6481 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6482 (__v8df) __B,
6483 (__v8df)
6484 _mm512_setzero_pd (),
6485 (__mmask8) __U,
6486 _MM_FROUND_CUR_DIRECTION);
6487}
6488
6489#define _mm512_scalef_round_ps( __A, __B, __R) __extension__ ({ \
6490__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6491 (__v16sf)( __B),\
6492 (__v16sf)\
6493 _mm512_undefined_ps (),\
6494 (__mmask16) -1,( __R));\
6495})
6496
6497#define _mm512_mask_scalef_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
6498__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6499 (__v16sf)( __B),\
6500 (__v16sf)( __W),\
6501 (__mmask16)( __U),( __R));\
6502})
6503
6504#define _mm512_maskz_scalef_round_ps( __U, __A, __B, __R) __extension__ ({ \
6505__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
6506 (__v16sf)( __B),\
6507 (__v16sf)\
6508 _mm512_setzero_ps (),\
6509 (__mmask16)( __U),( __R));\
6510})
6511
6512static __inline__ __m512 __DEFAULT_FN_ATTRS
6513_mm512_scalef_ps (__m512 __A, __m512 __B)
6514{
6515 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6516 (__v16sf) __B,
6517 (__v16sf)
6518 _mm512_undefined_ps (),
6519 (__mmask16) -1,
6520 _MM_FROUND_CUR_DIRECTION);
6521}
6522
6523static __inline__ __m512 __DEFAULT_FN_ATTRS
6524_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6525{
6526 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6527 (__v16sf) __B,
6528 (__v16sf) __W,
6529 (__mmask16) __U,
6530 _MM_FROUND_CUR_DIRECTION);
6531}
6532
6533static __inline__ __m512 __DEFAULT_FN_ATTRS
6534_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6535{
6536 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6537 (__v16sf) __B,
6538 (__v16sf)
6539 _mm512_setzero_ps (),
6540 (__mmask16) __U,
6541 _MM_FROUND_CUR_DIRECTION);
6542}
6543
6544#define _mm_scalef_round_sd( __A, __B, __R) __extension__ ({ \
6545__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6546 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
6547 (__mmask8) -1,\
6548 ( __R));\
6549})
6550
6551static __inline__ __m128d __DEFAULT_FN_ATTRS
6552_mm_scalef_sd (__m128d __A, __m128d __B)
6553{
6554 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6555 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6556 (__mmask8) -1,
6557 _MM_FROUND_CUR_DIRECTION);
6558}
6559
6560static __inline__ __m128d __DEFAULT_FN_ATTRS
6561_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6562{
6563 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6564 (__v2df) __B,
6565 (__v2df) __W,
6566 (__mmask8) __U,
6567 _MM_FROUND_CUR_DIRECTION);
6568}
6569
6570#define _mm_mask_scalef_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
6571__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6572 (__v2df)( __B), (__v2df) __W,\
6573 (__mmask8) __U,\
6574 ( __R));\
6575})
6576
6577static __inline__ __m128d __DEFAULT_FN_ATTRS
6578_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
6579{
6580 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6581 (__v2df) __B,
6582 (__v2df) _mm_setzero_pd (),
6583 (__mmask8) __U,
6584 _MM_FROUND_CUR_DIRECTION);
6585}
6586
6587#define _mm_maskz_scalef_round_sd( __U, __A, __B, __R) __extension__ ({ \
6588__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
6589 (__v2df)( __B), (__v2df) _mm_setzero_pd (),\
6590 (__mmask8) __U,\
6591 ( __R));\
6592})
6593
6594#define _mm_scalef_round_ss( __A, __B, __R) __extension__ ({ \
6595__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6596 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6597 (__mmask8) -1,\
6598 ( __R));\
6599})
6600
6601static __inline__ __m128 __DEFAULT_FN_ATTRS
6602_mm_scalef_ss (__m128 __A, __m128 __B)
6603{
6604 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6605 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6606 (__mmask8) -1,
6607 _MM_FROUND_CUR_DIRECTION);
6608}
6609
6610static __inline__ __m128 __DEFAULT_FN_ATTRS
6611_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6612{
6613 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6614 (__v4sf) __B,
6615 (__v4sf) __W,
6616 (__mmask8) __U,
6617 _MM_FROUND_CUR_DIRECTION);
6618}
6619
6620#define _mm_mask_scalef_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
6621__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6622 (__v4sf)( __B), (__v4sf) __W,\
6623 (__mmask8) __U,\
6624 ( __R));\
6625})
6626
6627static __inline__ __m128 __DEFAULT_FN_ATTRS
6628_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
6629{
6630 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6631 (__v4sf) __B,
6632 (__v4sf) _mm_setzero_ps (),
6633 (__mmask8) __U,
6634 _MM_FROUND_CUR_DIRECTION);
6635}
6636
6637#define _mm_maskz_scalef_round_ss( __U, __A, __B, __R) __extension__ ({ \
6638__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
6639 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
6640 (__mmask8) __U,\
6641 _MM_FROUND_CUR_DIRECTION);\
6642})
6643
Craig Topper79d05c92016-05-15 20:10:06 +00006644#define _mm512_srai_epi32(A, B) __extension__ ({ \
6645 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6646 (__v16si)_mm512_setzero_si512(), \
6647 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006648
6649#define _mm512_mask_srai_epi32( __W, __U, __A, __B) __extension__ ({ \
6650__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
6651 (__v16si)( __W),\
6652 (__mmask16)( __U));\
6653})
6654
6655#define _mm512_maskz_srai_epi32( __U, __A, __B) __extension__ ({ \
6656__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
6657 (__v16si)\
6658 _mm512_setzero_si512 (),\
6659 (__mmask16)( __U));\
6660})
6661
6662#define _mm512_srai_epi64( __A, __B) __extension__ ({ \
6663__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6664 (__v8di)\
6665 _mm512_setzero_si512 (),\
6666 (__mmask8) -1);\
6667})
6668
6669#define _mm512_mask_srai_epi64( __W, __U, __A, __B) __extension__ ({ \
6670__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6671 (__v8di)( __W),\
6672 (__mmask8)( __U));\
6673})
6674
6675#define _mm512_maskz_srai_epi64( __U, __A, __B) __extension__ ({ \
6676__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
6677 (__v8di)\
6678 _mm512_setzero_si512 (),\
6679 (__mmask8)( __U));\
6680})
6681
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006682#define _mm512_shuffle_f32x4( __A, __B, __imm) __extension__ ({ \
6683__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6684 (__v16sf)( __B),( __imm),\
6685 (__v16sf)\
6686 _mm512_undefined_ps (),\
6687 (__mmask16) -1);\
6688})
6689
6690#define _mm512_mask_shuffle_f32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6691__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6692 (__v16sf)( __B),( __imm),\
6693 (__v16sf)( __W),\
6694 (__mmask16)( __U));\
6695})
6696
6697#define _mm512_maskz_shuffle_f32x4( __U, __A, __B, __imm) __extension__ ({ \
6698__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
6699 (__v16sf)( __B),( __imm),\
6700 (__v16sf)\
6701 _mm512_setzero_ps (),\
6702 (__mmask16)( __U));\
6703})
6704
6705#define _mm512_shuffle_f64x2( __A, __B, __imm) __extension__ ({ \
6706__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6707 (__v8df)( __B),( __imm),\
6708 (__v8df)\
6709 _mm512_undefined_pd (),\
6710 (__mmask8) -1);\
6711})
6712
6713#define _mm512_mask_shuffle_f64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
6714__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6715 (__v8df)( __B),( __imm),\
6716 (__v8df)( __W),\
6717 (__mmask8)( __U));\
6718})
6719
6720#define _mm512_maskz_shuffle_f64x2( __U, __A, __B, __imm) __extension__ ({ \
6721__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
6722 (__v8df)( __B),( __imm),\
6723 (__v8df)\
6724 _mm512_setzero_pd (),\
6725 (__mmask8)( __U));\
6726})
6727
6728#define _mm512_shuffle_i32x4( __A, __B, __imm) __extension__ ({ \
6729__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6730 (__v16si)( __B),\
6731 ( __imm),\
6732 (__v16si)\
6733 _mm512_setzero_si512 (),\
6734 (__mmask16) -1);\
6735})
6736
6737#define _mm512_mask_shuffle_i32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6738__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6739 (__v16si)( __B),\
6740 ( __imm),\
6741 (__v16si)( __W),\
6742 (__mmask16)( __U));\
6743})
6744
6745#define _mm512_maskz_shuffle_i32x4( __U, __A, __B, __imm) __extension__ ({ \
6746__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
6747 (__v16si)( __B),\
6748 ( __imm),\
6749 (__v16si)\
6750 _mm512_setzero_si512 (),\
6751 (__mmask16)( __U));\
6752})
6753
6754#define _mm512_shuffle_i64x2( __A, __B, __imm) __extension__ ({ \
6755__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6756 (__v8di)( __B),( __imm),\
6757 (__v8di)\
6758 _mm512_setzero_si512 (),\
6759 (__mmask8) -1);\
6760})
6761
6762#define _mm512_mask_shuffle_i64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
6763__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6764 (__v8di)( __B),( __imm),\
6765 (__v8di)( __W),\
6766 (__mmask8)( __U));\
6767})
6768
6769#define _mm512_maskz_shuffle_i64x2( __U, __A, __B, __imm) __extension__ ({ \
6770__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
6771 (__v8di)( __B),( __imm),\
6772 (__v8di)\
6773 _mm512_setzero_si512 (),\
6774 (__mmask8)( __U));\
6775})
6776
6777#define _mm512_shuffle_pd( __M, __V, __imm) __extension__ ({ \
6778__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6779 (__v8df)( __V),( __imm),\
6780 (__v8df)\
6781 _mm512_undefined_pd (),\
6782 (__mmask8) -1);\
6783})
6784
6785#define _mm512_mask_shuffle_pd( __W, __U, __M, __V, __imm) __extension__ ({ \
6786__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6787 (__v8df)( __V),( __imm),\
6788 (__v8df)( __W),\
6789 (__mmask8)( __U));\
6790})
6791
6792#define _mm512_maskz_shuffle_pd( __U, __M, __V, __imm) __extension__ ({ \
6793__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
6794 (__v8df)( __V),( __imm),\
6795 (__v8df)\
6796 _mm512_setzero_pd (),\
6797 (__mmask8)( __U));\
6798})
6799
6800#define _mm512_shuffle_ps( __M, __V, __imm) __extension__ ({ \
6801__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6802 (__v16sf)( __V),( __imm),\
6803 (__v16sf)\
6804 _mm512_undefined_ps (),\
6805 (__mmask16) -1);\
6806})
6807
6808#define _mm512_mask_shuffle_ps( __W, __U, __M, __V, __imm) __extension__ ({ \
6809__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6810 (__v16sf)( __V),( __imm),\
6811 (__v16sf)( __W),\
6812 (__mmask16)( __U));\
6813})
6814
6815#define _mm512_maskz_shuffle_ps( __U, __M, __V, __imm) __extension__ ({ \
6816__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
6817 (__v16sf)( __V),( __imm),\
6818 (__v16sf)\
6819 _mm512_setzero_ps (),\
6820 (__mmask16)( __U));\
6821})
6822
6823#define _mm_sqrt_round_sd( __A, __B, __R) __extension__ ({ \
6824__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6825 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
6826 (__mmask8) -1,\
6827 ( __R));\
6828})
6829
6830static __inline__ __m128d __DEFAULT_FN_ATTRS
6831_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6832{
6833 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6834 (__v2df) __A,
6835 (__v2df) __W,
6836 (__mmask8) __U,
6837 _MM_FROUND_CUR_DIRECTION);
6838}
6839
6840#define _mm_mask_sqrt_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
6841__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6842 (__v2df)( __A),(__v2df) __W,\
6843 (__mmask8) __U,\
6844 ( __R));\
6845})
6846
6847static __inline__ __m128d __DEFAULT_FN_ATTRS
6848_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
6849{
6850 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6851 (__v2df) __A,
6852 (__v2df) _mm_setzero_pd (),
6853 (__mmask8) __U,
6854 _MM_FROUND_CUR_DIRECTION);
6855}
6856
6857#define _mm_maskz_sqrt_round_sd( __U, __A, __B, __R) __extension__ ({ \
6858__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
6859 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
6860 (__mmask8) __U,\
6861 ( __R));\
6862})
6863
6864#define _mm_sqrt_round_ss( __A, __B, __R) __extension__ ({ \
6865__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6866 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
6867 (__mmask8) -1,\
6868 ( __R));\
6869})
6870
6871static __inline__ __m128 __DEFAULT_FN_ATTRS
6872_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6873{
6874 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6875 (__v4sf) __A,
6876 (__v4sf) __W,
6877 (__mmask8) __U,
6878 _MM_FROUND_CUR_DIRECTION);
6879}
6880
6881#define _mm_mask_sqrt_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
6882__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6883 (__v4sf)( __A),(__v4sf) __W,\
6884 (__mmask8) __U,\
6885 ( __R));\
6886})
6887
6888static __inline__ __m128 __DEFAULT_FN_ATTRS
6889_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
6890{
6891 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6892 (__v4sf) __B,
6893 (__v4sf) _mm_setzero_ps (),
6894 (__mmask8) __U,
6895 _MM_FROUND_CUR_DIRECTION);
6896}
6897
6898#define _mm_maskz_sqrt_round_ss( __U, __A, __B, __R) __extension__ ({ \
6899__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
6900 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
6901 (__mmask8) __U,\
6902 __R);\
6903})
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006904
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006905static __inline__ __m512 __DEFAULT_FN_ATTRS
6906_mm512_broadcast_f32x4 (__m128 __A)
6907{
6908 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6909 (__v16sf)
6910 _mm512_undefined_ps (),
6911 (__mmask16) -1);
6912}
6913
6914static __inline__ __m512 __DEFAULT_FN_ATTRS
6915_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6916{
6917 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6918 (__v16sf) __O,
6919 __M);
6920}
6921
6922static __inline__ __m512 __DEFAULT_FN_ATTRS
6923_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6924{
6925 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6926 (__v16sf)
6927 _mm512_setzero_ps (),
6928 __M);
6929}
6930
6931static __inline__ __m512d __DEFAULT_FN_ATTRS
6932_mm512_broadcast_f64x4 (__m256d __A)
6933{
6934 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6935 (__v8df)
6936 _mm512_undefined_pd (),
6937 (__mmask8) -1);
6938}
6939
6940static __inline__ __m512d __DEFAULT_FN_ATTRS
6941_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6942{
6943 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6944 (__v8df) __O,
6945 __M);
6946}
6947
6948static __inline__ __m512d __DEFAULT_FN_ATTRS
6949_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6950{
6951 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6952 (__v8df)
6953 _mm512_setzero_pd (),
6954 __M);
6955}
6956
6957static __inline__ __m512i __DEFAULT_FN_ATTRS
6958_mm512_broadcast_i32x4 (__m128i __A)
6959{
6960 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6961 (__v16si)
6962 _mm512_undefined_epi32 (),
6963 (__mmask16) -1);
6964}
6965
6966static __inline__ __m512i __DEFAULT_FN_ATTRS
6967_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
6968{
6969 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6970 (__v16si) __O,
6971 __M);
6972}
6973
6974static __inline__ __m512i __DEFAULT_FN_ATTRS
6975_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
6976{
6977 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
6978 (__v16si)
6979 _mm512_setzero_si512 (),
6980 __M);
6981}
6982
6983static __inline__ __m512i __DEFAULT_FN_ATTRS
6984_mm512_broadcast_i64x4 (__m256i __A)
6985{
6986 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6987 (__v8di)
6988 _mm512_undefined_epi32 (),
6989 (__mmask8) -1);
6990}
6991
6992static __inline__ __m512i __DEFAULT_FN_ATTRS
6993_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
6994{
6995 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
6996 (__v8di) __O,
6997 __M);
6998}
6999
7000static __inline__ __m512i __DEFAULT_FN_ATTRS
7001_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7002{
7003 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7004 (__v8di)
7005 _mm512_setzero_si512 (),
7006 __M);
7007}
7008
7009static __inline__ __m512d __DEFAULT_FN_ATTRS
7010_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7011{
7012 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7013 (__v8df) __O, __M);
7014}
7015
7016static __inline__ __m512d __DEFAULT_FN_ATTRS
7017_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7018{
7019 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7020 (__v8df)
7021 _mm512_setzero_pd (),
7022 __M);
7023}
7024
7025static __inline__ __m512 __DEFAULT_FN_ATTRS
7026_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7027{
7028 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7029 (__v16sf) __O, __M);
7030}
7031
7032static __inline__ __m512 __DEFAULT_FN_ATTRS
7033_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7034{
7035 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7036 (__v16sf)
7037 _mm512_setzero_ps (),
7038 __M);
7039}
7040
Michael Zuckermane1680612016-04-13 15:02:04 +00007041static __inline__ __m128i __DEFAULT_FN_ATTRS
7042_mm512_cvtsepi32_epi8 (__m512i __A)
7043{
7044 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7045 (__v16qi) _mm_undefined_si128 (),
7046 (__mmask16) -1);
7047}
7048
7049static __inline__ __m128i __DEFAULT_FN_ATTRS
7050_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7051{
7052 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7053 (__v16qi) __O, __M);
7054}
7055
7056static __inline__ __m128i __DEFAULT_FN_ATTRS
7057_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7058{
7059 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7060 (__v16qi) _mm_setzero_si128 (),
7061 __M);
7062}
7063
7064static __inline__ void __DEFAULT_FN_ATTRS
7065_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7066{
7067 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7068}
7069
7070static __inline__ __m256i __DEFAULT_FN_ATTRS
7071_mm512_cvtsepi32_epi16 (__m512i __A)
7072{
7073 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7074 (__v16hi) _mm256_undefined_si256 (),
7075 (__mmask16) -1);
7076}
7077
7078static __inline__ __m256i __DEFAULT_FN_ATTRS
7079_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7080{
7081 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7082 (__v16hi) __O, __M);
7083}
7084
7085static __inline__ __m256i __DEFAULT_FN_ATTRS
7086_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7087{
7088 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7089 (__v16hi) _mm256_setzero_si256 (),
7090 __M);
7091}
7092
7093static __inline__ void __DEFAULT_FN_ATTRS
7094_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7095{
7096 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7097}
7098
7099static __inline__ __m128i __DEFAULT_FN_ATTRS
7100_mm512_cvtsepi64_epi8 (__m512i __A)
7101{
7102 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7103 (__v16qi) _mm_undefined_si128 (),
7104 (__mmask8) -1);
7105}
7106
7107static __inline__ __m128i __DEFAULT_FN_ATTRS
7108_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7109{
7110 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7111 (__v16qi) __O, __M);
7112}
7113
7114static __inline__ __m128i __DEFAULT_FN_ATTRS
7115_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7116{
7117 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7118 (__v16qi) _mm_setzero_si128 (),
7119 __M);
7120}
7121
7122static __inline__ void __DEFAULT_FN_ATTRS
7123_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7124{
7125 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7126}
7127
7128static __inline__ __m256i __DEFAULT_FN_ATTRS
7129_mm512_cvtsepi64_epi32 (__m512i __A)
7130{
7131 __v8si __O;
7132 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7133 (__v8si) _mm256_undefined_si256 (),
7134 (__mmask8) -1);
7135}
7136
7137static __inline__ __m256i __DEFAULT_FN_ATTRS
7138_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7139{
7140 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7141 (__v8si) __O, __M);
7142}
7143
7144static __inline__ __m256i __DEFAULT_FN_ATTRS
7145_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7146{
7147 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7148 (__v8si) _mm256_setzero_si256 (),
7149 __M);
7150}
7151
7152static __inline__ void __DEFAULT_FN_ATTRS
7153_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7154{
7155 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7156}
7157
7158static __inline__ __m128i __DEFAULT_FN_ATTRS
7159_mm512_cvtsepi64_epi16 (__m512i __A)
7160{
7161 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7162 (__v8hi) _mm_undefined_si128 (),
7163 (__mmask8) -1);
7164}
7165
7166static __inline__ __m128i __DEFAULT_FN_ATTRS
7167_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7168{
7169 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7170 (__v8hi) __O, __M);
7171}
7172
7173static __inline__ __m128i __DEFAULT_FN_ATTRS
7174_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7175{
7176 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7177 (__v8hi) _mm_setzero_si128 (),
7178 __M);
7179}
7180
7181static __inline__ void __DEFAULT_FN_ATTRS
7182_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7183{
7184 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7185}
7186
Michael Zuckermand8715312016-04-14 06:48:09 +00007187static __inline__ __m128i __DEFAULT_FN_ATTRS
7188_mm512_cvtusepi32_epi8 (__m512i __A)
7189{
7190 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7191 (__v16qi) _mm_undefined_si128 (),
7192 (__mmask16) -1);
7193}
7194
7195static __inline__ __m128i __DEFAULT_FN_ATTRS
7196_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7197{
7198 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7199 (__v16qi) __O,
7200 __M);
7201}
7202
7203static __inline__ __m128i __DEFAULT_FN_ATTRS
7204_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7205{
7206 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7207 (__v16qi) _mm_setzero_si128 (),
7208 __M);
7209}
7210
7211static __inline__ void __DEFAULT_FN_ATTRS
7212_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7213{
7214 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7215}
7216
7217static __inline__ __m256i __DEFAULT_FN_ATTRS
7218_mm512_cvtusepi32_epi16 (__m512i __A)
7219{
7220 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7221 (__v16hi) _mm256_undefined_si256 (),
7222 (__mmask16) -1);
7223}
7224
7225static __inline__ __m256i __DEFAULT_FN_ATTRS
7226_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7227{
7228 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7229 (__v16hi) __O,
7230 __M);
7231}
7232
7233static __inline__ __m256i __DEFAULT_FN_ATTRS
7234_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7235{
7236 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7237 (__v16hi) _mm256_setzero_si256 (),
7238 __M);
7239}
7240
7241static __inline__ void __DEFAULT_FN_ATTRS
7242_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7243{
7244 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7245}
7246
7247static __inline__ __m128i __DEFAULT_FN_ATTRS
7248_mm512_cvtusepi64_epi8 (__m512i __A)
7249{
7250 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7251 (__v16qi) _mm_undefined_si128 (),
7252 (__mmask8) -1);
7253}
7254
7255static __inline__ __m128i __DEFAULT_FN_ATTRS
7256_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7257{
7258 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7259 (__v16qi) __O,
7260 __M);
7261}
7262
7263static __inline__ __m128i __DEFAULT_FN_ATTRS
7264_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7265{
7266 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7267 (__v16qi) _mm_setzero_si128 (),
7268 __M);
7269}
7270
7271static __inline__ void __DEFAULT_FN_ATTRS
7272_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7273{
7274 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7275}
7276
7277static __inline__ __m256i __DEFAULT_FN_ATTRS
7278_mm512_cvtusepi64_epi32 (__m512i __A)
7279{
7280 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7281 (__v8si) _mm256_undefined_si256 (),
7282 (__mmask8) -1);
7283}
7284
7285static __inline__ __m256i __DEFAULT_FN_ATTRS
7286_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7287{
7288 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7289 (__v8si) __O, __M);
7290}
7291
7292static __inline__ __m256i __DEFAULT_FN_ATTRS
7293_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7294{
7295 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7296 (__v8si) _mm256_setzero_si256 (),
7297 __M);
7298}
7299
7300static __inline__ void __DEFAULT_FN_ATTRS
7301_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7302{
7303 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7304}
7305
7306static __inline__ __m128i __DEFAULT_FN_ATTRS
7307_mm512_cvtusepi64_epi16 (__m512i __A)
7308{
7309 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7310 (__v8hi) _mm_undefined_si128 (),
7311 (__mmask8) -1);
7312}
7313
7314static __inline__ __m128i __DEFAULT_FN_ATTRS
7315_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7316{
7317 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7318 (__v8hi) __O, __M);
7319}
7320
7321static __inline__ __m128i __DEFAULT_FN_ATTRS
7322_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7323{
7324 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7325 (__v8hi) _mm_setzero_si128 (),
7326 __M);
7327}
7328
7329static __inline__ void __DEFAULT_FN_ATTRS
7330_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7331{
7332 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7333}
7334
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007335static __inline__ __m128i __DEFAULT_FN_ATTRS
7336_mm512_cvtepi32_epi8 (__m512i __A)
7337{
7338 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7339 (__v16qi) _mm_undefined_si128 (),
7340 (__mmask16) -1);
7341}
7342
7343static __inline__ __m128i __DEFAULT_FN_ATTRS
7344_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7345{
7346 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7347 (__v16qi) __O, __M);
7348}
7349
7350static __inline__ __m128i __DEFAULT_FN_ATTRS
7351_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7352{
7353 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7354 (__v16qi) _mm_setzero_si128 (),
7355 __M);
7356}
7357
7358static __inline__ void __DEFAULT_FN_ATTRS
7359_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7360{
7361 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7362}
7363
7364static __inline__ __m256i __DEFAULT_FN_ATTRS
7365_mm512_cvtepi32_epi16 (__m512i __A)
7366{
7367 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7368 (__v16hi) _mm256_undefined_si256 (),
7369 (__mmask16) -1);
7370}
7371
7372static __inline__ __m256i __DEFAULT_FN_ATTRS
7373_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7374{
7375 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7376 (__v16hi) __O, __M);
7377}
7378
7379static __inline__ __m256i __DEFAULT_FN_ATTRS
7380_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7381{
7382 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7383 (__v16hi) _mm256_setzero_si256 (),
7384 __M);
7385}
7386
7387static __inline__ void __DEFAULT_FN_ATTRS
7388_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7389{
7390 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7391}
7392
7393static __inline__ __m128i __DEFAULT_FN_ATTRS
7394_mm512_cvtepi64_epi8 (__m512i __A)
7395{
7396 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7397 (__v16qi) _mm_undefined_si128 (),
7398 (__mmask8) -1);
7399}
7400
7401static __inline__ __m128i __DEFAULT_FN_ATTRS
7402_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7403{
7404 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7405 (__v16qi) __O, __M);
7406}
7407
7408static __inline__ __m128i __DEFAULT_FN_ATTRS
7409_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7410{
7411 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7412 (__v16qi) _mm_setzero_si128 (),
7413 __M);
7414}
7415
7416static __inline__ void __DEFAULT_FN_ATTRS
7417_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7418{
7419 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7420}
7421
7422static __inline__ __m256i __DEFAULT_FN_ATTRS
7423_mm512_cvtepi64_epi32 (__m512i __A)
7424{
7425 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7426 (__v8si) _mm256_undefined_si256 (),
7427 (__mmask8) -1);
7428}
7429
7430static __inline__ __m256i __DEFAULT_FN_ATTRS
7431_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7432{
7433 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7434 (__v8si) __O, __M);
7435}
7436
7437static __inline__ __m256i __DEFAULT_FN_ATTRS
7438_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7439{
7440 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7441 (__v8si) _mm256_setzero_si256 (),
7442 __M);
7443}
7444
7445static __inline__ void __DEFAULT_FN_ATTRS
7446_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7447{
7448 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7449}
7450
7451static __inline__ __m128i __DEFAULT_FN_ATTRS
7452_mm512_cvtepi64_epi16 (__m512i __A)
7453{
7454 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7455 (__v8hi) _mm_undefined_si128 (),
7456 (__mmask8) -1);
7457}
7458
7459static __inline__ __m128i __DEFAULT_FN_ATTRS
7460_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7461{
7462 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7463 (__v8hi) __O, __M);
7464}
7465
7466static __inline__ __m128i __DEFAULT_FN_ATTRS
7467_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7468{
7469 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7470 (__v8hi) _mm_setzero_si128 (),
7471 __M);
7472}
7473
7474static __inline__ void __DEFAULT_FN_ATTRS
7475_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7476{
7477 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7478}
7479
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007480#define _mm512_extracti32x4_epi32( __A, __imm) __extension__ ({ \
7481__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7482 (__imm),\
7483 (__v4si) _mm_undefined_si128 (),\
7484 (__mmask8) -1);\
7485})
7486
7487#define _mm512_mask_extracti32x4_epi32( __W, __U, __A, __imm) __extension__ ({ \
7488__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7489 ( __imm),\
7490 (__v4si)( __W),\
7491 (__mmask8)( __U));\
7492})
7493
7494#define _mm512_maskz_extracti32x4_epi32( __U, __A, __imm) __extension__ ({ \
7495__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
7496 ( __imm),\
7497 (__v4si) _mm_setzero_si128 (),\
7498 (__mmask8)( __U));\
7499})
7500
7501#define _mm512_extracti64x4_epi64( __A, __imm) __extension__ ({ \
7502__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7503 ( __imm),\
7504 (__v4di) _mm256_undefined_si256 (),\
7505 (__mmask8) -1);\
7506})
7507
7508#define _mm512_mask_extracti64x4_epi64( __W, __U, __A, __imm) __extension__ ({ \
7509__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7510 ( __imm),\
7511 (__v4di)( __W),\
7512 (__mmask8)( __U));\
7513})
7514
7515#define _mm512_maskz_extracti64x4_epi64( __U, __A, __imm) __extension__ ({ \
7516__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
7517 ( __imm),\
7518 (__v4di) _mm256_setzero_si256 (),\
7519 (__mmask8)( __U));\
7520})
7521
7522#define _mm512_insertf64x4( __A, __B, __imm) __extension__ ({ \
7523__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7524 (__v4df)( __B),\
7525 ( __imm),\
7526 (__v8df) _mm512_undefined_pd (),\
7527 (__mmask8) -1);\
7528})
7529
7530#define _mm512_mask_insertf64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7531__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7532 (__v4df)( __B),\
7533 ( __imm),\
7534 (__v8df)( __W),\
7535 (__mmask8)( __U));\
7536})
7537
7538#define _mm512_maskz_insertf64x4( __U, __A, __B, __imm) __extension__ ({ \
7539__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
7540 (__v4df)( __B),\
7541 ( __imm),\
7542 (__v8df) _mm512_setzero_pd (),\
7543 (__mmask8)( __U));\
7544})
7545
7546#define _mm512_inserti64x4( __A, __B, __imm) __extension__ ({ \
7547__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7548 (__v4di)( __B),\
7549 ( __imm),\
7550 (__v8di) _mm512_setzero_si512 (),\
7551 (__mmask8) -1);\
7552})
7553
7554#define _mm512_mask_inserti64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7555__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7556 (__v4di)( __B),\
7557 ( __imm),\
7558 (__v8di)( __W),\
7559 (__mmask8)( __U));\
7560})
7561
7562#define _mm512_maskz_inserti64x4( __U, __A, __B, __imm) __extension__ ({ \
7563__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
7564 (__v4di)( __B),\
7565 ( __imm),\
7566 (__v8di) _mm512_setzero_si512 (),\
7567 (__mmask8)( __U));\
7568})
7569
Craig Topperdca1f232016-05-15 21:26:20 +00007570#define _mm512_insertf32x4( __A, __B, __imm) __extension__ ({ \
7571__builtin_ia32_insertf32x4_mask ((__v16sf)( __A),\
7572 (__v4sf)( __B),\
7573 ( __imm),\
7574 (__v16sf) _mm512_undefined_ps (),\
7575 (__mmask16) -1);\
7576})
7577
7578#define _mm512_mask_insertf32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7579__builtin_ia32_insertf32x4_mask ((__v16sf)( __A),\
7580 (__v4sf)( __B),\
7581 ( __imm),\
7582 (__v16sf)( __W),\
7583 (__mmask16)( __U));\
7584})
7585
7586#define _mm512_maskz_insertf32x4( __U, __A, __B, __imm) __extension__ ({ \
7587__builtin_ia32_insertf32x4_mask ((__v16sf)( __A),\
7588 (__v4sf)( __B),\
7589 ( __imm),\
7590 (__v16sf) _mm512_setzero_ps (),\
7591 (__mmask16)( __U));\
7592})
7593
7594#define _mm512_inserti32x4( __A, __B, __imm) __extension__ ({ \
7595__builtin_ia32_inserti32x4_mask ((__v16si)( __A),\
7596 (__v4si)( __B),\
7597 ( __imm),\
7598 (__v16si) _mm512_setzero_si512 (),\
7599 (__mmask16) -1);\
7600})
7601
7602#define _mm512_mask_inserti32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
7603__builtin_ia32_inserti32x4_mask ((__v16si)( __A),\
7604 (__v4si)( __B),\
7605 ( __imm),\
7606 (__v16si)( __W),\
7607 (__mmask16)( __U));\
7608})
7609
7610#define _mm512_maskz_inserti32x4( __U, __A, __B, __imm) __extension__ ({ \
7611__builtin_ia32_inserti32x4_mask ((__v16si)( __A),\
7612 (__v4si)( __B),\
7613 ( __imm),\
7614 (__v16si) _mm512_setzero_si512 (),\
7615 (__mmask16)( __U));\
7616})
7617
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007618#define _mm512_getmant_round_pd( __A, __B, __C, __R) __extension__ ({ \
7619__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7620 (__C << 2) |( __B),\
7621 (__v8df) _mm512_undefined_pd (),\
7622 (__mmask8) -1,( __R));\
7623})
7624
7625#define _mm512_mask_getmant_round_pd( __W, __U, __A, __B, __C, __R) __extension__ ({ \
7626__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7627 (__C << 2) |( __B),\
7628 (__v8df)( __W),(__mmask8)( __U),\
7629 ( __R));\
7630})
7631
7632#define _mm512_maskz_getmant_round_pd( __U, __A, __B, __C, __R) __extension__ ({ \
7633__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7634 (__C << 2) |( __B),\
7635 (__v8df) _mm512_setzero_pd (),\
7636 (__mmask8)( __U),( __R));\
7637})
7638
7639#define _mm512_getmant_pd( __A, __B, __C) __extension__ ({ \
7640__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7641 (__C << 2) |( __B),\
7642 (__v8df) _mm512_setzero_pd (),\
7643 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);\
7644})
7645
7646#define _mm512_mask_getmant_pd( __W, __U, __A, __B, __C) __extension__ ({ \
7647__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7648 (__C << 2) |( __B),\
7649 (__v8df)( __W), (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
7650})
7651
7652#define _mm512_maskz_getmant_pd( __U, __A, __B, __C) __extension__ ({ \
7653__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
7654 (__C << 2) |( __B),\
7655 (__v8df) _mm512_setzero_pd (),\
7656 (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
7657})
7658
7659#define _mm512_getmant_round_ps( __A, __B, __C, __R) __extension__ ({ \
7660__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7661 (__C << 2) |( __B),\
7662 (__v16sf) _mm512_undefined_ps (),\
7663 (__mmask16) -1,( __R));\
7664})
7665
7666#define _mm512_mask_getmant_round_ps( __W, __U, __A, __B, __C, __R) __extension__ ({ \
7667__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7668 (__C << 2) |( __B),\
7669 (__v16sf)( __W),(__mmask16)( __U),\
7670 ( __R));\
7671})
7672
7673#define _mm512_maskz_getmant_round_ps( __U, __A, __B, __C, __R) __extension__ ({ \
7674__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7675 (__C << 2) |( __B),\
7676 (__v16sf) _mm512_setzero_ps (),\
7677 ( __U),( __R));\
7678})
7679
7680#define _mm512_getmant_ps( __A, __B, __C) __extension__ ({ \
7681__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7682 (__C << 2) |( __B),\
7683 (__v16sf) _mm512_undefined_ps (),\
7684 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);\
7685})
7686
7687#define _mm512_mask_getmant_ps( __W, __U, __A, __B, __C) __extension__ ({ \
7688__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7689 (__C << 2) |( __B),\
7690 (__v16sf)( __W),(__mmask16) ( __U),\
7691 _MM_FROUND_CUR_DIRECTION);\
7692})
7693
7694#define _mm512_maskz_getmant_ps( __U, __A, __B, __C) __extension__ ({ \
7695__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
7696 (__C << 2) |( __B),\
7697 (__v16sf) _mm512_setzero_ps (),\
7698 (__mmask16)( __U),_MM_FROUND_CUR_DIRECTION);\
7699})
7700
7701#define _mm512_getexp_round_pd( __A, __R) __extension__ ({ \
7702__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7703 (__v8df) _mm512_undefined_pd (),\
7704 (__mmask8) -1,( __R));\
7705})
7706
7707#define _mm512_mask_getexp_round_pd( __W, __U, __A, __R) __extension__ ({ \
7708__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7709 (__v8df)( __W),\
7710 (__mmask8)( __U),( __R));\
7711})
7712
7713#define _mm512_maskz_getexp_round_pd( __U, __A, __R) __extension__ ({ \
7714__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
7715 (__v8df) _mm512_setzero_pd (),\
7716 (__mmask8)( __U),( __R));\
7717})
7718
7719static __inline__ __m512d __DEFAULT_FN_ATTRS
7720_mm512_getexp_pd (__m512d __A)
7721{
7722 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7723 (__v8df) _mm512_undefined_pd (),
7724 (__mmask8) -1,
7725 _MM_FROUND_CUR_DIRECTION);
7726}
7727
7728static __inline__ __m512d __DEFAULT_FN_ATTRS
7729_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7730{
7731 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7732 (__v8df) __W,
7733 (__mmask8) __U,
7734 _MM_FROUND_CUR_DIRECTION);
7735}
7736
7737static __inline__ __m512d __DEFAULT_FN_ATTRS
7738_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7739{
7740 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7741 (__v8df) _mm512_setzero_pd (),
7742 (__mmask8) __U,
7743 _MM_FROUND_CUR_DIRECTION);
7744}
7745
7746#define _mm512_getexp_round_ps( __A, __R) __extension__ ({ \
7747__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7748 (__v16sf) _mm512_undefined_ps (),\
7749 (__mmask16) -1,( __R));\
7750})
7751
7752#define _mm512_mask_getexp_round_ps( __W, __U, __A, __R) __extension__ ({ \
7753__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7754 (__v16sf)( __W),\
7755 (__mmask16)( __U),( __R));\
7756})
7757
7758#define _mm512_maskz_getexp_round_ps( __U, __A, __R) __extension__ ({ \
7759__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
7760 (__v16sf) _mm512_setzero_ps (),\
7761 (__mmask16)( __U),( __R));\
7762})
7763
7764static __inline__ __m512 __DEFAULT_FN_ATTRS
7765_mm512_getexp_ps (__m512 __A)
7766{
7767 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7768 (__v16sf) _mm512_undefined_ps (),
7769 (__mmask16) -1,
7770 _MM_FROUND_CUR_DIRECTION);
7771}
7772
7773static __inline__ __m512 __DEFAULT_FN_ATTRS
7774_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7775{
7776 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7777 (__v16sf) __W,
7778 (__mmask16) __U,
7779 _MM_FROUND_CUR_DIRECTION);
7780}
7781
7782static __inline__ __m512 __DEFAULT_FN_ATTRS
7783_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7784{
7785 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7786 (__v16sf) _mm512_setzero_ps (),
7787 (__mmask16) __U,
7788 _MM_FROUND_CUR_DIRECTION);
7789}
7790
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007791#define _mm512_i64gather_ps( __index, __addr, __scale) __extension__ ({ \
7792__builtin_ia32_gatherdiv16sf ((__v8sf) _mm256_undefined_ps (),\
7793 __addr, (__v8di) __index, (__mmask8) -1, __scale);\
7794})
7795
7796#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7797 __addr, __scale) __extension__({\
7798__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7799 __addr,(__v8di) __index, __mask, __scale);\
7800})
7801
7802#define _mm512_i64gather_epi32(__index, __addr, __scale) __extension__ ({\
7803__builtin_ia32_gatherdiv16si ((__v8si) _mm256_undefined_ps (),\
7804 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7805})
7806
7807#define _mm512_mask_i64gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7808__builtin_ia32_gatherdiv16si ((__v8si) __v1_old,\
7809 __addr, (__v8di) __index, __mask , __scale);\
7810})
7811
7812#define _mm512_i64gather_pd(__index, __addr, __scale) __extension__ ({\
7813__builtin_ia32_gatherdiv8df ((__v8df) _mm512_undefined_pd(),\
7814 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7815})
7816
7817#define _mm512_mask_i64gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7818__builtin_ia32_gatherdiv8df ((__v8df) __v1_old,\
7819 __addr, (__v8di) __index, __mask , __scale);\
7820})
7821
7822#define _mm512_i64gather_epi64(__index, __addr, __scale) __extension__ ({\
7823__builtin_ia32_gatherdiv8di ((__v8di) _mm512_undefined_pd(),\
7824 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
7825})
7826
7827#define _mm512_mask_i64gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7828__builtin_ia32_gatherdiv8di ((__v8di) __v1_old,\
7829 __addr, (__v8di) __index, __mask , __scale);\
7830})
7831
7832#define _mm512_i32gather_ps(__index, __addr, __scale) __extension__ ({\
7833__builtin_ia32_gathersiv16sf ((__v16sf) _mm512_undefined_ps(),\
7834 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
7835})
7836
7837#define _mm512_mask_i32gather_ps( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7838__builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,\
7839 __addr, (__v16si) __index, __mask , __scale);\
7840})
7841
7842#define _mm512_i32gather_epi32(__index, __addr, __scale) __extension__ ({\
7843__builtin_ia32_gathersiv16si ((__v16sf) _mm512_undefined_epi32(),\
7844 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
7845})
7846
7847#define _mm512_mask_i32gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7848__builtin_ia32_gathersiv16si ((__v16sf) __v1_old,\
7849 __addr, (__v16si) __index, __mask , __scale);\
7850})
7851
7852#define _mm512_i32gather_pd(__index, __addr, __scale) __extension__ ({\
7853__builtin_ia32_gathersiv8df ((__v8df) _mm512_undefined_pd(),\
7854 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
7855})
7856
7857#define _mm512_mask_i32gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7858__builtin_ia32_gathersiv8df ((__v8df) __v1_old,\
7859 __addr, (__v8si) __index, __mask , __scale);\
7860})
7861
7862#define _mm512_i32gather_epi64(__index, __addr, __scale) __extension__ ({\
7863__builtin_ia32_gathersiv8di ((__v8di) _mm512_undefined_epi32(),\
7864 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
7865})
7866
7867#define _mm512_mask_i32gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
7868__builtin_ia32_gathersiv8di ((__v8di) __v1_old,\
7869 __addr, (__v8si) __index, __mask , __scale);\
7870})
7871
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007872#define _mm512_i64scatter_ps(__addr,__index, __v1, __scale) __extension__ ({\
7873__builtin_ia32_scatterdiv16sf(__addr, (__mmask8) -1,\
7874 (__v8di) __index, (__v8sf) __v1, __scale);\
7875})
7876
7877#define _mm512_mask_i64scatter_ps(__addr, __mask,__index, __v1, __scale) __extension__ ({\
7878__builtin_ia32_scatterdiv16sf(__addr, __mask,\
7879 (__v8di) __index, (__v8sf) __v1, __scale);\
7880})
7881
7882#define _mm512_i64scatter_epi32(__addr, __index, __v1, __scale) __extension__ ({\
7883__builtin_ia32_scatterdiv16si (__addr, (__mmask8) -1,\
7884 (__v8di) __index, (__v8si) __v1, __scale);\
7885})
7886
7887#define _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, __scale) __extension__ ({\
7888__builtin_ia32_scatterdiv16si (__addr, __mask, (__v8di) __index,\
7889 (__v8si) __v1, __scale);\
7890})
7891
7892#define _mm512_i64scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
7893__builtin_ia32_scatterdiv8df (__addr, (__mmask8) -1,\
7894 (__v8di) __index, (__v8df) __v1, __scale);\
7895})
7896
7897#define _mm512_mask_i64scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7898__builtin_ia32_scatterdiv8df (__addr, __mask, (__v8di) __index,\
7899 (__v8df) __v1, __scale);\
7900})
7901
7902#define _mm512_i64scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
7903__builtin_ia32_scatterdiv8di (__addr, (__mmask8) -1,\
7904 (__v8di) __index, (__v8di) __v1, __scale);\
7905})
7906
7907#define _mm512_mask_i64scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7908__builtin_ia32_scatterdiv8di(__addr, __mask, (__v8di) __index,\
7909 (__v8di) __v1, __scale);\
7910})
7911
7912#define _mm512_i32scatter_ps( __addr, __index, __v1, __scale) __extension__ ({\
7913__builtin_ia32_scattersiv16sf (__addr, (__mmask16) -1,\
7914 (__v16si) __index, (__v16sf) __v1, __scale);\
7915})
7916
7917#define _mm512_mask_i32scatter_ps( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7918__builtin_ia32_scattersiv16sf (__addr, __mask, (__v16si) __index,\
7919 (__v16sf) __v1, __scale);\
7920})
7921
7922#define _mm512_i32scatter_epi32( __addr, __index, __v1, __scale) __extension__ ({\
7923__builtin_ia32_scattersiv16si (__addr, (__mmask16) -1,\
7924 (__v16si) __index, (__v16si) __v1, __scale);\
7925})
7926
7927#define _mm512_mask_i32scatter_epi32( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7928__builtin_ia32_scattersiv16si (__addr, __mask, (__v16si) __index,\
7929 (__v16si) __v1, __scale);\
7930})
7931
7932#define _mm512_i32scatter_pd( __addr, __index, __v1, __scale) __extension__ ({\
7933__builtin_ia32_scattersiv8df (__addr, (__mmask8) -1,\
7934 (__v8si) __index, (__v8df) __v1, __scale);\
7935})
7936
7937#define _mm512_mask_i32scatter_pd( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7938__builtin_ia32_scattersiv8df (__addr, __mask, (__v8si) __index,\
7939 (__v8df) __v1, __scale);\
7940})
7941
7942#define _mm512_i32scatter_epi64( __addr, __index, __v1, __scale) __extension__ ({\
7943__builtin_ia32_scattersiv8di (__addr, (__mmask8) -1,\
7944 (__v8si) __index, (__v8di) __v1, __scale);\
7945})
7946
7947#define _mm512_mask_i32scatter_epi64( __addr, __mask, __index, __v1, __scale) __extension__ ({\
7948__builtin_ia32_scattersiv8di (__addr, __mask, (__v8si) __index,\
7949 (__v8di) __v1, __scale);\
7950})
7951
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007952static __inline__ __m128 __DEFAULT_FN_ATTRS
7953_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7954{
7955 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7956 (__v4sf) __B,
7957 (__v4sf) __W,
7958 (__mmask8) __U,
7959 _MM_FROUND_CUR_DIRECTION);
7960}
7961
7962#define _mm_mask_fmadd_round_ss( __W, __U, __A, __B, __R) __extension__({\
7963__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
7964 (__v4sf) __B,\
7965 (__v4sf) __W,\
7966 (__mmask8) __U,\
7967 __R);\
7968})
7969
7970static __inline__ __m128 __DEFAULT_FN_ATTRS
7971_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7972{
7973 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7974 (__v4sf) __B,
7975 (__v4sf) __C,
7976 (__mmask8) __U,
7977 _MM_FROUND_CUR_DIRECTION);
7978}
7979
7980#define _mm_maskz_fmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
7981__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
7982 (__v4sf) __B,\
7983 (__v4sf) __C,\
7984 (__mmask8) __U,\
7985 _MM_FROUND_CUR_DIRECTION);\
7986})
7987
7988static __inline__ __m128 __DEFAULT_FN_ATTRS
7989_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7990{
7991 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7992 (__v4sf) __X,
7993 (__v4sf) __Y,
7994 (__mmask8) __U,
7995 _MM_FROUND_CUR_DIRECTION);
7996}
7997
7998#define _mm_mask3_fmadd_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
7999__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
8000 (__v4sf) __X,\
8001 (__v4sf) __Y,\
8002 (__mmask8) __U,\
8003 __R);\
8004})
8005
8006static __inline__ __m128 __DEFAULT_FN_ATTRS
8007_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8008{
8009 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008010 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008011 (__v4sf) __W,
8012 (__mmask8) __U,
8013 _MM_FROUND_CUR_DIRECTION);
8014}
8015
8016#define _mm_mask_fmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
8017__builtin_ia32_vfmaddss3_mask ((__v4sf) __A,\
Craig Topper9864c592016-05-15 20:10:03 +00008018 -(__v4sf) (__B),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008019 (__v4sf) __W,\
8020 (__mmask8) __U,\
8021 __R);\
8022})
8023
8024static __inline__ __m128 __DEFAULT_FN_ATTRS
8025_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8026{
8027 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8028 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008029 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008030 (__mmask8) __U,
8031 _MM_FROUND_CUR_DIRECTION);
8032}
8033
8034#define _mm_maskz_fmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
8035__builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,\
8036 (__v4sf) __B,\
Craig Topper9864c592016-05-15 20:10:03 +00008037 -(__v4sf) (__C),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008038 (__mmask8) __U,\
8039 __R);\
8040})
8041
8042static __inline__ __m128 __DEFAULT_FN_ATTRS
8043_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8044{
8045 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8046 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008047 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008048 (__mmask8) __U,
8049 _MM_FROUND_CUR_DIRECTION);
8050}
8051
8052#define _mm_mask3_fmsub_round_ss( __W, __X, __Y, __U, __R) __extension__ ({\
8053__builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,\
8054 (__v4sf) __X,\
Craig Topper9864c592016-05-15 20:10:03 +00008055 -(__v4sf) (__Y),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008056 (__mmask8) __U,\
8057 __R);\
8058})
8059
8060static __inline__ __m128 __DEFAULT_FN_ATTRS
8061_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8062{
Craig Topper9864c592016-05-15 20:10:03 +00008063 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008064 (__v4sf) __B,
8065 (__v4sf) __W,
8066 (__mmask8) __U,
8067 _MM_FROUND_CUR_DIRECTION);
8068}
8069
8070#define _mm_mask_fnmadd_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008071__builtin_ia32_vfmaddss3_mask (-(__v4sf) (__A),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008072 (__v4sf) __B,\
8073 (__v4sf) __W,\
8074 (__mmask8) __U,\
8075 __R);\
8076})
8077
8078static __inline__ __m128 __DEFAULT_FN_ATTRS
8079_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8080{
Craig Topper9864c592016-05-15 20:10:03 +00008081 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008082 (__v4sf) __B,
8083 (__v4sf) __C,
8084 (__mmask8) __U,
8085 _MM_FROUND_CUR_DIRECTION);
8086}
8087
8088#define _mm_maskz_fnmadd_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008089__builtin_ia32_vfmaddss3_maskz (-(__v4sf) (__A),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008090 (__v4sf) __B,\
8091 (__v4sf) __C,\
8092 (__mmask8) __U,\
8093 __R);\
8094})
8095
8096static __inline__ __m128 __DEFAULT_FN_ATTRS
8097_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8098{
Craig Topper9864c592016-05-15 20:10:03 +00008099 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008100 (__v4sf) __X,
8101 (__v4sf) __Y,
8102 (__mmask8) __U,
8103 _MM_FROUND_CUR_DIRECTION);
8104}
8105
8106#define _mm_mask3_fnmadd_round_ss( __W, __X, __Y, __U, __R) __extension__({\
Craig Topper9864c592016-05-15 20:10:03 +00008107__builtin_ia32_vfmaddss3_mask3 (-(__v4sf) (__W),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008108 (__v4sf) __X,\
8109 (__v4sf) __Y,\
8110 (__mmask8) __U,\
8111 __R);\
8112})
8113
8114static __inline__ __m128 __DEFAULT_FN_ATTRS
8115_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8116{
Craig Topper9864c592016-05-15 20:10:03 +00008117 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8118 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008119 (__v4sf) __W,
8120 (__mmask8) __U,
8121 _MM_FROUND_CUR_DIRECTION);
8122}
8123
8124#define _mm_mask_fnmsub_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008125__builtin_ia32_vfmaddss3_mask (-(__v4sf) (__A),\
8126 -(__v4sf) (__B),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008127 (__v4sf) __W,\
8128 (__mmask8) __U,\
8129 __R);\
8130})
8131
8132static __inline__ __m128 __DEFAULT_FN_ATTRS
8133_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8134{
Craig Topper9864c592016-05-15 20:10:03 +00008135 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008136 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008137 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008138 (__mmask8) __U,
8139 _MM_FROUND_CUR_DIRECTION);
8140}
8141
8142#define _mm_maskz_fnmsub_round_ss( __U, __A, __B, __C, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008143__builtin_ia32_vfmaddss3_maskz(-(__v4sf) (__A),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008144 (__v4sf) __B,\
Craig Topper9864c592016-05-15 20:10:03 +00008145 -(__v4sf) (__C),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008146 (__mmask8) __U,\
8147 _MM_FROUND_CUR_DIRECTION);\
8148})
8149
8150static __inline__ __m128 __DEFAULT_FN_ATTRS
8151_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8152{
Craig Topper9864c592016-05-15 20:10:03 +00008153 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008154 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008155 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008156 (__mmask8) __U,
8157 _MM_FROUND_CUR_DIRECTION);
8158}
8159
8160#define _mm_mask3_fnmsub_round_ss( __W, __X, __Y, __U, __R) __extension__({\
Craig Topper9864c592016-05-15 20:10:03 +00008161__builtin_ia32_vfmaddss3_mask3 (-(__v4sf) (__W),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008162 (__v4sf) __X,\
Craig Topper9864c592016-05-15 20:10:03 +00008163 -(__v4sf) (__Y),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008164 (__mmask8) __U,\
8165 __R);\
8166})
8167
Craig Topper58187d32016-05-17 04:41:29 +00008168static __inline__ __m128d __DEFAULT_FN_ATTRS
8169_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008170{
Craig Topper58187d32016-05-17 04:41:29 +00008171 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008172 (__v2df) __B,
8173 (__v2df) __W,
8174 (__mmask8) __U,
8175 _MM_FROUND_CUR_DIRECTION);
8176}
8177
8178#define _mm_mask_fmadd_round_sd( __W, __U, __A, __B, __R) __extension__({\
8179__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
8180 (__v2df) __B,\
8181 (__v2df) __W,\
8182 (__mmask8) __U,\
8183 __R);\
8184})
8185
Craig Topper58187d32016-05-17 04:41:29 +00008186static __inline__ __m128d __DEFAULT_FN_ATTRS
8187_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008188{
Craig Topper58187d32016-05-17 04:41:29 +00008189 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008190 (__v2df) __B,
8191 (__v2df) __C,
8192 (__mmask8) __U,
8193 _MM_FROUND_CUR_DIRECTION);
8194}
8195
8196#define _mm_maskz_fmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
8197__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
8198 (__v2df) __B,\
8199 (__v2df) __C,\
8200 (__mmask8) __U,\
8201 _MM_FROUND_CUR_DIRECTION);\
8202})
8203
Craig Topper58187d32016-05-17 04:41:29 +00008204static __inline__ __m128d __DEFAULT_FN_ATTRS
8205_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008206{
Craig Topper58187d32016-05-17 04:41:29 +00008207 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008208 (__v2df) __X,
8209 (__v2df) __Y,
8210 (__mmask8) __U,
8211 _MM_FROUND_CUR_DIRECTION);
8212}
8213
8214#define _mm_mask3_fmadd_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
8215__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
8216 (__v2df) __X,\
8217 (__v2df) __Y,\
8218 (__mmask8) __U,\
8219 __R);\
8220})
8221
Craig Topper58187d32016-05-17 04:41:29 +00008222static __inline__ __m128d __DEFAULT_FN_ATTRS
8223_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008224{
Craig Topper58187d32016-05-17 04:41:29 +00008225 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008226 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008227 (__v2df) __W,
8228 (__mmask8) __U,
8229 _MM_FROUND_CUR_DIRECTION);
8230}
8231
8232#define _mm_mask_fmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
8233__builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,\
Craig Topper9864c592016-05-15 20:10:03 +00008234 -(__v2df) (__B),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008235 (__v2df) __W,\
8236 (__mmask8) __U,\
8237 __R);\
8238})
8239
Craig Topper58187d32016-05-17 04:41:29 +00008240static __inline__ __m128d __DEFAULT_FN_ATTRS
8241_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008242{
Craig Topper58187d32016-05-17 04:41:29 +00008243 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008244 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008245 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008246 (__mmask8) __U,
8247 _MM_FROUND_CUR_DIRECTION);
8248}
8249
8250#define _mm_maskz_fmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
8251__builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,\
8252 (__v2df) __B,\
Craig Topper9864c592016-05-15 20:10:03 +00008253 -(__v2df) (__C),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008254 (__mmask8) __U,\
8255 __R);\
8256})
8257
Craig Topper58187d32016-05-17 04:41:29 +00008258static __inline__ __m128d __DEFAULT_FN_ATTRS
8259_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008260{
Craig Topper58187d32016-05-17 04:41:29 +00008261 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008262 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008263 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008264 (__mmask8) __U,
8265 _MM_FROUND_CUR_DIRECTION);
8266}
8267
8268#define _mm_mask3_fmsub_round_sd( __W, __X, __Y, __U, __R) __extension__ ({\
8269__builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,\
8270 (__v2df) __X,\
Craig Topper9864c592016-05-15 20:10:03 +00008271 -(__v2df) (__Y),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008272 (__mmask8) __U, __R);\
8273})
8274
Craig Topper58187d32016-05-17 04:41:29 +00008275static __inline__ __m128d __DEFAULT_FN_ATTRS
8276_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008277{
Craig Topper58187d32016-05-17 04:41:29 +00008278 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008279 (__v2df) __B,
8280 (__v2df) __W,
8281 (__mmask8) __U,
8282 _MM_FROUND_CUR_DIRECTION);
8283}
8284
8285#define _mm_mask_fnmadd_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008286__builtin_ia32_vfmaddsd3_mask ( -(__v2df) (__A),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008287 (__v2df) __B,\
8288 (__v2df) __W,\
8289 (__mmask8) __U,\
8290 __R);\
8291})
8292
Craig Topper58187d32016-05-17 04:41:29 +00008293static __inline__ __m128d __DEFAULT_FN_ATTRS
8294_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008295{
Craig Topper58187d32016-05-17 04:41:29 +00008296 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008297 (__v2df) __B,
8298 (__v2df) __C,
8299 (__mmask8) __U,
8300 _MM_FROUND_CUR_DIRECTION);
8301}
8302
8303#define _mm_maskz_fnmadd_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008304__builtin_ia32_vfmaddsd3_maskz ( -(__v2df) (__A),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008305 (__v2df) __B,\
8306 (__v2df) __C,\
8307 (__mmask8) __U,\
8308 __R);\
8309})
8310
Craig Topper58187d32016-05-17 04:41:29 +00008311static __inline__ __m128d __DEFAULT_FN_ATTRS
8312_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008313{
Craig Topper58187d32016-05-17 04:41:29 +00008314 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008315 (__v2df) __X,
8316 (__v2df) __Y,
8317 (__mmask8) __U,
8318 _MM_FROUND_CUR_DIRECTION);
8319}
8320
8321#define _mm_mask3_fnmadd_round_sd( __W, __X, __Y, __U, __R) __extension__({\
Craig Topper9864c592016-05-15 20:10:03 +00008322__builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008323 (__v2df) __X,\
8324 (__v2df) __Y,\
8325 (__mmask8) __U,\
8326 __R);\
8327})
8328
Craig Topper58187d32016-05-17 04:41:29 +00008329static __inline__ __m128d __DEFAULT_FN_ATTRS
8330_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008331{
Craig Topper58187d32016-05-17 04:41:29 +00008332 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008333 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008334 (__v2df) __W,
8335 (__mmask8) __U,
8336 _MM_FROUND_CUR_DIRECTION);
8337}
8338
8339#define _mm_mask_fnmsub_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008340__builtin_ia32_vfmaddsd3_mask ( -(__v2df) (__A),\
8341 -(__v2df) (__B),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008342 (__v2df) __W,\
8343 (__mmask8) __U,\
8344 __R);\
8345})
8346
Craig Topper58187d32016-05-17 04:41:29 +00008347static __inline__ __m128d __DEFAULT_FN_ATTRS
8348_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008349{
Craig Topper58187d32016-05-17 04:41:29 +00008350 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008351 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008352 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008353 (__mmask8) __U,
8354 _MM_FROUND_CUR_DIRECTION);
8355}
8356
8357#define _mm_maskz_fnmsub_round_sd( __U, __A, __B, __C, __R) __extension__ ({\
Craig Topper9864c592016-05-15 20:10:03 +00008358__builtin_ia32_vfmaddsd3_maskz( -(__v2df) (__A),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008359 (__v2df) __B,\
Craig Topper9864c592016-05-15 20:10:03 +00008360 -(__v2df) (__C),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008361 (__mmask8) __U,\
8362 _MM_FROUND_CUR_DIRECTION);\
8363})
8364
Craig Topper58187d32016-05-17 04:41:29 +00008365static __inline__ __m128d __DEFAULT_FN_ATTRS
8366_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008367{
Craig Topper58187d32016-05-17 04:41:29 +00008368 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008369 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008370 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008371 (__mmask8) __U,
8372 _MM_FROUND_CUR_DIRECTION);
8373}
8374
8375#define _mm_mask3_fnmsub_round_sd( __W, __X, __Y, __U, __R) __extension__({\
Craig Topper9864c592016-05-15 20:10:03 +00008376__builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008377 (__v2df) __X,\
Craig Topper9864c592016-05-15 20:10:03 +00008378 -(__v2df) (__Y),\
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008379 (__mmask8) __U,\
8380 __R);\
8381})
8382
Michael Zuckerman8938e832016-04-25 05:32:35 +00008383#define _mm512_permutex_pd( __X, __M) __extension__ ({ \
8384__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
8385 (__v8df) _mm512_undefined_pd (),\
8386 (__mmask8) -1);\
8387})
8388
8389#define _mm512_mask_permutex_pd( __W, __U, __X, __M) __extension__ ({ \
8390__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
8391 (__v8df)( __W),\
8392 (__mmask8)( __U));\
8393})
8394
8395#define _mm512_maskz_permutex_pd( __U, __X, __M) __extension__ ({ \
8396__builtin_ia32_permdf512_mask ((__v8df)( __X),( __M),\
8397 (__v8df) _mm512_setzero_pd (),\
8398 (__mmask8)( __U));\
8399})
8400
8401#define _mm512_permutex_epi64( __X, __I) __extension__ ({ \
8402__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
8403 (__v8di) _mm512_undefined_epi32 (),\
8404 (__mmask8) (-1));\
8405})
8406
8407#define _mm512_mask_permutex_epi64( __W, __M, __X, __I) __extension__ ({ \
8408__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
8409 (__v8di)( __W),\
8410 (__mmask8)( __M));\
8411})
8412
8413#define _mm512_maskz_permutex_epi64( __M, __X, __I) __extension__ ({ \
8414__builtin_ia32_permdi512_mask ((__v8di)( __X),( __I),\
8415 (__v8di) _mm512_setzero_si512 (),\
8416 (__mmask8)( __M));\
8417})
8418
8419static __inline__ __m512d __DEFAULT_FN_ATTRS
8420_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8421{
8422 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8423 (__v8di) __X,
8424 (__v8df) _mm512_undefined_pd (),
8425 (__mmask8) -1);
8426}
8427
8428static __inline__ __m512d __DEFAULT_FN_ATTRS
8429_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8430{
8431 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8432 (__v8di) __X,
8433 (__v8df) __W,
8434 (__mmask8) __U);
8435}
8436
8437static __inline__ __m512d __DEFAULT_FN_ATTRS
8438_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8439{
8440 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8441 (__v8di) __X,
8442 (__v8df) _mm512_setzero_pd (),
8443 (__mmask8) __U);
8444}
8445
8446static __inline__ __m512i __DEFAULT_FN_ATTRS
8447_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8448{
8449 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8450 (__v8di) __X,
8451 (__v8di) _mm512_setzero_si512 (),
8452 __M);
8453}
8454
8455static __inline__ __m512i __DEFAULT_FN_ATTRS
8456_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8457{
8458 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8459 (__v8di) __X,
8460 (__v8di) _mm512_undefined_epi32 (),
8461 (__mmask8) -1);
8462}
8463
8464static __inline__ __m512i __DEFAULT_FN_ATTRS
8465_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8466 __m512i __Y)
8467{
8468 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8469 (__v8di) __X,
8470 (__v8di) __W,
8471 __M);
8472}
8473
8474static __inline__ __m512 __DEFAULT_FN_ATTRS
8475_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8476{
8477 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8478 (__v16si) __X,
8479 (__v16sf) _mm512_undefined_ps (),
8480 (__mmask16) -1);
8481}
8482
8483static __inline__ __m512 __DEFAULT_FN_ATTRS
8484_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8485{
8486 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8487 (__v16si) __X,
8488 (__v16sf) __W,
8489 (__mmask16) __U);
8490}
8491
8492static __inline__ __m512 __DEFAULT_FN_ATTRS
8493_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8494{
8495 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8496 (__v16si) __X,
8497 (__v16sf) _mm512_setzero_ps (),
8498 (__mmask16) __U);
8499}
8500
8501static __inline__ __m512i __DEFAULT_FN_ATTRS
8502_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8503{
8504 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8505 (__v16si) __X,
8506 (__v16si) _mm512_setzero_si512 (),
8507 __M);
8508}
8509
8510static __inline__ __m512i __DEFAULT_FN_ATTRS
8511_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8512{
8513 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8514 (__v16si) __X,
8515 (__v16si) _mm512_undefined_epi32 (),
8516 (__mmask16) -1);
8517}
8518
8519static __inline__ __m512i __DEFAULT_FN_ATTRS
8520_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8521 __m512i __Y)
8522{
8523 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8524 (__v16si) __X,
8525 (__v16si) __W,
8526 __M);
8527}
8528
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008529static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8530_mm512_kand (__mmask16 __A, __mmask16 __B)
8531{
8532 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8533}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008534
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008535static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8536_mm512_kandn (__mmask16 __A, __mmask16 __B)
8537{
8538 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8539}
8540
8541static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8542_mm512_kor (__mmask16 __A, __mmask16 __B)
8543{
8544 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8545}
8546
8547static __inline__ int __DEFAULT_FN_ATTRS
8548_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8549{
Craig Topper91f23d92016-05-16 01:09:16 +00008550 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008551}
8552
8553static __inline__ int __DEFAULT_FN_ATTRS
8554_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8555{
Craig Topper91f23d92016-05-16 01:09:16 +00008556 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008557}
8558
8559static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8560_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8561{
8562 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8563}
8564
8565static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8566_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8567{
8568 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8569}
8570
8571static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8572_mm512_kxor (__mmask16 __A, __mmask16 __B)
8573{
8574 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8575}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008576
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008577static __inline__ void __DEFAULT_FN_ATTRS
8578_mm512_stream_si512 (__m512i * __P, __m512i __A)
8579{
8580 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8581}
8582
8583static __inline__ __m512i __DEFAULT_FN_ATTRS
8584_mm512_stream_load_si512 (void *__P)
8585{
8586 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8587}
8588
8589static __inline__ void __DEFAULT_FN_ATTRS
8590_mm512_stream_pd (double *__P, __m512d __A)
8591{
8592 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8593}
8594
8595static __inline__ void __DEFAULT_FN_ATTRS
8596_mm512_stream_ps (float *__P, __m512 __A)
8597{
8598 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8599}
8600
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008601static __inline__ __m512d __DEFAULT_FN_ATTRS
8602_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8603{
8604 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8605 (__v8df) __W,
8606 (__mmask8) __U);
8607}
8608
8609static __inline__ __m512d __DEFAULT_FN_ATTRS
8610_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8611{
8612 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8613 (__v8df)
8614 _mm512_setzero_pd (),
8615 (__mmask8) __U);
8616}
8617
8618static __inline__ __m512i __DEFAULT_FN_ATTRS
8619_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8620{
8621 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8622 (__v8di) __W,
8623 (__mmask8) __U);
8624}
8625
8626static __inline__ __m512i __DEFAULT_FN_ATTRS
8627_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8628{
8629 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8630 (__v8di)
8631 _mm512_setzero_si512 (),
8632 (__mmask8) __U);
8633}
8634
8635static __inline__ __m512 __DEFAULT_FN_ATTRS
8636_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8637{
8638 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8639 (__v16sf) __W,
8640 (__mmask16) __U);
8641}
8642
8643static __inline__ __m512 __DEFAULT_FN_ATTRS
8644_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8645{
8646 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8647 (__v16sf)
8648 _mm512_setzero_ps (),
8649 (__mmask16) __U);
8650}
8651
8652static __inline__ __m512i __DEFAULT_FN_ATTRS
8653_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8654{
8655 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8656 (__v16si) __W,
8657 (__mmask16) __U);
8658}
8659
8660static __inline__ __m512i __DEFAULT_FN_ATTRS
8661_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8662{
8663 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8664 (__v16si)
8665 _mm512_setzero_si512 (),
8666 (__mmask16) __U);
8667}
8668
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008669#define _mm_cmp_round_ss_mask( __X, __Y, __P, __R) __extension__ ({ \
8670__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8671 (__v4sf)( __Y), __P,\
8672 (__mmask8) -1, __R);\
8673})
8674
8675#define _mm_mask_cmp_round_ss_mask( __M, __X, __Y, __P, __R) __extension__ ({ \
8676__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8677 (__v4sf)( __Y), __P,\
8678 (__mmask8)( __M), __R);\
8679})
8680
8681#define _mm_cmp_ss_mask( __X, __Y, __P) __extension__ ({ \
8682__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8683 (__v4sf)( __Y),( __P),\
8684 (__mmask8) -1,\
8685 _MM_FROUND_CUR_DIRECTION);\
8686})
8687
8688#define _mm_mask_cmp_ss_mask( __M, __X, __Y, __P) __extension__ ({ \
8689__builtin_ia32_cmpss_mask ((__v4sf)( __X),\
8690 (__v4sf)( __Y),( __P),\
8691 (__mmask8)( __M),\
8692 _MM_FROUND_CUR_DIRECTION);\
8693})
8694
8695#define _mm_cmp_round_sd_mask( __X, __Y, __P,__R) __extension__ ({ \
8696__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8697 (__v2df)( __Y), __P,\
8698 (__mmask8) -1, __R);\
8699})
8700
8701#define _mm_mask_cmp_round_sd_mask( __M, __X, __Y, __P, __R) __extension__ ({ \
8702__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8703 (__v2df)( __Y), __P,\
8704 (__mmask8)( __M), __R);\
8705})
8706
8707#define _mm_cmp_sd_mask( __X, __Y, __P) __extension__ ({ \
8708__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8709 (__v2df)( __Y),( __P),\
8710 (__mmask8) -1,\
8711 _MM_FROUND_CUR_DIRECTION);\
8712})
8713
8714#define _mm_mask_cmp_sd_mask( __M, __X, __Y, __P) __extension__ ({ \
8715__builtin_ia32_cmpsd_mask ((__v2df)( __X),\
8716 (__v2df)( __Y),( __P),\
8717 (__mmask8)( __M),\
8718 _MM_FROUND_CUR_DIRECTION);\
8719})
8720
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008721static __inline__ __m512 __DEFAULT_FN_ATTRS
8722_mm512_movehdup_ps (__m512 __A)
8723{
8724 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8725 (__v16sf)
8726 _mm512_undefined_ps (),
8727 (__mmask16) -1);
8728}
8729
8730static __inline__ __m512 __DEFAULT_FN_ATTRS
8731_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8732{
8733 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8734 (__v16sf) __W,
8735 (__mmask16) __U);
8736}
8737
8738static __inline__ __m512 __DEFAULT_FN_ATTRS
8739_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8740{
8741 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8742 (__v16sf)
8743 _mm512_setzero_ps (),
8744 (__mmask16) __U);
8745}
8746
8747static __inline__ __m512 __DEFAULT_FN_ATTRS
8748_mm512_moveldup_ps (__m512 __A)
8749{
8750 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8751 (__v16sf)
8752 _mm512_undefined_ps (),
8753 (__mmask16) -1);
8754}
8755
8756static __inline__ __m512 __DEFAULT_FN_ATTRS
8757_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8758{
8759 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8760 (__v16sf) __W,
8761 (__mmask16) __U);
8762}
8763
8764static __inline__ __m512 __DEFAULT_FN_ATTRS
8765_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8766{
8767 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8768 (__v16sf)
8769 _mm512_setzero_ps (),
8770 (__mmask16) __U);
8771}
8772
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008773#define _mm512_shuffle_epi32( __A, __I) __extension__ ({ \
8774__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8775 ( __I),\
8776 (__v16si) _mm512_undefined_epi32 (),\
8777 (__mmask16) -1);\
8778})
8779
8780#define _mm512_mask_shuffle_epi32( __W, __U, __A, __I) __extension__ ({ \
8781__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8782 ( __I),\
8783 (__v16si)( __W),\
8784 (__mmask16)( __U));\
8785})
8786
8787#define _mm512_maskz_shuffle_epi32( __U, __A, __I) __extension__ ({ \
8788__builtin_ia32_pshufd512_mask ((__v16si)( __A),\
8789 ( __I),\
8790 (__v16si) _mm512_setzero_si512 (),\
8791 (__mmask16)( __U));\
8792})
8793
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008794static __inline__ __m512d __DEFAULT_FN_ATTRS
8795_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8796{
8797 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8798 (__v8df) __W,
8799 (__mmask8) __U);
8800}
8801
8802static __inline__ __m512d __DEFAULT_FN_ATTRS
8803_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8804{
8805 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8806 (__v8df) _mm512_setzero_pd (),
8807 (__mmask8) __U);
8808}
8809
8810static __inline__ __m512i __DEFAULT_FN_ATTRS
8811_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8812{
8813 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8814 (__v8di) __W,
8815 (__mmask8) __U);
8816}
8817
8818static __inline__ __m512i __DEFAULT_FN_ATTRS
8819_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8820{
8821 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8822 (__v8di) _mm512_setzero_pd (),
8823 (__mmask8) __U);
8824}
8825
8826static __inline__ __m512d __DEFAULT_FN_ATTRS
8827_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8828{
8829 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8830 (__v8df) __W,
8831 (__mmask8) __U);
8832}
8833
8834static __inline__ __m512d __DEFAULT_FN_ATTRS
8835_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8836{
8837 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8838 (__v8df) _mm512_setzero_pd(),
8839 (__mmask8) __U);
8840}
8841
8842static __inline__ __m512i __DEFAULT_FN_ATTRS
8843_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8844{
8845 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8846 (__v8di) __W,
8847 (__mmask8) __U);
8848}
8849
8850static __inline__ __m512i __DEFAULT_FN_ATTRS
8851_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8852{
8853 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8854 (__v8di) _mm512_setzero_pd(),
8855 (__mmask8) __U);
8856}
8857
8858static __inline__ __m512 __DEFAULT_FN_ATTRS
8859_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8860{
8861 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8862 (__v16sf) __W,
8863 (__mmask16) __U);
8864}
8865
8866static __inline__ __m512 __DEFAULT_FN_ATTRS
8867_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8868{
8869 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8870 (__v16sf) _mm512_setzero_ps(),
8871 (__mmask16) __U);
8872}
8873
8874static __inline__ __m512i __DEFAULT_FN_ATTRS
8875_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8876{
8877 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8878 (__v16si) __W,
8879 (__mmask16) __U);
8880}
8881
8882static __inline__ __m512i __DEFAULT_FN_ATTRS
8883_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8884{
8885 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8886 (__v16si) _mm512_setzero_ps(),
8887 (__mmask16) __U);
8888}
8889
8890static __inline__ __m512 __DEFAULT_FN_ATTRS
8891_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8892{
8893 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8894 (__v16sf) __W,
8895 (__mmask16) __U);
8896}
8897
8898static __inline__ __m512 __DEFAULT_FN_ATTRS
8899_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8900{
8901 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8902 (__v16sf) _mm512_setzero_ps(),
8903 (__mmask16) __U);
8904}
8905
8906static __inline__ __m512i __DEFAULT_FN_ATTRS
8907_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8908{
8909 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8910 (__v16si) __W,
8911 (__mmask16) __U);
8912}
8913
8914static __inline__ __m512i __DEFAULT_FN_ATTRS
8915_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8916{
8917 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8918 (__v16si) _mm512_setzero_ps(),
8919 (__mmask16) __U);
8920}
8921
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008922#define _mm512_cvt_roundps_pd( __A, __R) __extension__ ({ \
8923__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8924 (__v8df)\
8925 _mm512_undefined_pd (),\
8926 (__mmask8) -1,( __R));\
8927})
8928
8929#define _mm512_mask_cvt_roundps_pd( __W, __U, __A, __R) __extension__ ({ \
8930__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8931 (__v8df)( __W),\
8932 (__mmask8)( __U),( __R));\
8933})
8934
8935#define _mm512_maskz_cvt_roundps_pd( __U, __A, __R) __extension__ ({ \
8936__builtin_ia32_cvtps2pd512_mask ((__v8sf)( __A),\
8937 (__v8df)\
8938 _mm512_setzero_pd (),\
8939 (__mmask8)( __U),( __R));\
8940})
8941
8942static __inline__ __m512d __DEFAULT_FN_ATTRS
8943_mm512_cvtps_pd (__m256 __A)
8944{
8945 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8946 (__v8df)
8947 _mm512_undefined_pd (),
8948 (__mmask8) -1,
8949 _MM_FROUND_CUR_DIRECTION);
8950}
8951
8952static __inline__ __m512d __DEFAULT_FN_ATTRS
8953_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8954{
8955 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8956 (__v8df) __W,
8957 (__mmask8) __U,
8958 _MM_FROUND_CUR_DIRECTION);
8959}
8960
8961static __inline__ __m512d __DEFAULT_FN_ATTRS
8962_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8963{
8964 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8965 (__v8df)
8966 _mm512_setzero_pd (),
8967 (__mmask8) __U,
8968 _MM_FROUND_CUR_DIRECTION);
8969}
8970
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008971static __inline__ __m512d __DEFAULT_FN_ATTRS
8972_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8973{
8974 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8975 (__v8df) __W,
8976 (__mmask8) __U);
8977}
8978
8979static __inline__ __m512d __DEFAULT_FN_ATTRS
8980_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8981{
8982 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8983 (__v8df)
8984 _mm512_setzero_pd (),
8985 (__mmask8) __U);
8986}
8987
8988static __inline__ __m512 __DEFAULT_FN_ATTRS
8989_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8990{
8991 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8992 (__v16sf) __W,
8993 (__mmask16) __U);
8994}
8995
8996static __inline__ __m512 __DEFAULT_FN_ATTRS
8997_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8998{
8999 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9000 (__v16sf)
9001 _mm512_setzero_ps (),
9002 (__mmask16) __U);
9003}
9004
Michael Zuckerman708e7592016-05-03 10:42:46 +00009005static __inline__ void __DEFAULT_FN_ATTRS
9006_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
9007{
9008 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
9009 (__mmask8) __U);
9010}
9011
9012static __inline__ void __DEFAULT_FN_ATTRS
9013_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
9014{
9015 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
9016 (__mmask8) __U);
9017}
9018
9019static __inline__ void __DEFAULT_FN_ATTRS
9020_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
9021{
9022 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
9023 (__mmask16) __U);
9024}
9025
9026static __inline__ void __DEFAULT_FN_ATTRS
9027_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
9028{
9029 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
9030 (__mmask16) __U);
9031}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009032
Michael Zuckermane6f73892016-05-04 08:55:11 +00009033#define _mm_cvt_roundsd_ss( __A, __B, __R) __extension__ ({ \
9034__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
9035 (__v2df)( __B),\
9036 (__v4sf) _mm_undefined_ps (),\
9037 (__mmask8) -1,\
9038 ( __R));\
9039})
9040
9041#define _mm_mask_cvt_roundsd_ss( __W, __U, __A, __B, __R) __extension__ ({ \
9042__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
9043 (__v2df)( __B),\
9044 (__v4sf) __W,\
9045 (__mmask8) __U,\
9046 ( __R));\
9047})
9048
9049#define _mm_maskz_cvt_roundsd_ss( __U, __A, __B, __R) __extension__ ({ \
9050__builtin_ia32_cvtsd2ss_round_mask ((__v4sf)( __A),\
9051 (__v2df)( __B),\
9052 (__v4sf) _mm_setzero_ps (),\
9053 (__mmask8) __U,\
9054 ( __R));\
9055})
9056
9057#define _mm_cvt_roundi64_sd( __A, __B, __R) __extension__ ({ \
9058__builtin_ia32_cvtsi2sd64 ((__v2df)( __A),( __B),( __R));\
9059})
9060
9061#define _mm_cvt_roundsi64_sd( __A, __B, __R) __extension__ ({ \
9062__builtin_ia32_cvtsi2sd64 ((__v2df)( __A),( __B),( __R));\
9063})
9064
9065#define _mm_cvt_roundsi32_ss( __A, __B, __R) __extension__ ({ \
9066__builtin_ia32_cvtsi2ss32 ((__v4sf)( __A),( __B),( __R));\
9067})
9068
9069#define _mm_cvt_roundi32_ss( __A, __B, __R) __extension__ ({ \
9070__builtin_ia32_cvtsi2ss32 ((__v4sf)( __A),( __B),( __R));\
9071})
9072
9073#define _mm_cvt_roundsi64_ss( __A, __B, __R) __extension__ ({ \
9074__builtin_ia32_cvtsi2ss64 ((__v4sf)( __A),( __B),( __R));\
9075})
9076
9077#define _mm_cvt_roundi64_ss( __A, __B, __R) __extension__ ({ \
9078__builtin_ia32_cvtsi2ss64 ((__v4sf)( __A),( __B),( __R));\
9079})
9080
9081#define _mm_cvt_roundss_sd( __A, __B, __R) __extension__ ({ \
9082__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
9083 (__v4sf)( __B),\
9084 (__v2df) _mm_undefined_pd (),\
9085 (__mmask8)-1,\
9086 ( __R));\
9087})
9088
9089#define _mm_mask_cvt_roundss_sd(__W, __U,__A, __B, __R) __extension__ ({ \
9090__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
9091 (__v4sf)( __B),\
9092 (__v2df) __W,\
9093 (__mmask8) __U,\
9094 ( __R));\
9095})
9096
9097#define _mm_maskz_cvt_roundss_sd( __U,__A, __B, __R) __extension__ ({ \
9098__builtin_ia32_cvtss2sd_round_mask ((__v2df)( __A),\
9099 (__v4sf)( __B),\
9100 (__v2df) _mm_setzero_pd(),\
9101 (__mmask8) __U,\
9102 ( __R));\
9103})
9104
9105static __inline__ __m128d __DEFAULT_FN_ATTRS
9106_mm_cvtu32_sd (__m128d __A, unsigned __B)
9107{
9108 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9109}
9110
9111#define _mm_cvt_roundu64_sd( __A, __B, __R) __extension__ ({ \
9112__builtin_ia32_cvtusi2sd64 ((__v2df)( __A),( __B),( __R));\
9113})
9114
9115static __inline__ __m128d __DEFAULT_FN_ATTRS
9116_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9117{
9118 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9119 _MM_FROUND_CUR_DIRECTION);
9120}
9121
9122#define _mm_cvt_roundu32_ss( __A, __B, __R) __extension__ ({ \
9123__builtin_ia32_cvtusi2ss32 ((__v4sf)( __A),( __B),( __R));\
9124})
9125
9126static __inline__ __m128 __DEFAULT_FN_ATTRS
9127_mm_cvtu32_ss (__m128 __A, unsigned __B)
9128{
9129 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9130 _MM_FROUND_CUR_DIRECTION);
9131}
9132
9133#define _mm_cvt_roundu64_ss( __A, __B, __R) __extension__ ({ \
9134__builtin_ia32_cvtusi2ss64 ((__v4sf)( __A),( __B),( __R));\
9135})
9136
9137static __inline__ __m128 __DEFAULT_FN_ATTRS
9138_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9139{
9140 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9141 _MM_FROUND_CUR_DIRECTION);
9142}
9143
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009144static __inline__ __m512i __DEFAULT_FN_ATTRS
9145_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9146{
9147 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9148 __M);
9149}
9150
9151static __inline__ __m512i __DEFAULT_FN_ATTRS
9152_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9153{
9154 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9155 __M);
9156}
9157
9158static __inline__ __m512i __DEFAULT_FN_ATTRS
9159_mm512_set_epi64 (long long __A, long long __B, long long __C,
9160 long long __D, long long __E, long long __F,
9161 long long __G, long long __H)
9162{
9163 return __extension__ (__m512i) (__v8di)
9164 { __H, __G, __F, __E, __D, __C, __B, __A };
9165}
9166
9167static __inline__ __m512d __DEFAULT_FN_ATTRS
9168_mm512_set_pd (double __A, double __B, double __C, double __D,
9169 double __E, double __F, double __G, double __H)
9170{
9171 return __extension__ (__m512d)
9172 { __H, __G, __F, __E, __D, __C, __B, __A };
9173}
9174
9175static __inline__ __m512 __DEFAULT_FN_ATTRS
9176_mm512_set_ps (float __A, float __B, float __C, float __D,
9177 float __E, float __F, float __G, float __H,
9178 float __I, float __J, float __K, float __L,
9179 float __M, float __N, float __O, float __P)
9180{
9181 return __extension__ (__m512)
9182 { __P, __O, __N, __M, __L, __K, __J, __I,
9183 __H, __G, __F, __E, __D, __C, __B, __A };
9184}
9185
Michael Kupersteine45af542015-06-30 13:36:19 +00009186#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009187
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009188#endif // __AVX512FINTRIN_H