blob: 42c0b71441406a0307fd49c248e8f7be82f5c110 [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}
188
Michael Kupersteine45af542015-06-30 13:36:19 +0000189static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000190_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
191{
192 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
193 (__v16si)
194 _mm512_setzero_si512 (),
195 __M);
196}
197
Michael Kupersteine45af542015-06-30 13:36:19 +0000198static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000199_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
200{
201#ifdef __x86_64__
202 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
203 (__v8di)
204 _mm512_setzero_si512 (),
205 __M);
206#else
207 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
208 (__v8di)
209 _mm512_setzero_si512 (),
210 __M);
211#endif
212}
213
Michael Kupersteine45af542015-06-30 13:36:19 +0000214static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000215_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000216{
217 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
218 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
219}
Michael Kupersteine45af542015-06-30 13:36:19 +0000220static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000221_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000222{
223 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
224}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000225
Michael Kupersteine45af542015-06-30 13:36:19 +0000226static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000227_mm512_set1_ps(float __w)
228{
229 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
230 __w, __w, __w, __w, __w, __w, __w, __w };
231}
232
Michael Kupersteine45af542015-06-30 13:36:19 +0000233static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000234_mm512_set1_pd(double __w)
235{
236 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
237}
238
Michael Kupersteine45af542015-06-30 13:36:19 +0000239static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000240_mm512_set1_epi32(int __s)
241{
242 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
243 __s, __s, __s, __s, __s, __s, __s, __s };
244}
245
Michael Kupersteine45af542015-06-30 13:36:19 +0000246static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000247_mm512_set1_epi64(long long __d)
248{
249 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
250}
251
Michael Kupersteine45af542015-06-30 13:36:19 +0000252static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000253_mm512_broadcastss_ps(__m128 __X)
254{
255 float __f = __X[0];
256 return (__v16sf){ __f, __f, __f, __f,
257 __f, __f, __f, __f,
258 __f, __f, __f, __f,
259 __f, __f, __f, __f };
260}
261
Michael Kupersteine45af542015-06-30 13:36:19 +0000262static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000263_mm512_broadcastsd_pd(__m128d __X)
264{
265 double __d = __X[0];
266 return (__v8df){ __d, __d, __d, __d,
267 __d, __d, __d, __d };
268}
269
Adam Nemetc871ff92014-07-30 16:51:24 +0000270/* Cast between vector types */
271
Michael Kupersteine45af542015-06-30 13:36:19 +0000272static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000273_mm512_castpd256_pd512(__m256d __a)
274{
275 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
276}
277
Michael Kupersteine45af542015-06-30 13:36:19 +0000278static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000279_mm512_castps256_ps512(__m256 __a)
280{
281 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
282 -1, -1, -1, -1, -1, -1, -1, -1);
283}
284
Michael Kupersteine45af542015-06-30 13:36:19 +0000285static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000286_mm512_castpd512_pd128(__m512d __a)
287{
288 return __builtin_shufflevector(__a, __a, 0, 1);
289}
290
Michael Kupersteine45af542015-06-30 13:36:19 +0000291static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000292_mm512_castps512_ps128(__m512 __a)
293{
294 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
295}
296
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000297/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000298static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000299_mm512_and_epi32(__m512i __a, __m512i __b)
300{
301 return __a & __b;
302}
303
Michael Kupersteine45af542015-06-30 13:36:19 +0000304static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000305_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
306{
307 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
308 (__v16si) __b,
309 (__v16si) __src,
310 (__mmask16) __k);
311}
Michael Kupersteine45af542015-06-30 13:36:19 +0000312static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000313_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
314{
315 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
316 (__v16si) __b,
317 (__v16si)
318 _mm512_setzero_si512 (),
319 (__mmask16) __k);
320}
321
Michael Kupersteine45af542015-06-30 13:36:19 +0000322static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000323_mm512_and_epi64(__m512i __a, __m512i __b)
324{
325 return __a & __b;
326}
327
Michael Kupersteine45af542015-06-30 13:36:19 +0000328static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000329_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
330{
331 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
332 (__v8di) __b,
333 (__v8di) __src,
334 (__mmask8) __k);
335}
Michael Kupersteine45af542015-06-30 13:36:19 +0000336static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000337_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
338{
339 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
340 (__v8di) __b,
341 (__v8di)
342 _mm512_setzero_si512 (),
343 (__mmask8) __k);
344}
345
Michael Kupersteine45af542015-06-30 13:36:19 +0000346static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000347_mm512_andnot_epi32 (__m512i __A, __m512i __B)
348{
349 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
350 (__v16si) __B,
351 (__v16si)
352 _mm512_setzero_si512 (),
353 (__mmask16) -1);
354}
355
Michael Kupersteine45af542015-06-30 13:36:19 +0000356static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000357_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
358{
359 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
360 (__v16si) __B,
361 (__v16si) __W,
362 (__mmask16) __U);
363}
364
Michael Kupersteine45af542015-06-30 13:36:19 +0000365static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000366_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
367{
368 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
369 (__v16si) __B,
370 (__v16si)
371 _mm512_setzero_si512 (),
372 (__mmask16) __U);
373}
374
Michael Kupersteine45af542015-06-30 13:36:19 +0000375static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000376_mm512_andnot_epi64 (__m512i __A, __m512i __B)
377{
378 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
379 (__v8di) __B,
380 (__v8di)
381 _mm512_setzero_si512 (),
382 (__mmask8) -1);
383}
384
Michael Kupersteine45af542015-06-30 13:36:19 +0000385static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000386_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
387{
388 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
389 (__v8di) __B,
390 (__v8di) __W, __U);
391}
392
Michael Kupersteine45af542015-06-30 13:36:19 +0000393static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000394_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
395{
396 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
397 (__v8di) __B,
398 (__v8di)
399 _mm512_setzero_pd (),
400 __U);
401}
Michael Kupersteine45af542015-06-30 13:36:19 +0000402static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000403_mm512_or_epi32(__m512i __a, __m512i __b)
404{
405 return __a | __b;
406}
407
Michael Kupersteine45af542015-06-30 13:36:19 +0000408static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000409_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
410{
411 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
412 (__v16si) __b,
413 (__v16si) __src,
414 (__mmask16) __k);
415}
Michael Kupersteine45af542015-06-30 13:36:19 +0000416static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000417_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
418{
419 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
420 (__v16si) __b,
421 (__v16si)
422 _mm512_setzero_si512 (),
423 (__mmask16) __k);
424}
425
Michael Kupersteine45af542015-06-30 13:36:19 +0000426static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000427_mm512_or_epi64(__m512i __a, __m512i __b)
428{
429 return __a | __b;
430}
431
Michael Kupersteine45af542015-06-30 13:36:19 +0000432static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000433_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
434{
435 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
436 (__v8di) __b,
437 (__v8di) __src,
438 (__mmask8) __k);
439}
Michael Kupersteine45af542015-06-30 13:36:19 +0000440static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000441_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
442{
443 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
444 (__v8di) __b,
445 (__v8di)
446 _mm512_setzero_si512 (),
447 (__mmask8) __k);
448}
449
Michael Kupersteine45af542015-06-30 13:36:19 +0000450static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000451_mm512_xor_epi32(__m512i __a, __m512i __b)
452{
453 return __a ^ __b;
454}
455
Michael Kupersteine45af542015-06-30 13:36:19 +0000456static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000457_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
458{
459 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
460 (__v16si) __b,
461 (__v16si) __src,
462 (__mmask16) __k);
463}
Michael Kupersteine45af542015-06-30 13:36:19 +0000464static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000465_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
466{
467 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
468 (__v16si) __b,
469 (__v16si)
470 _mm512_setzero_si512 (),
471 (__mmask16) __k);
472}
473
Michael Kupersteine45af542015-06-30 13:36:19 +0000474static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000475_mm512_xor_epi64(__m512i __a, __m512i __b)
476{
477 return __a ^ __b;
478}
479
Michael Kupersteine45af542015-06-30 13:36:19 +0000480static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000481_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
482{
483 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
484 (__v8di) __b,
485 (__v8di) __src,
486 (__mmask8) __k);
487}
Michael Kupersteine45af542015-06-30 13:36:19 +0000488static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000489_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
490{
491 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
492 (__v8di) __b,
493 (__v8di)
494 _mm512_setzero_si512 (),
495 (__mmask8) __k);
496}
497
Michael Kupersteine45af542015-06-30 13:36:19 +0000498static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000499_mm512_and_si512(__m512i __a, __m512i __b)
500{
501 return __a & __b;
502}
503
Michael Kupersteine45af542015-06-30 13:36:19 +0000504static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000505_mm512_or_si512(__m512i __a, __m512i __b)
506{
507 return __a | __b;
508}
509
Michael Kupersteine45af542015-06-30 13:36:19 +0000510static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000511_mm512_xor_si512(__m512i __a, __m512i __b)
512{
513 return __a ^ __b;
514}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000515/* Arithmetic */
516
Michael Kupersteine45af542015-06-30 13:36:19 +0000517static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000518_mm512_add_pd(__m512d __a, __m512d __b)
519{
520 return __a + __b;
521}
522
Michael Kupersteine45af542015-06-30 13:36:19 +0000523static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000524_mm512_add_ps(__m512 __a, __m512 __b)
525{
526 return __a + __b;
527}
528
Michael Kupersteine45af542015-06-30 13:36:19 +0000529static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000530_mm512_mul_pd(__m512d __a, __m512d __b)
531{
532 return __a * __b;
533}
534
Michael Kupersteine45af542015-06-30 13:36:19 +0000535static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000536_mm512_mul_ps(__m512 __a, __m512 __b)
537{
538 return __a * __b;
539}
540
Michael Kupersteine45af542015-06-30 13:36:19 +0000541static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000542_mm512_sub_pd(__m512d __a, __m512d __b)
543{
544 return __a - __b;
545}
546
Michael Kupersteine45af542015-06-30 13:36:19 +0000547static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000548_mm512_sub_ps(__m512 __a, __m512 __b)
549{
550 return __a - __b;
551}
552
Michael Kupersteine45af542015-06-30 13:36:19 +0000553static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000554_mm512_add_epi64 (__m512i __A, __m512i __B)
555{
556 return (__m512i) ((__v8di) __A + (__v8di) __B);
557}
558
Michael Kupersteine45af542015-06-30 13:36:19 +0000559static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000560_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
561{
562 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
563 (__v8di) __B,
564 (__v8di) __W,
565 (__mmask8) __U);
566}
567
Michael Kupersteine45af542015-06-30 13:36:19 +0000568static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000569_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
570{
571 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
572 (__v8di) __B,
573 (__v8di)
574 _mm512_setzero_si512 (),
575 (__mmask8) __U);
576}
577
Michael Kupersteine45af542015-06-30 13:36:19 +0000578static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000579_mm512_sub_epi64 (__m512i __A, __m512i __B)
580{
581 return (__m512i) ((__v8di) __A - (__v8di) __B);
582}
583
Michael Kupersteine45af542015-06-30 13:36:19 +0000584static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000585_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
586{
587 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
588 (__v8di) __B,
589 (__v8di) __W,
590 (__mmask8) __U);
591}
592
Michael Kupersteine45af542015-06-30 13:36:19 +0000593static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000594_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
595{
596 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
597 (__v8di) __B,
598 (__v8di)
599 _mm512_setzero_si512 (),
600 (__mmask8) __U);
601}
602
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000604_mm512_add_epi32 (__m512i __A, __m512i __B)
605{
606 return (__m512i) ((__v16si) __A + (__v16si) __B);
607}
608
Michael Kupersteine45af542015-06-30 13:36:19 +0000609static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000610_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
611{
612 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
613 (__v16si) __B,
614 (__v16si) __W,
615 (__mmask16) __U);
616}
617
Michael Kupersteine45af542015-06-30 13:36:19 +0000618static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000619_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
620{
621 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
622 (__v16si) __B,
623 (__v16si)
624 _mm512_setzero_si512 (),
625 (__mmask16) __U);
626}
627
Michael Kupersteine45af542015-06-30 13:36:19 +0000628static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000629_mm512_sub_epi32 (__m512i __A, __m512i __B)
630{
631 return (__m512i) ((__v16si) __A - (__v16si) __B);
632}
633
Michael Kupersteine45af542015-06-30 13:36:19 +0000634static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000635_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
636{
637 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
638 (__v16si) __B,
639 (__v16si) __W,
640 (__mmask16) __U);
641}
642
Michael Kupersteine45af542015-06-30 13:36:19 +0000643static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000644_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
645{
646 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
647 (__v16si) __B,
648 (__v16si)
649 _mm512_setzero_si512 (),
650 (__mmask16) __U);
651}
652
Michael Kupersteine45af542015-06-30 13:36:19 +0000653static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000654_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000655{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000656 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
657 (__v8df) __B,
658 (__v8df)
659 _mm512_setzero_pd (),
660 (__mmask8) -1,
661 _MM_FROUND_CUR_DIRECTION);
662}
663
Michael Kupersteine45af542015-06-30 13:36:19 +0000664static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000665_mm512_max_ps(__m512 __A, __m512 __B)
666{
667 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
668 (__v16sf) __B,
669 (__v16sf)
670 _mm512_setzero_ps (),
671 (__mmask16) -1,
672 _MM_FROUND_CUR_DIRECTION);
673}
674
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000675static __inline__ __m128 __DEFAULT_FN_ATTRS
676_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000677 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000678 (__v4sf) __B,
679 (__v4sf) __W,
680 (__mmask8) __U,
681 _MM_FROUND_CUR_DIRECTION);
682}
683
684static __inline__ __m128 __DEFAULT_FN_ATTRS
685_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000686 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000687 (__v4sf) __B,
688 (__v4sf) _mm_setzero_ps (),
689 (__mmask8) __U,
690 _MM_FROUND_CUR_DIRECTION);
691}
692
693#define _mm_max_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000694 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000695 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
696
697#define _mm_mask_max_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000698 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000699 (__v4sf) __W, (__mmask8) __U,__R); })
700
701#define _mm_maskz_max_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000702 (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000703 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
704
705static __inline__ __m128d __DEFAULT_FN_ATTRS
706_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000707 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000708 (__v2df) __B,
709 (__v2df) __W,
710 (__mmask8) __U,
711 _MM_FROUND_CUR_DIRECTION);
712}
713
714static __inline__ __m128d __DEFAULT_FN_ATTRS
715_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000716 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000717 (__v2df) __B,
718 (__v2df) _mm_setzero_pd (),
719 (__mmask8) __U,
720 _MM_FROUND_CUR_DIRECTION);
721}
722
723#define _mm_max_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000724 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000725 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
726
727#define _mm_mask_max_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000728 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000729 (__v2df) __W, (__mmask8) __U,__R); })
730
731#define _mm_maskz_max_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000732 (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000733 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
734
Adam Nemet0d5bb552014-07-28 17:14:40 +0000735static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000736__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000737_mm512_max_epi32(__m512i __A, __m512i __B)
738{
739 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
740 (__v16si) __B,
741 (__v16si)
742 _mm512_setzero_si512 (),
743 (__mmask16) -1);
744}
745
Michael Kupersteine45af542015-06-30 13:36:19 +0000746static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000747_mm512_max_epu32(__m512i __A, __m512i __B)
748{
749 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
750 (__v16si) __B,
751 (__v16si)
752 _mm512_setzero_si512 (),
753 (__mmask16) -1);
754}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000757_mm512_max_epi64(__m512i __A, __m512i __B)
758{
759 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
760 (__v8di) __B,
761 (__v8di)
762 _mm512_setzero_si512 (),
763 (__mmask8) -1);
764}
765
Michael Kupersteine45af542015-06-30 13:36:19 +0000766static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000767_mm512_max_epu64(__m512i __A, __m512i __B)
768{
769 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
770 (__v8di) __B,
771 (__v8di)
772 _mm512_setzero_si512 (),
773 (__mmask8) -1);
774}
775
Michael Kupersteine45af542015-06-30 13:36:19 +0000776static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000777_mm512_min_pd(__m512d __A, __m512d __B)
778{
779 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
780 (__v8df) __B,
781 (__v8df)
782 _mm512_setzero_pd (),
783 (__mmask8) -1,
784 _MM_FROUND_CUR_DIRECTION);
785}
786
Michael Kupersteine45af542015-06-30 13:36:19 +0000787static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000788_mm512_min_ps(__m512 __A, __m512 __B)
789{
790 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
791 (__v16sf) __B,
792 (__v16sf)
793 _mm512_setzero_ps (),
794 (__mmask16) -1,
795 _MM_FROUND_CUR_DIRECTION);
796}
797
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000798static __inline__ __m128 __DEFAULT_FN_ATTRS
799_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000800 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000801 (__v4sf) __B,
802 (__v4sf) __W,
803 (__mmask8) __U,
804 _MM_FROUND_CUR_DIRECTION);
805}
806
807static __inline__ __m128 __DEFAULT_FN_ATTRS
808_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000809 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000810 (__v4sf) __B,
811 (__v4sf) _mm_setzero_ps (),
812 (__mmask8) __U,
813 _MM_FROUND_CUR_DIRECTION);
814}
815
816#define _mm_min_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000817 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000818 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
819
820#define _mm_mask_min_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000821 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000822 (__v4sf) __W, (__mmask8) __U,__R); })
823
824#define _mm_maskz_min_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000825 (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000826 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
827
828static __inline__ __m128d __DEFAULT_FN_ATTRS
829_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000830 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000831 (__v2df) __B,
832 (__v2df) __W,
833 (__mmask8) __U,
834 _MM_FROUND_CUR_DIRECTION);
835}
836
837static __inline__ __m128d __DEFAULT_FN_ATTRS
838_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000839 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000840 (__v2df) __B,
841 (__v2df) _mm_setzero_pd (),
842 (__mmask8) __U,
843 _MM_FROUND_CUR_DIRECTION);
844}
845
846#define _mm_min_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000847 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000848 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
849
850#define _mm_mask_min_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000851 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000852 (__v2df) __W, (__mmask8) __U,__R); })
853
854#define _mm_maskz_min_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000855 (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000856 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
857
Adam Nemet0d5bb552014-07-28 17:14:40 +0000858static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000859__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000860_mm512_min_epi32(__m512i __A, __m512i __B)
861{
862 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
863 (__v16si) __B,
864 (__v16si)
865 _mm512_setzero_si512 (),
866 (__mmask16) -1);
867}
868
Michael Kupersteine45af542015-06-30 13:36:19 +0000869static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000870_mm512_min_epu32(__m512i __A, __m512i __B)
871{
872 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
873 (__v16si) __B,
874 (__v16si)
875 _mm512_setzero_si512 (),
876 (__mmask16) -1);
877}
878
Michael Kupersteine45af542015-06-30 13:36:19 +0000879static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000880_mm512_min_epi64(__m512i __A, __m512i __B)
881{
882 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
883 (__v8di) __B,
884 (__v8di)
885 _mm512_setzero_si512 (),
886 (__mmask8) -1);
887}
888
Michael Kupersteine45af542015-06-30 13:36:19 +0000889static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000890_mm512_min_epu64(__m512i __A, __m512i __B)
891{
892 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
893 (__v8di) __B,
894 (__v8di)
895 _mm512_setzero_si512 (),
896 (__mmask8) -1);
897}
898
Michael Kupersteine45af542015-06-30 13:36:19 +0000899static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000900_mm512_mul_epi32(__m512i __X, __m512i __Y)
901{
902 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
903 (__v16si) __Y,
904 (__v8di)
905 _mm512_setzero_si512 (),
906 (__mmask8) -1);
907}
908
Michael Kupersteine45af542015-06-30 13:36:19 +0000909static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000910_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
911{
912 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
913 (__v16si) __Y,
914 (__v8di) __W, __M);
915}
916
Michael Kupersteine45af542015-06-30 13:36:19 +0000917static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000918_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
919{
920 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
921 (__v16si) __Y,
922 (__v8di)
923 _mm512_setzero_si512 (),
924 __M);
925}
926
Michael Kupersteine45af542015-06-30 13:36:19 +0000927static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000928_mm512_mul_epu32(__m512i __X, __m512i __Y)
929{
930 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
931 (__v16si) __Y,
932 (__v8di)
933 _mm512_setzero_si512 (),
934 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000935}
936
Michael Kupersteine45af542015-06-30 13:36:19 +0000937static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000938_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
939{
940 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
941 (__v16si) __Y,
942 (__v8di) __W, __M);
943}
944
Michael Kupersteine45af542015-06-30 13:36:19 +0000945static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000946_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
947{
948 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
949 (__v16si) __Y,
950 (__v8di)
951 _mm512_setzero_si512 (),
952 __M);
953}
954
Michael Kupersteine45af542015-06-30 13:36:19 +0000955static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000956_mm512_mullo_epi32 (__m512i __A, __m512i __B)
957{
958 return (__m512i) ((__v16si) __A * (__v16si) __B);
959}
960
Michael Kupersteine45af542015-06-30 13:36:19 +0000961static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000962_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
963{
964 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
965 (__v16si) __B,
966 (__v16si)
967 _mm512_setzero_si512 (),
968 __M);
969}
970
Michael Kupersteine45af542015-06-30 13:36:19 +0000971static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000972_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
973{
974 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
975 (__v16si) __B,
976 (__v16si) __W, __M);
977}
978
Michael Kupersteine45af542015-06-30 13:36:19 +0000979static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000980_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000981{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000982 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000983 (__v8df) _mm512_setzero_pd (),
984 (__mmask8) -1,
985 _MM_FROUND_CUR_DIRECTION);
986}
987
Michael Kupersteine45af542015-06-30 13:36:19 +0000988static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000989_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000990{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +0000991 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000992 (__v16sf) _mm512_setzero_ps (),
993 (__mmask16) -1,
994 _MM_FROUND_CUR_DIRECTION);
995}
996
Michael Kupersteine45af542015-06-30 13:36:19 +0000997static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000998_mm512_rsqrt14_pd(__m512d __A)
999{
1000 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1001 (__v8df)
1002 _mm512_setzero_pd (),
1003 (__mmask8) -1);}
1004
Michael Kupersteine45af542015-06-30 13:36:19 +00001005static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001006_mm512_rsqrt14_ps(__m512 __A)
1007{
1008 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1009 (__v16sf)
1010 _mm512_setzero_ps (),
1011 (__mmask16) -1);
1012}
1013
Michael Kupersteine45af542015-06-30 13:36:19 +00001014static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001015_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1016{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001017 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001018 (__v4sf) __B,
1019 (__v4sf)
1020 _mm_setzero_ps (),
1021 (__mmask8) -1);
1022}
1023
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001024static __inline__ __m128 __DEFAULT_FN_ATTRS
1025_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1026{
1027 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1028 (__v4sf) __B,
1029 (__v4sf) __W,
1030 (__mmask8) __U);
1031}
1032
1033static __inline__ __m128 __DEFAULT_FN_ATTRS
1034_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1035{
1036 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1037 (__v4sf) __B,
1038 (__v4sf) _mm_setzero_ps (),
1039 (__mmask8) __U);
1040}
1041
Michael Kupersteine45af542015-06-30 13:36:19 +00001042static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001043_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1044{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001045 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001046 (__v2df) __B,
1047 (__v2df)
1048 _mm_setzero_pd (),
1049 (__mmask8) -1);
1050}
1051
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001052static __inline__ __m128d __DEFAULT_FN_ATTRS
1053_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1054{
1055 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1056 (__v2df) __B,
1057 (__v2df) __W,
1058 (__mmask8) __U);
1059}
1060
1061static __inline__ __m128d __DEFAULT_FN_ATTRS
1062_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1063{
1064 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1065 (__v2df) __B,
1066 (__v2df) _mm_setzero_pd (),
1067 (__mmask8) __U);
1068}
1069
Michael Kupersteine45af542015-06-30 13:36:19 +00001070static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001071_mm512_rcp14_pd(__m512d __A)
1072{
1073 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1074 (__v8df)
1075 _mm512_setzero_pd (),
1076 (__mmask8) -1);
1077}
1078
Michael Kupersteine45af542015-06-30 13:36:19 +00001079static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001080_mm512_rcp14_ps(__m512 __A)
1081{
1082 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1083 (__v16sf)
1084 _mm512_setzero_ps (),
1085 (__mmask16) -1);
1086}
Michael Kupersteine45af542015-06-30 13:36:19 +00001087static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001088_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001089{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001090 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001091 (__v4sf) __B,
1092 (__v4sf)
1093 _mm_setzero_ps (),
1094 (__mmask8) -1);
1095}
1096
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001097static __inline__ __m128 __DEFAULT_FN_ATTRS
1098_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1099{
1100 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1101 (__v4sf) __B,
1102 (__v4sf) __W,
1103 (__mmask8) __U);
1104}
1105
1106static __inline__ __m128 __DEFAULT_FN_ATTRS
1107_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1108{
1109 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1110 (__v4sf) __B,
1111 (__v4sf) _mm_setzero_ps (),
1112 (__mmask8) __U);
1113}
1114
Michael Kupersteine45af542015-06-30 13:36:19 +00001115static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001116_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001117{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001118 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001119 (__v2df) __B,
1120 (__v2df)
1121 _mm_setzero_pd (),
1122 (__mmask8) -1);
1123}
1124
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001125static __inline__ __m128d __DEFAULT_FN_ATTRS
1126_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1127{
1128 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1129 (__v2df) __B,
1130 (__v2df) __W,
1131 (__mmask8) __U);
1132}
1133
1134static __inline__ __m128d __DEFAULT_FN_ATTRS
1135_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1136{
1137 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1138 (__v2df) __B,
1139 (__v2df) _mm_setzero_pd (),
1140 (__mmask8) __U);
1141}
1142
Michael Kupersteine45af542015-06-30 13:36:19 +00001143static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001144_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001145{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001146 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1147 _MM_FROUND_FLOOR,
1148 (__v16sf) __A, -1,
1149 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001150}
1151
Michael Kupersteine45af542015-06-30 13:36:19 +00001152static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001153_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001154{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001155 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1156 _MM_FROUND_FLOOR,
1157 (__v8df) __A, -1,
1158 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001159}
1160
Michael Kupersteine45af542015-06-30 13:36:19 +00001161static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001162_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001163{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001164 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1165 _MM_FROUND_CEIL,
1166 (__v16sf) __A, -1,
1167 _MM_FROUND_CUR_DIRECTION);
1168}
1169
Michael Kupersteine45af542015-06-30 13:36:19 +00001170static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001171_mm512_ceil_pd(__m512d __A)
1172{
1173 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1174 _MM_FROUND_CEIL,
1175 (__v8df) __A, -1,
1176 _MM_FROUND_CUR_DIRECTION);
1177}
1178
Michael Kupersteine45af542015-06-30 13:36:19 +00001179static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001180_mm512_abs_epi64(__m512i __A)
1181{
1182 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1183 (__v8di)
1184 _mm512_setzero_si512 (),
1185 (__mmask8) -1);
1186}
1187
Michael Kupersteine45af542015-06-30 13:36:19 +00001188static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001189_mm512_abs_epi32(__m512i __A)
1190{
1191 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1192 (__v16si)
1193 _mm512_setzero_si512 (),
1194 (__mmask16) -1);
1195}
1196
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001197static __inline__ __m128 __DEFAULT_FN_ATTRS
1198_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001199 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001200 (__v4sf) __B,
1201 (__v4sf) __W,
1202 (__mmask8) __U,
1203 _MM_FROUND_CUR_DIRECTION);
1204}
1205
1206static __inline__ __m128 __DEFAULT_FN_ATTRS
1207_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001208 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001209 (__v4sf) __B,
1210 (__v4sf) _mm_setzero_ps (),
1211 (__mmask8) __U,
1212 _MM_FROUND_CUR_DIRECTION);
1213}
1214
1215#define _mm_add_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001216 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001217 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1218
1219#define _mm_mask_add_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001220 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001221 (__v4sf) __W, (__mmask8) __U,__R); })
1222
1223#define _mm_maskz_add_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001224 (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001225 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1226
1227static __inline__ __m128d __DEFAULT_FN_ATTRS
1228_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001229 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001230 (__v2df) __B,
1231 (__v2df) __W,
1232 (__mmask8) __U,
1233 _MM_FROUND_CUR_DIRECTION);
1234}
1235
1236static __inline__ __m128d __DEFAULT_FN_ATTRS
1237_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001238 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001239 (__v2df) __B,
1240 (__v2df) _mm_setzero_pd (),
1241 (__mmask8) __U,
1242 _MM_FROUND_CUR_DIRECTION);
1243}
1244#define _mm_add_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001245 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001246 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1247
1248#define _mm_mask_add_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001249 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001250 (__v2df) __W, (__mmask8) __U,__R); })
1251
1252#define _mm_maskz_add_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001253 (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001254 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1255
Asaf Badouhffeb6242015-07-21 15:27:28 +00001256static __inline__ __m512d __DEFAULT_FN_ATTRS
1257_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1258 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1259 (__v8df) __B,
1260 (__v8df) __W,
1261 (__mmask8) __U,
1262 _MM_FROUND_CUR_DIRECTION);
1263}
1264
1265static __inline__ __m512d __DEFAULT_FN_ATTRS
1266_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1267 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1268 (__v8df) __B,
1269 (__v8df) _mm512_setzero_pd (),
1270 (__mmask8) __U,
1271 _MM_FROUND_CUR_DIRECTION);
1272}
1273
1274static __inline__ __m512 __DEFAULT_FN_ATTRS
1275_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1276 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1277 (__v16sf) __B,
1278 (__v16sf) __W,
1279 (__mmask16) __U,
1280 _MM_FROUND_CUR_DIRECTION);
1281}
1282
1283static __inline__ __m512 __DEFAULT_FN_ATTRS
1284_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1285 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1286 (__v16sf) __B,
1287 (__v16sf) _mm512_setzero_ps (),
1288 (__mmask16) __U,
1289 _MM_FROUND_CUR_DIRECTION);
1290}
1291
1292#define _mm512_add_round_pd(__A, __B, __R) __extension__ ({ \
1293 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1294 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1295
1296#define _mm512_mask_add_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1297 (__m512d) __builtin_ia32_addpd512_mask((__v8df) __A, (__v8df) __B, \
1298 (__v8df) __W, (__mmask8) __U, __R); })
1299
1300#define _mm512_maskz_add_round_pd(__U, __A, __B, __R) __extension__ ({ \
1301 (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A, (__v8df) __B, \
1302 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R); })
1303
1304#define _mm512_add_round_ps(__A, __B, __R) __extension__ ({ \
1305 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1306 (__v16sf) _mm512_setzero_ps(), (__mmask16) -1, __R); })
1307
1308#define _mm512_mask_add_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1309 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1310 (__v16sf) __W, (__mmask16)__U, __R); })
1311
1312#define _mm512_maskz_add_round_ps(__U, __A, __B, __R) __extension__ ({ \
1313 (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A, (__v16sf) __B, \
1314 (__v16sf) _mm512_setzero_ps(), (__mmask16)__U, __R); })
1315
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001316static __inline__ __m128 __DEFAULT_FN_ATTRS
1317_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001318 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001319 (__v4sf) __B,
1320 (__v4sf) __W,
1321 (__mmask8) __U,
1322 _MM_FROUND_CUR_DIRECTION);
1323}
1324
1325static __inline__ __m128 __DEFAULT_FN_ATTRS
1326_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001327 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001328 (__v4sf) __B,
1329 (__v4sf) _mm_setzero_ps (),
1330 (__mmask8) __U,
1331 _MM_FROUND_CUR_DIRECTION);
1332}
1333#define _mm_sub_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001334 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001335 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1336
1337#define _mm_mask_sub_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001338 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001339 (__v4sf) __W, (__mmask8) __U,__R); })
1340
1341#define _mm_maskz_sub_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001342 (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001343 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1344
1345static __inline__ __m128d __DEFAULT_FN_ATTRS
1346_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001347 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001348 (__v2df) __B,
1349 (__v2df) __W,
1350 (__mmask8) __U,
1351 _MM_FROUND_CUR_DIRECTION);
1352}
1353
1354static __inline__ __m128d __DEFAULT_FN_ATTRS
1355_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001356 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001357 (__v2df) __B,
1358 (__v2df) _mm_setzero_pd (),
1359 (__mmask8) __U,
1360 _MM_FROUND_CUR_DIRECTION);
1361}
1362
1363#define _mm_sub_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001364 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001365 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1366
1367#define _mm_mask_sub_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001368 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001369 (__v2df) __W, (__mmask8) __U,__R); })
1370
1371#define _mm_maskz_sub_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001372 (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001373 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1374
Asaf Badouhffeb6242015-07-21 15:27:28 +00001375static __inline__ __m512d __DEFAULT_FN_ATTRS
1376_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1377 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1378 (__v8df) __B,
1379 (__v8df) __W,
1380 (__mmask8) __U,
1381 _MM_FROUND_CUR_DIRECTION);
1382}
1383
1384static __inline__ __m512d __DEFAULT_FN_ATTRS
1385_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1386 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
1387 (__v8df) __B,
1388 (__v8df)
1389 _mm512_setzero_pd (),
1390 (__mmask8) __U,
1391 _MM_FROUND_CUR_DIRECTION);
1392}
1393
1394static __inline__ __m512 __DEFAULT_FN_ATTRS
1395_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1396 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1397 (__v16sf) __B,
1398 (__v16sf) __W,
1399 (__mmask16) __U,
1400 _MM_FROUND_CUR_DIRECTION);
1401}
1402
1403static __inline__ __m512 __DEFAULT_FN_ATTRS
1404_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1405 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
1406 (__v16sf) __B,
1407 (__v16sf)
1408 _mm512_setzero_ps (),
1409 (__mmask16) __U,
1410 _MM_FROUND_CUR_DIRECTION);
1411}
1412
1413#define _mm512_sub_round_pd(__A, __B, __R) __extension__ ({ \
1414 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B,\
1415 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1416
1417#define _mm512_mask_sub_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1418 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1419 (__v8df) __W, (__mmask8) __U, __R); })
1420
1421#define _mm512_maskz_sub_round_pd(__U, __A, __B, __R) __extension__ ({ \
1422 (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A, (__v8df) __B, \
1423 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1424
1425#define _mm512_sub_round_ps(__A, __B, __R) __extension__ ({ \
1426 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1427 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1428
1429#define _mm512_mask_sub_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1430 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1431 (__v16sf) __W, (__mmask16) __U, __R); });
1432
1433#define _mm512_maskz_sub_round_ps(__U, __A, __B, __R) __extension__ ({ \
1434 (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A, (__v16sf) __B, \
1435 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1436
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001437static __inline__ __m128 __DEFAULT_FN_ATTRS
1438_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001439 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001440 (__v4sf) __B,
1441 (__v4sf) __W,
1442 (__mmask8) __U,
1443 _MM_FROUND_CUR_DIRECTION);
1444}
1445
1446static __inline__ __m128 __DEFAULT_FN_ATTRS
1447_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001448 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001449 (__v4sf) __B,
1450 (__v4sf) _mm_setzero_ps (),
1451 (__mmask8) __U,
1452 _MM_FROUND_CUR_DIRECTION);
1453}
1454#define _mm_mul_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001455 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001456 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1457
1458#define _mm_mask_mul_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001459 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001460 (__v4sf) __W, (__mmask8) __U,__R); })
1461
1462#define _mm_maskz_mul_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001463 (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001464 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1465
1466static __inline__ __m128d __DEFAULT_FN_ATTRS
1467_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001468 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001469 (__v2df) __B,
1470 (__v2df) __W,
1471 (__mmask8) __U,
1472 _MM_FROUND_CUR_DIRECTION);
1473}
1474
1475static __inline__ __m128d __DEFAULT_FN_ATTRS
1476_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001477 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001478 (__v2df) __B,
1479 (__v2df) _mm_setzero_pd (),
1480 (__mmask8) __U,
1481 _MM_FROUND_CUR_DIRECTION);
1482}
1483
1484#define _mm_mul_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001485 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001486 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1487
1488#define _mm_mask_mul_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001489 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001490 (__v2df) __W, (__mmask8) __U,__R); })
1491
1492#define _mm_maskz_mul_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001493 (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001494 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1495
Asaf Badouhffeb6242015-07-21 15:27:28 +00001496static __inline__ __m512d __DEFAULT_FN_ATTRS
1497_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1498 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1499 (__v8df) __B,
1500 (__v8df) __W,
1501 (__mmask8) __U,
1502 _MM_FROUND_CUR_DIRECTION);
1503}
1504
1505static __inline__ __m512d __DEFAULT_FN_ATTRS
1506_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1507 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
1508 (__v8df) __B,
1509 (__v8df)
1510 _mm512_setzero_pd (),
1511 (__mmask8) __U,
1512 _MM_FROUND_CUR_DIRECTION);
1513}
1514
1515static __inline__ __m512 __DEFAULT_FN_ATTRS
1516_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1517 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1518 (__v16sf) __B,
1519 (__v16sf) __W,
1520 (__mmask16) __U,
1521 _MM_FROUND_CUR_DIRECTION);
1522}
1523
1524static __inline__ __m512 __DEFAULT_FN_ATTRS
1525_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1526 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
1527 (__v16sf) __B,
1528 (__v16sf)
1529 _mm512_setzero_ps (),
1530 (__mmask16) __U,
1531 _MM_FROUND_CUR_DIRECTION);
1532}
1533
1534#define _mm512_mul_round_pd(__A, __B, __R) __extension__ ({ \
1535 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B,\
1536 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1537
1538#define _mm512_mask_mul_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1539 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1540 (__v8df) __W, (__mmask8) __U, __R); })
1541
1542#define _mm512_maskz_mul_round_pd(__U, __A, __B, __R) __extension__ ({ \
1543 (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A, (__v8df) __B, \
1544 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1545
1546#define _mm512_mul_round_ps(__A, __B, __R) __extension__ ({ \
1547 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1548 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1549
1550#define _mm512_mask_mul_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1551 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1552 (__v16sf) __W, (__mmask16) __U, __R); });
1553
1554#define _mm512_maskz_mul_round_ps(__U, __A, __B, __R) __extension__ ({ \
1555 (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A, (__v16sf) __B, \
1556 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1557
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001558static __inline__ __m128 __DEFAULT_FN_ATTRS
1559_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001560 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001561 (__v4sf) __B,
1562 (__v4sf) __W,
1563 (__mmask8) __U,
1564 _MM_FROUND_CUR_DIRECTION);
1565}
1566
1567static __inline__ __m128 __DEFAULT_FN_ATTRS
1568_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001569 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001570 (__v4sf) __B,
1571 (__v4sf) _mm_setzero_ps (),
1572 (__mmask8) __U,
1573 _MM_FROUND_CUR_DIRECTION);
1574}
1575
1576#define _mm_div_round_ss(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001577 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001578 (__v4sf) _mm_setzero_ps(), (__mmask8) -1, __R); })
1579
1580#define _mm_mask_div_round_ss(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001581 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001582 (__v4sf) __W, (__mmask8) __U,__R); })
1583
1584#define _mm_maskz_div_round_ss(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001585 (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A, (__v4sf) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001586 (__v4sf) _mm_setzero_ps(), (__mmask8) __U,__R); })
1587
1588static __inline__ __m128d __DEFAULT_FN_ATTRS
1589_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001590 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001591 (__v2df) __B,
1592 (__v2df) __W,
1593 (__mmask8) __U,
1594 _MM_FROUND_CUR_DIRECTION);
1595}
1596
1597static __inline__ __m128d __DEFAULT_FN_ATTRS
1598_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001599 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001600 (__v2df) __B,
1601 (__v2df) _mm_setzero_pd (),
1602 (__mmask8) __U,
1603 _MM_FROUND_CUR_DIRECTION);
1604}
1605
1606#define _mm_div_round_sd(__A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001607 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001608 (__v2df) _mm_setzero_pd(), (__mmask8) -1, __R); })
1609
1610#define _mm_mask_div_round_sd(__W, __U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001611 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001612 (__v2df) __W, (__mmask8) __U,__R); })
1613
1614#define _mm_maskz_div_round_sd(__U, __A, __B, __R) __extension__ ({ \
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001615 (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A, (__v2df) __B, \
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001616 (__v2df) _mm_setzero_pd(), (__mmask8) __U,__R); })
1617
Asaf Badouhffeb6242015-07-21 15:27:28 +00001618static __inline__ __m512d __DEFAULT_FN_ATTRS
1619_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1620 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1621 (__v8df) __B,
1622 (__v8df) __W,
1623 (__mmask8) __U,
1624 _MM_FROUND_CUR_DIRECTION);
1625}
1626
1627static __inline__ __m512d __DEFAULT_FN_ATTRS
1628_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1629 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
1630 (__v8df) __B,
1631 (__v8df)
1632 _mm512_setzero_pd (),
1633 (__mmask8) __U,
1634 _MM_FROUND_CUR_DIRECTION);
1635}
1636
1637static __inline__ __m512 __DEFAULT_FN_ATTRS
1638_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1639 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1640 (__v16sf) __B,
1641 (__v16sf) __W,
1642 (__mmask16) __U,
1643 _MM_FROUND_CUR_DIRECTION);
1644}
1645
1646static __inline__ __m512 __DEFAULT_FN_ATTRS
1647_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1648 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
1649 (__v16sf) __B,
1650 (__v16sf)
1651 _mm512_setzero_ps (),
1652 (__mmask16) __U,
1653 _MM_FROUND_CUR_DIRECTION);
1654}
1655
1656#define _mm512_div_round_pd(__A, __B, __R) __extension__ ({ \
1657 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B,\
1658 (__v8df) _mm512_setzero_pd(), (__mmask8) -1, __R); })
1659
1660#define _mm512_mask_div_round_pd(__W, __U, __A, __B, __R) __extension__ ({ \
1661 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1662 (__v8df) __W, (__mmask8) __U, __R); })
1663
1664#define _mm512_maskz_div_round_pd(__U, __A, __B, __R) __extension__ ({ \
1665 (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A, (__v8df) __B, \
1666 (__v8df) _mm512_setzero_pd(), (__mmask8) __U, __R);})
1667
1668#define _mm512_div_round_ps(__A, __B, __R) __extension__ ({ \
1669 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1670 (__v16sf) _mm512_setzero_ps (), (__mmask16) -1, __R);})
1671
1672#define _mm512_mask_div_round_ps(__W, __U, __A, __B, __R) __extension__ ({ \
1673 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1674 (__v16sf) __W, (__mmask16) __U, __R); });
1675
1676#define _mm512_maskz_div_round_ps(__U, __A, __B, __R) __extension__ ({ \
1677 (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A, (__v16sf) __B, \
1678 (__v16sf) _mm512_setzero_ps (), (__mmask16) __U, __R);});
1679
Craig Topper72c7d512015-02-01 07:35:35 +00001680#define _mm512_roundscale_ps(A, B) __extension__ ({ \
1681 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
1682 -1, _MM_FROUND_CUR_DIRECTION); })
1683
1684#define _mm512_roundscale_pd(A, B) __extension__ ({ \
1685 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
1686 -1, _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00001687
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001688#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
1689 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1690 (__v8df) (B), (__v8df) (C), \
1691 (__mmask8) -1, (R)); })
1692
1693
1694#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
1695 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1696 (__v8df) (B), (__v8df) (C), \
1697 (__mmask8) (U), (R)); })
1698
1699
1700#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1701 (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) (A), \
1702 (__v8df) (B), (__v8df) (C), \
1703 (__mmask8) (U), (R)); })
1704
1705
1706#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1707 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1708 (__v8df) (B), (__v8df) (C), \
1709 (__mmask8) (U), (R)); })
1710
1711
1712#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
1713 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1714 (__v8df) (B), -(__v8df) (C), \
1715 (__mmask8) -1, (R)); })
1716
1717
1718#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
1719 (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) (A), \
1720 (__v8df) (B), -(__v8df) (C), \
1721 (__mmask8) (U), (R)); })
1722
1723
1724#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1725 (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) (A), \
1726 (__v8df) (B), -(__v8df) (C), \
1727 (__mmask8) (U), (R)); })
1728
1729
1730#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
1731 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1732 (__v8df) (B), (__v8df) (C), \
1733 (__mmask8) -1, (R)); })
1734
1735
1736#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
1737 (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) (A), \
1738 (__v8df) (B), (__v8df) (C), \
1739 (__mmask8) (U), (R)); })
1740
1741
1742#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
1743 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1744 (__v8df) (B), (__v8df) (C), \
1745 (__mmask8) (U), (R)); })
1746
1747
1748#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
1749 (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) (A), \
1750 (__v8df) (B), -(__v8df) (C), \
1751 (__mmask8) -1, (R)); })
1752
1753
1754#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
1755 (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) (A), \
1756 (__v8df) (B), -(__v8df) (C), \
1757 (__mmask8) (U), (R)); })
1758
1759
Michael Kupersteine45af542015-06-30 13:36:19 +00001760static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001761_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1762{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001763 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1764 (__v8df) __B,
1765 (__v8df) __C,
1766 (__mmask8) -1,
1767 _MM_FROUND_CUR_DIRECTION);
1768}
1769
Michael Kupersteine45af542015-06-30 13:36:19 +00001770static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001771_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1772{
1773 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1774 (__v8df) __B,
1775 (__v8df) __C,
1776 (__mmask8) __U,
1777 _MM_FROUND_CUR_DIRECTION);
1778}
1779
Michael Kupersteine45af542015-06-30 13:36:19 +00001780static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001781_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1782{
1783 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
1784 (__v8df) __B,
1785 (__v8df) __C,
1786 (__mmask8) __U,
1787 _MM_FROUND_CUR_DIRECTION);
1788}
1789
Michael Kupersteine45af542015-06-30 13:36:19 +00001790static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001791_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1792{
1793 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1794 (__v8df) __B,
1795 (__v8df) __C,
1796 (__mmask8) __U,
1797 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001798}
1799
Michael Kupersteine45af542015-06-30 13:36:19 +00001800static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001801_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1802{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001803 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1804 (__v8df) __B,
1805 -(__v8df) __C,
1806 (__mmask8) -1,
1807 _MM_FROUND_CUR_DIRECTION);
1808}
1809
Michael Kupersteine45af542015-06-30 13:36:19 +00001810static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001811_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
1812{
1813 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
1814 (__v8df) __B,
1815 -(__v8df) __C,
1816 (__mmask8) __U,
1817 _MM_FROUND_CUR_DIRECTION);
1818}
1819
Michael Kupersteine45af542015-06-30 13:36:19 +00001820static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001821_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1822{
1823 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
1824 (__v8df) __B,
1825 -(__v8df) __C,
1826 (__mmask8) __U,
1827 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001828}
1829
Michael Kupersteine45af542015-06-30 13:36:19 +00001830static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001831_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
1832{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001833 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1834 (__v8df) __B,
1835 (__v8df) __C,
1836 (__mmask8) -1,
1837 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001838}
1839
Michael Kupersteine45af542015-06-30 13:36:19 +00001840static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001841_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
1842{
1843 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
1844 (__v8df) __B,
1845 (__v8df) __C,
1846 (__mmask8) __U,
1847 _MM_FROUND_CUR_DIRECTION);
1848}
1849
Michael Kupersteine45af542015-06-30 13:36:19 +00001850static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001851_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1852{
1853 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1854 (__v8df) __B,
1855 (__v8df) __C,
1856 (__mmask8) __U,
1857 _MM_FROUND_CUR_DIRECTION);
1858}
1859
Michael Kupersteine45af542015-06-30 13:36:19 +00001860static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001861_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
1862{
1863 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
1864 (__v8df) __B,
1865 -(__v8df) __C,
1866 (__mmask8) -1,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
Michael Kupersteine45af542015-06-30 13:36:19 +00001870static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001871_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
1872{
1873 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
1874 (__v8df) __B,
1875 -(__v8df) __C,
1876 (__mmask8) __U,
1877 _MM_FROUND_CUR_DIRECTION);
1878}
1879
1880#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
1881 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1882 (__v16sf) (B), (__v16sf) (C), \
1883 (__mmask16) -1, (R)); })
1884
1885
1886#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
1887 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1888 (__v16sf) (B), (__v16sf) (C), \
1889 (__mmask16) (U), (R)); })
1890
1891
1892#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1893 (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) (A), \
1894 (__v16sf) (B), (__v16sf) (C), \
1895 (__mmask16) (U), (R)); })
1896
1897
1898#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1899 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1900 (__v16sf) (B), (__v16sf) (C), \
1901 (__mmask16) (U), (R)); })
1902
1903
1904#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
1905 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1906 (__v16sf) (B), -(__v16sf) (C), \
1907 (__mmask16) -1, (R)); })
1908
1909
1910#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
1911 (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) (A), \
1912 (__v16sf) (B), -(__v16sf) (C), \
1913 (__mmask16) (U), (R)); })
1914
1915
1916#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1917 (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) (A), \
1918 (__v16sf) (B), -(__v16sf) (C), \
1919 (__mmask16) (U), (R)); })
1920
1921
1922#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
1923 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1924 (__v16sf) (B), (__v16sf) (C), \
1925 (__mmask16) -1, (R)); })
1926
1927
1928#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
1929 (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) (A), \
1930 (__v16sf) (B), (__v16sf) (C), \
1931 (__mmask16) (U), (R)); })
1932
1933
1934#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
1935 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1936 (__v16sf) (B), (__v16sf) (C), \
1937 (__mmask16) (U), (R)); })
1938
1939
1940#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
1941 (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) (A), \
1942 (__v16sf) (B), -(__v16sf) (C), \
1943 (__mmask16) -1, (R)); })
1944
1945
1946#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
1947 (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) (A), \
1948 (__v16sf) (B), -(__v16sf) (C), \
1949 (__mmask16) (U), (R)); })
1950
1951
Michael Kupersteine45af542015-06-30 13:36:19 +00001952static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001953_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
1954{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001955 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1956 (__v16sf) __B,
1957 (__v16sf) __C,
1958 (__mmask16) -1,
1959 _MM_FROUND_CUR_DIRECTION);
1960}
1961
Michael Kupersteine45af542015-06-30 13:36:19 +00001962static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001963_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
1964{
1965 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1966 (__v16sf) __B,
1967 (__v16sf) __C,
1968 (__mmask16) __U,
1969 _MM_FROUND_CUR_DIRECTION);
1970}
1971
Michael Kupersteine45af542015-06-30 13:36:19 +00001972static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001973_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
1974{
1975 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
1976 (__v16sf) __B,
1977 (__v16sf) __C,
1978 (__mmask16) __U,
1979 _MM_FROUND_CUR_DIRECTION);
1980}
1981
Michael Kupersteine45af542015-06-30 13:36:19 +00001982static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001983_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
1984{
1985 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
1986 (__v16sf) __B,
1987 (__v16sf) __C,
1988 (__mmask16) __U,
1989 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00001990}
1991
Michael Kupersteine45af542015-06-30 13:36:19 +00001992static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00001993_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
1994{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001995 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
1996 (__v16sf) __B,
1997 -(__v16sf) __C,
1998 (__mmask16) -1,
1999 _MM_FROUND_CUR_DIRECTION);
2000}
2001
Michael Kupersteine45af542015-06-30 13:36:19 +00002002static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002003_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2004{
2005 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2006 (__v16sf) __B,
2007 -(__v16sf) __C,
2008 (__mmask16) __U,
2009 _MM_FROUND_CUR_DIRECTION);
2010}
2011
Michael Kupersteine45af542015-06-30 13:36:19 +00002012static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002013_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2014{
2015 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2016 (__v16sf) __B,
2017 -(__v16sf) __C,
2018 (__mmask16) __U,
2019 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002020}
2021
Michael Kupersteine45af542015-06-30 13:36:19 +00002022static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002023_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2024{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002025 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2026 (__v16sf) __B,
2027 (__v16sf) __C,
2028 (__mmask16) -1,
2029 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002030}
2031
Michael Kupersteine45af542015-06-30 13:36:19 +00002032static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002033_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2034{
2035 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2036 (__v16sf) __B,
2037 (__v16sf) __C,
2038 (__mmask16) __U,
2039 _MM_FROUND_CUR_DIRECTION);
2040}
2041
Michael Kupersteine45af542015-06-30 13:36:19 +00002042static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002043_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2044{
2045 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2046 (__v16sf) __B,
2047 (__v16sf) __C,
2048 (__mmask16) __U,
2049 _MM_FROUND_CUR_DIRECTION);
2050}
2051
Michael Kupersteine45af542015-06-30 13:36:19 +00002052static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002053_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2054{
2055 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2056 (__v16sf) __B,
2057 -(__v16sf) __C,
2058 (__mmask16) -1,
2059 _MM_FROUND_CUR_DIRECTION);
2060}
2061
Michael Kupersteine45af542015-06-30 13:36:19 +00002062static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002063_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2064{
2065 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2066 (__v16sf) __B,
2067 -(__v16sf) __C,
2068 (__mmask16) __U,
2069 _MM_FROUND_CUR_DIRECTION);
2070}
2071
2072#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
2073 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2074 (__v8df) (B), (__v8df) (C), \
2075 (__mmask8) -1, (R)); })
2076
2077
2078#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
2079 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2080 (__v8df) (B), (__v8df) (C), \
2081 (__mmask8) (U), (R)); })
2082
2083
2084#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
2085 (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) (A), \
2086 (__v8df) (B), (__v8df) (C), \
2087 (__mmask8) (U), (R)); })
2088
2089
2090#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
2091 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2092 (__v8df) (B), (__v8df) (C), \
2093 (__mmask8) (U), (R)); })
2094
2095
2096#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
2097 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2098 (__v8df) (B), -(__v8df) (C), \
2099 (__mmask8) -1, (R)); })
2100
2101
2102#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
2103 (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) (A), \
2104 (__v8df) (B), -(__v8df) (C), \
2105 (__mmask8) (U), (R)); })
2106
2107
2108#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
2109 (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) (A), \
2110 (__v8df) (B), -(__v8df) (C), \
2111 (__mmask8) (U), (R)); })
2112
2113
Michael Kupersteine45af542015-06-30 13:36:19 +00002114static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002115_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2116{
2117 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2118 (__v8df) __B,
2119 (__v8df) __C,
2120 (__mmask8) -1,
2121 _MM_FROUND_CUR_DIRECTION);
2122}
2123
Michael Kupersteine45af542015-06-30 13:36:19 +00002124static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002125_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2126{
2127 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2128 (__v8df) __B,
2129 (__v8df) __C,
2130 (__mmask8) __U,
2131 _MM_FROUND_CUR_DIRECTION);
2132}
2133
Michael Kupersteine45af542015-06-30 13:36:19 +00002134static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002135_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2136{
2137 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2138 (__v8df) __B,
2139 (__v8df) __C,
2140 (__mmask8) __U,
2141 _MM_FROUND_CUR_DIRECTION);
2142}
2143
Michael Kupersteine45af542015-06-30 13:36:19 +00002144static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002145_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2146{
2147 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2148 (__v8df) __B,
2149 (__v8df) __C,
2150 (__mmask8) __U,
2151 _MM_FROUND_CUR_DIRECTION);
2152}
2153
Michael Kupersteine45af542015-06-30 13:36:19 +00002154static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002155_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2156{
2157 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2158 (__v8df) __B,
2159 -(__v8df) __C,
2160 (__mmask8) -1,
2161 _MM_FROUND_CUR_DIRECTION);
2162}
2163
Michael Kupersteine45af542015-06-30 13:36:19 +00002164static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002165_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2166{
2167 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2168 (__v8df) __B,
2169 -(__v8df) __C,
2170 (__mmask8) __U,
2171 _MM_FROUND_CUR_DIRECTION);
2172}
2173
Michael Kupersteine45af542015-06-30 13:36:19 +00002174static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002175_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2176{
2177 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2178 (__v8df) __B,
2179 -(__v8df) __C,
2180 (__mmask8) __U,
2181 _MM_FROUND_CUR_DIRECTION);
2182}
2183
2184#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
2185 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2186 (__v16sf) (B), (__v16sf) (C), \
2187 (__mmask16) -1, (R)); })
2188
2189
2190#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
2191 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2192 (__v16sf) (B), (__v16sf) (C), \
2193 (__mmask16) (U), (R)); })
2194
2195
2196#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
2197 (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) (A), \
2198 (__v16sf) (B), (__v16sf) (C), \
2199 (__mmask16) (U), (R)); })
2200
2201
2202#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
2203 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2204 (__v16sf) (B), (__v16sf) (C), \
2205 (__mmask16) (U), (R)); })
2206
2207
2208#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
2209 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2210 (__v16sf) (B), -(__v16sf) (C), \
2211 (__mmask16) -1, (R)); })
2212
2213
2214#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
2215 (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) (A), \
2216 (__v16sf) (B), -(__v16sf) (C), \
2217 (__mmask16) (U), (R)); })
2218
2219
2220#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
2221 (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) (A), \
2222 (__v16sf) (B), -(__v16sf) (C), \
2223 (__mmask16) (U), (R)); })
2224
2225
Michael Kupersteine45af542015-06-30 13:36:19 +00002226static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002227_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2228{
2229 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2230 (__v16sf) __B,
2231 (__v16sf) __C,
2232 (__mmask16) -1,
2233 _MM_FROUND_CUR_DIRECTION);
2234}
2235
Michael Kupersteine45af542015-06-30 13:36:19 +00002236static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002237_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2238{
2239 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2240 (__v16sf) __B,
2241 (__v16sf) __C,
2242 (__mmask16) __U,
2243 _MM_FROUND_CUR_DIRECTION);
2244}
2245
Michael Kupersteine45af542015-06-30 13:36:19 +00002246static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002247_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2248{
2249 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2250 (__v16sf) __B,
2251 (__v16sf) __C,
2252 (__mmask16) __U,
2253 _MM_FROUND_CUR_DIRECTION);
2254}
2255
Michael Kupersteine45af542015-06-30 13:36:19 +00002256static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002257_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2258{
2259 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2260 (__v16sf) __B,
2261 (__v16sf) __C,
2262 (__mmask16) __U,
2263 _MM_FROUND_CUR_DIRECTION);
2264}
2265
Michael Kupersteine45af542015-06-30 13:36:19 +00002266static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002267_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
2268{
2269 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2270 (__v16sf) __B,
2271 -(__v16sf) __C,
2272 (__mmask16) -1,
2273 _MM_FROUND_CUR_DIRECTION);
2274}
2275
Michael Kupersteine45af542015-06-30 13:36:19 +00002276static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002277_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2278{
2279 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2280 (__v16sf) __B,
2281 -(__v16sf) __C,
2282 (__mmask16) __U,
2283 _MM_FROUND_CUR_DIRECTION);
2284}
2285
Michael Kupersteine45af542015-06-30 13:36:19 +00002286static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002287_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2288{
2289 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
2290 (__v16sf) __B,
2291 -(__v16sf) __C,
2292 (__mmask16) __U,
2293 _MM_FROUND_CUR_DIRECTION);
2294}
2295
2296#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2297 (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) (A), \
2298 (__v8df) (B), (__v8df) (C), \
2299 (__mmask8) (U), (R)); })
2300
2301
Michael Kupersteine45af542015-06-30 13:36:19 +00002302static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002303_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2304{
2305 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
2306 (__v8df) __B,
2307 (__v8df) __C,
2308 (__mmask8) __U,
2309 _MM_FROUND_CUR_DIRECTION);
2310}
2311
2312#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2313 (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) (A), \
2314 (__v16sf) (B), (__v16sf) (C), \
2315 (__mmask16) (U), (R)); })
2316
2317
Michael Kupersteine45af542015-06-30 13:36:19 +00002318static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002319_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2320{
2321 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
2322 (__v16sf) __B,
2323 (__v16sf) __C,
2324 (__mmask16) __U,
2325 _MM_FROUND_CUR_DIRECTION);
2326}
2327
2328#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
2329 (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) (A), \
2330 (__v8df) (B), (__v8df) (C), \
2331 (__mmask8) (U), (R)); })
2332
2333
Michael Kupersteine45af542015-06-30 13:36:19 +00002334static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002335_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2336{
2337 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
2338 (__v8df) __B,
2339 (__v8df) __C,
2340 (__mmask8) __U,
2341 _MM_FROUND_CUR_DIRECTION);
2342}
2343
2344#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
2345 (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) (A), \
2346 (__v16sf) (B), (__v16sf) (C), \
2347 (__mmask16) (U), (R)); })
2348
2349
Michael Kupersteine45af542015-06-30 13:36:19 +00002350static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002351_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2352{
2353 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
2354 (__v16sf) __B,
2355 (__v16sf) __C,
2356 (__mmask16) __U,
2357 _MM_FROUND_CUR_DIRECTION);
2358}
2359
2360#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
2361 (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) (A), \
2362 (__v8df) (B), (__v8df) (C), \
2363 (__mmask8) (U), (R)); })
2364
2365
Michael Kupersteine45af542015-06-30 13:36:19 +00002366static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002367_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2368{
2369 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
2370 (__v8df) __B,
2371 (__v8df) __C,
2372 (__mmask8) __U,
2373 _MM_FROUND_CUR_DIRECTION);
2374}
2375
2376#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
2377 (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) (A), \
2378 (__v16sf) (B), (__v16sf) (C), \
2379 (__mmask16) (U), (R)); })
2380
2381
Michael Kupersteine45af542015-06-30 13:36:19 +00002382static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002383_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2384{
2385 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
2386 (__v16sf) __B,
2387 (__v16sf) __C,
2388 (__mmask16) __U,
2389 _MM_FROUND_CUR_DIRECTION);
2390}
2391
2392#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
2393 (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) (A), \
2394 (__v8df) (B), (__v8df) (C), \
2395 (__mmask8) (U), (R)); })
2396
2397
2398#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
2399 (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) (A), \
2400 (__v8df) (B), (__v8df) (C), \
2401 (__mmask8) (U), (R)); })
2402
2403
Michael Kupersteine45af542015-06-30 13:36:19 +00002404static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002405_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2406{
2407 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
2408 (__v8df) __B,
2409 (__v8df) __C,
2410 (__mmask8) __U,
2411 _MM_FROUND_CUR_DIRECTION);
2412}
2413
Michael Kupersteine45af542015-06-30 13:36:19 +00002414static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002415_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2416{
2417 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
2418 (__v8df) __B,
2419 (__v8df) __C,
2420 (__mmask8) __U,
2421 _MM_FROUND_CUR_DIRECTION);
2422}
2423
2424#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
2425 (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) (A), \
2426 (__v16sf) (B), (__v16sf) (C), \
2427 (__mmask16) (U), (R)); })
2428
2429
2430#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
2431 (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) (A), \
2432 (__v16sf) (B), (__v16sf) (C), \
2433 (__mmask16) (U), (R)); })
2434
2435
Michael Kupersteine45af542015-06-30 13:36:19 +00002436static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002437_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2438{
2439 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
2440 (__v16sf) __B,
2441 (__v16sf) __C,
2442 (__mmask16) __U,
2443 _MM_FROUND_CUR_DIRECTION);
2444}
2445
Michael Kupersteine45af542015-06-30 13:36:19 +00002446static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002447_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2448{
2449 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
2450 (__v16sf) __B,
2451 (__v16sf) __C,
2452 (__mmask16) __U,
2453 _MM_FROUND_CUR_DIRECTION);
2454}
2455
2456
2457
Adam Nemet0d5bb552014-07-28 17:14:40 +00002458/* Vector permutations */
2459
Michael Kupersteine45af542015-06-30 13:36:19 +00002460static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002461_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
2462{
2463 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
2464 /* idx */ ,
2465 (__v16si) __A,
2466 (__v16si) __B,
2467 (__mmask16) -1);
2468}
Michael Kupersteine45af542015-06-30 13:36:19 +00002469static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002470_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
2471{
2472 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
2473 /* idx */ ,
2474 (__v8di) __A,
2475 (__v8di) __B,
2476 (__mmask8) -1);
2477}
2478
Michael Kupersteine45af542015-06-30 13:36:19 +00002479static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002480_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
2481{
2482 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
2483 /* idx */ ,
2484 (__v8df) __A,
2485 (__v8df) __B,
2486 (__mmask8) -1);
2487}
Michael Kupersteine45af542015-06-30 13:36:19 +00002488static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002489_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
2490{
2491 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
2492 /* idx */ ,
2493 (__v16sf) __A,
2494 (__v16sf) __B,
2495 (__mmask16) -1);
2496}
2497
Craig Topper67826a52015-02-01 07:35:40 +00002498#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
2499 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
2500 (__v8di)(__m512i)(B), \
2501 (I), (__v8di)_mm512_setzero_si512(), \
2502 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002503
Craig Topper67826a52015-02-01 07:35:40 +00002504#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
2505 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
2506 (__v16si)(__m512i)(B), \
2507 (I), (__v16si)_mm512_setzero_si512(), \
2508 (__mmask16)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00002509
Adam Nemetf893ede2015-01-19 20:12:05 +00002510/* Vector Extract */
2511
2512#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Adam Nemetf893ede2015-01-19 20:12:05 +00002513 (__m256d) \
Craig Topper3a71f352015-11-29 06:50:33 +00002514 __builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002515 (I), \
2516 (__v4df)_mm256_setzero_si256(), \
2517 (__mmask8) -1); })
2518
2519#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Adam Nemetf893ede2015-01-19 20:12:05 +00002520 (__m128) \
Craig Topper3a71f352015-11-29 06:50:33 +00002521 __builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), \
Adam Nemetf893ede2015-01-19 20:12:05 +00002522 (I), \
2523 (__v4sf)_mm_setzero_ps(), \
2524 (__mmask8) -1); })
2525
Adam Nemet0d5bb552014-07-28 17:14:40 +00002526/* Vector Blend */
2527
Michael Kupersteine45af542015-06-30 13:36:19 +00002528static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002529_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
2530{
2531 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
2532 (__v8df) __W,
2533 (__mmask8) __U);
2534}
2535
Michael Kupersteine45af542015-06-30 13:36:19 +00002536static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002537_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
2538{
2539 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
2540 (__v16sf) __W,
2541 (__mmask16) __U);
2542}
2543
Michael Kupersteine45af542015-06-30 13:36:19 +00002544static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002545_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
2546{
2547 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
2548 (__v8di) __W,
2549 (__mmask8) __U);
2550}
2551
Michael Kupersteine45af542015-06-30 13:36:19 +00002552static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002553_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
2554{
2555 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
2556 (__v16si) __W,
2557 (__mmask16) __U);
2558}
2559
2560/* Compare */
2561
Craig Topper53565c62015-02-01 22:27:40 +00002562#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
2563 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2564 (__v16sf)(__m512)(B), \
2565 (P), (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002566
Craig Topper53565c62015-02-01 22:27:40 +00002567#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
2568 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
2569 (__v16sf)(__m512)(B), \
2570 (P), (__mmask16)(U), (R)); })
2571
2572#define _mm512_cmp_ps_mask(A, B, P) \
2573 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2574
2575#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
2576 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2577
2578#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
2579 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2580 (__v8df)(__m512d)(B), \
2581 (P), (__mmask8)-1, (R)); })
2582
2583#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
2584 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
2585 (__v8df)(__m512d)(B), \
2586 (P), (__mmask8)(U), (R)); })
2587
2588#define _mm512_cmp_pd_mask(A, B, P) \
2589 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
2590
2591#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
2592 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00002593
2594/* Conversion */
2595
Michael Kupersteine45af542015-06-30 13:36:19 +00002596static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002597_mm512_cvttps_epu32(__m512 __A)
2598{
2599 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
2600 (__v16si)
2601 _mm512_setzero_si512 (),
2602 (__mmask16) -1,
2603 _MM_FROUND_CUR_DIRECTION);
2604}
2605
Craig Topper72c7d512015-02-01 07:35:35 +00002606#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
2607 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
2608 (__v16sf)_mm512_setzero_ps(), \
2609 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002610
Craig Topper72c7d512015-02-01 07:35:35 +00002611#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
2612 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
2613 (__v16sf)_mm512_setzero_ps(), \
2614 (__mmask16)-1, (R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002615
Michael Kupersteine45af542015-06-30 13:36:19 +00002616static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002617_mm512_cvtepi32_pd(__m256i __A)
2618{
2619 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
2620 (__v8df)
2621 _mm512_setzero_pd (),
2622 (__mmask8) -1);
2623}
2624
Michael Kupersteine45af542015-06-30 13:36:19 +00002625static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00002626_mm512_cvtepu32_pd(__m256i __A)
2627{
2628 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
2629 (__v8df)
2630 _mm512_setzero_pd (),
2631 (__mmask8) -1);
2632}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002633
Craig Topper72c7d512015-02-01 07:35:35 +00002634#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
2635 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
2636 (__v8sf)_mm256_setzero_ps(), \
2637 (__mmask8)-1, (R)); })
2638
2639#define _mm512_cvtps_ph(A, I) __extension__ ({ \
2640 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
2641 (__v16hi)_mm256_setzero_si256(), \
2642 -1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002643
Michael Kupersteine45af542015-06-30 13:36:19 +00002644static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002645_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002646{
2647 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
2648 (__v16sf)
2649 _mm512_setzero_ps (),
2650 (__mmask16) -1,
2651 _MM_FROUND_CUR_DIRECTION);
2652}
2653
Michael Kupersteine45af542015-06-30 13:36:19 +00002654static __inline __m512i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002655_mm512_cvttps_epi32(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002656{
2657 return (__m512i)
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002658 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002659 (__v16si) _mm512_setzero_si512 (),
2660 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
2661}
2662
Michael Kupersteine45af542015-06-30 13:36:19 +00002663static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002664_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002665{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00002666 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002667 (__v8si)_mm256_setzero_si256(),
2668 (__mmask8) -1,
2669 _MM_FROUND_CUR_DIRECTION);
2670}
2671
Craig Topper72c7d512015-02-01 07:35:35 +00002672#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
2673 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
2674 (__v8si)_mm256_setzero_si256(), \
2675 (__mmask8)-1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002676
Craig Topper72c7d512015-02-01 07:35:35 +00002677#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
2678 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
2679 (__v16si)_mm512_setzero_si512(), \
2680 (__mmask16)-1, (R)); })
2681
2682#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
2683 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
2684 (__v16si)_mm512_setzero_si512(), \
2685 (__mmask16)-1, (R)); })
2686
2687#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
2688 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
2689 (__v8si)_mm256_setzero_si256(), \
2690 (__mmask8)-1, (R)); })
2691
2692#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
2693 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
2694 (__v16si)_mm512_setzero_si512(), \
2695 (__mmask16)-1, (R)); })
2696
2697#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
2698 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
2699 (__v8si)_mm256_setzero_si256(), \
2700 (__mmask8) -1, (R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002701
Adam Nemet63a951e2015-01-14 01:31:17 +00002702/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00002703static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002704_mm512_unpackhi_pd(__m512d __a, __m512d __b)
2705{
2706 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
2707}
2708
Michael Kupersteine45af542015-06-30 13:36:19 +00002709static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002710_mm512_unpacklo_pd(__m512d __a, __m512d __b)
2711{
2712 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
2713}
2714
Michael Kupersteine45af542015-06-30 13:36:19 +00002715static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002716_mm512_unpackhi_ps(__m512 __a, __m512 __b)
2717{
2718 return __builtin_shufflevector(__a, __b,
2719 2, 18, 3, 19,
2720 2+4, 18+4, 3+4, 19+4,
2721 2+8, 18+8, 3+8, 19+8,
2722 2+12, 18+12, 3+12, 19+12);
2723}
2724
Michael Kupersteine45af542015-06-30 13:36:19 +00002725static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00002726_mm512_unpacklo_ps(__m512 __a, __m512 __b)
2727{
2728 return __builtin_shufflevector(__a, __b,
2729 0, 16, 1, 17,
2730 0+4, 16+4, 1+4, 17+4,
2731 0+8, 16+8, 1+8, 17+8,
2732 0+12, 16+12, 1+12, 17+12);
2733}
2734
Adam Nemet0d5bb552014-07-28 17:14:40 +00002735/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002736
Michael Kupersteine45af542015-06-30 13:36:19 +00002737static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002738_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002739{
2740 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
2741 (__v16si) __B,
2742 (__mmask16) -1);
2743}
2744
Michael Kupersteine45af542015-06-30 13:36:19 +00002745static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002746_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002747{
2748 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
2749 (__v8di) __B,
2750 (__mmask8) -1);
2751}
2752
Adam Nemet0d5bb552014-07-28 17:14:40 +00002753/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002754
Michael Kupersteine45af542015-06-30 13:36:19 +00002755static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002756_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002757{
2758 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
2759 (__v16si)
2760 _mm512_setzero_si512 (),
2761 (__mmask16) __U);
2762}
2763
Michael Kupersteine45af542015-06-30 13:36:19 +00002764static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002765_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002766{
2767 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
2768 (__v8di)
2769 _mm512_setzero_si512 (),
2770 (__mmask8) __U);
2771}
2772
Michael Kupersteine45af542015-06-30 13:36:19 +00002773static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002774_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002775{
2776 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
2777 (__v16sf)
2778 _mm512_setzero_ps (),
2779 (__mmask16) __U);
2780}
2781
Michael Kupersteine45af542015-06-30 13:36:19 +00002782static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002783_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002784{
2785 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
2786 (__v8df)
2787 _mm512_setzero_pd (),
2788 (__mmask8) __U);
2789}
2790
Michael Kupersteine45af542015-06-30 13:36:19 +00002791static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002792_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
2793{
2794 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
2795 (__v16sf)
2796 _mm512_setzero_ps (),
2797 (__mmask16) __U);
2798}
2799
Michael Kupersteine45af542015-06-30 13:36:19 +00002800static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002801_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
2802{
2803 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
2804 (__v8df)
2805 _mm512_setzero_pd (),
2806 (__mmask8) __U);
2807}
2808
Michael Kupersteine45af542015-06-30 13:36:19 +00002809static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002810_mm512_loadu_pd(double const *__p)
2811{
2812 struct __loadu_pd {
2813 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002814 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002815 return ((struct __loadu_pd*)__p)->__v;
2816}
2817
Michael Kupersteine45af542015-06-30 13:36:19 +00002818static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00002819_mm512_loadu_ps(float const *__p)
2820{
2821 struct __loadu_ps {
2822 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00002823 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00002824 return ((struct __loadu_ps*)__p)->__v;
2825}
2826
Michael Kupersteine45af542015-06-30 13:36:19 +00002827static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00002828_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00002829{
2830 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
2831 (__v16sf)
2832 _mm512_setzero_ps (),
2833 (__mmask16) -1);
2834}
2835
Michael Kupersteine45af542015-06-30 13:36:19 +00002836static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00002837_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00002838{
2839 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
2840 (__v8df)
2841 _mm512_setzero_pd (),
2842 (__mmask8) -1);
2843}
2844
Adam Nemet0d5bb552014-07-28 17:14:40 +00002845/* SIMD store ops */
2846
Michael Kupersteine45af542015-06-30 13:36:19 +00002847static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002848_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002849{
2850 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
2851 (__mmask8) __U);
2852}
2853
Michael Kupersteine45af542015-06-30 13:36:19 +00002854static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002855_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002856{
2857 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
2858 (__mmask16) __U);
2859}
2860
Michael Kupersteine45af542015-06-30 13:36:19 +00002861static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002862_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002863{
2864 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
2865}
2866
Michael Kupersteine45af542015-06-30 13:36:19 +00002867static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002868_mm512_storeu_pd(void *__P, __m512d __A)
2869{
2870 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
2871}
2872
Michael Kupersteine45af542015-06-30 13:36:19 +00002873static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00002874_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00002875{
2876 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
2877 (__mmask16) __U);
2878}
2879
Michael Kupersteine45af542015-06-30 13:36:19 +00002880static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002881_mm512_storeu_ps(void *__P, __m512 __A)
2882{
2883 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
2884}
2885
Michael Kupersteine45af542015-06-30 13:36:19 +00002886static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002887_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00002888{
Adam Nemetc0cff242015-01-16 18:51:50 +00002889 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00002890}
2891
Michael Kupersteine45af542015-06-30 13:36:19 +00002892static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00002893_mm512_store_pd(void *__P, __m512d __A)
2894{
2895 *(__m512d*)__P = __A;
2896}
2897
Michael Kupersteine45af542015-06-30 13:36:19 +00002898static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002899_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
2900{
2901 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
2902 (__mmask16) __U);
2903}
2904
Michael Kupersteine45af542015-06-30 13:36:19 +00002905static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00002906_mm512_store_ps(void *__P, __m512 __A)
2907{
2908 *(__m512*)__P = __A;
2909}
2910
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002911/* Mask ops */
2912
Michael Kupersteine45af542015-06-30 13:36:19 +00002913static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00002914_mm512_knot(__mmask16 __M)
2915{
2916 return __builtin_ia32_knothi(__M);
2917}
2918
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002919/* Integer compare */
2920
Michael Kupersteine45af542015-06-30 13:36:19 +00002921static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002922_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
2923 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2924 (__mmask16)-1);
2925}
2926
Michael Kupersteine45af542015-06-30 13:36:19 +00002927static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002928_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2929 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
2930 __u);
2931}
2932
Michael Kupersteine45af542015-06-30 13:36:19 +00002933static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002934_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
2935 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2936 (__mmask16)-1);
2937}
2938
Michael Kupersteine45af542015-06-30 13:36:19 +00002939static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002940_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2941 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
2942 __u);
2943}
2944
Michael Kupersteine45af542015-06-30 13:36:19 +00002945static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002946_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2947 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2948 __u);
2949}
2950
Michael Kupersteine45af542015-06-30 13:36:19 +00002951static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00002952_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
2953 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
2954 (__mmask8)-1);
2955}
2956
Michael Kupersteine45af542015-06-30 13:36:19 +00002957static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002958_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
2959 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2960 (__mmask8)-1);
2961}
2962
Michael Kupersteine45af542015-06-30 13:36:19 +00002963static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002964_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
2965 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
2966 __u);
2967}
2968
Michael Kupersteine45af542015-06-30 13:36:19 +00002969static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002970_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
2971 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2972 (__mmask16)-1);
2973}
2974
Michael Kupersteine45af542015-06-30 13:36:19 +00002975static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002976_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2977 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2978 __u);
2979}
2980
Michael Kupersteine45af542015-06-30 13:36:19 +00002981static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002982_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
2983 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2984 (__mmask16)-1);
2985}
2986
Michael Kupersteine45af542015-06-30 13:36:19 +00002987static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002988_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
2989 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
2990 __u);
2991}
2992
Michael Kupersteine45af542015-06-30 13:36:19 +00002993static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00002994_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
2995 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
2996 (__mmask8)-1);
2997}
2998
Michael Kupersteine45af542015-06-30 13:36:19 +00002999static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003000_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3001 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3002 __u);
3003}
3004
Michael Kupersteine45af542015-06-30 13:36:19 +00003005static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003006_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
3007 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3008 (__mmask8)-1);
3009}
3010
Michael Kupersteine45af542015-06-30 13:36:19 +00003011static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003012_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3013 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
3014 __u);
3015}
3016
Michael Kupersteine45af542015-06-30 13:36:19 +00003017static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003018_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
3019 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3020 (__mmask16)-1);
3021}
3022
Michael Kupersteine45af542015-06-30 13:36:19 +00003023static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003024_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3025 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
3026 __u);
3027}
3028
Michael Kupersteine45af542015-06-30 13:36:19 +00003029static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003030_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
3031 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3032 (__mmask16)-1);
3033}
3034
Michael Kupersteine45af542015-06-30 13:36:19 +00003035static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003036_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3037 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
3038 __u);
3039}
3040
Michael Kupersteine45af542015-06-30 13:36:19 +00003041static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003042_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3043 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3044 __u);
3045}
3046
Michael Kupersteine45af542015-06-30 13:36:19 +00003047static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003048_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
3049 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
3050 (__mmask8)-1);
3051}
3052
Michael Kupersteine45af542015-06-30 13:36:19 +00003053static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003054_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
3055 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3056 (__mmask8)-1);
3057}
3058
Michael Kupersteine45af542015-06-30 13:36:19 +00003059static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003060_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3061 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
3062 __u);
3063}
3064
Michael Kupersteine45af542015-06-30 13:36:19 +00003065static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003066_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
3067 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3068 (__mmask16)-1);
3069}
3070
Michael Kupersteine45af542015-06-30 13:36:19 +00003071static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003072_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3073 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3074 __u);
3075}
3076
Michael Kupersteine45af542015-06-30 13:36:19 +00003077static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003078_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
3079 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3080 (__mmask16)-1);
3081}
3082
Michael Kupersteine45af542015-06-30 13:36:19 +00003083static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003084_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3085 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
3086 __u);
3087}
3088
Michael Kupersteine45af542015-06-30 13:36:19 +00003089static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003090_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
3091 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3092 (__mmask8)-1);
3093}
3094
Michael Kupersteine45af542015-06-30 13:36:19 +00003095static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003096_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3097 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3098 __u);
3099}
3100
Michael Kupersteine45af542015-06-30 13:36:19 +00003101static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003102_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
3103 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3104 (__mmask8)-1);
3105}
3106
Michael Kupersteine45af542015-06-30 13:36:19 +00003107static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003108_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3109 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
3110 __u);
3111}
3112
Michael Kupersteine45af542015-06-30 13:36:19 +00003113static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003114_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
3115 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3116 (__mmask16)-1);
3117}
3118
Michael Kupersteine45af542015-06-30 13:36:19 +00003119static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003120_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3121 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3122 __u);
3123}
3124
Michael Kupersteine45af542015-06-30 13:36:19 +00003125static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003126_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
3127 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3128 (__mmask16)-1);
3129}
3130
Michael Kupersteine45af542015-06-30 13:36:19 +00003131static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003132_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3133 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
3134 __u);
3135}
3136
Michael Kupersteine45af542015-06-30 13:36:19 +00003137static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003138_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
3139 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3140 (__mmask8)-1);
3141}
3142
Michael Kupersteine45af542015-06-30 13:36:19 +00003143static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003144_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3145 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3146 __u);
3147}
3148
Michael Kupersteine45af542015-06-30 13:36:19 +00003149static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003150_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
3151 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3152 (__mmask8)-1);
3153}
3154
Michael Kupersteine45af542015-06-30 13:36:19 +00003155static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003156_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3157 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
3158 __u);
3159}
3160
Michael Kupersteine45af542015-06-30 13:36:19 +00003161static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003162_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
3163 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3164 (__mmask16)-1);
3165}
3166
Michael Kupersteine45af542015-06-30 13:36:19 +00003167static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003168_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3169 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3170 __u);
3171}
3172
Michael Kupersteine45af542015-06-30 13:36:19 +00003173static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003174_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
3175 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3176 (__mmask16)-1);
3177}
3178
Michael Kupersteine45af542015-06-30 13:36:19 +00003179static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003180_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
3181 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
3182 __u);
3183}
3184
Michael Kupersteine45af542015-06-30 13:36:19 +00003185static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003186_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
3187 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3188 (__mmask8)-1);
3189}
3190
Michael Kupersteine45af542015-06-30 13:36:19 +00003191static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003192_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3193 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3194 __u);
3195}
3196
Michael Kupersteine45af542015-06-30 13:36:19 +00003197static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003198_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
3199 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3200 (__mmask8)-1);
3201}
3202
Michael Kupersteine45af542015-06-30 13:36:19 +00003203static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00003204_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
3205 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
3206 __u);
3207}
3208
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003209static __inline__ __m512i __DEFAULT_FN_ATTRS
3210_mm512_cvtepi8_epi32 (__m128i __A)
3211{
3212 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3213 (__v16si)
3214 _mm512_setzero_si512 (),
3215 (__mmask16) -1);
3216}
3217
3218static __inline__ __m512i __DEFAULT_FN_ATTRS
3219_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3220{
3221 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3222 (__v16si) __W,
3223 (__mmask16) __U);
3224}
3225
3226static __inline__ __m512i __DEFAULT_FN_ATTRS
3227_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
3228{
3229 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
3230 (__v16si)
3231 _mm512_setzero_si512 (),
3232 (__mmask16) __U);
3233}
3234
3235static __inline__ __m512i __DEFAULT_FN_ATTRS
3236_mm512_cvtepi8_epi64 (__m128i __A)
3237{
3238 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3239 (__v8di)
3240 _mm512_setzero_si512 (),
3241 (__mmask8) -1);
3242}
3243
3244static __inline__ __m512i __DEFAULT_FN_ATTRS
3245_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3246{
3247 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3248 (__v8di) __W,
3249 (__mmask8) __U);
3250}
3251
3252static __inline__ __m512i __DEFAULT_FN_ATTRS
3253_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
3254{
3255 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
3256 (__v8di)
3257 _mm512_setzero_si512 (),
3258 (__mmask8) __U);
3259}
3260
3261static __inline__ __m512i __DEFAULT_FN_ATTRS
3262_mm512_cvtepi32_epi64 (__m256i __X)
3263{
3264 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3265 (__v8di)
3266 _mm512_setzero_si512 (),
3267 (__mmask8) -1);
3268}
3269
3270static __inline__ __m512i __DEFAULT_FN_ATTRS
3271_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3272{
3273 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3274 (__v8di) __W,
3275 (__mmask8) __U);
3276}
3277
3278static __inline__ __m512i __DEFAULT_FN_ATTRS
3279_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
3280{
3281 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
3282 (__v8di)
3283 _mm512_setzero_si512 (),
3284 (__mmask8) __U);
3285}
3286
3287static __inline__ __m512i __DEFAULT_FN_ATTRS
3288_mm512_cvtepi16_epi32 (__m256i __A)
3289{
3290 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3291 (__v16si)
3292 _mm512_setzero_si512 (),
3293 (__mmask16) -1);
3294}
3295
3296static __inline__ __m512i __DEFAULT_FN_ATTRS
3297_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3298{
3299 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3300 (__v16si) __W,
3301 (__mmask16) __U);
3302}
3303
3304static __inline__ __m512i __DEFAULT_FN_ATTRS
3305_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
3306{
3307 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
3308 (__v16si)
3309 _mm512_setzero_si512 (),
3310 (__mmask16) __U);
3311}
3312
3313static __inline__ __m512i __DEFAULT_FN_ATTRS
3314_mm512_cvtepi16_epi64 (__m128i __A)
3315{
3316 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3317 (__v8di)
3318 _mm512_setzero_si512 (),
3319 (__mmask8) -1);
3320}
3321
3322static __inline__ __m512i __DEFAULT_FN_ATTRS
3323_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3324{
3325 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3326 (__v8di) __W,
3327 (__mmask8) __U);
3328}
3329
3330static __inline__ __m512i __DEFAULT_FN_ATTRS
3331_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
3332{
3333 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
3334 (__v8di)
3335 _mm512_setzero_si512 (),
3336 (__mmask8) __U);
3337}
3338
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003339static __inline__ __m512i __DEFAULT_FN_ATTRS
3340_mm512_cvtepu8_epi32 (__m128i __A)
3341{
3342 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3343 (__v16si)
3344 _mm512_setzero_si512 (),
3345 (__mmask16) -1);
3346}
3347
3348static __inline__ __m512i __DEFAULT_FN_ATTRS
3349_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
3350{
3351 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3352 (__v16si) __W,
3353 (__mmask16) __U);
3354}
3355
3356static __inline__ __m512i __DEFAULT_FN_ATTRS
3357_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
3358{
3359 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
3360 (__v16si)
3361 _mm512_setzero_si512 (),
3362 (__mmask16) __U);
3363}
3364
3365static __inline__ __m512i __DEFAULT_FN_ATTRS
3366_mm512_cvtepu8_epi64 (__m128i __A)
3367{
3368 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3369 (__v8di)
3370 _mm512_setzero_si512 (),
3371 (__mmask8) -1);
3372}
3373
3374static __inline__ __m512i __DEFAULT_FN_ATTRS
3375_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3376{
3377 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3378 (__v8di) __W,
3379 (__mmask8) __U);
3380}
3381
3382static __inline__ __m512i __DEFAULT_FN_ATTRS
3383_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
3384{
3385 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
3386 (__v8di)
3387 _mm512_setzero_si512 (),
3388 (__mmask8) __U);
3389}
3390
3391static __inline__ __m512i __DEFAULT_FN_ATTRS
3392_mm512_cvtepu32_epi64 (__m256i __X)
3393{
3394 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3395 (__v8di)
3396 _mm512_setzero_si512 (),
3397 (__mmask8) -1);
3398}
3399
3400static __inline__ __m512i __DEFAULT_FN_ATTRS
3401_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
3402{
3403 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3404 (__v8di) __W,
3405 (__mmask8) __U);
3406}
3407
3408static __inline__ __m512i __DEFAULT_FN_ATTRS
3409_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
3410{
3411 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
3412 (__v8di)
3413 _mm512_setzero_si512 (),
3414 (__mmask8) __U);
3415}
3416
3417static __inline__ __m512i __DEFAULT_FN_ATTRS
3418_mm512_cvtepu16_epi32 (__m256i __A)
3419{
3420 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3421 (__v16si)
3422 _mm512_setzero_si512 (),
3423 (__mmask16) -1);
3424}
3425
3426static __inline__ __m512i __DEFAULT_FN_ATTRS
3427_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
3428{
3429 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3430 (__v16si) __W,
3431 (__mmask16) __U);
3432}
3433
3434static __inline__ __m512i __DEFAULT_FN_ATTRS
3435_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
3436{
3437 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
3438 (__v16si)
3439 _mm512_setzero_si512 (),
3440 (__mmask16) __U);
3441}
3442
3443static __inline__ __m512i __DEFAULT_FN_ATTRS
3444_mm512_cvtepu16_epi64 (__m128i __A)
3445{
3446 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3447 (__v8di)
3448 _mm512_setzero_si512 (),
3449 (__mmask8) -1);
3450}
3451
3452static __inline__ __m512i __DEFAULT_FN_ATTRS
3453_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
3454{
3455 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3456 (__v8di) __W,
3457 (__mmask8) __U);
3458}
3459
3460static __inline__ __m512i __DEFAULT_FN_ATTRS
3461_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
3462{
3463 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
3464 (__v8di)
3465 _mm512_setzero_si512 (),
3466 (__mmask8) __U);
3467}
3468
Michael Zuckermane98cc742016-02-23 15:59:47 +00003469static __inline__ __m512i __DEFAULT_FN_ATTRS
3470_mm512_rorv_epi32 (__m512i __A, __m512i __B)
3471{
3472 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3473 (__v16si) __B,
3474 (__v16si)
3475 _mm512_setzero_si512 (),
3476 (__mmask16) -1);
3477}
3478
3479static __inline__ __m512i __DEFAULT_FN_ATTRS
3480_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
3481{
3482 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3483 (__v16si) __B,
3484 (__v16si) __W,
3485 (__mmask16) __U);
3486}
3487
3488static __inline__ __m512i __DEFAULT_FN_ATTRS
3489_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
3490{
3491 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
3492 (__v16si) __B,
3493 (__v16si)
3494 _mm512_setzero_si512 (),
3495 (__mmask16) __U);
3496}
3497
3498static __inline__ __m512i __DEFAULT_FN_ATTRS
3499_mm512_rorv_epi64 (__m512i __A, __m512i __B)
3500{
3501 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3502 (__v8di) __B,
3503 (__v8di)
3504 _mm512_setzero_si512 (),
3505 (__mmask8) -1);
3506}
3507
3508static __inline__ __m512i __DEFAULT_FN_ATTRS
3509_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
3510{
3511 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3512 (__v8di) __B,
3513 (__v8di) __W,
3514 (__mmask8) __U);
3515}
3516
3517static __inline__ __m512i __DEFAULT_FN_ATTRS
3518_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
3519{
3520 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
3521 (__v8di) __B,
3522 (__v8di)
3523 _mm512_setzero_si512 (),
3524 (__mmask8) __U);
3525}
3526
3527
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003528
Craig Topper4cac1c22015-01-25 23:30:07 +00003529#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003530 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3531 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003532 (__mmask16)-1); })
3533
3534#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003535 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3536 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003537 (__mmask16)-1); })
3538
3539#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003540 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3541 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003542 (__mmask8)-1); })
3543
3544#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003545 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3546 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003547 (__mmask8)-1); })
3548
3549#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003550 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
3551 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003552 (__mmask16)(m)); })
3553
3554#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003555 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
3556 (__v16si)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003557 (__mmask16)(m)); })
3558
3559#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003560 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
3561 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003562 (__mmask8)(m)); })
3563
3564#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00003565 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
3566 (__v8di)(__m512i)(b), (p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00003567 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00003568
Michael Zuckerman38a27272016-02-22 09:05:41 +00003569#define _mm512_rol_epi32(a, b) __extension__ ({ \
3570 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3571 (__v16si)\
3572 _mm512_setzero_si512 (),\
3573 (__mmask16) -1); })
3574
3575#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
3576 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3577 (__v16si) (W),\
3578 (__mmask16) (U)); })
3579
3580#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
3581 (__m512i) __builtin_ia32_prold512_mask ((__v16si) (a), (b),\
3582 (__v16si)\
3583 _mm512_setzero_si512 (),\
3584 (__mmask16) (U)); })
3585
3586#define _mm512_rol_epi64(a, b) __extension__ ({ \
3587 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3588 (__v8di)\
3589 _mm512_setzero_si512 (),\
3590 (__mmask8) -1); })
3591
3592#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
3593 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3594 (__v8di) (W),\
3595 (__mmask8) (U)); })
3596
3597#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
3598 (__m512i) __builtin_ia32_prolq512_mask ((__v8di) (a), (b),\
3599 (__v8di)\
3600 _mm512_setzero_si512 (),\
3601 (__mmask8) (U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00003602static __inline__ __m512i __DEFAULT_FN_ATTRS
3603_mm512_rolv_epi32 (__m512i __A, __m512i __B)
3604{
3605 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3606 (__v16si) __B,
3607 (__v16si)
3608 _mm512_setzero_si512 (),
3609 (__mmask16) -1);
3610}
3611
3612static __inline__ __m512i __DEFAULT_FN_ATTRS
3613_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
3614{
3615 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3616 (__v16si) __B,
3617 (__v16si) __W,
3618 (__mmask16) __U);
3619}
3620
3621static __inline__ __m512i __DEFAULT_FN_ATTRS
3622_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
3623{
3624 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
3625 (__v16si) __B,
3626 (__v16si)
3627 _mm512_setzero_si512 (),
3628 (__mmask16) __U);
3629}
3630
3631static __inline__ __m512i __DEFAULT_FN_ATTRS
3632_mm512_rolv_epi64 (__m512i __A, __m512i __B)
3633{
3634 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3635 (__v8di) __B,
3636 (__v8di)
3637 _mm512_setzero_si512 (),
3638 (__mmask8) -1);
3639}
3640
3641static __inline__ __m512i __DEFAULT_FN_ATTRS
3642_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
3643{
3644 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3645 (__v8di) __B,
3646 (__v8di) __W,
3647 (__mmask8) __U);
3648}
3649
3650static __inline__ __m512i __DEFAULT_FN_ATTRS
3651_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
3652{
3653 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
3654 (__v8di) __B,
3655 (__v8di)
3656 _mm512_setzero_si512 (),
3657 (__mmask8) __U);
3658}
3659
3660#define _mm512_ror_epi32( __A, __B) __extension__ ({ \
3661__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3662 (__v16si)\
3663 _mm512_setzero_si512 (),\
3664 (__mmask16) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003665})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003666
3667#define _mm512_mask_ror_epi32( __W, __U, __A, __B) __extension__ ({ \
3668__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3669 (__v16si)( __W),\
3670 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003671})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003672
3673#define _mm512_maskz_ror_epi32( __U, __A, __B) __extension__ ({ \
3674__builtin_ia32_prord512_mask ((__v16si)( __A),( __B),\
3675 (__v16si)\
3676 _mm512_setzero_si512 (),\
3677 (__mmask16)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003678})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003679
3680#define _mm512_ror_epi64( __A, __B) __extension__ ({ \
3681__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3682 (__v8di)\
3683 _mm512_setzero_si512 (),\
3684 (__mmask8) -1);\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003685})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003686
3687#define _mm512_mask_ror_epi64( __W, __U, __A, __B) __extension__ ({ \
3688__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3689 (__v8di)( __W),\
3690 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003691})
Michael Zuckerman0231f162016-02-23 13:41:13 +00003692
3693#define _mm512_maskz_ror_epi64( __U, __A, __B) __extension__ ({ \
3694__builtin_ia32_prorq512_mask ((__v8di)( __A),( __B),\
3695 (__v8di)\
3696 _mm512_setzero_si512 (),\
3697 (__mmask8)( __U));\
Michael Zuckerman4924c7a2016-02-23 14:23:53 +00003698})
Michael Zuckerman38a27272016-02-22 09:05:41 +00003699
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00003700#define _mm512_slli_epi32( __A, __B) __extension__ ({ \
3701__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
3702 (__v16si)\
3703 _mm512_setzero_si512 (),\
3704 (__mmask16) -1);\
3705})
3706
3707#define _mm512_mask_slli_epi32( __W, __U, __A ,__B) __extension__ ({ \
3708__builtin_ia32_pslldi512_mask ((__v16si) (__A), (__B),\
3709 (__v16si)( __W),\
3710 (__mmask16)( __U));\
3711})
3712
3713#define _mm512_maskz_slli_epi32( __U, __A, __B) __extension__ ({ \
3714__builtin_ia32_pslldi512_mask ((__v16si)( __A),( __B),\
3715 (__v16si)\
3716 _mm512_setzero_si512 (),\
3717 (__mmask16)( __U));\
3718})
3719
3720#define _mm512_slli_epi64( __A, __B) __extension__ ({ \
3721__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
3722 (__v8di)\
3723 _mm512_setzero_si512 (),\
3724 (__mmask8) -1);\
3725})
3726
3727#define _mm512_mask_slli_epi64( __W, __U, __A ,__B) __extension__ ({ \
3728__builtin_ia32_psllqi512_mask ((__v8di) (__A), (__B),\
3729 (__v8di)( __W),\
3730 (__mmask8)( __U));\
3731})
3732
3733#define _mm512_maskz_slli_epi64( __U, __A, __B) __extension__ ({ \
3734__builtin_ia32_psllqi512_mask ((__v8di)( __A),( __B),\
3735 (__v8di)\
3736 _mm512_setzero_si512 (),\
3737 (__mmask8)( __U));\
3738})
3739
Michael Zuckerman38a27272016-02-22 09:05:41 +00003740
Michael Zuckermand176d742016-03-01 17:49:03 +00003741
3742#define _mm512_srli_epi32( __A, __B) __extension__ ({ \
3743__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
3744 (__v16si)\
3745 _mm512_setzero_si512 (),\
3746 (__mmask16) -1);\
3747})
3748
3749#define _mm512_mask_srli_epi32( __W, __U, __A, __B) __extension__ ({ \
3750__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
3751 (__v16si)( __W),\
3752 (__mmask16)( __U));\
3753})
3754
3755#define _mm512_maskz_srli_epi32( __U, __A, __B) __extension__ ({ \
3756__builtin_ia32_psrldi512_mask ((__v16si)( __A),( __B),\
3757 (__v16si)\
3758 _mm512_setzero_si512 (),\
3759 (__mmask16)( __U));\
3760})
3761
3762#define _mm512_srli_epi64( __A, __B) __extension__ ({ \
3763__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
3764 (__v8di)\
3765 _mm512_setzero_si512 (),\
3766 (__mmask8) -1);\
3767})
3768
3769#define _mm512_mask_srli_epi64( __W, __U, __A, __B) __extension__ ({ \
3770__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
3771 (__v8di)( __W),\
3772 (__mmask8)( __U));\
3773})
3774
3775#define _mm512_maskz_srli_epi64( __U, __A, __B) __extension__ ({ \
3776__builtin_ia32_psrlqi512_mask ((__v8di)( __A),( __B),\
3777 (__v8di)\
3778 _mm512_setzero_si512 (),\
3779 (__mmask8)( __U));\
3780})
3781
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00003782static __inline__ __m512i __DEFAULT_FN_ATTRS
3783_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3784{
3785 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
3786 (__v16si) __W,
3787 (__mmask16) __U);
3788}
3789
3790static __inline__ __m512i __DEFAULT_FN_ATTRS
3791_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
3792{
3793 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
3794 (__v16si)
3795 _mm512_setzero_si512 (),
3796 (__mmask16) __U);
3797}
3798
3799static __inline__ void __DEFAULT_FN_ATTRS
3800_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
3801{
3802 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
3803 (__mmask16) __U);
3804}
3805
3806static __inline__ __m512i __DEFAULT_FN_ATTRS
3807_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
3808{
3809 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
3810 (__v8di) __W,
3811 (__mmask8) __U);
3812}
3813
3814static __inline__ __m512i __DEFAULT_FN_ATTRS
3815_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
3816{
3817 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
3818 (__v8di)
3819 _mm512_setzero_si512 (),
3820 (__mmask8) __U);
3821}
3822
3823static __inline__ __m512i __DEFAULT_FN_ATTRS
3824_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3825{
3826 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
3827 (__v8di) __W,
3828 (__mmask8) __U);
3829}
3830
3831static __inline__ __m512i __DEFAULT_FN_ATTRS
3832_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
3833{
3834 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
3835 (__v8di)
3836 _mm512_setzero_si512 (),
3837 (__mmask8) __U);
3838}
3839
3840static __inline__ void __DEFAULT_FN_ATTRS
3841_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
3842{
3843 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
3844 (__mmask8) __U);
3845}
3846
3847
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00003848
3849static __inline__ __m512d __DEFAULT_FN_ATTRS
3850_mm512_movedup_pd (__m512d __A)
3851{
3852 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
3853 (__v8df)
3854 _mm512_undefined_pd (),
3855 (__mmask8) -1);
3856}
3857
3858static __inline__ __m512d __DEFAULT_FN_ATTRS
3859_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
3860{
3861 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
3862 (__v8df) __W,
3863 (__mmask8) __U);
3864}
3865
3866static __inline__ __m512d __DEFAULT_FN_ATTRS
3867_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
3868{
3869 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
3870 (__v8df)
3871 _mm512_setzero_pd (),
3872 (__mmask8) __U);
3873}
3874
Michael Zuckermandef78752016-03-28 12:23:09 +00003875#define _mm512_fixupimm_round_pd( __A, __B, __C, __imm, __R) __extension__ ({ \
3876__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3877 (__v8df)( __B),\
3878 (__v8di)( __C),\
3879 (__imm),\
3880 (__mmask8) -1, (__R));\
3881})
3882
3883#define _mm512_mask_fixupimm_round_pd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
3884__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3885 (__v8df)( __B),\
3886 (__v8di)( __C),\
3887 (__imm),\
3888 (__mmask8)( __U), (__R));\
3889})
3890
3891#define _mm512_fixupimm_pd( __A, __B, __C, __imm) __extension__ ({ \
3892__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3893 (__v8df)( __B),\
3894 (__v8di)( __C),\
3895 ( __imm),\
3896 (__mmask8) -1,\
3897 _MM_FROUND_CUR_DIRECTION);\
3898})
3899
3900#define _mm512_mask_fixupimm_pd( __A, __U, __B, __C, __imm) __extension__ ({ \
3901__builtin_ia32_fixupimmpd512_mask ((__v8df)( __A),\
3902 (__v8df)( __B),\
3903 (__v8di)( __C),\
3904 ( __imm),\
3905 (__mmask8)( __U),\
3906 _MM_FROUND_CUR_DIRECTION);\
3907})
3908
3909#define _mm512_maskz_fixupimm_round_pd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
3910__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
3911 (__v8df)( __B),\
3912 (__v8di)( __C),\
3913 (__imm),\
3914 (__mmask8)( __U), (__R));\
3915})
3916
3917#define _mm512_maskz_fixupimm_pd( __U, __A, __B, __C, __imm) __extension__ ({ \
3918__builtin_ia32_fixupimmpd512_maskz ((__v8df)( __A),\
3919 (__v8df)( __B),\
3920 (__v8di)( __C),\
3921 ( __imm),\
3922 (__mmask8)( __U),\
3923 _MM_FROUND_CUR_DIRECTION);\
3924})
3925
3926#define _mm512_fixupimm_round_ps( __A, __B, __C, __imm, __R) __extension__ ({ \
3927__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3928 (__v16sf)( __B),\
3929 (__v16si)( __C),\
3930 (__imm),\
3931 (__mmask16) -1, (__R));\
3932})
3933
3934#define _mm512_mask_fixupimm_round_ps( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
3935__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3936 (__v16sf)( __B),\
3937 (__v16si)( __C),\
3938 (__imm),\
3939 (__mmask16)( __U), (__R));\
3940})
3941
3942#define _mm512_fixupimm_ps( __A, __B, __C, __imm) __extension__ ({ \
3943__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3944 (__v16sf)( __B),\
3945 (__v16si)( __C),\
3946 ( __imm),\
3947 (__mmask16) -1,\
3948 _MM_FROUND_CUR_DIRECTION);\
3949})
3950
3951#define _mm512_mask_fixupimm_ps( __A, __U, __B, __C, __imm) __extension__ ({ \
3952__builtin_ia32_fixupimmps512_mask ((__v16sf)( __A),\
3953 (__v16sf)( __B),\
3954 (__v16si)( __C),\
3955 ( __imm),\
3956 (__mmask16)( __U),\
3957 _MM_FROUND_CUR_DIRECTION);\
3958})
3959
3960#define _mm512_maskz_fixupimm_round_ps( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
3961__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
3962 (__v16sf)( __B),\
3963 (__v16si)( __C),\
3964 (__imm),\
3965 (__mmask16)( __U), (__R));\
3966})
3967
3968#define _mm512_maskz_fixupimm_ps( __U, __A, __B, __C, __imm) __extension__ ({ \
3969__builtin_ia32_fixupimmps512_maskz ((__v16sf)( __A),\
3970 (__v16sf)( __B),\
3971 (__v16si)( __C),\
3972 ( __imm),\
3973 (__mmask16)( __U),\
3974 _MM_FROUND_CUR_DIRECTION);\
3975})
3976
3977#define _mm_fixupimm_round_sd( __A, __B, __C, __imm, __R) __extension__ ({ \
3978__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
3979 (__v2df)( __B),\
3980 (__v2di)( __C), __imm,\
3981 (__mmask8) -1, (__R));\
3982})
3983
3984#define _mm_mask_fixupimm_round_sd( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
3985__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
3986 (__v2df)( __B),\
3987 (__v2di)( __C), __imm,\
3988 (__mmask8)( __U), (__R));\
3989})
3990
3991#define _mm_fixupimm_sd( __A, __B, __C, __imm) __extension__ ({ \
3992__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
3993 (__v2df)( __B),\
3994 (__v2di)( __C),( __imm),\
3995 (__mmask8) -1,\
3996 _MM_FROUND_CUR_DIRECTION);\
3997})
3998
3999#define _mm_mask_fixupimm_sd( __A, __U, __B, __C, __imm) __extension__ ({ \
4000__builtin_ia32_fixupimmsd_mask ((__v2df)( __A),\
4001 (__v2df)( __B),\
4002 (__v2di)( __C),( __imm),\
4003 (__mmask8)( __U),\
4004 _MM_FROUND_CUR_DIRECTION);\
4005})
4006
4007#define _mm_maskz_fixupimm_round_sd( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4008__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4009 (__v2df)( __B),\
4010 (__v2di)( __C),\
4011 __imm,\
4012 (__mmask8)( __U), (__R));\
4013})
4014
4015#define _mm_maskz_fixupimm_sd( __U, __A, __B, __C, __imm) __extension__ ({ \
4016__builtin_ia32_fixupimmsd_maskz ((__v2df)( __A),\
4017 (__v2df)( __B),\
4018 (__v2di)( __C),\
4019 ( __imm),\
4020 (__mmask8)( __U),\
4021 _MM_FROUND_CUR_DIRECTION);\
4022})
4023
4024#define _mm_fixupimm_round_ss( __A, __B, __C, __imm, __R) __extension__ ({ \
4025__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4026 (__v4sf)( __B),\
4027 (__v4si)( __C), (__imm),\
4028 (__mmask8) -1, (__R));\
4029})
4030
4031#define _mm_mask_fixupimm_round_ss( __A, __U, __B, __C, __imm, __R) __extension__ ({ \
4032__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4033 (__v4sf)( __B),\
4034 (__v4si)( __C), (__imm),\
4035 (__mmask8)( __U), (__R));\
4036})
4037
4038#define _mm_fixupimm_ss( __A, __B, __C, __imm) __extension__ ({ \
4039__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4040 (__v4sf)( __B),\
4041 (__v4si)( __C),( __imm),\
4042 (__mmask8) -1,\
4043 _MM_FROUND_CUR_DIRECTION);\
4044})
4045
4046#define _mm_mask_fixupimm_ss( __A, __U, __B, __C, __imm) __extension__ ({ \
4047__builtin_ia32_fixupimmss_mask ((__v4sf)( __A),\
4048 (__v4sf)( __B),\
4049 (__v4si)( __C),( __imm),\
4050 (__mmask8)( __U),\
4051 _MM_FROUND_CUR_DIRECTION);\
4052})
4053
4054#define _mm_maskz_fixupimm_round_ss( __U, __A, __B, __C, __imm, __R) __extension__ ({ \
4055__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4056 (__v4sf)( __B),\
4057 (__v4si)( __C), (__imm),\
4058 (__mmask8)( __U), (__R));\
4059})
4060
4061#define _mm_maskz_fixupimm_ss( __U, __A, __B, __C, __imm) __extension__ ({ \
4062__builtin_ia32_fixupimmss_maskz ((__v4sf)( __A),\
4063 (__v4sf)( __B),\
4064 (__v4si)( __C),( __imm),\
4065 (__mmask8)( __U),\
4066 _MM_FROUND_CUR_DIRECTION);\
4067})
4068
4069#define _mm_getexp_round_sd( __A, __B ,__R) __extension__ ({ \
4070__builtin_ia32_getexpsd128_round_mask ((__v2df)(__A),\
4071 (__v2df)( __B), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4072 ( __R));\
4073})
4074
4075
4076static __inline__ __m128d __DEFAULT_FN_ATTRS
4077_mm_getexp_sd (__m128d __A, __m128d __B)
4078{
4079 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
4080 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4081}
4082
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004083static __inline__ __m128d __DEFAULT_FN_ATTRS
4084_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4085{
4086 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4087 (__v2df) __B,
4088 (__v2df) __W,
4089 (__mmask8) __U,
4090 _MM_FROUND_CUR_DIRECTION);
4091}
4092
4093#define _mm_mask_getexp_round_sd( __W, __U, __A, __B, __R) __extension__ ({\
4094__builtin_ia32_getexpsd128_round_mask ((__v2df) __A,\
4095 (__v2df) __B,\
4096 (__v2df) __W,\
4097 (__mmask8) __U,\
4098 __R);\
4099})
4100
4101static __inline__ __m128d __DEFAULT_FN_ATTRS
4102_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
4103{
4104 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
4105 (__v2df) __B,
4106 (__v2df) _mm_setzero_pd (),
4107 (__mmask8) __U,
4108 _MM_FROUND_CUR_DIRECTION);
4109}
4110
4111#define _mm_maskz_getexp_round_sd( __U, __A, __B, __R) __extension__ ({\
4112__builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,\
4113 (__v2df) __B,\
4114 (__v2df) _mm_setzero_pd (),\
4115 (__mmask8) __U,\
4116 __R);\
4117})
4118
Michael Zuckermandef78752016-03-28 12:23:09 +00004119#define _mm_getexp_round_ss( __A, __B, __R) __extension__ ({ \
4120__builtin_ia32_getexpss128_round_mask ((__v4sf)( __A),\
4121 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4122 ( __R));\
4123})
4124
4125static __inline__ __m128 __DEFAULT_FN_ATTRS
4126_mm_getexp_ss (__m128 __A, __m128 __B)
4127{
4128 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4129 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
4130}
4131
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004132static __inline__ __m128d __DEFAULT_FN_ATTRS
4133_mm_mask_getexp_ss (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
4134{
4135 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4136 (__v4sf) __B,
4137 (__v4sf) __W,
4138 (__mmask8) __U,
4139 _MM_FROUND_CUR_DIRECTION);
4140}
4141
4142#define _mm_mask_getexp_round_ss( __W, __U, __A, __B, __R) __extension__ ({\
4143__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4144 (__v4sf) __B,\
4145 (__v4sf) __W,\
4146 (__mmask8) __U,\
4147 __R);\
4148})
4149
4150static __inline__ __m128d __DEFAULT_FN_ATTRS
4151_mm_maskz_getexp_ss (__mmask8 __U, __m128d __A, __m128d __B)
4152{
4153 return (__m128d) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
4154 (__v4sf) __B,
4155 (__v4sf) _mm_setzero_pd (),
4156 (__mmask8) __U,
4157 _MM_FROUND_CUR_DIRECTION);
4158}
4159
4160#define _mm_maskz_getexp_round_ss( __U, __A, __B, __R) __extension__ ({\
4161__builtin_ia32_getexpss128_round_mask ((__v4sf) __A,\
4162 (__v4sf) __B,\
4163 (__v4sf) _mm_setzero_ps (),\
4164 (__mmask8) __U,\
4165 __R);\
4166})
4167
Michael Zuckermandef78752016-03-28 12:23:09 +00004168#define _mm_getmant_round_sd( __A, __B, __C, __D, __R) __extension__ ({ \
4169__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4170 (__v2df)( __B),\
4171 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4172 ( __R));\
4173})
4174
4175#define _mm_getmant_sd( __A, __B, __C, __D) __extension__ ({ \
4176__builtin_ia32_getmantsd_round_mask ((__v2df)( __A),\
4177 (__v2df)( __B),\
4178 (( __D) << 2) |( __C), (__v2df) _mm_setzero_pd(), (__mmask8) -1,\
4179 _MM_FROUND_CUR_DIRECTION);\
4180})
4181
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004182#define _mm_mask_getmant_sd( __W, __U, __A, __B, __C, __D) __extension__ ({\
4183__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4184 (__v2df) __B,\
4185 (( __D) << 2) |( __C),\
4186 (__v2df) __W,\
4187 (__mmask8) __U,\
4188 _MM_FROUND_CUR_DIRECTION);\
4189})
4190
4191#define _mm_mask_getmant_round_sd( __W, __U, __A, __B, __C, __D, __R)({\
4192__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4193 (__v2df) __B,\
4194 (( __D) << 2) |( __C),\
4195 (__v2df) __W,\
4196 (__mmask8) __U,\
4197 __R);\
4198})
4199
4200#define _mm_maskz_getmant_sd( __U, __A, __B, __C, __D) __extension__ ({\
4201__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4202 (__v2df) __B,\
4203 (( __D) << 2) |( __C),\
4204 (__v2df) _mm_setzero_pd (),\
4205 (__mmask8) __U,\
4206 _MM_FROUND_CUR_DIRECTION);\
4207})
4208
4209#define _mm_maskz_getmant_round_sd( __U, __A, __B, __C, __D, __R) __extension__ ({\
4210__builtin_ia32_getmantsd_round_mask ( (__v2df) __A,\
4211 (__v2df) __B,\
4212 (( __D) << 2) |( __C),\
4213 (__v2df) _mm_setzero_pd (),\
4214 (__mmask8) __U,\
4215 __R);\
4216})
4217
Michael Zuckermandef78752016-03-28 12:23:09 +00004218#define _mm_getmant_round_ss( __A, __B, __C, __D, __R) __extension__ ({ \
4219__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4220 (__v4sf)( __B),\
4221 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4222 ( __R));\
4223})
4224
4225#define _mm_getmant_ss(__A, __B, __C, __D) __extension__ ({ \
4226__builtin_ia32_getmantss_round_mask ((__v4sf)( __A),\
4227 (__v4sf)( __B),\
4228 ((__D) << 2) |( __C), (__v4sf) _mm_setzero_ps(), (__mmask8) -1,\
4229 _MM_FROUND_CUR_DIRECTION);\
4230})
4231
Michael Zuckermana1ceca22016-04-22 10:06:10 +00004232#define _mm_mask_getmant_ss( __W, __U, __A, __B, __C, __D) __extension__ ({\
4233__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4234 (__v4sf) __B,\
4235 (( __D) << 2) |( __C),\
4236 (__v4sf) __W,\
4237 (__mmask8) __U,\
4238 _MM_FROUND_CUR_DIRECTION);\
4239})
4240
4241#define _mm_mask_getmant_round_ss( __W, __U, __A, __B, __C, __D, __R)({\
4242__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4243 (__v4sf) __B,\
4244 (( __D) << 2) |( __C),\
4245 (__v4sf) __W,\
4246 (__mmask8) __U,\
4247 __R);\
4248})
4249
4250#define _mm_maskz_getmant_ss( __U, __A, __B, __C, __D) __extension__ ({\
4251__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4252 (__v4sf) __B,\
4253 (( __D) << 2) |( __C),\
4254 (__v4sf) _mm_setzero_pd (),\
4255 (__mmask8) __U,\
4256 _MM_FROUND_CUR_DIRECTION);\
4257})
4258
4259#define _mm_maskz_getmant_round_ss( __U, __A, __B, __C, __D, __R) __extension__ ({\
4260__builtin_ia32_getmantss_round_mask ((__v4sf) __A,\
4261 (__v4sf) __B,\
4262 (( __D) << 2) |( __C),\
4263 (__v4sf) _mm_setzero_ps (),\
4264 (__mmask8) __U,\
4265 __R);\
4266})
Michael Zuckermandef78752016-03-28 12:23:09 +00004267
4268static __inline__ __mmask16 __DEFAULT_FN_ATTRS
4269_mm512_kmov (__mmask16 __A)
4270{
4271 return __A;
4272}
4273
Michael Zuckermane71d59f2016-03-07 19:15:00 +00004274#define _mm_comi_round_sd(__A, __B, __P, __R) __extension__ ({\
4275__builtin_ia32_vcomisd ((__v2df) (__A), (__v2df) (__B), ( __P), ( __R));\
4276})
4277
4278#define _mm_comi_round_ss( __A, __B, __P, __R) __extension__ ({\
4279__builtin_ia32_vcomiss ((__v4sf) (__A), (__v4sf) (__B), ( __P), ( __R));\
4280})
4281
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004282static __inline__ __m512d __DEFAULT_FN_ATTRS
4283_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4284{
4285 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
4286 (__v8df) __B,
4287 (__v8df) __W,
4288 (__mmask8) __U);
4289}
Michael Zuckerman8d161992016-04-10 17:24:03 +00004290#define _mm_cvt_roundsd_si64( __A, __R) __extension__ ({ \
4291__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
4292})
Michael Zuckermand8d2f622016-04-11 07:15:34 +00004293static __inline__ __m512i __DEFAULT_FN_ATTRS
4294_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
4295 __mmask16 __U, __m512i __B)
4296{
4297 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
4298 (__v16si) __I
4299 /* idx */ ,
4300 (__v16si) __B,
4301 (__mmask16) __U);
4302}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00004303static __inline__ __m512i __DEFAULT_FN_ATTRS
4304_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
4305{
4306 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
4307 (__v16si) __B,
4308 (__v16si)
4309 _mm512_setzero_si512 (),
4310 (__mmask16) -1);
4311}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004312
Michael Zuckerman81f468c2016-04-11 17:04:21 +00004313static __inline__ __m512i __DEFAULT_FN_ATTRS
4314_mm512_sll_epi32 (__m512i __A, __m128i __B)
4315{
4316 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4317 (__v4si) __B,
4318 (__v16si)
4319 _mm512_setzero_si512 (),
4320 (__mmask16) -1);
4321}
4322
4323static __inline__ __m512i __DEFAULT_FN_ATTRS
4324_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4325{
4326 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4327 (__v4si) __B,
4328 (__v16si) __W,
4329 (__mmask16) __U);
4330}
4331
4332static __inline__ __m512i __DEFAULT_FN_ATTRS
4333_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4334{
4335 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
4336 (__v4si) __B,
4337 (__v16si)
4338 _mm512_setzero_si512 (),
4339 (__mmask16) __U);
4340}
4341
4342static __inline__ __m512i __DEFAULT_FN_ATTRS
4343_mm512_sll_epi64 (__m512i __A, __m128i __B)
4344{
4345 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4346 (__v2di) __B,
4347 (__v8di)
4348 _mm512_setzero_si512 (),
4349 (__mmask8) -1);
4350}
4351
4352static __inline__ __m512i __DEFAULT_FN_ATTRS
4353_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4354{
4355 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4356 (__v2di) __B,
4357 (__v8di) __W,
4358 (__mmask8) __U);
4359}
4360
4361static __inline__ __m512i __DEFAULT_FN_ATTRS
4362_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4363{
4364 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
4365 (__v2di) __B,
4366 (__v8di)
4367 _mm512_setzero_si512 (),
4368 (__mmask8) __U);
4369}
4370
4371static __inline__ __m512i __DEFAULT_FN_ATTRS
4372_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
4373{
4374 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4375 (__v16si) __Y,
4376 (__v16si)
4377 _mm512_setzero_si512 (),
4378 (__mmask16) -1);
4379}
4380
4381static __inline__ __m512i __DEFAULT_FN_ATTRS
4382_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4383{
4384 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4385 (__v16si) __Y,
4386 (__v16si) __W,
4387 (__mmask16) __U);
4388}
4389
4390static __inline__ __m512i __DEFAULT_FN_ATTRS
4391_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4392{
4393 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
4394 (__v16si) __Y,
4395 (__v16si)
4396 _mm512_setzero_si512 (),
4397 (__mmask16) __U);
4398}
4399
4400static __inline__ __m512i __DEFAULT_FN_ATTRS
4401_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
4402{
4403 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4404 (__v8di) __Y,
4405 (__v8di)
4406 _mm512_undefined_pd (),
4407 (__mmask8) -1);
4408}
4409
4410static __inline__ __m512i __DEFAULT_FN_ATTRS
4411_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4412{
4413 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4414 (__v8di) __Y,
4415 (__v8di) __W,
4416 (__mmask8) __U);
4417}
4418
4419static __inline__ __m512i __DEFAULT_FN_ATTRS
4420_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
4421{
4422 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
4423 (__v8di) __Y,
4424 (__v8di)
4425 _mm512_setzero_si512 (),
4426 (__mmask8) __U);
4427}
4428
4429static __inline__ __m512i __DEFAULT_FN_ATTRS
4430_mm512_sra_epi32 (__m512i __A, __m128i __B)
4431{
4432 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
4433 (__v4si) __B,
4434 (__v16si)
4435 _mm512_setzero_si512 (),
4436 (__mmask16) -1);
4437}
4438
4439static __inline__ __m512i __DEFAULT_FN_ATTRS
4440_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4441{
4442 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
4443 (__v4si) __B,
4444 (__v16si) __W,
4445 (__mmask16) __U);
4446}
4447
4448static __inline__ __m512i __DEFAULT_FN_ATTRS
4449_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4450{
4451 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
4452 (__v4si) __B,
4453 (__v16si)
4454 _mm512_setzero_si512 (),
4455 (__mmask16) __U);
4456}
4457
4458static __inline__ __m512i __DEFAULT_FN_ATTRS
4459_mm512_sra_epi64 (__m512i __A, __m128i __B)
4460{
4461 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
4462 (__v2di) __B,
4463 (__v8di)
4464 _mm512_setzero_si512 (),
4465 (__mmask8) -1);
4466}
4467
4468static __inline__ __m512i __DEFAULT_FN_ATTRS
4469_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4470{
4471 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
4472 (__v2di) __B,
4473 (__v8di) __W,
4474 (__mmask8) __U);
4475}
4476
4477static __inline__ __m512i __DEFAULT_FN_ATTRS
4478_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4479{
4480 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
4481 (__v2di) __B,
4482 (__v8di)
4483 _mm512_setzero_si512 (),
4484 (__mmask8) __U);
4485}
4486
4487static __inline__ __m512i __DEFAULT_FN_ATTRS
4488_mm512_srav_epi32 (__m512i __X, __m512i __Y)
4489{
4490 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
4491 (__v16si) __Y,
4492 (__v16si)
4493 _mm512_setzero_si512 (),
4494 (__mmask16) -1);
4495}
4496
4497static __inline__ __m512i __DEFAULT_FN_ATTRS
4498_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4499{
4500 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
4501 (__v16si) __Y,
4502 (__v16si) __W,
4503 (__mmask16) __U);
4504}
4505
4506static __inline__ __m512i __DEFAULT_FN_ATTRS
4507_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4508{
4509 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
4510 (__v16si) __Y,
4511 (__v16si)
4512 _mm512_setzero_si512 (),
4513 (__mmask16) __U);
4514}
4515
4516static __inline__ __m512i __DEFAULT_FN_ATTRS
4517_mm512_srav_epi64 (__m512i __X, __m512i __Y)
4518{
4519 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
4520 (__v8di) __Y,
4521 (__v8di)
4522 _mm512_setzero_si512 (),
4523 (__mmask8) -1);
4524}
4525
4526static __inline__ __m512i __DEFAULT_FN_ATTRS
4527_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4528{
4529 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
4530 (__v8di) __Y,
4531 (__v8di) __W,
4532 (__mmask8) __U);
4533}
4534
4535static __inline__ __m512i __DEFAULT_FN_ATTRS
4536_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
4537{
4538 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
4539 (__v8di) __Y,
4540 (__v8di)
4541 _mm512_setzero_si512 (),
4542 (__mmask8) __U);
4543}
4544
4545static __inline__ __m512i __DEFAULT_FN_ATTRS
4546_mm512_srl_epi32 (__m512i __A, __m128i __B)
4547{
4548 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
4549 (__v4si) __B,
4550 (__v16si)
4551 _mm512_setzero_si512 (),
4552 (__mmask16) -1);
4553}
4554
4555static __inline__ __m512i __DEFAULT_FN_ATTRS
4556_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
4557{
4558 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
4559 (__v4si) __B,
4560 (__v16si) __W,
4561 (__mmask16) __U);
4562}
4563
4564static __inline__ __m512i __DEFAULT_FN_ATTRS
4565_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
4566{
4567 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
4568 (__v4si) __B,
4569 (__v16si)
4570 _mm512_setzero_si512 (),
4571 (__mmask16) __U);
4572}
4573
4574static __inline__ __m512i __DEFAULT_FN_ATTRS
4575_mm512_srl_epi64 (__m512i __A, __m128i __B)
4576{
4577 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
4578 (__v2di) __B,
4579 (__v8di)
4580 _mm512_setzero_si512 (),
4581 (__mmask8) -1);
4582}
4583
4584static __inline__ __m512i __DEFAULT_FN_ATTRS
4585_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
4586{
4587 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
4588 (__v2di) __B,
4589 (__v8di) __W,
4590 (__mmask8) __U);
4591}
4592
4593static __inline__ __m512i __DEFAULT_FN_ATTRS
4594_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
4595{
4596 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
4597 (__v2di) __B,
4598 (__v8di)
4599 _mm512_setzero_si512 (),
4600 (__mmask8) __U);
4601}
4602
4603static __inline__ __m512i __DEFAULT_FN_ATTRS
4604_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
4605{
4606 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
4607 (__v16si) __Y,
4608 (__v16si)
4609 _mm512_setzero_si512 (),
4610 (__mmask16) -1);
4611}
4612
4613static __inline__ __m512i __DEFAULT_FN_ATTRS
4614_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
4615{
4616 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
4617 (__v16si) __Y,
4618 (__v16si) __W,
4619 (__mmask16) __U);
4620}
4621
4622static __inline__ __m512i __DEFAULT_FN_ATTRS
4623_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
4624{
4625 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
4626 (__v16si) __Y,
4627 (__v16si)
4628 _mm512_setzero_si512 (),
4629 (__mmask16) __U);
4630}
4631
4632static __inline__ __m512i __DEFAULT_FN_ATTRS
4633_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
4634{
4635 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
4636 (__v8di) __Y,
4637 (__v8di)
4638 _mm512_setzero_si512 (),
4639 (__mmask8) -1);
4640}
4641
4642static __inline__ __m512i __DEFAULT_FN_ATTRS
4643_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
4644{
4645 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
4646 (__v8di) __Y,
4647 (__v8di) __W,
4648 (__mmask8) __U);
4649}
4650
4651static __inline__ __m512i __DEFAULT_FN_ATTRS
4652_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
4653{
4654 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
4655 (__v8di) __Y,
4656 (__v8di)
4657 _mm512_setzero_si512 (),
4658 (__mmask8) __U);
4659}
4660
4661#define _mm512_ternarylogic_epi32( __A, __B, __C, imm) __extension__ ({ \
4662__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
4663 (__v16si)( __B),\
4664 (__v16si)( __C),\
4665 ( imm), (__mmask16) -1);\
4666})
4667
4668#define _mm512_mask_ternarylogic_epi32( __A, __U, __B, __C, imm) __extension__ ({ \
4669__builtin_ia32_pternlogd512_mask ((__v16si)( __A),\
4670 (__v16si)( __B),\
4671 (__v16si)( __C),\
4672 ( imm), (__mmask16)( __U));\
4673})
4674
4675#define _mm512_maskz_ternarylogic_epi32( __U, __A, __B, __C, imm) __extension__ ({ \
4676__builtin_ia32_pternlogd512_maskz ((__v16si)( __A),\
4677 (__v16si)( __B),\
4678 (__v16si)( __C),\
4679 ( imm), (__mmask16)( __U));\
4680})
4681
4682#define _mm512_ternarylogic_epi64( __A, __B, __C, imm) __extension__ ({ \
4683__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
4684 (__v8di)( __B),\
4685 (__v8di)( __C),( imm),\
4686 (__mmask8) -1);\
4687})
4688
4689#define _mm512_mask_ternarylogic_epi64( __A, __U, __B, __C, imm) __extension__ ({ \
4690__builtin_ia32_pternlogq512_mask ((__v8di)( __A),\
4691 (__v8di)( __B),\
4692 (__v8di)( __C),( imm),\
4693 (__mmask8)( __U));\
4694})
4695
4696#define _mm512_maskz_ternarylogic_epi64( __U, __A, __B, __C, imm) __extension__ ({ \
4697__builtin_ia32_pternlogq512_maskz ((__v8di)( __A),\
4698 (__v8di)( __B),\
4699 (__v8di)( __C),\
4700 ( imm), (__mmask8)( __U));\
4701})
4702
Michael Zuckermancdd54c82016-04-10 12:54:23 +00004703static __inline__ __m512d __DEFAULT_FN_ATTRS
4704_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
4705{
4706 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
4707 (__v8df) __B,
4708 (__v8df)
4709 _mm512_setzero_pd (),
4710 (__mmask8) __U);
4711}
4712
4713static __inline__ __m512 __DEFAULT_FN_ATTRS
4714_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4715{
4716 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
4717 (__v16sf) __B,
4718 (__v16sf) __W,
4719 (__mmask16) __U);
4720}
4721
4722static __inline__ __m512 __DEFAULT_FN_ATTRS
4723_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
4724{
4725 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
4726 (__v16sf) __B,
4727 (__v16sf)
4728 _mm512_setzero_ps (),
4729 (__mmask16) __U);
4730}
4731
4732static __inline__ __m512d __DEFAULT_FN_ATTRS
4733_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
4734{
4735 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
4736 (__v8df) __B,
4737 (__v8df) __W,
4738 (__mmask8) __U);
4739}
4740
4741static __inline__ __m512d __DEFAULT_FN_ATTRS
4742_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
4743{
4744 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
4745 (__v8df) __B,
4746 (__v8df)
4747 _mm512_setzero_pd (),
4748 (__mmask8) __U);
4749}
4750
4751static __inline__ __m512 __DEFAULT_FN_ATTRS
4752_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
4753{
4754 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
4755 (__v16sf) __B,
4756 (__v16sf) __W,
4757 (__mmask16) __U);
4758}
4759
4760static __inline__ __m512 __DEFAULT_FN_ATTRS
4761_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
4762{
4763 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
4764 (__v16sf) __B,
4765 (__v16sf)
4766 _mm512_setzero_ps (),
4767 (__mmask16) __U);
4768}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00004769
Michael Zuckerman8d161992016-04-10 17:24:03 +00004770#define _mm_cvt_roundsd_i64( __A, __R) __extension__ ({ \
4771__builtin_ia32_vcvtsd2si64 ((__v2df)( __A),( __R));\
4772})
4773
4774#define _mm_cvt_roundsd_si32( __A, __R) __extension__ ({ \
4775__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
4776})
4777
4778#define _mm_cvt_roundsd_i32( __A, __R) __extension__ ({ \
4779__builtin_ia32_vcvtsd2si32 ((__v2df)( __A),( __R));\
4780})
4781
4782#define _mm_cvt_roundsd_u32( __A, __R) __extension__ ({ \
4783__builtin_ia32_vcvtsd2usi32 ((__v2df)( __A),( __R));\
4784})
4785
4786static __inline__ unsigned __DEFAULT_FN_ATTRS
4787_mm_cvtsd_u32 (__m128d __A)
4788{
4789 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
4790 _MM_FROUND_CUR_DIRECTION);
4791}
4792
4793#define _mm_cvt_roundsd_u64( __A, __R) __extension__ ({ \
4794__builtin_ia32_vcvtsd2usi64 ((__v2df)( __A),( __R));\
4795})
4796
4797static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4798_mm_cvtsd_u64 (__m128d __A)
4799{
4800 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
4801 __A,
4802 _MM_FROUND_CUR_DIRECTION);
4803}
4804
4805#define _mm_cvt_roundss_si32( __A, __R) __extension__ ({ \
4806__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
4807})
4808
4809#define _mm_cvt_roundss_i32( __A, __R) __extension__ ({ \
4810__builtin_ia32_vcvtss2si32 ((__v4sf)( __A),( __R));\
4811})
4812
4813#define _mm_cvt_roundss_si64( __A, __R) __extension__ ({ \
4814__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
4815})
4816
4817#define _mm_cvt_roundss_i64( __A, __R) __extension__ ({ \
4818__builtin_ia32_vcvtss2si64 ((__v4sf)( __A),( __R));\
4819})
4820
4821#define _mm_cvt_roundss_u32( __A, __R) __extension__ ({ \
4822__builtin_ia32_vcvtss2usi32 ((__v4sf)( __A),( __R));\
4823})
4824
4825static __inline__ unsigned __DEFAULT_FN_ATTRS
4826_mm_cvtss_u32 (__m128 __A)
4827{
4828 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
4829 _MM_FROUND_CUR_DIRECTION);
4830}
4831
4832#define _mm_cvt_roundss_u64( __A, __R) __extension__ ({ \
4833__builtin_ia32_vcvtss2usi64 ((__v4sf)( __A),( __R));\
4834})
4835
4836static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4837_mm_cvtss_u64 (__m128 __A)
4838{
4839 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
4840 __A,
4841 _MM_FROUND_CUR_DIRECTION);
4842}
4843
4844#define _mm_cvtt_roundsd_i32( __A, __R) __extension__ ({ \
4845__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
4846})
4847
4848#define _mm_cvtt_roundsd_si32( __A, __R) __extension__ ({ \
4849__builtin_ia32_vcvttsd2si32 ((__v2df)( __A),( __R));\
4850})
4851
4852static __inline__ int __DEFAULT_FN_ATTRS
4853_mm_cvttsd_i32 (__m128d __A)
4854{
4855 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
4856 _MM_FROUND_CUR_DIRECTION);
4857}
4858
4859#define _mm_cvtt_roundsd_si64( __A, __R) __extension__ ({ \
4860__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
4861})
4862
4863#define _mm_cvtt_roundsd_i64( __A, __R) __extension__ ({ \
4864__builtin_ia32_vcvttsd2si64 ((__v2df)( __A),( __R));\
4865})
4866
4867static __inline__ long long __DEFAULT_FN_ATTRS
4868_mm_cvttsd_i64 (__m128d __A)
4869{
4870 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
4871 _MM_FROUND_CUR_DIRECTION);
4872}
4873
4874#define _mm_cvtt_roundsd_u32( __A, __R) __extension__ ({ \
4875__builtin_ia32_vcvttsd2usi32 ((__v2df)( __A),( __R));\
4876})
4877
4878static __inline__ unsigned __DEFAULT_FN_ATTRS
4879_mm_cvttsd_u32 (__m128d __A)
4880{
4881 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
4882 _MM_FROUND_CUR_DIRECTION);
4883}
4884
4885#define _mm_cvtt_roundsd_u64( __A, __R) __extension__ ({ \
4886__builtin_ia32_vcvttsd2usi64 ((__v2df)( __A),( __R));\
4887})
4888
4889static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4890_mm_cvttsd_u64 (__m128d __A)
4891{
4892 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
4893 __A,
4894 _MM_FROUND_CUR_DIRECTION);
4895}
4896
4897#define _mm_cvtt_roundss_i32( __A, __R) __extension__ ({ \
4898__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
4899})
4900
4901#define _mm_cvtt_roundss_si32( __A, __R) __extension__ ({ \
4902__builtin_ia32_vcvttss2si32 ((__v4sf)( __A),( __R));\
4903})
4904
4905static __inline__ int __DEFAULT_FN_ATTRS
4906_mm_cvttss_i32 (__m128 __A)
4907{
4908 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
4909 _MM_FROUND_CUR_DIRECTION);
4910}
4911
4912#define _mm_cvtt_roundss_i64( __A, __R) __extension__ ({ \
4913__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
4914})
4915
4916#define _mm_cvtt_roundss_si64( __A, __R) __extension__ ({ \
4917__builtin_ia32_vcvttss2si64 ((__v4sf)( __A),( __R));\
4918})
4919
4920static __inline__ long long __DEFAULT_FN_ATTRS
4921_mm_cvttss_i64 (__m128 __A)
4922{
4923 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
4924 _MM_FROUND_CUR_DIRECTION);
4925}
4926
4927#define _mm_cvtt_roundss_u32( __A, __R) __extension__ ({ \
4928__builtin_ia32_vcvttss2usi32 ((__v4sf)( __A),( __R));\
4929})
4930
4931static __inline__ unsigned __DEFAULT_FN_ATTRS
4932_mm_cvttss_u32 (__m128 __A)
4933{
4934 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
4935 _MM_FROUND_CUR_DIRECTION);
4936}
4937
4938#define _mm_cvtt_roundss_u64( __A, __R) __extension__ ({ \
4939__builtin_ia32_vcvttss2usi64 ((__v4sf)( __A),( __R));\
4940})
4941
4942static __inline__ unsigned long long __DEFAULT_FN_ATTRS
4943_mm_cvttss_u64 (__m128 __A)
4944{
4945 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
4946 __A,
4947 _MM_FROUND_CUR_DIRECTION);
4948}
4949
Michael Zuckermand8d2f622016-04-11 07:15:34 +00004950static __inline__ __m512d __DEFAULT_FN_ATTRS
4951_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
4952 __m512d __B)
4953{
4954 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
4955 (__v8di) __I
4956 /* idx */ ,
4957 (__v8df) __B,
4958 (__mmask8) __U);
4959}
4960
4961static __inline__ __m512 __DEFAULT_FN_ATTRS
4962_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
4963 __m512 __B)
4964{
4965 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
4966 (__v16si) __I
4967 /* idx */ ,
4968 (__v16sf) __B,
4969 (__mmask16) __U);
4970}
4971
4972static __inline__ __m512i __DEFAULT_FN_ATTRS
4973_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
4974 __mmask8 __U, __m512i __B)
4975{
4976 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
4977 (__v8di) __I
4978 /* idx */ ,
4979 (__v8di) __B,
4980 (__mmask8) __U);
4981}
4982
4983#define _mm512_permute_pd( __X, __C) __extension__ ({ \
4984__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
4985 (__v8df)\
4986 _mm512_undefined_pd (),\
4987 (__mmask8) -1);\
4988})
4989
4990#define _mm512_mask_permute_pd( __W, __U, __X, __C) __extension__ ({ \
4991__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
4992 (__v8df)( __W),\
4993 (__mmask8)( __U));\
4994})
4995
4996#define _mm512_maskz_permute_pd( __U, __X, __C) __extension__ ({ \
4997__builtin_ia32_vpermilpd512_mask ((__v8df)( __X),( __C),\
4998 (__v8df)\
4999 _mm512_setzero_pd (),\
5000 (__mmask8)( __U));\
5001})
5002
5003#define _mm512_permute_ps( __X, __C) __extension__ ({ \
5004__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5005 (__v16sf)\
5006 _mm512_undefined_ps (),\
5007 (__mmask16) -1);\
5008})
5009
5010#define _mm512_mask_permute_ps( __W, __U, __X, __C) __extension__ ({ \
5011__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5012 (__v16sf)( __W),\
5013 (__mmask16)( __U));\
5014})
5015
5016#define _mm512_maskz_permute_ps( __U, __X, __C) __extension__ ({ \
5017__builtin_ia32_vpermilps512_mask ((__v16sf)( __X),( __C),\
5018 (__v16sf)\
5019 _mm512_setzero_ps (),\
5020 (__mmask16)( __U));\
5021})
5022
5023static __inline__ __m512d __DEFAULT_FN_ATTRS
5024_mm512_permutevar_pd (__m512d __A, __m512i __C)
5025{
5026 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5027 (__v8di) __C,
5028 (__v8df)
5029 _mm512_undefined_pd (),
5030 (__mmask8) -1);
5031}
5032
5033static __inline__ __m512d __DEFAULT_FN_ATTRS
5034_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
5035{
5036 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5037 (__v8di) __C,
5038 (__v8df) __W,
5039 (__mmask8) __U);
5040}
5041
5042static __inline__ __m512d __DEFAULT_FN_ATTRS
5043_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
5044{
5045 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
5046 (__v8di) __C,
5047 (__v8df)
5048 _mm512_setzero_pd (),
5049 (__mmask8) __U);
5050}
5051
5052static __inline__ __m512 __DEFAULT_FN_ATTRS
5053_mm512_permutevar_ps (__m512 __A, __m512i __C)
5054{
5055 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5056 (__v16si) __C,
5057 (__v16sf)
5058 _mm512_undefined_ps (),
5059 (__mmask16) -1);
5060}
5061
5062static __inline__ __m512 __DEFAULT_FN_ATTRS
5063_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
5064{
5065 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5066 (__v16si) __C,
5067 (__v16sf) __W,
5068 (__mmask16) __U);
5069}
5070
5071static __inline__ __m512 __DEFAULT_FN_ATTRS
5072_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
5073{
5074 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
5075 (__v16si) __C,
5076 (__v16sf)
5077 _mm512_setzero_ps (),
5078 (__mmask16) __U);
5079}
5080
5081static __inline__ __m512i __DEFAULT_FN_ATTRS
5082_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
5083 __m512i __I, __m512i __B)
5084{
5085 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
5086 /* idx */ ,
5087 (__v16si) __A,
5088 (__v16si) __B,
5089 (__mmask16) __U);
5090}
5091
5092static __inline__ __m512d __DEFAULT_FN_ATTRS
5093_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
5094 __m512d __B)
5095{
5096 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
5097 /* idx */ ,
5098 (__v8df) __A,
5099 (__v8df) __B,
5100 (__mmask8) __U);
5101}
5102
5103static __inline__ __m512 __DEFAULT_FN_ATTRS
5104_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
5105 __m512 __B)
5106{
5107 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
5108 /* idx */ ,
5109 (__v16sf) __A,
5110 (__v16sf) __B,
5111 (__mmask16) __U);
5112}
5113
5114static __inline__ __m512i __DEFAULT_FN_ATTRS
5115_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
5116 __m512i __I, __m512i __B)
5117{
5118 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
5119 /* idx */ ,
5120 (__v8di) __A,
5121 (__v8di) __B,
5122 (__mmask8) __U);
5123}
5124
Michael Zuckerman07525092016-04-11 10:22:07 +00005125static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5126_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
5127{
5128 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5129 (__v16si) __B,
5130 (__mmask16) -1);
5131}
5132
5133static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5134_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
5135{
5136 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
5137 (__v16si) __B, __U);
5138}
5139
5140static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5141_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
5142{
5143 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5144 (__v8di) __B,
5145 (__mmask8) -1);
5146}
5147
5148static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5149_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
5150{
5151 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
5152 (__v8di) __B, __U);
5153}
5154
5155
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005156static __inline__ __m512i __DEFAULT_FN_ATTRS
5157_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5158 __m512i __B)
5159{
5160 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5161 (__v16si) __B,
5162 (__v16si) __W,
5163 (__mmask16) __U);
5164}
5165
5166static __inline__ __m512i __DEFAULT_FN_ATTRS
5167_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5168{
5169 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5170 (__v16si) __B,
5171 (__v16si)
5172 _mm512_setzero_si512 (),
5173 (__mmask16) __U);
5174}
5175
5176static __inline__ __m512i __DEFAULT_FN_ATTRS
5177_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
5178{
5179 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5180 (__v8di) __B,
5181 (__v8di)
5182 _mm512_setzero_si512 (),
5183 (__mmask8) -1);
5184}
5185
5186static __inline__ __m512i __DEFAULT_FN_ATTRS
5187_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5188{
5189 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5190 (__v8di) __B,
5191 (__v8di) __W,
5192 (__mmask8) __U);
5193}
5194
5195static __inline__ __m512i __DEFAULT_FN_ATTRS
5196_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5197{
5198 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
5199 (__v8di) __B,
5200 (__v8di)
5201 _mm512_setzero_si512 (),
5202 (__mmask8) __U);
5203}
5204
5205static __inline__ __m512i __DEFAULT_FN_ATTRS
5206_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
5207{
5208 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5209 (__v16si) __B,
5210 (__v16si)
5211 _mm512_setzero_si512 (),
5212 (__mmask16) -1);
5213}
5214
5215static __inline__ __m512i __DEFAULT_FN_ATTRS
5216_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
5217 __m512i __B)
5218{
5219 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5220 (__v16si) __B,
5221 (__v16si) __W,
5222 (__mmask16) __U);
5223}
5224
5225static __inline__ __m512i __DEFAULT_FN_ATTRS
5226_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
5227{
5228 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
5229 (__v16si) __B,
5230 (__v16si)
5231 _mm512_setzero_si512 (),
5232 (__mmask16) __U);
5233}
5234
5235static __inline__ __m512i __DEFAULT_FN_ATTRS
5236_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
5237{
5238 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5239 (__v8di) __B,
5240 (__v8di)
5241 _mm512_setzero_si512 (),
5242 (__mmask8) -1);
5243}
5244
5245static __inline__ __m512i __DEFAULT_FN_ATTRS
5246_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
5247{
5248 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5249 (__v8di) __B,
5250 (__v8di) __W,
5251 (__mmask8) __U);
5252}
5253
5254static __inline__ __m512i __DEFAULT_FN_ATTRS
5255_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5256{
5257 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
5258 (__v8di) __B,
5259 (__v8di)
5260 _mm512_setzero_si512 (),
5261 (__mmask8) __U);
5262}
5263
5264#define _mm_roundscale_round_sd( __A, __B, __imm, __R) __extension__ ({ \
5265__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
5266 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5267 (__mmask8) -1,( __imm),( __R));\
5268})
5269
5270#define _mm_roundscale_sd( __A, __B, __imm) __extension__ ({ \
5271__builtin_ia32_rndscalesd_round_mask ((__v2df)( __A),\
5272 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5273 (__mmask8) -1, ( __imm),\
5274 _MM_FROUND_CUR_DIRECTION);\
5275})
5276
5277#define _mm_mask_roundscale_sd( __W, __U, __A, __B, __imm) __extension__ ({ \
5278__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5279 (__v2df)( __B),\
5280 (__v2df)( __W),\
5281 (__mmask8)( __U),\
5282 (__imm),\
5283 _MM_FROUND_CUR_DIRECTION);\
5284})
5285
5286#define _mm_mask_roundscale_round_sd( __W, __U, __A, __B, __I, __R) __extension__ ({ \
5287__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5288 (__v2df)( __B),\
5289 (__v2df)( __W),\
5290 (__mmask8)( __U),\
5291 __I,\
5292 __R);\
5293})
5294
5295#define _mm_maskz_roundscale_sd( __U, __A, __B, __I) __extension__ ({ \
5296__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5297 (__v2df)( __B),\
5298 (__v2df) _mm_setzero_pd (),\
5299 (__mmask8)( __U),\
5300 __I,\
5301 _MM_FROUND_CUR_DIRECTION);\
5302})
5303
5304#define _mm_maskz_roundscale_round_sd( __U, __A, __B, __I, __R) __extension__ ({ \
5305__builtin_ia32_rndscalesd_round_mask ( (__v2df)( __A),\
5306 (__v2df)( __B),\
5307 (__v2df) _mm_setzero_pd (),\
5308 (__mmask8)( __U),\
5309 __I,\
5310 __R);\
5311})
5312
5313#define _mm_roundscale_round_ss( __A, __B, __imm, __R) __extension__ ({ \
5314__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
5315 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5316 (__mmask8) -1, __imm, __R);\
5317})
5318
5319#define _mm_roundscale_ss( __A, __B, __imm) __extension__ ({ \
5320__builtin_ia32_rndscaless_round_mask ((__v4sf)( __A),\
5321 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5322 (__mmask8) -1, ( __imm),\
5323 _MM_FROUND_CUR_DIRECTION);\
5324})
5325
5326#define _mm_mask_roundscale_ss( __W, __U, __A, __B, __I) __extension__ ({ \
5327__builtin_ia32_rndscaless_round_mask ( (__v4sf) ( __A),\
5328 (__v4sf)( __B),\
5329 (__v4sf)( __W),\
5330 (__mmask8)( __U),\
5331 __I,\
5332 _MM_FROUND_CUR_DIRECTION);\
5333})
5334
5335#define _mm_mask_roundscale_round_ss( __W, __U, __A, __B, __I, __R) __extension__ ({ \
5336__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5337 (__v4sf)( __B),\
5338 (__v4sf)( __W),\
5339 (__mmask8)( __U),\
5340 __I,\
5341 __R);\
5342})
5343
5344#define _mm_maskz_roundscale_ss( __U, __A, __B, __I) __extension__ ({ \
5345__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5346 (__v4sf)( __B),\
5347 (__v4sf) _mm_setzero_ps (),\
5348 (__mmask8)( __U),\
5349 __I,\
5350 _MM_FROUND_CUR_DIRECTION);\
5351})
5352
5353#define _mm_maskz_roundscale_round_ss( __U, __A, __B, __I, __R) __extension__ ({ \
5354__builtin_ia32_rndscaless_round_mask ( (__v4sf)( __A),\
5355 (__v4sf)( __B),\
5356 (__v4sf) _mm_setzero_ps (),\
5357 (__mmask8)( __U),\
5358 __I,\
5359 __R);\
5360})
5361
5362#define _mm512_scalef_round_pd( __A, __B, __R) __extension__ ({ \
5363__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5364 (__v8df)( __B),\
5365 (__v8df)\
5366 _mm512_undefined_pd (),\
5367 (__mmask8) -1,( __R));\
5368})
5369
5370#define _mm512_mask_scalef_round_pd( __W, __U, __A, __B, __R) __extension__ ({ \
5371__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5372 (__v8df)( __B),\
5373 (__v8df)( __W),\
5374 (__mmask8)( __U),( __R));\
5375})
5376
5377#define _mm512_maskz_scalef_round_pd( __U, __A, __B, __R) __extension__ ({ \
5378__builtin_ia32_scalefpd512_mask ((__v8df)( __A),\
5379 (__v8df)( __B),\
5380 (__v8df)\
5381 _mm512_setzero_pd (),\
5382 (__mmask8)( __U),( __R));\
5383})
5384
5385static __inline__ __m512d __DEFAULT_FN_ATTRS
5386_mm512_scalef_pd (__m512d __A, __m512d __B)
5387{
5388 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
5389 (__v8df) __B,
5390 (__v8df)
5391 _mm512_undefined_pd (),
5392 (__mmask8) -1,
5393 _MM_FROUND_CUR_DIRECTION);
5394}
5395
5396static __inline__ __m512d __DEFAULT_FN_ATTRS
5397_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5398{
5399 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
5400 (__v8df) __B,
5401 (__v8df) __W,
5402 (__mmask8) __U,
5403 _MM_FROUND_CUR_DIRECTION);
5404}
5405
5406static __inline__ __m512d __DEFAULT_FN_ATTRS
5407_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
5408{
5409 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
5410 (__v8df) __B,
5411 (__v8df)
5412 _mm512_setzero_pd (),
5413 (__mmask8) __U,
5414 _MM_FROUND_CUR_DIRECTION);
5415}
5416
5417#define _mm512_scalef_round_ps( __A, __B, __R) __extension__ ({ \
5418__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
5419 (__v16sf)( __B),\
5420 (__v16sf)\
5421 _mm512_undefined_ps (),\
5422 (__mmask16) -1,( __R));\
5423})
5424
5425#define _mm512_mask_scalef_round_ps( __W, __U, __A, __B, __R) __extension__ ({ \
5426__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
5427 (__v16sf)( __B),\
5428 (__v16sf)( __W),\
5429 (__mmask16)( __U),( __R));\
5430})
5431
5432#define _mm512_maskz_scalef_round_ps( __U, __A, __B, __R) __extension__ ({ \
5433__builtin_ia32_scalefps512_mask ((__v16sf)( __A),\
5434 (__v16sf)( __B),\
5435 (__v16sf)\
5436 _mm512_setzero_ps (),\
5437 (__mmask16)( __U),( __R));\
5438})
5439
5440static __inline__ __m512 __DEFAULT_FN_ATTRS
5441_mm512_scalef_ps (__m512 __A, __m512 __B)
5442{
5443 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
5444 (__v16sf) __B,
5445 (__v16sf)
5446 _mm512_undefined_ps (),
5447 (__mmask16) -1,
5448 _MM_FROUND_CUR_DIRECTION);
5449}
5450
5451static __inline__ __m512 __DEFAULT_FN_ATTRS
5452_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5453{
5454 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
5455 (__v16sf) __B,
5456 (__v16sf) __W,
5457 (__mmask16) __U,
5458 _MM_FROUND_CUR_DIRECTION);
5459}
5460
5461static __inline__ __m512 __DEFAULT_FN_ATTRS
5462_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
5463{
5464 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
5465 (__v16sf) __B,
5466 (__v16sf)
5467 _mm512_setzero_ps (),
5468 (__mmask16) __U,
5469 _MM_FROUND_CUR_DIRECTION);
5470}
5471
5472#define _mm_scalef_round_sd( __A, __B, __R) __extension__ ({ \
5473__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
5474 (__v2df)( __B), (__v2df) _mm_setzero_pd(),\
5475 (__mmask8) -1,\
5476 ( __R));\
5477})
5478
5479static __inline__ __m128d __DEFAULT_FN_ATTRS
5480_mm_scalef_sd (__m128d __A, __m128d __B)
5481{
5482 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
5483 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
5484 (__mmask8) -1,
5485 _MM_FROUND_CUR_DIRECTION);
5486}
5487
5488static __inline__ __m128d __DEFAULT_FN_ATTRS
5489_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5490{
5491 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
5492 (__v2df) __B,
5493 (__v2df) __W,
5494 (__mmask8) __U,
5495 _MM_FROUND_CUR_DIRECTION);
5496}
5497
5498#define _mm_mask_scalef_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
5499__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
5500 (__v2df)( __B), (__v2df) __W,\
5501 (__mmask8) __U,\
5502 ( __R));\
5503})
5504
5505static __inline__ __m128d __DEFAULT_FN_ATTRS
5506_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
5507{
5508 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
5509 (__v2df) __B,
5510 (__v2df) _mm_setzero_pd (),
5511 (__mmask8) __U,
5512 _MM_FROUND_CUR_DIRECTION);
5513}
5514
5515#define _mm_maskz_scalef_round_sd( __U, __A, __B, __R) __extension__ ({ \
5516__builtin_ia32_scalefsd_round_mask ((__v2df)( __A),\
5517 (__v2df)( __B), (__v2df) _mm_setzero_pd (),\
5518 (__mmask8) __U,\
5519 ( __R));\
5520})
5521
5522#define _mm_scalef_round_ss( __A, __B, __R) __extension__ ({ \
5523__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
5524 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5525 (__mmask8) -1,\
5526 ( __R));\
5527})
5528
5529static __inline__ __m128 __DEFAULT_FN_ATTRS
5530_mm_scalef_ss (__m128 __A, __m128 __B)
5531{
5532 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
5533 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
5534 (__mmask8) -1,
5535 _MM_FROUND_CUR_DIRECTION);
5536}
5537
5538static __inline__ __m128 __DEFAULT_FN_ATTRS
5539_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
5540{
5541 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
5542 (__v4sf) __B,
5543 (__v4sf) __W,
5544 (__mmask8) __U,
5545 _MM_FROUND_CUR_DIRECTION);
5546}
5547
5548#define _mm_mask_scalef_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
5549__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
5550 (__v4sf)( __B), (__v4sf) __W,\
5551 (__mmask8) __U,\
5552 ( __R));\
5553})
5554
5555static __inline__ __m128 __DEFAULT_FN_ATTRS
5556_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
5557{
5558 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
5559 (__v4sf) __B,
5560 (__v4sf) _mm_setzero_ps (),
5561 (__mmask8) __U,
5562 _MM_FROUND_CUR_DIRECTION);
5563}
5564
5565#define _mm_maskz_scalef_round_ss( __U, __A, __B, __R) __extension__ ({ \
5566__builtin_ia32_scalefss_round_mask ((__v4sf)( __A),\
5567 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),\
5568 (__mmask8) __U,\
5569 _MM_FROUND_CUR_DIRECTION);\
5570})
5571
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00005572static __inline__ __m512i __DEFAULT_FN_ATTRS
5573_mm512_srai_epi32 (__m512i __A, unsigned int __B)
5574{
5575 return (__m512i) __builtin_ia32_psradi512_mask ((__v16si) __A, __B,
5576 (__v16si)
5577 _mm512_setzero_si512 (),
5578 (__mmask16) -1);
5579}
5580
5581#define _mm512_mask_srai_epi32( __W, __U, __A, __B) __extension__ ({ \
5582__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
5583 (__v16si)( __W),\
5584 (__mmask16)( __U));\
5585})
5586
5587#define _mm512_maskz_srai_epi32( __U, __A, __B) __extension__ ({ \
5588__builtin_ia32_psradi512_mask ((__v16si)( __A),( __B),\
5589 (__v16si)\
5590 _mm512_setzero_si512 (),\
5591 (__mmask16)( __U));\
5592})
5593
5594#define _mm512_srai_epi64( __A, __B) __extension__ ({ \
5595__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
5596 (__v8di)\
5597 _mm512_setzero_si512 (),\
5598 (__mmask8) -1);\
5599})
5600
5601#define _mm512_mask_srai_epi64( __W, __U, __A, __B) __extension__ ({ \
5602__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
5603 (__v8di)( __W),\
5604 (__mmask8)( __U));\
5605})
5606
5607#define _mm512_maskz_srai_epi64( __U, __A, __B) __extension__ ({ \
5608__builtin_ia32_psraqi512_mask ((__v8di)( __A),( __B),\
5609 (__v8di)\
5610 _mm512_setzero_si512 (),\
5611 (__mmask8)( __U));\
5612})
5613
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00005614#define _mm512_shuffle_f32x4( __A, __B, __imm) __extension__ ({ \
5615__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
5616 (__v16sf)( __B),( __imm),\
5617 (__v16sf)\
5618 _mm512_undefined_ps (),\
5619 (__mmask16) -1);\
5620})
5621
5622#define _mm512_mask_shuffle_f32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
5623__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
5624 (__v16sf)( __B),( __imm),\
5625 (__v16sf)( __W),\
5626 (__mmask16)( __U));\
5627})
5628
5629#define _mm512_maskz_shuffle_f32x4( __U, __A, __B, __imm) __extension__ ({ \
5630__builtin_ia32_shuf_f32x4_mask ((__v16sf)( __A),\
5631 (__v16sf)( __B),( __imm),\
5632 (__v16sf)\
5633 _mm512_setzero_ps (),\
5634 (__mmask16)( __U));\
5635})
5636
5637#define _mm512_shuffle_f64x2( __A, __B, __imm) __extension__ ({ \
5638__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
5639 (__v8df)( __B),( __imm),\
5640 (__v8df)\
5641 _mm512_undefined_pd (),\
5642 (__mmask8) -1);\
5643})
5644
5645#define _mm512_mask_shuffle_f64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
5646__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
5647 (__v8df)( __B),( __imm),\
5648 (__v8df)( __W),\
5649 (__mmask8)( __U));\
5650})
5651
5652#define _mm512_maskz_shuffle_f64x2( __U, __A, __B, __imm) __extension__ ({ \
5653__builtin_ia32_shuf_f64x2_mask ((__v8df)( __A),\
5654 (__v8df)( __B),( __imm),\
5655 (__v8df)\
5656 _mm512_setzero_pd (),\
5657 (__mmask8)( __U));\
5658})
5659
5660#define _mm512_shuffle_i32x4( __A, __B, __imm) __extension__ ({ \
5661__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
5662 (__v16si)( __B),\
5663 ( __imm),\
5664 (__v16si)\
5665 _mm512_setzero_si512 (),\
5666 (__mmask16) -1);\
5667})
5668
5669#define _mm512_mask_shuffle_i32x4( __W, __U, __A, __B, __imm) __extension__ ({ \
5670__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
5671 (__v16si)( __B),\
5672 ( __imm),\
5673 (__v16si)( __W),\
5674 (__mmask16)( __U));\
5675})
5676
5677#define _mm512_maskz_shuffle_i32x4( __U, __A, __B, __imm) __extension__ ({ \
5678__builtin_ia32_shuf_i32x4_mask ((__v16si)( __A),\
5679 (__v16si)( __B),\
5680 ( __imm),\
5681 (__v16si)\
5682 _mm512_setzero_si512 (),\
5683 (__mmask16)( __U));\
5684})
5685
5686#define _mm512_shuffle_i64x2( __A, __B, __imm) __extension__ ({ \
5687__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
5688 (__v8di)( __B),( __imm),\
5689 (__v8di)\
5690 _mm512_setzero_si512 (),\
5691 (__mmask8) -1);\
5692})
5693
5694#define _mm512_mask_shuffle_i64x2( __W, __U, __A, __B, __imm) __extension__ ({ \
5695__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
5696 (__v8di)( __B),( __imm),\
5697 (__v8di)( __W),\
5698 (__mmask8)( __U));\
5699})
5700
5701#define _mm512_maskz_shuffle_i64x2( __U, __A, __B, __imm) __extension__ ({ \
5702__builtin_ia32_shuf_i64x2_mask ((__v8di)( __A),\
5703 (__v8di)( __B),( __imm),\
5704 (__v8di)\
5705 _mm512_setzero_si512 (),\
5706 (__mmask8)( __U));\
5707})
5708
5709#define _mm512_shuffle_pd( __M, __V, __imm) __extension__ ({ \
5710__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
5711 (__v8df)( __V),( __imm),\
5712 (__v8df)\
5713 _mm512_undefined_pd (),\
5714 (__mmask8) -1);\
5715})
5716
5717#define _mm512_mask_shuffle_pd( __W, __U, __M, __V, __imm) __extension__ ({ \
5718__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
5719 (__v8df)( __V),( __imm),\
5720 (__v8df)( __W),\
5721 (__mmask8)( __U));\
5722})
5723
5724#define _mm512_maskz_shuffle_pd( __U, __M, __V, __imm) __extension__ ({ \
5725__builtin_ia32_shufpd512_mask ((__v8df)( __M),\
5726 (__v8df)( __V),( __imm),\
5727 (__v8df)\
5728 _mm512_setzero_pd (),\
5729 (__mmask8)( __U));\
5730})
5731
5732#define _mm512_shuffle_ps( __M, __V, __imm) __extension__ ({ \
5733__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
5734 (__v16sf)( __V),( __imm),\
5735 (__v16sf)\
5736 _mm512_undefined_ps (),\
5737 (__mmask16) -1);\
5738})
5739
5740#define _mm512_mask_shuffle_ps( __W, __U, __M, __V, __imm) __extension__ ({ \
5741__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
5742 (__v16sf)( __V),( __imm),\
5743 (__v16sf)( __W),\
5744 (__mmask16)( __U));\
5745})
5746
5747#define _mm512_maskz_shuffle_ps( __U, __M, __V, __imm) __extension__ ({ \
5748__builtin_ia32_shufps512_mask ((__v16sf)( __M),\
5749 (__v16sf)( __V),( __imm),\
5750 (__v16sf)\
5751 _mm512_setzero_ps (),\
5752 (__mmask16)( __U));\
5753})
5754
5755#define _mm_sqrt_round_sd( __A, __B, __R) __extension__ ({ \
5756__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
5757 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
5758 (__mmask8) -1,\
5759 ( __R));\
5760})
5761
5762static __inline__ __m128d __DEFAULT_FN_ATTRS
5763_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5764{
5765 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
5766 (__v2df) __A,
5767 (__v2df) __W,
5768 (__mmask8) __U,
5769 _MM_FROUND_CUR_DIRECTION);
5770}
5771
5772#define _mm_mask_sqrt_round_sd( __W, __U, __A, __B, __R) __extension__ ({ \
5773__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
5774 (__v2df)( __A),(__v2df) __W,\
5775 (__mmask8) __U,\
5776 ( __R));\
5777})
5778
5779static __inline__ __m128d __DEFAULT_FN_ATTRS
5780_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
5781{
5782 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
5783 (__v2df) __A,
5784 (__v2df) _mm_setzero_pd (),
5785 (__mmask8) __U,
5786 _MM_FROUND_CUR_DIRECTION);
5787}
5788
5789#define _mm_maskz_sqrt_round_sd( __U, __A, __B, __R) __extension__ ({ \
5790__builtin_ia32_sqrtsd_round_mask ((__v2df)( __B),\
5791 (__v2df)( __A),(__v2df) _mm_setzero_pd(),\
5792 (__mmask8) __U,\
5793 ( __R));\
5794})
5795
5796#define _mm_sqrt_round_ss( __A, __B, __R) __extension__ ({ \
5797__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
5798 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
5799 (__mmask8) -1,\
5800 ( __R));\
5801})
5802
5803static __inline__ __m128 __DEFAULT_FN_ATTRS
5804_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
5805{
5806 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
5807 (__v4sf) __A,
5808 (__v4sf) __W,
5809 (__mmask8) __U,
5810 _MM_FROUND_CUR_DIRECTION);
5811}
5812
5813#define _mm_mask_sqrt_round_ss( __W, __U, __A, __B, __R) __extension__ ({ \
5814__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
5815 (__v4sf)( __A),(__v4sf) __W,\
5816 (__mmask8) __U,\
5817 ( __R));\
5818})
5819
5820static __inline__ __m128 __DEFAULT_FN_ATTRS
5821_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
5822{
5823 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
5824 (__v4sf) __B,
5825 (__v4sf) _mm_setzero_ps (),
5826 (__mmask8) __U,
5827 _MM_FROUND_CUR_DIRECTION);
5828}
5829
5830#define _mm_maskz_sqrt_round_ss( __U, __A, __B, __R) __extension__ ({ \
5831__builtin_ia32_sqrtss_round_mask ((__v4sf)( __B),\
5832 (__v4sf)( __A),(__v4sf) _mm_setzero_ps(),\
5833 (__mmask8) __U,\
5834 __R);\
5835})
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00005836
Michael Zuckermane1680612016-04-13 15:02:04 +00005837static __inline__ __m128i __DEFAULT_FN_ATTRS
5838_mm512_cvtsepi32_epi8 (__m512i __A)
5839{
5840 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5841 (__v16qi) _mm_undefined_si128 (),
5842 (__mmask16) -1);
5843}
5844
5845static __inline__ __m128i __DEFAULT_FN_ATTRS
5846_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5847{
5848 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5849 (__v16qi) __O, __M);
5850}
5851
5852static __inline__ __m128i __DEFAULT_FN_ATTRS
5853_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
5854{
5855 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
5856 (__v16qi) _mm_setzero_si128 (),
5857 __M);
5858}
5859
5860static __inline__ void __DEFAULT_FN_ATTRS
5861_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
5862{
5863 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
5864}
5865
5866static __inline__ __m256i __DEFAULT_FN_ATTRS
5867_mm512_cvtsepi32_epi16 (__m512i __A)
5868{
5869 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5870 (__v16hi) _mm256_undefined_si256 (),
5871 (__mmask16) -1);
5872}
5873
5874static __inline__ __m256i __DEFAULT_FN_ATTRS
5875_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
5876{
5877 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5878 (__v16hi) __O, __M);
5879}
5880
5881static __inline__ __m256i __DEFAULT_FN_ATTRS
5882_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
5883{
5884 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
5885 (__v16hi) _mm256_setzero_si256 (),
5886 __M);
5887}
5888
5889static __inline__ void __DEFAULT_FN_ATTRS
5890_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
5891{
5892 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
5893}
5894
5895static __inline__ __m128i __DEFAULT_FN_ATTRS
5896_mm512_cvtsepi64_epi8 (__m512i __A)
5897{
5898 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5899 (__v16qi) _mm_undefined_si128 (),
5900 (__mmask8) -1);
5901}
5902
5903static __inline__ __m128i __DEFAULT_FN_ATTRS
5904_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
5905{
5906 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5907 (__v16qi) __O, __M);
5908}
5909
5910static __inline__ __m128i __DEFAULT_FN_ATTRS
5911_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
5912{
5913 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
5914 (__v16qi) _mm_setzero_si128 (),
5915 __M);
5916}
5917
5918static __inline__ void __DEFAULT_FN_ATTRS
5919_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
5920{
5921 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
5922}
5923
5924static __inline__ __m256i __DEFAULT_FN_ATTRS
5925_mm512_cvtsepi64_epi32 (__m512i __A)
5926{
5927 __v8si __O;
5928 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5929 (__v8si) _mm256_undefined_si256 (),
5930 (__mmask8) -1);
5931}
5932
5933static __inline__ __m256i __DEFAULT_FN_ATTRS
5934_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
5935{
5936 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5937 (__v8si) __O, __M);
5938}
5939
5940static __inline__ __m256i __DEFAULT_FN_ATTRS
5941_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
5942{
5943 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
5944 (__v8si) _mm256_setzero_si256 (),
5945 __M);
5946}
5947
5948static __inline__ void __DEFAULT_FN_ATTRS
5949_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
5950{
5951 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
5952}
5953
5954static __inline__ __m128i __DEFAULT_FN_ATTRS
5955_mm512_cvtsepi64_epi16 (__m512i __A)
5956{
5957 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5958 (__v8hi) _mm_undefined_si128 (),
5959 (__mmask8) -1);
5960}
5961
5962static __inline__ __m128i __DEFAULT_FN_ATTRS
5963_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
5964{
5965 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5966 (__v8hi) __O, __M);
5967}
5968
5969static __inline__ __m128i __DEFAULT_FN_ATTRS
5970_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
5971{
5972 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
5973 (__v8hi) _mm_setzero_si128 (),
5974 __M);
5975}
5976
5977static __inline__ void __DEFAULT_FN_ATTRS
5978_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
5979{
5980 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
5981}
5982
Michael Zuckermand8715312016-04-14 06:48:09 +00005983static __inline__ __m128i __DEFAULT_FN_ATTRS
5984_mm512_cvtusepi32_epi8 (__m512i __A)
5985{
5986 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5987 (__v16qi) _mm_undefined_si128 (),
5988 (__mmask16) -1);
5989}
5990
5991static __inline__ __m128i __DEFAULT_FN_ATTRS
5992_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
5993{
5994 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
5995 (__v16qi) __O,
5996 __M);
5997}
5998
5999static __inline__ __m128i __DEFAULT_FN_ATTRS
6000_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
6001{
6002 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
6003 (__v16qi) _mm_setzero_si128 (),
6004 __M);
6005}
6006
6007static __inline__ void __DEFAULT_FN_ATTRS
6008_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6009{
6010 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6011}
6012
6013static __inline__ __m256i __DEFAULT_FN_ATTRS
6014_mm512_cvtusepi32_epi16 (__m512i __A)
6015{
6016 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6017 (__v16hi) _mm256_undefined_si256 (),
6018 (__mmask16) -1);
6019}
6020
6021static __inline__ __m256i __DEFAULT_FN_ATTRS
6022_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6023{
6024 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6025 (__v16hi) __O,
6026 __M);
6027}
6028
6029static __inline__ __m256i __DEFAULT_FN_ATTRS
6030_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
6031{
6032 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
6033 (__v16hi) _mm256_setzero_si256 (),
6034 __M);
6035}
6036
6037static __inline__ void __DEFAULT_FN_ATTRS
6038_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
6039{
6040 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
6041}
6042
6043static __inline__ __m128i __DEFAULT_FN_ATTRS
6044_mm512_cvtusepi64_epi8 (__m512i __A)
6045{
6046 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6047 (__v16qi) _mm_undefined_si128 (),
6048 (__mmask8) -1);
6049}
6050
6051static __inline__ __m128i __DEFAULT_FN_ATTRS
6052_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6053{
6054 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6055 (__v16qi) __O,
6056 __M);
6057}
6058
6059static __inline__ __m128i __DEFAULT_FN_ATTRS
6060_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
6061{
6062 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
6063 (__v16qi) _mm_setzero_si128 (),
6064 __M);
6065}
6066
6067static __inline__ void __DEFAULT_FN_ATTRS
6068_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6069{
6070 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6071}
6072
6073static __inline__ __m256i __DEFAULT_FN_ATTRS
6074_mm512_cvtusepi64_epi32 (__m512i __A)
6075{
6076 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6077 (__v8si) _mm256_undefined_si256 (),
6078 (__mmask8) -1);
6079}
6080
6081static __inline__ __m256i __DEFAULT_FN_ATTRS
6082_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6083{
6084 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6085 (__v8si) __O, __M);
6086}
6087
6088static __inline__ __m256i __DEFAULT_FN_ATTRS
6089_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
6090{
6091 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
6092 (__v8si) _mm256_setzero_si256 (),
6093 __M);
6094}
6095
6096static __inline__ void __DEFAULT_FN_ATTRS
6097_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
6098{
6099 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
6100}
6101
6102static __inline__ __m128i __DEFAULT_FN_ATTRS
6103_mm512_cvtusepi64_epi16 (__m512i __A)
6104{
6105 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6106 (__v8hi) _mm_undefined_si128 (),
6107 (__mmask8) -1);
6108}
6109
6110static __inline__ __m128i __DEFAULT_FN_ATTRS
6111_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6112{
6113 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6114 (__v8hi) __O, __M);
6115}
6116
6117static __inline__ __m128i __DEFAULT_FN_ATTRS
6118_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
6119{
6120 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
6121 (__v8hi) _mm_setzero_si128 (),
6122 __M);
6123}
6124
6125static __inline__ void __DEFAULT_FN_ATTRS
6126_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
6127{
6128 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
6129}
6130
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00006131static __inline__ __m128i __DEFAULT_FN_ATTRS
6132_mm512_cvtepi32_epi8 (__m512i __A)
6133{
6134 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6135 (__v16qi) _mm_undefined_si128 (),
6136 (__mmask16) -1);
6137}
6138
6139static __inline__ __m128i __DEFAULT_FN_ATTRS
6140_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
6141{
6142 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6143 (__v16qi) __O, __M);
6144}
6145
6146static __inline__ __m128i __DEFAULT_FN_ATTRS
6147_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
6148{
6149 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
6150 (__v16qi) _mm_setzero_si128 (),
6151 __M);
6152}
6153
6154static __inline__ void __DEFAULT_FN_ATTRS
6155_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
6156{
6157 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
6158}
6159
6160static __inline__ __m256i __DEFAULT_FN_ATTRS
6161_mm512_cvtepi32_epi16 (__m512i __A)
6162{
6163 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6164 (__v16hi) _mm256_undefined_si256 (),
6165 (__mmask16) -1);
6166}
6167
6168static __inline__ __m256i __DEFAULT_FN_ATTRS
6169_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
6170{
6171 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6172 (__v16hi) __O, __M);
6173}
6174
6175static __inline__ __m256i __DEFAULT_FN_ATTRS
6176_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
6177{
6178 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
6179 (__v16hi) _mm256_setzero_si256 (),
6180 __M);
6181}
6182
6183static __inline__ void __DEFAULT_FN_ATTRS
6184_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
6185{
6186 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
6187}
6188
6189static __inline__ __m128i __DEFAULT_FN_ATTRS
6190_mm512_cvtepi64_epi8 (__m512i __A)
6191{
6192 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6193 (__v16qi) _mm_undefined_si128 (),
6194 (__mmask8) -1);
6195}
6196
6197static __inline__ __m128i __DEFAULT_FN_ATTRS
6198_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
6199{
6200 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6201 (__v16qi) __O, __M);
6202}
6203
6204static __inline__ __m128i __DEFAULT_FN_ATTRS
6205_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
6206{
6207 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
6208 (__v16qi) _mm_setzero_si128 (),
6209 __M);
6210}
6211
6212static __inline__ void __DEFAULT_FN_ATTRS
6213_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
6214{
6215 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
6216}
6217
6218static __inline__ __m256i __DEFAULT_FN_ATTRS
6219_mm512_cvtepi64_epi32 (__m512i __A)
6220{
6221 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6222 (__v8si) _mm256_undefined_si256 (),
6223 (__mmask8) -1);
6224}
6225
6226static __inline__ __m256i __DEFAULT_FN_ATTRS
6227_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
6228{
6229 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6230 (__v8si) __O, __M);
6231}
6232
6233static __inline__ __m256i __DEFAULT_FN_ATTRS
6234_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
6235{
6236 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
6237 (__v8si) _mm256_setzero_si256 (),
6238 __M);
6239}
6240
6241static __inline__ void __DEFAULT_FN_ATTRS
6242_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
6243{
6244 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
6245}
6246
6247static __inline__ __m128i __DEFAULT_FN_ATTRS
6248_mm512_cvtepi64_epi16 (__m512i __A)
6249{
6250 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
6251 (__v8hi) _mm_undefined_si128 (),
6252 (__mmask8) -1);
6253}
6254
6255static __inline__ __m128i __DEFAULT_FN_ATTRS
6256_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
6257{
6258 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
6259 (__v8hi) __O, __M);
6260}
6261
6262static __inline__ __m128i __DEFAULT_FN_ATTRS
6263_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
6264{
6265 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
6266 (__v8hi) _mm_setzero_si128 (),
6267 __M);
6268}
6269
6270static __inline__ void __DEFAULT_FN_ATTRS
6271_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
6272{
6273 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
6274}
6275
Michael Zuckermanef2979a2016-04-19 15:18:23 +00006276#define _mm512_extracti32x4_epi32( __A, __imm) __extension__ ({ \
6277__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
6278 (__imm),\
6279 (__v4si) _mm_undefined_si128 (),\
6280 (__mmask8) -1);\
6281})
6282
6283#define _mm512_mask_extracti32x4_epi32( __W, __U, __A, __imm) __extension__ ({ \
6284__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
6285 ( __imm),\
6286 (__v4si)( __W),\
6287 (__mmask8)( __U));\
6288})
6289
6290#define _mm512_maskz_extracti32x4_epi32( __U, __A, __imm) __extension__ ({ \
6291__builtin_ia32_extracti32x4_mask ((__v16si)( __A),\
6292 ( __imm),\
6293 (__v4si) _mm_setzero_si128 (),\
6294 (__mmask8)( __U));\
6295})
6296
6297#define _mm512_extracti64x4_epi64( __A, __imm) __extension__ ({ \
6298__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
6299 ( __imm),\
6300 (__v4di) _mm256_undefined_si256 (),\
6301 (__mmask8) -1);\
6302})
6303
6304#define _mm512_mask_extracti64x4_epi64( __W, __U, __A, __imm) __extension__ ({ \
6305__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
6306 ( __imm),\
6307 (__v4di)( __W),\
6308 (__mmask8)( __U));\
6309})
6310
6311#define _mm512_maskz_extracti64x4_epi64( __U, __A, __imm) __extension__ ({ \
6312__builtin_ia32_extracti64x4_mask ((__v8di)( __A),\
6313 ( __imm),\
6314 (__v4di) _mm256_setzero_si256 (),\
6315 (__mmask8)( __U));\
6316})
6317
6318#define _mm512_insertf64x4( __A, __B, __imm) __extension__ ({ \
6319__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
6320 (__v4df)( __B),\
6321 ( __imm),\
6322 (__v8df) _mm512_undefined_pd (),\
6323 (__mmask8) -1);\
6324})
6325
6326#define _mm512_mask_insertf64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6327__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
6328 (__v4df)( __B),\
6329 ( __imm),\
6330 (__v8df)( __W),\
6331 (__mmask8)( __U));\
6332})
6333
6334#define _mm512_maskz_insertf64x4( __U, __A, __B, __imm) __extension__ ({ \
6335__builtin_ia32_insertf64x4_mask ((__v8df)( __A),\
6336 (__v4df)( __B),\
6337 ( __imm),\
6338 (__v8df) _mm512_setzero_pd (),\
6339 (__mmask8)( __U));\
6340})
6341
6342#define _mm512_inserti64x4( __A, __B, __imm) __extension__ ({ \
6343__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
6344 (__v4di)( __B),\
6345 ( __imm),\
6346 (__v8di) _mm512_setzero_si512 (),\
6347 (__mmask8) -1);\
6348})
6349
6350#define _mm512_mask_inserti64x4( __W, __U, __A, __B, __imm) __extension__ ({ \
6351__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
6352 (__v4di)( __B),\
6353 ( __imm),\
6354 (__v8di)( __W),\
6355 (__mmask8)( __U));\
6356})
6357
6358#define _mm512_maskz_inserti64x4( __U, __A, __B, __imm) __extension__ ({ \
6359__builtin_ia32_inserti64x4_mask ((__v8di)( __A),\
6360 (__v4di)( __B),\
6361 ( __imm),\
6362 (__v8di) _mm512_setzero_si512 (),\
6363 (__mmask8)( __U));\
6364})
6365
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00006366#define _mm512_getmant_round_pd( __A, __B, __C, __R) __extension__ ({ \
6367__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6368 (__C << 2) |( __B),\
6369 (__v8df) _mm512_undefined_pd (),\
6370 (__mmask8) -1,( __R));\
6371})
6372
6373#define _mm512_mask_getmant_round_pd( __W, __U, __A, __B, __C, __R) __extension__ ({ \
6374__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6375 (__C << 2) |( __B),\
6376 (__v8df)( __W),(__mmask8)( __U),\
6377 ( __R));\
6378})
6379
6380#define _mm512_maskz_getmant_round_pd( __U, __A, __B, __C, __R) __extension__ ({ \
6381__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6382 (__C << 2) |( __B),\
6383 (__v8df) _mm512_setzero_pd (),\
6384 (__mmask8)( __U),( __R));\
6385})
6386
6387#define _mm512_getmant_pd( __A, __B, __C) __extension__ ({ \
6388__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6389 (__C << 2) |( __B),\
6390 (__v8df) _mm512_setzero_pd (),\
6391 (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);\
6392})
6393
6394#define _mm512_mask_getmant_pd( __W, __U, __A, __B, __C) __extension__ ({ \
6395__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6396 (__C << 2) |( __B),\
6397 (__v8df)( __W), (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
6398})
6399
6400#define _mm512_maskz_getmant_pd( __U, __A, __B, __C) __extension__ ({ \
6401__builtin_ia32_getmantpd512_mask ((__v8df)( __A),\
6402 (__C << 2) |( __B),\
6403 (__v8df) _mm512_setzero_pd (),\
6404 (__mmask8)( __U), _MM_FROUND_CUR_DIRECTION);\
6405})
6406
6407#define _mm512_getmant_round_ps( __A, __B, __C, __R) __extension__ ({ \
6408__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6409 (__C << 2) |( __B),\
6410 (__v16sf) _mm512_undefined_ps (),\
6411 (__mmask16) -1,( __R));\
6412})
6413
6414#define _mm512_mask_getmant_round_ps( __W, __U, __A, __B, __C, __R) __extension__ ({ \
6415__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6416 (__C << 2) |( __B),\
6417 (__v16sf)( __W),(__mmask16)( __U),\
6418 ( __R));\
6419})
6420
6421#define _mm512_maskz_getmant_round_ps( __U, __A, __B, __C, __R) __extension__ ({ \
6422__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6423 (__C << 2) |( __B),\
6424 (__v16sf) _mm512_setzero_ps (),\
6425 ( __U),( __R));\
6426})
6427
6428#define _mm512_getmant_ps( __A, __B, __C) __extension__ ({ \
6429__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6430 (__C << 2) |( __B),\
6431 (__v16sf) _mm512_undefined_ps (),\
6432 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);\
6433})
6434
6435#define _mm512_mask_getmant_ps( __W, __U, __A, __B, __C) __extension__ ({ \
6436__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6437 (__C << 2) |( __B),\
6438 (__v16sf)( __W),(__mmask16) ( __U),\
6439 _MM_FROUND_CUR_DIRECTION);\
6440})
6441
6442#define _mm512_maskz_getmant_ps( __U, __A, __B, __C) __extension__ ({ \
6443__builtin_ia32_getmantps512_mask ((__v16sf)( __A),\
6444 (__C << 2) |( __B),\
6445 (__v16sf) _mm512_setzero_ps (),\
6446 (__mmask16)( __U),_MM_FROUND_CUR_DIRECTION);\
6447})
6448
6449#define _mm512_getexp_round_pd( __A, __R) __extension__ ({ \
6450__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
6451 (__v8df) _mm512_undefined_pd (),\
6452 (__mmask8) -1,( __R));\
6453})
6454
6455#define _mm512_mask_getexp_round_pd( __W, __U, __A, __R) __extension__ ({ \
6456__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
6457 (__v8df)( __W),\
6458 (__mmask8)( __U),( __R));\
6459})
6460
6461#define _mm512_maskz_getexp_round_pd( __U, __A, __R) __extension__ ({ \
6462__builtin_ia32_getexppd512_mask ((__v8df)( __A),\
6463 (__v8df) _mm512_setzero_pd (),\
6464 (__mmask8)( __U),( __R));\
6465})
6466
6467static __inline__ __m512d __DEFAULT_FN_ATTRS
6468_mm512_getexp_pd (__m512d __A)
6469{
6470 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
6471 (__v8df) _mm512_undefined_pd (),
6472 (__mmask8) -1,
6473 _MM_FROUND_CUR_DIRECTION);
6474}
6475
6476static __inline__ __m512d __DEFAULT_FN_ATTRS
6477_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
6478{
6479 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
6480 (__v8df) __W,
6481 (__mmask8) __U,
6482 _MM_FROUND_CUR_DIRECTION);
6483}
6484
6485static __inline__ __m512d __DEFAULT_FN_ATTRS
6486_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
6487{
6488 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
6489 (__v8df) _mm512_setzero_pd (),
6490 (__mmask8) __U,
6491 _MM_FROUND_CUR_DIRECTION);
6492}
6493
6494#define _mm512_getexp_round_ps( __A, __R) __extension__ ({ \
6495__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
6496 (__v16sf) _mm512_undefined_ps (),\
6497 (__mmask16) -1,( __R));\
6498})
6499
6500#define _mm512_mask_getexp_round_ps( __W, __U, __A, __R) __extension__ ({ \
6501__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
6502 (__v16sf)( __W),\
6503 (__mmask16)( __U),( __R));\
6504})
6505
6506#define _mm512_maskz_getexp_round_ps( __U, __A, __R) __extension__ ({ \
6507__builtin_ia32_getexpps512_mask ((__v16sf)( __A),\
6508 (__v16sf) _mm512_setzero_ps (),\
6509 (__mmask16)( __U),( __R));\
6510})
6511
6512static __inline__ __m512 __DEFAULT_FN_ATTRS
6513_mm512_getexp_ps (__m512 __A)
6514{
6515 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
6516 (__v16sf) _mm512_undefined_ps (),
6517 (__mmask16) -1,
6518 _MM_FROUND_CUR_DIRECTION);
6519}
6520
6521static __inline__ __m512 __DEFAULT_FN_ATTRS
6522_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
6523{
6524 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
6525 (__v16sf) __W,
6526 (__mmask16) __U,
6527 _MM_FROUND_CUR_DIRECTION);
6528}
6529
6530static __inline__ __m512 __DEFAULT_FN_ATTRS
6531_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
6532{
6533 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
6534 (__v16sf) _mm512_setzero_ps (),
6535 (__mmask16) __U,
6536 _MM_FROUND_CUR_DIRECTION);
6537}
6538
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00006539#define _mm512_i64gather_ps( __index, __addr, __scale) __extension__ ({ \
6540__builtin_ia32_gatherdiv16sf ((__v8sf) _mm256_undefined_ps (),\
6541 __addr, (__v8di) __index, (__mmask8) -1, __scale);\
6542})
6543
6544#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
6545 __addr, __scale) __extension__({\
6546__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
6547 __addr,(__v8di) __index, __mask, __scale);\
6548})
6549
6550#define _mm512_i64gather_epi32(__index, __addr, __scale) __extension__ ({\
6551__builtin_ia32_gatherdiv16si ((__v8si) _mm256_undefined_ps (),\
6552 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
6553})
6554
6555#define _mm512_mask_i64gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6556__builtin_ia32_gatherdiv16si ((__v8si) __v1_old,\
6557 __addr, (__v8di) __index, __mask , __scale);\
6558})
6559
6560#define _mm512_i64gather_pd(__index, __addr, __scale) __extension__ ({\
6561__builtin_ia32_gatherdiv8df ((__v8df) _mm512_undefined_pd(),\
6562 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
6563})
6564
6565#define _mm512_mask_i64gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6566__builtin_ia32_gatherdiv8df ((__v8df) __v1_old,\
6567 __addr, (__v8di) __index, __mask , __scale);\
6568})
6569
6570#define _mm512_i64gather_epi64(__index, __addr, __scale) __extension__ ({\
6571__builtin_ia32_gatherdiv8di ((__v8di) _mm512_undefined_pd(),\
6572 __addr, (__v8di) __index, (__mmask8) -1 , __scale);\
6573})
6574
6575#define _mm512_mask_i64gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6576__builtin_ia32_gatherdiv8di ((__v8di) __v1_old,\
6577 __addr, (__v8di) __index, __mask , __scale);\
6578})
6579
6580#define _mm512_i32gather_ps(__index, __addr, __scale) __extension__ ({\
6581__builtin_ia32_gathersiv16sf ((__v16sf) _mm512_undefined_ps(),\
6582 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
6583})
6584
6585#define _mm512_mask_i32gather_ps( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6586__builtin_ia32_gathersiv16sf ((__v16sf) __v1_old,\
6587 __addr, (__v16si) __index, __mask , __scale);\
6588})
6589
6590#define _mm512_i32gather_epi32(__index, __addr, __scale) __extension__ ({\
6591__builtin_ia32_gathersiv16si ((__v16sf) _mm512_undefined_epi32(),\
6592 __addr, (__v16si) __index, (__mmask8) -1 , __scale);\
6593})
6594
6595#define _mm512_mask_i32gather_epi32( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6596__builtin_ia32_gathersiv16si ((__v16sf) __v1_old,\
6597 __addr, (__v16si) __index, __mask , __scale);\
6598})
6599
6600#define _mm512_i32gather_pd(__index, __addr, __scale) __extension__ ({\
6601__builtin_ia32_gathersiv8df ((__v8df) _mm512_undefined_pd(),\
6602 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
6603})
6604
6605#define _mm512_mask_i32gather_pd( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6606__builtin_ia32_gathersiv8df ((__v8df) __v1_old,\
6607 __addr, (__v8si) __index, __mask , __scale);\
6608})
6609
6610#define _mm512_i32gather_epi64(__index, __addr, __scale) __extension__ ({\
6611__builtin_ia32_gathersiv8di ((__v8di) _mm512_undefined_epi32(),\
6612 __addr, (__v8si) __index, (__mmask8) -1 , __scale);\
6613})
6614
6615#define _mm512_mask_i32gather_epi64( __v1_old, __mask, __index, __addr, __scale) __extension__ ({\
6616__builtin_ia32_gathersiv8di ((__v8di) __v1_old,\
6617 __addr, (__v8si) __index, __mask , __scale);\
6618})
6619
Michael Kupersteine45af542015-06-30 13:36:19 +00006620#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00006621
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00006622#endif // __AVX512FINTRIN_H