blob: 4d13fbfa586f102b5342407aa08ac4c90fbcffb1 [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
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +000030typedef char __v64qi __attribute__((__vector_size__(64)));
31typedef short __v32hi __attribute__((__vector_size__(64)));
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +000032typedef double __v8df __attribute__((__vector_size__(64)));
33typedef float __v16sf __attribute__((__vector_size__(64)));
34typedef long long __v8di __attribute__((__vector_size__(64)));
35typedef int __v16si __attribute__((__vector_size__(64)));
36
37typedef float __m512 __attribute__((__vector_size__(64)));
38typedef double __m512d __attribute__((__vector_size__(64)));
39typedef long long __m512i __attribute__((__vector_size__(64)));
40
41typedef unsigned char __mmask8;
42typedef unsigned short __mmask16;
43
44/* Rounding mode macros. */
45#define _MM_FROUND_TO_NEAREST_INT 0x00
46#define _MM_FROUND_TO_NEG_INF 0x01
47#define _MM_FROUND_TO_POS_INF 0x02
48#define _MM_FROUND_TO_ZERO 0x03
49#define _MM_FROUND_CUR_DIRECTION 0x04
50
Michael Zuckermandef78752016-03-28 12:23:09 +000051typedef enum
52{
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +000053 _MM_PERM_AAAA = 0x00, _MM_PERM_AAAB = 0x01, _MM_PERM_AAAC = 0x02,
54 _MM_PERM_AAAD = 0x03, _MM_PERM_AABA = 0x04, _MM_PERM_AABB = 0x05,
55 _MM_PERM_AABC = 0x06, _MM_PERM_AABD = 0x07, _MM_PERM_AACA = 0x08,
56 _MM_PERM_AACB = 0x09, _MM_PERM_AACC = 0x0A, _MM_PERM_AACD = 0x0B,
57 _MM_PERM_AADA = 0x0C, _MM_PERM_AADB = 0x0D, _MM_PERM_AADC = 0x0E,
58 _MM_PERM_AADD = 0x0F, _MM_PERM_ABAA = 0x10, _MM_PERM_ABAB = 0x11,
59 _MM_PERM_ABAC = 0x12, _MM_PERM_ABAD = 0x13, _MM_PERM_ABBA = 0x14,
60 _MM_PERM_ABBB = 0x15, _MM_PERM_ABBC = 0x16, _MM_PERM_ABBD = 0x17,
61 _MM_PERM_ABCA = 0x18, _MM_PERM_ABCB = 0x19, _MM_PERM_ABCC = 0x1A,
62 _MM_PERM_ABCD = 0x1B, _MM_PERM_ABDA = 0x1C, _MM_PERM_ABDB = 0x1D,
63 _MM_PERM_ABDC = 0x1E, _MM_PERM_ABDD = 0x1F, _MM_PERM_ACAA = 0x20,
64 _MM_PERM_ACAB = 0x21, _MM_PERM_ACAC = 0x22, _MM_PERM_ACAD = 0x23,
65 _MM_PERM_ACBA = 0x24, _MM_PERM_ACBB = 0x25, _MM_PERM_ACBC = 0x26,
66 _MM_PERM_ACBD = 0x27, _MM_PERM_ACCA = 0x28, _MM_PERM_ACCB = 0x29,
67 _MM_PERM_ACCC = 0x2A, _MM_PERM_ACCD = 0x2B, _MM_PERM_ACDA = 0x2C,
68 _MM_PERM_ACDB = 0x2D, _MM_PERM_ACDC = 0x2E, _MM_PERM_ACDD = 0x2F,
69 _MM_PERM_ADAA = 0x30, _MM_PERM_ADAB = 0x31, _MM_PERM_ADAC = 0x32,
70 _MM_PERM_ADAD = 0x33, _MM_PERM_ADBA = 0x34, _MM_PERM_ADBB = 0x35,
71 _MM_PERM_ADBC = 0x36, _MM_PERM_ADBD = 0x37, _MM_PERM_ADCA = 0x38,
72 _MM_PERM_ADCB = 0x39, _MM_PERM_ADCC = 0x3A, _MM_PERM_ADCD = 0x3B,
73 _MM_PERM_ADDA = 0x3C, _MM_PERM_ADDB = 0x3D, _MM_PERM_ADDC = 0x3E,
74 _MM_PERM_ADDD = 0x3F, _MM_PERM_BAAA = 0x40, _MM_PERM_BAAB = 0x41,
75 _MM_PERM_BAAC = 0x42, _MM_PERM_BAAD = 0x43, _MM_PERM_BABA = 0x44,
76 _MM_PERM_BABB = 0x45, _MM_PERM_BABC = 0x46, _MM_PERM_BABD = 0x47,
77 _MM_PERM_BACA = 0x48, _MM_PERM_BACB = 0x49, _MM_PERM_BACC = 0x4A,
78 _MM_PERM_BACD = 0x4B, _MM_PERM_BADA = 0x4C, _MM_PERM_BADB = 0x4D,
79 _MM_PERM_BADC = 0x4E, _MM_PERM_BADD = 0x4F, _MM_PERM_BBAA = 0x50,
80 _MM_PERM_BBAB = 0x51, _MM_PERM_BBAC = 0x52, _MM_PERM_BBAD = 0x53,
81 _MM_PERM_BBBA = 0x54, _MM_PERM_BBBB = 0x55, _MM_PERM_BBBC = 0x56,
82 _MM_PERM_BBBD = 0x57, _MM_PERM_BBCA = 0x58, _MM_PERM_BBCB = 0x59,
83 _MM_PERM_BBCC = 0x5A, _MM_PERM_BBCD = 0x5B, _MM_PERM_BBDA = 0x5C,
84 _MM_PERM_BBDB = 0x5D, _MM_PERM_BBDC = 0x5E, _MM_PERM_BBDD = 0x5F,
85 _MM_PERM_BCAA = 0x60, _MM_PERM_BCAB = 0x61, _MM_PERM_BCAC = 0x62,
86 _MM_PERM_BCAD = 0x63, _MM_PERM_BCBA = 0x64, _MM_PERM_BCBB = 0x65,
87 _MM_PERM_BCBC = 0x66, _MM_PERM_BCBD = 0x67, _MM_PERM_BCCA = 0x68,
88 _MM_PERM_BCCB = 0x69, _MM_PERM_BCCC = 0x6A, _MM_PERM_BCCD = 0x6B,
89 _MM_PERM_BCDA = 0x6C, _MM_PERM_BCDB = 0x6D, _MM_PERM_BCDC = 0x6E,
90 _MM_PERM_BCDD = 0x6F, _MM_PERM_BDAA = 0x70, _MM_PERM_BDAB = 0x71,
91 _MM_PERM_BDAC = 0x72, _MM_PERM_BDAD = 0x73, _MM_PERM_BDBA = 0x74,
92 _MM_PERM_BDBB = 0x75, _MM_PERM_BDBC = 0x76, _MM_PERM_BDBD = 0x77,
93 _MM_PERM_BDCA = 0x78, _MM_PERM_BDCB = 0x79, _MM_PERM_BDCC = 0x7A,
94 _MM_PERM_BDCD = 0x7B, _MM_PERM_BDDA = 0x7C, _MM_PERM_BDDB = 0x7D,
95 _MM_PERM_BDDC = 0x7E, _MM_PERM_BDDD = 0x7F, _MM_PERM_CAAA = 0x80,
96 _MM_PERM_CAAB = 0x81, _MM_PERM_CAAC = 0x82, _MM_PERM_CAAD = 0x83,
97 _MM_PERM_CABA = 0x84, _MM_PERM_CABB = 0x85, _MM_PERM_CABC = 0x86,
98 _MM_PERM_CABD = 0x87, _MM_PERM_CACA = 0x88, _MM_PERM_CACB = 0x89,
99 _MM_PERM_CACC = 0x8A, _MM_PERM_CACD = 0x8B, _MM_PERM_CADA = 0x8C,
100 _MM_PERM_CADB = 0x8D, _MM_PERM_CADC = 0x8E, _MM_PERM_CADD = 0x8F,
101 _MM_PERM_CBAA = 0x90, _MM_PERM_CBAB = 0x91, _MM_PERM_CBAC = 0x92,
102 _MM_PERM_CBAD = 0x93, _MM_PERM_CBBA = 0x94, _MM_PERM_CBBB = 0x95,
103 _MM_PERM_CBBC = 0x96, _MM_PERM_CBBD = 0x97, _MM_PERM_CBCA = 0x98,
104 _MM_PERM_CBCB = 0x99, _MM_PERM_CBCC = 0x9A, _MM_PERM_CBCD = 0x9B,
105 _MM_PERM_CBDA = 0x9C, _MM_PERM_CBDB = 0x9D, _MM_PERM_CBDC = 0x9E,
106 _MM_PERM_CBDD = 0x9F, _MM_PERM_CCAA = 0xA0, _MM_PERM_CCAB = 0xA1,
107 _MM_PERM_CCAC = 0xA2, _MM_PERM_CCAD = 0xA3, _MM_PERM_CCBA = 0xA4,
108 _MM_PERM_CCBB = 0xA5, _MM_PERM_CCBC = 0xA6, _MM_PERM_CCBD = 0xA7,
109 _MM_PERM_CCCA = 0xA8, _MM_PERM_CCCB = 0xA9, _MM_PERM_CCCC = 0xAA,
110 _MM_PERM_CCCD = 0xAB, _MM_PERM_CCDA = 0xAC, _MM_PERM_CCDB = 0xAD,
111 _MM_PERM_CCDC = 0xAE, _MM_PERM_CCDD = 0xAF, _MM_PERM_CDAA = 0xB0,
112 _MM_PERM_CDAB = 0xB1, _MM_PERM_CDAC = 0xB2, _MM_PERM_CDAD = 0xB3,
113 _MM_PERM_CDBA = 0xB4, _MM_PERM_CDBB = 0xB5, _MM_PERM_CDBC = 0xB6,
114 _MM_PERM_CDBD = 0xB7, _MM_PERM_CDCA = 0xB8, _MM_PERM_CDCB = 0xB9,
115 _MM_PERM_CDCC = 0xBA, _MM_PERM_CDCD = 0xBB, _MM_PERM_CDDA = 0xBC,
116 _MM_PERM_CDDB = 0xBD, _MM_PERM_CDDC = 0xBE, _MM_PERM_CDDD = 0xBF,
117 _MM_PERM_DAAA = 0xC0, _MM_PERM_DAAB = 0xC1, _MM_PERM_DAAC = 0xC2,
118 _MM_PERM_DAAD = 0xC3, _MM_PERM_DABA = 0xC4, _MM_PERM_DABB = 0xC5,
119 _MM_PERM_DABC = 0xC6, _MM_PERM_DABD = 0xC7, _MM_PERM_DACA = 0xC8,
120 _MM_PERM_DACB = 0xC9, _MM_PERM_DACC = 0xCA, _MM_PERM_DACD = 0xCB,
121 _MM_PERM_DADA = 0xCC, _MM_PERM_DADB = 0xCD, _MM_PERM_DADC = 0xCE,
122 _MM_PERM_DADD = 0xCF, _MM_PERM_DBAA = 0xD0, _MM_PERM_DBAB = 0xD1,
123 _MM_PERM_DBAC = 0xD2, _MM_PERM_DBAD = 0xD3, _MM_PERM_DBBA = 0xD4,
124 _MM_PERM_DBBB = 0xD5, _MM_PERM_DBBC = 0xD6, _MM_PERM_DBBD = 0xD7,
125 _MM_PERM_DBCA = 0xD8, _MM_PERM_DBCB = 0xD9, _MM_PERM_DBCC = 0xDA,
126 _MM_PERM_DBCD = 0xDB, _MM_PERM_DBDA = 0xDC, _MM_PERM_DBDB = 0xDD,
127 _MM_PERM_DBDC = 0xDE, _MM_PERM_DBDD = 0xDF, _MM_PERM_DCAA = 0xE0,
128 _MM_PERM_DCAB = 0xE1, _MM_PERM_DCAC = 0xE2, _MM_PERM_DCAD = 0xE3,
129 _MM_PERM_DCBA = 0xE4, _MM_PERM_DCBB = 0xE5, _MM_PERM_DCBC = 0xE6,
130 _MM_PERM_DCBD = 0xE7, _MM_PERM_DCCA = 0xE8, _MM_PERM_DCCB = 0xE9,
131 _MM_PERM_DCCC = 0xEA, _MM_PERM_DCCD = 0xEB, _MM_PERM_DCDA = 0xEC,
132 _MM_PERM_DCDB = 0xED, _MM_PERM_DCDC = 0xEE, _MM_PERM_DCDD = 0xEF,
133 _MM_PERM_DDAA = 0xF0, _MM_PERM_DDAB = 0xF1, _MM_PERM_DDAC = 0xF2,
134 _MM_PERM_DDAD = 0xF3, _MM_PERM_DDBA = 0xF4, _MM_PERM_DDBB = 0xF5,
135 _MM_PERM_DDBC = 0xF6, _MM_PERM_DDBD = 0xF7, _MM_PERM_DDCA = 0xF8,
136 _MM_PERM_DDCB = 0xF9, _MM_PERM_DDCC = 0xFA, _MM_PERM_DDCD = 0xFB,
137 _MM_PERM_DDDA = 0xFC, _MM_PERM_DDDB = 0xFD, _MM_PERM_DDDC = 0xFE,
138 _MM_PERM_DDDD = 0xFF
139} _MM_PERM_ENUM;
140
141typedef enum
142{
Michael Zuckermandef78752016-03-28 12:23:09 +0000143 _MM_MANT_NORM_1_2, /* interval [1, 2) */
144 _MM_MANT_NORM_p5_2, /* interval [0.5, 2) */
145 _MM_MANT_NORM_p5_1, /* interval [0.5, 1) */
146 _MM_MANT_NORM_p75_1p5 /* interval [0.75, 1.5) */
147} _MM_MANTISSA_NORM_ENUM;
148
149typedef enum
150{
151 _MM_MANT_SIGN_src, /* sign = sign(SRC) */
152 _MM_MANT_SIGN_zero, /* sign = 0 */
153 _MM_MANT_SIGN_nan /* DEST = NaN if sign(SRC) = 1 */
154} _MM_MANTISSA_SIGN_ENUM;
155
Eric Christopher4d1851682015-06-17 07:09:20 +0000156/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +0000157#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Eric Christopher4d1851682015-06-17 07:09:20 +0000158
Adam Nemet0d5bb552014-07-28 17:14:40 +0000159/* Create vectors with repeated elements */
160
Michael Kupersteine45af542015-06-30 13:36:19 +0000161static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000162_mm512_setzero_si512(void)
163{
164 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
165}
166
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000167static __inline__ __m512d __DEFAULT_FN_ATTRS
168_mm512_undefined_pd()
169{
170 return (__m512d)__builtin_ia32_undef512();
171}
172
173static __inline__ __m512 __DEFAULT_FN_ATTRS
174_mm512_undefined()
175{
176 return (__m512)__builtin_ia32_undef512();
177}
178
179static __inline__ __m512 __DEFAULT_FN_ATTRS
180_mm512_undefined_ps()
181{
182 return (__m512)__builtin_ia32_undef512();
183}
184
185static __inline__ __m512i __DEFAULT_FN_ATTRS
186_mm512_undefined_epi32()
187{
188 return (__m512i)__builtin_ia32_undef512();
189}
Michael Zuckerman8c2900f2016-04-27 11:43:14 +0000190static __inline__ __m512i __DEFAULT_FN_ATTRS
191_mm512_broadcastd_epi32 (__m128i __A)
192{
193 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
194 (__v16si)
195 _mm512_undefined_epi32 (),
196 (__mmask16) -1);
197}
198
199static __inline__ __m512i __DEFAULT_FN_ATTRS
200_mm512_mask_broadcastd_epi32 (__m512i __O, __mmask16 __M, __m128i __A)
201{
202 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
203 (__v16si) __O, __M);
204}
205
206static __inline__ __m512i __DEFAULT_FN_ATTRS
207_mm512_maskz_broadcastd_epi32 (__mmask16 __M, __m128i __A)
208{
209 return (__m512i) __builtin_ia32_pbroadcastd512 ((__v4si) __A,
210 (__v16si)
211 _mm512_setzero_si512 (),
212 __M);
213}
214
215static __inline__ __m512i __DEFAULT_FN_ATTRS
216_mm512_broadcastq_epi64 (__m128i __A)
217{
218 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
219 (__v8di)
220 _mm512_undefined_pd (),
221 (__mmask8) -1);
222}
223
224static __inline__ __m512i __DEFAULT_FN_ATTRS
225_mm512_mask_broadcastq_epi64 (__m512i __O, __mmask8 __M, __m128i __A)
226{
227 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
228 (__v8di) __O, __M);
229}
230
231static __inline__ __m512i __DEFAULT_FN_ATTRS
232_mm512_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
233{
234 return (__m512i) __builtin_ia32_pbroadcastq512 ((__v2di) __A,
235 (__v8di)
236 _mm512_setzero_si512 (),
237 __M);
238}
Simon Pilgrim5aba9922015-08-26 21:17:12 +0000239
Michael Kupersteine45af542015-06-30 13:36:19 +0000240static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000241_mm512_maskz_set1_epi32(__mmask16 __M, int __A)
242{
243 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
244 (__v16si)
245 _mm512_setzero_si512 (),
246 __M);
247}
248
Michael Kupersteine45af542015-06-30 13:36:19 +0000249static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000250_mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
251{
252#ifdef __x86_64__
253 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
254 (__v8di)
255 _mm512_setzero_si512 (),
256 __M);
257#else
258 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
259 (__v8di)
260 _mm512_setzero_si512 (),
261 __M);
262#endif
263}
264
Michael Kupersteine45af542015-06-30 13:36:19 +0000265static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000266_mm512_setzero_ps(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000267{
268 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
269 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
270}
Michael Kupersteine45af542015-06-30 13:36:19 +0000271static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +0000272_mm512_setzero_pd(void)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000273{
274 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
275}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000276
Michael Kupersteine45af542015-06-30 13:36:19 +0000277static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000278_mm512_set1_ps(float __w)
279{
280 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
281 __w, __w, __w, __w, __w, __w, __w, __w };
282}
283
Michael Kupersteine45af542015-06-30 13:36:19 +0000284static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000285_mm512_set1_pd(double __w)
286{
287 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
288}
289
Michael Kupersteine45af542015-06-30 13:36:19 +0000290static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman6f08ceb2016-05-26 06:54:52 +0000291_mm512_set1_epi8(char __w)
292{
293 return (__m512i)(__v64qi){ __w, __w, __w, __w, __w, __w, __w, __w,
294 __w, __w, __w, __w, __w, __w, __w, __w,
295 __w, __w, __w, __w, __w, __w, __w, __w,
296 __w, __w, __w, __w, __w, __w, __w, __w,
297 __w, __w, __w, __w, __w, __w, __w, __w,
298 __w, __w, __w, __w, __w, __w, __w, __w,
299 __w, __w, __w, __w, __w, __w, __w, __w,
300 __w, __w, __w, __w, __w, __w, __w, __w };
301}
302
303static __inline __m512i __DEFAULT_FN_ATTRS
304_mm512_set1_epi16(short __w)
305{
306 return (__m512i)(__v32hi){ __w, __w, __w, __w, __w, __w, __w, __w,
307 __w, __w, __w, __w, __w, __w, __w, __w,
308 __w, __w, __w, __w, __w, __w, __w, __w,
309 __w, __w, __w, __w, __w, __w, __w, __w };
310}
311
312static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000313_mm512_set1_epi32(int __s)
314{
315 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
316 __s, __s, __s, __s, __s, __s, __s, __s };
317}
318
Michael Kupersteine45af542015-06-30 13:36:19 +0000319static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemetf42e7a22014-07-30 16:51:22 +0000320_mm512_set1_epi64(long long __d)
321{
322 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
323}
324
Michael Kupersteine45af542015-06-30 13:36:19 +0000325static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000326_mm512_broadcastss_ps(__m128 __X)
327{
328 float __f = __X[0];
329 return (__v16sf){ __f, __f, __f, __f,
330 __f, __f, __f, __f,
331 __f, __f, __f, __f,
332 __f, __f, __f, __f };
333}
334
Michael Kupersteine45af542015-06-30 13:36:19 +0000335static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet4abc07c2014-08-13 00:29:01 +0000336_mm512_broadcastsd_pd(__m128d __X)
337{
338 double __d = __X[0];
339 return (__v8df){ __d, __d, __d, __d,
340 __d, __d, __d, __d };
341}
342
Adam Nemetc871ff92014-07-30 16:51:24 +0000343/* Cast between vector types */
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000346_mm512_castpd256_pd512(__m256d __a)
347{
348 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
349}
350
Michael Kupersteine45af542015-06-30 13:36:19 +0000351static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000352_mm512_castps256_ps512(__m256 __a)
353{
354 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
355 -1, -1, -1, -1, -1, -1, -1, -1);
356}
357
Michael Kupersteine45af542015-06-30 13:36:19 +0000358static __inline __m128d __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000359_mm512_castpd512_pd128(__m512d __a)
360{
361 return __builtin_shufflevector(__a, __a, 0, 1);
362}
363
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000364static __inline __m256d __DEFAULT_FN_ATTRS
365_mm512_castpd512_pd256 (__m512d __A)
366{
367 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3);
368}
369
Michael Kupersteine45af542015-06-30 13:36:19 +0000370static __inline __m128 __DEFAULT_FN_ATTRS
Adam Nemetc871ff92014-07-30 16:51:24 +0000371_mm512_castps512_ps128(__m512 __a)
372{
373 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
374}
375
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000376static __inline __m256 __DEFAULT_FN_ATTRS
377_mm512_castps512_ps256 (__m512 __A)
378{
379 return __builtin_shufflevector(__A, __A, 0, 1, 2, 3, 4, 5, 6, 7);
380}
381
382static __inline __m512 __DEFAULT_FN_ATTRS
383_mm512_castpd_ps (__m512d __A)
384{
385 return (__m512) (__A);
386}
387
388static __inline __m512i __DEFAULT_FN_ATTRS
389_mm512_castpd_si512 (__m512d __A)
390{
391 return (__m512i) (__A);
392}
Michael Zuckermanc6677032016-05-03 14:26:52 +0000393
394static __inline__ __m512d __DEFAULT_FN_ATTRS
395_mm512_castpd128_pd512 (__m128d __A)
396{
397 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
398}
399
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000400static __inline __m512d __DEFAULT_FN_ATTRS
401_mm512_castps_pd (__m512 __A)
402{
403 return (__m512d) (__A);
404}
405
406static __inline __m512i __DEFAULT_FN_ATTRS
407_mm512_castps_si512 (__m512 __A)
408{
409 return (__m512i) (__A);
410}
411
Michael Zuckermanc6677032016-05-03 14:26:52 +0000412static __inline__ __m512 __DEFAULT_FN_ATTRS
413_mm512_castps128_ps512 (__m128 __A)
414{
415 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
416}
417
418static __inline__ __m512i __DEFAULT_FN_ATTRS
419_mm512_castsi128_si512 (__m128i __A)
420{
421 return __builtin_shufflevector( __A, __A, 0, 1, -1, -1, -1, -1, -1, -1);
422}
423
424static __inline__ __m512i __DEFAULT_FN_ATTRS
425_mm512_castsi256_si512 (__m256i __A)
426{
427 return __builtin_shufflevector( __A, __A, 0, 1, 2, 3, -1, -1, -1, -1);
428}
429
Michael Zuckermand5cc6cd2016-05-25 14:04:21 +0000430static __inline __m512 __DEFAULT_FN_ATTRS
431_mm512_castsi512_ps (__m512i __A)
432{
433 return (__m512) (__A);
434}
435
436static __inline __m512d __DEFAULT_FN_ATTRS
437_mm512_castsi512_pd (__m512i __A)
438{
439 return (__m512d) (__A);
440}
441
442static __inline __m128i __DEFAULT_FN_ATTRS
443_mm512_castsi512_si128 (__m512i __A)
444{
445 return (__m128i)__builtin_shufflevector(__A, __A , 0, 1);
446}
447
Michael Zuckerman22c47e62016-05-26 14:32:11 +0000448static __inline __m256i __DEFAULT_FN_ATTRS
449_mm512_castsi512_si256 (__m512i __A)
450{
451 return (__m256i)__builtin_shufflevector(__A, __A , 0, 1, 2, 3);
452}
453
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000454/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000456_mm512_and_epi32(__m512i __a, __m512i __b)
457{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000458 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000459}
460
Michael Kupersteine45af542015-06-30 13:36:19 +0000461static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000462_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
463{
464 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
465 (__v16si) __b,
466 (__v16si) __src,
467 (__mmask16) __k);
468}
Michael Kupersteine45af542015-06-30 13:36:19 +0000469static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000470_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
471{
472 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
473 (__v16si) __b,
474 (__v16si)
475 _mm512_setzero_si512 (),
476 (__mmask16) __k);
477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000480_mm512_and_epi64(__m512i __a, __m512i __b)
481{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000482 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000483}
484
Michael Kupersteine45af542015-06-30 13:36:19 +0000485static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000486_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
487{
488 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
489 (__v8di) __b,
490 (__v8di) __src,
491 (__mmask8) __k);
492}
Michael Kupersteine45af542015-06-30 13:36:19 +0000493static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000494_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
495{
496 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
497 (__v8di) __b,
498 (__v8di)
499 _mm512_setzero_si512 (),
500 (__mmask8) __k);
501}
502
Michael Kupersteine45af542015-06-30 13:36:19 +0000503static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000504_mm512_andnot_si512 (__m512i __A, __m512i __B)
505{
506 return (__m512i)(~(__A) & __B);
507}
508
509static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000510_mm512_andnot_epi32 (__m512i __A, __m512i __B)
511{
512 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
513 (__v16si) __B,
514 (__v16si)
515 _mm512_setzero_si512 (),
516 (__mmask16) -1);
517}
518
Michael Kupersteine45af542015-06-30 13:36:19 +0000519static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000520_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
521{
522 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
523 (__v16si) __B,
524 (__v16si) __W,
525 (__mmask16) __U);
526}
527
Michael Kupersteine45af542015-06-30 13:36:19 +0000528static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000529_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
530{
531 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
532 (__v16si) __B,
533 (__v16si)
534 _mm512_setzero_si512 (),
535 (__mmask16) __U);
536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000539_mm512_andnot_epi64 (__m512i __A, __m512i __B)
540{
541 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
542 (__v8di) __B,
543 (__v8di)
544 _mm512_setzero_si512 (),
545 (__mmask8) -1);
546}
547
Michael Kupersteine45af542015-06-30 13:36:19 +0000548static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000549_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
550{
551 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
552 (__v8di) __B,
553 (__v8di) __W, __U);
554}
555
Michael Kupersteine45af542015-06-30 13:36:19 +0000556static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000557_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
558{
559 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
560 (__v8di) __B,
561 (__v8di)
562 _mm512_setzero_pd (),
563 __U);
564}
Michael Kupersteine45af542015-06-30 13:36:19 +0000565static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000566_mm512_or_epi32(__m512i __a, __m512i __b)
567{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000568 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000569}
570
Michael Kupersteine45af542015-06-30 13:36:19 +0000571static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000572_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
573{
574 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
575 (__v16si) __b,
576 (__v16si) __src,
577 (__mmask16) __k);
578}
Michael Kupersteine45af542015-06-30 13:36:19 +0000579static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000580_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
581{
582 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
583 (__v16si) __b,
584 (__v16si)
585 _mm512_setzero_si512 (),
586 (__mmask16) __k);
587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000590_mm512_or_epi64(__m512i __a, __m512i __b)
591{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000592 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000593}
594
Michael Kupersteine45af542015-06-30 13:36:19 +0000595static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000596_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
597{
598 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
599 (__v8di) __b,
600 (__v8di) __src,
601 (__mmask8) __k);
602}
Michael Kupersteine45af542015-06-30 13:36:19 +0000603static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000604_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
605{
606 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
607 (__v8di) __b,
608 (__v8di)
609 _mm512_setzero_si512 (),
610 (__mmask8) __k);
611}
612
Michael Kupersteine45af542015-06-30 13:36:19 +0000613static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614_mm512_xor_epi32(__m512i __a, __m512i __b)
615{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000616 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000617}
618
Michael Kupersteine45af542015-06-30 13:36:19 +0000619static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000620_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
621{
622 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
623 (__v16si) __b,
624 (__v16si) __src,
625 (__mmask16) __k);
626}
Michael Kupersteine45af542015-06-30 13:36:19 +0000627static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000628_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
629{
630 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
631 (__v16si) __b,
632 (__v16si)
633 _mm512_setzero_si512 (),
634 (__mmask16) __k);
635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000638_mm512_xor_epi64(__m512i __a, __m512i __b)
639{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000640 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000641}
642
Michael Kupersteine45af542015-06-30 13:36:19 +0000643static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000644_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
645{
646 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
647 (__v8di) __b,
648 (__v8di) __src,
649 (__mmask8) __k);
650}
Michael Kupersteine45af542015-06-30 13:36:19 +0000651static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000652_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
653{
654 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
655 (__v8di) __b,
656 (__v8di)
657 _mm512_setzero_si512 (),
658 (__mmask8) __k);
659}
660
Michael Kupersteine45af542015-06-30 13:36:19 +0000661static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000662_mm512_and_si512(__m512i __a, __m512i __b)
663{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000664 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000665}
666
Michael Kupersteine45af542015-06-30 13:36:19 +0000667static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000668_mm512_or_si512(__m512i __a, __m512i __b)
669{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000670 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000671}
672
Michael Kupersteine45af542015-06-30 13:36:19 +0000673static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000674_mm512_xor_si512(__m512i __a, __m512i __b)
675{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000676 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000677}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000678/* Arithmetic */
679
Michael Kupersteine45af542015-06-30 13:36:19 +0000680static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000681_mm512_add_pd(__m512d __a, __m512d __b)
682{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000683 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000684}
685
Michael Kupersteine45af542015-06-30 13:36:19 +0000686static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000687_mm512_add_ps(__m512 __a, __m512 __b)
688{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000689 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000693_mm512_mul_pd(__m512d __a, __m512d __b)
694{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000695 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000699_mm512_mul_ps(__m512 __a, __m512 __b)
700{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000701 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000702}
703
Michael Kupersteine45af542015-06-30 13:36:19 +0000704static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000705_mm512_sub_pd(__m512d __a, __m512d __b)
706{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000707 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000708}
709
Michael Kupersteine45af542015-06-30 13:36:19 +0000710static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000711_mm512_sub_ps(__m512 __a, __m512 __b)
712{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000713 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000714}
715
Michael Kupersteine45af542015-06-30 13:36:19 +0000716static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000717_mm512_add_epi64 (__m512i __A, __m512i __B)
718{
719 return (__m512i) ((__v8di) __A + (__v8di) __B);
720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000723_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
724{
725 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
726 (__v8di) __B,
727 (__v8di) __W,
728 (__mmask8) __U);
729}
730
Michael Kupersteine45af542015-06-30 13:36:19 +0000731static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000732_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
733{
734 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
735 (__v8di) __B,
736 (__v8di)
737 _mm512_setzero_si512 (),
738 (__mmask8) __U);
739}
740
Michael Kupersteine45af542015-06-30 13:36:19 +0000741static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000742_mm512_sub_epi64 (__m512i __A, __m512i __B)
743{
744 return (__m512i) ((__v8di) __A - (__v8di) __B);
745}
746
Michael Kupersteine45af542015-06-30 13:36:19 +0000747static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000748_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
749{
750 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
751 (__v8di) __B,
752 (__v8di) __W,
753 (__mmask8) __U);
754}
755
Michael Kupersteine45af542015-06-30 13:36:19 +0000756static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000757_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
758{
759 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
760 (__v8di) __B,
761 (__v8di)
762 _mm512_setzero_si512 (),
763 (__mmask8) __U);
764}
765
Michael Kupersteine45af542015-06-30 13:36:19 +0000766static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000767_mm512_add_epi32 (__m512i __A, __m512i __B)
768{
769 return (__m512i) ((__v16si) __A + (__v16si) __B);
770}
771
Michael Kupersteine45af542015-06-30 13:36:19 +0000772static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000773_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
774{
775 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
776 (__v16si) __B,
777 (__v16si) __W,
778 (__mmask16) __U);
779}
780
Michael Kupersteine45af542015-06-30 13:36:19 +0000781static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000782_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
783{
784 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
785 (__v16si) __B,
786 (__v16si)
787 _mm512_setzero_si512 (),
788 (__mmask16) __U);
789}
790
Michael Kupersteine45af542015-06-30 13:36:19 +0000791static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000792_mm512_sub_epi32 (__m512i __A, __m512i __B)
793{
794 return (__m512i) ((__v16si) __A - (__v16si) __B);
795}
796
Michael Kupersteine45af542015-06-30 13:36:19 +0000797static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000798_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
799{
800 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
801 (__v16si) __B,
802 (__v16si) __W,
803 (__mmask16) __U);
804}
805
Michael Kupersteine45af542015-06-30 13:36:19 +0000806static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000807_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
808{
809 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
810 (__v16si) __B,
811 (__v16si)
812 _mm512_setzero_si512 (),
813 (__mmask16) __U);
814}
815
Michael Kupersteine45af542015-06-30 13:36:19 +0000816static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000817_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000818{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000819 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
820 (__v8df) __B,
821 (__v8df)
822 _mm512_setzero_pd (),
823 (__mmask8) -1,
824 _MM_FROUND_CUR_DIRECTION);
825}
826
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000827static __inline__ __m512d __DEFAULT_FN_ATTRS
828_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
829{
830 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
831 (__v8df) __B,
832 (__v8df) __W,
833 (__mmask8) __U,
834 _MM_FROUND_CUR_DIRECTION);
835}
836
837static __inline__ __m512d __DEFAULT_FN_ATTRS
838_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
839{
840 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
841 (__v8df) __B,
842 (__v8df)
843 _mm512_setzero_pd (),
844 (__mmask8) __U,
845 _MM_FROUND_CUR_DIRECTION);
846}
847
Michael Kupersteine45af542015-06-30 13:36:19 +0000848static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000849_mm512_max_ps(__m512 __A, __m512 __B)
850{
851 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
852 (__v16sf) __B,
853 (__v16sf)
854 _mm512_setzero_ps (),
855 (__mmask16) -1,
856 _MM_FROUND_CUR_DIRECTION);
857}
858
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000859static __inline__ __m512 __DEFAULT_FN_ATTRS
860_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
861{
862 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
863 (__v16sf) __B,
864 (__v16sf) __W,
865 (__mmask16) __U,
866 _MM_FROUND_CUR_DIRECTION);
867}
868
869static __inline__ __m512 __DEFAULT_FN_ATTRS
870_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
871{
872 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
873 (__v16sf) __B,
874 (__v16sf)
875 _mm512_setzero_ps (),
876 (__mmask16) __U,
877 _MM_FROUND_CUR_DIRECTION);
878}
879
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000880static __inline__ __m128 __DEFAULT_FN_ATTRS
881_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000882 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000883 (__v4sf) __B,
884 (__v4sf) __W,
885 (__mmask8) __U,
886 _MM_FROUND_CUR_DIRECTION);
887}
888
889static __inline__ __m128 __DEFAULT_FN_ATTRS
890_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000891 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000892 (__v4sf) __B,
893 (__v4sf) _mm_setzero_ps (),
894 (__mmask8) __U,
895 _MM_FROUND_CUR_DIRECTION);
896}
897
Craig Topper8c18e112016-05-17 04:41:50 +0000898#define _mm_max_round_ss(A, B, R) __extension__ ({ \
899 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
900 (__v4sf)(__m128)(B), \
901 (__v4sf)_mm_setzero_ps(), \
902 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000903
Craig Topper8c18e112016-05-17 04:41:50 +0000904#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
905 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
906 (__v4sf)(__m128)(B), \
907 (__v4sf)(__m128)(W), (__mmask8)(U), \
908 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000909
Craig Topper8c18e112016-05-17 04:41:50 +0000910#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
911 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
912 (__v4sf)(__m128)(B), \
913 (__v4sf)_mm_setzero_ps(), \
914 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000915
916static __inline__ __m128d __DEFAULT_FN_ATTRS
917_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000918 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000919 (__v2df) __B,
920 (__v2df) __W,
921 (__mmask8) __U,
922 _MM_FROUND_CUR_DIRECTION);
923}
924
925static __inline__ __m128d __DEFAULT_FN_ATTRS
926_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000927 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000928 (__v2df) __B,
929 (__v2df) _mm_setzero_pd (),
930 (__mmask8) __U,
931 _MM_FROUND_CUR_DIRECTION);
932}
933
Craig Topper8c18e112016-05-17 04:41:50 +0000934#define _mm_max_round_sd(A, B, R) __extension__ ({ \
935 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
936 (__v2df)(__m128d)(B), \
937 (__v2df)_mm_setzero_pd(), \
938 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000939
Craig Topper8c18e112016-05-17 04:41:50 +0000940#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
941 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
942 (__v2df)(__m128d)(B), \
943 (__v2df)(__m128d)(W), \
944 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000945
Craig Topper8c18e112016-05-17 04:41:50 +0000946#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
947 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
948 (__v2df)(__m128d)(B), \
949 (__v2df)_mm_setzero_pd(), \
950 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000951
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +0000952static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000953__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000954_mm512_max_epi32(__m512i __A, __m512i __B)
955{
956 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
957 (__v16si) __B,
958 (__v16si)
959 _mm512_setzero_si512 (),
960 (__mmask16) -1);
961}
962
Michael Zuckermande860e52016-05-10 11:34:19 +0000963static __inline__ __m512i __DEFAULT_FN_ATTRS
964_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
965{
966 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
967 (__v16si) __B,
968 (__v16si) __W, __M);
969}
970
971static __inline__ __m512i __DEFAULT_FN_ATTRS
972_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
973{
974 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
975 (__v16si) __B,
976 (__v16si)
977 _mm512_setzero_si512 (),
978 __M);
979}
980
Michael Kupersteine45af542015-06-30 13:36:19 +0000981static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000982_mm512_max_epu32(__m512i __A, __m512i __B)
983{
984 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
985 (__v16si) __B,
986 (__v16si)
987 _mm512_setzero_si512 (),
988 (__mmask16) -1);
989}
990
Michael Zuckermande860e52016-05-10 11:34:19 +0000991static __inline__ __m512i __DEFAULT_FN_ATTRS
992_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
993{
994 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
995 (__v16si) __B,
996 (__v16si) __W, __M);
997}
998
999static __inline__ __m512i __DEFAULT_FN_ATTRS
1000_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1001{
1002 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
1003 (__v16si) __B,
1004 (__v16si)
1005 _mm512_setzero_si512 (),
1006 __M);
1007}
1008
Michael Kupersteine45af542015-06-30 13:36:19 +00001009static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001010_mm512_max_epi64(__m512i __A, __m512i __B)
1011{
1012 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1013 (__v8di) __B,
1014 (__v8di)
1015 _mm512_setzero_si512 (),
1016 (__mmask8) -1);
1017}
1018
Michael Zuckermande860e52016-05-10 11:34:19 +00001019static __inline__ __m512i __DEFAULT_FN_ATTRS
1020_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1021{
1022 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1023 (__v8di) __B,
1024 (__v8di) __W, __M);
1025}
1026
1027static __inline__ __m512i __DEFAULT_FN_ATTRS
1028_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1029{
1030 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1031 (__v8di) __B,
1032 (__v8di)
1033 _mm512_setzero_si512 (),
1034 __M);
1035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001038_mm512_max_epu64(__m512i __A, __m512i __B)
1039{
1040 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1041 (__v8di) __B,
1042 (__v8di)
1043 _mm512_setzero_si512 (),
1044 (__mmask8) -1);
1045}
1046
Michael Zuckermande860e52016-05-10 11:34:19 +00001047static __inline__ __m512i __DEFAULT_FN_ATTRS
1048_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1049{
1050 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1051 (__v8di) __B,
1052 (__v8di) __W, __M);
1053}
1054
1055static __inline__ __m512i __DEFAULT_FN_ATTRS
1056_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1057{
1058 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1059 (__v8di) __B,
1060 (__v8di)
1061 _mm512_setzero_si512 (),
1062 __M);
1063}
1064
Michael Kupersteine45af542015-06-30 13:36:19 +00001065static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001066_mm512_min_pd(__m512d __A, __m512d __B)
1067{
1068 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1069 (__v8df) __B,
1070 (__v8df)
1071 _mm512_setzero_pd (),
1072 (__mmask8) -1,
1073 _MM_FROUND_CUR_DIRECTION);
1074}
1075
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001076static __inline__ __m512d __DEFAULT_FN_ATTRS
1077_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1078{
1079 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1080 (__v8df) __B,
1081 (__v8df) __W,
1082 (__mmask8) __U,
1083 _MM_FROUND_CUR_DIRECTION);
1084}
1085
1086static __inline__ __m512d __DEFAULT_FN_ATTRS
1087_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1088{
1089 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1090 (__v8df) __B,
1091 (__v8df)
1092 _mm512_setzero_pd (),
1093 (__mmask8) __U,
1094 _MM_FROUND_CUR_DIRECTION);
1095}
1096
Michael Kupersteine45af542015-06-30 13:36:19 +00001097static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001098_mm512_min_ps(__m512 __A, __m512 __B)
1099{
1100 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1101 (__v16sf) __B,
1102 (__v16sf)
1103 _mm512_setzero_ps (),
1104 (__mmask16) -1,
1105 _MM_FROUND_CUR_DIRECTION);
1106}
1107
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001108static __inline__ __m512 __DEFAULT_FN_ATTRS
1109_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1110{
1111 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1112 (__v16sf) __B,
1113 (__v16sf) __W,
1114 (__mmask16) __U,
1115 _MM_FROUND_CUR_DIRECTION);
1116}
1117
1118static __inline__ __m512 __DEFAULT_FN_ATTRS
1119_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1120{
1121 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1122 (__v16sf) __B,
1123 (__v16sf)
1124 _mm512_setzero_ps (),
1125 (__mmask16) __U,
1126 _MM_FROUND_CUR_DIRECTION);
1127}
1128
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001129static __inline__ __m128 __DEFAULT_FN_ATTRS
1130_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001131 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001132 (__v4sf) __B,
1133 (__v4sf) __W,
1134 (__mmask8) __U,
1135 _MM_FROUND_CUR_DIRECTION);
1136}
1137
1138static __inline__ __m128 __DEFAULT_FN_ATTRS
1139_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001140 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001141 (__v4sf) __B,
1142 (__v4sf) _mm_setzero_ps (),
1143 (__mmask8) __U,
1144 _MM_FROUND_CUR_DIRECTION);
1145}
1146
Craig Topper8c18e112016-05-17 04:41:50 +00001147#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1148 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1149 (__v4sf)(__m128)(B), \
1150 (__v4sf)_mm_setzero_ps(), \
1151 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001152
Craig Topper8c18e112016-05-17 04:41:50 +00001153#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1154 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1155 (__v4sf)(__m128)(B), \
1156 (__v4sf)(__m128)(W), (__mmask8)(U), \
1157 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158
Craig Topper8c18e112016-05-17 04:41:50 +00001159#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1160 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1161 (__v4sf)(__m128)(B), \
1162 (__v4sf)_mm_setzero_ps(), \
1163 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001164
1165static __inline__ __m128d __DEFAULT_FN_ATTRS
1166_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001167 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001168 (__v2df) __B,
1169 (__v2df) __W,
1170 (__mmask8) __U,
1171 _MM_FROUND_CUR_DIRECTION);
1172}
1173
1174static __inline__ __m128d __DEFAULT_FN_ATTRS
1175_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001176 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001177 (__v2df) __B,
1178 (__v2df) _mm_setzero_pd (),
1179 (__mmask8) __U,
1180 _MM_FROUND_CUR_DIRECTION);
1181}
1182
Craig Topper8c18e112016-05-17 04:41:50 +00001183#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1184 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1185 (__v2df)(__m128d)(B), \
1186 (__v2df)_mm_setzero_pd(), \
1187 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001188
Craig Topper8c18e112016-05-17 04:41:50 +00001189#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1190 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1191 (__v2df)(__m128d)(B), \
1192 (__v2df)(__m128d)(W), \
1193 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001194
Craig Topper8c18e112016-05-17 04:41:50 +00001195#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1196 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1197 (__v2df)(__m128d)(B), \
1198 (__v2df)_mm_setzero_pd(), \
1199 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001200
Adam Nemet0d5bb552014-07-28 17:14:40 +00001201static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001202__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001203_mm512_min_epi32(__m512i __A, __m512i __B)
1204{
1205 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1206 (__v16si) __B,
1207 (__v16si)
1208 _mm512_setzero_si512 (),
1209 (__mmask16) -1);
1210}
1211
Michael Zuckermande860e52016-05-10 11:34:19 +00001212static __inline__ __m512i __DEFAULT_FN_ATTRS
1213_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1214{
1215 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1216 (__v16si) __B,
1217 (__v16si) __W, __M);
1218}
1219
1220static __inline__ __m512i __DEFAULT_FN_ATTRS
1221_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1222{
1223 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1224 (__v16si) __B,
1225 (__v16si)
1226 _mm512_setzero_si512 (),
1227 __M);
1228}
1229
Michael Kupersteine45af542015-06-30 13:36:19 +00001230static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001231_mm512_min_epu32(__m512i __A, __m512i __B)
1232{
1233 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1234 (__v16si) __B,
1235 (__v16si)
1236 _mm512_setzero_si512 (),
1237 (__mmask16) -1);
1238}
1239
Michael Zuckermande860e52016-05-10 11:34:19 +00001240static __inline__ __m512i __DEFAULT_FN_ATTRS
1241_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1242{
1243 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1244 (__v16si) __B,
1245 (__v16si) __W, __M);
1246}
1247
1248static __inline__ __m512i __DEFAULT_FN_ATTRS
1249_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1250{
1251 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1252 (__v16si) __B,
1253 (__v16si)
1254 _mm512_setzero_si512 (),
1255 __M);
1256}
1257
Michael Kupersteine45af542015-06-30 13:36:19 +00001258static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001259_mm512_min_epi64(__m512i __A, __m512i __B)
1260{
1261 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1262 (__v8di) __B,
1263 (__v8di)
1264 _mm512_setzero_si512 (),
1265 (__mmask8) -1);
1266}
1267
Michael Zuckermande860e52016-05-10 11:34:19 +00001268static __inline__ __m512i __DEFAULT_FN_ATTRS
1269_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1270{
1271 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1272 (__v8di) __B,
1273 (__v8di) __W, __M);
1274}
1275
1276static __inline__ __m512i __DEFAULT_FN_ATTRS
1277_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1278{
1279 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1280 (__v8di) __B,
1281 (__v8di)
1282 _mm512_setzero_si512 (),
1283 __M);
1284}
1285
Michael Kupersteine45af542015-06-30 13:36:19 +00001286static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001287_mm512_min_epu64(__m512i __A, __m512i __B)
1288{
1289 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1290 (__v8di) __B,
1291 (__v8di)
1292 _mm512_setzero_si512 (),
1293 (__mmask8) -1);
1294}
1295
Michael Zuckermande860e52016-05-10 11:34:19 +00001296static __inline__ __m512i __DEFAULT_FN_ATTRS
1297_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1298{
1299 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1300 (__v8di) __B,
1301 (__v8di) __W, __M);
1302}
1303
1304static __inline__ __m512i __DEFAULT_FN_ATTRS
1305_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1306{
1307 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1308 (__v8di) __B,
1309 (__v8di)
1310 _mm512_setzero_si512 (),
1311 __M);
1312}
1313
Michael Kupersteine45af542015-06-30 13:36:19 +00001314static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001315_mm512_mul_epi32(__m512i __X, __m512i __Y)
1316{
1317 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1318 (__v16si) __Y,
1319 (__v8di)
1320 _mm512_setzero_si512 (),
1321 (__mmask8) -1);
1322}
1323
Michael Kupersteine45af542015-06-30 13:36:19 +00001324static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001325_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1326{
1327 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1328 (__v16si) __Y,
1329 (__v8di) __W, __M);
1330}
1331
Michael Kupersteine45af542015-06-30 13:36:19 +00001332static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001333_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1334{
1335 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1336 (__v16si) __Y,
1337 (__v8di)
1338 _mm512_setzero_si512 (),
1339 __M);
1340}
1341
Michael Kupersteine45af542015-06-30 13:36:19 +00001342static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001343_mm512_mul_epu32(__m512i __X, __m512i __Y)
1344{
1345 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1346 (__v16si) __Y,
1347 (__v8di)
1348 _mm512_setzero_si512 (),
1349 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001350}
1351
Michael Kupersteine45af542015-06-30 13:36:19 +00001352static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001353_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1354{
1355 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1356 (__v16si) __Y,
1357 (__v8di) __W, __M);
1358}
1359
Michael Kupersteine45af542015-06-30 13:36:19 +00001360static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001361_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1362{
1363 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1364 (__v16si) __Y,
1365 (__v8di)
1366 _mm512_setzero_si512 (),
1367 __M);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001371_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1372{
1373 return (__m512i) ((__v16si) __A * (__v16si) __B);
1374}
1375
Michael Kupersteine45af542015-06-30 13:36:19 +00001376static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001377_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1378{
1379 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1380 (__v16si) __B,
1381 (__v16si)
1382 _mm512_setzero_si512 (),
1383 __M);
1384}
1385
Michael Kupersteine45af542015-06-30 13:36:19 +00001386static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001387_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1388{
1389 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1390 (__v16si) __B,
1391 (__v16si) __W, __M);
1392}
1393
Michael Kupersteine45af542015-06-30 13:36:19 +00001394static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001395_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001396{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001397 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001398 (__v8df) _mm512_setzero_pd (),
1399 (__mmask8) -1,
1400 _MM_FROUND_CUR_DIRECTION);
1401}
1402
Michael Zuckermancb856772016-05-16 11:42:01 +00001403static __inline__ __m512d __DEFAULT_FN_ATTRS
1404_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1405{
1406 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1407 (__v8df) __W,
1408 (__mmask8) __U,
1409 _MM_FROUND_CUR_DIRECTION);
1410}
1411
1412static __inline__ __m512d __DEFAULT_FN_ATTRS
1413_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1414{
1415 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1416 (__v8df)
1417 _mm512_setzero_pd (),
1418 (__mmask8) __U,
1419 _MM_FROUND_CUR_DIRECTION);
1420}
1421
Michael Kupersteine45af542015-06-30 13:36:19 +00001422static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001423_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001424{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001425 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001426 (__v16sf) _mm512_setzero_ps (),
1427 (__mmask16) -1,
1428 _MM_FROUND_CUR_DIRECTION);
1429}
1430
Michael Zuckermancb856772016-05-16 11:42:01 +00001431static __inline__ __m512 __DEFAULT_FN_ATTRS
1432_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1433{
1434 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1435 (__v16sf) __W,
1436 (__mmask16) __U,
1437 _MM_FROUND_CUR_DIRECTION);
1438}
1439
1440static __inline__ __m512 __DEFAULT_FN_ATTRS
1441_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1442{
1443 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1444 (__v16sf) _mm512_setzero_ps (),
1445 (__mmask16) __U,
1446 _MM_FROUND_CUR_DIRECTION);
1447}
1448
Michael Kupersteine45af542015-06-30 13:36:19 +00001449static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001450_mm512_rsqrt14_pd(__m512d __A)
1451{
1452 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1453 (__v8df)
1454 _mm512_setzero_pd (),
1455 (__mmask8) -1);}
1456
Michael Zuckermancb856772016-05-16 11:42:01 +00001457static __inline__ __m512d __DEFAULT_FN_ATTRS
1458_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1459{
1460 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1461 (__v8df) __W,
1462 (__mmask8) __U);
1463}
1464
1465static __inline__ __m512d __DEFAULT_FN_ATTRS
1466_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1467{
1468 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1469 (__v8df)
1470 _mm512_setzero_pd (),
1471 (__mmask8) __U);
1472}
1473
Michael Kupersteine45af542015-06-30 13:36:19 +00001474static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001475_mm512_rsqrt14_ps(__m512 __A)
1476{
1477 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1478 (__v16sf)
1479 _mm512_setzero_ps (),
1480 (__mmask16) -1);
1481}
1482
Michael Zuckermancb856772016-05-16 11:42:01 +00001483static __inline__ __m512 __DEFAULT_FN_ATTRS
1484_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1485{
1486 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1487 (__v16sf) __W,
1488 (__mmask16) __U);
1489}
1490
1491static __inline__ __m512 __DEFAULT_FN_ATTRS
1492_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1493{
1494 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1495 (__v16sf)
1496 _mm512_setzero_ps (),
1497 (__mmask16) __U);
1498}
1499
Michael Kupersteine45af542015-06-30 13:36:19 +00001500static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001501_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1502{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001503 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001504 (__v4sf) __B,
1505 (__v4sf)
1506 _mm_setzero_ps (),
1507 (__mmask8) -1);
1508}
1509
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001510static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001511_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001512{
1513 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1514 (__v4sf) __B,
1515 (__v4sf) __W,
1516 (__mmask8) __U);
1517}
1518
1519static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001520_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001521{
1522 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1523 (__v4sf) __B,
1524 (__v4sf) _mm_setzero_ps (),
1525 (__mmask8) __U);
1526}
1527
Michael Kupersteine45af542015-06-30 13:36:19 +00001528static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001529_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1530{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001531 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001532 (__v2df) __B,
1533 (__v2df)
1534 _mm_setzero_pd (),
1535 (__mmask8) -1);
1536}
1537
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001538static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001539_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001540{
1541 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1542 (__v2df) __B,
1543 (__v2df) __W,
1544 (__mmask8) __U);
1545}
1546
1547static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001548_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001549{
1550 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1551 (__v2df) __B,
1552 (__v2df) _mm_setzero_pd (),
1553 (__mmask8) __U);
1554}
1555
Michael Kupersteine45af542015-06-30 13:36:19 +00001556static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001557_mm512_rcp14_pd(__m512d __A)
1558{
1559 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1560 (__v8df)
1561 _mm512_setzero_pd (),
1562 (__mmask8) -1);
1563}
1564
Michael Zuckermancb856772016-05-16 11:42:01 +00001565static __inline__ __m512d __DEFAULT_FN_ATTRS
1566_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1567{
1568 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1569 (__v8df) __W,
1570 (__mmask8) __U);
1571}
1572
1573static __inline__ __m512d __DEFAULT_FN_ATTRS
1574_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1575{
1576 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1577 (__v8df)
1578 _mm512_setzero_pd (),
1579 (__mmask8) __U);
1580}
1581
Michael Kupersteine45af542015-06-30 13:36:19 +00001582static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001583_mm512_rcp14_ps(__m512 __A)
1584{
1585 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1586 (__v16sf)
1587 _mm512_setzero_ps (),
1588 (__mmask16) -1);
1589}
Michael Zuckermancb856772016-05-16 11:42:01 +00001590
1591static __inline__ __m512 __DEFAULT_FN_ATTRS
1592_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1593{
1594 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1595 (__v16sf) __W,
1596 (__mmask16) __U);
1597}
1598
1599static __inline__ __m512 __DEFAULT_FN_ATTRS
1600_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1601{
1602 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1603 (__v16sf)
1604 _mm512_setzero_ps (),
1605 (__mmask16) __U);
1606}
1607
Michael Kupersteine45af542015-06-30 13:36:19 +00001608static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001609_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001610{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001611 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001612 (__v4sf) __B,
1613 (__v4sf)
1614 _mm_setzero_ps (),
1615 (__mmask8) -1);
1616}
1617
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001618static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001619_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001620{
1621 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1622 (__v4sf) __B,
1623 (__v4sf) __W,
1624 (__mmask8) __U);
1625}
1626
1627static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001628_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001629{
1630 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1631 (__v4sf) __B,
1632 (__v4sf) _mm_setzero_ps (),
1633 (__mmask8) __U);
1634}
1635
Michael Kupersteine45af542015-06-30 13:36:19 +00001636static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001637_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001638{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001639 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001640 (__v2df) __B,
1641 (__v2df)
1642 _mm_setzero_pd (),
1643 (__mmask8) -1);
1644}
1645
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001646static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001647_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001648{
1649 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1650 (__v2df) __B,
1651 (__v2df) __W,
1652 (__mmask8) __U);
1653}
1654
1655static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00001656_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001657{
1658 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1659 (__v2df) __B,
1660 (__v2df) _mm_setzero_pd (),
1661 (__mmask8) __U);
1662}
1663
Michael Kupersteine45af542015-06-30 13:36:19 +00001664static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001665_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001666{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001667 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1668 _MM_FROUND_FLOOR,
1669 (__v16sf) __A, -1,
1670 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001671}
1672
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001673static __inline__ __m512 __DEFAULT_FN_ATTRS
1674_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1675{
1676 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1677 _MM_FROUND_FLOOR,
1678 (__v16sf) __W, __U,
1679 _MM_FROUND_CUR_DIRECTION);
1680}
1681
1682
Michael Kupersteine45af542015-06-30 13:36:19 +00001683static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001684_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001685{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001686 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1687 _MM_FROUND_FLOOR,
1688 (__v8df) __A, -1,
1689 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001690}
1691
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001692static __inline__ __m512d __DEFAULT_FN_ATTRS
1693_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1694{
1695 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1696 _MM_FROUND_FLOOR,
1697 (__v8df) __W, __U,
1698 _MM_FROUND_CUR_DIRECTION);
1699}
1700
1701
1702static __inline__ __m512 __DEFAULT_FN_ATTRS
1703_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1704{
1705 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1706 _MM_FROUND_CEIL,
1707 (__v16sf) __W, __U,
1708 _MM_FROUND_CUR_DIRECTION);
1709}
1710
Michael Kupersteine45af542015-06-30 13:36:19 +00001711static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001712_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001713{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001714 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1715 _MM_FROUND_CEIL,
1716 (__v16sf) __A, -1,
1717 _MM_FROUND_CUR_DIRECTION);
1718}
1719
Michael Kupersteine45af542015-06-30 13:36:19 +00001720static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001721_mm512_ceil_pd(__m512d __A)
1722{
1723 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1724 _MM_FROUND_CEIL,
1725 (__v8df) __A, -1,
1726 _MM_FROUND_CUR_DIRECTION);
1727}
1728
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001729static __inline__ __m512d __DEFAULT_FN_ATTRS
1730_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1731{
1732 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1733 _MM_FROUND_CEIL,
1734 (__v8df) __W, __U,
1735 _MM_FROUND_CUR_DIRECTION);
1736}
1737
Michael Kupersteine45af542015-06-30 13:36:19 +00001738static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001739_mm512_abs_epi64(__m512i __A)
1740{
1741 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1742 (__v8di)
1743 _mm512_setzero_si512 (),
1744 (__mmask8) -1);
1745}
1746
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001747static __inline__ __m512i __DEFAULT_FN_ATTRS
1748_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1749{
1750 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1751 (__v8di) __W,
1752 (__mmask8) __U);
1753}
1754
1755static __inline__ __m512i __DEFAULT_FN_ATTRS
1756_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1757{
1758 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1759 (__v8di)
1760 _mm512_setzero_si512 (),
1761 (__mmask8) __U);
1762}
1763
Michael Kupersteine45af542015-06-30 13:36:19 +00001764static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001765_mm512_abs_epi32(__m512i __A)
1766{
1767 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1768 (__v16si)
1769 _mm512_setzero_si512 (),
1770 (__mmask16) -1);
1771}
1772
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001773static __inline__ __m512i __DEFAULT_FN_ATTRS
1774_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1775{
1776 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1777 (__v16si) __W,
1778 (__mmask16) __U);
1779}
1780
1781static __inline__ __m512i __DEFAULT_FN_ATTRS
1782_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1783{
1784 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1785 (__v16si)
1786 _mm512_setzero_si512 (),
1787 (__mmask16) __U);
1788}
1789
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001790static __inline__ __m128 __DEFAULT_FN_ATTRS
1791_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001792 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001793 (__v4sf) __B,
1794 (__v4sf) __W,
1795 (__mmask8) __U,
1796 _MM_FROUND_CUR_DIRECTION);
1797}
1798
1799static __inline__ __m128 __DEFAULT_FN_ATTRS
1800_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001801 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001802 (__v4sf) __B,
1803 (__v4sf) _mm_setzero_ps (),
1804 (__mmask8) __U,
1805 _MM_FROUND_CUR_DIRECTION);
1806}
1807
Craig Topper8c18e112016-05-17 04:41:50 +00001808#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1809 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1810 (__v4sf)(__m128)(B), \
1811 (__v4sf)_mm_setzero_ps(), \
1812 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001813
Craig Topper8c18e112016-05-17 04:41:50 +00001814#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1815 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1816 (__v4sf)(__m128)(B), \
1817 (__v4sf)(__m128)(W), (__mmask8)(U), \
1818 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001819
Craig Topper8c18e112016-05-17 04:41:50 +00001820#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1821 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1822 (__v4sf)(__m128)(B), \
1823 (__v4sf)_mm_setzero_ps(), \
1824 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001825
1826static __inline__ __m128d __DEFAULT_FN_ATTRS
1827_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001828 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001829 (__v2df) __B,
1830 (__v2df) __W,
1831 (__mmask8) __U,
1832 _MM_FROUND_CUR_DIRECTION);
1833}
1834
1835static __inline__ __m128d __DEFAULT_FN_ATTRS
1836_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001837 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001838 (__v2df) __B,
1839 (__v2df) _mm_setzero_pd (),
1840 (__mmask8) __U,
1841 _MM_FROUND_CUR_DIRECTION);
1842}
Craig Topper8c18e112016-05-17 04:41:50 +00001843#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1844 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1845 (__v2df)(__m128d)(B), \
1846 (__v2df)_mm_setzero_pd(), \
1847 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001848
Craig Topper8c18e112016-05-17 04:41:50 +00001849#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1850 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1851 (__v2df)(__m128d)(B), \
1852 (__v2df)(__m128d)(W), \
1853 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001854
Craig Topper8c18e112016-05-17 04:41:50 +00001855#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1856 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1857 (__v2df)(__m128d)(B), \
1858 (__v2df)_mm_setzero_pd(), \
1859 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001860
Asaf Badouhffeb6242015-07-21 15:27:28 +00001861static __inline__ __m512d __DEFAULT_FN_ATTRS
1862_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1863 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1864 (__v8df) __B,
1865 (__v8df) __W,
1866 (__mmask8) __U,
1867 _MM_FROUND_CUR_DIRECTION);
1868}
1869
1870static __inline__ __m512d __DEFAULT_FN_ATTRS
1871_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1872 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1873 (__v8df) __B,
1874 (__v8df) _mm512_setzero_pd (),
1875 (__mmask8) __U,
1876 _MM_FROUND_CUR_DIRECTION);
1877}
1878
1879static __inline__ __m512 __DEFAULT_FN_ATTRS
1880_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1881 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1882 (__v16sf) __B,
1883 (__v16sf) __W,
1884 (__mmask16) __U,
1885 _MM_FROUND_CUR_DIRECTION);
1886}
1887
1888static __inline__ __m512 __DEFAULT_FN_ATTRS
1889_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1890 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1891 (__v16sf) __B,
1892 (__v16sf) _mm512_setzero_ps (),
1893 (__mmask16) __U,
1894 _MM_FROUND_CUR_DIRECTION);
1895}
1896
Craig Topper8c18e112016-05-17 04:41:50 +00001897#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1898 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1899 (__v8df)(__m512d)(B), \
1900 (__v8df)_mm512_setzero_pd(), \
1901 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001902
Craig Topper8c18e112016-05-17 04:41:50 +00001903#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1904 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1905 (__v8df)(__m512d)(B), \
1906 (__v8df)(__m512d)(W), (__mmask8)(U), \
1907 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001908
Craig Topper8c18e112016-05-17 04:41:50 +00001909#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1910 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1911 (__v8df)(__m512d)(B), \
1912 (__v8df)_mm512_setzero_pd(), \
1913 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001914
Craig Topper8c18e112016-05-17 04:41:50 +00001915#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1916 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1917 (__v16sf)(__m512)(B), \
1918 (__v16sf)_mm512_setzero_ps(), \
1919 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001920
Craig Topper8c18e112016-05-17 04:41:50 +00001921#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1922 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1923 (__v16sf)(__m512)(B), \
1924 (__v16sf)(__m512)(W), (__mmask16)(U), \
1925 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001926
Craig Topper8c18e112016-05-17 04:41:50 +00001927#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1928 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1929 (__v16sf)(__m512)(B), \
1930 (__v16sf)_mm512_setzero_ps(), \
1931 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001932
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001933static __inline__ __m128 __DEFAULT_FN_ATTRS
1934_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001935 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001936 (__v4sf) __B,
1937 (__v4sf) __W,
1938 (__mmask8) __U,
1939 _MM_FROUND_CUR_DIRECTION);
1940}
1941
1942static __inline__ __m128 __DEFAULT_FN_ATTRS
1943_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001944 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001945 (__v4sf) __B,
1946 (__v4sf) _mm_setzero_ps (),
1947 (__mmask8) __U,
1948 _MM_FROUND_CUR_DIRECTION);
1949}
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)_mm_setzero_ps(), \
1954 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
Craig Topper8c18e112016-05-17 04:41:50 +00001956#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1957 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1958 (__v4sf)(__m128)(B), \
1959 (__v4sf)(__m128)(W), (__mmask8)(U), \
1960 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001961
Craig Topper8c18e112016-05-17 04:41:50 +00001962#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1963 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1964 (__v4sf)(__m128)(B), \
1965 (__v4sf)_mm_setzero_ps(), \
1966 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001967
1968static __inline__ __m128d __DEFAULT_FN_ATTRS
1969_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001970 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001971 (__v2df) __B,
1972 (__v2df) __W,
1973 (__mmask8) __U,
1974 _MM_FROUND_CUR_DIRECTION);
1975}
1976
1977static __inline__ __m128d __DEFAULT_FN_ATTRS
1978_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001979 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001980 (__v2df) __B,
1981 (__v2df) _mm_setzero_pd (),
1982 (__mmask8) __U,
1983 _MM_FROUND_CUR_DIRECTION);
1984}
1985
Craig Topper8c18e112016-05-17 04:41:50 +00001986#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1987 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1988 (__v2df)(__m128d)(B), \
1989 (__v2df)_mm_setzero_pd(), \
1990 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001991
Craig Topper8c18e112016-05-17 04:41:50 +00001992#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1993 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1994 (__v2df)(__m128d)(B), \
1995 (__v2df)(__m128d)(W), \
1996 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001997
Craig Topper8c18e112016-05-17 04:41:50 +00001998#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1999 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
2000 (__v2df)(__m128d)(B), \
2001 (__v2df)_mm_setzero_pd(), \
2002 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002003
Asaf Badouhffeb6242015-07-21 15:27:28 +00002004static __inline__ __m512d __DEFAULT_FN_ATTRS
2005_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2006 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2007 (__v8df) __B,
2008 (__v8df) __W,
2009 (__mmask8) __U,
2010 _MM_FROUND_CUR_DIRECTION);
2011}
2012
2013static __inline__ __m512d __DEFAULT_FN_ATTRS
2014_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2015 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2016 (__v8df) __B,
2017 (__v8df)
2018 _mm512_setzero_pd (),
2019 (__mmask8) __U,
2020 _MM_FROUND_CUR_DIRECTION);
2021}
2022
2023static __inline__ __m512 __DEFAULT_FN_ATTRS
2024_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2025 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2026 (__v16sf) __B,
2027 (__v16sf) __W,
2028 (__mmask16) __U,
2029 _MM_FROUND_CUR_DIRECTION);
2030}
2031
2032static __inline__ __m512 __DEFAULT_FN_ATTRS
2033_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2034 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2035 (__v16sf) __B,
2036 (__v16sf)
2037 _mm512_setzero_ps (),
2038 (__mmask16) __U,
2039 _MM_FROUND_CUR_DIRECTION);
2040}
2041
Craig Topper8c18e112016-05-17 04:41:50 +00002042#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2043 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2044 (__v8df)(__m512d)(B), \
2045 (__v8df)_mm512_setzero_pd(), \
2046 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002047
Craig Topper8c18e112016-05-17 04:41:50 +00002048#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2049 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2050 (__v8df)(__m512d)(B), \
2051 (__v8df)(__m512d)(W), (__mmask8)(U), \
2052 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002053
Craig Topper8c18e112016-05-17 04:41:50 +00002054#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2055 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2056 (__v8df)(__m512d)(B), \
2057 (__v8df)_mm512_setzero_pd(), \
2058 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002059
Craig Topper8c18e112016-05-17 04:41:50 +00002060#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2061 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2062 (__v16sf)(__m512)(B), \
2063 (__v16sf)_mm512_setzero_ps(), \
2064 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002065
Craig Topper8c18e112016-05-17 04:41:50 +00002066#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2067 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2068 (__v16sf)(__m512)(B), \
2069 (__v16sf)(__m512)(W), (__mmask16)(U), \
2070 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002071
Craig Topper8c18e112016-05-17 04:41:50 +00002072#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2073 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2074 (__v16sf)(__m512)(B), \
2075 (__v16sf)_mm512_setzero_ps(), \
2076 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002077
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002078static __inline__ __m128 __DEFAULT_FN_ATTRS
2079_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002080 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002081 (__v4sf) __B,
2082 (__v4sf) __W,
2083 (__mmask8) __U,
2084 _MM_FROUND_CUR_DIRECTION);
2085}
2086
2087static __inline__ __m128 __DEFAULT_FN_ATTRS
2088_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002089 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002090 (__v4sf) __B,
2091 (__v4sf) _mm_setzero_ps (),
2092 (__mmask8) __U,
2093 _MM_FROUND_CUR_DIRECTION);
2094}
Craig Topper8c18e112016-05-17 04:41:50 +00002095#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2096 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2097 (__v4sf)(__m128)(B), \
2098 (__v4sf)_mm_setzero_ps(), \
2099 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002100
Craig Topper8c18e112016-05-17 04:41:50 +00002101#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2102 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2103 (__v4sf)(__m128)(B), \
2104 (__v4sf)(__m128)(W), (__mmask8)(U), \
2105 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002106
Craig Topper8c18e112016-05-17 04:41:50 +00002107#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2108 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2109 (__v4sf)(__m128)(B), \
2110 (__v4sf)_mm_setzero_ps(), \
2111 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002112
2113static __inline__ __m128d __DEFAULT_FN_ATTRS
2114_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002115 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002116 (__v2df) __B,
2117 (__v2df) __W,
2118 (__mmask8) __U,
2119 _MM_FROUND_CUR_DIRECTION);
2120}
2121
2122static __inline__ __m128d __DEFAULT_FN_ATTRS
2123_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002124 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002125 (__v2df) __B,
2126 (__v2df) _mm_setzero_pd (),
2127 (__mmask8) __U,
2128 _MM_FROUND_CUR_DIRECTION);
2129}
2130
Craig Topper8c18e112016-05-17 04:41:50 +00002131#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2132 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2133 (__v2df)(__m128d)(B), \
2134 (__v2df)_mm_setzero_pd(), \
2135 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002136
Craig Topper8c18e112016-05-17 04:41:50 +00002137#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2138 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2139 (__v2df)(__m128d)(B), \
2140 (__v2df)(__m128d)(W), \
2141 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002142
Craig Topper8c18e112016-05-17 04:41:50 +00002143#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2144 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2145 (__v2df)(__m128d)(B), \
2146 (__v2df)_mm_setzero_pd(), \
2147 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002148
Asaf Badouhffeb6242015-07-21 15:27:28 +00002149static __inline__ __m512d __DEFAULT_FN_ATTRS
2150_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2151 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2152 (__v8df) __B,
2153 (__v8df) __W,
2154 (__mmask8) __U,
2155 _MM_FROUND_CUR_DIRECTION);
2156}
2157
2158static __inline__ __m512d __DEFAULT_FN_ATTRS
2159_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2160 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2161 (__v8df) __B,
2162 (__v8df)
2163 _mm512_setzero_pd (),
2164 (__mmask8) __U,
2165 _MM_FROUND_CUR_DIRECTION);
2166}
2167
2168static __inline__ __m512 __DEFAULT_FN_ATTRS
2169_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2170 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2171 (__v16sf) __B,
2172 (__v16sf) __W,
2173 (__mmask16) __U,
2174 _MM_FROUND_CUR_DIRECTION);
2175}
2176
2177static __inline__ __m512 __DEFAULT_FN_ATTRS
2178_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2179 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2180 (__v16sf) __B,
2181 (__v16sf)
2182 _mm512_setzero_ps (),
2183 (__mmask16) __U,
2184 _MM_FROUND_CUR_DIRECTION);
2185}
2186
Craig Topper8c18e112016-05-17 04:41:50 +00002187#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2188 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2189 (__v8df)(__m512d)(B), \
2190 (__v8df)_mm512_setzero_pd(), \
2191 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002192
Craig Topper8c18e112016-05-17 04:41:50 +00002193#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2194 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2195 (__v8df)(__m512d)(B), \
2196 (__v8df)(__m512d)(W), (__mmask8)(U), \
2197 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002198
Craig Topper8c18e112016-05-17 04:41:50 +00002199#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2200 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2201 (__v8df)(__m512d)(B), \
2202 (__v8df)_mm512_setzero_pd(), \
2203 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002204
Craig Topper8c18e112016-05-17 04:41:50 +00002205#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2206 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2207 (__v16sf)(__m512)(B), \
2208 (__v16sf)_mm512_setzero_ps(), \
2209 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002210
Craig Topper8c18e112016-05-17 04:41:50 +00002211#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2212 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2213 (__v16sf)(__m512)(B), \
2214 (__v16sf)(__m512)(W), (__mmask16)(U), \
2215 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002216
Craig Topper8c18e112016-05-17 04:41:50 +00002217#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2218 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2219 (__v16sf)(__m512)(B), \
2220 (__v16sf)_mm512_setzero_ps(), \
2221 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002222
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002223static __inline__ __m128 __DEFAULT_FN_ATTRS
2224_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002225 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002226 (__v4sf) __B,
2227 (__v4sf) __W,
2228 (__mmask8) __U,
2229 _MM_FROUND_CUR_DIRECTION);
2230}
2231
2232static __inline__ __m128 __DEFAULT_FN_ATTRS
2233_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002234 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002235 (__v4sf) __B,
2236 (__v4sf) _mm_setzero_ps (),
2237 (__mmask8) __U,
2238 _MM_FROUND_CUR_DIRECTION);
2239}
2240
Craig Topper8c18e112016-05-17 04:41:50 +00002241#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2242 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2243 (__v4sf)(__m128)(B), \
2244 (__v4sf)_mm_setzero_ps(), \
2245 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246
Craig Topper8c18e112016-05-17 04:41:50 +00002247#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2248 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2249 (__v4sf)(__m128)(B), \
2250 (__v4sf)(__m128)(W), (__mmask8)(U), \
2251 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002252
Craig Topper8c18e112016-05-17 04:41:50 +00002253#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2254 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2255 (__v4sf)(__m128)(B), \
2256 (__v4sf)_mm_setzero_ps(), \
2257 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002258
2259static __inline__ __m128d __DEFAULT_FN_ATTRS
2260_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002261 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002262 (__v2df) __B,
2263 (__v2df) __W,
2264 (__mmask8) __U,
2265 _MM_FROUND_CUR_DIRECTION);
2266}
2267
2268static __inline__ __m128d __DEFAULT_FN_ATTRS
2269_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002270 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002271 (__v2df) __B,
2272 (__v2df) _mm_setzero_pd (),
2273 (__mmask8) __U,
2274 _MM_FROUND_CUR_DIRECTION);
2275}
2276
Craig Topper8c18e112016-05-17 04:41:50 +00002277#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2278 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2279 (__v2df)(__m128d)(B), \
2280 (__v2df)_mm_setzero_pd(), \
2281 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002282
Craig Topper8c18e112016-05-17 04:41:50 +00002283#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2284 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2285 (__v2df)(__m128d)(B), \
2286 (__v2df)(__m128d)(W), \
2287 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002288
Craig Topper8c18e112016-05-17 04:41:50 +00002289#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2290 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2291 (__v2df)(__m128d)(B), \
2292 (__v2df)_mm_setzero_pd(), \
2293 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002294
Asaf Badouhffeb6242015-07-21 15:27:28 +00002295static __inline__ __m512d __DEFAULT_FN_ATTRS
2296_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2297 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2298 (__v8df) __B,
2299 (__v8df) __W,
2300 (__mmask8) __U,
2301 _MM_FROUND_CUR_DIRECTION);
2302}
2303
2304static __inline__ __m512d __DEFAULT_FN_ATTRS
2305_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2306 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2307 (__v8df) __B,
2308 (__v8df)
2309 _mm512_setzero_pd (),
2310 (__mmask8) __U,
2311 _MM_FROUND_CUR_DIRECTION);
2312}
2313
2314static __inline__ __m512 __DEFAULT_FN_ATTRS
2315_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2316 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2317 (__v16sf) __B,
2318 (__v16sf) __W,
2319 (__mmask16) __U,
2320 _MM_FROUND_CUR_DIRECTION);
2321}
2322
2323static __inline__ __m512 __DEFAULT_FN_ATTRS
2324_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2325 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2326 (__v16sf) __B,
2327 (__v16sf)
2328 _mm512_setzero_ps (),
2329 (__mmask16) __U,
2330 _MM_FROUND_CUR_DIRECTION);
2331}
2332
Craig Topper8c18e112016-05-17 04:41:50 +00002333#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2334 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2335 (__v8df)(__m512d)(B), \
2336 (__v8df)_mm512_setzero_pd(), \
2337 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002338
Craig Topper8c18e112016-05-17 04:41:50 +00002339#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2340 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2341 (__v8df)(__m512d)(B), \
2342 (__v8df)(__m512d)(W), (__mmask8)(U), \
2343 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002344
Craig Topper8c18e112016-05-17 04:41:50 +00002345#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2346 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2347 (__v8df)(__m512d)(B), \
2348 (__v8df)_mm512_setzero_pd(), \
2349 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002350
Craig Topper8c18e112016-05-17 04:41:50 +00002351#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2352 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2353 (__v16sf)(__m512)(B), \
2354 (__v16sf)_mm512_setzero_ps(), \
2355 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002356
Craig Topper8c18e112016-05-17 04:41:50 +00002357#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2358 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2359 (__v16sf)(__m512)(B), \
2360 (__v16sf)(__m512)(W), (__mmask16)(U), \
2361 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002362
Craig Topper8c18e112016-05-17 04:41:50 +00002363#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2364 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2365 (__v16sf)(__m512)(B), \
2366 (__v16sf)_mm512_setzero_ps(), \
2367 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002368
Craig Topper72c7d512015-02-01 07:35:35 +00002369#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002370 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2371 (__v16sf)(__m512)(A), (__mmask16)-1, \
2372 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002373
Craig Topper8c18e112016-05-17 04:41:50 +00002374#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2375 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2376 (__v16sf)(__m512)(A), (__mmask16)(B), \
2377 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002378
Craig Topper8c18e112016-05-17 04:41:50 +00002379#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2380 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2381 (__v16sf)_mm512_setzero_ps(), \
2382 (__mmask16)(A), \
2383 _MM_FROUND_CUR_DIRECTION); })
2384
Craig Topper72c7d512015-02-01 07:35:35 +00002385#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002386 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2387 (__v8df)(__m512d)(A), (__mmask8)-1, \
2388 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002389
Craig Topper8c18e112016-05-17 04:41:50 +00002390#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2391 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2392 (__v8df)(__m512d)(A), (__mmask8)(B), \
2393 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002394
Craig Topper8c18e112016-05-17 04:41:50 +00002395#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2396 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2397 (__v8df)_mm512_setzero_pd(), \
2398 (__mmask8)(A), \
2399 _MM_FROUND_CUR_DIRECTION); })
2400
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002401#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002402 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2403 (__v8df)(__m512d)(B), \
2404 (__v8df)(__m512d)(C), (__mmask8)-1, \
2405 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002406
2407
2408#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002409 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2410 (__v8df)(__m512d)(B), \
2411 (__v8df)(__m512d)(C), \
2412 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002413
2414
2415#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002416 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2417 (__v8df)(__m512d)(B), \
2418 (__v8df)(__m512d)(C), \
2419 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002420
2421
2422#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002423 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2424 (__v8df)(__m512d)(B), \
2425 (__v8df)(__m512d)(C), \
2426 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002427
2428
2429#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002430 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2431 (__v8df)(__m512d)(B), \
2432 -(__v8df)(__m512d)(C), \
2433 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002434
2435
2436#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002437 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2438 (__v8df)(__m512d)(B), \
2439 -(__v8df)(__m512d)(C), \
2440 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002441
2442
2443#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002444 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2445 (__v8df)(__m512d)(B), \
2446 -(__v8df)(__m512d)(C), \
2447 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002448
2449
2450#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002451 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2452 (__v8df)(__m512d)(B), \
2453 (__v8df)(__m512d)(C), (__mmask8)-1, \
2454 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002455
2456
2457#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002458 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2459 (__v8df)(__m512d)(B), \
2460 (__v8df)(__m512d)(C), \
2461 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002462
2463
2464#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002465 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2466 (__v8df)(__m512d)(B), \
2467 (__v8df)(__m512d)(C), \
2468 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002469
2470
2471#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002472 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2473 (__v8df)(__m512d)(B), \
2474 -(__v8df)(__m512d)(C), \
2475 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002476
2477
2478#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002479 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2480 (__v8df)(__m512d)(B), \
2481 -(__v8df)(__m512d)(C), \
2482 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002483
2484
Michael Kupersteine45af542015-06-30 13:36:19 +00002485static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002486_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2487{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002488 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2489 (__v8df) __B,
2490 (__v8df) __C,
2491 (__mmask8) -1,
2492 _MM_FROUND_CUR_DIRECTION);
2493}
2494
Michael Kupersteine45af542015-06-30 13:36:19 +00002495static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002496_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2497{
2498 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2499 (__v8df) __B,
2500 (__v8df) __C,
2501 (__mmask8) __U,
2502 _MM_FROUND_CUR_DIRECTION);
2503}
2504
Michael Kupersteine45af542015-06-30 13:36:19 +00002505static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002506_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2507{
2508 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2509 (__v8df) __B,
2510 (__v8df) __C,
2511 (__mmask8) __U,
2512 _MM_FROUND_CUR_DIRECTION);
2513}
2514
Michael Kupersteine45af542015-06-30 13:36:19 +00002515static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002516_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2517{
2518 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2519 (__v8df) __B,
2520 (__v8df) __C,
2521 (__mmask8) __U,
2522 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002523}
2524
Michael Kupersteine45af542015-06-30 13:36:19 +00002525static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002526_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2527{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002528 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2529 (__v8df) __B,
2530 -(__v8df) __C,
2531 (__mmask8) -1,
2532 _MM_FROUND_CUR_DIRECTION);
2533}
2534
Michael Kupersteine45af542015-06-30 13:36:19 +00002535static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002536_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2537{
2538 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2539 (__v8df) __B,
2540 -(__v8df) __C,
2541 (__mmask8) __U,
2542 _MM_FROUND_CUR_DIRECTION);
2543}
2544
Michael Kupersteine45af542015-06-30 13:36:19 +00002545static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002546_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2547{
2548 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2549 (__v8df) __B,
2550 -(__v8df) __C,
2551 (__mmask8) __U,
2552 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002553}
2554
Michael Kupersteine45af542015-06-30 13:36:19 +00002555static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002556_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2557{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002558 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2559 (__v8df) __B,
2560 (__v8df) __C,
2561 (__mmask8) -1,
2562 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002563}
2564
Michael Kupersteine45af542015-06-30 13:36:19 +00002565static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002566_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2567{
2568 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2569 (__v8df) __B,
2570 (__v8df) __C,
2571 (__mmask8) __U,
2572 _MM_FROUND_CUR_DIRECTION);
2573}
2574
Michael Kupersteine45af542015-06-30 13:36:19 +00002575static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002576_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2577{
2578 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2579 (__v8df) __B,
2580 (__v8df) __C,
2581 (__mmask8) __U,
2582 _MM_FROUND_CUR_DIRECTION);
2583}
2584
Michael Kupersteine45af542015-06-30 13:36:19 +00002585static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002586_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2587{
2588 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2589 (__v8df) __B,
2590 -(__v8df) __C,
2591 (__mmask8) -1,
2592 _MM_FROUND_CUR_DIRECTION);
2593}
2594
Michael Kupersteine45af542015-06-30 13:36:19 +00002595static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002596_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2597{
2598 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2599 (__v8df) __B,
2600 -(__v8df) __C,
2601 (__mmask8) __U,
2602 _MM_FROUND_CUR_DIRECTION);
2603}
2604
2605#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002606 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2607 (__v16sf)(__m512)(B), \
2608 (__v16sf)(__m512)(C), (__mmask16)-1, \
2609 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002610
2611
2612#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002613 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2614 (__v16sf)(__m512)(B), \
2615 (__v16sf)(__m512)(C), \
2616 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002617
2618
2619#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002620 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2621 (__v16sf)(__m512)(B), \
2622 (__v16sf)(__m512)(C), \
2623 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002624
2625
2626#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002627 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2628 (__v16sf)(__m512)(B), \
2629 (__v16sf)(__m512)(C), \
2630 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002631
2632
2633#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002634 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2635 (__v16sf)(__m512)(B), \
2636 -(__v16sf)(__m512)(C), \
2637 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002638
2639
2640#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002641 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2642 (__v16sf)(__m512)(B), \
2643 -(__v16sf)(__m512)(C), \
2644 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002645
2646
2647#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002648 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2649 (__v16sf)(__m512)(B), \
2650 -(__v16sf)(__m512)(C), \
2651 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002652
2653
2654#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002655 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2656 (__v16sf)(__m512)(B), \
2657 (__v16sf)(__m512)(C), (__mmask16)-1, \
2658 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002659
2660
2661#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002662 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2663 (__v16sf)(__m512)(B), \
2664 (__v16sf)(__m512)(C), \
2665 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002666
2667
2668#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002669 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2670 (__v16sf)(__m512)(B), \
2671 (__v16sf)(__m512)(C), \
2672 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002673
2674
2675#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002676 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2677 (__v16sf)(__m512)(B), \
2678 -(__v16sf)(__m512)(C), \
2679 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002680
2681
2682#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002683 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2684 (__v16sf)(__m512)(B), \
2685 -(__v16sf)(__m512)(C), \
2686 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002687
2688
Michael Kupersteine45af542015-06-30 13:36:19 +00002689static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002690_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2691{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002692 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2693 (__v16sf) __B,
2694 (__v16sf) __C,
2695 (__mmask16) -1,
2696 _MM_FROUND_CUR_DIRECTION);
2697}
2698
Michael Kupersteine45af542015-06-30 13:36:19 +00002699static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002700_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2701{
2702 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2703 (__v16sf) __B,
2704 (__v16sf) __C,
2705 (__mmask16) __U,
2706 _MM_FROUND_CUR_DIRECTION);
2707}
2708
Michael Kupersteine45af542015-06-30 13:36:19 +00002709static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002710_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2711{
2712 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2713 (__v16sf) __B,
2714 (__v16sf) __C,
2715 (__mmask16) __U,
2716 _MM_FROUND_CUR_DIRECTION);
2717}
2718
Michael Kupersteine45af542015-06-30 13:36:19 +00002719static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002720_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2721{
2722 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2723 (__v16sf) __B,
2724 (__v16sf) __C,
2725 (__mmask16) __U,
2726 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002727}
2728
Michael Kupersteine45af542015-06-30 13:36:19 +00002729static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002730_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2731{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002732 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2733 (__v16sf) __B,
2734 -(__v16sf) __C,
2735 (__mmask16) -1,
2736 _MM_FROUND_CUR_DIRECTION);
2737}
2738
Michael Kupersteine45af542015-06-30 13:36:19 +00002739static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002740_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2741{
2742 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2743 (__v16sf) __B,
2744 -(__v16sf) __C,
2745 (__mmask16) __U,
2746 _MM_FROUND_CUR_DIRECTION);
2747}
2748
Michael Kupersteine45af542015-06-30 13:36:19 +00002749static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002750_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2751{
2752 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2753 (__v16sf) __B,
2754 -(__v16sf) __C,
2755 (__mmask16) __U,
2756 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002757}
2758
Michael Kupersteine45af542015-06-30 13:36:19 +00002759static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002760_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2761{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002762 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2763 (__v16sf) __B,
2764 (__v16sf) __C,
2765 (__mmask16) -1,
2766 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002767}
2768
Michael Kupersteine45af542015-06-30 13:36:19 +00002769static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002770_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2771{
2772 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2773 (__v16sf) __B,
2774 (__v16sf) __C,
2775 (__mmask16) __U,
2776 _MM_FROUND_CUR_DIRECTION);
2777}
2778
Michael Kupersteine45af542015-06-30 13:36:19 +00002779static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002780_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2781{
2782 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2783 (__v16sf) __B,
2784 (__v16sf) __C,
2785 (__mmask16) __U,
2786 _MM_FROUND_CUR_DIRECTION);
2787}
2788
Michael Kupersteine45af542015-06-30 13:36:19 +00002789static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002790_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2791{
2792 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2793 (__v16sf) __B,
2794 -(__v16sf) __C,
2795 (__mmask16) -1,
2796 _MM_FROUND_CUR_DIRECTION);
2797}
2798
Michael Kupersteine45af542015-06-30 13:36:19 +00002799static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002800_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2801{
2802 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2803 (__v16sf) __B,
2804 -(__v16sf) __C,
2805 (__mmask16) __U,
2806 _MM_FROUND_CUR_DIRECTION);
2807}
2808
2809#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002810 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2811 (__v8df)(__m512d)(B), \
2812 (__v8df)(__m512d)(C), \
2813 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002814
2815
2816#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002817 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2818 (__v8df)(__m512d)(B), \
2819 (__v8df)(__m512d)(C), \
2820 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002821
2822
2823#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002824 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2825 (__v8df)(__m512d)(B), \
2826 (__v8df)(__m512d)(C), \
2827 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002828
2829
2830#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002831 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2832 (__v8df)(__m512d)(B), \
2833 (__v8df)(__m512d)(C), \
2834 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002835
2836
2837#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002838 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2839 (__v8df)(__m512d)(B), \
2840 -(__v8df)(__m512d)(C), \
2841 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002842
2843
2844#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002845 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2846 (__v8df)(__m512d)(B), \
2847 -(__v8df)(__m512d)(C), \
2848 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002849
2850
2851#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002852 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2853 (__v8df)(__m512d)(B), \
2854 -(__v8df)(__m512d)(C), \
2855 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002856
2857
Michael Kupersteine45af542015-06-30 13:36:19 +00002858static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002859_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2860{
2861 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2862 (__v8df) __B,
2863 (__v8df) __C,
2864 (__mmask8) -1,
2865 _MM_FROUND_CUR_DIRECTION);
2866}
2867
Michael Kupersteine45af542015-06-30 13:36:19 +00002868static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002869_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2870{
2871 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2872 (__v8df) __B,
2873 (__v8df) __C,
2874 (__mmask8) __U,
2875 _MM_FROUND_CUR_DIRECTION);
2876}
2877
Michael Kupersteine45af542015-06-30 13:36:19 +00002878static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002879_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2880{
2881 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2882 (__v8df) __B,
2883 (__v8df) __C,
2884 (__mmask8) __U,
2885 _MM_FROUND_CUR_DIRECTION);
2886}
2887
Michael Kupersteine45af542015-06-30 13:36:19 +00002888static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002889_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2890{
2891 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2892 (__v8df) __B,
2893 (__v8df) __C,
2894 (__mmask8) __U,
2895 _MM_FROUND_CUR_DIRECTION);
2896}
2897
Michael Kupersteine45af542015-06-30 13:36:19 +00002898static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002899_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2900{
2901 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2902 (__v8df) __B,
2903 -(__v8df) __C,
2904 (__mmask8) -1,
2905 _MM_FROUND_CUR_DIRECTION);
2906}
2907
Michael Kupersteine45af542015-06-30 13:36:19 +00002908static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002909_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2910{
2911 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2912 (__v8df) __B,
2913 -(__v8df) __C,
2914 (__mmask8) __U,
2915 _MM_FROUND_CUR_DIRECTION);
2916}
2917
Michael Kupersteine45af542015-06-30 13:36:19 +00002918static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002919_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2920{
2921 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2922 (__v8df) __B,
2923 -(__v8df) __C,
2924 (__mmask8) __U,
2925 _MM_FROUND_CUR_DIRECTION);
2926}
2927
2928#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002929 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2930 (__v16sf)(__m512)(B), \
2931 (__v16sf)(__m512)(C), \
2932 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002933
2934
2935#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002936 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2937 (__v16sf)(__m512)(B), \
2938 (__v16sf)(__m512)(C), \
2939 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002940
2941
2942#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002943 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2944 (__v16sf)(__m512)(B), \
2945 (__v16sf)(__m512)(C), \
2946 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002947
2948
2949#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002950 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2951 (__v16sf)(__m512)(B), \
2952 (__v16sf)(__m512)(C), \
2953 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002954
2955
2956#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002957 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2958 (__v16sf)(__m512)(B), \
2959 -(__v16sf)(__m512)(C), \
2960 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002961
2962
2963#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002964 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2965 (__v16sf)(__m512)(B), \
2966 -(__v16sf)(__m512)(C), \
2967 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002968
2969
2970#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002971 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2972 (__v16sf)(__m512)(B), \
2973 -(__v16sf)(__m512)(C), \
2974 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002975
2976
Michael Kupersteine45af542015-06-30 13:36:19 +00002977static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002978_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2979{
2980 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2981 (__v16sf) __B,
2982 (__v16sf) __C,
2983 (__mmask16) -1,
2984 _MM_FROUND_CUR_DIRECTION);
2985}
2986
Michael Kupersteine45af542015-06-30 13:36:19 +00002987static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002988_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2989{
2990 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2991 (__v16sf) __B,
2992 (__v16sf) __C,
2993 (__mmask16) __U,
2994 _MM_FROUND_CUR_DIRECTION);
2995}
2996
Michael Kupersteine45af542015-06-30 13:36:19 +00002997static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002998_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2999{
3000 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
3001 (__v16sf) __B,
3002 (__v16sf) __C,
3003 (__mmask16) __U,
3004 _MM_FROUND_CUR_DIRECTION);
3005}
3006
Michael Kupersteine45af542015-06-30 13:36:19 +00003007static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003008_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3009{
3010 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3011 (__v16sf) __B,
3012 (__v16sf) __C,
3013 (__mmask16) __U,
3014 _MM_FROUND_CUR_DIRECTION);
3015}
3016
Michael Kupersteine45af542015-06-30 13:36:19 +00003017static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003018_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3019{
3020 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3021 (__v16sf) __B,
3022 -(__v16sf) __C,
3023 (__mmask16) -1,
3024 _MM_FROUND_CUR_DIRECTION);
3025}
3026
Michael Kupersteine45af542015-06-30 13:36:19 +00003027static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003028_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3029{
3030 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3031 (__v16sf) __B,
3032 -(__v16sf) __C,
3033 (__mmask16) __U,
3034 _MM_FROUND_CUR_DIRECTION);
3035}
3036
Michael Kupersteine45af542015-06-30 13:36:19 +00003037static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003038_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3039{
3040 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3041 (__v16sf) __B,
3042 -(__v16sf) __C,
3043 (__mmask16) __U,
3044 _MM_FROUND_CUR_DIRECTION);
3045}
3046
3047#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003048 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3049 (__v8df)(__m512d)(B), \
3050 (__v8df)(__m512d)(C), \
3051 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003052
3053
Michael Kupersteine45af542015-06-30 13:36:19 +00003054static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003055_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3056{
3057 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3058 (__v8df) __B,
3059 (__v8df) __C,
3060 (__mmask8) __U,
3061 _MM_FROUND_CUR_DIRECTION);
3062}
3063
3064#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003065 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3066 (__v16sf)(__m512)(B), \
3067 (__v16sf)(__m512)(C), \
3068 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003069
3070
Michael Kupersteine45af542015-06-30 13:36:19 +00003071static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003072_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3073{
3074 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3075 (__v16sf) __B,
3076 (__v16sf) __C,
3077 (__mmask16) __U,
3078 _MM_FROUND_CUR_DIRECTION);
3079}
3080
3081#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003082 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3083 (__v8df)(__m512d)(B), \
3084 (__v8df)(__m512d)(C), \
3085 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003086
3087
Michael Kupersteine45af542015-06-30 13:36:19 +00003088static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003089_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3090{
3091 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3092 (__v8df) __B,
3093 (__v8df) __C,
3094 (__mmask8) __U,
3095 _MM_FROUND_CUR_DIRECTION);
3096}
3097
3098#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003099 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3100 (__v16sf)(__m512)(B), \
3101 (__v16sf)(__m512)(C), \
3102 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003103
3104
Michael Kupersteine45af542015-06-30 13:36:19 +00003105static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003106_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3107{
3108 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3109 (__v16sf) __B,
3110 (__v16sf) __C,
3111 (__mmask16) __U,
3112 _MM_FROUND_CUR_DIRECTION);
3113}
3114
3115#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003116 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3117 (__v8df)(__m512d)(B), \
3118 (__v8df)(__m512d)(C), \
3119 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003120
3121
Michael Kupersteine45af542015-06-30 13:36:19 +00003122static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003123_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3124{
3125 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3126 (__v8df) __B,
3127 (__v8df) __C,
3128 (__mmask8) __U,
3129 _MM_FROUND_CUR_DIRECTION);
3130}
3131
3132#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003133 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3134 (__v16sf)(__m512)(B), \
3135 (__v16sf)(__m512)(C), \
3136 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003137
3138
Michael Kupersteine45af542015-06-30 13:36:19 +00003139static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003140_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3141{
3142 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3143 (__v16sf) __B,
3144 (__v16sf) __C,
3145 (__mmask16) __U,
3146 _MM_FROUND_CUR_DIRECTION);
3147}
3148
3149#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003150 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3151 (__v8df)(__m512d)(B), \
3152 (__v8df)(__m512d)(C), \
3153 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003154
3155
3156#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003157 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3158 (__v8df)(__m512d)(B), \
3159 (__v8df)(__m512d)(C), \
3160 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003161
3162
Michael Kupersteine45af542015-06-30 13:36:19 +00003163static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003164_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3165{
3166 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3167 (__v8df) __B,
3168 (__v8df) __C,
3169 (__mmask8) __U,
3170 _MM_FROUND_CUR_DIRECTION);
3171}
3172
Michael Kupersteine45af542015-06-30 13:36:19 +00003173static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003174_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3175{
3176 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3177 (__v8df) __B,
3178 (__v8df) __C,
3179 (__mmask8) __U,
3180 _MM_FROUND_CUR_DIRECTION);
3181}
3182
3183#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003184 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3185 (__v16sf)(__m512)(B), \
3186 (__v16sf)(__m512)(C), \
3187 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003188
3189
3190#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003191 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3192 (__v16sf)(__m512)(B), \
3193 (__v16sf)(__m512)(C), \
3194 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003195
3196
Michael Kupersteine45af542015-06-30 13:36:19 +00003197static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003198_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3199{
3200 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3201 (__v16sf) __B,
3202 (__v16sf) __C,
3203 (__mmask16) __U,
3204 _MM_FROUND_CUR_DIRECTION);
3205}
3206
Michael Kupersteine45af542015-06-30 13:36:19 +00003207static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003208_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3209{
3210 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3211 (__v16sf) __B,
3212 (__v16sf) __C,
3213 (__mmask16) __U,
3214 _MM_FROUND_CUR_DIRECTION);
3215}
3216
3217
3218
Adam Nemet0d5bb552014-07-28 17:14:40 +00003219/* Vector permutations */
3220
Michael Kupersteine45af542015-06-30 13:36:19 +00003221static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003222_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3223{
3224 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3225 /* idx */ ,
3226 (__v16si) __A,
3227 (__v16si) __B,
3228 (__mmask16) -1);
3229}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003230
3231static __inline__ __m512i __DEFAULT_FN_ATTRS
3232_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3233 __m512i __I, __m512i __B)
3234{
3235 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3236 /* idx */ ,
3237 (__v16si) __A,
3238 (__v16si) __B,
3239 (__mmask16) __U);
3240}
3241
3242static __inline__ __m512i __DEFAULT_FN_ATTRS
3243_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3244 __m512i __I, __m512i __B)
3245{
3246 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3247 /* idx */ ,
3248 (__v16si) __A,
3249 (__v16si) __B,
3250 (__mmask16) __U);
3251}
3252
Michael Kupersteine45af542015-06-30 13:36:19 +00003253static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003254_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3255{
3256 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3257 /* idx */ ,
3258 (__v8di) __A,
3259 (__v8di) __B,
3260 (__mmask8) -1);
3261}
3262
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003263static __inline__ __m512i __DEFAULT_FN_ATTRS
3264_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3265 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003266{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003267 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003268 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003269 (__v8di) __A,
3270 (__v8di) __B,
3271 (__mmask8) __U);
3272}
3273
3274
3275static __inline__ __m512i __DEFAULT_FN_ATTRS
3276_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3277 __m512i __I, __m512i __B)
3278{
3279 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3280 /* idx */ ,
3281 (__v8di) __A,
3282 (__v8di) __B,
3283 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003284}
3285
Craig Topper67826a52015-02-01 07:35:40 +00003286#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3287 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003288 (__v8di)(__m512i)(B), (int)(I), \
3289 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003290 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003291
Craig Topper8c18e112016-05-17 04:41:50 +00003292#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3293 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3294 (__v8di)(__m512i)(B), (int)(imm), \
3295 (__v8di)(__m512i)(W), \
3296 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003297
Craig Topper8c18e112016-05-17 04:41:50 +00003298#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3299 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3300 (__v8di)(__m512i)(B), (int)(imm), \
3301 (__v8di)_mm512_setzero_si512(), \
3302 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003303
Craig Topper67826a52015-02-01 07:35:40 +00003304#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003305 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3306 (__v16si)(__m512i)(B), (int)(I), \
3307 (__v16si)_mm512_setzero_si512(), \
3308 (__mmask16)-1); })
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003309
Craig Topper8c18e112016-05-17 04:41:50 +00003310#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3311 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3312 (__v16si)(__m512i)(B), (int)(imm), \
3313 (__v16si)(__m512i)(W), \
3314 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003315
Craig Topper8c18e112016-05-17 04:41:50 +00003316#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3317 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3318 (__v16si)(__m512i)(B), (int)(imm), \
3319 (__v16si)_mm512_setzero_si512(), \
3320 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003321/* Vector Extract */
3322
3323#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003324 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3325 (__v4df)_mm256_setzero_si256(), \
3326 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003327
Craig Topper8c18e112016-05-17 04:41:50 +00003328#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3329 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3330 (__v4df)(__m256d)(W), \
3331 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003332
Craig Topper8c18e112016-05-17 04:41:50 +00003333#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3334 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3335 (__v4df)_mm256_setzero_pd(), \
3336 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003337
Adam Nemetf893ede2015-01-19 20:12:05 +00003338#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003339 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3340 (__v4sf)_mm_setzero_ps(), \
3341 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003342
Craig Topper8c18e112016-05-17 04:41:50 +00003343#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3344 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3345 (__v4sf)(__m128)(W), \
3346 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003347
Craig Topper8c18e112016-05-17 04:41:50 +00003348#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3349 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3350 (__v4sf)_mm_setzero_ps(), \
3351 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003352/* Vector Blend */
3353
Michael Kupersteine45af542015-06-30 13:36:19 +00003354static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003355_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3356{
3357 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3358 (__v8df) __W,
3359 (__mmask8) __U);
3360}
3361
Michael Kupersteine45af542015-06-30 13:36:19 +00003362static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003363_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3364{
3365 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3366 (__v16sf) __W,
3367 (__mmask16) __U);
3368}
3369
Michael Kupersteine45af542015-06-30 13:36:19 +00003370static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003371_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3372{
3373 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3374 (__v8di) __W,
3375 (__mmask8) __U);
3376}
3377
Michael Kupersteine45af542015-06-30 13:36:19 +00003378static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003379_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3380{
3381 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3382 (__v16si) __W,
3383 (__mmask16) __U);
3384}
3385
3386/* Compare */
3387
Craig Topper53565c62015-02-01 22:27:40 +00003388#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3389 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003390 (__v16sf)(__m512)(B), (int)(P), \
3391 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003392
Craig Topper53565c62015-02-01 22:27:40 +00003393#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3394 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003395 (__v16sf)(__m512)(B), (int)(P), \
3396 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003397
3398#define _mm512_cmp_ps_mask(A, B, P) \
3399 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3400
3401#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3402 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3403
3404#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3405 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003406 (__v8df)(__m512d)(B), (int)(P), \
3407 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003408
3409#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3410 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003411 (__v8df)(__m512d)(B), (int)(P), \
3412 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003413
3414#define _mm512_cmp_pd_mask(A, B, P) \
3415 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3416
3417#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3418 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003419
3420/* Conversion */
3421
Michael Kupersteine45af542015-06-30 13:36:19 +00003422static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003423_mm512_cvttps_epu32(__m512 __A)
3424{
3425 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3426 (__v16si)
3427 _mm512_setzero_si512 (),
3428 (__mmask16) -1,
3429 _MM_FROUND_CUR_DIRECTION);
3430}
3431
Michael Zuckermanf1544752016-05-09 10:32:51 +00003432static __inline__ __m512i __DEFAULT_FN_ATTRS
3433_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3434{
3435 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3436 (__v16si) __W,
3437 (__mmask16) __U,
3438 _MM_FROUND_CUR_DIRECTION);
3439}
3440
3441static __inline__ __m512i __DEFAULT_FN_ATTRS
3442_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3443{
3444 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3445 (__v16si) _mm512_setzero_si512 (),
3446 (__mmask16) __U,
3447 _MM_FROUND_CUR_DIRECTION);
3448}
3449
Craig Topper72c7d512015-02-01 07:35:35 +00003450#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003451 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003452 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003453 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003454
Michael Zuckerman186d8672016-05-31 11:27:34 +00003455#define _mm512_mask_cvt_roundepi32_ps( __W, __U, __A, __R) __extension__ ({ \
3456__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3457 (__v16sf)( __W),\
3458 (__mmask16)( __U),( __R));\
3459})
3460
3461#define _mm512_maskz_cvt_roundepi32_ps( __U, __A, __R) __extension__ ({ \
3462__builtin_ia32_cvtdq2ps512_mask ((__v16si)( __A),\
3463 (__v16sf)\
3464 _mm512_setzero_ps (),\
3465 (__mmask16)( __U),( __R));\
3466})
3467
Craig Topper72c7d512015-02-01 07:35:35 +00003468#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003469 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003470 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003471 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003472
Michael Zuckerman186d8672016-05-31 11:27:34 +00003473#define _mm512_mask_cvt_roundepu32_ps( __W, __U, __A, __R) __extension__ ({ \
3474__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3475 (__v16sf)( __W),\
3476 (__mmask16)( __U),( __R));\
3477})
3478
3479#define _mm512_maskz_cvt_roundepu32_ps( __U, __A, __R) __extension__ ({ \
3480__builtin_ia32_cvtudq2ps512_mask ((__v16si)( __A),\
3481 (__v16sf)\
3482 _mm512_setzero_ps (),\
3483 (__mmask16)( __U),( __R));\
3484})
3485
Michael Zuckermanf1544752016-05-09 10:32:51 +00003486static __inline__ __m512 __DEFAULT_FN_ATTRS
3487_mm512_cvtepu32_ps (__m512i __A)
3488{
3489 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3490 (__v16sf) _mm512_undefined_ps (),
3491 (__mmask16) -1,
3492 _MM_FROUND_CUR_DIRECTION);
3493}
3494
3495static __inline__ __m512 __DEFAULT_FN_ATTRS
3496_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3497{
3498 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3499 (__v16sf) __W,
3500 (__mmask16) __U,
3501 _MM_FROUND_CUR_DIRECTION);
3502}
3503
3504static __inline__ __m512 __DEFAULT_FN_ATTRS
3505_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3506{
3507 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3508 (__v16sf) _mm512_setzero_ps (),
3509 (__mmask16) __U,
3510 _MM_FROUND_CUR_DIRECTION);
3511}
3512
Michael Kupersteine45af542015-06-30 13:36:19 +00003513static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003514_mm512_cvtepi32_pd(__m256i __A)
3515{
3516 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003517 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003518 _mm512_setzero_pd (),
3519 (__mmask8) -1);
3520}
3521
Michael Zuckermanf1544752016-05-09 10:32:51 +00003522static __inline__ __m512d __DEFAULT_FN_ATTRS
3523_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3524{
3525 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3526 (__v8df) __W,
3527 (__mmask8) __U);
3528}
3529
3530static __inline__ __m512d __DEFAULT_FN_ATTRS
3531_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3532{
3533 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3534 (__v8df) _mm512_setzero_pd (),
3535 (__mmask8) __U);
3536}
3537
3538static __inline__ __m512 __DEFAULT_FN_ATTRS
3539_mm512_cvtepi32_ps (__m512i __A)
3540{
3541 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3542 (__v16sf) _mm512_undefined_ps (),
3543 (__mmask16) -1,
3544 _MM_FROUND_CUR_DIRECTION);
3545}
3546
3547static __inline__ __m512 __DEFAULT_FN_ATTRS
3548_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3549{
3550 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3551 (__v16sf) __W,
3552 (__mmask16) __U,
3553 _MM_FROUND_CUR_DIRECTION);
3554}
3555
3556static __inline__ __m512 __DEFAULT_FN_ATTRS
3557_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3558{
3559 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3560 (__v16sf) _mm512_setzero_ps (),
3561 (__mmask16) __U,
3562 _MM_FROUND_CUR_DIRECTION);
3563}
3564
Michael Kupersteine45af542015-06-30 13:36:19 +00003565static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003566_mm512_cvtepu32_pd(__m256i __A)
3567{
3568 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3569 (__v8df)
3570 _mm512_setzero_pd (),
3571 (__mmask8) -1);
3572}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003573
Michael Zuckermanf1544752016-05-09 10:32:51 +00003574static __inline__ __m512d __DEFAULT_FN_ATTRS
3575_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3576{
3577 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3578 (__v8df) __W,
3579 (__mmask8) __U);
3580}
3581
3582static __inline__ __m512d __DEFAULT_FN_ATTRS
3583_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3584{
3585 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3586 (__v8df) _mm512_setzero_pd (),
3587 (__mmask8) __U);
3588}
3589
Craig Topper72c7d512015-02-01 07:35:35 +00003590#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003591 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003592 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003593 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003594
Michael Zuckerman186d8672016-05-31 11:27:34 +00003595#define _mm512_mask_cvt_roundpd_ps(W, U, A, R) __extension__ ({ \
3596 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3597 (__v8sf)(W), \
3598 (__mmask8)(U), (int)(R)); })
3599
3600#define _mm512_maskz_cvt_roundpd_ps(U, A, R) __extension__ ({ \
3601 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
3602 (__v8sf)_mm256_setzero_ps(), \
3603 (__mmask8)(U), (int)(R)); })
3604
Michael Zuckermanf1544752016-05-09 10:32:51 +00003605static __inline__ __m256 __DEFAULT_FN_ATTRS
3606_mm512_cvtpd_ps (__m512d __A)
3607{
3608 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3609 (__v8sf) _mm256_undefined_ps (),
3610 (__mmask8) -1,
3611 _MM_FROUND_CUR_DIRECTION);
3612}
3613
3614static __inline__ __m256 __DEFAULT_FN_ATTRS
3615_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3616{
3617 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3618 (__v8sf) __W,
3619 (__mmask8) __U,
3620 _MM_FROUND_CUR_DIRECTION);
3621}
3622
3623static __inline__ __m256 __DEFAULT_FN_ATTRS
3624_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3625{
3626 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3627 (__v8sf) _mm256_setzero_ps (),
3628 (__mmask8) __U,
3629 _MM_FROUND_CUR_DIRECTION);
3630}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003631
Craig Topper72c7d512015-02-01 07:35:35 +00003632#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003633 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003634 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003635 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003636
Craig Topper8c18e112016-05-17 04:41:50 +00003637#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3638 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3639 (__v16hi)(__m256i)(U), \
3640 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003641
Craig Topper8c18e112016-05-17 04:41:50 +00003642#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3643 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3644 (__v16hi)_mm256_setzero_si256(), \
3645 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003646
3647
Michael Kupersteine45af542015-06-30 13:36:19 +00003648static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003649_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003650{
3651 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003652 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003653 _mm512_setzero_ps (),
3654 (__mmask16) -1,
3655 _MM_FROUND_CUR_DIRECTION);
3656}
3657
Michael Zuckermanf1544752016-05-09 10:32:51 +00003658static __inline__ __m512 __DEFAULT_FN_ATTRS
3659_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003660{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003661 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3662 (__v16sf) __W,
3663 (__mmask16) __U,
3664 _MM_FROUND_CUR_DIRECTION);
3665}
3666
3667static __inline__ __m512 __DEFAULT_FN_ATTRS
3668_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3669{
3670 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3671 (__v16sf) _mm512_setzero_ps (),
3672 (__mmask16) __U,
3673 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003674}
3675
Michael Zuckerman186d8672016-05-31 11:27:34 +00003676#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
3677 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3678 (__v8si)_mm256_setzero_si256(), \
3679 (__mmask8)-1, (int)(R)); })
3680
3681#define _mm512_mask_cvtt_roundpd_epi32(W, U, A, R) __extension__ ({ \
3682 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3683 (__v8si)(W), \
3684 (__mmask8)(U), (int)(R)); })
3685
3686#define _mm512_maskz_cvtt_roundpd_epi32( U, A, R) __extension__ ({ \
3687 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
3688 (__v8si)_mm256_setzero_si256(), \
3689 (__mmask8)(U), (int)(R)); })
3690
Michael Kupersteine45af542015-06-30 13:36:19 +00003691static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003692_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003693{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003694 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003695 (__v8si)_mm256_setzero_si256(),
3696 (__mmask8) -1,
3697 _MM_FROUND_CUR_DIRECTION);
3698}
3699
Michael Zuckermanf1544752016-05-09 10:32:51 +00003700static __inline__ __m256i __DEFAULT_FN_ATTRS
3701_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3702{
3703 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3704 (__v8si) __W,
3705 (__mmask8) __U,
3706 _MM_FROUND_CUR_DIRECTION);
3707}
3708
3709static __inline__ __m256i __DEFAULT_FN_ATTRS
3710_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3711{
3712 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3713 (__v8si) _mm256_setzero_si256 (),
3714 (__mmask8) __U,
3715 _MM_FROUND_CUR_DIRECTION);
3716}
3717
Craig Topper72c7d512015-02-01 07:35:35 +00003718#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003719 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003720 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003721 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003722
Michael Zuckerman186d8672016-05-31 11:27:34 +00003723#define _mm512_mask_cvtt_roundps_epi32( W, U, A, R) __extension__ ({ \
3724 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3725 (__v16si)(W), \
3726 (__mmask16)(U), (int)(R)); })
3727
3728#define _mm512_maskz_cvtt_roundps_epi32( U, A, R) __extension__ ({ \
3729 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
3730 (__v16si)_mm512_setzero_si512(), \
3731 (__mmask16)(U), (int)(R)); })
3732
Michael Zuckermanf1544752016-05-09 10:32:51 +00003733static __inline __m512i __DEFAULT_FN_ATTRS
3734_mm512_cvttps_epi32(__m512 __a)
3735{
3736 return (__m512i)
3737 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3738 (__v16si) _mm512_setzero_si512 (),
3739 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3740}
3741
3742static __inline__ __m512i __DEFAULT_FN_ATTRS
3743_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3744{
3745 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3746 (__v16si) __W,
3747 (__mmask16) __U,
3748 _MM_FROUND_CUR_DIRECTION);
3749}
3750
3751static __inline__ __m512i __DEFAULT_FN_ATTRS
3752_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3753{
3754 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3755 (__v16si) _mm512_setzero_si512 (),
3756 (__mmask16) __U,
3757 _MM_FROUND_CUR_DIRECTION);
3758}
Craig Topper72c7d512015-02-01 07:35:35 +00003759
3760#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003761 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003762 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003763 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003764
Michael Zuckerman186d8672016-05-31 11:27:34 +00003765#define _mm512_mask_cvt_roundps_epi32( __W, __U, __A, __R) __extension__ ({ \
3766 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
3767 (__v16si)( __W),\
3768 (__mmask16)( __U),( __R));\
3769})
3770
3771#define _mm512_maskz_cvt_roundps_epi32( __U, __A, __R) __extension__ ({ \
3772 (__m512i)__builtin_ia32_cvtps2dq512_mask ((__v16sf)( __A),\
3773 (__v16si)\
3774 _mm512_setzero_si512 (),\
3775 (__mmask16)( __U),( __R));\
3776})
3777
Michael Zuckermanf1544752016-05-09 10:32:51 +00003778static __inline__ __m512i __DEFAULT_FN_ATTRS
3779_mm512_cvtps_epi32 (__m512 __A)
3780{
3781 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3782 (__v16si) _mm512_undefined_epi32 (),
3783 (__mmask16) -1,
3784 _MM_FROUND_CUR_DIRECTION);
3785}
3786
3787static __inline__ __m512i __DEFAULT_FN_ATTRS
3788_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3789{
3790 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3791 (__v16si) __W,
3792 (__mmask16) __U,
3793 _MM_FROUND_CUR_DIRECTION);
3794}
3795
3796static __inline__ __m512i __DEFAULT_FN_ATTRS
3797_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3798{
3799 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3800 (__v16si)
3801 _mm512_setzero_si512 (),
3802 (__mmask16) __U,
3803 _MM_FROUND_CUR_DIRECTION);
3804}
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003805
Craig Topper72c7d512015-02-01 07:35:35 +00003806#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003807 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003808 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003809 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003810
Michael Zuckerman186d8672016-05-31 11:27:34 +00003811#define _mm512_mask_cvt_roundpd_epi32( W, U, A, R) __extension__ ({ \
3812 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3813 (__v8si)(W), \
3814 (__mmask8)(U), (int)(R)); })
3815
3816#define _mm512_maskz_cvt_roundpd_epi32(U, A, R) __extension__ ({ \
3817 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
3818 (__v8si)_mm256_setzero_si256(), \
3819 (__mmask8)(U), (int)(R)); })
3820
Michael Zuckermanf1544752016-05-09 10:32:51 +00003821static __inline__ __m256i __DEFAULT_FN_ATTRS
3822_mm512_cvtpd_epi32 (__m512d __A)
3823{
3824 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3825 (__v8si)
3826 _mm256_undefined_si256 (),
3827 (__mmask8) -1,
3828 _MM_FROUND_CUR_DIRECTION);
3829}
3830
3831static __inline__ __m256i __DEFAULT_FN_ATTRS
3832_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3833{
3834 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3835 (__v8si) __W,
3836 (__mmask8) __U,
3837 _MM_FROUND_CUR_DIRECTION);
3838}
3839
3840static __inline__ __m256i __DEFAULT_FN_ATTRS
3841_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3842{
3843 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3844 (__v8si)
3845 _mm256_setzero_si256 (),
3846 (__mmask8) __U,
3847 _MM_FROUND_CUR_DIRECTION);
3848}
3849
Craig Topper72c7d512015-02-01 07:35:35 +00003850#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003851 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003852 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003853 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003854
Michael Zuckerman186d8672016-05-31 11:27:34 +00003855#define _mm512_mask_cvt_roundps_epu32( __W, __U, __A, __R) __extension__ ({ \
3856 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
3857 (__v16si)( __W),\
3858 (__mmask16)( __U),( __R));\
3859})
3860
3861#define _mm512_maskz_cvt_roundps_epu32( __U, __A, __R) __extension__ ({ \
3862 (__m512i)__builtin_ia32_cvtps2udq512_mask ((__v16sf)( __A),\
3863 (__v16si)\
3864 _mm512_setzero_si512 (),\
3865 (__mmask16)( __U),( __R));\
3866})
3867
Michael Zuckermanf1544752016-05-09 10:32:51 +00003868static __inline__ __m512i __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00003869_mm512_cvtps_epu32 ( __m512 __A)
Michael Zuckermanf1544752016-05-09 10:32:51 +00003870{
3871 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3872 (__v16si)\
3873 _mm512_undefined_epi32 (),\
3874 (__mmask16) -1,\
3875 _MM_FROUND_CUR_DIRECTION);\
3876}
3877
3878static __inline__ __m512i __DEFAULT_FN_ATTRS
3879_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3880{
3881 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3882 (__v16si) __W,
3883 (__mmask16) __U,
3884 _MM_FROUND_CUR_DIRECTION);
3885}
3886
Michael Zuckerman9fcf3552016-05-30 13:22:12 +00003887static __inline__ __m512i __DEFAULT_FN_ATTRS
3888_mm512_maskz_cvtps_epu32 ( __mmask16 __U, __m512 __A)
3889{
3890 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3891 (__v16si)
3892 _mm512_setzero_si512 (),
3893 (__mmask16) __U ,
3894 _MM_FROUND_CUR_DIRECTION);
3895}
3896
Craig Topper72c7d512015-02-01 07:35:35 +00003897#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003898 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003899 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003900 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003901
Michael Zuckerman186d8672016-05-31 11:27:34 +00003902#define _mm512_mask_cvt_roundpd_epu32( W, U, A, R) __extension__ ({ \
3903 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
3904 (__v8si)(W), \
3905 (__mmask8) (U), (int)(R)); })
3906
3907#define _mm512_maskz_cvt_roundpd_epu32(U, A, R) __extension__ ({ \
3908 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
3909 (__v8si)_mm256_setzero_si256(), \
3910 (__mmask8)(U), (int)(R)); })
3911
Michael Zuckermanf1544752016-05-09 10:32:51 +00003912static __inline__ __m256i __DEFAULT_FN_ATTRS
3913_mm512_cvtpd_epu32 (__m512d __A)
3914{
3915 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3916 (__v8si)
3917 _mm256_undefined_si256 (),
3918 (__mmask8) -1,
3919 _MM_FROUND_CUR_DIRECTION);
3920}
3921
3922static __inline__ __m256i __DEFAULT_FN_ATTRS
3923_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3924{
3925 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3926 (__v8si) __W,
3927 (__mmask8) __U,
3928 _MM_FROUND_CUR_DIRECTION);
3929}
3930
3931static __inline__ __m256i __DEFAULT_FN_ATTRS
3932_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3933{
3934 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3935 (__v8si)
3936 _mm256_setzero_si256 (),
3937 (__mmask8) __U,
3938 _MM_FROUND_CUR_DIRECTION);
3939}
Adam Nemet63a951e2015-01-14 01:31:17 +00003940/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003941static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003942_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3943{
3944 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3945}
3946
Michael Kupersteine45af542015-06-30 13:36:19 +00003947static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003948_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3949{
3950 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3951}
3952
Michael Kupersteine45af542015-06-30 13:36:19 +00003953static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003954_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3955{
3956 return __builtin_shufflevector(__a, __b,
3957 2, 18, 3, 19,
3958 2+4, 18+4, 3+4, 19+4,
3959 2+8, 18+8, 3+8, 19+8,
3960 2+12, 18+12, 3+12, 19+12);
3961}
3962
Michael Kupersteine45af542015-06-30 13:36:19 +00003963static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003964_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3965{
3966 return __builtin_shufflevector(__a, __b,
3967 0, 16, 1, 17,
3968 0+4, 16+4, 1+4, 17+4,
3969 0+8, 16+8, 1+8, 17+8,
3970 0+12, 16+12, 1+12, 17+12);
3971}
3972
Adam Nemet0d5bb552014-07-28 17:14:40 +00003973/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003974
Michael Kupersteine45af542015-06-30 13:36:19 +00003975static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003976_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003977{
3978 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3979 (__v16si) __B,
3980 (__mmask16) -1);
3981}
3982
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003983static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3984_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3985{
3986 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3987 (__v16si) __B, __U);
3988}
3989
Michael Kupersteine45af542015-06-30 13:36:19 +00003990static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003991_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003992{
3993 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3994 (__v8di) __B,
3995 (__mmask8) -1);
3996}
3997
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003998static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3999_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
4000{
4001 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
4002}
4003
4004
Adam Nemet0d5bb552014-07-28 17:14:40 +00004005/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004006
Michael Kupersteine45af542015-06-30 13:36:19 +00004007static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004008_mm512_loadu_si512 (void const *__P)
4009{
Craig Topper4537ea72016-05-14 06:03:13 +00004010 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004011 (__v16si)
4012 _mm512_setzero_si512 (),
4013 (__mmask16) -1);
4014}
4015
4016static __inline __m512i __DEFAULT_FN_ATTRS
4017_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4018{
Craig Topper4537ea72016-05-14 06:03:13 +00004019 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004020 (__v16si) __W,
4021 (__mmask16) __U);
4022}
4023
4024
4025static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004026_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004027{
Craig Topper4537ea72016-05-14 06:03:13 +00004028 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004029 (__v16si)
4030 _mm512_setzero_si512 (),
4031 (__mmask16) __U);
4032}
4033
Michael Kupersteine45af542015-06-30 13:36:19 +00004034static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004035_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
4036{
Craig Topper4537ea72016-05-14 06:03:13 +00004037 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004038 (__v8di) __W,
4039 (__mmask8) __U);
4040}
4041
4042static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004043_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004044{
Craig Topper4537ea72016-05-14 06:03:13 +00004045 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004046 (__v8di)
4047 _mm512_setzero_si512 (),
4048 (__mmask8) __U);
4049}
4050
Michael Kupersteine45af542015-06-30 13:36:19 +00004051static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004052_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
4053{
Craig Topper4537ea72016-05-14 06:03:13 +00004054 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004055 (__v16sf) __W,
4056 (__mmask16) __U);
4057}
4058
4059static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004060_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004061{
Craig Topper4537ea72016-05-14 06:03:13 +00004062 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004063 (__v16sf)
4064 _mm512_setzero_ps (),
4065 (__mmask16) __U);
4066}
4067
Michael Kupersteine45af542015-06-30 13:36:19 +00004068static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004069_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004070{
Craig Topper4537ea72016-05-14 06:03:13 +00004071 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004072 (__v8df) __W,
4073 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00004074}
4075
Michael Kupersteine45af542015-06-30 13:36:19 +00004076static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004077_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00004078{
Craig Topper4537ea72016-05-14 06:03:13 +00004079 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00004080 (__v8df)
4081 _mm512_setzero_pd (),
4082 (__mmask8) __U);
4083}
4084
Michael Kupersteine45af542015-06-30 13:36:19 +00004085static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004086_mm512_loadu_pd(double const *__p)
4087{
4088 struct __loadu_pd {
4089 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004090 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004091 return ((struct __loadu_pd*)__p)->__v;
4092}
4093
Michael Kupersteine45af542015-06-30 13:36:19 +00004094static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00004095_mm512_loadu_ps(float const *__p)
4096{
4097 struct __loadu_ps {
4098 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00004099 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00004100 return ((struct __loadu_ps*)__p)->__v;
4101}
4102
Michael Kupersteine45af542015-06-30 13:36:19 +00004103static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004104_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004105{
4106 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
4107 (__v16sf)
4108 _mm512_setzero_ps (),
4109 (__mmask16) -1);
4110}
4111
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004112static __inline __m512 __DEFAULT_FN_ATTRS
4113_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
4114{
4115 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
4116 (__v16sf) __W,
4117 (__mmask16) __U);
4118}
4119
4120static __inline __m512 __DEFAULT_FN_ATTRS
4121_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4122{
4123 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4124 (__v16sf)
4125 _mm512_setzero_ps (),
4126 (__mmask16) __U);
4127}
4128
Michael Kupersteine45af542015-06-30 13:36:19 +00004129static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004130_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004131{
4132 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4133 (__v8df)
4134 _mm512_setzero_pd (),
4135 (__mmask8) -1);
4136}
4137
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004138static __inline __m512d __DEFAULT_FN_ATTRS
4139_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4140{
4141 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4142 (__v8df) __W,
4143 (__mmask8) __U);
4144}
4145
4146static __inline __m512d __DEFAULT_FN_ATTRS
4147_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4148{
4149 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4150 (__v8df)
4151 _mm512_setzero_pd (),
4152 (__mmask8) __U);
4153}
4154
4155static __inline __m512i __DEFAULT_FN_ATTRS
4156_mm512_load_si512 (void const *__P)
4157{
4158 return *(__m512i *) __P;
4159}
4160
4161static __inline __m512i __DEFAULT_FN_ATTRS
4162_mm512_load_epi32 (void const *__P)
4163{
4164 return *(__m512i *) __P;
4165}
4166
4167static __inline __m512i __DEFAULT_FN_ATTRS
4168_mm512_load_epi64 (void const *__P)
4169{
4170 return *(__m512i *) __P;
4171}
4172
Adam Nemet0d5bb552014-07-28 17:14:40 +00004173/* SIMD store ops */
4174
Michael Kupersteine45af542015-06-30 13:36:19 +00004175static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004176_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004177{
Craig Topper4537ea72016-05-14 06:03:13 +00004178 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004179 (__mmask8) __U);
4180}
4181
Michael Kupersteine45af542015-06-30 13:36:19 +00004182static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004183_mm512_storeu_si512 (void *__P, __m512i __A)
4184{
Craig Topper4537ea72016-05-14 06:03:13 +00004185 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004186 (__mmask16) -1);
4187}
4188
4189static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004190_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004191{
Craig Topper4537ea72016-05-14 06:03:13 +00004192 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004193 (__mmask16) __U);
4194}
4195
Michael Kupersteine45af542015-06-30 13:36:19 +00004196static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004197_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004198{
Craig Topper4537ea72016-05-14 06:03:13 +00004199 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004200}
4201
Michael Kupersteine45af542015-06-30 13:36:19 +00004202static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004203_mm512_storeu_pd(void *__P, __m512d __A)
4204{
Craig Topper4537ea72016-05-14 06:03:13 +00004205 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004206}
4207
Michael Kupersteine45af542015-06-30 13:36:19 +00004208static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004209_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004210{
Craig Topper4537ea72016-05-14 06:03:13 +00004211 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004212 (__mmask16) __U);
4213}
4214
Michael Kupersteine45af542015-06-30 13:36:19 +00004215static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004216_mm512_storeu_ps(void *__P, __m512 __A)
4217{
Craig Topper4537ea72016-05-14 06:03:13 +00004218 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004219}
4220
Michael Kupersteine45af542015-06-30 13:36:19 +00004221static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004222_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004223{
Adam Nemetc0cff242015-01-16 18:51:50 +00004224 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004225}
4226
Michael Kupersteine45af542015-06-30 13:36:19 +00004227static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004228_mm512_store_pd(void *__P, __m512d __A)
4229{
4230 *(__m512d*)__P = __A;
4231}
4232
Michael Kupersteine45af542015-06-30 13:36:19 +00004233static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004234_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4235{
4236 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4237 (__mmask16) __U);
4238}
4239
Michael Kupersteine45af542015-06-30 13:36:19 +00004240static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004241_mm512_store_ps(void *__P, __m512 __A)
4242{
4243 *(__m512*)__P = __A;
4244}
4245
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004246static __inline void __DEFAULT_FN_ATTRS
4247_mm512_store_si512 (void *__P, __m512i __A)
4248{
4249 *(__m512i *) __P = __A;
4250}
4251
4252static __inline void __DEFAULT_FN_ATTRS
4253_mm512_store_epi32 (void *__P, __m512i __A)
4254{
4255 *(__m512i *) __P = __A;
4256}
4257
4258static __inline void __DEFAULT_FN_ATTRS
4259_mm512_store_epi64 (void *__P, __m512i __A)
4260{
4261 *(__m512i *) __P = __A;
4262}
4263
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004264/* Mask ops */
4265
Michael Kupersteine45af542015-06-30 13:36:19 +00004266static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004267_mm512_knot(__mmask16 __M)
4268{
4269 return __builtin_ia32_knothi(__M);
4270}
4271
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004272/* Integer compare */
4273
Michael Kupersteine45af542015-06-30 13:36:19 +00004274static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004275_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4276 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4277 (__mmask16)-1);
4278}
4279
Michael Kupersteine45af542015-06-30 13:36:19 +00004280static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004281_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4282 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4283 __u);
4284}
4285
Michael Kupersteine45af542015-06-30 13:36:19 +00004286static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004287_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4288 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4289 (__mmask16)-1);
4290}
4291
Michael Kupersteine45af542015-06-30 13:36:19 +00004292static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004293_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4294 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4295 __u);
4296}
4297
Michael Kupersteine45af542015-06-30 13:36:19 +00004298static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004299_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4300 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4301 __u);
4302}
4303
Michael Kupersteine45af542015-06-30 13:36:19 +00004304static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004305_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4306 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4307 (__mmask8)-1);
4308}
4309
Michael Kupersteine45af542015-06-30 13:36:19 +00004310static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004311_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4312 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4313 (__mmask8)-1);
4314}
4315
Michael Kupersteine45af542015-06-30 13:36:19 +00004316static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004317_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4318 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4319 __u);
4320}
4321
Michael Kupersteine45af542015-06-30 13:36:19 +00004322static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004323_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4324 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4325 (__mmask16)-1);
4326}
4327
Michael Kupersteine45af542015-06-30 13:36:19 +00004328static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004329_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4330 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4331 __u);
4332}
4333
Michael Kupersteine45af542015-06-30 13:36:19 +00004334static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004335_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4336 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4337 (__mmask16)-1);
4338}
4339
Michael Kupersteine45af542015-06-30 13:36:19 +00004340static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004341_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4342 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4343 __u);
4344}
4345
Michael Kupersteine45af542015-06-30 13:36:19 +00004346static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004347_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4348 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4349 (__mmask8)-1);
4350}
4351
Michael Kupersteine45af542015-06-30 13:36:19 +00004352static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004353_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4354 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4355 __u);
4356}
4357
Michael Kupersteine45af542015-06-30 13:36:19 +00004358static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004359_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4360 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4361 (__mmask8)-1);
4362}
4363
Michael Kupersteine45af542015-06-30 13:36:19 +00004364static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004365_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4366 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4367 __u);
4368}
4369
Michael Kupersteine45af542015-06-30 13:36:19 +00004370static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004371_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4372 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4373 (__mmask16)-1);
4374}
4375
Michael Kupersteine45af542015-06-30 13:36:19 +00004376static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004377_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4378 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4379 __u);
4380}
4381
Michael Kupersteine45af542015-06-30 13:36:19 +00004382static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004383_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4384 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4385 (__mmask16)-1);
4386}
4387
Michael Kupersteine45af542015-06-30 13:36:19 +00004388static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004389_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4390 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4391 __u);
4392}
4393
Michael Kupersteine45af542015-06-30 13:36:19 +00004394static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004395_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4396 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4397 __u);
4398}
4399
Michael Kupersteine45af542015-06-30 13:36:19 +00004400static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004401_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4402 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4403 (__mmask8)-1);
4404}
4405
Michael Kupersteine45af542015-06-30 13:36:19 +00004406static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004407_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4408 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4409 (__mmask8)-1);
4410}
4411
Michael Kupersteine45af542015-06-30 13:36:19 +00004412static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004413_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4414 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4415 __u);
4416}
4417
Michael Kupersteine45af542015-06-30 13:36:19 +00004418static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004419_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4420 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4421 (__mmask16)-1);
4422}
4423
Michael Kupersteine45af542015-06-30 13:36:19 +00004424static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004425_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4426 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4427 __u);
4428}
4429
Michael Kupersteine45af542015-06-30 13:36:19 +00004430static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004431_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4432 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4433 (__mmask16)-1);
4434}
4435
Michael Kupersteine45af542015-06-30 13:36:19 +00004436static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004437_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4438 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4439 __u);
4440}
4441
Michael Kupersteine45af542015-06-30 13:36:19 +00004442static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004443_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4444 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4445 (__mmask8)-1);
4446}
4447
Michael Kupersteine45af542015-06-30 13:36:19 +00004448static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004449_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4450 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4451 __u);
4452}
4453
Michael Kupersteine45af542015-06-30 13:36:19 +00004454static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004455_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4456 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4457 (__mmask8)-1);
4458}
4459
Michael Kupersteine45af542015-06-30 13:36:19 +00004460static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004461_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4462 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4463 __u);
4464}
4465
Michael Kupersteine45af542015-06-30 13:36:19 +00004466static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004467_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4468 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4469 (__mmask16)-1);
4470}
4471
Michael Kupersteine45af542015-06-30 13:36:19 +00004472static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004473_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4474 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4475 __u);
4476}
4477
Michael Kupersteine45af542015-06-30 13:36:19 +00004478static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004479_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4480 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4481 (__mmask16)-1);
4482}
4483
Michael Kupersteine45af542015-06-30 13:36:19 +00004484static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004485_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4486 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4487 __u);
4488}
4489
Michael Kupersteine45af542015-06-30 13:36:19 +00004490static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004491_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4492 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4493 (__mmask8)-1);
4494}
4495
Michael Kupersteine45af542015-06-30 13:36:19 +00004496static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004497_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4498 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4499 __u);
4500}
4501
Michael Kupersteine45af542015-06-30 13:36:19 +00004502static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004503_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4504 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4505 (__mmask8)-1);
4506}
4507
Michael Kupersteine45af542015-06-30 13:36:19 +00004508static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004509_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4510 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4511 __u);
4512}
4513
Michael Kupersteine45af542015-06-30 13:36:19 +00004514static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004515_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4516 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4517 (__mmask16)-1);
4518}
4519
Michael Kupersteine45af542015-06-30 13:36:19 +00004520static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004521_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4522 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4523 __u);
4524}
4525
Michael Kupersteine45af542015-06-30 13:36:19 +00004526static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004527_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4528 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4529 (__mmask16)-1);
4530}
4531
Michael Kupersteine45af542015-06-30 13:36:19 +00004532static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004533_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4534 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4535 __u);
4536}
4537
Michael Kupersteine45af542015-06-30 13:36:19 +00004538static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004539_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4540 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4541 (__mmask8)-1);
4542}
4543
Michael Kupersteine45af542015-06-30 13:36:19 +00004544static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004545_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4546 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4547 __u);
4548}
4549
Michael Kupersteine45af542015-06-30 13:36:19 +00004550static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004551_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4552 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4553 (__mmask8)-1);
4554}
4555
Michael Kupersteine45af542015-06-30 13:36:19 +00004556static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004557_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4558 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4559 __u);
4560}
4561
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004562static __inline__ __m512i __DEFAULT_FN_ATTRS
4563_mm512_cvtepi8_epi32 (__m128i __A)
4564{
4565 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4566 (__v16si)
4567 _mm512_setzero_si512 (),
4568 (__mmask16) -1);
4569}
4570
4571static __inline__ __m512i __DEFAULT_FN_ATTRS
4572_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4573{
4574 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4575 (__v16si) __W,
4576 (__mmask16) __U);
4577}
4578
4579static __inline__ __m512i __DEFAULT_FN_ATTRS
4580_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4581{
4582 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4583 (__v16si)
4584 _mm512_setzero_si512 (),
4585 (__mmask16) __U);
4586}
4587
4588static __inline__ __m512i __DEFAULT_FN_ATTRS
4589_mm512_cvtepi8_epi64 (__m128i __A)
4590{
4591 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4592 (__v8di)
4593 _mm512_setzero_si512 (),
4594 (__mmask8) -1);
4595}
4596
4597static __inline__ __m512i __DEFAULT_FN_ATTRS
4598_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4599{
4600 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4601 (__v8di) __W,
4602 (__mmask8) __U);
4603}
4604
4605static __inline__ __m512i __DEFAULT_FN_ATTRS
4606_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4607{
4608 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4609 (__v8di)
4610 _mm512_setzero_si512 (),
4611 (__mmask8) __U);
4612}
4613
4614static __inline__ __m512i __DEFAULT_FN_ATTRS
4615_mm512_cvtepi32_epi64 (__m256i __X)
4616{
4617 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4618 (__v8di)
4619 _mm512_setzero_si512 (),
4620 (__mmask8) -1);
4621}
4622
4623static __inline__ __m512i __DEFAULT_FN_ATTRS
4624_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4625{
4626 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4627 (__v8di) __W,
4628 (__mmask8) __U);
4629}
4630
4631static __inline__ __m512i __DEFAULT_FN_ATTRS
4632_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4633{
4634 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4635 (__v8di)
4636 _mm512_setzero_si512 (),
4637 (__mmask8) __U);
4638}
4639
4640static __inline__ __m512i __DEFAULT_FN_ATTRS
4641_mm512_cvtepi16_epi32 (__m256i __A)
4642{
4643 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4644 (__v16si)
4645 _mm512_setzero_si512 (),
4646 (__mmask16) -1);
4647}
4648
4649static __inline__ __m512i __DEFAULT_FN_ATTRS
4650_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4651{
4652 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4653 (__v16si) __W,
4654 (__mmask16) __U);
4655}
4656
4657static __inline__ __m512i __DEFAULT_FN_ATTRS
4658_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4659{
4660 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4661 (__v16si)
4662 _mm512_setzero_si512 (),
4663 (__mmask16) __U);
4664}
4665
4666static __inline__ __m512i __DEFAULT_FN_ATTRS
4667_mm512_cvtepi16_epi64 (__m128i __A)
4668{
4669 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4670 (__v8di)
4671 _mm512_setzero_si512 (),
4672 (__mmask8) -1);
4673}
4674
4675static __inline__ __m512i __DEFAULT_FN_ATTRS
4676_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4677{
4678 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4679 (__v8di) __W,
4680 (__mmask8) __U);
4681}
4682
4683static __inline__ __m512i __DEFAULT_FN_ATTRS
4684_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4685{
4686 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4687 (__v8di)
4688 _mm512_setzero_si512 (),
4689 (__mmask8) __U);
4690}
4691
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004692static __inline__ __m512i __DEFAULT_FN_ATTRS
4693_mm512_cvtepu8_epi32 (__m128i __A)
4694{
4695 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4696 (__v16si)
4697 _mm512_setzero_si512 (),
4698 (__mmask16) -1);
4699}
4700
4701static __inline__ __m512i __DEFAULT_FN_ATTRS
4702_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4703{
4704 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4705 (__v16si) __W,
4706 (__mmask16) __U);
4707}
4708
4709static __inline__ __m512i __DEFAULT_FN_ATTRS
4710_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4711{
4712 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4713 (__v16si)
4714 _mm512_setzero_si512 (),
4715 (__mmask16) __U);
4716}
4717
4718static __inline__ __m512i __DEFAULT_FN_ATTRS
4719_mm512_cvtepu8_epi64 (__m128i __A)
4720{
4721 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4722 (__v8di)
4723 _mm512_setzero_si512 (),
4724 (__mmask8) -1);
4725}
4726
4727static __inline__ __m512i __DEFAULT_FN_ATTRS
4728_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4729{
4730 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4731 (__v8di) __W,
4732 (__mmask8) __U);
4733}
4734
4735static __inline__ __m512i __DEFAULT_FN_ATTRS
4736_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4737{
4738 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4739 (__v8di)
4740 _mm512_setzero_si512 (),
4741 (__mmask8) __U);
4742}
4743
4744static __inline__ __m512i __DEFAULT_FN_ATTRS
4745_mm512_cvtepu32_epi64 (__m256i __X)
4746{
4747 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4748 (__v8di)
4749 _mm512_setzero_si512 (),
4750 (__mmask8) -1);
4751}
4752
4753static __inline__ __m512i __DEFAULT_FN_ATTRS
4754_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4755{
4756 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4757 (__v8di) __W,
4758 (__mmask8) __U);
4759}
4760
4761static __inline__ __m512i __DEFAULT_FN_ATTRS
4762_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4763{
4764 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4765 (__v8di)
4766 _mm512_setzero_si512 (),
4767 (__mmask8) __U);
4768}
4769
4770static __inline__ __m512i __DEFAULT_FN_ATTRS
4771_mm512_cvtepu16_epi32 (__m256i __A)
4772{
4773 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4774 (__v16si)
4775 _mm512_setzero_si512 (),
4776 (__mmask16) -1);
4777}
4778
4779static __inline__ __m512i __DEFAULT_FN_ATTRS
4780_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4781{
4782 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4783 (__v16si) __W,
4784 (__mmask16) __U);
4785}
4786
4787static __inline__ __m512i __DEFAULT_FN_ATTRS
4788_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4789{
4790 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4791 (__v16si)
4792 _mm512_setzero_si512 (),
4793 (__mmask16) __U);
4794}
4795
4796static __inline__ __m512i __DEFAULT_FN_ATTRS
4797_mm512_cvtepu16_epi64 (__m128i __A)
4798{
4799 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4800 (__v8di)
4801 _mm512_setzero_si512 (),
4802 (__mmask8) -1);
4803}
4804
4805static __inline__ __m512i __DEFAULT_FN_ATTRS
4806_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4807{
4808 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4809 (__v8di) __W,
4810 (__mmask8) __U);
4811}
4812
4813static __inline__ __m512i __DEFAULT_FN_ATTRS
4814_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4815{
4816 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4817 (__v8di)
4818 _mm512_setzero_si512 (),
4819 (__mmask8) __U);
4820}
4821
Michael Zuckermane98cc742016-02-23 15:59:47 +00004822static __inline__ __m512i __DEFAULT_FN_ATTRS
4823_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4824{
4825 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4826 (__v16si) __B,
4827 (__v16si)
4828 _mm512_setzero_si512 (),
4829 (__mmask16) -1);
4830}
4831
4832static __inline__ __m512i __DEFAULT_FN_ATTRS
4833_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4834{
4835 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4836 (__v16si) __B,
4837 (__v16si) __W,
4838 (__mmask16) __U);
4839}
4840
4841static __inline__ __m512i __DEFAULT_FN_ATTRS
4842_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4843{
4844 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4845 (__v16si) __B,
4846 (__v16si)
4847 _mm512_setzero_si512 (),
4848 (__mmask16) __U);
4849}
4850
4851static __inline__ __m512i __DEFAULT_FN_ATTRS
4852_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4853{
4854 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4855 (__v8di) __B,
4856 (__v8di)
4857 _mm512_setzero_si512 (),
4858 (__mmask8) -1);
4859}
4860
4861static __inline__ __m512i __DEFAULT_FN_ATTRS
4862_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4863{
4864 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4865 (__v8di) __B,
4866 (__v8di) __W,
4867 (__mmask8) __U);
4868}
4869
4870static __inline__ __m512i __DEFAULT_FN_ATTRS
4871_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4872{
4873 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4874 (__v8di) __B,
4875 (__v8di)
4876 _mm512_setzero_si512 (),
4877 (__mmask8) __U);
4878}
4879
4880
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004881
Craig Topper4cac1c22015-01-25 23:30:07 +00004882#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004883 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004884 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004885 (__mmask16)-1); })
4886
4887#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004888 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004889 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004890 (__mmask16)-1); })
4891
4892#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004893 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004894 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004895 (__mmask8)-1); })
4896
4897#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004898 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004899 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004900 (__mmask8)-1); })
4901
4902#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004903 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004904 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004905 (__mmask16)(m)); })
4906
4907#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004908 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004909 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004910 (__mmask16)(m)); })
4911
4912#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004913 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004914 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004915 (__mmask8)(m)); })
4916
4917#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004918 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004919 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004920 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004921
Michael Zuckerman38a27272016-02-22 09:05:41 +00004922#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004923 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4924 (__v16si)_mm512_setzero_si512(), \
4925 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004926
4927#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004928 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4929 (__v16si)(__m512i)(W), \
4930 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004931
4932#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004933 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4934 (__v16si)_mm512_setzero_si512(), \
4935 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004936
4937#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004938 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4939 (__v8di)_mm512_setzero_si512(), \
4940 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004941
4942#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004943 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4944 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004945
4946#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004947 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4948 (__v8di)_mm512_setzero_si512(), \
4949 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004950static __inline__ __m512i __DEFAULT_FN_ATTRS
4951_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4952{
4953 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4954 (__v16si) __B,
4955 (__v16si)
4956 _mm512_setzero_si512 (),
4957 (__mmask16) -1);
4958}
4959
4960static __inline__ __m512i __DEFAULT_FN_ATTRS
4961_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4962{
4963 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4964 (__v16si) __B,
4965 (__v16si) __W,
4966 (__mmask16) __U);
4967}
4968
4969static __inline__ __m512i __DEFAULT_FN_ATTRS
4970_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4971{
4972 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4973 (__v16si) __B,
4974 (__v16si)
4975 _mm512_setzero_si512 (),
4976 (__mmask16) __U);
4977}
4978
4979static __inline__ __m512i __DEFAULT_FN_ATTRS
4980_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4981{
4982 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4983 (__v8di) __B,
4984 (__v8di)
4985 _mm512_setzero_si512 (),
4986 (__mmask8) -1);
4987}
4988
4989static __inline__ __m512i __DEFAULT_FN_ATTRS
4990_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4991{
4992 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4993 (__v8di) __B,
4994 (__v8di) __W,
4995 (__mmask8) __U);
4996}
4997
4998static __inline__ __m512i __DEFAULT_FN_ATTRS
4999_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
5000{
5001 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
5002 (__v8di) __B,
5003 (__v8di)
5004 _mm512_setzero_si512 (),
5005 (__mmask8) __U);
5006}
5007
Craig Topper8c18e112016-05-17 04:41:50 +00005008#define _mm512_ror_epi32(A, B) __extension__ ({ \
5009 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5010 (__v16si)_mm512_setzero_si512(), \
5011 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005012
Craig Topper8c18e112016-05-17 04:41:50 +00005013#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5014 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5015 (__v16si)(__m512i)(W), \
5016 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005017
Craig Topper8c18e112016-05-17 04:41:50 +00005018#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
5019 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
5020 (__v16si)_mm512_setzero_si512(), \
5021 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005022
Craig Topper8c18e112016-05-17 04:41:50 +00005023#define _mm512_ror_epi64(A, B) __extension__ ({ \
5024 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5025 (__v8di)_mm512_setzero_si512(), \
5026 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005027
Craig Topper8c18e112016-05-17 04:41:50 +00005028#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5029 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5030 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00005031
Craig Topper8c18e112016-05-17 04:41:50 +00005032#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
5033 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
5034 (__v8di)_mm512_setzero_si512(), \
5035 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00005036
Craig Topper8c18e112016-05-17 04:41:50 +00005037#define _mm512_slli_epi32(A, B) __extension__ ({ \
5038 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5039 (__v16si)_mm512_setzero_si512(), \
5040 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005041
Craig Topper8c18e112016-05-17 04:41:50 +00005042#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5043 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5044 (__v16si)(__m512i)(W), \
5045 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005046
Craig Topper8c18e112016-05-17 04:41:50 +00005047#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
5048 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5049 (__v16si)_mm512_setzero_si512(), \
5050 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005051
Craig Topper8c18e112016-05-17 04:41:50 +00005052#define _mm512_slli_epi64(A, B) __extension__ ({ \
5053 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5054 (__v8di)_mm512_setzero_si512(), \
5055 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005056
Craig Topper8c18e112016-05-17 04:41:50 +00005057#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5058 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5059 (__v8di)(__m512i)(W), \
5060 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005061
Craig Topper8c18e112016-05-17 04:41:50 +00005062#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
5063 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5064 (__v8di)_mm512_setzero_si512(), \
5065 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005066
Michael Zuckerman38a27272016-02-22 09:05:41 +00005067
Michael Zuckermand176d742016-03-01 17:49:03 +00005068
Craig Topper8c18e112016-05-17 04:41:50 +00005069#define _mm512_srli_epi32(A, B) __extension__ ({ \
5070 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5071 (__v16si)_mm512_setzero_si512(), \
5072 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005073
Craig Topper8c18e112016-05-17 04:41:50 +00005074#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
5075 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5076 (__v16si)(__m512i)(W), \
5077 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005078
Craig Topper8c18e112016-05-17 04:41:50 +00005079#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
5080 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
5081 (__v16si)_mm512_setzero_si512(), \
5082 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005083
Craig Topper8c18e112016-05-17 04:41:50 +00005084#define _mm512_srli_epi64(A, B) __extension__ ({ \
5085 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5086 (__v8di)_mm512_setzero_si512(), \
5087 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005088
Craig Topper8c18e112016-05-17 04:41:50 +00005089#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
5090 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5091 (__v8di)(__m512i)(W), \
5092 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005093
Craig Topper8c18e112016-05-17 04:41:50 +00005094#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
5095 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
5096 (__v8di)_mm512_setzero_si512(), \
5097 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00005098
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005099static __inline__ __m512i __DEFAULT_FN_ATTRS
5100_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
5101{
5102 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5103 (__v16si) __W,
5104 (__mmask16) __U);
5105}
5106
5107static __inline__ __m512i __DEFAULT_FN_ATTRS
5108_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
5109{
5110 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
5111 (__v16si)
5112 _mm512_setzero_si512 (),
5113 (__mmask16) __U);
5114}
5115
5116static __inline__ void __DEFAULT_FN_ATTRS
5117_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5118{
5119 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5120 (__mmask16) __U);
5121}
5122
5123static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005124_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5125{
5126 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5127 (__v16si) __W,
5128 (__mmask16) __U);
5129}
5130
5131static __inline__ __m512i __DEFAULT_FN_ATTRS
5132_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5133{
5134 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5135 (__v16si)
5136 _mm512_setzero_si512 (),
5137 (__mmask16) __U);
5138}
5139
5140static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005141_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5142{
5143 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5144 (__v8di) __W,
5145 (__mmask8) __U);
5146}
5147
5148static __inline__ __m512i __DEFAULT_FN_ATTRS
5149_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5150{
5151 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5152 (__v8di)
5153 _mm512_setzero_si512 (),
5154 (__mmask8) __U);
5155}
5156
5157static __inline__ __m512i __DEFAULT_FN_ATTRS
5158_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5159{
5160 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5161 (__v8di) __W,
5162 (__mmask8) __U);
5163}
5164
5165static __inline__ __m512i __DEFAULT_FN_ATTRS
5166_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5167{
5168 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5169 (__v8di)
5170 _mm512_setzero_si512 (),
5171 (__mmask8) __U);
5172}
5173
5174static __inline__ void __DEFAULT_FN_ATTRS
5175_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5176{
5177 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5178 (__mmask8) __U);
5179}
5180
5181
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005182
5183static __inline__ __m512d __DEFAULT_FN_ATTRS
5184_mm512_movedup_pd (__m512d __A)
5185{
5186 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5187 (__v8df)
5188 _mm512_undefined_pd (),
5189 (__mmask8) -1);
5190}
5191
5192static __inline__ __m512d __DEFAULT_FN_ATTRS
5193_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5194{
5195 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5196 (__v8df) __W,
5197 (__mmask8) __U);
5198}
5199
5200static __inline__ __m512d __DEFAULT_FN_ATTRS
5201_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5202{
5203 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5204 (__v8df)
5205 _mm512_setzero_pd (),
5206 (__mmask8) __U);
5207}
5208
Craig Topper8c18e112016-05-17 04:41:50 +00005209#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5210 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5211 (__v8df)(__m512d)(B), \
5212 (__v8di)(__m512i)(C), (int)(imm), \
5213 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005214
Craig Topper8c18e112016-05-17 04:41:50 +00005215#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5216 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5217 (__v8df)(__m512d)(B), \
5218 (__v8di)(__m512i)(C), (int)(imm), \
5219 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005220
Craig Topper8c18e112016-05-17 04:41:50 +00005221#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5222 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5223 (__v8df)(__m512d)(B), \
5224 (__v8di)(__m512i)(C), (int)(imm), \
5225 (__mmask8)-1, \
5226 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005227
Craig Topper8c18e112016-05-17 04:41:50 +00005228#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5229 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5230 (__v8df)(__m512d)(B), \
5231 (__v8di)(__m512i)(C), (int)(imm), \
5232 (__mmask8)(U), \
5233 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005234
Craig Topper8c18e112016-05-17 04:41:50 +00005235#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5236 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5237 (__v8df)(__m512d)(B), \
5238 (__v8di)(__m512i)(C), \
5239 (int)(imm), (__mmask8)(U), \
5240 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005241
Craig Topper8c18e112016-05-17 04:41:50 +00005242#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5243 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5244 (__v8df)(__m512d)(B), \
5245 (__v8di)(__m512i)(C), \
5246 (int)(imm), (__mmask8)(U), \
5247 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005248
Craig Topper8c18e112016-05-17 04:41:50 +00005249#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5250 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5251 (__v16sf)(__m512)(B), \
5252 (__v16si)(__m512i)(C), (int)(imm), \
5253 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005254
Craig Topper8c18e112016-05-17 04:41:50 +00005255#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5256 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5257 (__v16sf)(__m512)(B), \
5258 (__v16si)(__m512i)(C), (int)(imm), \
5259 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005260
Craig Topper8c18e112016-05-17 04:41:50 +00005261#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5262 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5263 (__v16sf)(__m512)(B), \
5264 (__v16si)(__m512i)(C), (int)(imm), \
5265 (__mmask16)-1, \
5266 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005267
Craig Topper8c18e112016-05-17 04:41:50 +00005268#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5269 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5270 (__v16sf)(__m512)(B), \
5271 (__v16si)(__m512i)(C), (int)(imm), \
5272 (__mmask16)(U), \
5273 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005274
Craig Topper8c18e112016-05-17 04:41:50 +00005275#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5276 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5277 (__v16sf)(__m512)(B), \
5278 (__v16si)(__m512i)(C), \
5279 (int)(imm), (__mmask16)(U), \
5280 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005281
Craig Topper8c18e112016-05-17 04:41:50 +00005282#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5283 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5284 (__v16sf)(__m512)(B), \
5285 (__v16si)(__m512i)(C), \
5286 (int)(imm), (__mmask16)(U), \
5287 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005288
Craig Topper8c18e112016-05-17 04:41:50 +00005289#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5290 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5291 (__v2df)(__m128d)(B), \
5292 (__v2di)(__m128i)(C), (int)(imm), \
5293 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005294
Craig Topper8c18e112016-05-17 04:41:50 +00005295#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5296 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5297 (__v2df)(__m128d)(B), \
5298 (__v2di)(__m128i)(C), (int)(imm), \
5299 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005300
Craig Topper8c18e112016-05-17 04:41:50 +00005301#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5302 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5303 (__v2df)(__m128d)(B), \
5304 (__v2di)(__m128i)(C), (int)(imm), \
5305 (__mmask8)-1, \
5306 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005307
Craig Topper8c18e112016-05-17 04:41:50 +00005308#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5309 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5310 (__v2df)(__m128d)(B), \
5311 (__v2di)(__m128i)(C), (int)(imm), \
5312 (__mmask8)(U), \
5313 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005314
Craig Topper8c18e112016-05-17 04:41:50 +00005315#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5316 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5317 (__v2df)(__m128d)(B), \
5318 (__v2di)(__m128i)(C), (int)(imm), \
5319 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005320
Craig Topper8c18e112016-05-17 04:41:50 +00005321#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5322 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5323 (__v2df)(__m128d)(B), \
5324 (__v2di)(__m128i)(C), (int)(imm), \
5325 (__mmask8)(U), \
5326 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005327
Craig Topper8c18e112016-05-17 04:41:50 +00005328#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5329 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5330 (__v4sf)(__m128)(B), \
5331 (__v4si)(__m128i)(C), (int)(imm), \
5332 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005333
Craig Topper8c18e112016-05-17 04:41:50 +00005334#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5335 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5336 (__v4sf)(__m128)(B), \
5337 (__v4si)(__m128i)(C), (int)(imm), \
5338 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005339
Craig Topper8c18e112016-05-17 04:41:50 +00005340#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5341 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5342 (__v4sf)(__m128)(B), \
5343 (__v4si)(__m128i)(C), (int)(imm), \
5344 (__mmask8)-1, \
5345 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005346
Craig Topper8c18e112016-05-17 04:41:50 +00005347#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5348 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5349 (__v4sf)(__m128)(B), \
5350 (__v4si)(__m128i)(C), (int)(imm), \
5351 (__mmask8)(U), \
5352 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005353
Craig Topper8c18e112016-05-17 04:41:50 +00005354#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5355 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5356 (__v4sf)(__m128)(B), \
5357 (__v4si)(__m128i)(C), (int)(imm), \
5358 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005359
Craig Topper8c18e112016-05-17 04:41:50 +00005360#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5361 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5362 (__v4sf)(__m128)(B), \
5363 (__v4si)(__m128i)(C), (int)(imm), \
5364 (__mmask8)(U), \
5365 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005366
Craig Topper8c18e112016-05-17 04:41:50 +00005367#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5368 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5369 (__v2df)(__m128d)(B), \
5370 (__v2df)_mm_setzero_pd(), \
5371 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005372
5373
5374static __inline__ __m128d __DEFAULT_FN_ATTRS
5375_mm_getexp_sd (__m128d __A, __m128d __B)
5376{
5377 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5378 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5379}
5380
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005381static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005382_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005383{
5384 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5385 (__v2df) __B,
5386 (__v2df) __W,
5387 (__mmask8) __U,
5388 _MM_FROUND_CUR_DIRECTION);
5389}
5390
Craig Topper8c18e112016-05-17 04:41:50 +00005391#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5392 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5393 (__v2df)(__m128d)(B), \
5394 (__v2df)(__m128d)(W), \
5395 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005396
5397static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005398_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005399{
5400 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5401 (__v2df) __B,
5402 (__v2df) _mm_setzero_pd (),
5403 (__mmask8) __U,
5404 _MM_FROUND_CUR_DIRECTION);
5405}
5406
Craig Topper8c18e112016-05-17 04:41:50 +00005407#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5408 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5409 (__v2df)(__m128d)(B), \
5410 (__v2df)_mm_setzero_pd(), \
5411 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005412
Craig Topper8c18e112016-05-17 04:41:50 +00005413#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5414 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5415 (__v4sf)(__m128)(B), \
5416 (__v4sf)_mm_setzero_ps(), \
5417 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005418
5419static __inline__ __m128 __DEFAULT_FN_ATTRS
5420_mm_getexp_ss (__m128 __A, __m128 __B)
5421{
5422 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5423 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5424}
5425
Craig Topper58187d32016-05-17 04:41:29 +00005426static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005427_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005428{
Craig Topper58187d32016-05-17 04:41:29 +00005429 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005430 (__v4sf) __B,
5431 (__v4sf) __W,
5432 (__mmask8) __U,
5433 _MM_FROUND_CUR_DIRECTION);
5434}
5435
Craig Topper8c18e112016-05-17 04:41:50 +00005436#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5437 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5438 (__v4sf)(__m128)(B), \
5439 (__v4sf)(__m128)(W), \
5440 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005441
Craig Topper58187d32016-05-17 04:41:29 +00005442static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00005443_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005444{
Craig Topper58187d32016-05-17 04:41:29 +00005445 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005446 (__v4sf) __B,
5447 (__v4sf) _mm_setzero_pd (),
5448 (__mmask8) __U,
5449 _MM_FROUND_CUR_DIRECTION);
5450}
5451
Craig Topper8c18e112016-05-17 04:41:50 +00005452#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5453 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5454 (__v4sf)(__m128)(B), \
5455 (__v4sf)_mm_setzero_ps(), \
5456 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005457
Craig Topper8c18e112016-05-17 04:41:50 +00005458#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5459 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5460 (__v2df)(__m128d)(B), \
5461 (int)(((D)<<2) | (C)), \
5462 (__v2df)_mm_setzero_pd(), \
5463 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005464
Craig Topper8c18e112016-05-17 04:41:50 +00005465#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5466 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5467 (__v2df)(__m128d)(B), \
5468 (int)(((D)<<2) | (C)), \
5469 (__v2df)_mm_setzero_pd(), \
5470 (__mmask8)-1, \
5471 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005472
Craig Topper8c18e112016-05-17 04:41:50 +00005473#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5474 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5475 (__v2df)(__m128d)(B), \
5476 (int)(((D)<<2) | (C)), \
5477 (__v2df)(__m128d)(W), \
5478 (__mmask8)(U), \
5479 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005480
Craig Topper8c18e112016-05-17 04:41:50 +00005481#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5482 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5483 (__v2df)(__m128d)(B), \
5484 (int)(((D)<<2) | (C)), \
5485 (__v2df)(__m128d)(W), \
5486 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005487
Craig Topper8c18e112016-05-17 04:41:50 +00005488#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5489 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5490 (__v2df)(__m128d)(B), \
5491 (int)(((D)<<2) | (C)), \
5492 (__v2df)_mm_setzero_pd(), \
5493 (__mmask8)(U), \
5494 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005495
Craig Topper8c18e112016-05-17 04:41:50 +00005496#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5497 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5498 (__v2df)(__m128d)(B), \
5499 (int)(((D)<<2) | (C)), \
5500 (__v2df)_mm_setzero_pd(), \
5501 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005502
Craig Topper8c18e112016-05-17 04:41:50 +00005503#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5504 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5505 (__v4sf)(__m128)(B), \
5506 (int)(((D)<<2) | (C)), \
5507 (__v4sf)_mm_setzero_ps(), \
5508 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005509
Craig Topper8c18e112016-05-17 04:41:50 +00005510#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5511 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5512 (__v4sf)(__m128)(B), \
5513 (int)(((D)<<2) | (C)), \
5514 (__v4sf)_mm_setzero_ps(), \
5515 (__mmask8)-1, \
5516 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005517
Craig Topper8c18e112016-05-17 04:41:50 +00005518#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5519 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5520 (__v4sf)(__m128)(B), \
5521 (int)(((D)<<2) | (C)), \
5522 (__v4sf)(__m128)(W), \
5523 (__mmask8)(U), \
5524 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005525
Craig Topper8c18e112016-05-17 04:41:50 +00005526#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5527 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5528 (__v4sf)(__m128)(B), \
5529 (int)(((D)<<2) | (C)), \
5530 (__v4sf)(__m128)(W), \
5531 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005532
Craig Topper8c18e112016-05-17 04:41:50 +00005533#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5534 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5535 (__v4sf)(__m128)(B), \
5536 (int)(((D)<<2) | (C)), \
5537 (__v4sf)_mm_setzero_pd(), \
5538 (__mmask8)(U), \
5539 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005540
Craig Topper8c18e112016-05-17 04:41:50 +00005541#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5542 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5543 (__v4sf)(__m128)(B), \
5544 (int)(((D)<<2) | (C)), \
5545 (__v4sf)_mm_setzero_ps(), \
5546 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005547
5548static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5549_mm512_kmov (__mmask16 __A)
5550{
5551 return __A;
5552}
5553
Craig Topper8c18e112016-05-17 04:41:50 +00005554#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5555 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5556 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005557
Craig Topper8c18e112016-05-17 04:41:50 +00005558#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5559 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5560 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005561
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005562static __inline__ __m512d __DEFAULT_FN_ATTRS
5563_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5564{
5565 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5566 (__v8df) __B,
5567 (__v8df) __W,
5568 (__mmask8) __U);
5569}
Craig Topper8c18e112016-05-17 04:41:50 +00005570#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5571 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005572static __inline__ __m512i __DEFAULT_FN_ATTRS
5573_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5574 __mmask16 __U, __m512i __B)
5575{
5576 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5577 (__v16si) __I
5578 /* idx */ ,
5579 (__v16si) __B,
5580 (__mmask16) __U);
5581}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005582static __inline__ __m512i __DEFAULT_FN_ATTRS
5583_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5584{
5585 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5586 (__v16si) __B,
5587 (__v16si)
5588 _mm512_setzero_si512 (),
5589 (__mmask16) -1);
5590}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005591
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005592static __inline__ __m512i __DEFAULT_FN_ATTRS
5593_mm512_sll_epi32 (__m512i __A, __m128i __B)
5594{
5595 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5596 (__v4si) __B,
5597 (__v16si)
5598 _mm512_setzero_si512 (),
5599 (__mmask16) -1);
5600}
5601
5602static __inline__ __m512i __DEFAULT_FN_ATTRS
5603_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5604{
5605 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5606 (__v4si) __B,
5607 (__v16si) __W,
5608 (__mmask16) __U);
5609}
5610
5611static __inline__ __m512i __DEFAULT_FN_ATTRS
5612_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5613{
5614 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5615 (__v4si) __B,
5616 (__v16si)
5617 _mm512_setzero_si512 (),
5618 (__mmask16) __U);
5619}
5620
5621static __inline__ __m512i __DEFAULT_FN_ATTRS
5622_mm512_sll_epi64 (__m512i __A, __m128i __B)
5623{
5624 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5625 (__v2di) __B,
5626 (__v8di)
5627 _mm512_setzero_si512 (),
5628 (__mmask8) -1);
5629}
5630
5631static __inline__ __m512i __DEFAULT_FN_ATTRS
5632_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5633{
5634 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5635 (__v2di) __B,
5636 (__v8di) __W,
5637 (__mmask8) __U);
5638}
5639
5640static __inline__ __m512i __DEFAULT_FN_ATTRS
5641_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5642{
5643 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5644 (__v2di) __B,
5645 (__v8di)
5646 _mm512_setzero_si512 (),
5647 (__mmask8) __U);
5648}
5649
5650static __inline__ __m512i __DEFAULT_FN_ATTRS
5651_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5652{
5653 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5654 (__v16si) __Y,
5655 (__v16si)
5656 _mm512_setzero_si512 (),
5657 (__mmask16) -1);
5658}
5659
5660static __inline__ __m512i __DEFAULT_FN_ATTRS
5661_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5662{
5663 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5664 (__v16si) __Y,
5665 (__v16si) __W,
5666 (__mmask16) __U);
5667}
5668
5669static __inline__ __m512i __DEFAULT_FN_ATTRS
5670_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5671{
5672 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5673 (__v16si) __Y,
5674 (__v16si)
5675 _mm512_setzero_si512 (),
5676 (__mmask16) __U);
5677}
5678
5679static __inline__ __m512i __DEFAULT_FN_ATTRS
5680_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5681{
5682 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5683 (__v8di) __Y,
5684 (__v8di)
5685 _mm512_undefined_pd (),
5686 (__mmask8) -1);
5687}
5688
5689static __inline__ __m512i __DEFAULT_FN_ATTRS
5690_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5691{
5692 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5693 (__v8di) __Y,
5694 (__v8di) __W,
5695 (__mmask8) __U);
5696}
5697
5698static __inline__ __m512i __DEFAULT_FN_ATTRS
5699_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5700{
5701 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5702 (__v8di) __Y,
5703 (__v8di)
5704 _mm512_setzero_si512 (),
5705 (__mmask8) __U);
5706}
5707
5708static __inline__ __m512i __DEFAULT_FN_ATTRS
5709_mm512_sra_epi32 (__m512i __A, __m128i __B)
5710{
5711 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5712 (__v4si) __B,
5713 (__v16si)
5714 _mm512_setzero_si512 (),
5715 (__mmask16) -1);
5716}
5717
5718static __inline__ __m512i __DEFAULT_FN_ATTRS
5719_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5720{
5721 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5722 (__v4si) __B,
5723 (__v16si) __W,
5724 (__mmask16) __U);
5725}
5726
5727static __inline__ __m512i __DEFAULT_FN_ATTRS
5728_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5729{
5730 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5731 (__v4si) __B,
5732 (__v16si)
5733 _mm512_setzero_si512 (),
5734 (__mmask16) __U);
5735}
5736
5737static __inline__ __m512i __DEFAULT_FN_ATTRS
5738_mm512_sra_epi64 (__m512i __A, __m128i __B)
5739{
5740 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5741 (__v2di) __B,
5742 (__v8di)
5743 _mm512_setzero_si512 (),
5744 (__mmask8) -1);
5745}
5746
5747static __inline__ __m512i __DEFAULT_FN_ATTRS
5748_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5749{
5750 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5751 (__v2di) __B,
5752 (__v8di) __W,
5753 (__mmask8) __U);
5754}
5755
5756static __inline__ __m512i __DEFAULT_FN_ATTRS
5757_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5758{
5759 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5760 (__v2di) __B,
5761 (__v8di)
5762 _mm512_setzero_si512 (),
5763 (__mmask8) __U);
5764}
5765
5766static __inline__ __m512i __DEFAULT_FN_ATTRS
5767_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5768{
5769 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5770 (__v16si) __Y,
5771 (__v16si)
5772 _mm512_setzero_si512 (),
5773 (__mmask16) -1);
5774}
5775
5776static __inline__ __m512i __DEFAULT_FN_ATTRS
5777_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5778{
5779 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5780 (__v16si) __Y,
5781 (__v16si) __W,
5782 (__mmask16) __U);
5783}
5784
5785static __inline__ __m512i __DEFAULT_FN_ATTRS
5786_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5787{
5788 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5789 (__v16si) __Y,
5790 (__v16si)
5791 _mm512_setzero_si512 (),
5792 (__mmask16) __U);
5793}
5794
5795static __inline__ __m512i __DEFAULT_FN_ATTRS
5796_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5797{
5798 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5799 (__v8di) __Y,
5800 (__v8di)
5801 _mm512_setzero_si512 (),
5802 (__mmask8) -1);
5803}
5804
5805static __inline__ __m512i __DEFAULT_FN_ATTRS
5806_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5807{
5808 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5809 (__v8di) __Y,
5810 (__v8di) __W,
5811 (__mmask8) __U);
5812}
5813
5814static __inline__ __m512i __DEFAULT_FN_ATTRS
5815_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5816{
5817 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5818 (__v8di) __Y,
5819 (__v8di)
5820 _mm512_setzero_si512 (),
5821 (__mmask8) __U);
5822}
5823
5824static __inline__ __m512i __DEFAULT_FN_ATTRS
5825_mm512_srl_epi32 (__m512i __A, __m128i __B)
5826{
5827 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5828 (__v4si) __B,
5829 (__v16si)
5830 _mm512_setzero_si512 (),
5831 (__mmask16) -1);
5832}
5833
5834static __inline__ __m512i __DEFAULT_FN_ATTRS
5835_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5836{
5837 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5838 (__v4si) __B,
5839 (__v16si) __W,
5840 (__mmask16) __U);
5841}
5842
5843static __inline__ __m512i __DEFAULT_FN_ATTRS
5844_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5845{
5846 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5847 (__v4si) __B,
5848 (__v16si)
5849 _mm512_setzero_si512 (),
5850 (__mmask16) __U);
5851}
5852
5853static __inline__ __m512i __DEFAULT_FN_ATTRS
5854_mm512_srl_epi64 (__m512i __A, __m128i __B)
5855{
5856 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5857 (__v2di) __B,
5858 (__v8di)
5859 _mm512_setzero_si512 (),
5860 (__mmask8) -1);
5861}
5862
5863static __inline__ __m512i __DEFAULT_FN_ATTRS
5864_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5865{
5866 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5867 (__v2di) __B,
5868 (__v8di) __W,
5869 (__mmask8) __U);
5870}
5871
5872static __inline__ __m512i __DEFAULT_FN_ATTRS
5873_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5874{
5875 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5876 (__v2di) __B,
5877 (__v8di)
5878 _mm512_setzero_si512 (),
5879 (__mmask8) __U);
5880}
5881
5882static __inline__ __m512i __DEFAULT_FN_ATTRS
5883_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5884{
5885 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5886 (__v16si) __Y,
5887 (__v16si)
5888 _mm512_setzero_si512 (),
5889 (__mmask16) -1);
5890}
5891
5892static __inline__ __m512i __DEFAULT_FN_ATTRS
5893_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5894{
5895 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5896 (__v16si) __Y,
5897 (__v16si) __W,
5898 (__mmask16) __U);
5899}
5900
5901static __inline__ __m512i __DEFAULT_FN_ATTRS
5902_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5903{
5904 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5905 (__v16si) __Y,
5906 (__v16si)
5907 _mm512_setzero_si512 (),
5908 (__mmask16) __U);
5909}
5910
5911static __inline__ __m512i __DEFAULT_FN_ATTRS
5912_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5913{
5914 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5915 (__v8di) __Y,
5916 (__v8di)
5917 _mm512_setzero_si512 (),
5918 (__mmask8) -1);
5919}
5920
5921static __inline__ __m512i __DEFAULT_FN_ATTRS
5922_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5923{
5924 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5925 (__v8di) __Y,
5926 (__v8di) __W,
5927 (__mmask8) __U);
5928}
5929
5930static __inline__ __m512i __DEFAULT_FN_ATTRS
5931_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5932{
5933 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5934 (__v8di) __Y,
5935 (__v8di)
5936 _mm512_setzero_si512 (),
5937 (__mmask8) __U);
5938}
5939
Craig Topper8c18e112016-05-17 04:41:50 +00005940#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5941 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5942 (__v16si)(__m512i)(B), \
5943 (__v16si)(__m512i)(C), (int)(imm), \
5944 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005945
Craig Topper8c18e112016-05-17 04:41:50 +00005946#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5947 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5948 (__v16si)(__m512i)(B), \
5949 (__v16si)(__m512i)(C), (int)(imm), \
5950 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005951
Craig Topper8c18e112016-05-17 04:41:50 +00005952#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5953 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5954 (__v16si)(__m512i)(B), \
5955 (__v16si)(__m512i)(C), \
5956 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005957
Craig Topper8c18e112016-05-17 04:41:50 +00005958#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5959 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5960 (__v8di)(__m512i)(B), \
5961 (__v8di)(__m512i)(C), (int)(imm), \
5962 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005963
Craig Topper8c18e112016-05-17 04:41:50 +00005964#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
5965 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5966 (__v8di)(__m512i)(B), \
5967 (__v8di)(__m512i)(C), (int)(imm), \
5968 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005969
Craig Topper8c18e112016-05-17 04:41:50 +00005970#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
5971 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
5972 (__v8di)(__m512i)(B), \
5973 (__v8di)(__m512i)(C), (int)(imm), \
5974 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005975
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005976static __inline__ __m512d __DEFAULT_FN_ATTRS
5977_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5978{
5979 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5980 (__v8df) __B,
5981 (__v8df)
5982 _mm512_setzero_pd (),
5983 (__mmask8) __U);
5984}
5985
5986static __inline__ __m512 __DEFAULT_FN_ATTRS
5987_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5988{
5989 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5990 (__v16sf) __B,
5991 (__v16sf) __W,
5992 (__mmask16) __U);
5993}
5994
5995static __inline__ __m512 __DEFAULT_FN_ATTRS
5996_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5997{
5998 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5999 (__v16sf) __B,
6000 (__v16sf)
6001 _mm512_setzero_ps (),
6002 (__mmask16) __U);
6003}
6004
6005static __inline__ __m512d __DEFAULT_FN_ATTRS
6006_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6007{
6008 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6009 (__v8df) __B,
6010 (__v8df) __W,
6011 (__mmask8) __U);
6012}
6013
6014static __inline__ __m512d __DEFAULT_FN_ATTRS
6015_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
6016{
6017 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
6018 (__v8df) __B,
6019 (__v8df)
6020 _mm512_setzero_pd (),
6021 (__mmask8) __U);
6022}
6023
6024static __inline__ __m512 __DEFAULT_FN_ATTRS
6025_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6026{
6027 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6028 (__v16sf) __B,
6029 (__v16sf) __W,
6030 (__mmask16) __U);
6031}
6032
6033static __inline__ __m512 __DEFAULT_FN_ATTRS
6034_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
6035{
6036 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
6037 (__v16sf) __B,
6038 (__v16sf)
6039 _mm512_setzero_ps (),
6040 (__mmask16) __U);
6041}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00006042
Craig Topper8c18e112016-05-17 04:41:50 +00006043#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
6044 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006045
Craig Topper8c18e112016-05-17 04:41:50 +00006046#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
6047 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006048
Craig Topper8c18e112016-05-17 04:41:50 +00006049#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
6050 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006051
Craig Topper8c18e112016-05-17 04:41:50 +00006052#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
6053 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006054
6055static __inline__ unsigned __DEFAULT_FN_ATTRS
6056_mm_cvtsd_u32 (__m128d __A)
6057{
6058 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
6059 _MM_FROUND_CUR_DIRECTION);
6060}
6061
Craig Topper8c18e112016-05-17 04:41:50 +00006062#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
6063 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
6064 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006065
6066static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6067_mm_cvtsd_u64 (__m128d __A)
6068{
6069 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
6070 __A,
6071 _MM_FROUND_CUR_DIRECTION);
6072}
6073
Craig Topper8c18e112016-05-17 04:41:50 +00006074#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
6075 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006076
Craig Topper8c18e112016-05-17 04:41:50 +00006077#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
6078 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006079
Craig Topper8c18e112016-05-17 04:41:50 +00006080#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
6081 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006082
Craig Topper8c18e112016-05-17 04:41:50 +00006083#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
6084 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006085
Craig Topper8c18e112016-05-17 04:41:50 +00006086#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
6087 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006088
6089static __inline__ unsigned __DEFAULT_FN_ATTRS
6090_mm_cvtss_u32 (__m128 __A)
6091{
6092 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
6093 _MM_FROUND_CUR_DIRECTION);
6094}
6095
Craig Topper8c18e112016-05-17 04:41:50 +00006096#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
6097 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
6098 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006099
6100static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6101_mm_cvtss_u64 (__m128 __A)
6102{
6103 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
6104 __A,
6105 _MM_FROUND_CUR_DIRECTION);
6106}
6107
Craig Topper8c18e112016-05-17 04:41:50 +00006108#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
6109 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006110
Craig Topper8c18e112016-05-17 04:41:50 +00006111#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
6112 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006113
6114static __inline__ int __DEFAULT_FN_ATTRS
6115_mm_cvttsd_i32 (__m128d __A)
6116{
6117 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6118 _MM_FROUND_CUR_DIRECTION);
6119}
6120
Craig Topper8c18e112016-05-17 04:41:50 +00006121#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6122 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006123
Craig Topper8c18e112016-05-17 04:41:50 +00006124#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6125 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006126
6127static __inline__ long long __DEFAULT_FN_ATTRS
6128_mm_cvttsd_i64 (__m128d __A)
6129{
6130 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6131 _MM_FROUND_CUR_DIRECTION);
6132}
6133
Craig Topper8c18e112016-05-17 04:41:50 +00006134#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6135 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006136
6137static __inline__ unsigned __DEFAULT_FN_ATTRS
6138_mm_cvttsd_u32 (__m128d __A)
6139{
6140 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6141 _MM_FROUND_CUR_DIRECTION);
6142}
6143
Craig Topper8c18e112016-05-17 04:41:50 +00006144#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6145 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6146 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006147
6148static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6149_mm_cvttsd_u64 (__m128d __A)
6150{
6151 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6152 __A,
6153 _MM_FROUND_CUR_DIRECTION);
6154}
6155
Craig Topper8c18e112016-05-17 04:41:50 +00006156#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6157 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006158
Craig Topper8c18e112016-05-17 04:41:50 +00006159#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6160 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006161
6162static __inline__ int __DEFAULT_FN_ATTRS
6163_mm_cvttss_i32 (__m128 __A)
6164{
6165 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6166 _MM_FROUND_CUR_DIRECTION);
6167}
6168
Craig Topper8c18e112016-05-17 04:41:50 +00006169#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6170 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006171
Craig Topper8c18e112016-05-17 04:41:50 +00006172#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6173 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006174
6175static __inline__ long long __DEFAULT_FN_ATTRS
6176_mm_cvttss_i64 (__m128 __A)
6177{
6178 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6179 _MM_FROUND_CUR_DIRECTION);
6180}
6181
Craig Topper8c18e112016-05-17 04:41:50 +00006182#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6183 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006184
6185static __inline__ unsigned __DEFAULT_FN_ATTRS
6186_mm_cvttss_u32 (__m128 __A)
6187{
6188 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6189 _MM_FROUND_CUR_DIRECTION);
6190}
6191
Craig Topper8c18e112016-05-17 04:41:50 +00006192#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6193 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6194 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006195
6196static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6197_mm_cvttss_u64 (__m128 __A)
6198{
6199 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6200 __A,
6201 _MM_FROUND_CUR_DIRECTION);
6202}
6203
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006204static __inline__ __m512d __DEFAULT_FN_ATTRS
6205_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6206 __m512d __B)
6207{
6208 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6209 (__v8di) __I
6210 /* idx */ ,
6211 (__v8df) __B,
6212 (__mmask8) __U);
6213}
6214
6215static __inline__ __m512 __DEFAULT_FN_ATTRS
6216_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6217 __m512 __B)
6218{
6219 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6220 (__v16si) __I
6221 /* idx */ ,
6222 (__v16sf) __B,
6223 (__mmask16) __U);
6224}
6225
6226static __inline__ __m512i __DEFAULT_FN_ATTRS
6227_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6228 __mmask8 __U, __m512i __B)
6229{
6230 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6231 (__v8di) __I
6232 /* idx */ ,
6233 (__v8di) __B,
6234 (__mmask8) __U);
6235}
6236
Craig Topper8c18e112016-05-17 04:41:50 +00006237#define _mm512_permute_pd(X, C) __extension__ ({ \
6238 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6239 (__v8df)_mm512_undefined_pd(), \
6240 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006241
Craig Topper8c18e112016-05-17 04:41:50 +00006242#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6243 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6244 (__v8df)(__m512d)(W), \
6245 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006246
Craig Topper8c18e112016-05-17 04:41:50 +00006247#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6248 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6249 (__v8df)_mm512_setzero_pd(), \
6250 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006251
Craig Topper8c18e112016-05-17 04:41:50 +00006252#define _mm512_permute_ps(X, C) __extension__ ({ \
6253 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6254 (__v16sf)_mm512_undefined_ps(), \
6255 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006256
Craig Topper8c18e112016-05-17 04:41:50 +00006257#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6258 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6259 (__v16sf)(__m512)(W), \
6260 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006261
Craig Topper8c18e112016-05-17 04:41:50 +00006262#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6263 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6264 (__v16sf)_mm512_setzero_ps(), \
6265 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006266
6267static __inline__ __m512d __DEFAULT_FN_ATTRS
6268_mm512_permutevar_pd (__m512d __A, __m512i __C)
6269{
6270 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6271 (__v8di) __C,
6272 (__v8df)
6273 _mm512_undefined_pd (),
6274 (__mmask8) -1);
6275}
6276
6277static __inline__ __m512d __DEFAULT_FN_ATTRS
6278_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6279{
6280 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6281 (__v8di) __C,
6282 (__v8df) __W,
6283 (__mmask8) __U);
6284}
6285
6286static __inline__ __m512d __DEFAULT_FN_ATTRS
6287_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6288{
6289 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6290 (__v8di) __C,
6291 (__v8df)
6292 _mm512_setzero_pd (),
6293 (__mmask8) __U);
6294}
6295
6296static __inline__ __m512 __DEFAULT_FN_ATTRS
6297_mm512_permutevar_ps (__m512 __A, __m512i __C)
6298{
6299 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6300 (__v16si) __C,
6301 (__v16sf)
6302 _mm512_undefined_ps (),
6303 (__mmask16) -1);
6304}
6305
6306static __inline__ __m512 __DEFAULT_FN_ATTRS
6307_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6308{
6309 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6310 (__v16si) __C,
6311 (__v16sf) __W,
6312 (__mmask16) __U);
6313}
6314
6315static __inline__ __m512 __DEFAULT_FN_ATTRS
6316_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6317{
6318 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6319 (__v16si) __C,
6320 (__v16sf)
6321 _mm512_setzero_ps (),
6322 (__mmask16) __U);
6323}
6324
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006325static __inline __m512d __DEFAULT_FN_ATTRS
6326_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006327{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006328 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6329 /* idx */ ,
6330 (__v8df) __A,
6331 (__v8df) __B,
6332 (__mmask8) -1);
6333}
6334
6335static __inline__ __m512d __DEFAULT_FN_ATTRS
6336_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6337{
6338 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6339 /* idx */ ,
6340 (__v8df) __A,
6341 (__v8df) __B,
6342 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006343}
6344
6345static __inline__ __m512d __DEFAULT_FN_ATTRS
6346_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6347 __m512d __B)
6348{
6349 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006350 /* idx */ ,
6351 (__v8df) __A,
6352 (__v8df) __B,
6353 (__mmask8) __U);
6354}
6355
6356static __inline __m512 __DEFAULT_FN_ATTRS
6357_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6358{
6359 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6360 /* idx */ ,
6361 (__v16sf) __A,
6362 (__v16sf) __B,
6363 (__mmask16) -1);
6364}
6365
6366static __inline__ __m512 __DEFAULT_FN_ATTRS
6367_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6368{
6369 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6370 /* idx */ ,
6371 (__v16sf) __A,
6372 (__v16sf) __B,
6373 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006374}
6375
6376static __inline__ __m512 __DEFAULT_FN_ATTRS
6377_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6378 __m512 __B)
6379{
6380 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006381 /* idx */ ,
6382 (__v16sf) __A,
6383 (__v16sf) __B,
6384 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006385}
6386
Michael Zuckerman07525092016-04-11 10:22:07 +00006387static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6388_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6389{
6390 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6391 (__v16si) __B,
6392 (__mmask16) -1);
6393}
6394
6395static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6396_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6397{
6398 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6399 (__v16si) __B, __U);
6400}
6401
6402static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6403_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6404{
6405 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6406 (__v8di) __B,
6407 (__mmask8) -1);
6408}
6409
6410static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6411_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6412{
6413 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6414 (__v8di) __B, __U);
6415}
6416
Craig Topper8c18e112016-05-17 04:41:50 +00006417#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6418 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6419 (__v8si)_mm256_undefined_si256(), \
6420 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006421
Craig Topper8c18e112016-05-17 04:41:50 +00006422#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6423 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6424 (__v8si)(__m256i)(W), \
6425 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006426
Craig Topper8c18e112016-05-17 04:41:50 +00006427#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6428 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6429 (__v8si)_mm256_setzero_si256(), \
6430 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006431
6432static __inline__ __m256i __DEFAULT_FN_ATTRS
6433_mm512_cvttpd_epu32 (__m512d __A)
6434{
6435 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6436 (__v8si)
6437 _mm256_undefined_si256 (),
6438 (__mmask8) -1,
6439 _MM_FROUND_CUR_DIRECTION);
6440}
6441
6442static __inline__ __m256i __DEFAULT_FN_ATTRS
6443_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6444{
6445 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6446 (__v8si) __W,
6447 (__mmask8) __U,
6448 _MM_FROUND_CUR_DIRECTION);
6449}
6450
6451static __inline__ __m256i __DEFAULT_FN_ATTRS
6452_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6453{
6454 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6455 (__v8si)
6456 _mm256_setzero_si256 (),
6457 (__mmask8) __U,
6458 _MM_FROUND_CUR_DIRECTION);
6459}
Michael Zuckerman07525092016-04-11 10:22:07 +00006460
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006461static __inline__ __m512i __DEFAULT_FN_ATTRS
6462_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6463 __m512i __B)
6464{
6465 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6466 (__v16si) __B,
6467 (__v16si) __W,
6468 (__mmask16) __U);
6469}
6470
6471static __inline__ __m512i __DEFAULT_FN_ATTRS
6472_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6473{
6474 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6475 (__v16si) __B,
6476 (__v16si)
6477 _mm512_setzero_si512 (),
6478 (__mmask16) __U);
6479}
6480
6481static __inline__ __m512i __DEFAULT_FN_ATTRS
6482_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6483{
6484 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6485 (__v8di) __B,
6486 (__v8di)
6487 _mm512_setzero_si512 (),
6488 (__mmask8) -1);
6489}
6490
6491static __inline__ __m512i __DEFAULT_FN_ATTRS
6492_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6493{
6494 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6495 (__v8di) __B,
6496 (__v8di) __W,
6497 (__mmask8) __U);
6498}
6499
6500static __inline__ __m512i __DEFAULT_FN_ATTRS
6501_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6502{
6503 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6504 (__v8di) __B,
6505 (__v8di)
6506 _mm512_setzero_si512 (),
6507 (__mmask8) __U);
6508}
6509
6510static __inline__ __m512i __DEFAULT_FN_ATTRS
6511_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6512{
6513 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6514 (__v16si) __B,
6515 (__v16si)
6516 _mm512_setzero_si512 (),
6517 (__mmask16) -1);
6518}
6519
6520static __inline__ __m512i __DEFAULT_FN_ATTRS
6521_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6522 __m512i __B)
6523{
6524 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6525 (__v16si) __B,
6526 (__v16si) __W,
6527 (__mmask16) __U);
6528}
6529
6530static __inline__ __m512i __DEFAULT_FN_ATTRS
6531_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6532{
6533 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6534 (__v16si) __B,
6535 (__v16si)
6536 _mm512_setzero_si512 (),
6537 (__mmask16) __U);
6538}
6539
6540static __inline__ __m512i __DEFAULT_FN_ATTRS
6541_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6542{
6543 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6544 (__v8di) __B,
6545 (__v8di)
6546 _mm512_setzero_si512 (),
6547 (__mmask8) -1);
6548}
6549
6550static __inline__ __m512i __DEFAULT_FN_ATTRS
6551_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6552{
6553 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6554 (__v8di) __B,
6555 (__v8di) __W,
6556 (__mmask8) __U);
6557}
6558
6559static __inline__ __m512i __DEFAULT_FN_ATTRS
6560_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6561{
6562 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6563 (__v8di) __B,
6564 (__v8di)
6565 _mm512_setzero_si512 (),
6566 (__mmask8) __U);
6567}
6568
Craig Topper8c18e112016-05-17 04:41:50 +00006569#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6570 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6571 (__v2df)(__m128d)(B), \
6572 (__v2df)_mm_setzero_pd(), \
6573 (__mmask8)-1, (int)(imm), \
6574 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006575
Craig Topper8c18e112016-05-17 04:41:50 +00006576#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6577 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6578 (__v2df)(__m128d)(B), \
6579 (__v2df)_mm_setzero_pd(), \
6580 (__mmask8)-1, (int)(imm), \
6581 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006582
Craig Topper8c18e112016-05-17 04:41:50 +00006583#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6584 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6585 (__v2df)(__m128d)(B), \
6586 (__v2df)(__m128d)(W), \
6587 (__mmask8)(U), (int)(imm), \
6588 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006589
Craig Topper8c18e112016-05-17 04:41:50 +00006590#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6591 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6592 (__v2df)(__m128d)(B), \
6593 (__v2df)(__m128d)(W), \
6594 (__mmask8)(U), (int)(I), \
6595 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006596
Craig Topper8c18e112016-05-17 04:41:50 +00006597#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6598 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6599 (__v2df)(__m128d)(B), \
6600 (__v2df)_mm_setzero_pd(), \
6601 (__mmask8)(U), (int)(I), \
6602 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006603
Craig Topper8c18e112016-05-17 04:41:50 +00006604#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6605 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6606 (__v2df)(__m128d)(B), \
6607 (__v2df)_mm_setzero_pd(), \
6608 (__mmask8)(U), (int)(I), \
6609 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006610
Craig Topper8c18e112016-05-17 04:41:50 +00006611#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6612 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6613 (__v4sf)(__m128)(B), \
6614 (__v4sf)_mm_setzero_ps(), \
6615 (__mmask8)-1, (int)(imm), \
6616 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006617
Craig Topper8c18e112016-05-17 04:41:50 +00006618#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6619 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6620 (__v4sf)(__m128)(B), \
6621 (__v4sf)_mm_setzero_ps(), \
6622 (__mmask8)-1, (int)(imm), \
6623 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006624
Craig Topper8c18e112016-05-17 04:41:50 +00006625#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6626 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6627 (__v4sf)(__m128)(B), \
6628 (__v4sf)(__m128)(W), \
6629 (__mmask8)(U), (int)(I), \
6630 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006631
Craig Topper8c18e112016-05-17 04:41:50 +00006632#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6633 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6634 (__v4sf)(__m128)(B), \
6635 (__v4sf)(__m128)(W), \
6636 (__mmask8)(U), (int)(I), \
6637 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006638
Craig Topper8c18e112016-05-17 04:41:50 +00006639#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6640 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6641 (__v4sf)(__m128)(B), \
6642 (__v4sf)_mm_setzero_ps(), \
6643 (__mmask8)(U), (int)(I), \
6644 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006645
Craig Topper8c18e112016-05-17 04:41:50 +00006646#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6647 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6648 (__v4sf)(__m128)(B), \
6649 (__v4sf)_mm_setzero_ps(), \
6650 (__mmask8)(U), (int)(I), \
6651 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006652
Craig Topper8c18e112016-05-17 04:41:50 +00006653#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6654 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6655 (__v8df)(__m512d)(B), \
6656 (__v8df)_mm512_undefined_pd(), \
6657 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006658
Craig Topper8c18e112016-05-17 04:41:50 +00006659#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6660 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6661 (__v8df)(__m512d)(B), \
6662 (__v8df)(__m512d)(W), \
6663 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006664
Craig Topper8c18e112016-05-17 04:41:50 +00006665#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6666 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6667 (__v8df)(__m512d)(B), \
6668 (__v8df)_mm512_setzero_pd(), \
6669 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006670
6671static __inline__ __m512d __DEFAULT_FN_ATTRS
6672_mm512_scalef_pd (__m512d __A, __m512d __B)
6673{
6674 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6675 (__v8df) __B,
6676 (__v8df)
6677 _mm512_undefined_pd (),
6678 (__mmask8) -1,
6679 _MM_FROUND_CUR_DIRECTION);
6680}
6681
6682static __inline__ __m512d __DEFAULT_FN_ATTRS
6683_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6684{
6685 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6686 (__v8df) __B,
6687 (__v8df) __W,
6688 (__mmask8) __U,
6689 _MM_FROUND_CUR_DIRECTION);
6690}
6691
6692static __inline__ __m512d __DEFAULT_FN_ATTRS
6693_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6694{
6695 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6696 (__v8df) __B,
6697 (__v8df)
6698 _mm512_setzero_pd (),
6699 (__mmask8) __U,
6700 _MM_FROUND_CUR_DIRECTION);
6701}
6702
Craig Topper8c18e112016-05-17 04:41:50 +00006703#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6704 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6705 (__v16sf)(__m512)(B), \
6706 (__v16sf)_mm512_undefined_ps(), \
6707 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006708
Craig Topper8c18e112016-05-17 04:41:50 +00006709#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6710 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6711 (__v16sf)(__m512)(B), \
6712 (__v16sf)(__m512)(W), \
6713 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006714
Craig Topper8c18e112016-05-17 04:41:50 +00006715#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6716 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6717 (__v16sf)(__m512)(B), \
6718 (__v16sf)_mm512_setzero_ps(), \
6719 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006720
6721static __inline__ __m512 __DEFAULT_FN_ATTRS
6722_mm512_scalef_ps (__m512 __A, __m512 __B)
6723{
6724 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6725 (__v16sf) __B,
6726 (__v16sf)
6727 _mm512_undefined_ps (),
6728 (__mmask16) -1,
6729 _MM_FROUND_CUR_DIRECTION);
6730}
6731
6732static __inline__ __m512 __DEFAULT_FN_ATTRS
6733_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6734{
6735 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6736 (__v16sf) __B,
6737 (__v16sf) __W,
6738 (__mmask16) __U,
6739 _MM_FROUND_CUR_DIRECTION);
6740}
6741
6742static __inline__ __m512 __DEFAULT_FN_ATTRS
6743_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6744{
6745 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6746 (__v16sf) __B,
6747 (__v16sf)
6748 _mm512_setzero_ps (),
6749 (__mmask16) __U,
6750 _MM_FROUND_CUR_DIRECTION);
6751}
6752
Craig Topper8c18e112016-05-17 04:41:50 +00006753#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6754 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6755 (__v2df)(__m128d)(B), \
6756 (__v2df)_mm_setzero_pd(), \
6757 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006758
6759static __inline__ __m128d __DEFAULT_FN_ATTRS
6760_mm_scalef_sd (__m128d __A, __m128d __B)
6761{
6762 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6763 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6764 (__mmask8) -1,
6765 _MM_FROUND_CUR_DIRECTION);
6766}
6767
6768static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006769_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006770{
6771 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6772 (__v2df) __B,
6773 (__v2df) __W,
6774 (__mmask8) __U,
6775 _MM_FROUND_CUR_DIRECTION);
6776}
6777
Craig Topper8c18e112016-05-17 04:41:50 +00006778#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6779 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6780 (__v2df)(__m128d)(B), \
6781 (__v2df)(__m128d)(W), \
6782 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006783
6784static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006785_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006786{
6787 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6788 (__v2df) __B,
6789 (__v2df) _mm_setzero_pd (),
6790 (__mmask8) __U,
6791 _MM_FROUND_CUR_DIRECTION);
6792}
6793
Craig Topper8c18e112016-05-17 04:41:50 +00006794#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6795 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6796 (__v2df)(__m128d)(B), \
6797 (__v2df)_mm_setzero_pd(), \
6798 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006799
Craig Topper8c18e112016-05-17 04:41:50 +00006800#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6801 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6802 (__v4sf)(__m128)(B), \
6803 (__v4sf)_mm_setzero_ps(), \
6804 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006805
6806static __inline__ __m128 __DEFAULT_FN_ATTRS
6807_mm_scalef_ss (__m128 __A, __m128 __B)
6808{
6809 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6810 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6811 (__mmask8) -1,
6812 _MM_FROUND_CUR_DIRECTION);
6813}
6814
6815static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006816_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006817{
6818 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6819 (__v4sf) __B,
6820 (__v4sf) __W,
6821 (__mmask8) __U,
6822 _MM_FROUND_CUR_DIRECTION);
6823}
6824
Craig Topper8c18e112016-05-17 04:41:50 +00006825#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6826 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6827 (__v4sf)(__m128)(B), \
6828 (__v4sf)(__m128)(W), \
6829 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006830
6831static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006832_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006833{
6834 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6835 (__v4sf) __B,
6836 (__v4sf) _mm_setzero_ps (),
6837 (__mmask8) __U,
6838 _MM_FROUND_CUR_DIRECTION);
6839}
6840
Craig Topper8c18e112016-05-17 04:41:50 +00006841#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6842 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6843 (__v4sf)(__m128)(B), \
6844 (__v4sf)_mm_setzero_ps(), \
6845 (__mmask8)(U), \
6846 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006847
Craig Topper79d05c92016-05-15 20:10:06 +00006848#define _mm512_srai_epi32(A, B) __extension__ ({ \
6849 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6850 (__v16si)_mm512_setzero_si512(), \
6851 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006852
Craig Topper8c18e112016-05-17 04:41:50 +00006853#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6854 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6855 (__v16si)(__m512i)(W), \
6856 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006857
Craig Topper8c18e112016-05-17 04:41:50 +00006858#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6859 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6860 (__v16si)_mm512_setzero_si512(), \
6861 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006862
Craig Topper8c18e112016-05-17 04:41:50 +00006863#define _mm512_srai_epi64(A, B) __extension__ ({ \
6864 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6865 (__v8di)_mm512_setzero_si512(), \
6866 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006867
Craig Topper8c18e112016-05-17 04:41:50 +00006868#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6869 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6870 (__v8di)(__m512i)(W), \
6871 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006872
Craig Topper8c18e112016-05-17 04:41:50 +00006873#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6874 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6875 (__v8di)_mm512_setzero_si512(), \
6876 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006877
Craig Topper8c18e112016-05-17 04:41:50 +00006878#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6879 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6880 (__v16sf)(__m512)(B), (int)(imm), \
6881 (__v16sf)_mm512_undefined_ps(), \
6882 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006883
Craig Topper8c18e112016-05-17 04:41:50 +00006884#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6885 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6886 (__v16sf)(__m512)(B), (int)(imm), \
6887 (__v16sf)(__m512)(W), \
6888 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006889
Craig Topper8c18e112016-05-17 04:41:50 +00006890#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6891 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6892 (__v16sf)(__m512)(B), (int)(imm), \
6893 (__v16sf)_mm512_setzero_ps(), \
6894 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006895
Craig Topper8c18e112016-05-17 04:41:50 +00006896#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6897 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6898 (__v8df)(__m512d)(B), (int)(imm), \
6899 (__v8df)_mm512_undefined_pd(), \
6900 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006901
Craig Topper8c18e112016-05-17 04:41:50 +00006902#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6903 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6904 (__v8df)(__m512d)(B), (int)(imm), \
6905 (__v8df)(__m512d)(W), \
6906 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006907
Craig Topper8c18e112016-05-17 04:41:50 +00006908#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6909 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6910 (__v8df)(__m512d)(B), (int)(imm), \
6911 (__v8df)_mm512_setzero_pd(), \
6912 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006913
Craig Topper8c18e112016-05-17 04:41:50 +00006914#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6915 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6916 (__v16si)(__m512i)(B), (int)(imm), \
6917 (__v16si)_mm512_setzero_si512(), \
6918 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006919
Craig Topper8c18e112016-05-17 04:41:50 +00006920#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6921 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6922 (__v16si)(__m512i)(B), (int)(imm), \
6923 (__v16si)(__m512i)(W), \
6924 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006925
Craig Topper8c18e112016-05-17 04:41:50 +00006926#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6927 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6928 (__v16si)(__m512i)(B), (int)(imm), \
6929 (__v16si)_mm512_setzero_si512(), \
6930 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006931
Craig Topper8c18e112016-05-17 04:41:50 +00006932#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6933 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6934 (__v8di)(__m512i)(B), (int)(imm), \
6935 (__v8di)_mm512_setzero_si512(), \
6936 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006937
Craig Topper8c18e112016-05-17 04:41:50 +00006938#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6939 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6940 (__v8di)(__m512i)(B), (int)(imm), \
6941 (__v8di)(__m512i)(W), \
6942 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006943
Craig Topper8c18e112016-05-17 04:41:50 +00006944#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6945 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6946 (__v8di)(__m512i)(B), (int)(imm), \
6947 (__v8di)_mm512_setzero_si512(), \
6948 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006949
Craig Topper8c18e112016-05-17 04:41:50 +00006950#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6951 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6952 (__v8df)(__m512d)(V), (int)(imm), \
6953 (__v8df)_mm512_undefined_pd(), \
6954 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006955
Craig Topper8c18e112016-05-17 04:41:50 +00006956#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6957 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6958 (__v8df)(__m512d)(V), (int)(imm), \
6959 (__v8df)(__m512d)(W), \
6960 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006961
Craig Topper8c18e112016-05-17 04:41:50 +00006962#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6963 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6964 (__v8df)(__m512d)(V), (int)(imm), \
6965 (__v8df)_mm512_setzero_pd(), \
6966 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006967
Craig Topper8c18e112016-05-17 04:41:50 +00006968#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
6969 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6970 (__v16sf)(__m512)(V), (int)(imm), \
6971 (__v16sf)_mm512_undefined_ps(), \
6972 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006973
Craig Topper8c18e112016-05-17 04:41:50 +00006974#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
6975 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6976 (__v16sf)(__m512)(V), (int)(imm), \
6977 (__v16sf)(__m512)(W), \
6978 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006979
Craig Topper8c18e112016-05-17 04:41:50 +00006980#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
6981 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6982 (__v16sf)(__m512)(V), (int)(imm), \
6983 (__v16sf)_mm512_setzero_ps(), \
6984 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006985
Craig Topper8c18e112016-05-17 04:41:50 +00006986#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
6987 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6988 (__v2df)(__m128d)(A), \
6989 (__v2df)_mm_setzero_pd(), \
6990 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006991
6992static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00006993_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006994{
6995 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6996 (__v2df) __A,
6997 (__v2df) __W,
6998 (__mmask8) __U,
6999 _MM_FROUND_CUR_DIRECTION);
7000}
7001
Craig Topper8c18e112016-05-17 04:41:50 +00007002#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
7003 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7004 (__v2df)(__m128d)(A), \
7005 (__v2df)(__m128d)(W), \
7006 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007007
7008static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007009_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007010{
7011 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
7012 (__v2df) __A,
7013 (__v2df) _mm_setzero_pd (),
7014 (__mmask8) __U,
7015 _MM_FROUND_CUR_DIRECTION);
7016}
7017
Craig Topper8c18e112016-05-17 04:41:50 +00007018#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
7019 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
7020 (__v2df)(__m128d)(A), \
7021 (__v2df)_mm_setzero_pd(), \
7022 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007023
Craig Topper8c18e112016-05-17 04:41:50 +00007024#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
7025 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7026 (__v4sf)(__m128)(A), \
7027 (__v4sf)_mm_setzero_ps(), \
7028 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007029
7030static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007031_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007032{
7033 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
7034 (__v4sf) __A,
7035 (__v4sf) __W,
7036 (__mmask8) __U,
7037 _MM_FROUND_CUR_DIRECTION);
7038}
7039
Craig Topper8c18e112016-05-17 04:41:50 +00007040#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
7041 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7042 (__v4sf)(__m128)(A), \
7043 (__v4sf)(__m128)(W), (__mmask8)(U), \
7044 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007045
7046static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00007047_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007048{
7049 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
7050 (__v4sf) __B,
7051 (__v4sf) _mm_setzero_ps (),
7052 (__mmask8) __U,
7053 _MM_FROUND_CUR_DIRECTION);
7054}
7055
Craig Topper8c18e112016-05-17 04:41:50 +00007056#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
7057 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
7058 (__v4sf)(__m128)(A), \
7059 (__v4sf)_mm_setzero_ps(), \
7060 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00007061
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00007062static __inline__ __m512 __DEFAULT_FN_ATTRS
7063_mm512_broadcast_f32x4 (__m128 __A)
7064{
7065 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7066 (__v16sf)
7067 _mm512_undefined_ps (),
7068 (__mmask16) -1);
7069}
7070
7071static __inline__ __m512 __DEFAULT_FN_ATTRS
7072_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
7073{
7074 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7075 (__v16sf) __O,
7076 __M);
7077}
7078
7079static __inline__ __m512 __DEFAULT_FN_ATTRS
7080_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
7081{
7082 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
7083 (__v16sf)
7084 _mm512_setzero_ps (),
7085 __M);
7086}
7087
7088static __inline__ __m512d __DEFAULT_FN_ATTRS
7089_mm512_broadcast_f64x4 (__m256d __A)
7090{
7091 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7092 (__v8df)
7093 _mm512_undefined_pd (),
7094 (__mmask8) -1);
7095}
7096
7097static __inline__ __m512d __DEFAULT_FN_ATTRS
7098_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
7099{
7100 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7101 (__v8df) __O,
7102 __M);
7103}
7104
7105static __inline__ __m512d __DEFAULT_FN_ATTRS
7106_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
7107{
7108 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
7109 (__v8df)
7110 _mm512_setzero_pd (),
7111 __M);
7112}
7113
7114static __inline__ __m512i __DEFAULT_FN_ATTRS
7115_mm512_broadcast_i32x4 (__m128i __A)
7116{
7117 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7118 (__v16si)
7119 _mm512_undefined_epi32 (),
7120 (__mmask16) -1);
7121}
7122
7123static __inline__ __m512i __DEFAULT_FN_ATTRS
7124_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7125{
7126 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7127 (__v16si) __O,
7128 __M);
7129}
7130
7131static __inline__ __m512i __DEFAULT_FN_ATTRS
7132_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7133{
7134 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7135 (__v16si)
7136 _mm512_setzero_si512 (),
7137 __M);
7138}
7139
7140static __inline__ __m512i __DEFAULT_FN_ATTRS
7141_mm512_broadcast_i64x4 (__m256i __A)
7142{
7143 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7144 (__v8di)
7145 _mm512_undefined_epi32 (),
7146 (__mmask8) -1);
7147}
7148
7149static __inline__ __m512i __DEFAULT_FN_ATTRS
7150_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7151{
7152 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7153 (__v8di) __O,
7154 __M);
7155}
7156
7157static __inline__ __m512i __DEFAULT_FN_ATTRS
7158_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7159{
7160 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7161 (__v8di)
7162 _mm512_setzero_si512 (),
7163 __M);
7164}
7165
7166static __inline__ __m512d __DEFAULT_FN_ATTRS
7167_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7168{
7169 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7170 (__v8df) __O, __M);
7171}
7172
7173static __inline__ __m512d __DEFAULT_FN_ATTRS
7174_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7175{
7176 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7177 (__v8df)
7178 _mm512_setzero_pd (),
7179 __M);
7180}
7181
7182static __inline__ __m512 __DEFAULT_FN_ATTRS
7183_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7184{
7185 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7186 (__v16sf) __O, __M);
7187}
7188
7189static __inline__ __m512 __DEFAULT_FN_ATTRS
7190_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7191{
7192 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7193 (__v16sf)
7194 _mm512_setzero_ps (),
7195 __M);
7196}
7197
Michael Zuckermane1680612016-04-13 15:02:04 +00007198static __inline__ __m128i __DEFAULT_FN_ATTRS
7199_mm512_cvtsepi32_epi8 (__m512i __A)
7200{
7201 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7202 (__v16qi) _mm_undefined_si128 (),
7203 (__mmask16) -1);
7204}
7205
7206static __inline__ __m128i __DEFAULT_FN_ATTRS
7207_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7208{
7209 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7210 (__v16qi) __O, __M);
7211}
7212
7213static __inline__ __m128i __DEFAULT_FN_ATTRS
7214_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7215{
7216 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7217 (__v16qi) _mm_setzero_si128 (),
7218 __M);
7219}
7220
7221static __inline__ void __DEFAULT_FN_ATTRS
7222_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7223{
7224 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7225}
7226
7227static __inline__ __m256i __DEFAULT_FN_ATTRS
7228_mm512_cvtsepi32_epi16 (__m512i __A)
7229{
7230 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7231 (__v16hi) _mm256_undefined_si256 (),
7232 (__mmask16) -1);
7233}
7234
7235static __inline__ __m256i __DEFAULT_FN_ATTRS
7236_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7237{
7238 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7239 (__v16hi) __O, __M);
7240}
7241
7242static __inline__ __m256i __DEFAULT_FN_ATTRS
7243_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7244{
7245 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7246 (__v16hi) _mm256_setzero_si256 (),
7247 __M);
7248}
7249
7250static __inline__ void __DEFAULT_FN_ATTRS
7251_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7252{
7253 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7254}
7255
7256static __inline__ __m128i __DEFAULT_FN_ATTRS
7257_mm512_cvtsepi64_epi8 (__m512i __A)
7258{
7259 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7260 (__v16qi) _mm_undefined_si128 (),
7261 (__mmask8) -1);
7262}
7263
7264static __inline__ __m128i __DEFAULT_FN_ATTRS
7265_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7266{
7267 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7268 (__v16qi) __O, __M);
7269}
7270
7271static __inline__ __m128i __DEFAULT_FN_ATTRS
7272_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7273{
7274 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7275 (__v16qi) _mm_setzero_si128 (),
7276 __M);
7277}
7278
7279static __inline__ void __DEFAULT_FN_ATTRS
7280_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7281{
7282 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7283}
7284
7285static __inline__ __m256i __DEFAULT_FN_ATTRS
7286_mm512_cvtsepi64_epi32 (__m512i __A)
7287{
7288 __v8si __O;
7289 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7290 (__v8si) _mm256_undefined_si256 (),
7291 (__mmask8) -1);
7292}
7293
7294static __inline__ __m256i __DEFAULT_FN_ATTRS
7295_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7296{
7297 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7298 (__v8si) __O, __M);
7299}
7300
7301static __inline__ __m256i __DEFAULT_FN_ATTRS
7302_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7303{
7304 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7305 (__v8si) _mm256_setzero_si256 (),
7306 __M);
7307}
7308
7309static __inline__ void __DEFAULT_FN_ATTRS
7310_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7311{
7312 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7313}
7314
7315static __inline__ __m128i __DEFAULT_FN_ATTRS
7316_mm512_cvtsepi64_epi16 (__m512i __A)
7317{
7318 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7319 (__v8hi) _mm_undefined_si128 (),
7320 (__mmask8) -1);
7321}
7322
7323static __inline__ __m128i __DEFAULT_FN_ATTRS
7324_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7325{
7326 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7327 (__v8hi) __O, __M);
7328}
7329
7330static __inline__ __m128i __DEFAULT_FN_ATTRS
7331_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7332{
7333 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7334 (__v8hi) _mm_setzero_si128 (),
7335 __M);
7336}
7337
7338static __inline__ void __DEFAULT_FN_ATTRS
7339_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7340{
7341 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7342}
7343
Michael Zuckermand8715312016-04-14 06:48:09 +00007344static __inline__ __m128i __DEFAULT_FN_ATTRS
7345_mm512_cvtusepi32_epi8 (__m512i __A)
7346{
7347 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7348 (__v16qi) _mm_undefined_si128 (),
7349 (__mmask16) -1);
7350}
7351
7352static __inline__ __m128i __DEFAULT_FN_ATTRS
7353_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7354{
7355 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7356 (__v16qi) __O,
7357 __M);
7358}
7359
7360static __inline__ __m128i __DEFAULT_FN_ATTRS
7361_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7362{
7363 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7364 (__v16qi) _mm_setzero_si128 (),
7365 __M);
7366}
7367
7368static __inline__ void __DEFAULT_FN_ATTRS
7369_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7370{
7371 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7372}
7373
7374static __inline__ __m256i __DEFAULT_FN_ATTRS
7375_mm512_cvtusepi32_epi16 (__m512i __A)
7376{
7377 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7378 (__v16hi) _mm256_undefined_si256 (),
7379 (__mmask16) -1);
7380}
7381
7382static __inline__ __m256i __DEFAULT_FN_ATTRS
7383_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7384{
7385 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7386 (__v16hi) __O,
7387 __M);
7388}
7389
7390static __inline__ __m256i __DEFAULT_FN_ATTRS
7391_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7392{
7393 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7394 (__v16hi) _mm256_setzero_si256 (),
7395 __M);
7396}
7397
7398static __inline__ void __DEFAULT_FN_ATTRS
7399_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7400{
7401 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7402}
7403
7404static __inline__ __m128i __DEFAULT_FN_ATTRS
7405_mm512_cvtusepi64_epi8 (__m512i __A)
7406{
7407 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7408 (__v16qi) _mm_undefined_si128 (),
7409 (__mmask8) -1);
7410}
7411
7412static __inline__ __m128i __DEFAULT_FN_ATTRS
7413_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7414{
7415 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7416 (__v16qi) __O,
7417 __M);
7418}
7419
7420static __inline__ __m128i __DEFAULT_FN_ATTRS
7421_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7422{
7423 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7424 (__v16qi) _mm_setzero_si128 (),
7425 __M);
7426}
7427
7428static __inline__ void __DEFAULT_FN_ATTRS
7429_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7430{
7431 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7432}
7433
7434static __inline__ __m256i __DEFAULT_FN_ATTRS
7435_mm512_cvtusepi64_epi32 (__m512i __A)
7436{
7437 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7438 (__v8si) _mm256_undefined_si256 (),
7439 (__mmask8) -1);
7440}
7441
7442static __inline__ __m256i __DEFAULT_FN_ATTRS
7443_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7444{
7445 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7446 (__v8si) __O, __M);
7447}
7448
7449static __inline__ __m256i __DEFAULT_FN_ATTRS
7450_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7451{
7452 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7453 (__v8si) _mm256_setzero_si256 (),
7454 __M);
7455}
7456
7457static __inline__ void __DEFAULT_FN_ATTRS
7458_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7459{
7460 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7461}
7462
7463static __inline__ __m128i __DEFAULT_FN_ATTRS
7464_mm512_cvtusepi64_epi16 (__m512i __A)
7465{
7466 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7467 (__v8hi) _mm_undefined_si128 (),
7468 (__mmask8) -1);
7469}
7470
7471static __inline__ __m128i __DEFAULT_FN_ATTRS
7472_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7473{
7474 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7475 (__v8hi) __O, __M);
7476}
7477
7478static __inline__ __m128i __DEFAULT_FN_ATTRS
7479_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7480{
7481 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7482 (__v8hi) _mm_setzero_si128 (),
7483 __M);
7484}
7485
7486static __inline__ void __DEFAULT_FN_ATTRS
7487_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7488{
7489 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7490}
7491
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007492static __inline__ __m128i __DEFAULT_FN_ATTRS
7493_mm512_cvtepi32_epi8 (__m512i __A)
7494{
7495 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7496 (__v16qi) _mm_undefined_si128 (),
7497 (__mmask16) -1);
7498}
7499
7500static __inline__ __m128i __DEFAULT_FN_ATTRS
7501_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7502{
7503 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7504 (__v16qi) __O, __M);
7505}
7506
7507static __inline__ __m128i __DEFAULT_FN_ATTRS
7508_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7509{
7510 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7511 (__v16qi) _mm_setzero_si128 (),
7512 __M);
7513}
7514
7515static __inline__ void __DEFAULT_FN_ATTRS
7516_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7517{
7518 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7519}
7520
7521static __inline__ __m256i __DEFAULT_FN_ATTRS
7522_mm512_cvtepi32_epi16 (__m512i __A)
7523{
7524 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7525 (__v16hi) _mm256_undefined_si256 (),
7526 (__mmask16) -1);
7527}
7528
7529static __inline__ __m256i __DEFAULT_FN_ATTRS
7530_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7531{
7532 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7533 (__v16hi) __O, __M);
7534}
7535
7536static __inline__ __m256i __DEFAULT_FN_ATTRS
7537_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7538{
7539 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7540 (__v16hi) _mm256_setzero_si256 (),
7541 __M);
7542}
7543
7544static __inline__ void __DEFAULT_FN_ATTRS
7545_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7546{
7547 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7548}
7549
7550static __inline__ __m128i __DEFAULT_FN_ATTRS
7551_mm512_cvtepi64_epi8 (__m512i __A)
7552{
7553 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7554 (__v16qi) _mm_undefined_si128 (),
7555 (__mmask8) -1);
7556}
7557
7558static __inline__ __m128i __DEFAULT_FN_ATTRS
7559_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7560{
7561 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7562 (__v16qi) __O, __M);
7563}
7564
7565static __inline__ __m128i __DEFAULT_FN_ATTRS
7566_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7567{
7568 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7569 (__v16qi) _mm_setzero_si128 (),
7570 __M);
7571}
7572
7573static __inline__ void __DEFAULT_FN_ATTRS
7574_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7575{
7576 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7577}
7578
7579static __inline__ __m256i __DEFAULT_FN_ATTRS
7580_mm512_cvtepi64_epi32 (__m512i __A)
7581{
7582 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7583 (__v8si) _mm256_undefined_si256 (),
7584 (__mmask8) -1);
7585}
7586
7587static __inline__ __m256i __DEFAULT_FN_ATTRS
7588_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7589{
7590 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7591 (__v8si) __O, __M);
7592}
7593
7594static __inline__ __m256i __DEFAULT_FN_ATTRS
7595_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7596{
7597 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7598 (__v8si) _mm256_setzero_si256 (),
7599 __M);
7600}
7601
7602static __inline__ void __DEFAULT_FN_ATTRS
7603_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7604{
7605 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7606}
7607
7608static __inline__ __m128i __DEFAULT_FN_ATTRS
7609_mm512_cvtepi64_epi16 (__m512i __A)
7610{
7611 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7612 (__v8hi) _mm_undefined_si128 (),
7613 (__mmask8) -1);
7614}
7615
7616static __inline__ __m128i __DEFAULT_FN_ATTRS
7617_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7618{
7619 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7620 (__v8hi) __O, __M);
7621}
7622
7623static __inline__ __m128i __DEFAULT_FN_ATTRS
7624_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7625{
7626 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7627 (__v8hi) _mm_setzero_si128 (),
7628 __M);
7629}
7630
7631static __inline__ void __DEFAULT_FN_ATTRS
7632_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7633{
7634 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7635}
7636
Craig Topper8c18e112016-05-17 04:41:50 +00007637#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7638 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7639 (__v4si)_mm_undefined_si128(), \
7640 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007641
Craig Topper8c18e112016-05-17 04:41:50 +00007642#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7643 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7644 (__v4si)(__m128i)(W), \
7645 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007646
Craig Topper8c18e112016-05-17 04:41:50 +00007647#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7648 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7649 (__v4si)_mm_setzero_si128(), \
7650 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007651
Craig Topper8c18e112016-05-17 04:41:50 +00007652#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7653 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7654 (__v4di)_mm256_undefined_si256(), \
7655 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007656
Craig Topper8c18e112016-05-17 04:41:50 +00007657#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7658 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7659 (__v4di)(__m256i)(W), \
7660 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007661
Craig Topper8c18e112016-05-17 04:41:50 +00007662#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7663 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7664 (__v4di)_mm256_setzero_si256(), \
7665 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007666
Craig Topper8c18e112016-05-17 04:41:50 +00007667#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7668 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7669 (__v4df)(__m256d)(B), (int)(imm), \
7670 (__v8df)_mm512_undefined_pd(), \
7671 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007672
Craig Topper8c18e112016-05-17 04:41:50 +00007673#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7674 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7675 (__v4df)(__m256d)(B), (int)(imm), \
7676 (__v8df)(__m512d)(W), \
7677 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007678
Craig Topper8c18e112016-05-17 04:41:50 +00007679#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7680 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7681 (__v4df)(__m256d)(B), (int)(imm), \
7682 (__v8df)_mm512_setzero_pd(), \
7683 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007684
Craig Topper8c18e112016-05-17 04:41:50 +00007685#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7686 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7687 (__v4di)(__m256i)(B), (int)(imm), \
7688 (__v8di)_mm512_setzero_si512(), \
7689 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007690
Craig Topper8c18e112016-05-17 04:41:50 +00007691#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7692 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7693 (__v4di)(__m256i)(B), (int)(imm), \
7694 (__v8di)(__m512i)(W), \
7695 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007696
Craig Topper8c18e112016-05-17 04:41:50 +00007697#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7698 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7699 (__v4di)(__m256i)(B), (int)(imm), \
7700 (__v8di)_mm512_setzero_si512(), \
7701 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007702
Craig Topper8c18e112016-05-17 04:41:50 +00007703#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7704 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7705 (__v4sf)(__m128)(B), (int)(imm), \
7706 (__v16sf)_mm512_undefined_ps(), \
7707 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007708
Craig Topper8c18e112016-05-17 04:41:50 +00007709#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7710 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7711 (__v4sf)(__m128)(B), (int)(imm), \
7712 (__v16sf)(__m512)(W), \
7713 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007714
Craig Topper8c18e112016-05-17 04:41:50 +00007715#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7716 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7717 (__v4sf)(__m128)(B), (int)(imm), \
7718 (__v16sf)_mm512_setzero_ps(), \
7719 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007720
Craig Topper8c18e112016-05-17 04:41:50 +00007721#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7722 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7723 (__v4si)(__m128i)(B), (int)(imm), \
7724 (__v16si)_mm512_setzero_si512(), \
7725 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007726
Craig Topper8c18e112016-05-17 04:41:50 +00007727#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7728 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7729 (__v4si)(__m128i)(B), (int)(imm), \
7730 (__v16si)(__m512i)(W), \
7731 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007732
Craig Topper8c18e112016-05-17 04:41:50 +00007733#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7734 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7735 (__v4si)(__m128i)(B), (int)(imm), \
7736 (__v16si)_mm512_setzero_si512(), \
7737 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007738
Craig Topper8c18e112016-05-17 04:41:50 +00007739#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7740 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7741 (int)(((C)<<2) | (B)), \
7742 (__v8df)_mm512_undefined_pd(), \
7743 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007744
Craig Topper8c18e112016-05-17 04:41:50 +00007745#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7746 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7747 (int)(((C)<<2) | (B)), \
7748 (__v8df)(__m512d)(W), \
7749 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007750
Craig Topper8c18e112016-05-17 04:41:50 +00007751#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7752 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7753 (int)(((C)<<2) | (B)), \
7754 (__v8df)_mm512_setzero_pd(), \
7755 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007756
Craig Topper8c18e112016-05-17 04:41:50 +00007757#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7758 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7759 (int)(((C)<<2) | (B)), \
7760 (__v8df)_mm512_setzero_pd(), \
7761 (__mmask8)-1, \
7762 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007763
Craig Topper8c18e112016-05-17 04:41:50 +00007764#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7765 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7766 (int)(((C)<<2) | (B)), \
7767 (__v8df)(__m512d)(W), \
7768 (__mmask8)(U), \
7769 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007770
Craig Topper8c18e112016-05-17 04:41:50 +00007771#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7772 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7773 (int)(((C)<<2) | (B)), \
7774 (__v8df)_mm512_setzero_pd(), \
7775 (__mmask8)(U), \
7776 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007777
Craig Topper8c18e112016-05-17 04:41:50 +00007778#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7779 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7780 (int)(((C)<<2) | (B)), \
7781 (__v16sf)_mm512_undefined_ps(), \
7782 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007783
Craig Topper8c18e112016-05-17 04:41:50 +00007784#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7785 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7786 (int)(((C)<<2) | (B)), \
7787 (__v16sf)(__m512)(W), \
7788 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007789
Craig Topper8c18e112016-05-17 04:41:50 +00007790#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7791 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7792 (int)(((C)<<2) | (B)), \
7793 (__v16sf)_mm512_setzero_ps(), \
7794 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007795
Craig Topper8c18e112016-05-17 04:41:50 +00007796#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7797 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7798 (int)(((C)<<2)|(B)), \
7799 (__v16sf)_mm512_undefined_ps(), \
7800 (__mmask16)-1, \
7801 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007802
Craig Topper8c18e112016-05-17 04:41:50 +00007803#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7804 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7805 (int)(((C)<<2)|(B)), \
7806 (__v16sf)(__m512)(W), \
7807 (__mmask16)(U), \
7808 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007809
Craig Topper8c18e112016-05-17 04:41:50 +00007810#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7811 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7812 (int)(((C)<<2)|(B)), \
7813 (__v16sf)_mm512_setzero_ps(), \
7814 (__mmask16)(U), \
7815 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007816
Craig Topper8c18e112016-05-17 04:41:50 +00007817#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7818 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7819 (__v8df)_mm512_undefined_pd(), \
7820 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007821
Craig Topper8c18e112016-05-17 04:41:50 +00007822#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7823 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7824 (__v8df)(__m512d)(W), \
7825 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007826
Craig Topper8c18e112016-05-17 04:41:50 +00007827#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7828 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7829 (__v8df)_mm512_setzero_pd(), \
7830 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007831
7832static __inline__ __m512d __DEFAULT_FN_ATTRS
7833_mm512_getexp_pd (__m512d __A)
7834{
7835 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7836 (__v8df) _mm512_undefined_pd (),
7837 (__mmask8) -1,
7838 _MM_FROUND_CUR_DIRECTION);
7839}
7840
7841static __inline__ __m512d __DEFAULT_FN_ATTRS
7842_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7843{
7844 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7845 (__v8df) __W,
7846 (__mmask8) __U,
7847 _MM_FROUND_CUR_DIRECTION);
7848}
7849
7850static __inline__ __m512d __DEFAULT_FN_ATTRS
7851_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7852{
7853 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7854 (__v8df) _mm512_setzero_pd (),
7855 (__mmask8) __U,
7856 _MM_FROUND_CUR_DIRECTION);
7857}
7858
Craig Topper8c18e112016-05-17 04:41:50 +00007859#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7860 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7861 (__v16sf)_mm512_undefined_ps(), \
7862 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007863
Craig Topper8c18e112016-05-17 04:41:50 +00007864#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7865 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7866 (__v16sf)(__m512)(W), \
7867 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007868
Craig Topper8c18e112016-05-17 04:41:50 +00007869#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7870 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7871 (__v16sf)_mm512_setzero_ps(), \
7872 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007873
7874static __inline__ __m512 __DEFAULT_FN_ATTRS
7875_mm512_getexp_ps (__m512 __A)
7876{
7877 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7878 (__v16sf) _mm512_undefined_ps (),
7879 (__mmask16) -1,
7880 _MM_FROUND_CUR_DIRECTION);
7881}
7882
7883static __inline__ __m512 __DEFAULT_FN_ATTRS
7884_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7885{
7886 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7887 (__v16sf) __W,
7888 (__mmask16) __U,
7889 _MM_FROUND_CUR_DIRECTION);
7890}
7891
7892static __inline__ __m512 __DEFAULT_FN_ATTRS
7893_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7894{
7895 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7896 (__v16sf) _mm512_setzero_ps (),
7897 (__mmask16) __U,
7898 _MM_FROUND_CUR_DIRECTION);
7899}
7900
Craig Topper8c18e112016-05-17 04:41:50 +00007901#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7902 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7903 (float const *)(addr), \
7904 (__v8di)(__m512i)(index), (__mmask8)-1, \
7905 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007906
7907#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7908 __addr, __scale) __extension__({\
7909__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7910 __addr,(__v8di) __index, __mask, __scale);\
7911})
7912
Craig Topper8c18e112016-05-17 04:41:50 +00007913#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7914 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7915 (int const *)(addr), \
7916 (__v8di)(__m512i)(index), \
7917 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007918
Craig Topper8c18e112016-05-17 04:41:50 +00007919#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7920 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7921 (int const *)(addr), \
7922 (__v8di)(__m512i)(index), \
7923 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007924
Craig Topper8c18e112016-05-17 04:41:50 +00007925#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7926 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7927 (double const *)(addr), \
7928 (__v8di)(__m512i)(index), (__mmask8)-1, \
7929 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007930
Craig Topper8c18e112016-05-17 04:41:50 +00007931#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7932 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7933 (double const *)(addr), \
7934 (__v8di)(__m512i)(index), \
7935 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007936
Craig Topper8c18e112016-05-17 04:41:50 +00007937#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7938 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7939 (long long const *)(addr), \
7940 (__v8di)(__m512i)(index), (__mmask8)-1, \
7941 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007942
Craig Topper8c18e112016-05-17 04:41:50 +00007943#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7944 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7945 (long long const *)(addr), \
7946 (__v8di)(__m512i)(index), \
7947 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007948
Craig Topper8c18e112016-05-17 04:41:50 +00007949#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7950 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7951 (float const *)(addr), \
7952 (__v16sf)(__m512)(index), \
7953 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007954
Craig Topper8c18e112016-05-17 04:41:50 +00007955#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7956 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7957 (float const *)(addr), \
7958 (__v16sf)(__m512)(index), \
7959 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007960
Craig Topper8c18e112016-05-17 04:41:50 +00007961#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7962 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7963 (int const *)(addr), \
7964 (__v16si)(__m512i)(index), \
7965 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007966
Craig Topper8c18e112016-05-17 04:41:50 +00007967#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7968 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
7969 (int const *)(addr), \
7970 (__v16si)(__m512i)(index), \
7971 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007972
Craig Topper8c18e112016-05-17 04:41:50 +00007973#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
7974 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
7975 (double const *)(addr), \
7976 (__v8si)(__m256i)(index), (__mmask8)-1, \
7977 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007978
Craig Topper8c18e112016-05-17 04:41:50 +00007979#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7980 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
7981 (double const *)(addr), \
7982 (__v8si)(__m256i)(index), \
7983 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007984
Craig Topper8c18e112016-05-17 04:41:50 +00007985#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
7986 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
7987 (long long const *)(addr), \
7988 (__v8si)(__m256i)(index), (__mmask8)-1, \
7989 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007990
Craig Topper8c18e112016-05-17 04:41:50 +00007991#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7992 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
7993 (long long const *)(addr), \
7994 (__v8si)(__m256i)(index), \
7995 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007996
Craig Topper8c18e112016-05-17 04:41:50 +00007997#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
7998 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
7999 (__v8di)(__m512i)(index), \
8000 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008001
Craig Topper8c18e112016-05-17 04:41:50 +00008002#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8003 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
8004 (__v8di)(__m512i)(index), \
8005 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008006
Craig Topper8c18e112016-05-17 04:41:50 +00008007#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
8008 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
8009 (__v8di)(__m512i)(index), \
8010 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008011
Craig Topper8c18e112016-05-17 04:41:50 +00008012#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8013 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
8014 (__v8di)(__m512i)(index), \
8015 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008016
Craig Topper8c18e112016-05-17 04:41:50 +00008017#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
8018 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
8019 (__v8di)(__m512i)(index), \
8020 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008021
Craig Topper8c18e112016-05-17 04:41:50 +00008022#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8023 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
8024 (__v8di)(__m512i)(index), \
8025 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008026
Craig Topper8c18e112016-05-17 04:41:50 +00008027#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
8028 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
8029 (__v8di)(__m512i)(index), \
8030 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008031
Craig Topper8c18e112016-05-17 04:41:50 +00008032#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8033 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
8034 (__v8di)(__m512i)(index), \
8035 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008036
Craig Topper8c18e112016-05-17 04:41:50 +00008037#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
8038 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
8039 (__v16si)(__m512i)(index), \
8040 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008041
Craig Topper8c18e112016-05-17 04:41:50 +00008042#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
8043 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
8044 (__v16si)(__m512i)(index), \
8045 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008046
Craig Topper8c18e112016-05-17 04:41:50 +00008047#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
8048 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
8049 (__v16si)(__m512i)(index), \
8050 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008051
Craig Topper8c18e112016-05-17 04:41:50 +00008052#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
8053 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
8054 (__v16si)(__m512i)(index), \
8055 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008056
Craig Topper8c18e112016-05-17 04:41:50 +00008057#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
8058 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
8059 (__v8si)(__m256i)(index), \
8060 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008061
Craig Topper8c18e112016-05-17 04:41:50 +00008062#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
8063 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
8064 (__v8si)(__m256i)(index), \
8065 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008066
Craig Topper8c18e112016-05-17 04:41:50 +00008067#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
8068 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
8069 (__v8si)(__m256i)(index), \
8070 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008071
Craig Topper8c18e112016-05-17 04:41:50 +00008072#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
8073 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
8074 (__v8si)(__m256i)(index), \
8075 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00008076
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008077static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008078_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008079{
8080 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
8081 (__v4sf) __B,
8082 (__v4sf) __W,
8083 (__mmask8) __U,
8084 _MM_FROUND_CUR_DIRECTION);
8085}
8086
Craig Topper8c18e112016-05-17 04:41:50 +00008087#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
8088 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8089 (__v4sf)(__m128)(B), \
8090 (__v4sf)(__m128)(W), (__mmask8)(U), \
8091 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008092
8093static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008094_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008095{
8096 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8097 (__v4sf) __B,
8098 (__v4sf) __C,
8099 (__mmask8) __U,
8100 _MM_FROUND_CUR_DIRECTION);
8101}
8102
Craig Topper8c18e112016-05-17 04:41:50 +00008103#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
8104 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8105 (__v4sf)(__m128)(B), \
8106 (__v4sf)(__m128)(C), (__mmask8)(U), \
8107 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008108
8109static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008110_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008111{
8112 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8113 (__v4sf) __X,
8114 (__v4sf) __Y,
8115 (__mmask8) __U,
8116 _MM_FROUND_CUR_DIRECTION);
8117}
8118
Craig Topper8c18e112016-05-17 04:41:50 +00008119#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8120 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8121 (__v4sf)(__m128)(X), \
8122 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8123 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008124
8125static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008126_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008127{
8128 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008129 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008130 (__v4sf) __W,
8131 (__mmask8) __U,
8132 _MM_FROUND_CUR_DIRECTION);
8133}
8134
Craig Topper8c18e112016-05-17 04:41:50 +00008135#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8136 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8137 -(__v4sf)(__m128)(B), \
8138 (__v4sf)(__m128)(W), (__mmask8)(U), \
8139 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008140
8141static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008142_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008143{
8144 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8145 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008146 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008147 (__mmask8) __U,
8148 _MM_FROUND_CUR_DIRECTION);
8149}
8150
Craig Topper8c18e112016-05-17 04:41:50 +00008151#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8152 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8153 (__v4sf)(__m128)(B), \
8154 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8155 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008156
8157static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008158_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008159{
8160 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8161 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008162 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008163 (__mmask8) __U,
8164 _MM_FROUND_CUR_DIRECTION);
8165}
8166
Craig Topper8c18e112016-05-17 04:41:50 +00008167#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8168 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8169 (__v4sf)(__m128)(X), \
8170 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8171 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008172
8173static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008174_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008175{
Craig Topper9864c592016-05-15 20:10:03 +00008176 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008177 (__v4sf) __B,
8178 (__v4sf) __W,
8179 (__mmask8) __U,
8180 _MM_FROUND_CUR_DIRECTION);
8181}
8182
Craig Topper8c18e112016-05-17 04:41:50 +00008183#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8184 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8185 (__v4sf)(__m128)(B), \
8186 (__v4sf)(__m128)(W), (__mmask8)(U), \
8187 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008188
8189static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008190_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008191{
Craig Topper9864c592016-05-15 20:10:03 +00008192 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008193 (__v4sf) __B,
8194 (__v4sf) __C,
8195 (__mmask8) __U,
8196 _MM_FROUND_CUR_DIRECTION);
8197}
8198
Craig Topper8c18e112016-05-17 04:41:50 +00008199#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8200 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8201 (__v4sf)(__m128)(B), \
8202 (__v4sf)(__m128)(C), (__mmask8)(U), \
8203 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008204
8205static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008206_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008207{
Craig Topper9864c592016-05-15 20:10:03 +00008208 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008209 (__v4sf) __X,
8210 (__v4sf) __Y,
8211 (__mmask8) __U,
8212 _MM_FROUND_CUR_DIRECTION);
8213}
8214
Craig Topper8c18e112016-05-17 04:41:50 +00008215#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8216 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8217 (__v4sf)(__m128)(X), \
8218 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8219 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008220
8221static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008222_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008223{
Craig Topper9864c592016-05-15 20:10:03 +00008224 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8225 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008226 (__v4sf) __W,
8227 (__mmask8) __U,
8228 _MM_FROUND_CUR_DIRECTION);
8229}
8230
Craig Topper8c18e112016-05-17 04:41:50 +00008231#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8232 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8233 -(__v4sf)(__m128)(B), \
8234 (__v4sf)(__m128)(W), (__mmask8)(U), \
8235 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008236
8237static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008238_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008239{
Craig Topper9864c592016-05-15 20:10:03 +00008240 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008241 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008242 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008243 (__mmask8) __U,
8244 _MM_FROUND_CUR_DIRECTION);
8245}
8246
Craig Topper8c18e112016-05-17 04:41:50 +00008247#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8248 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8249 (__v4sf)(__m128)(B), \
8250 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8251 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008252
8253static __inline__ __m128 __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008254_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008255{
Craig Topper9864c592016-05-15 20:10:03 +00008256 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008257 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008258 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008259 (__mmask8) __U,
8260 _MM_FROUND_CUR_DIRECTION);
8261}
8262
Craig Topper8c18e112016-05-17 04:41:50 +00008263#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8264 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8265 (__v4sf)(__m128)(X), \
8266 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8267 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008268
Craig Topper58187d32016-05-17 04:41:29 +00008269static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008270_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008271{
Craig Topper58187d32016-05-17 04:41:29 +00008272 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008273 (__v2df) __B,
8274 (__v2df) __W,
8275 (__mmask8) __U,
8276 _MM_FROUND_CUR_DIRECTION);
8277}
8278
Craig Topper8c18e112016-05-17 04:41:50 +00008279#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8280 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8281 (__v2df)(__m128d)(B), \
8282 (__v2df)(__m128d)(W), (__mmask8)(U), \
8283 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008284
Craig Topper58187d32016-05-17 04:41:29 +00008285static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008286_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008287{
Craig Topper58187d32016-05-17 04:41:29 +00008288 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008289 (__v2df) __B,
8290 (__v2df) __C,
8291 (__mmask8) __U,
8292 _MM_FROUND_CUR_DIRECTION);
8293}
8294
Craig Topper8c18e112016-05-17 04:41:50 +00008295#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8296 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8297 (__v2df)(__m128d)(B), \
8298 (__v2df)(__m128d)(C), (__mmask8)(U), \
8299 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008300
Craig Topper58187d32016-05-17 04:41:29 +00008301static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008302_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008303{
Craig Topper58187d32016-05-17 04:41:29 +00008304 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008305 (__v2df) __X,
8306 (__v2df) __Y,
8307 (__mmask8) __U,
8308 _MM_FROUND_CUR_DIRECTION);
8309}
8310
Craig Topper8c18e112016-05-17 04:41:50 +00008311#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8312 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8313 (__v2df)(__m128d)(X), \
8314 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8315 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008316
Craig Topper58187d32016-05-17 04:41:29 +00008317static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008318_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008319{
Craig Topper58187d32016-05-17 04:41:29 +00008320 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008321 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008322 (__v2df) __W,
8323 (__mmask8) __U,
8324 _MM_FROUND_CUR_DIRECTION);
8325}
8326
Craig Topper8c18e112016-05-17 04:41:50 +00008327#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8328 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8329 -(__v2df)(__m128d)(B), \
8330 (__v2df)(__m128d)(W), (__mmask8)(U), \
8331 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008332
Craig Topper58187d32016-05-17 04:41:29 +00008333static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008334_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008335{
Craig Topper58187d32016-05-17 04:41:29 +00008336 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008337 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008338 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008339 (__mmask8) __U,
8340 _MM_FROUND_CUR_DIRECTION);
8341}
8342
Craig Topper8c18e112016-05-17 04:41:50 +00008343#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8344 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8345 (__v2df)(__m128d)(B), \
8346 -(__v2df)(__m128d)(C), \
8347 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008348
Craig Topper58187d32016-05-17 04:41:29 +00008349static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008350_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008351{
Craig Topper58187d32016-05-17 04:41:29 +00008352 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008353 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008354 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008355 (__mmask8) __U,
8356 _MM_FROUND_CUR_DIRECTION);
8357}
8358
Craig Topper8c18e112016-05-17 04:41:50 +00008359#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8360 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8361 (__v2df)(__m128d)(X), \
8362 -(__v2df)(__m128d)(Y), \
8363 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008364
Craig Topper58187d32016-05-17 04:41:29 +00008365static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008366_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008367{
Craig Topper58187d32016-05-17 04:41:29 +00008368 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008369 (__v2df) __B,
8370 (__v2df) __W,
8371 (__mmask8) __U,
8372 _MM_FROUND_CUR_DIRECTION);
8373}
8374
Craig Topper8c18e112016-05-17 04:41:50 +00008375#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8376 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8377 (__v2df)(__m128d)(B), \
8378 (__v2df)(__m128d)(W), (__mmask8)(U), \
8379 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008380
Craig Topper58187d32016-05-17 04:41:29 +00008381static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008382_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008383{
Craig Topper58187d32016-05-17 04:41:29 +00008384 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008385 (__v2df) __B,
8386 (__v2df) __C,
8387 (__mmask8) __U,
8388 _MM_FROUND_CUR_DIRECTION);
8389}
8390
Craig Topper8c18e112016-05-17 04:41:50 +00008391#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8392 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8393 (__v2df)(__m128d)(B), \
8394 (__v2df)(__m128d)(C), (__mmask8)(U), \
8395 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008396
Craig Topper58187d32016-05-17 04:41:29 +00008397static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008398_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008399{
Craig Topper58187d32016-05-17 04:41:29 +00008400 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008401 (__v2df) __X,
8402 (__v2df) __Y,
8403 (__mmask8) __U,
8404 _MM_FROUND_CUR_DIRECTION);
8405}
8406
Craig Topper8c18e112016-05-17 04:41:50 +00008407#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8408 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8409 (__v2df)(__m128d)(X), \
8410 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8411 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008412
Craig Topper58187d32016-05-17 04:41:29 +00008413static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008414_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008415{
Craig Topper58187d32016-05-17 04:41:29 +00008416 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008417 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008418 (__v2df) __W,
8419 (__mmask8) __U,
8420 _MM_FROUND_CUR_DIRECTION);
8421}
8422
Craig Topper8c18e112016-05-17 04:41:50 +00008423#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8424 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8425 -(__v2df)(__m128d)(B), \
8426 (__v2df)(__m128d)(W), (__mmask8)(U), \
8427 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008428
Craig Topper58187d32016-05-17 04:41:29 +00008429static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008430_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008431{
Craig Topper58187d32016-05-17 04:41:29 +00008432 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008433 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008434 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008435 (__mmask8) __U,
8436 _MM_FROUND_CUR_DIRECTION);
8437}
8438
Craig Topper8c18e112016-05-17 04:41:50 +00008439#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8440 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8441 (__v2df)(__m128d)(B), \
8442 -(__v2df)(__m128d)(C), \
8443 (__mmask8)(U), \
8444 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008445
Craig Topper58187d32016-05-17 04:41:29 +00008446static __inline__ __m128d __DEFAULT_FN_ATTRS
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00008447_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008448{
Craig Topper58187d32016-05-17 04:41:29 +00008449 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008450 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008451 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008452 (__mmask8) __U,
8453 _MM_FROUND_CUR_DIRECTION);
8454}
8455
Craig Topper8c18e112016-05-17 04:41:50 +00008456#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8457 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8458 (__v2df)(__m128d)(X), \
8459 -(__v2df)(__m128d)(Y), \
8460 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008461
Craig Topper8c18e112016-05-17 04:41:50 +00008462#define _mm512_permutex_pd(X, M) __extension__ ({ \
8463 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8464 (__v8df)_mm512_undefined_pd(), \
8465 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008466
Craig Topper8c18e112016-05-17 04:41:50 +00008467#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8468 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8469 (__v8df)(__m512d)(W), \
8470 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008471
Craig Topper8c18e112016-05-17 04:41:50 +00008472#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8473 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8474 (__v8df)_mm512_setzero_pd(), \
8475 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008476
Craig Topper8c18e112016-05-17 04:41:50 +00008477#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8478 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8479 (__v8di)_mm512_undefined_epi32(), \
8480 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008481
Craig Topper8c18e112016-05-17 04:41:50 +00008482#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8483 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8484 (__v8di)(__m512i)(W), \
8485 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008486
Craig Topper8c18e112016-05-17 04:41:50 +00008487#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8488 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8489 (__v8di)_mm512_setzero_si512(), \
8490 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008491
8492static __inline__ __m512d __DEFAULT_FN_ATTRS
8493_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8494{
8495 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8496 (__v8di) __X,
8497 (__v8df) _mm512_undefined_pd (),
8498 (__mmask8) -1);
8499}
8500
8501static __inline__ __m512d __DEFAULT_FN_ATTRS
8502_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8503{
8504 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8505 (__v8di) __X,
8506 (__v8df) __W,
8507 (__mmask8) __U);
8508}
8509
8510static __inline__ __m512d __DEFAULT_FN_ATTRS
8511_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8512{
8513 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8514 (__v8di) __X,
8515 (__v8df) _mm512_setzero_pd (),
8516 (__mmask8) __U);
8517}
8518
8519static __inline__ __m512i __DEFAULT_FN_ATTRS
8520_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8521{
8522 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8523 (__v8di) __X,
8524 (__v8di) _mm512_setzero_si512 (),
8525 __M);
8526}
8527
8528static __inline__ __m512i __DEFAULT_FN_ATTRS
8529_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8530{
8531 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8532 (__v8di) __X,
8533 (__v8di) _mm512_undefined_epi32 (),
8534 (__mmask8) -1);
8535}
8536
8537static __inline__ __m512i __DEFAULT_FN_ATTRS
8538_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8539 __m512i __Y)
8540{
8541 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8542 (__v8di) __X,
8543 (__v8di) __W,
8544 __M);
8545}
8546
8547static __inline__ __m512 __DEFAULT_FN_ATTRS
8548_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8549{
8550 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8551 (__v16si) __X,
8552 (__v16sf) _mm512_undefined_ps (),
8553 (__mmask16) -1);
8554}
8555
8556static __inline__ __m512 __DEFAULT_FN_ATTRS
8557_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8558{
8559 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8560 (__v16si) __X,
8561 (__v16sf) __W,
8562 (__mmask16) __U);
8563}
8564
8565static __inline__ __m512 __DEFAULT_FN_ATTRS
8566_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8567{
8568 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8569 (__v16si) __X,
8570 (__v16sf) _mm512_setzero_ps (),
8571 (__mmask16) __U);
8572}
8573
8574static __inline__ __m512i __DEFAULT_FN_ATTRS
8575_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8576{
8577 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8578 (__v16si) __X,
8579 (__v16si) _mm512_setzero_si512 (),
8580 __M);
8581}
8582
8583static __inline__ __m512i __DEFAULT_FN_ATTRS
8584_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8585{
8586 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8587 (__v16si) __X,
8588 (__v16si) _mm512_undefined_epi32 (),
8589 (__mmask16) -1);
8590}
8591
8592static __inline__ __m512i __DEFAULT_FN_ATTRS
8593_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8594 __m512i __Y)
8595{
8596 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8597 (__v16si) __X,
8598 (__v16si) __W,
8599 __M);
8600}
8601
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008602static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8603_mm512_kand (__mmask16 __A, __mmask16 __B)
8604{
8605 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8606}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008607
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008608static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8609_mm512_kandn (__mmask16 __A, __mmask16 __B)
8610{
8611 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8612}
8613
8614static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8615_mm512_kor (__mmask16 __A, __mmask16 __B)
8616{
8617 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8618}
8619
8620static __inline__ int __DEFAULT_FN_ATTRS
8621_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8622{
Craig Topper91f23d92016-05-16 01:09:16 +00008623 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008624}
8625
8626static __inline__ int __DEFAULT_FN_ATTRS
8627_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8628{
Craig Topper91f23d92016-05-16 01:09:16 +00008629 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008630}
8631
8632static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8633_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8634{
8635 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8636}
8637
8638static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8639_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8640{
8641 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8642}
8643
8644static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8645_mm512_kxor (__mmask16 __A, __mmask16 __B)
8646{
8647 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8648}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008649
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008650static __inline__ void __DEFAULT_FN_ATTRS
8651_mm512_stream_si512 (__m512i * __P, __m512i __A)
8652{
8653 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8654}
8655
8656static __inline__ __m512i __DEFAULT_FN_ATTRS
8657_mm512_stream_load_si512 (void *__P)
8658{
8659 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8660}
8661
8662static __inline__ void __DEFAULT_FN_ATTRS
8663_mm512_stream_pd (double *__P, __m512d __A)
8664{
8665 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8666}
8667
8668static __inline__ void __DEFAULT_FN_ATTRS
8669_mm512_stream_ps (float *__P, __m512 __A)
8670{
8671 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8672}
8673
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008674static __inline__ __m512d __DEFAULT_FN_ATTRS
8675_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8676{
8677 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8678 (__v8df) __W,
8679 (__mmask8) __U);
8680}
8681
8682static __inline__ __m512d __DEFAULT_FN_ATTRS
8683_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8684{
8685 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8686 (__v8df)
8687 _mm512_setzero_pd (),
8688 (__mmask8) __U);
8689}
8690
8691static __inline__ __m512i __DEFAULT_FN_ATTRS
8692_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8693{
8694 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8695 (__v8di) __W,
8696 (__mmask8) __U);
8697}
8698
8699static __inline__ __m512i __DEFAULT_FN_ATTRS
8700_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8701{
8702 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8703 (__v8di)
8704 _mm512_setzero_si512 (),
8705 (__mmask8) __U);
8706}
8707
8708static __inline__ __m512 __DEFAULT_FN_ATTRS
8709_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8710{
8711 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8712 (__v16sf) __W,
8713 (__mmask16) __U);
8714}
8715
8716static __inline__ __m512 __DEFAULT_FN_ATTRS
8717_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8718{
8719 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8720 (__v16sf)
8721 _mm512_setzero_ps (),
8722 (__mmask16) __U);
8723}
8724
8725static __inline__ __m512i __DEFAULT_FN_ATTRS
8726_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8727{
8728 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8729 (__v16si) __W,
8730 (__mmask16) __U);
8731}
8732
8733static __inline__ __m512i __DEFAULT_FN_ATTRS
8734_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8735{
8736 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8737 (__v16si)
8738 _mm512_setzero_si512 (),
8739 (__mmask16) __U);
8740}
8741
Craig Topper8c18e112016-05-17 04:41:50 +00008742#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8743 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8744 (__v4sf)(__m128)(Y), (int)(P), \
8745 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008746
Craig Topper8c18e112016-05-17 04:41:50 +00008747#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8748 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8749 (__v4sf)(__m128)(Y), (int)(P), \
8750 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008751
Craig Topper8c18e112016-05-17 04:41:50 +00008752#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8753 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8754 (__v4sf)(__m128)(Y), (int)(P), \
8755 (__mmask8)-1, \
8756 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008757
Craig Topper8c18e112016-05-17 04:41:50 +00008758#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8759 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8760 (__v4sf)(__m128)(Y), (int)(P), \
8761 (__mmask8)(M), \
8762 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008763
Craig Topper8c18e112016-05-17 04:41:50 +00008764#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8765 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8766 (__v2df)(__m128d)(Y), (int)(P), \
8767 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008768
Craig Topper8c18e112016-05-17 04:41:50 +00008769#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8770 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8771 (__v2df)(__m128d)(Y), (int)(P), \
8772 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008773
Craig Topper8c18e112016-05-17 04:41:50 +00008774#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8775 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8776 (__v2df)(__m128d)(Y), (int)(P), \
8777 (__mmask8)-1, \
8778 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008779
Craig Topper8c18e112016-05-17 04:41:50 +00008780#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8781 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8782 (__v2df)(__m128d)(Y), (int)(P), \
8783 (__mmask8)(M), \
8784 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008785
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008786static __inline__ __m512 __DEFAULT_FN_ATTRS
8787_mm512_movehdup_ps (__m512 __A)
8788{
8789 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8790 (__v16sf)
8791 _mm512_undefined_ps (),
8792 (__mmask16) -1);
8793}
8794
8795static __inline__ __m512 __DEFAULT_FN_ATTRS
8796_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8797{
8798 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8799 (__v16sf) __W,
8800 (__mmask16) __U);
8801}
8802
8803static __inline__ __m512 __DEFAULT_FN_ATTRS
8804_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8805{
8806 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8807 (__v16sf)
8808 _mm512_setzero_ps (),
8809 (__mmask16) __U);
8810}
8811
8812static __inline__ __m512 __DEFAULT_FN_ATTRS
8813_mm512_moveldup_ps (__m512 __A)
8814{
8815 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8816 (__v16sf)
8817 _mm512_undefined_ps (),
8818 (__mmask16) -1);
8819}
8820
8821static __inline__ __m512 __DEFAULT_FN_ATTRS
8822_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8823{
8824 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8825 (__v16sf) __W,
8826 (__mmask16) __U);
8827}
8828
8829static __inline__ __m512 __DEFAULT_FN_ATTRS
8830_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8831{
8832 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8833 (__v16sf)
8834 _mm512_setzero_ps (),
8835 (__mmask16) __U);
8836}
8837
Craig Topper8c18e112016-05-17 04:41:50 +00008838#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8839 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8840 (__v16si)_mm512_undefined_epi32(), \
8841 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008842
Craig Topper8c18e112016-05-17 04:41:50 +00008843#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8844 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8845 (__v16si)(__m512i)(W), \
8846 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008847
Craig Topper8c18e112016-05-17 04:41:50 +00008848#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8849 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8850 (__v16si)_mm512_setzero_si512(), \
8851 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008852
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008853static __inline__ __m512d __DEFAULT_FN_ATTRS
8854_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8855{
8856 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8857 (__v8df) __W,
8858 (__mmask8) __U);
8859}
8860
8861static __inline__ __m512d __DEFAULT_FN_ATTRS
8862_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8863{
8864 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8865 (__v8df) _mm512_setzero_pd (),
8866 (__mmask8) __U);
8867}
8868
8869static __inline__ __m512i __DEFAULT_FN_ATTRS
8870_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8871{
8872 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8873 (__v8di) __W,
8874 (__mmask8) __U);
8875}
8876
8877static __inline__ __m512i __DEFAULT_FN_ATTRS
8878_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8879{
8880 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8881 (__v8di) _mm512_setzero_pd (),
8882 (__mmask8) __U);
8883}
8884
8885static __inline__ __m512d __DEFAULT_FN_ATTRS
8886_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8887{
8888 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8889 (__v8df) __W,
8890 (__mmask8) __U);
8891}
8892
8893static __inline__ __m512d __DEFAULT_FN_ATTRS
8894_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8895{
8896 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8897 (__v8df) _mm512_setzero_pd(),
8898 (__mmask8) __U);
8899}
8900
8901static __inline__ __m512i __DEFAULT_FN_ATTRS
8902_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8903{
8904 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8905 (__v8di) __W,
8906 (__mmask8) __U);
8907}
8908
8909static __inline__ __m512i __DEFAULT_FN_ATTRS
8910_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8911{
8912 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8913 (__v8di) _mm512_setzero_pd(),
8914 (__mmask8) __U);
8915}
8916
8917static __inline__ __m512 __DEFAULT_FN_ATTRS
8918_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8919{
8920 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8921 (__v16sf) __W,
8922 (__mmask16) __U);
8923}
8924
8925static __inline__ __m512 __DEFAULT_FN_ATTRS
8926_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8927{
8928 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8929 (__v16sf) _mm512_setzero_ps(),
8930 (__mmask16) __U);
8931}
8932
8933static __inline__ __m512i __DEFAULT_FN_ATTRS
8934_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8935{
8936 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8937 (__v16si) __W,
8938 (__mmask16) __U);
8939}
8940
8941static __inline__ __m512i __DEFAULT_FN_ATTRS
8942_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8943{
8944 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8945 (__v16si) _mm512_setzero_ps(),
8946 (__mmask16) __U);
8947}
8948
8949static __inline__ __m512 __DEFAULT_FN_ATTRS
8950_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8951{
8952 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8953 (__v16sf) __W,
8954 (__mmask16) __U);
8955}
8956
8957static __inline__ __m512 __DEFAULT_FN_ATTRS
8958_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8959{
8960 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8961 (__v16sf) _mm512_setzero_ps(),
8962 (__mmask16) __U);
8963}
8964
8965static __inline__ __m512i __DEFAULT_FN_ATTRS
8966_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8967{
8968 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8969 (__v16si) __W,
8970 (__mmask16) __U);
8971}
8972
8973static __inline__ __m512i __DEFAULT_FN_ATTRS
8974_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8975{
8976 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8977 (__v16si) _mm512_setzero_ps(),
8978 (__mmask16) __U);
8979}
8980
Craig Topper8c18e112016-05-17 04:41:50 +00008981#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
8982 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8983 (__v8df)_mm512_undefined_pd(), \
8984 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008985
Craig Topper8c18e112016-05-17 04:41:50 +00008986#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
8987 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8988 (__v8df)(__m512d)(W), \
8989 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008990
Craig Topper8c18e112016-05-17 04:41:50 +00008991#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
8992 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8993 (__v8df)_mm512_setzero_pd(), \
8994 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008995
8996static __inline__ __m512d __DEFAULT_FN_ATTRS
8997_mm512_cvtps_pd (__m256 __A)
8998{
8999 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9000 (__v8df)
9001 _mm512_undefined_pd (),
9002 (__mmask8) -1,
9003 _MM_FROUND_CUR_DIRECTION);
9004}
9005
9006static __inline__ __m512d __DEFAULT_FN_ATTRS
9007_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
9008{
9009 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9010 (__v8df) __W,
9011 (__mmask8) __U,
9012 _MM_FROUND_CUR_DIRECTION);
9013}
9014
9015static __inline__ __m512d __DEFAULT_FN_ATTRS
9016_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
9017{
9018 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
9019 (__v8df)
9020 _mm512_setzero_pd (),
9021 (__mmask8) __U,
9022 _MM_FROUND_CUR_DIRECTION);
9023}
9024
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009025static __inline__ __m512d __DEFAULT_FN_ATTRS
9026_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
9027{
9028 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9029 (__v8df) __W,
9030 (__mmask8) __U);
9031}
9032
9033static __inline__ __m512d __DEFAULT_FN_ATTRS
9034_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
9035{
9036 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
9037 (__v8df)
9038 _mm512_setzero_pd (),
9039 (__mmask8) __U);
9040}
9041
9042static __inline__ __m512 __DEFAULT_FN_ATTRS
9043_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
9044{
9045 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9046 (__v16sf) __W,
9047 (__mmask16) __U);
9048}
9049
9050static __inline__ __m512 __DEFAULT_FN_ATTRS
9051_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
9052{
9053 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
9054 (__v16sf)
9055 _mm512_setzero_ps (),
9056 (__mmask16) __U);
9057}
9058
Michael Zuckerman708e7592016-05-03 10:42:46 +00009059static __inline__ void __DEFAULT_FN_ATTRS
9060_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
9061{
9062 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
9063 (__mmask8) __U);
9064}
9065
9066static __inline__ void __DEFAULT_FN_ATTRS
9067_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
9068{
9069 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
9070 (__mmask8) __U);
9071}
9072
9073static __inline__ void __DEFAULT_FN_ATTRS
9074_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
9075{
9076 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
9077 (__mmask16) __U);
9078}
9079
9080static __inline__ void __DEFAULT_FN_ATTRS
9081_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
9082{
9083 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
9084 (__mmask16) __U);
9085}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00009086
Craig Topper8c18e112016-05-17 04:41:50 +00009087#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
9088 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9089 (__v2df)(__m128d)(B), \
9090 (__v4sf)_mm_undefined_ps(), \
9091 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009092
Craig Topper8c18e112016-05-17 04:41:50 +00009093#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
9094 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9095 (__v2df)(__m128d)(B), \
9096 (__v4sf)(__m128)(W), \
9097 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009098
Craig Topper8c18e112016-05-17 04:41:50 +00009099#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
9100 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
9101 (__v2df)(__m128d)(B), \
9102 (__v4sf)_mm_setzero_ps(), \
9103 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009104
Craig Topper8c18e112016-05-17 04:41:50 +00009105#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
9106 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9107 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009108
Craig Topper8c18e112016-05-17 04:41:50 +00009109#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
9110 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
9111 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009112
Craig Topper8c18e112016-05-17 04:41:50 +00009113#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
9114 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009115
Craig Topper8c18e112016-05-17 04:41:50 +00009116#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
9117 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009118
Craig Topper8c18e112016-05-17 04:41:50 +00009119#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9120 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9121 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009122
Craig Topper8c18e112016-05-17 04:41:50 +00009123#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9124 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9125 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009126
Craig Topper8c18e112016-05-17 04:41:50 +00009127#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9128 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9129 (__v4sf)(__m128)(B), \
9130 (__v2df)_mm_undefined_pd(), \
9131 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009132
Craig Topper8c18e112016-05-17 04:41:50 +00009133#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9134 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9135 (__v4sf)(__m128)(B), \
9136 (__v2df)(__m128d)(W), \
9137 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009138
Craig Topper8c18e112016-05-17 04:41:50 +00009139#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9140 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9141 (__v4sf)(__m128)(B), \
9142 (__v2df)_mm_setzero_pd(), \
9143 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009144
9145static __inline__ __m128d __DEFAULT_FN_ATTRS
9146_mm_cvtu32_sd (__m128d __A, unsigned __B)
9147{
9148 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9149}
9150
Craig Topper8c18e112016-05-17 04:41:50 +00009151#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9152 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9153 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009154
9155static __inline__ __m128d __DEFAULT_FN_ATTRS
9156_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9157{
9158 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9159 _MM_FROUND_CUR_DIRECTION);
9160}
9161
Craig Topper8c18e112016-05-17 04:41:50 +00009162#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9163 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9164 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009165
9166static __inline__ __m128 __DEFAULT_FN_ATTRS
9167_mm_cvtu32_ss (__m128 __A, unsigned __B)
9168{
9169 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9170 _MM_FROUND_CUR_DIRECTION);
9171}
9172
Craig Topper8c18e112016-05-17 04:41:50 +00009173#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9174 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9175 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009176
9177static __inline__ __m128 __DEFAULT_FN_ATTRS
9178_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9179{
9180 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9181 _MM_FROUND_CUR_DIRECTION);
9182}
9183
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009184static __inline__ __m512i __DEFAULT_FN_ATTRS
9185_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9186{
9187 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9188 __M);
9189}
9190
9191static __inline__ __m512i __DEFAULT_FN_ATTRS
9192_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9193{
9194 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9195 __M);
9196}
9197
Michael Zuckerman178113e2016-05-19 12:07:49 +00009198static __inline __m512i __DEFAULT_FN_ATTRS
9199_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9200 int __E, int __F, int __G, int __H,
9201 int __I, int __J, int __K, int __L,
9202 int __M, int __N, int __O, int __P)
9203{
9204 return __extension__ (__m512i)(__v16si)
9205 { __P, __O, __N, __M, __L, __K, __J, __I,
9206 __H, __G, __F, __E, __D, __C, __B, __A };
9207}
9208
9209#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9210 e8,e9,e10,e11,e12,e13,e14,e15) \
9211 _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
Ekaterina Romanova5a7f09c2016-05-28 00:18:59 +00009212
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009213static __inline__ __m512i __DEFAULT_FN_ATTRS
9214_mm512_set_epi64 (long long __A, long long __B, long long __C,
9215 long long __D, long long __E, long long __F,
9216 long long __G, long long __H)
9217{
9218 return __extension__ (__m512i) (__v8di)
9219 { __H, __G, __F, __E, __D, __C, __B, __A };
9220}
9221
Michael Zuckerman178113e2016-05-19 12:07:49 +00009222#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9223 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9224
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009225static __inline__ __m512d __DEFAULT_FN_ATTRS
9226_mm512_set_pd (double __A, double __B, double __C, double __D,
9227 double __E, double __F, double __G, double __H)
9228{
9229 return __extension__ (__m512d)
9230 { __H, __G, __F, __E, __D, __C, __B, __A };
9231}
9232
Michael Zuckerman178113e2016-05-19 12:07:49 +00009233#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9234 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9235
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009236static __inline__ __m512 __DEFAULT_FN_ATTRS
9237_mm512_set_ps (float __A, float __B, float __C, float __D,
9238 float __E, float __F, float __G, float __H,
9239 float __I, float __J, float __K, float __L,
9240 float __M, float __N, float __O, float __P)
9241{
9242 return __extension__ (__m512)
9243 { __P, __O, __N, __M, __L, __K, __J, __I,
9244 __H, __G, __F, __E, __D, __C, __B, __A };
9245}
9246
Michael Zuckerman178113e2016-05-19 12:07:49 +00009247#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9248 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9249
Michael Kupersteine45af542015-06-30 13:36:19 +00009250#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009251
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009252#endif // __AVX512FINTRIN_H