blob: a9d2af378df58333baaa164c300fac97023a12cf [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
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000448/* Bitwise operators */
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000450_mm512_and_epi32(__m512i __a, __m512i __b)
451{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000452 return (__m512i)((__v16si)__a & (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000453}
454
Michael Kupersteine45af542015-06-30 13:36:19 +0000455static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000456_mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
457{
458 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
459 (__v16si) __b,
460 (__v16si) __src,
461 (__mmask16) __k);
462}
Michael Kupersteine45af542015-06-30 13:36:19 +0000463static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000464_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
465{
466 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
467 (__v16si) __b,
468 (__v16si)
469 _mm512_setzero_si512 (),
470 (__mmask16) __k);
471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000474_mm512_and_epi64(__m512i __a, __m512i __b)
475{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000476 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000480_mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
481{
482 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
483 (__v8di) __b,
484 (__v8di) __src,
485 (__mmask8) __k);
486}
Michael Kupersteine45af542015-06-30 13:36:19 +0000487static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000488_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
489{
490 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
491 (__v8di) __b,
492 (__v8di)
493 _mm512_setzero_si512 (),
494 (__mmask8) __k);
495}
496
Michael Kupersteine45af542015-06-30 13:36:19 +0000497static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckerman2cacc352016-05-18 15:25:53 +0000498_mm512_andnot_si512 (__m512i __A, __m512i __B)
499{
500 return (__m512i)(~(__A) & __B);
501}
502
503static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000504_mm512_andnot_epi32 (__m512i __A, __m512i __B)
505{
506 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
507 (__v16si) __B,
508 (__v16si)
509 _mm512_setzero_si512 (),
510 (__mmask16) -1);
511}
512
Michael Kupersteine45af542015-06-30 13:36:19 +0000513static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000514_mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
515{
516 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
517 (__v16si) __B,
518 (__v16si) __W,
519 (__mmask16) __U);
520}
521
Michael Kupersteine45af542015-06-30 13:36:19 +0000522static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000523_mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
524{
525 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
526 (__v16si) __B,
527 (__v16si)
528 _mm512_setzero_si512 (),
529 (__mmask16) __U);
530}
531
Michael Kupersteine45af542015-06-30 13:36:19 +0000532static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000533_mm512_andnot_epi64 (__m512i __A, __m512i __B)
534{
535 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
536 (__v8di) __B,
537 (__v8di)
538 _mm512_setzero_si512 (),
539 (__mmask8) -1);
540}
541
Michael Kupersteine45af542015-06-30 13:36:19 +0000542static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000543_mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
544{
545 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
546 (__v8di) __B,
547 (__v8di) __W, __U);
548}
549
Michael Kupersteine45af542015-06-30 13:36:19 +0000550static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000551_mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
552{
553 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
554 (__v8di) __B,
555 (__v8di)
556 _mm512_setzero_pd (),
557 __U);
558}
Michael Kupersteine45af542015-06-30 13:36:19 +0000559static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000560_mm512_or_epi32(__m512i __a, __m512i __b)
561{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000562 return (__m512i)((__v16si)__a | (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000563}
564
Michael Kupersteine45af542015-06-30 13:36:19 +0000565static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000566_mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
567{
568 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
569 (__v16si) __b,
570 (__v16si) __src,
571 (__mmask16) __k);
572}
Michael Kupersteine45af542015-06-30 13:36:19 +0000573static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000574_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
575{
576 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
577 (__v16si) __b,
578 (__v16si)
579 _mm512_setzero_si512 (),
580 (__mmask16) __k);
581}
582
Michael Kupersteine45af542015-06-30 13:36:19 +0000583static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000584_mm512_or_epi64(__m512i __a, __m512i __b)
585{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000586 return (__m512i)((__v8di)__a | (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000587}
588
Michael Kupersteine45af542015-06-30 13:36:19 +0000589static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000590_mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
591{
592 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
593 (__v8di) __b,
594 (__v8di) __src,
595 (__mmask8) __k);
596}
Michael Kupersteine45af542015-06-30 13:36:19 +0000597static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000598_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
599{
600 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
601 (__v8di) __b,
602 (__v8di)
603 _mm512_setzero_si512 (),
604 (__mmask8) __k);
605}
606
Michael Kupersteine45af542015-06-30 13:36:19 +0000607static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000608_mm512_xor_epi32(__m512i __a, __m512i __b)
609{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000610 return (__m512i)((__v16si)__a ^ (__v16si)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000611}
612
Michael Kupersteine45af542015-06-30 13:36:19 +0000613static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000614_mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
615{
616 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
617 (__v16si) __b,
618 (__v16si) __src,
619 (__mmask16) __k);
620}
Michael Kupersteine45af542015-06-30 13:36:19 +0000621static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000622_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
623{
624 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
625 (__v16si) __b,
626 (__v16si)
627 _mm512_setzero_si512 (),
628 (__mmask16) __k);
629}
630
Michael Kupersteine45af542015-06-30 13:36:19 +0000631static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000632_mm512_xor_epi64(__m512i __a, __m512i __b)
633{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000634 return (__m512i)((__v8di)__a ^ (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000635}
636
Michael Kupersteine45af542015-06-30 13:36:19 +0000637static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000638_mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
639{
640 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
641 (__v8di) __b,
642 (__v8di) __src,
643 (__mmask8) __k);
644}
Michael Kupersteine45af542015-06-30 13:36:19 +0000645static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000646_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
647{
648 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
649 (__v8di) __b,
650 (__v8di)
651 _mm512_setzero_si512 (),
652 (__mmask8) __k);
653}
654
Michael Kupersteine45af542015-06-30 13:36:19 +0000655static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000656_mm512_and_si512(__m512i __a, __m512i __b)
657{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000658 return (__m512i)((__v8di)__a & (__v8di)__b);
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000659}
660
Michael Kupersteine45af542015-06-30 13:36:19 +0000661static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky29da2fb2015-04-01 06:54:16 +0000662_mm512_or_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_xor_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}
Adam Nemet0d5bb552014-07-28 17:14:40 +0000672/* Arithmetic */
673
Michael Kupersteine45af542015-06-30 13:36:19 +0000674static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000675_mm512_add_pd(__m512d __a, __m512d __b)
676{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000677 return (__m512d)((__v8df)__a + (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000678}
679
Michael Kupersteine45af542015-06-30 13:36:19 +0000680static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000681_mm512_add_ps(__m512 __a, __m512 __b)
682{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000683 return (__m512)((__v16sf)__a + (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000684}
685
Michael Kupersteine45af542015-06-30 13:36:19 +0000686static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000687_mm512_mul_pd(__m512d __a, __m512d __b)
688{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000689 return (__m512d)((__v8df)__a * (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000690}
691
Michael Kupersteine45af542015-06-30 13:36:19 +0000692static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000693_mm512_mul_ps(__m512 __a, __m512 __b)
694{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000695 return (__m512)((__v16sf)__a * (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000699_mm512_sub_pd(__m512d __a, __m512d __b)
700{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000701 return (__m512d)((__v8df)__a - (__v8df)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000702}
703
Michael Kupersteine45af542015-06-30 13:36:19 +0000704static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemeta3ebe622014-07-28 17:14:42 +0000705_mm512_sub_ps(__m512 __a, __m512 __b)
706{
Craig Topper9c6c85f2016-05-16 06:38:36 +0000707 return (__m512)((__v16sf)__a - (__v16sf)__b);
Adam Nemeta3ebe622014-07-28 17:14:42 +0000708}
709
Michael Kupersteine45af542015-06-30 13:36:19 +0000710static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000711_mm512_add_epi64 (__m512i __A, __m512i __B)
712{
713 return (__m512i) ((__v8di) __A + (__v8di) __B);
714}
715
Michael Kupersteine45af542015-06-30 13:36:19 +0000716static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000717_mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
718{
719 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
720 (__v8di) __B,
721 (__v8di) __W,
722 (__mmask8) __U);
723}
724
Michael Kupersteine45af542015-06-30 13:36:19 +0000725static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000726_mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
727{
728 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
729 (__v8di) __B,
730 (__v8di)
731 _mm512_setzero_si512 (),
732 (__mmask8) __U);
733}
734
Michael Kupersteine45af542015-06-30 13:36:19 +0000735static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000736_mm512_sub_epi64 (__m512i __A, __m512i __B)
737{
738 return (__m512i) ((__v8di) __A - (__v8di) __B);
739}
740
Michael Kupersteine45af542015-06-30 13:36:19 +0000741static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000742_mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
743{
744 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
745 (__v8di) __B,
746 (__v8di) __W,
747 (__mmask8) __U);
748}
749
Michael Kupersteine45af542015-06-30 13:36:19 +0000750static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000751_mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
752{
753 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
754 (__v8di) __B,
755 (__v8di)
756 _mm512_setzero_si512 (),
757 (__mmask8) __U);
758}
759
Michael Kupersteine45af542015-06-30 13:36:19 +0000760static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000761_mm512_add_epi32 (__m512i __A, __m512i __B)
762{
763 return (__m512i) ((__v16si) __A + (__v16si) __B);
764}
765
Michael Kupersteine45af542015-06-30 13:36:19 +0000766static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000767_mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
768{
769 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
770 (__v16si) __B,
771 (__v16si) __W,
772 (__mmask16) __U);
773}
774
Michael Kupersteine45af542015-06-30 13:36:19 +0000775static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000776_mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
777{
778 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
779 (__v16si) __B,
780 (__v16si)
781 _mm512_setzero_si512 (),
782 (__mmask16) __U);
783}
784
Michael Kupersteine45af542015-06-30 13:36:19 +0000785static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000786_mm512_sub_epi32 (__m512i __A, __m512i __B)
787{
788 return (__m512i) ((__v16si) __A - (__v16si) __B);
789}
790
Michael Kupersteine45af542015-06-30 13:36:19 +0000791static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000792_mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
793{
794 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
795 (__v16si) __B,
796 (__v16si) __W,
797 (__mmask16) __U);
798}
799
Michael Kupersteine45af542015-06-30 13:36:19 +0000800static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000801_mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
802{
803 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
804 (__v16si) __B,
805 (__v16si)
806 _mm512_setzero_si512 (),
807 (__mmask16) __U);
808}
809
Michael Kupersteine45af542015-06-30 13:36:19 +0000810static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000811_mm512_max_pd(__m512d __A, __m512d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +0000812{
Adam Nemet0d5bb552014-07-28 17:14:40 +0000813 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
814 (__v8df) __B,
815 (__v8df)
816 _mm512_setzero_pd (),
817 (__mmask8) -1,
818 _MM_FROUND_CUR_DIRECTION);
819}
820
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000821static __inline__ __m512d __DEFAULT_FN_ATTRS
822_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
823{
824 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
825 (__v8df) __B,
826 (__v8df) __W,
827 (__mmask8) __U,
828 _MM_FROUND_CUR_DIRECTION);
829}
830
831static __inline__ __m512d __DEFAULT_FN_ATTRS
832_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B)
833{
834 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
835 (__v8df) __B,
836 (__v8df)
837 _mm512_setzero_pd (),
838 (__mmask8) __U,
839 _MM_FROUND_CUR_DIRECTION);
840}
841
Michael Kupersteine45af542015-06-30 13:36:19 +0000842static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000843_mm512_max_ps(__m512 __A, __m512 __B)
844{
845 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
846 (__v16sf) __B,
847 (__v16sf)
848 _mm512_setzero_ps (),
849 (__mmask16) -1,
850 _MM_FROUND_CUR_DIRECTION);
851}
852
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +0000853static __inline__ __m512 __DEFAULT_FN_ATTRS
854_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
855{
856 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
857 (__v16sf) __B,
858 (__v16sf) __W,
859 (__mmask16) __U,
860 _MM_FROUND_CUR_DIRECTION);
861}
862
863static __inline__ __m512 __DEFAULT_FN_ATTRS
864_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B)
865{
866 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
867 (__v16sf) __B,
868 (__v16sf)
869 _mm512_setzero_ps (),
870 (__mmask16) __U,
871 _MM_FROUND_CUR_DIRECTION);
872}
873
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000874static __inline__ __m128 __DEFAULT_FN_ATTRS
875_mm_mask_max_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000876 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000877 (__v4sf) __B,
878 (__v4sf) __W,
879 (__mmask8) __U,
880 _MM_FROUND_CUR_DIRECTION);
881}
882
883static __inline__ __m128 __DEFAULT_FN_ATTRS
884_mm_maskz_max_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000885 return (__m128) __builtin_ia32_maxss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000886 (__v4sf) __B,
887 (__v4sf) _mm_setzero_ps (),
888 (__mmask8) __U,
889 _MM_FROUND_CUR_DIRECTION);
890}
891
Craig Topper8c18e112016-05-17 04:41:50 +0000892#define _mm_max_round_ss(A, B, R) __extension__ ({ \
893 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
894 (__v4sf)(__m128)(B), \
895 (__v4sf)_mm_setzero_ps(), \
896 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000897
Craig Topper8c18e112016-05-17 04:41:50 +0000898#define _mm_mask_max_round_ss(W, U, A, B, R) __extension__ ({ \
899 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
900 (__v4sf)(__m128)(B), \
901 (__v4sf)(__m128)(W), (__mmask8)(U), \
902 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000903
Craig Topper8c18e112016-05-17 04:41:50 +0000904#define _mm_maskz_max_round_ss(U, A, B, R) __extension__ ({ \
905 (__m128)__builtin_ia32_maxss_round_mask((__v4sf)(__m128)(A), \
906 (__v4sf)(__m128)(B), \
907 (__v4sf)_mm_setzero_ps(), \
908 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000909
910static __inline__ __m128d __DEFAULT_FN_ATTRS
911_mm_mask_max_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000912 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000913 (__v2df) __B,
914 (__v2df) __W,
915 (__mmask8) __U,
916 _MM_FROUND_CUR_DIRECTION);
917}
918
919static __inline__ __m128d __DEFAULT_FN_ATTRS
920_mm_maskz_max_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +0000921 return (__m128d) __builtin_ia32_maxsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000922 (__v2df) __B,
923 (__v2df) _mm_setzero_pd (),
924 (__mmask8) __U,
925 _MM_FROUND_CUR_DIRECTION);
926}
927
Craig Topper8c18e112016-05-17 04:41:50 +0000928#define _mm_max_round_sd(A, B, R) __extension__ ({ \
929 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
930 (__v2df)(__m128d)(B), \
931 (__v2df)_mm_setzero_pd(), \
932 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000933
Craig Topper8c18e112016-05-17 04:41:50 +0000934#define _mm_mask_max_round_sd(W, U, A, B, R) __extension__ ({ \
935 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
936 (__v2df)(__m128d)(B), \
937 (__v2df)(__m128d)(W), \
938 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000939
Craig Topper8c18e112016-05-17 04:41:50 +0000940#define _mm_maskz_max_round_sd(U, A, B, R) __extension__ ({ \
941 (__m128d)__builtin_ia32_maxsd_round_mask((__v2df)(__m128d)(A), \
942 (__v2df)(__m128d)(B), \
943 (__v2df)_mm_setzero_pd(), \
944 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +0000945
Michael Zuckermande860e52016-05-10 11:34:19 +0000946static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +0000947__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000948_mm512_max_epi32(__m512i __A, __m512i __B)
949{
950 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
951 (__v16si) __B,
952 (__v16si)
953 _mm512_setzero_si512 (),
954 (__mmask16) -1);
955}
956
Michael Zuckermande860e52016-05-10 11:34:19 +0000957static __inline__ __m512i __DEFAULT_FN_ATTRS
958_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
959{
960 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
961 (__v16si) __B,
962 (__v16si) __W, __M);
963}
964
965static __inline__ __m512i __DEFAULT_FN_ATTRS
966_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
967{
968 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
969 (__v16si) __B,
970 (__v16si)
971 _mm512_setzero_si512 (),
972 __M);
973}
974
Michael Kupersteine45af542015-06-30 13:36:19 +0000975static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +0000976_mm512_max_epu32(__m512i __A, __m512i __B)
977{
978 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
979 (__v16si) __B,
980 (__v16si)
981 _mm512_setzero_si512 (),
982 (__mmask16) -1);
983}
984
Michael Zuckermande860e52016-05-10 11:34:19 +0000985static __inline__ __m512i __DEFAULT_FN_ATTRS
986_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
987{
988 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
989 (__v16si) __B,
990 (__v16si) __W, __M);
991}
992
993static __inline__ __m512i __DEFAULT_FN_ATTRS
994_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
995{
996 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
997 (__v16si) __B,
998 (__v16si)
999 _mm512_setzero_si512 (),
1000 __M);
1001}
1002
Michael Kupersteine45af542015-06-30 13:36:19 +00001003static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001004_mm512_max_epi64(__m512i __A, __m512i __B)
1005{
1006 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1007 (__v8di) __B,
1008 (__v8di)
1009 _mm512_setzero_si512 (),
1010 (__mmask8) -1);
1011}
1012
Michael Zuckermande860e52016-05-10 11:34:19 +00001013static __inline__ __m512i __DEFAULT_FN_ATTRS
1014_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1015{
1016 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1017 (__v8di) __B,
1018 (__v8di) __W, __M);
1019}
1020
1021static __inline__ __m512i __DEFAULT_FN_ATTRS
1022_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1023{
1024 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
1025 (__v8di) __B,
1026 (__v8di)
1027 _mm512_setzero_si512 (),
1028 __M);
1029}
1030
Michael Kupersteine45af542015-06-30 13:36:19 +00001031static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001032_mm512_max_epu64(__m512i __A, __m512i __B)
1033{
1034 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1035 (__v8di) __B,
1036 (__v8di)
1037 _mm512_setzero_si512 (),
1038 (__mmask8) -1);
1039}
1040
Michael Zuckermande860e52016-05-10 11:34:19 +00001041static __inline__ __m512i __DEFAULT_FN_ATTRS
1042_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1043{
1044 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1045 (__v8di) __B,
1046 (__v8di) __W, __M);
1047}
1048
1049static __inline__ __m512i __DEFAULT_FN_ATTRS
1050_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1051{
1052 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
1053 (__v8di) __B,
1054 (__v8di)
1055 _mm512_setzero_si512 (),
1056 __M);
1057}
1058
Michael Kupersteine45af542015-06-30 13:36:19 +00001059static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001060_mm512_min_pd(__m512d __A, __m512d __B)
1061{
1062 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1063 (__v8df) __B,
1064 (__v8df)
1065 _mm512_setzero_pd (),
1066 (__mmask8) -1,
1067 _MM_FROUND_CUR_DIRECTION);
1068}
1069
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001070static __inline__ __m512d __DEFAULT_FN_ATTRS
1071_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
1072{
1073 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1074 (__v8df) __B,
1075 (__v8df) __W,
1076 (__mmask8) __U,
1077 _MM_FROUND_CUR_DIRECTION);
1078}
1079
1080static __inline__ __m512d __DEFAULT_FN_ATTRS
1081_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B)
1082{
1083 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
1084 (__v8df) __B,
1085 (__v8df)
1086 _mm512_setzero_pd (),
1087 (__mmask8) __U,
1088 _MM_FROUND_CUR_DIRECTION);
1089}
1090
Michael Kupersteine45af542015-06-30 13:36:19 +00001091static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001092_mm512_min_ps(__m512 __A, __m512 __B)
1093{
1094 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1095 (__v16sf) __B,
1096 (__v16sf)
1097 _mm512_setzero_ps (),
1098 (__mmask16) -1,
1099 _MM_FROUND_CUR_DIRECTION);
1100}
1101
Michael Zuckermanf9be3bb2016-05-09 12:38:49 +00001102static __inline__ __m512 __DEFAULT_FN_ATTRS
1103_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
1104{
1105 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1106 (__v16sf) __B,
1107 (__v16sf) __W,
1108 (__mmask16) __U,
1109 _MM_FROUND_CUR_DIRECTION);
1110}
1111
1112static __inline__ __m512 __DEFAULT_FN_ATTRS
1113_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B)
1114{
1115 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
1116 (__v16sf) __B,
1117 (__v16sf)
1118 _mm512_setzero_ps (),
1119 (__mmask16) __U,
1120 _MM_FROUND_CUR_DIRECTION);
1121}
1122
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001123static __inline__ __m128 __DEFAULT_FN_ATTRS
1124_mm_mask_min_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001125 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001126 (__v4sf) __B,
1127 (__v4sf) __W,
1128 (__mmask8) __U,
1129 _MM_FROUND_CUR_DIRECTION);
1130}
1131
1132static __inline__ __m128 __DEFAULT_FN_ATTRS
1133_mm_maskz_min_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001134 return (__m128) __builtin_ia32_minss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001135 (__v4sf) __B,
1136 (__v4sf) _mm_setzero_ps (),
1137 (__mmask8) __U,
1138 _MM_FROUND_CUR_DIRECTION);
1139}
1140
Craig Topper8c18e112016-05-17 04:41:50 +00001141#define _mm_min_round_ss(A, B, R) __extension__ ({ \
1142 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1143 (__v4sf)(__m128)(B), \
1144 (__v4sf)_mm_setzero_ps(), \
1145 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001146
Craig Topper8c18e112016-05-17 04:41:50 +00001147#define _mm_mask_min_round_ss(W, U, A, B, R) __extension__ ({ \
1148 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1149 (__v4sf)(__m128)(B), \
1150 (__v4sf)(__m128)(W), (__mmask8)(U), \
1151 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001152
Craig Topper8c18e112016-05-17 04:41:50 +00001153#define _mm_maskz_min_round_ss(U, A, B, R) __extension__ ({ \
1154 (__m128)__builtin_ia32_minss_round_mask((__v4sf)(__m128)(A), \
1155 (__v4sf)(__m128)(B), \
1156 (__v4sf)_mm_setzero_ps(), \
1157 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001158
1159static __inline__ __m128d __DEFAULT_FN_ATTRS
1160_mm_mask_min_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001161 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001162 (__v2df) __B,
1163 (__v2df) __W,
1164 (__mmask8) __U,
1165 _MM_FROUND_CUR_DIRECTION);
1166}
1167
1168static __inline__ __m128d __DEFAULT_FN_ATTRS
1169_mm_maskz_min_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001170 return (__m128d) __builtin_ia32_minsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001171 (__v2df) __B,
1172 (__v2df) _mm_setzero_pd (),
1173 (__mmask8) __U,
1174 _MM_FROUND_CUR_DIRECTION);
1175}
1176
Craig Topper8c18e112016-05-17 04:41:50 +00001177#define _mm_min_round_sd(A, B, R) __extension__ ({ \
1178 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1179 (__v2df)(__m128d)(B), \
1180 (__v2df)_mm_setzero_pd(), \
1181 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001182
Craig Topper8c18e112016-05-17 04:41:50 +00001183#define _mm_mask_min_round_sd(W, U, A, B, R) __extension__ ({ \
1184 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1185 (__v2df)(__m128d)(B), \
1186 (__v2df)(__m128d)(W), \
1187 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001188
Craig Topper8c18e112016-05-17 04:41:50 +00001189#define _mm_maskz_min_round_sd(U, A, B, R) __extension__ ({ \
1190 (__m128d)__builtin_ia32_minsd_round_mask((__v2df)(__m128d)(A), \
1191 (__v2df)(__m128d)(B), \
1192 (__v2df)_mm_setzero_pd(), \
1193 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001194
Adam Nemet0d5bb552014-07-28 17:14:40 +00001195static __inline __m512i
Michael Kupersteine45af542015-06-30 13:36:19 +00001196__DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001197_mm512_min_epi32(__m512i __A, __m512i __B)
1198{
1199 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1200 (__v16si) __B,
1201 (__v16si)
1202 _mm512_setzero_si512 (),
1203 (__mmask16) -1);
1204}
1205
Michael Zuckermande860e52016-05-10 11:34:19 +00001206static __inline__ __m512i __DEFAULT_FN_ATTRS
1207_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1208{
1209 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1210 (__v16si) __B,
1211 (__v16si) __W, __M);
1212}
1213
1214static __inline__ __m512i __DEFAULT_FN_ATTRS
1215_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1216{
1217 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
1218 (__v16si) __B,
1219 (__v16si)
1220 _mm512_setzero_si512 (),
1221 __M);
1222}
1223
Michael Kupersteine45af542015-06-30 13:36:19 +00001224static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001225_mm512_min_epu32(__m512i __A, __m512i __B)
1226{
1227 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1228 (__v16si) __B,
1229 (__v16si)
1230 _mm512_setzero_si512 (),
1231 (__mmask16) -1);
1232}
1233
Michael Zuckermande860e52016-05-10 11:34:19 +00001234static __inline__ __m512i __DEFAULT_FN_ATTRS
1235_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1236{
1237 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1238 (__v16si) __B,
1239 (__v16si) __W, __M);
1240}
1241
1242static __inline__ __m512i __DEFAULT_FN_ATTRS
1243_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B)
1244{
1245 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
1246 (__v16si) __B,
1247 (__v16si)
1248 _mm512_setzero_si512 (),
1249 __M);
1250}
1251
Michael Kupersteine45af542015-06-30 13:36:19 +00001252static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001253_mm512_min_epi64(__m512i __A, __m512i __B)
1254{
1255 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1256 (__v8di) __B,
1257 (__v8di)
1258 _mm512_setzero_si512 (),
1259 (__mmask8) -1);
1260}
1261
Michael Zuckermande860e52016-05-10 11:34:19 +00001262static __inline__ __m512i __DEFAULT_FN_ATTRS
1263_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1264{
1265 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1266 (__v8di) __B,
1267 (__v8di) __W, __M);
1268}
1269
1270static __inline__ __m512i __DEFAULT_FN_ATTRS
1271_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B)
1272{
1273 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
1274 (__v8di) __B,
1275 (__v8di)
1276 _mm512_setzero_si512 (),
1277 __M);
1278}
1279
Michael Kupersteine45af542015-06-30 13:36:19 +00001280static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001281_mm512_min_epu64(__m512i __A, __m512i __B)
1282{
1283 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1284 (__v8di) __B,
1285 (__v8di)
1286 _mm512_setzero_si512 (),
1287 (__mmask8) -1);
1288}
1289
Michael Zuckermande860e52016-05-10 11:34:19 +00001290static __inline__ __m512i __DEFAULT_FN_ATTRS
1291_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B)
1292{
1293 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1294 (__v8di) __B,
1295 (__v8di) __W, __M);
1296}
1297
1298static __inline__ __m512i __DEFAULT_FN_ATTRS
1299_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B)
1300{
1301 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
1302 (__v8di) __B,
1303 (__v8di)
1304 _mm512_setzero_si512 (),
1305 __M);
1306}
1307
Michael Kupersteine45af542015-06-30 13:36:19 +00001308static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001309_mm512_mul_epi32(__m512i __X, __m512i __Y)
1310{
1311 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1312 (__v16si) __Y,
1313 (__v8di)
1314 _mm512_setzero_si512 (),
1315 (__mmask8) -1);
1316}
1317
Michael Kupersteine45af542015-06-30 13:36:19 +00001318static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001319_mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1320{
1321 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1322 (__v16si) __Y,
1323 (__v8di) __W, __M);
1324}
1325
Michael Kupersteine45af542015-06-30 13:36:19 +00001326static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001327_mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
1328{
1329 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
1330 (__v16si) __Y,
1331 (__v8di)
1332 _mm512_setzero_si512 (),
1333 __M);
1334}
1335
Michael Kupersteine45af542015-06-30 13:36:19 +00001336static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001337_mm512_mul_epu32(__m512i __X, __m512i __Y)
1338{
1339 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1340 (__v16si) __Y,
1341 (__v8di)
1342 _mm512_setzero_si512 (),
1343 (__mmask8) -1);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001344}
1345
Michael Kupersteine45af542015-06-30 13:36:19 +00001346static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001347_mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
1348{
1349 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1350 (__v16si) __Y,
1351 (__v8di) __W, __M);
1352}
1353
Michael Kupersteine45af542015-06-30 13:36:19 +00001354static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001355_mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
1356{
1357 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
1358 (__v16si) __Y,
1359 (__v8di)
1360 _mm512_setzero_si512 (),
1361 __M);
1362}
1363
Michael Kupersteine45af542015-06-30 13:36:19 +00001364static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001365_mm512_mullo_epi32 (__m512i __A, __m512i __B)
1366{
1367 return (__m512i) ((__v16si) __A * (__v16si) __B);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001371_mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
1372{
1373 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1374 (__v16si) __B,
1375 (__v16si)
1376 _mm512_setzero_si512 (),
1377 __M);
1378}
1379
Michael Kupersteine45af542015-06-30 13:36:19 +00001380static __inline __m512i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001381_mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
1382{
1383 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
1384 (__v16si) __B,
1385 (__v16si) __W, __M);
1386}
1387
Michael Kupersteine45af542015-06-30 13:36:19 +00001388static __inline__ __m512d __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001389_mm512_sqrt_pd(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001390{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001391 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001392 (__v8df) _mm512_setzero_pd (),
1393 (__mmask8) -1,
1394 _MM_FROUND_CUR_DIRECTION);
1395}
1396
Michael Zuckermancb856772016-05-16 11:42:01 +00001397static __inline__ __m512d __DEFAULT_FN_ATTRS
1398_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A)
1399{
1400 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1401 (__v8df) __W,
1402 (__mmask8) __U,
1403 _MM_FROUND_CUR_DIRECTION);
1404}
1405
1406static __inline__ __m512d __DEFAULT_FN_ATTRS
1407_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A)
1408{
1409 return (__m512d) __builtin_ia32_sqrtpd512_mask ((__v8df) __A,
1410 (__v8df)
1411 _mm512_setzero_pd (),
1412 (__mmask8) __U,
1413 _MM_FROUND_CUR_DIRECTION);
1414}
1415
Michael Kupersteine45af542015-06-30 13:36:19 +00001416static __inline__ __m512 __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001417_mm512_sqrt_ps(__m512 __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001418{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00001419 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001420 (__v16sf) _mm512_setzero_ps (),
1421 (__mmask16) -1,
1422 _MM_FROUND_CUR_DIRECTION);
1423}
1424
Michael Zuckermancb856772016-05-16 11:42:01 +00001425static __inline__ __m512 __DEFAULT_FN_ATTRS
1426_mm512_mask_sqrt_ps(__m512 __W, __mmask8 __U, __m512 __A)
1427{
1428 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1429 (__v16sf) __W,
1430 (__mmask16) __U,
1431 _MM_FROUND_CUR_DIRECTION);
1432}
1433
1434static __inline__ __m512 __DEFAULT_FN_ATTRS
1435_mm512_maskz_sqrt_ps( __mmask8 __U, __m512 __A)
1436{
1437 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)__A,
1438 (__v16sf) _mm512_setzero_ps (),
1439 (__mmask16) __U,
1440 _MM_FROUND_CUR_DIRECTION);
1441}
1442
Michael Kupersteine45af542015-06-30 13:36:19 +00001443static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001444_mm512_rsqrt14_pd(__m512d __A)
1445{
1446 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1447 (__v8df)
1448 _mm512_setzero_pd (),
1449 (__mmask8) -1);}
1450
Michael Zuckermancb856772016-05-16 11:42:01 +00001451static __inline__ __m512d __DEFAULT_FN_ATTRS
1452_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1453{
1454 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1455 (__v8df) __W,
1456 (__mmask8) __U);
1457}
1458
1459static __inline__ __m512d __DEFAULT_FN_ATTRS
1460_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A)
1461{
1462 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
1463 (__v8df)
1464 _mm512_setzero_pd (),
1465 (__mmask8) __U);
1466}
1467
Michael Kupersteine45af542015-06-30 13:36:19 +00001468static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001469_mm512_rsqrt14_ps(__m512 __A)
1470{
1471 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1472 (__v16sf)
1473 _mm512_setzero_ps (),
1474 (__mmask16) -1);
1475}
1476
Michael Zuckermancb856772016-05-16 11:42:01 +00001477static __inline__ __m512 __DEFAULT_FN_ATTRS
1478_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1479{
1480 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1481 (__v16sf) __W,
1482 (__mmask16) __U);
1483}
1484
1485static __inline__ __m512 __DEFAULT_FN_ATTRS
1486_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A)
1487{
1488 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
1489 (__v16sf)
1490 _mm512_setzero_ps (),
1491 (__mmask16) __U);
1492}
1493
Michael Kupersteine45af542015-06-30 13:36:19 +00001494static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001495_mm_rsqrt14_ss(__m128 __A, __m128 __B)
1496{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001497 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001498 (__v4sf) __B,
1499 (__v4sf)
1500 _mm_setzero_ps (),
1501 (__mmask8) -1);
1502}
1503
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001504static __inline__ __m128 __DEFAULT_FN_ATTRS
1505_mm_mask_rsqrt14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1506{
1507 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1508 (__v4sf) __B,
1509 (__v4sf) __W,
1510 (__mmask8) __U);
1511}
1512
1513static __inline__ __m128 __DEFAULT_FN_ATTRS
1514_mm_maskz_rsqrt14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1515{
1516 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
1517 (__v4sf) __B,
1518 (__v4sf) _mm_setzero_ps (),
1519 (__mmask8) __U);
1520}
1521
Michael Kupersteine45af542015-06-30 13:36:19 +00001522static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001523_mm_rsqrt14_sd(__m128d __A, __m128d __B)
1524{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001525 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001526 (__v2df) __B,
1527 (__v2df)
1528 _mm_setzero_pd (),
1529 (__mmask8) -1);
1530}
1531
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001532static __inline__ __m128d __DEFAULT_FN_ATTRS
1533_mm_mask_rsqrt14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1534{
1535 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1536 (__v2df) __B,
1537 (__v2df) __W,
1538 (__mmask8) __U);
1539}
1540
1541static __inline__ __m128d __DEFAULT_FN_ATTRS
1542_mm_maskz_rsqrt14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1543{
1544 return (__m128d) __builtin_ia32_rsqrt14sd_mask ( (__v2df) __A,
1545 (__v2df) __B,
1546 (__v2df) _mm_setzero_pd (),
1547 (__mmask8) __U);
1548}
1549
Michael Kupersteine45af542015-06-30 13:36:19 +00001550static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001551_mm512_rcp14_pd(__m512d __A)
1552{
1553 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1554 (__v8df)
1555 _mm512_setzero_pd (),
1556 (__mmask8) -1);
1557}
1558
Michael Zuckermancb856772016-05-16 11:42:01 +00001559static __inline__ __m512d __DEFAULT_FN_ATTRS
1560_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A)
1561{
1562 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1563 (__v8df) __W,
1564 (__mmask8) __U);
1565}
1566
1567static __inline__ __m512d __DEFAULT_FN_ATTRS
1568_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A)
1569{
1570 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
1571 (__v8df)
1572 _mm512_setzero_pd (),
1573 (__mmask8) __U);
1574}
1575
Michael Kupersteine45af542015-06-30 13:36:19 +00001576static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001577_mm512_rcp14_ps(__m512 __A)
1578{
1579 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1580 (__v16sf)
1581 _mm512_setzero_ps (),
1582 (__mmask16) -1);
1583}
Michael Zuckermancb856772016-05-16 11:42:01 +00001584
1585static __inline__ __m512 __DEFAULT_FN_ATTRS
1586_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A)
1587{
1588 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1589 (__v16sf) __W,
1590 (__mmask16) __U);
1591}
1592
1593static __inline__ __m512 __DEFAULT_FN_ATTRS
1594_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A)
1595{
1596 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
1597 (__v16sf)
1598 _mm512_setzero_ps (),
1599 (__mmask16) __U);
1600}
1601
Michael Kupersteine45af542015-06-30 13:36:19 +00001602static __inline__ __m128 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001603_mm_rcp14_ss(__m128 __A, __m128 __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001604{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001605 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001606 (__v4sf) __B,
1607 (__v4sf)
1608 _mm_setzero_ps (),
1609 (__mmask8) -1);
1610}
1611
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001612static __inline__ __m128 __DEFAULT_FN_ATTRS
1613_mm_mask_rcp14_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
1614{
1615 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1616 (__v4sf) __B,
1617 (__v4sf) __W,
1618 (__mmask8) __U);
1619}
1620
1621static __inline__ __m128 __DEFAULT_FN_ATTRS
1622_mm_maskz_rcp14_ss (__mmask8 __U, __m128 __A, __m128 __B)
1623{
1624 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
1625 (__v4sf) __B,
1626 (__v4sf) _mm_setzero_ps (),
1627 (__mmask8) __U);
1628}
1629
Michael Kupersteine45af542015-06-30 13:36:19 +00001630static __inline__ __m128d __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00001631_mm_rcp14_sd(__m128d __A, __m128d __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001632{
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001633 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001634 (__v2df) __B,
1635 (__v2df)
1636 _mm_setzero_pd (),
1637 (__mmask8) -1);
1638}
1639
Michael Zuckermana1ceca22016-04-22 10:06:10 +00001640static __inline__ __m128d __DEFAULT_FN_ATTRS
1641_mm_mask_rcp14_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
1642{
1643 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1644 (__v2df) __B,
1645 (__v2df) __W,
1646 (__mmask8) __U);
1647}
1648
1649static __inline__ __m128d __DEFAULT_FN_ATTRS
1650_mm_maskz_rcp14_sd (__mmask8 __U, __m128d __A, __m128d __B)
1651{
1652 return (__m128d) __builtin_ia32_rcp14sd_mask ( (__v2df) __A,
1653 (__v2df) __B,
1654 (__v2df) _mm_setzero_pd (),
1655 (__mmask8) __U);
1656}
1657
Michael Kupersteine45af542015-06-30 13:36:19 +00001658static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001659_mm512_floor_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001660{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001661 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1662 _MM_FROUND_FLOOR,
1663 (__v16sf) __A, -1,
1664 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001665}
1666
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001667static __inline__ __m512 __DEFAULT_FN_ATTRS
1668_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A)
1669{
1670 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1671 _MM_FROUND_FLOOR,
1672 (__v16sf) __W, __U,
1673 _MM_FROUND_CUR_DIRECTION);
1674}
1675
1676
Michael Kupersteine45af542015-06-30 13:36:19 +00001677static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001678_mm512_floor_pd(__m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001679{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001680 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1681 _MM_FROUND_FLOOR,
1682 (__v8df) __A, -1,
1683 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001684}
1685
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001686static __inline__ __m512d __DEFAULT_FN_ATTRS
1687_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A)
1688{
1689 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1690 _MM_FROUND_FLOOR,
1691 (__v8df) __W, __U,
1692 _MM_FROUND_CUR_DIRECTION);
1693}
1694
1695
1696static __inline__ __m512 __DEFAULT_FN_ATTRS
1697_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A)
1698{
1699 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1700 _MM_FROUND_CEIL,
1701 (__v16sf) __W, __U,
1702 _MM_FROUND_CUR_DIRECTION);
1703}
1704
Michael Kupersteine45af542015-06-30 13:36:19 +00001705static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001706_mm512_ceil_ps(__m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00001707{
Adam Nemet0d5bb552014-07-28 17:14:40 +00001708 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
1709 _MM_FROUND_CEIL,
1710 (__v16sf) __A, -1,
1711 _MM_FROUND_CUR_DIRECTION);
1712}
1713
Michael Kupersteine45af542015-06-30 13:36:19 +00001714static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001715_mm512_ceil_pd(__m512d __A)
1716{
1717 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1718 _MM_FROUND_CEIL,
1719 (__v8df) __A, -1,
1720 _MM_FROUND_CUR_DIRECTION);
1721}
1722
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00001723static __inline__ __m512d __DEFAULT_FN_ATTRS
1724_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A)
1725{
1726 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
1727 _MM_FROUND_CEIL,
1728 (__v8df) __W, __U,
1729 _MM_FROUND_CUR_DIRECTION);
1730}
1731
Michael Kupersteine45af542015-06-30 13:36:19 +00001732static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001733_mm512_abs_epi64(__m512i __A)
1734{
1735 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1736 (__v8di)
1737 _mm512_setzero_si512 (),
1738 (__mmask8) -1);
1739}
1740
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001741static __inline__ __m512i __DEFAULT_FN_ATTRS
1742_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
1743{
1744 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1745 (__v8di) __W,
1746 (__mmask8) __U);
1747}
1748
1749static __inline__ __m512i __DEFAULT_FN_ATTRS
1750_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A)
1751{
1752 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
1753 (__v8di)
1754 _mm512_setzero_si512 (),
1755 (__mmask8) __U);
1756}
1757
Michael Kupersteine45af542015-06-30 13:36:19 +00001758static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00001759_mm512_abs_epi32(__m512i __A)
1760{
1761 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1762 (__v16si)
1763 _mm512_setzero_si512 (),
1764 (__mmask16) -1);
1765}
1766
Michael Zuckermanbf05a452016-05-16 18:57:24 +00001767static __inline__ __m512i __DEFAULT_FN_ATTRS
1768_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
1769{
1770 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1771 (__v16si) __W,
1772 (__mmask16) __U);
1773}
1774
1775static __inline__ __m512i __DEFAULT_FN_ATTRS
1776_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A)
1777{
1778 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
1779 (__v16si)
1780 _mm512_setzero_si512 (),
1781 (__mmask16) __U);
1782}
1783
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001784static __inline__ __m128 __DEFAULT_FN_ATTRS
1785_mm_mask_add_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001786 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001787 (__v4sf) __B,
1788 (__v4sf) __W,
1789 (__mmask8) __U,
1790 _MM_FROUND_CUR_DIRECTION);
1791}
1792
1793static __inline__ __m128 __DEFAULT_FN_ATTRS
1794_mm_maskz_add_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001795 return (__m128) __builtin_ia32_addss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001796 (__v4sf) __B,
1797 (__v4sf) _mm_setzero_ps (),
1798 (__mmask8) __U,
1799 _MM_FROUND_CUR_DIRECTION);
1800}
1801
Craig Topper8c18e112016-05-17 04:41:50 +00001802#define _mm_add_round_ss(A, B, R) __extension__ ({ \
1803 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1804 (__v4sf)(__m128)(B), \
1805 (__v4sf)_mm_setzero_ps(), \
1806 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001807
Craig Topper8c18e112016-05-17 04:41:50 +00001808#define _mm_mask_add_round_ss(W, U, A, B, R) __extension__ ({ \
1809 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1810 (__v4sf)(__m128)(B), \
1811 (__v4sf)(__m128)(W), (__mmask8)(U), \
1812 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001813
Craig Topper8c18e112016-05-17 04:41:50 +00001814#define _mm_maskz_add_round_ss(U, A, B, R) __extension__ ({ \
1815 (__m128)__builtin_ia32_addss_round_mask((__v4sf)(__m128)(A), \
1816 (__v4sf)(__m128)(B), \
1817 (__v4sf)_mm_setzero_ps(), \
1818 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001819
1820static __inline__ __m128d __DEFAULT_FN_ATTRS
1821_mm_mask_add_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001822 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001823 (__v2df) __B,
1824 (__v2df) __W,
1825 (__mmask8) __U,
1826 _MM_FROUND_CUR_DIRECTION);
1827}
1828
1829static __inline__ __m128d __DEFAULT_FN_ATTRS
1830_mm_maskz_add_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001831 return (__m128d) __builtin_ia32_addsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001832 (__v2df) __B,
1833 (__v2df) _mm_setzero_pd (),
1834 (__mmask8) __U,
1835 _MM_FROUND_CUR_DIRECTION);
1836}
Craig Topper8c18e112016-05-17 04:41:50 +00001837#define _mm_add_round_sd(A, B, R) __extension__ ({ \
1838 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1839 (__v2df)(__m128d)(B), \
1840 (__v2df)_mm_setzero_pd(), \
1841 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001842
Craig Topper8c18e112016-05-17 04:41:50 +00001843#define _mm_mask_add_round_sd(W, U, A, B, R) __extension__ ({ \
1844 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1845 (__v2df)(__m128d)(B), \
1846 (__v2df)(__m128d)(W), \
1847 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001848
Craig Topper8c18e112016-05-17 04:41:50 +00001849#define _mm_maskz_add_round_sd(U, A, B, R) __extension__ ({ \
1850 (__m128d)__builtin_ia32_addsd_round_mask((__v2df)(__m128d)(A), \
1851 (__v2df)(__m128d)(B), \
1852 (__v2df)_mm_setzero_pd(), \
1853 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001854
Asaf Badouhffeb6242015-07-21 15:27:28 +00001855static __inline__ __m512d __DEFAULT_FN_ATTRS
1856_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
1857 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1858 (__v8df) __B,
1859 (__v8df) __W,
1860 (__mmask8) __U,
1861 _MM_FROUND_CUR_DIRECTION);
1862}
1863
1864static __inline__ __m512d __DEFAULT_FN_ATTRS
1865_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) {
1866 return (__m512d) __builtin_ia32_addpd512_mask ((__v8df) __A,
1867 (__v8df) __B,
1868 (__v8df) _mm512_setzero_pd (),
1869 (__mmask8) __U,
1870 _MM_FROUND_CUR_DIRECTION);
1871}
1872
1873static __inline__ __m512 __DEFAULT_FN_ATTRS
1874_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
1875 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1876 (__v16sf) __B,
1877 (__v16sf) __W,
1878 (__mmask16) __U,
1879 _MM_FROUND_CUR_DIRECTION);
1880}
1881
1882static __inline__ __m512 __DEFAULT_FN_ATTRS
1883_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) {
1884 return (__m512) __builtin_ia32_addps512_mask ((__v16sf) __A,
1885 (__v16sf) __B,
1886 (__v16sf) _mm512_setzero_ps (),
1887 (__mmask16) __U,
1888 _MM_FROUND_CUR_DIRECTION);
1889}
1890
Craig Topper8c18e112016-05-17 04:41:50 +00001891#define _mm512_add_round_pd(A, B, R) __extension__ ({ \
1892 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1893 (__v8df)(__m512d)(B), \
1894 (__v8df)_mm512_setzero_pd(), \
1895 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001896
Craig Topper8c18e112016-05-17 04:41:50 +00001897#define _mm512_mask_add_round_pd(W, U, A, B, R) __extension__ ({ \
1898 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1899 (__v8df)(__m512d)(B), \
1900 (__v8df)(__m512d)(W), (__mmask8)(U), \
1901 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001902
Craig Topper8c18e112016-05-17 04:41:50 +00001903#define _mm512_maskz_add_round_pd(U, A, B, R) __extension__ ({ \
1904 (__m512d)__builtin_ia32_addpd512_mask((__v8df)(__m512d)(A), \
1905 (__v8df)(__m512d)(B), \
1906 (__v8df)_mm512_setzero_pd(), \
1907 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001908
Craig Topper8c18e112016-05-17 04:41:50 +00001909#define _mm512_add_round_ps(A, B, R) __extension__ ({ \
1910 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1911 (__v16sf)(__m512)(B), \
1912 (__v16sf)_mm512_setzero_ps(), \
1913 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001914
Craig Topper8c18e112016-05-17 04:41:50 +00001915#define _mm512_mask_add_round_ps(W, U, A, B, R) __extension__ ({ \
1916 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1917 (__v16sf)(__m512)(B), \
1918 (__v16sf)(__m512)(W), (__mmask16)(U), \
1919 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001920
Craig Topper8c18e112016-05-17 04:41:50 +00001921#define _mm512_maskz_add_round_ps(U, A, B, R) __extension__ ({ \
1922 (__m512)__builtin_ia32_addps512_mask((__v16sf)(__m512)(A), \
1923 (__v16sf)(__m512)(B), \
1924 (__v16sf)_mm512_setzero_ps(), \
1925 (__mmask16)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00001926
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001927static __inline__ __m128 __DEFAULT_FN_ATTRS
1928_mm_mask_sub_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001929 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001930 (__v4sf) __B,
1931 (__v4sf) __W,
1932 (__mmask8) __U,
1933 _MM_FROUND_CUR_DIRECTION);
1934}
1935
1936static __inline__ __m128 __DEFAULT_FN_ATTRS
1937_mm_maskz_sub_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001938 return (__m128) __builtin_ia32_subss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001939 (__v4sf) __B,
1940 (__v4sf) _mm_setzero_ps (),
1941 (__mmask8) __U,
1942 _MM_FROUND_CUR_DIRECTION);
1943}
Craig Topper8c18e112016-05-17 04:41:50 +00001944#define _mm_sub_round_ss(A, B, R) __extension__ ({ \
1945 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1946 (__v4sf)(__m128)(B), \
1947 (__v4sf)_mm_setzero_ps(), \
1948 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001949
Craig Topper8c18e112016-05-17 04:41:50 +00001950#define _mm_mask_sub_round_ss(W, U, A, B, R) __extension__ ({ \
1951 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1952 (__v4sf)(__m128)(B), \
1953 (__v4sf)(__m128)(W), (__mmask8)(U), \
1954 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001955
Craig Topper8c18e112016-05-17 04:41:50 +00001956#define _mm_maskz_sub_round_ss(U, A, B, R) __extension__ ({ \
1957 (__m128)__builtin_ia32_subss_round_mask((__v4sf)(__m128)(A), \
1958 (__v4sf)(__m128)(B), \
1959 (__v4sf)_mm_setzero_ps(), \
1960 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001961
1962static __inline__ __m128d __DEFAULT_FN_ATTRS
1963_mm_mask_sub_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001964 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001965 (__v2df) __B,
1966 (__v2df) __W,
1967 (__mmask8) __U,
1968 _MM_FROUND_CUR_DIRECTION);
1969}
1970
1971static __inline__ __m128d __DEFAULT_FN_ATTRS
1972_mm_maskz_sub_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00001973 return (__m128d) __builtin_ia32_subsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001974 (__v2df) __B,
1975 (__v2df) _mm_setzero_pd (),
1976 (__mmask8) __U,
1977 _MM_FROUND_CUR_DIRECTION);
1978}
1979
Craig Topper8c18e112016-05-17 04:41:50 +00001980#define _mm_sub_round_sd(A, B, R) __extension__ ({ \
1981 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1982 (__v2df)(__m128d)(B), \
1983 (__v2df)_mm_setzero_pd(), \
1984 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001985
Craig Topper8c18e112016-05-17 04:41:50 +00001986#define _mm_mask_sub_round_sd(W, U, A, B, R) __extension__ ({ \
1987 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1988 (__v2df)(__m128d)(B), \
1989 (__v2df)(__m128d)(W), \
1990 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001991
Craig Topper8c18e112016-05-17 04:41:50 +00001992#define _mm_maskz_sub_round_sd(U, A, B, R) __extension__ ({ \
1993 (__m128d)__builtin_ia32_subsd_round_mask((__v2df)(__m128d)(A), \
1994 (__v2df)(__m128d)(B), \
1995 (__v2df)_mm_setzero_pd(), \
1996 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00001997
Asaf Badouhffeb6242015-07-21 15:27:28 +00001998static __inline__ __m512d __DEFAULT_FN_ATTRS
1999_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2000 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2001 (__v8df) __B,
2002 (__v8df) __W,
2003 (__mmask8) __U,
2004 _MM_FROUND_CUR_DIRECTION);
2005}
2006
2007static __inline__ __m512d __DEFAULT_FN_ATTRS
2008_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2009 return (__m512d) __builtin_ia32_subpd512_mask ((__v8df) __A,
2010 (__v8df) __B,
2011 (__v8df)
2012 _mm512_setzero_pd (),
2013 (__mmask8) __U,
2014 _MM_FROUND_CUR_DIRECTION);
2015}
2016
2017static __inline__ __m512 __DEFAULT_FN_ATTRS
2018_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2019 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2020 (__v16sf) __B,
2021 (__v16sf) __W,
2022 (__mmask16) __U,
2023 _MM_FROUND_CUR_DIRECTION);
2024}
2025
2026static __inline__ __m512 __DEFAULT_FN_ATTRS
2027_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2028 return (__m512) __builtin_ia32_subps512_mask ((__v16sf) __A,
2029 (__v16sf) __B,
2030 (__v16sf)
2031 _mm512_setzero_ps (),
2032 (__mmask16) __U,
2033 _MM_FROUND_CUR_DIRECTION);
2034}
2035
Craig Topper8c18e112016-05-17 04:41:50 +00002036#define _mm512_sub_round_pd(A, B, R) __extension__ ({ \
2037 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2038 (__v8df)(__m512d)(B), \
2039 (__v8df)_mm512_setzero_pd(), \
2040 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002041
Craig Topper8c18e112016-05-17 04:41:50 +00002042#define _mm512_mask_sub_round_pd(W, U, A, B, R) __extension__ ({ \
2043 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2044 (__v8df)(__m512d)(B), \
2045 (__v8df)(__m512d)(W), (__mmask8)(U), \
2046 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002047
Craig Topper8c18e112016-05-17 04:41:50 +00002048#define _mm512_maskz_sub_round_pd(U, A, B, R) __extension__ ({ \
2049 (__m512d)__builtin_ia32_subpd512_mask((__v8df)(__m512d)(A), \
2050 (__v8df)(__m512d)(B), \
2051 (__v8df)_mm512_setzero_pd(), \
2052 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002053
Craig Topper8c18e112016-05-17 04:41:50 +00002054#define _mm512_sub_round_ps(A, B, R) __extension__ ({ \
2055 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2056 (__v16sf)(__m512)(B), \
2057 (__v16sf)_mm512_setzero_ps(), \
2058 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002059
Craig Topper8c18e112016-05-17 04:41:50 +00002060#define _mm512_mask_sub_round_ps(W, U, A, B, R) __extension__ ({ \
2061 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2062 (__v16sf)(__m512)(B), \
2063 (__v16sf)(__m512)(W), (__mmask16)(U), \
2064 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002065
Craig Topper8c18e112016-05-17 04:41:50 +00002066#define _mm512_maskz_sub_round_ps(U, A, B, R) __extension__ ({ \
2067 (__m512)__builtin_ia32_subps512_mask((__v16sf)(__m512)(A), \
2068 (__v16sf)(__m512)(B), \
2069 (__v16sf)_mm512_setzero_ps(), \
2070 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002071
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002072static __inline__ __m128 __DEFAULT_FN_ATTRS
2073_mm_mask_mul_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002074 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002075 (__v4sf) __B,
2076 (__v4sf) __W,
2077 (__mmask8) __U,
2078 _MM_FROUND_CUR_DIRECTION);
2079}
2080
2081static __inline__ __m128 __DEFAULT_FN_ATTRS
2082_mm_maskz_mul_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002083 return (__m128) __builtin_ia32_mulss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002084 (__v4sf) __B,
2085 (__v4sf) _mm_setzero_ps (),
2086 (__mmask8) __U,
2087 _MM_FROUND_CUR_DIRECTION);
2088}
Craig Topper8c18e112016-05-17 04:41:50 +00002089#define _mm_mul_round_ss(A, B, R) __extension__ ({ \
2090 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2091 (__v4sf)(__m128)(B), \
2092 (__v4sf)_mm_setzero_ps(), \
2093 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002094
Craig Topper8c18e112016-05-17 04:41:50 +00002095#define _mm_mask_mul_round_ss(W, U, A, B, R) __extension__ ({ \
2096 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2097 (__v4sf)(__m128)(B), \
2098 (__v4sf)(__m128)(W), (__mmask8)(U), \
2099 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002100
Craig Topper8c18e112016-05-17 04:41:50 +00002101#define _mm_maskz_mul_round_ss(U, A, B, R) __extension__ ({ \
2102 (__m128)__builtin_ia32_mulss_round_mask((__v4sf)(__m128)(A), \
2103 (__v4sf)(__m128)(B), \
2104 (__v4sf)_mm_setzero_ps(), \
2105 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002106
2107static __inline__ __m128d __DEFAULT_FN_ATTRS
2108_mm_mask_mul_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002109 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002110 (__v2df) __B,
2111 (__v2df) __W,
2112 (__mmask8) __U,
2113 _MM_FROUND_CUR_DIRECTION);
2114}
2115
2116static __inline__ __m128d __DEFAULT_FN_ATTRS
2117_mm_maskz_mul_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002118 return (__m128d) __builtin_ia32_mulsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002119 (__v2df) __B,
2120 (__v2df) _mm_setzero_pd (),
2121 (__mmask8) __U,
2122 _MM_FROUND_CUR_DIRECTION);
2123}
2124
Craig Topper8c18e112016-05-17 04:41:50 +00002125#define _mm_mul_round_sd(A, B, R) __extension__ ({ \
2126 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2127 (__v2df)(__m128d)(B), \
2128 (__v2df)_mm_setzero_pd(), \
2129 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002130
Craig Topper8c18e112016-05-17 04:41:50 +00002131#define _mm_mask_mul_round_sd(W, U, A, B, R) __extension__ ({ \
2132 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2133 (__v2df)(__m128d)(B), \
2134 (__v2df)(__m128d)(W), \
2135 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002136
Craig Topper8c18e112016-05-17 04:41:50 +00002137#define _mm_maskz_mul_round_sd(U, A, B, R) __extension__ ({ \
2138 (__m128d)__builtin_ia32_mulsd_round_mask((__v2df)(__m128d)(A), \
2139 (__v2df)(__m128d)(B), \
2140 (__v2df)_mm_setzero_pd(), \
2141 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002142
Asaf Badouhffeb6242015-07-21 15:27:28 +00002143static __inline__ __m512d __DEFAULT_FN_ATTRS
2144_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2145 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2146 (__v8df) __B,
2147 (__v8df) __W,
2148 (__mmask8) __U,
2149 _MM_FROUND_CUR_DIRECTION);
2150}
2151
2152static __inline__ __m512d __DEFAULT_FN_ATTRS
2153_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2154 return (__m512d) __builtin_ia32_mulpd512_mask ((__v8df) __A,
2155 (__v8df) __B,
2156 (__v8df)
2157 _mm512_setzero_pd (),
2158 (__mmask8) __U,
2159 _MM_FROUND_CUR_DIRECTION);
2160}
2161
2162static __inline__ __m512 __DEFAULT_FN_ATTRS
2163_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2164 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2165 (__v16sf) __B,
2166 (__v16sf) __W,
2167 (__mmask16) __U,
2168 _MM_FROUND_CUR_DIRECTION);
2169}
2170
2171static __inline__ __m512 __DEFAULT_FN_ATTRS
2172_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2173 return (__m512) __builtin_ia32_mulps512_mask ((__v16sf) __A,
2174 (__v16sf) __B,
2175 (__v16sf)
2176 _mm512_setzero_ps (),
2177 (__mmask16) __U,
2178 _MM_FROUND_CUR_DIRECTION);
2179}
2180
Craig Topper8c18e112016-05-17 04:41:50 +00002181#define _mm512_mul_round_pd(A, B, R) __extension__ ({ \
2182 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2183 (__v8df)(__m512d)(B), \
2184 (__v8df)_mm512_setzero_pd(), \
2185 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002186
Craig Topper8c18e112016-05-17 04:41:50 +00002187#define _mm512_mask_mul_round_pd(W, U, A, B, R) __extension__ ({ \
2188 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2189 (__v8df)(__m512d)(B), \
2190 (__v8df)(__m512d)(W), (__mmask8)(U), \
2191 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002192
Craig Topper8c18e112016-05-17 04:41:50 +00002193#define _mm512_maskz_mul_round_pd(U, A, B, R) __extension__ ({ \
2194 (__m512d)__builtin_ia32_mulpd512_mask((__v8df)(__m512d)(A), \
2195 (__v8df)(__m512d)(B), \
2196 (__v8df)_mm512_setzero_pd(), \
2197 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002198
Craig Topper8c18e112016-05-17 04:41:50 +00002199#define _mm512_mul_round_ps(A, B, R) __extension__ ({ \
2200 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2201 (__v16sf)(__m512)(B), \
2202 (__v16sf)_mm512_setzero_ps(), \
2203 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002204
Craig Topper8c18e112016-05-17 04:41:50 +00002205#define _mm512_mask_mul_round_ps(W, U, A, B, R) __extension__ ({ \
2206 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2207 (__v16sf)(__m512)(B), \
2208 (__v16sf)(__m512)(W), (__mmask16)(U), \
2209 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002210
Craig Topper8c18e112016-05-17 04:41:50 +00002211#define _mm512_maskz_mul_round_ps(U, A, B, R) __extension__ ({ \
2212 (__m512)__builtin_ia32_mulps512_mask((__v16sf)(__m512)(A), \
2213 (__v16sf)(__m512)(B), \
2214 (__v16sf)_mm512_setzero_ps(), \
2215 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002216
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002217static __inline__ __m128 __DEFAULT_FN_ATTRS
2218_mm_mask_div_ss(__m128 __W, __mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002219 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002220 (__v4sf) __B,
2221 (__v4sf) __W,
2222 (__mmask8) __U,
2223 _MM_FROUND_CUR_DIRECTION);
2224}
2225
2226static __inline__ __m128 __DEFAULT_FN_ATTRS
2227_mm_maskz_div_ss(__mmask8 __U,__m128 __A, __m128 __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002228 return (__m128) __builtin_ia32_divss_round_mask ((__v4sf) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002229 (__v4sf) __B,
2230 (__v4sf) _mm_setzero_ps (),
2231 (__mmask8) __U,
2232 _MM_FROUND_CUR_DIRECTION);
2233}
2234
Craig Topper8c18e112016-05-17 04:41:50 +00002235#define _mm_div_round_ss(A, B, R) __extension__ ({ \
2236 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2237 (__v4sf)(__m128)(B), \
2238 (__v4sf)_mm_setzero_ps(), \
2239 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002240
Craig Topper8c18e112016-05-17 04:41:50 +00002241#define _mm_mask_div_round_ss(W, U, A, B, R) __extension__ ({ \
2242 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2243 (__v4sf)(__m128)(B), \
2244 (__v4sf)(__m128)(W), (__mmask8)(U), \
2245 (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002246
Craig Topper8c18e112016-05-17 04:41:50 +00002247#define _mm_maskz_div_round_ss(U, A, B, R) __extension__ ({ \
2248 (__m128)__builtin_ia32_divss_round_mask((__v4sf)(__m128)(A), \
2249 (__v4sf)(__m128)(B), \
2250 (__v4sf)_mm_setzero_ps(), \
2251 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002252
2253static __inline__ __m128d __DEFAULT_FN_ATTRS
2254_mm_mask_div_sd(__m128d __W, __mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002255 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002256 (__v2df) __B,
2257 (__v2df) __W,
2258 (__mmask8) __U,
2259 _MM_FROUND_CUR_DIRECTION);
2260}
2261
2262static __inline__ __m128d __DEFAULT_FN_ATTRS
2263_mm_maskz_div_sd(__mmask8 __U,__m128d __A, __m128d __B) {
Igor Breger9c2a0bf2016-02-08 12:36:48 +00002264 return (__m128d) __builtin_ia32_divsd_round_mask ((__v2df) __A,
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002265 (__v2df) __B,
2266 (__v2df) _mm_setzero_pd (),
2267 (__mmask8) __U,
2268 _MM_FROUND_CUR_DIRECTION);
2269}
2270
Craig Topper8c18e112016-05-17 04:41:50 +00002271#define _mm_div_round_sd(A, B, R) __extension__ ({ \
2272 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2273 (__v2df)(__m128d)(B), \
2274 (__v2df)_mm_setzero_pd(), \
2275 (__mmask8)-1, (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002276
Craig Topper8c18e112016-05-17 04:41:50 +00002277#define _mm_mask_div_round_sd(W, U, A, B, R) __extension__ ({ \
2278 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2279 (__v2df)(__m128d)(B), \
2280 (__v2df)(__m128d)(W), \
2281 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002282
Craig Topper8c18e112016-05-17 04:41:50 +00002283#define _mm_maskz_div_round_sd(U, A, B, R) __extension__ ({ \
2284 (__m128d)__builtin_ia32_divsd_round_mask((__v2df)(__m128d)(A), \
2285 (__v2df)(__m128d)(B), \
2286 (__v2df)_mm_setzero_pd(), \
2287 (__mmask8)(U), (int)(R)); })
Asaf Badouhf6a58b62015-07-23 12:13:32 +00002288
Asaf Badouhffeb6242015-07-21 15:27:28 +00002289static __inline__ __m512d __DEFAULT_FN_ATTRS
2290_mm512_mask_div_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
2291 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2292 (__v8df) __B,
2293 (__v8df) __W,
2294 (__mmask8) __U,
2295 _MM_FROUND_CUR_DIRECTION);
2296}
2297
2298static __inline__ __m512d __DEFAULT_FN_ATTRS
2299_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) {
2300 return (__m512d) __builtin_ia32_divpd512_mask ((__v8df) __A,
2301 (__v8df) __B,
2302 (__v8df)
2303 _mm512_setzero_pd (),
2304 (__mmask8) __U,
2305 _MM_FROUND_CUR_DIRECTION);
2306}
2307
2308static __inline__ __m512 __DEFAULT_FN_ATTRS
2309_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
2310 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2311 (__v16sf) __B,
2312 (__v16sf) __W,
2313 (__mmask16) __U,
2314 _MM_FROUND_CUR_DIRECTION);
2315}
2316
2317static __inline__ __m512 __DEFAULT_FN_ATTRS
2318_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) {
2319 return (__m512) __builtin_ia32_divps512_mask ((__v16sf) __A,
2320 (__v16sf) __B,
2321 (__v16sf)
2322 _mm512_setzero_ps (),
2323 (__mmask16) __U,
2324 _MM_FROUND_CUR_DIRECTION);
2325}
2326
Craig Topper8c18e112016-05-17 04:41:50 +00002327#define _mm512_div_round_pd(A, B, R) __extension__ ({ \
2328 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2329 (__v8df)(__m512d)(B), \
2330 (__v8df)_mm512_setzero_pd(), \
2331 (__mmask8)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002332
Craig Topper8c18e112016-05-17 04:41:50 +00002333#define _mm512_mask_div_round_pd(W, U, A, B, R) __extension__ ({ \
2334 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2335 (__v8df)(__m512d)(B), \
2336 (__v8df)(__m512d)(W), (__mmask8)(U), \
2337 (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002338
Craig Topper8c18e112016-05-17 04:41:50 +00002339#define _mm512_maskz_div_round_pd(U, A, B, R) __extension__ ({ \
2340 (__m512d)__builtin_ia32_divpd512_mask((__v8df)(__m512d)(A), \
2341 (__v8df)(__m512d)(B), \
2342 (__v8df)_mm512_setzero_pd(), \
2343 (__mmask8)(U), (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002344
Craig Topper8c18e112016-05-17 04:41:50 +00002345#define _mm512_div_round_ps(A, B, R) __extension__ ({ \
2346 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2347 (__v16sf)(__m512)(B), \
2348 (__v16sf)_mm512_setzero_ps(), \
2349 (__mmask16)-1, (int)(R)); })
Asaf Badouhffeb6242015-07-21 15:27:28 +00002350
Craig Topper8c18e112016-05-17 04:41:50 +00002351#define _mm512_mask_div_round_ps(W, U, A, B, R) __extension__ ({ \
2352 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2353 (__v16sf)(__m512)(B), \
2354 (__v16sf)(__m512)(W), (__mmask16)(U), \
2355 (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002356
Craig Topper8c18e112016-05-17 04:41:50 +00002357#define _mm512_maskz_div_round_ps(U, A, B, R) __extension__ ({ \
2358 (__m512)__builtin_ia32_divps512_mask((__v16sf)(__m512)(A), \
2359 (__v16sf)(__m512)(B), \
2360 (__v16sf)_mm512_setzero_ps(), \
2361 (__mmask16)(U), (int)(R)); });
Asaf Badouhffeb6242015-07-21 15:27:28 +00002362
Craig Topper72c7d512015-02-01 07:35:35 +00002363#define _mm512_roundscale_ps(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002364 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(A), (int)(B), \
2365 (__v16sf)(__m512)(A), (__mmask16)-1, \
2366 _MM_FROUND_CUR_DIRECTION); })
Craig Topper72c7d512015-02-01 07:35:35 +00002367
Craig Topper8c18e112016-05-17 04:41:50 +00002368#define _mm512_mask_roundscale_ps(A, B, C, imm) __extension__ ({\
2369 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(C), (int)(imm), \
2370 (__v16sf)(__m512)(A), (__mmask16)(B), \
2371 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002372
Craig Topper8c18e112016-05-17 04:41:50 +00002373#define _mm512_maskz_roundscale_ps(A, B, imm) __extension__ ({\
2374 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(__m512)(B), (int)(imm), \
2375 (__v16sf)_mm512_setzero_ps(), \
2376 (__mmask16)(A), \
2377 _MM_FROUND_CUR_DIRECTION); })
2378
Craig Topper72c7d512015-02-01 07:35:35 +00002379#define _mm512_roundscale_pd(A, B) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002380 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(A), (int)(B), \
2381 (__v8df)(__m512d)(A), (__mmask8)-1, \
2382 _MM_FROUND_CUR_DIRECTION); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00002383
Craig Topper8c18e112016-05-17 04:41:50 +00002384#define _mm512_mask_roundscale_pd(A, B, C, imm) __extension__ ({\
2385 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(C), (int)(imm), \
2386 (__v8df)(__m512d)(A), (__mmask8)(B), \
2387 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman7360d8a2016-05-10 07:30:58 +00002388
Craig Topper8c18e112016-05-17 04:41:50 +00002389#define _mm512_maskz_roundscale_pd(A, B, imm) __extension__ ({\
2390 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(__m512d)(B), (int)(imm), \
2391 (__v8df)_mm512_setzero_pd(), \
2392 (__mmask8)(A), \
2393 _MM_FROUND_CUR_DIRECTION); })
2394
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002395#define _mm512_fmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002396 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2397 (__v8df)(__m512d)(B), \
2398 (__v8df)(__m512d)(C), (__mmask8)-1, \
2399 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002400
2401
2402#define _mm512_mask_fmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002403 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2404 (__v8df)(__m512d)(B), \
2405 (__v8df)(__m512d)(C), \
2406 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002407
2408
2409#define _mm512_mask3_fmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002410 (__m512d)__builtin_ia32_vfmaddpd512_mask3((__v8df)(__m512d)(A), \
2411 (__v8df)(__m512d)(B), \
2412 (__v8df)(__m512d)(C), \
2413 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002414
2415
2416#define _mm512_maskz_fmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002417 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2418 (__v8df)(__m512d)(B), \
2419 (__v8df)(__m512d)(C), \
2420 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002421
2422
2423#define _mm512_fmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002424 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2425 (__v8df)(__m512d)(B), \
2426 -(__v8df)(__m512d)(C), \
2427 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002428
2429
2430#define _mm512_mask_fmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002431 (__m512d)__builtin_ia32_vfmaddpd512_mask((__v8df)(__m512d)(A), \
2432 (__v8df)(__m512d)(B), \
2433 -(__v8df)(__m512d)(C), \
2434 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002435
2436
2437#define _mm512_maskz_fmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002438 (__m512d)__builtin_ia32_vfmaddpd512_maskz((__v8df)(__m512d)(A), \
2439 (__v8df)(__m512d)(B), \
2440 -(__v8df)(__m512d)(C), \
2441 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002442
2443
2444#define _mm512_fnmadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002445 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2446 (__v8df)(__m512d)(B), \
2447 (__v8df)(__m512d)(C), (__mmask8)-1, \
2448 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002449
2450
2451#define _mm512_mask3_fnmadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002452 (__m512d)__builtin_ia32_vfmaddpd512_mask3(-(__v8df)(__m512d)(A), \
2453 (__v8df)(__m512d)(B), \
2454 (__v8df)(__m512d)(C), \
2455 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002456
2457
2458#define _mm512_maskz_fnmadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002459 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2460 (__v8df)(__m512d)(B), \
2461 (__v8df)(__m512d)(C), \
2462 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002463
2464
2465#define _mm512_fnmsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002466 (__m512d)__builtin_ia32_vfmaddpd512_mask(-(__v8df)(__m512d)(A), \
2467 (__v8df)(__m512d)(B), \
2468 -(__v8df)(__m512d)(C), \
2469 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002470
2471
2472#define _mm512_maskz_fnmsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002473 (__m512d)__builtin_ia32_vfmaddpd512_maskz(-(__v8df)(__m512d)(A), \
2474 (__v8df)(__m512d)(B), \
2475 -(__v8df)(__m512d)(C), \
2476 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002477
2478
Michael Kupersteine45af542015-06-30 13:36:19 +00002479static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002480_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2481{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002482 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2483 (__v8df) __B,
2484 (__v8df) __C,
2485 (__mmask8) -1,
2486 _MM_FROUND_CUR_DIRECTION);
2487}
2488
Michael Kupersteine45af542015-06-30 13:36:19 +00002489static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002490_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2491{
2492 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2493 (__v8df) __B,
2494 (__v8df) __C,
2495 (__mmask8) __U,
2496 _MM_FROUND_CUR_DIRECTION);
2497}
2498
Michael Kupersteine45af542015-06-30 13:36:19 +00002499static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002500_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2501{
2502 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 ((__v8df) __A,
2503 (__v8df) __B,
2504 (__v8df) __C,
2505 (__mmask8) __U,
2506 _MM_FROUND_CUR_DIRECTION);
2507}
2508
Michael Kupersteine45af542015-06-30 13:36:19 +00002509static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002510_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2511{
2512 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2513 (__v8df) __B,
2514 (__v8df) __C,
2515 (__mmask8) __U,
2516 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002517}
2518
Michael Kupersteine45af542015-06-30 13:36:19 +00002519static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002520_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2521{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002522 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2523 (__v8df) __B,
2524 -(__v8df) __C,
2525 (__mmask8) -1,
2526 _MM_FROUND_CUR_DIRECTION);
2527}
2528
Michael Kupersteine45af542015-06-30 13:36:19 +00002529static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002530_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2531{
2532 return (__m512d) __builtin_ia32_vfmaddpd512_mask ((__v8df) __A,
2533 (__v8df) __B,
2534 -(__v8df) __C,
2535 (__mmask8) __U,
2536 _MM_FROUND_CUR_DIRECTION);
2537}
2538
Michael Kupersteine45af542015-06-30 13:36:19 +00002539static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002540_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2541{
2542 return (__m512d) __builtin_ia32_vfmaddpd512_maskz ((__v8df) __A,
2543 (__v8df) __B,
2544 -(__v8df) __C,
2545 (__mmask8) __U,
2546 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002547}
2548
Michael Kupersteine45af542015-06-30 13:36:19 +00002549static __inline__ __m512d __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002550_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
2551{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002552 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2553 (__v8df) __B,
2554 (__v8df) __C,
2555 (__mmask8) -1,
2556 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002557}
2558
Michael Kupersteine45af542015-06-30 13:36:19 +00002559static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002560_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2561{
2562 return (__m512d) __builtin_ia32_vfmaddpd512_mask3 (-(__v8df) __A,
2563 (__v8df) __B,
2564 (__v8df) __C,
2565 (__mmask8) __U,
2566 _MM_FROUND_CUR_DIRECTION);
2567}
2568
Michael Kupersteine45af542015-06-30 13:36:19 +00002569static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002570_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2571{
2572 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2573 (__v8df) __B,
2574 (__v8df) __C,
2575 (__mmask8) __U,
2576 _MM_FROUND_CUR_DIRECTION);
2577}
2578
Michael Kupersteine45af542015-06-30 13:36:19 +00002579static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002580_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C)
2581{
2582 return (__m512d) __builtin_ia32_vfmaddpd512_mask (-(__v8df) __A,
2583 (__v8df) __B,
2584 -(__v8df) __C,
2585 (__mmask8) -1,
2586 _MM_FROUND_CUR_DIRECTION);
2587}
2588
Michael Kupersteine45af542015-06-30 13:36:19 +00002589static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002590_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2591{
2592 return (__m512d) __builtin_ia32_vfmaddpd512_maskz (-(__v8df) __A,
2593 (__v8df) __B,
2594 -(__v8df) __C,
2595 (__mmask8) __U,
2596 _MM_FROUND_CUR_DIRECTION);
2597}
2598
2599#define _mm512_fmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002600 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2601 (__v16sf)(__m512)(B), \
2602 (__v16sf)(__m512)(C), (__mmask16)-1, \
2603 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002604
2605
2606#define _mm512_mask_fmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002607 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2608 (__v16sf)(__m512)(B), \
2609 (__v16sf)(__m512)(C), \
2610 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002611
2612
2613#define _mm512_mask3_fmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002614 (__m512)__builtin_ia32_vfmaddps512_mask3((__v16sf)(__m512)(A), \
2615 (__v16sf)(__m512)(B), \
2616 (__v16sf)(__m512)(C), \
2617 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002618
2619
2620#define _mm512_maskz_fmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002621 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2622 (__v16sf)(__m512)(B), \
2623 (__v16sf)(__m512)(C), \
2624 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002625
2626
2627#define _mm512_fmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002628 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2629 (__v16sf)(__m512)(B), \
2630 -(__v16sf)(__m512)(C), \
2631 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002632
2633
2634#define _mm512_mask_fmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002635 (__m512)__builtin_ia32_vfmaddps512_mask((__v16sf)(__m512)(A), \
2636 (__v16sf)(__m512)(B), \
2637 -(__v16sf)(__m512)(C), \
2638 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002639
2640
2641#define _mm512_maskz_fmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002642 (__m512)__builtin_ia32_vfmaddps512_maskz((__v16sf)(__m512)(A), \
2643 (__v16sf)(__m512)(B), \
2644 -(__v16sf)(__m512)(C), \
2645 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002646
2647
2648#define _mm512_fnmadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002649 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2650 (__v16sf)(__m512)(B), \
2651 (__v16sf)(__m512)(C), (__mmask16)-1, \
2652 (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002653
2654
2655#define _mm512_mask3_fnmadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002656 (__m512)__builtin_ia32_vfmaddps512_mask3(-(__v16sf)(__m512)(A), \
2657 (__v16sf)(__m512)(B), \
2658 (__v16sf)(__m512)(C), \
2659 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002660
2661
2662#define _mm512_maskz_fnmadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002663 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2664 (__v16sf)(__m512)(B), \
2665 (__v16sf)(__m512)(C), \
2666 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002667
2668
2669#define _mm512_fnmsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002670 (__m512)__builtin_ia32_vfmaddps512_mask(-(__v16sf)(__m512)(A), \
2671 (__v16sf)(__m512)(B), \
2672 -(__v16sf)(__m512)(C), \
2673 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002674
2675
2676#define _mm512_maskz_fnmsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002677 (__m512)__builtin_ia32_vfmaddps512_maskz(-(__v16sf)(__m512)(A), \
2678 (__v16sf)(__m512)(B), \
2679 -(__v16sf)(__m512)(C), \
2680 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002681
2682
Michael Kupersteine45af542015-06-30 13:36:19 +00002683static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002684_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2685{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002686 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2687 (__v16sf) __B,
2688 (__v16sf) __C,
2689 (__mmask16) -1,
2690 _MM_FROUND_CUR_DIRECTION);
2691}
2692
Michael Kupersteine45af542015-06-30 13:36:19 +00002693static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002694_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2695{
2696 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2697 (__v16sf) __B,
2698 (__v16sf) __C,
2699 (__mmask16) __U,
2700 _MM_FROUND_CUR_DIRECTION);
2701}
2702
Michael Kupersteine45af542015-06-30 13:36:19 +00002703static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002704_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2705{
2706 return (__m512) __builtin_ia32_vfmaddps512_mask3 ((__v16sf) __A,
2707 (__v16sf) __B,
2708 (__v16sf) __C,
2709 (__mmask16) __U,
2710 _MM_FROUND_CUR_DIRECTION);
2711}
2712
Michael Kupersteine45af542015-06-30 13:36:19 +00002713static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002714_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2715{
2716 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2717 (__v16sf) __B,
2718 (__v16sf) __C,
2719 (__mmask16) __U,
2720 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002721}
2722
Michael Kupersteine45af542015-06-30 13:36:19 +00002723static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002724_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2725{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002726 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2727 (__v16sf) __B,
2728 -(__v16sf) __C,
2729 (__mmask16) -1,
2730 _MM_FROUND_CUR_DIRECTION);
2731}
2732
Michael Kupersteine45af542015-06-30 13:36:19 +00002733static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002734_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2735{
2736 return (__m512) __builtin_ia32_vfmaddps512_mask ((__v16sf) __A,
2737 (__v16sf) __B,
2738 -(__v16sf) __C,
2739 (__mmask16) __U,
2740 _MM_FROUND_CUR_DIRECTION);
2741}
2742
Michael Kupersteine45af542015-06-30 13:36:19 +00002743static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002744_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2745{
2746 return (__m512) __builtin_ia32_vfmaddps512_maskz ((__v16sf) __A,
2747 (__v16sf) __B,
2748 -(__v16sf) __C,
2749 (__mmask16) __U,
2750 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002751}
2752
Michael Kupersteine45af542015-06-30 13:36:19 +00002753static __inline__ __m512 __DEFAULT_FN_ATTRS
Adam Nemet2278fcb2014-08-14 17:17:57 +00002754_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
2755{
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002756 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2757 (__v16sf) __B,
2758 (__v16sf) __C,
2759 (__mmask16) -1,
2760 _MM_FROUND_CUR_DIRECTION);
Adam Nemet2278fcb2014-08-14 17:17:57 +00002761}
2762
Michael Kupersteine45af542015-06-30 13:36:19 +00002763static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002764_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2765{
2766 return (__m512) __builtin_ia32_vfmaddps512_mask3 (-(__v16sf) __A,
2767 (__v16sf) __B,
2768 (__v16sf) __C,
2769 (__mmask16) __U,
2770 _MM_FROUND_CUR_DIRECTION);
2771}
2772
Michael Kupersteine45af542015-06-30 13:36:19 +00002773static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002774_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2775{
2776 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2777 (__v16sf) __B,
2778 (__v16sf) __C,
2779 (__mmask16) __U,
2780 _MM_FROUND_CUR_DIRECTION);
2781}
2782
Michael Kupersteine45af542015-06-30 13:36:19 +00002783static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002784_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C)
2785{
2786 return (__m512) __builtin_ia32_vfmaddps512_mask (-(__v16sf) __A,
2787 (__v16sf) __B,
2788 -(__v16sf) __C,
2789 (__mmask16) -1,
2790 _MM_FROUND_CUR_DIRECTION);
2791}
2792
Michael Kupersteine45af542015-06-30 13:36:19 +00002793static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002794_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
2795{
2796 return (__m512) __builtin_ia32_vfmaddps512_maskz (-(__v16sf) __A,
2797 (__v16sf) __B,
2798 -(__v16sf) __C,
2799 (__mmask16) __U,
2800 _MM_FROUND_CUR_DIRECTION);
2801}
2802
2803#define _mm512_fmaddsub_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002804 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2805 (__v8df)(__m512d)(B), \
2806 (__v8df)(__m512d)(C), \
2807 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002808
2809
2810#define _mm512_mask_fmaddsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002811 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2812 (__v8df)(__m512d)(B), \
2813 (__v8df)(__m512d)(C), \
2814 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002815
2816
2817#define _mm512_mask3_fmaddsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002818 (__m512d)__builtin_ia32_vfmaddsubpd512_mask3((__v8df)(__m512d)(A), \
2819 (__v8df)(__m512d)(B), \
2820 (__v8df)(__m512d)(C), \
2821 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002822
2823
2824#define _mm512_maskz_fmaddsub_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002825 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2826 (__v8df)(__m512d)(B), \
2827 (__v8df)(__m512d)(C), \
2828 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002829
2830
2831#define _mm512_fmsubadd_round_pd(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002832 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2833 (__v8df)(__m512d)(B), \
2834 -(__v8df)(__m512d)(C), \
2835 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002836
2837
2838#define _mm512_mask_fmsubadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002839 (__m512d)__builtin_ia32_vfmaddsubpd512_mask((__v8df)(__m512d)(A), \
2840 (__v8df)(__m512d)(B), \
2841 -(__v8df)(__m512d)(C), \
2842 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002843
2844
2845#define _mm512_maskz_fmsubadd_round_pd(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002846 (__m512d)__builtin_ia32_vfmaddsubpd512_maskz((__v8df)(__m512d)(A), \
2847 (__v8df)(__m512d)(B), \
2848 -(__v8df)(__m512d)(C), \
2849 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002850
2851
Michael Kupersteine45af542015-06-30 13:36:19 +00002852static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002853_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C)
2854{
2855 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2856 (__v8df) __B,
2857 (__v8df) __C,
2858 (__mmask8) -1,
2859 _MM_FROUND_CUR_DIRECTION);
2860}
2861
Michael Kupersteine45af542015-06-30 13:36:19 +00002862static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002863_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2864{
2865 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2866 (__v8df) __B,
2867 (__v8df) __C,
2868 (__mmask8) __U,
2869 _MM_FROUND_CUR_DIRECTION);
2870}
2871
Michael Kupersteine45af542015-06-30 13:36:19 +00002872static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002873_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
2874{
2875 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask3 ((__v8df) __A,
2876 (__v8df) __B,
2877 (__v8df) __C,
2878 (__mmask8) __U,
2879 _MM_FROUND_CUR_DIRECTION);
2880}
2881
Michael Kupersteine45af542015-06-30 13:36:19 +00002882static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002883_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2884{
2885 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2886 (__v8df) __B,
2887 (__v8df) __C,
2888 (__mmask8) __U,
2889 _MM_FROUND_CUR_DIRECTION);
2890}
2891
Michael Kupersteine45af542015-06-30 13:36:19 +00002892static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002893_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C)
2894{
2895 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2896 (__v8df) __B,
2897 -(__v8df) __C,
2898 (__mmask8) -1,
2899 _MM_FROUND_CUR_DIRECTION);
2900}
2901
Michael Kupersteine45af542015-06-30 13:36:19 +00002902static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002903_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
2904{
2905 return (__m512d) __builtin_ia32_vfmaddsubpd512_mask ((__v8df) __A,
2906 (__v8df) __B,
2907 -(__v8df) __C,
2908 (__mmask8) __U,
2909 _MM_FROUND_CUR_DIRECTION);
2910}
2911
Michael Kupersteine45af542015-06-30 13:36:19 +00002912static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002913_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C)
2914{
2915 return (__m512d) __builtin_ia32_vfmaddsubpd512_maskz ((__v8df) __A,
2916 (__v8df) __B,
2917 -(__v8df) __C,
2918 (__mmask8) __U,
2919 _MM_FROUND_CUR_DIRECTION);
2920}
2921
2922#define _mm512_fmaddsub_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002923 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2924 (__v16sf)(__m512)(B), \
2925 (__v16sf)(__m512)(C), \
2926 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002927
2928
2929#define _mm512_mask_fmaddsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002930 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2931 (__v16sf)(__m512)(B), \
2932 (__v16sf)(__m512)(C), \
2933 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002934
2935
2936#define _mm512_mask3_fmaddsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002937 (__m512)__builtin_ia32_vfmaddsubps512_mask3((__v16sf)(__m512)(A), \
2938 (__v16sf)(__m512)(B), \
2939 (__v16sf)(__m512)(C), \
2940 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002941
2942
2943#define _mm512_maskz_fmaddsub_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002944 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2945 (__v16sf)(__m512)(B), \
2946 (__v16sf)(__m512)(C), \
2947 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002948
2949
2950#define _mm512_fmsubadd_round_ps(A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002951 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2952 (__v16sf)(__m512)(B), \
2953 -(__v16sf)(__m512)(C), \
2954 (__mmask16)-1, (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002955
2956
2957#define _mm512_mask_fmsubadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002958 (__m512)__builtin_ia32_vfmaddsubps512_mask((__v16sf)(__m512)(A), \
2959 (__v16sf)(__m512)(B), \
2960 -(__v16sf)(__m512)(C), \
2961 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002962
2963
2964#define _mm512_maskz_fmsubadd_round_ps(U, A, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00002965 (__m512)__builtin_ia32_vfmaddsubps512_maskz((__v16sf)(__m512)(A), \
2966 (__v16sf)(__m512)(B), \
2967 -(__v16sf)(__m512)(C), \
2968 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002969
2970
Michael Kupersteine45af542015-06-30 13:36:19 +00002971static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002972_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C)
2973{
2974 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2975 (__v16sf) __B,
2976 (__v16sf) __C,
2977 (__mmask16) -1,
2978 _MM_FROUND_CUR_DIRECTION);
2979}
2980
Michael Kupersteine45af542015-06-30 13:36:19 +00002981static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002982_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
2983{
2984 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
2985 (__v16sf) __B,
2986 (__v16sf) __C,
2987 (__mmask16) __U,
2988 _MM_FROUND_CUR_DIRECTION);
2989}
2990
Michael Kupersteine45af542015-06-30 13:36:19 +00002991static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00002992_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
2993{
2994 return (__m512) __builtin_ia32_vfmaddsubps512_mask3 ((__v16sf) __A,
2995 (__v16sf) __B,
2996 (__v16sf) __C,
2997 (__mmask16) __U,
2998 _MM_FROUND_CUR_DIRECTION);
2999}
3000
Michael Kupersteine45af542015-06-30 13:36:19 +00003001static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003002_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3003{
3004 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3005 (__v16sf) __B,
3006 (__v16sf) __C,
3007 (__mmask16) __U,
3008 _MM_FROUND_CUR_DIRECTION);
3009}
3010
Michael Kupersteine45af542015-06-30 13:36:19 +00003011static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003012_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C)
3013{
3014 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3015 (__v16sf) __B,
3016 -(__v16sf) __C,
3017 (__mmask16) -1,
3018 _MM_FROUND_CUR_DIRECTION);
3019}
3020
Michael Kupersteine45af542015-06-30 13:36:19 +00003021static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003022_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3023{
3024 return (__m512) __builtin_ia32_vfmaddsubps512_mask ((__v16sf) __A,
3025 (__v16sf) __B,
3026 -(__v16sf) __C,
3027 (__mmask16) __U,
3028 _MM_FROUND_CUR_DIRECTION);
3029}
3030
Michael Kupersteine45af542015-06-30 13:36:19 +00003031static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003032_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C)
3033{
3034 return (__m512) __builtin_ia32_vfmaddsubps512_maskz ((__v16sf) __A,
3035 (__v16sf) __B,
3036 -(__v16sf) __C,
3037 (__mmask16) __U,
3038 _MM_FROUND_CUR_DIRECTION);
3039}
3040
3041#define _mm512_mask3_fmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003042 (__m512d)__builtin_ia32_vfmsubpd512_mask3((__v8df)(__m512d)(A), \
3043 (__v8df)(__m512d)(B), \
3044 (__v8df)(__m512d)(C), \
3045 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003046
3047
Michael Kupersteine45af542015-06-30 13:36:19 +00003048static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003049_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3050{
3051 return (__m512d) __builtin_ia32_vfmsubpd512_mask3 ((__v8df) __A,
3052 (__v8df) __B,
3053 (__v8df) __C,
3054 (__mmask8) __U,
3055 _MM_FROUND_CUR_DIRECTION);
3056}
3057
3058#define _mm512_mask3_fmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003059 (__m512)__builtin_ia32_vfmsubps512_mask3((__v16sf)(__m512)(A), \
3060 (__v16sf)(__m512)(B), \
3061 (__v16sf)(__m512)(C), \
3062 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003063
3064
Michael Kupersteine45af542015-06-30 13:36:19 +00003065static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003066_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3067{
3068 return (__m512) __builtin_ia32_vfmsubps512_mask3 ((__v16sf) __A,
3069 (__v16sf) __B,
3070 (__v16sf) __C,
3071 (__mmask16) __U,
3072 _MM_FROUND_CUR_DIRECTION);
3073}
3074
3075#define _mm512_mask3_fmsubadd_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003076 (__m512d)__builtin_ia32_vfmsubaddpd512_mask3((__v8df)(__m512d)(A), \
3077 (__v8df)(__m512d)(B), \
3078 (__v8df)(__m512d)(C), \
3079 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003080
3081
Michael Kupersteine45af542015-06-30 13:36:19 +00003082static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003083_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3084{
3085 return (__m512d) __builtin_ia32_vfmsubaddpd512_mask3 ((__v8df) __A,
3086 (__v8df) __B,
3087 (__v8df) __C,
3088 (__mmask8) __U,
3089 _MM_FROUND_CUR_DIRECTION);
3090}
3091
3092#define _mm512_mask3_fmsubadd_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003093 (__m512)__builtin_ia32_vfmsubaddps512_mask3((__v16sf)(__m512)(A), \
3094 (__v16sf)(__m512)(B), \
3095 (__v16sf)(__m512)(C), \
3096 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003097
3098
Michael Kupersteine45af542015-06-30 13:36:19 +00003099static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003100_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3101{
3102 return (__m512) __builtin_ia32_vfmsubaddps512_mask3 ((__v16sf) __A,
3103 (__v16sf) __B,
3104 (__v16sf) __C,
3105 (__mmask16) __U,
3106 _MM_FROUND_CUR_DIRECTION);
3107}
3108
3109#define _mm512_mask_fnmadd_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003110 (__m512d)__builtin_ia32_vfnmaddpd512_mask((__v8df)(__m512d)(A), \
3111 (__v8df)(__m512d)(B), \
3112 (__v8df)(__m512d)(C), \
3113 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003114
3115
Michael Kupersteine45af542015-06-30 13:36:19 +00003116static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003117_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3118{
3119 return (__m512d) __builtin_ia32_vfnmaddpd512_mask ((__v8df) __A,
3120 (__v8df) __B,
3121 (__v8df) __C,
3122 (__mmask8) __U,
3123 _MM_FROUND_CUR_DIRECTION);
3124}
3125
3126#define _mm512_mask_fnmadd_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003127 (__m512)__builtin_ia32_vfnmaddps512_mask((__v16sf)(__m512)(A), \
3128 (__v16sf)(__m512)(B), \
3129 (__v16sf)(__m512)(C), \
3130 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003131
3132
Michael Kupersteine45af542015-06-30 13:36:19 +00003133static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003134_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3135{
3136 return (__m512) __builtin_ia32_vfnmaddps512_mask ((__v16sf) __A,
3137 (__v16sf) __B,
3138 (__v16sf) __C,
3139 (__mmask16) __U,
3140 _MM_FROUND_CUR_DIRECTION);
3141}
3142
3143#define _mm512_mask_fnmsub_round_pd(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003144 (__m512d)__builtin_ia32_vfnmsubpd512_mask((__v8df)(__m512d)(A), \
3145 (__v8df)(__m512d)(B), \
3146 (__v8df)(__m512d)(C), \
3147 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003148
3149
3150#define _mm512_mask3_fnmsub_round_pd(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003151 (__m512d)__builtin_ia32_vfnmsubpd512_mask3((__v8df)(__m512d)(A), \
3152 (__v8df)(__m512d)(B), \
3153 (__v8df)(__m512d)(C), \
3154 (__mmask8)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003155
3156
Michael Kupersteine45af542015-06-30 13:36:19 +00003157static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003158_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C)
3159{
3160 return (__m512d) __builtin_ia32_vfnmsubpd512_mask ((__v8df) __A,
3161 (__v8df) __B,
3162 (__v8df) __C,
3163 (__mmask8) __U,
3164 _MM_FROUND_CUR_DIRECTION);
3165}
3166
Michael Kupersteine45af542015-06-30 13:36:19 +00003167static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003168_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U)
3169{
3170 return (__m512d) __builtin_ia32_vfnmsubpd512_mask3 ((__v8df) __A,
3171 (__v8df) __B,
3172 (__v8df) __C,
3173 (__mmask8) __U,
3174 _MM_FROUND_CUR_DIRECTION);
3175}
3176
3177#define _mm512_mask_fnmsub_round_ps(A, U, B, C, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003178 (__m512)__builtin_ia32_vfnmsubps512_mask((__v16sf)(__m512)(A), \
3179 (__v16sf)(__m512)(B), \
3180 (__v16sf)(__m512)(C), \
3181 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003182
3183
3184#define _mm512_mask3_fnmsub_round_ps(A, B, C, U, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003185 (__m512)__builtin_ia32_vfnmsubps512_mask3((__v16sf)(__m512)(A), \
3186 (__v16sf)(__m512)(B), \
3187 (__v16sf)(__m512)(C), \
3188 (__mmask16)(U), (int)(R)); })
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003189
3190
Michael Kupersteine45af542015-06-30 13:36:19 +00003191static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003192_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C)
3193{
3194 return (__m512) __builtin_ia32_vfnmsubps512_mask ((__v16sf) __A,
3195 (__v16sf) __B,
3196 (__v16sf) __C,
3197 (__mmask16) __U,
3198 _MM_FROUND_CUR_DIRECTION);
3199}
3200
Michael Kupersteine45af542015-06-30 13:36:19 +00003201static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00003202_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U)
3203{
3204 return (__m512) __builtin_ia32_vfnmsubps512_mask3 ((__v16sf) __A,
3205 (__v16sf) __B,
3206 (__v16sf) __C,
3207 (__mmask16) __U,
3208 _MM_FROUND_CUR_DIRECTION);
3209}
3210
3211
3212
Adam Nemet0d5bb552014-07-28 17:14:40 +00003213/* Vector permutations */
3214
Michael Kupersteine45af542015-06-30 13:36:19 +00003215static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003216_mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
3217{
3218 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3219 /* idx */ ,
3220 (__v16si) __A,
3221 (__v16si) __B,
3222 (__mmask16) -1);
3223}
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003224
3225static __inline__ __m512i __DEFAULT_FN_ATTRS
3226_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U,
3227 __m512i __I, __m512i __B)
3228{
3229 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
3230 /* idx */ ,
3231 (__v16si) __A,
3232 (__v16si) __B,
3233 (__mmask16) __U);
3234}
3235
3236static __inline__ __m512i __DEFAULT_FN_ATTRS
3237_mm512_maskz_permutex2var_epi32 (__mmask16 __U, __m512i __A,
3238 __m512i __I, __m512i __B)
3239{
3240 return (__m512i) __builtin_ia32_vpermt2vard512_maskz ((__v16si) __I
3241 /* idx */ ,
3242 (__v16si) __A,
3243 (__v16si) __B,
3244 (__mmask16) __U);
3245}
3246
Michael Kupersteine45af542015-06-30 13:36:19 +00003247static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003248_mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
3249{
3250 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
3251 /* idx */ ,
3252 (__v8di) __A,
3253 (__v8di) __B,
3254 (__mmask8) -1);
3255}
3256
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003257static __inline__ __m512i __DEFAULT_FN_ATTRS
3258_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I,
3259 __m512i __B)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003260{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003261 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
Adam Nemet0d5bb552014-07-28 17:14:40 +00003262 /* idx */ ,
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003263 (__v8di) __A,
3264 (__v8di) __B,
3265 (__mmask8) __U);
3266}
3267
3268
3269static __inline__ __m512i __DEFAULT_FN_ATTRS
3270_mm512_maskz_permutex2var_epi64 (__mmask8 __U, __m512i __A,
3271 __m512i __I, __m512i __B)
3272{
3273 return (__m512i) __builtin_ia32_vpermt2varq512_maskz ((__v8di) __I
3274 /* idx */ ,
3275 (__v8di) __A,
3276 (__v8di) __B,
3277 (__mmask8) __U);
Adam Nemet0d5bb552014-07-28 17:14:40 +00003278}
3279
Craig Topper67826a52015-02-01 07:35:40 +00003280#define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
3281 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003282 (__v8di)(__m512i)(B), (int)(I), \
3283 (__v8di)_mm512_setzero_si512(), \
Craig Topper67826a52015-02-01 07:35:40 +00003284 (__mmask8)-1); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003285
Craig Topper8c18e112016-05-17 04:41:50 +00003286#define _mm512_mask_alignr_epi64(W, U, A, B, imm) __extension__({\
3287 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3288 (__v8di)(__m512i)(B), (int)(imm), \
3289 (__v8di)(__m512i)(W), \
3290 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003291
Craig Topper8c18e112016-05-17 04:41:50 +00003292#define _mm512_maskz_alignr_epi64(U, A, B, imm) __extension__({\
3293 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
3294 (__v8di)(__m512i)(B), (int)(imm), \
3295 (__v8di)_mm512_setzero_si512(), \
3296 (__mmask8)(U)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003297
Craig Topper67826a52015-02-01 07:35:40 +00003298#define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003299 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3300 (__v16si)(__m512i)(B), (int)(I), \
3301 (__v16si)_mm512_setzero_si512(), \
3302 (__mmask16)-1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00003303
Craig Topper8c18e112016-05-17 04:41:50 +00003304#define _mm512_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({\
3305 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3306 (__v16si)(__m512i)(B), (int)(imm), \
3307 (__v16si)(__m512i)(W), \
3308 (__mmask16)(U)); })
Adam Nemet5bf7baa2014-08-05 17:28:23 +00003309
Craig Topper8c18e112016-05-17 04:41:50 +00003310#define _mm512_maskz_alignr_epi32(U, A, B, imm) __extension__({\
3311 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
3312 (__v16si)(__m512i)(B), (int)(imm), \
3313 (__v16si)_mm512_setzero_si512(), \
3314 (__mmask16)(U)); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003315/* Vector Extract */
3316
3317#define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003318 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(I), \
3319 (__v4df)_mm256_setzero_si256(), \
3320 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003321
Craig Topper8c18e112016-05-17 04:41:50 +00003322#define _mm512_mask_extractf64x4_pd(W, U, A, imm) __extension__ ({\
3323 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3324 (__v4df)(__m256d)(W), \
3325 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003326
Craig Topper8c18e112016-05-17 04:41:50 +00003327#define _mm512_maskz_extractf64x4_pd(U, A, imm) __extension__ ({\
3328 (__m256d)__builtin_ia32_extractf64x4_mask((__v8df)(__m512d)(A), (int)(imm), \
3329 (__v4df)_mm256_setzero_pd(), \
3330 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003331
Adam Nemetf893ede2015-01-19 20:12:05 +00003332#define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003333 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(I), \
3334 (__v4sf)_mm_setzero_ps(), \
3335 (__mmask8)-1); })
Adam Nemetf893ede2015-01-19 20:12:05 +00003336
Craig Topper8c18e112016-05-17 04:41:50 +00003337#define _mm512_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({\
3338 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3339 (__v4sf)(__m128)(W), \
3340 (__mmask8)(U)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003341
Craig Topper8c18e112016-05-17 04:41:50 +00003342#define _mm512_maskz_extractf32x4_ps(U, A, imm) __extension__ ({\
3343 (__m128)__builtin_ia32_extractf32x4_mask((__v16sf)(__m512)(A), (int)(imm), \
3344 (__v4sf)_mm_setzero_ps(), \
3345 (__mmask8)(U)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003346/* Vector Blend */
3347
Michael Kupersteine45af542015-06-30 13:36:19 +00003348static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003349_mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
3350{
3351 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
3352 (__v8df) __W,
3353 (__mmask8) __U);
3354}
3355
Michael Kupersteine45af542015-06-30 13:36:19 +00003356static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003357_mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
3358{
3359 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
3360 (__v16sf) __W,
3361 (__mmask16) __U);
3362}
3363
Michael Kupersteine45af542015-06-30 13:36:19 +00003364static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003365_mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
3366{
3367 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
3368 (__v8di) __W,
3369 (__mmask8) __U);
3370}
3371
Michael Kupersteine45af542015-06-30 13:36:19 +00003372static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003373_mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
3374{
3375 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
3376 (__v16si) __W,
3377 (__mmask16) __U);
3378}
3379
3380/* Compare */
3381
Craig Topper53565c62015-02-01 22:27:40 +00003382#define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
3383 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003384 (__v16sf)(__m512)(B), (int)(P), \
3385 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003386
Craig Topper53565c62015-02-01 22:27:40 +00003387#define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
3388 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003389 (__v16sf)(__m512)(B), (int)(P), \
3390 (__mmask16)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003391
3392#define _mm512_cmp_ps_mask(A, B, P) \
3393 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3394
3395#define _mm512_mask_cmp_ps_mask(U, A, B, P) \
3396 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3397
3398#define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
3399 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003400 (__v8df)(__m512d)(B), (int)(P), \
3401 (__mmask8)-1, (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003402
3403#define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
3404 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
Craig Topper8c18e112016-05-17 04:41:50 +00003405 (__v8df)(__m512d)(B), (int)(P), \
3406 (__mmask8)(U), (int)(R)); })
Craig Topper53565c62015-02-01 22:27:40 +00003407
3408#define _mm512_cmp_pd_mask(A, B, P) \
3409 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
3410
3411#define _mm512_mask_cmp_pd_mask(U, A, B, P) \
3412 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003413
3414/* Conversion */
3415
Michael Kupersteine45af542015-06-30 13:36:19 +00003416static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003417_mm512_cvttps_epu32(__m512 __A)
3418{
3419 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3420 (__v16si)
3421 _mm512_setzero_si512 (),
3422 (__mmask16) -1,
3423 _MM_FROUND_CUR_DIRECTION);
3424}
3425
Michael Zuckermanf1544752016-05-09 10:32:51 +00003426static __inline__ __m512i __DEFAULT_FN_ATTRS
3427_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3428{
3429 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3430 (__v16si) __W,
3431 (__mmask16) __U,
3432 _MM_FROUND_CUR_DIRECTION);
3433}
3434
3435static __inline__ __m512i __DEFAULT_FN_ATTRS
3436_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A)
3437{
3438 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
3439 (__v16si) _mm512_setzero_si512 (),
3440 (__mmask16) __U,
3441 _MM_FROUND_CUR_DIRECTION);
3442}
3443
Craig Topper72c7d512015-02-01 07:35:35 +00003444#define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003445 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003446 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003447 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003448
Craig Topper72c7d512015-02-01 07:35:35 +00003449#define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003450 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(__m512i)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003451 (__v16sf)_mm512_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003452 (__mmask16)-1, (int)(R)); })
Adam Nemet0d5bb552014-07-28 17:14:40 +00003453
Michael Zuckermanf1544752016-05-09 10:32:51 +00003454static __inline__ __m512 __DEFAULT_FN_ATTRS
3455_mm512_cvtepu32_ps (__m512i __A)
3456{
3457 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3458 (__v16sf) _mm512_undefined_ps (),
3459 (__mmask16) -1,
3460 _MM_FROUND_CUR_DIRECTION);
3461}
3462
3463static __inline__ __m512 __DEFAULT_FN_ATTRS
3464_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3465{
3466 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3467 (__v16sf) __W,
3468 (__mmask16) __U,
3469 _MM_FROUND_CUR_DIRECTION);
3470}
3471
3472static __inline__ __m512 __DEFAULT_FN_ATTRS
3473_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A)
3474{
3475 return (__m512) __builtin_ia32_cvtudq2ps512_mask ((__v16si) __A,
3476 (__v16sf) _mm512_setzero_ps (),
3477 (__mmask16) __U,
3478 _MM_FROUND_CUR_DIRECTION);
3479}
3480
Michael Kupersteine45af542015-06-30 13:36:19 +00003481static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003482_mm512_cvtepi32_pd(__m256i __A)
3483{
3484 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003485 (__v8df)
Adam Nemet0d5bb552014-07-28 17:14:40 +00003486 _mm512_setzero_pd (),
3487 (__mmask8) -1);
3488}
3489
Michael Zuckermanf1544752016-05-09 10:32:51 +00003490static __inline__ __m512d __DEFAULT_FN_ATTRS
3491_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3492{
3493 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3494 (__v8df) __W,
3495 (__mmask8) __U);
3496}
3497
3498static __inline__ __m512d __DEFAULT_FN_ATTRS
3499_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A)
3500{
3501 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
3502 (__v8df) _mm512_setzero_pd (),
3503 (__mmask8) __U);
3504}
3505
3506static __inline__ __m512 __DEFAULT_FN_ATTRS
3507_mm512_cvtepi32_ps (__m512i __A)
3508{
3509 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3510 (__v16sf) _mm512_undefined_ps (),
3511 (__mmask16) -1,
3512 _MM_FROUND_CUR_DIRECTION);
3513}
3514
3515static __inline__ __m512 __DEFAULT_FN_ATTRS
3516_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A)
3517{
3518 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3519 (__v16sf) __W,
3520 (__mmask16) __U,
3521 _MM_FROUND_CUR_DIRECTION);
3522}
3523
3524static __inline__ __m512 __DEFAULT_FN_ATTRS
3525_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A)
3526{
3527 return (__m512) __builtin_ia32_cvtdq2ps512_mask ((__v16si) __A,
3528 (__v16sf) _mm512_setzero_ps (),
3529 (__mmask16) __U,
3530 _MM_FROUND_CUR_DIRECTION);
3531}
3532
Michael Kupersteine45af542015-06-30 13:36:19 +00003533static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet0d5bb552014-07-28 17:14:40 +00003534_mm512_cvtepu32_pd(__m256i __A)
3535{
3536 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3537 (__v8df)
3538 _mm512_setzero_pd (),
3539 (__mmask8) -1);
3540}
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003541
Michael Zuckermanf1544752016-05-09 10:32:51 +00003542static __inline__ __m512d __DEFAULT_FN_ATTRS
3543_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A)
3544{
3545 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3546 (__v8df) __W,
3547 (__mmask8) __U);
3548}
3549
3550static __inline__ __m512d __DEFAULT_FN_ATTRS
3551_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A)
3552{
3553 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
3554 (__v8df) _mm512_setzero_pd (),
3555 (__mmask8) __U);
3556}
3557
Craig Topper72c7d512015-02-01 07:35:35 +00003558#define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003559 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003560 (__v8sf)_mm256_setzero_ps(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003561 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003562
Michael Zuckermanf1544752016-05-09 10:32:51 +00003563static __inline__ __m256 __DEFAULT_FN_ATTRS
3564_mm512_cvtpd_ps (__m512d __A)
3565{
3566 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3567 (__v8sf) _mm256_undefined_ps (),
3568 (__mmask8) -1,
3569 _MM_FROUND_CUR_DIRECTION);
3570}
3571
3572static __inline__ __m256 __DEFAULT_FN_ATTRS
3573_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A)
3574{
3575 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3576 (__v8sf) __W,
3577 (__mmask8) __U,
3578 _MM_FROUND_CUR_DIRECTION);
3579}
3580
3581static __inline__ __m256 __DEFAULT_FN_ATTRS
3582_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A)
3583{
3584 return (__m256) __builtin_ia32_cvtpd2ps512_mask ((__v8df) __A,
3585 (__v8sf) _mm256_setzero_ps (),
3586 (__mmask8) __U,
3587 _MM_FROUND_CUR_DIRECTION);
3588}
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003589
Craig Topper72c7d512015-02-01 07:35:35 +00003590#define _mm512_cvtps_ph(A, I) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003591 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
Craig Topper72c7d512015-02-01 07:35:35 +00003592 (__v16hi)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003593 (__mmask16)-1); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003594
Craig Topper8c18e112016-05-17 04:41:50 +00003595#define _mm512_mask_cvtps_ph(U, W, A, I) __extension__ ({ \
3596 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3597 (__v16hi)(__m256i)(U), \
3598 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003599
Craig Topper8c18e112016-05-17 04:41:50 +00003600#define _mm512_maskz_cvtps_ph(W, A, I) __extension__ ({\
3601 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(__m512)(A), (int)(I), \
3602 (__v16hi)_mm256_setzero_si256(), \
3603 (__mmask16)(W)); })
Michael Zuckermanf1544752016-05-09 10:32:51 +00003604
3605
Michael Kupersteine45af542015-06-30 13:36:19 +00003606static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003607_mm512_cvtph_ps(__m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003608{
3609 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
Michael Zuckermanf1544752016-05-09 10:32:51 +00003610 (__v16sf)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003611 _mm512_setzero_ps (),
3612 (__mmask16) -1,
3613 _MM_FROUND_CUR_DIRECTION);
3614}
3615
Michael Zuckermanf1544752016-05-09 10:32:51 +00003616static __inline__ __m512 __DEFAULT_FN_ATTRS
3617_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003618{
Michael Zuckermanf1544752016-05-09 10:32:51 +00003619 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3620 (__v16sf) __W,
3621 (__mmask16) __U,
3622 _MM_FROUND_CUR_DIRECTION);
3623}
3624
3625static __inline__ __m512 __DEFAULT_FN_ATTRS
3626_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A)
3627{
3628 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
3629 (__v16sf) _mm512_setzero_ps (),
3630 (__mmask16) __U,
3631 _MM_FROUND_CUR_DIRECTION);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003632}
3633
Michael Kupersteine45af542015-06-30 13:36:19 +00003634static __inline __m256i __DEFAULT_FN_ATTRS
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003635_mm512_cvttpd_epi32(__m512d __a)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003636{
Michael Kuperstein5c2cb0e2015-09-21 11:45:27 +00003637 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) __a,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003638 (__v8si)_mm256_setzero_si256(),
3639 (__mmask8) -1,
3640 _MM_FROUND_CUR_DIRECTION);
3641}
3642
Michael Zuckermanf1544752016-05-09 10:32:51 +00003643static __inline__ __m256i __DEFAULT_FN_ATTRS
3644_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3645{
3646 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3647 (__v8si) __W,
3648 (__mmask8) __U,
3649 _MM_FROUND_CUR_DIRECTION);
3650}
3651
3652static __inline__ __m256i __DEFAULT_FN_ATTRS
3653_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A)
3654{
3655 return (__m256i) __builtin_ia32_cvttpd2dq512_mask ((__v8df) __A,
3656 (__v8si) _mm256_setzero_si256 (),
3657 (__mmask8) __U,
3658 _MM_FROUND_CUR_DIRECTION);
3659}
3660
Craig Topper72c7d512015-02-01 07:35:35 +00003661#define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003662 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003663 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003664 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003665
Craig Topper72c7d512015-02-01 07:35:35 +00003666#define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003667 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003668 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003669 (__mmask16)-1, (int)(R)); })
Michael Zuckerman2564d2f2016-05-10 10:14:50 +00003670
Michael Zuckermanf1544752016-05-09 10:32:51 +00003671static __inline __m512i __DEFAULT_FN_ATTRS
3672_mm512_cvttps_epi32(__m512 __a)
3673{
3674 return (__m512i)
3675 __builtin_ia32_cvttps2dq512_mask((__v16sf) __a,
3676 (__v16si) _mm512_setzero_si512 (),
3677 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
3678}
3679
3680static __inline__ __m512i __DEFAULT_FN_ATTRS
3681_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3682{
3683 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3684 (__v16si) __W,
3685 (__mmask16) __U,
3686 _MM_FROUND_CUR_DIRECTION);
3687}
3688
3689static __inline__ __m512i __DEFAULT_FN_ATTRS
3690_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A)
3691{
3692 return (__m512i) __builtin_ia32_cvttps2dq512_mask ((__v16sf) __A,
3693 (__v16si) _mm512_setzero_si512 (),
3694 (__mmask16) __U,
3695 _MM_FROUND_CUR_DIRECTION);
3696}
Craig Topper72c7d512015-02-01 07:35:35 +00003697
3698#define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003699 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003700 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003701 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003702
Michael Zuckermanf1544752016-05-09 10:32:51 +00003703static __inline__ __m512i __DEFAULT_FN_ATTRS
3704_mm512_cvtps_epi32 (__m512 __A)
3705{
3706 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3707 (__v16si) _mm512_undefined_epi32 (),
3708 (__mmask16) -1,
3709 _MM_FROUND_CUR_DIRECTION);
3710}
3711
3712static __inline__ __m512i __DEFAULT_FN_ATTRS
3713_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A)
3714{
3715 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3716 (__v16si) __W,
3717 (__mmask16) __U,
3718 _MM_FROUND_CUR_DIRECTION);
3719}
3720
3721static __inline__ __m512i __DEFAULT_FN_ATTRS
3722_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A)
3723{
3724 return (__m512i) __builtin_ia32_cvtps2dq512_mask ((__v16sf) __A,
3725 (__v16si)
3726 _mm512_setzero_si512 (),
3727 (__mmask16) __U,
3728 _MM_FROUND_CUR_DIRECTION);
3729}
3730
Craig Topper72c7d512015-02-01 07:35:35 +00003731#define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003732 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003733 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003734 (__mmask8)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003735
Michael Zuckermanf1544752016-05-09 10:32:51 +00003736static __inline__ __m256i __DEFAULT_FN_ATTRS
3737_mm512_cvtpd_epi32 (__m512d __A)
3738{
3739 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3740 (__v8si)
3741 _mm256_undefined_si256 (),
3742 (__mmask8) -1,
3743 _MM_FROUND_CUR_DIRECTION);
3744}
3745
3746static __inline__ __m256i __DEFAULT_FN_ATTRS
3747_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A)
3748{
3749 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3750 (__v8si) __W,
3751 (__mmask8) __U,
3752 _MM_FROUND_CUR_DIRECTION);
3753}
3754
3755static __inline__ __m256i __DEFAULT_FN_ATTRS
3756_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A)
3757{
3758 return (__m256i) __builtin_ia32_cvtpd2dq512_mask ((__v8df) __A,
3759 (__v8si)
3760 _mm256_setzero_si256 (),
3761 (__mmask8) __U,
3762 _MM_FROUND_CUR_DIRECTION);
3763}
3764
Craig Topper72c7d512015-02-01 07:35:35 +00003765#define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003766 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(__m512)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003767 (__v16si)_mm512_setzero_si512(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003768 (__mmask16)-1, (int)(R)); })
Craig Topper72c7d512015-02-01 07:35:35 +00003769
Michael Zuckermanf1544752016-05-09 10:32:51 +00003770static __inline__ __m512i __DEFAULT_FN_ATTRS
3771_mm512_cvtps_epu32 ( __m512 __A)
3772{
3773 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,\
3774 (__v16si)\
3775 _mm512_undefined_epi32 (),\
3776 (__mmask16) -1,\
3777 _MM_FROUND_CUR_DIRECTION);\
3778}
3779
3780static __inline__ __m512i __DEFAULT_FN_ATTRS
3781_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A)
3782{
3783 return (__m512i) __builtin_ia32_cvtps2udq512_mask ((__v16sf) __A,
3784 (__v16si) __W,
3785 (__mmask16) __U,
3786 _MM_FROUND_CUR_DIRECTION);
3787}
3788
Craig Topper72c7d512015-02-01 07:35:35 +00003789#define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00003790 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(__m512d)(A), \
Craig Topper72c7d512015-02-01 07:35:35 +00003791 (__v8si)_mm256_setzero_si256(), \
Craig Topper8c18e112016-05-17 04:41:50 +00003792 (__mmask8)-1, (int)(R)); })
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003793
Michael Zuckermanf1544752016-05-09 10:32:51 +00003794static __inline__ __m256i __DEFAULT_FN_ATTRS
3795_mm512_cvtpd_epu32 (__m512d __A)
3796{
3797 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3798 (__v8si)
3799 _mm256_undefined_si256 (),
3800 (__mmask8) -1,
3801 _MM_FROUND_CUR_DIRECTION);
3802}
3803
3804static __inline__ __m256i __DEFAULT_FN_ATTRS
3805_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
3806{
3807 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3808 (__v8si) __W,
3809 (__mmask8) __U,
3810 _MM_FROUND_CUR_DIRECTION);
3811}
3812
3813static __inline__ __m256i __DEFAULT_FN_ATTRS
3814_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A)
3815{
3816 return (__m256i) __builtin_ia32_cvtpd2udq512_mask ((__v8df) __A,
3817 (__v8si)
3818 _mm256_setzero_si256 (),
3819 (__mmask8) __U,
3820 _MM_FROUND_CUR_DIRECTION);
3821}
Adam Nemet63a951e2015-01-14 01:31:17 +00003822/* Unpack and Interleave */
Michael Kupersteine45af542015-06-30 13:36:19 +00003823static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003824_mm512_unpackhi_pd(__m512d __a, __m512d __b)
3825{
3826 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
3827}
3828
Michael Kupersteine45af542015-06-30 13:36:19 +00003829static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003830_mm512_unpacklo_pd(__m512d __a, __m512d __b)
3831{
3832 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
3833}
3834
Michael Kupersteine45af542015-06-30 13:36:19 +00003835static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003836_mm512_unpackhi_ps(__m512 __a, __m512 __b)
3837{
3838 return __builtin_shufflevector(__a, __b,
3839 2, 18, 3, 19,
3840 2+4, 18+4, 3+4, 19+4,
3841 2+8, 18+8, 3+8, 19+8,
3842 2+12, 18+12, 3+12, 19+12);
3843}
3844
Michael Kupersteine45af542015-06-30 13:36:19 +00003845static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet63a951e2015-01-14 01:31:17 +00003846_mm512_unpacklo_ps(__m512 __a, __m512 __b)
3847{
3848 return __builtin_shufflevector(__a, __b,
3849 0, 16, 1, 17,
3850 0+4, 16+4, 1+4, 17+4,
3851 0+8, 16+8, 1+8, 17+8,
3852 0+12, 16+12, 1+12, 17+12);
3853}
3854
Adam Nemet0d5bb552014-07-28 17:14:40 +00003855/* Bit Test */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003856
Michael Kupersteine45af542015-06-30 13:36:19 +00003857static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003858_mm512_test_epi32_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003859{
3860 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3861 (__v16si) __B,
3862 (__mmask16) -1);
3863}
3864
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003865static __inline__ __mmask16 __DEFAULT_FN_ATTRS
3866_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
3867{
3868 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
3869 (__v16si) __B, __U);
3870}
3871
Michael Kupersteine45af542015-06-30 13:36:19 +00003872static __inline __mmask8 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003873_mm512_test_epi64_mask(__m512i __A, __m512i __B)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003874{
3875 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
3876 (__v8di) __B,
3877 (__mmask8) -1);
3878}
3879
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00003880static __inline__ __mmask8 __DEFAULT_FN_ATTRS
3881_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
3882{
3883 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A, (__v8di) __B, __U);
3884}
3885
3886
Adam Nemet0d5bb552014-07-28 17:14:40 +00003887/* SIMD load ops */
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003888
Michael Kupersteine45af542015-06-30 13:36:19 +00003889static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003890_mm512_loadu_si512 (void const *__P)
3891{
Craig Topper4537ea72016-05-14 06:03:13 +00003892 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003893 (__v16si)
3894 _mm512_setzero_si512 (),
3895 (__mmask16) -1);
3896}
3897
3898static __inline __m512i __DEFAULT_FN_ATTRS
3899_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void const *__P)
3900{
Craig Topper4537ea72016-05-14 06:03:13 +00003901 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003902 (__v16si) __W,
3903 (__mmask16) __U);
3904}
3905
3906
3907static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003908_mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003909{
Craig Topper4537ea72016-05-14 06:03:13 +00003910 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const int *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003911 (__v16si)
3912 _mm512_setzero_si512 (),
3913 (__mmask16) __U);
3914}
3915
Michael Kupersteine45af542015-06-30 13:36:19 +00003916static __inline __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003917_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void const *__P)
3918{
Craig Topper4537ea72016-05-14 06:03:13 +00003919 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003920 (__v8di) __W,
3921 (__mmask8) __U);
3922}
3923
3924static __inline __m512i __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003925_mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003926{
Craig Topper4537ea72016-05-14 06:03:13 +00003927 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const long long *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003928 (__v8di)
3929 _mm512_setzero_si512 (),
3930 (__mmask8) __U);
3931}
3932
Michael Kupersteine45af542015-06-30 13:36:19 +00003933static __inline __m512 __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003934_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void const *__P)
3935{
Craig Topper4537ea72016-05-14 06:03:13 +00003936 return (__m512) __builtin_ia32_loadups512_mask ((const float *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003937 (__v16sf) __W,
3938 (__mmask16) __U);
3939}
3940
3941static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00003942_mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003943{
Craig Topper4537ea72016-05-14 06:03:13 +00003944 return (__m512) __builtin_ia32_loadups512_mask ((const float *)__P,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003945 (__v16sf)
3946 _mm512_setzero_ps (),
3947 (__mmask16) __U);
3948}
3949
Michael Kupersteine45af542015-06-30 13:36:19 +00003950static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003951_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void const *__P)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00003952{
Craig Topper4537ea72016-05-14 06:03:13 +00003953 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *) __P,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003954 (__v8df) __W,
3955 (__mmask8) __U);
Adam Nemetc0cff242015-01-16 18:51:50 +00003956}
3957
Michael Kupersteine45af542015-06-30 13:36:19 +00003958static __inline __m512d __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003959_mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
Adam Nemetc0cff242015-01-16 18:51:50 +00003960{
Craig Topper4537ea72016-05-14 06:03:13 +00003961 return (__m512d) __builtin_ia32_loadupd512_mask ((const double *)__P,
Adam Nemetc0cff242015-01-16 18:51:50 +00003962 (__v8df)
3963 _mm512_setzero_pd (),
3964 (__mmask8) __U);
3965}
3966
Michael Kupersteine45af542015-06-30 13:36:19 +00003967static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003968_mm512_loadu_pd(double const *__p)
3969{
3970 struct __loadu_pd {
3971 __m512d __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003972 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003973 return ((struct __loadu_pd*)__p)->__v;
3974}
3975
Michael Kupersteine45af542015-06-30 13:36:19 +00003976static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemetda82bcc2014-07-31 04:00:39 +00003977_mm512_loadu_ps(float const *__p)
3978{
3979 struct __loadu_ps {
3980 __m512 __v;
David Majnemer1cf22e62015-02-04 00:26:10 +00003981 } __attribute__((__packed__, __may_alias__));
Adam Nemetda82bcc2014-07-31 04:00:39 +00003982 return ((struct __loadu_ps*)__p)->__v;
3983}
3984
Michael Kupersteine45af542015-06-30 13:36:19 +00003985static __inline __m512 __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00003986_mm512_load_ps(float const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00003987{
3988 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
3989 (__v16sf)
3990 _mm512_setzero_ps (),
3991 (__mmask16) -1);
3992}
3993
Michael Zuckermane9e8e572016-05-10 13:13:54 +00003994static __inline __m512 __DEFAULT_FN_ATTRS
3995_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void const *__P)
3996{
3997 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *) __P,
3998 (__v16sf) __W,
3999 (__mmask16) __U);
4000}
4001
4002static __inline __m512 __DEFAULT_FN_ATTRS
4003_mm512_maskz_load_ps(__mmask16 __U, void const *__P)
4004{
4005 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
4006 (__v16sf)
4007 _mm512_setzero_ps (),
4008 (__mmask16) __U);
4009}
4010
Michael Kupersteine45af542015-06-30 13:36:19 +00004011static __inline __m512d __DEFAULT_FN_ATTRS
Adam Nemete7087472016-01-19 02:02:25 +00004012_mm512_load_pd(double const *__p)
Adam Nemetc0cff242015-01-16 18:51:50 +00004013{
4014 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
4015 (__v8df)
4016 _mm512_setzero_pd (),
4017 (__mmask8) -1);
4018}
4019
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004020static __inline __m512d __DEFAULT_FN_ATTRS
4021_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void const *__P)
4022{
4023 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *) __P,
4024 (__v8df) __W,
4025 (__mmask8) __U);
4026}
4027
4028static __inline __m512d __DEFAULT_FN_ATTRS
4029_mm512_maskz_load_pd(__mmask8 __U, void const *__P)
4030{
4031 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
4032 (__v8df)
4033 _mm512_setzero_pd (),
4034 (__mmask8) __U);
4035}
4036
4037static __inline __m512i __DEFAULT_FN_ATTRS
4038_mm512_load_si512 (void const *__P)
4039{
4040 return *(__m512i *) __P;
4041}
4042
4043static __inline __m512i __DEFAULT_FN_ATTRS
4044_mm512_load_epi32 (void const *__P)
4045{
4046 return *(__m512i *) __P;
4047}
4048
4049static __inline __m512i __DEFAULT_FN_ATTRS
4050_mm512_load_epi64 (void const *__P)
4051{
4052 return *(__m512i *) __P;
4053}
4054
Adam Nemet0d5bb552014-07-28 17:14:40 +00004055/* SIMD store ops */
4056
Michael Kupersteine45af542015-06-30 13:36:19 +00004057static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004058_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004059{
Craig Topper4537ea72016-05-14 06:03:13 +00004060 __builtin_ia32_storedqudi512_mask ((long long *)__P, (__v8di) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004061 (__mmask8) __U);
4062}
4063
Michael Kupersteine45af542015-06-30 13:36:19 +00004064static __inline void __DEFAULT_FN_ATTRS
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004065_mm512_storeu_si512 (void *__P, __m512i __A)
4066{
Craig Topper4537ea72016-05-14 06:03:13 +00004067 __builtin_ia32_storedqusi512_mask ((int *) __P, (__v16si) __A,
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004068 (__mmask16) -1);
4069}
4070
4071static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004072_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004073{
Craig Topper4537ea72016-05-14 06:03:13 +00004074 __builtin_ia32_storedqusi512_mask ((int *)__P, (__v16si) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004075 (__mmask16) __U);
4076}
4077
Michael Kupersteine45af542015-06-30 13:36:19 +00004078static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004079_mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004080{
Craig Topper4537ea72016-05-14 06:03:13 +00004081 __builtin_ia32_storeupd512_mask ((double *)__P, (__v8df) __A, (__mmask8) __U);
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004082}
4083
Michael Kupersteine45af542015-06-30 13:36:19 +00004084static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004085_mm512_storeu_pd(void *__P, __m512d __A)
4086{
Craig Topper4537ea72016-05-14 06:03:13 +00004087 __builtin_ia32_storeupd512_mask((double *)__P, (__v8df)__A, (__mmask8)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004088}
4089
Michael Kupersteine45af542015-06-30 13:36:19 +00004090static __inline void __DEFAULT_FN_ATTRS
Adam Nemet9a3ea602014-07-28 17:14:38 +00004091_mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004092{
Craig Topper4537ea72016-05-14 06:03:13 +00004093 __builtin_ia32_storeups512_mask ((float *)__P, (__v16sf) __A,
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00004094 (__mmask16) __U);
4095}
4096
Michael Kupersteine45af542015-06-30 13:36:19 +00004097static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004098_mm512_storeu_ps(void *__P, __m512 __A)
4099{
Craig Topper4537ea72016-05-14 06:03:13 +00004100 __builtin_ia32_storeups512_mask((float *)__P, (__v16sf)__A, (__mmask16)-1);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004101}
4102
Michael Kupersteine45af542015-06-30 13:36:19 +00004103static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004104_mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
Adam Nemetfce1ad02014-07-28 17:14:45 +00004105{
Adam Nemetc0cff242015-01-16 18:51:50 +00004106 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
Adam Nemetfce1ad02014-07-28 17:14:45 +00004107}
4108
Michael Kupersteine45af542015-06-30 13:36:19 +00004109static __inline void __DEFAULT_FN_ATTRS
Adam Nemetfce1ad02014-07-28 17:14:45 +00004110_mm512_store_pd(void *__P, __m512d __A)
4111{
4112 *(__m512d*)__P = __A;
4113}
4114
Michael Kupersteine45af542015-06-30 13:36:19 +00004115static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004116_mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
4117{
4118 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
4119 (__mmask16) __U);
4120}
4121
Michael Kupersteine45af542015-06-30 13:36:19 +00004122static __inline void __DEFAULT_FN_ATTRS
Adam Nemetc0cff242015-01-16 18:51:50 +00004123_mm512_store_ps(void *__P, __m512 __A)
4124{
4125 *(__m512*)__P = __A;
4126}
4127
Michael Zuckermane9e8e572016-05-10 13:13:54 +00004128static __inline void __DEFAULT_FN_ATTRS
4129_mm512_store_si512 (void *__P, __m512i __A)
4130{
4131 *(__m512i *) __P = __A;
4132}
4133
4134static __inline void __DEFAULT_FN_ATTRS
4135_mm512_store_epi32 (void *__P, __m512i __A)
4136{
4137 *(__m512i *) __P = __A;
4138}
4139
4140static __inline void __DEFAULT_FN_ATTRS
4141_mm512_store_epi64 (void *__P, __m512i __A)
4142{
4143 *(__m512i *) __P = __A;
4144}
4145
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004146/* Mask ops */
4147
Michael Kupersteine45af542015-06-30 13:36:19 +00004148static __inline __mmask16 __DEFAULT_FN_ATTRS
Adam Nemet2db1d2f2014-07-30 16:51:27 +00004149_mm512_knot(__mmask16 __M)
4150{
4151 return __builtin_ia32_knothi(__M);
4152}
4153
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004154/* Integer compare */
4155
Michael Kupersteine45af542015-06-30 13:36:19 +00004156static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004157_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
4158 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4159 (__mmask16)-1);
4160}
4161
Michael Kupersteine45af542015-06-30 13:36:19 +00004162static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004163_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4164 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
4165 __u);
4166}
4167
Michael Kupersteine45af542015-06-30 13:36:19 +00004168static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004169_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
4170 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4171 (__mmask16)-1);
4172}
4173
Michael Kupersteine45af542015-06-30 13:36:19 +00004174static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004175_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4176 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
4177 __u);
4178}
4179
Michael Kupersteine45af542015-06-30 13:36:19 +00004180static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004181_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4182 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4183 __u);
4184}
4185
Michael Kupersteine45af542015-06-30 13:36:19 +00004186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +00004187_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
4188 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
4189 (__mmask8)-1);
4190}
4191
Michael Kupersteine45af542015-06-30 13:36:19 +00004192static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004193_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
4194 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4195 (__mmask8)-1);
4196}
4197
Michael Kupersteine45af542015-06-30 13:36:19 +00004198static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004199_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4200 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
4201 __u);
4202}
4203
Michael Kupersteine45af542015-06-30 13:36:19 +00004204static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004205_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
4206 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4207 (__mmask16)-1);
4208}
4209
Michael Kupersteine45af542015-06-30 13:36:19 +00004210static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004211_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4212 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4213 __u);
4214}
4215
Michael Kupersteine45af542015-06-30 13:36:19 +00004216static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004217_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
4218 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4219 (__mmask16)-1);
4220}
4221
Michael Kupersteine45af542015-06-30 13:36:19 +00004222static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004223_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4224 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
4225 __u);
4226}
4227
Michael Kupersteine45af542015-06-30 13:36:19 +00004228static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004229_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
4230 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4231 (__mmask8)-1);
4232}
4233
Michael Kupersteine45af542015-06-30 13:36:19 +00004234static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004235_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4236 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4237 __u);
4238}
4239
Michael Kupersteine45af542015-06-30 13:36:19 +00004240static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004241_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
4242 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4243 (__mmask8)-1);
4244}
4245
Michael Kupersteine45af542015-06-30 13:36:19 +00004246static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004247_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4248 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
4249 __u);
4250}
4251
Michael Kupersteine45af542015-06-30 13:36:19 +00004252static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004253_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
4254 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4255 (__mmask16)-1);
4256}
4257
Michael Kupersteine45af542015-06-30 13:36:19 +00004258static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004259_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4260 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
4261 __u);
4262}
4263
Michael Kupersteine45af542015-06-30 13:36:19 +00004264static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004265_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
4266 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4267 (__mmask16)-1);
4268}
4269
Michael Kupersteine45af542015-06-30 13:36:19 +00004270static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004271_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4272 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
4273 __u);
4274}
4275
Michael Kupersteine45af542015-06-30 13:36:19 +00004276static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004277_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4278 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4279 __u);
4280}
4281
Michael Kupersteine45af542015-06-30 13:36:19 +00004282static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004283_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
4284 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
4285 (__mmask8)-1);
4286}
4287
Michael Kupersteine45af542015-06-30 13:36:19 +00004288static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004289_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
4290 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4291 (__mmask8)-1);
4292}
4293
Michael Kupersteine45af542015-06-30 13:36:19 +00004294static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004295_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4296 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
4297 __u);
4298}
4299
Michael Kupersteine45af542015-06-30 13:36:19 +00004300static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004301_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
4302 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4303 (__mmask16)-1);
4304}
4305
Michael Kupersteine45af542015-06-30 13:36:19 +00004306static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004307_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4308 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4309 __u);
4310}
4311
Michael Kupersteine45af542015-06-30 13:36:19 +00004312static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004313_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
4314 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4315 (__mmask16)-1);
4316}
4317
Michael Kupersteine45af542015-06-30 13:36:19 +00004318static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004319_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4320 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
4321 __u);
4322}
4323
Michael Kupersteine45af542015-06-30 13:36:19 +00004324static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004325_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
4326 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4327 (__mmask8)-1);
4328}
4329
Michael Kupersteine45af542015-06-30 13:36:19 +00004330static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004331_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4332 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4333 __u);
4334}
4335
Michael Kupersteine45af542015-06-30 13:36:19 +00004336static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004337_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
4338 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4339 (__mmask8)-1);
4340}
4341
Michael Kupersteine45af542015-06-30 13:36:19 +00004342static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004343_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4344 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
4345 __u);
4346}
4347
Michael Kupersteine45af542015-06-30 13:36:19 +00004348static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004349_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
4350 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4351 (__mmask16)-1);
4352}
4353
Michael Kupersteine45af542015-06-30 13:36:19 +00004354static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004355_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4356 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4357 __u);
4358}
4359
Michael Kupersteine45af542015-06-30 13:36:19 +00004360static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004361_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
4362 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4363 (__mmask16)-1);
4364}
4365
Michael Kupersteine45af542015-06-30 13:36:19 +00004366static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004367_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4368 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
4369 __u);
4370}
4371
Michael Kupersteine45af542015-06-30 13:36:19 +00004372static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004373_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
4374 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4375 (__mmask8)-1);
4376}
4377
Michael Kupersteine45af542015-06-30 13:36:19 +00004378static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004379_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4380 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4381 __u);
4382}
4383
Michael Kupersteine45af542015-06-30 13:36:19 +00004384static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004385_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
4386 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4387 (__mmask8)-1);
4388}
4389
Michael Kupersteine45af542015-06-30 13:36:19 +00004390static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004391_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4392 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
4393 __u);
4394}
4395
Michael Kupersteine45af542015-06-30 13:36:19 +00004396static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004397_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
4398 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4399 (__mmask16)-1);
4400}
4401
Michael Kupersteine45af542015-06-30 13:36:19 +00004402static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004403_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4404 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4405 __u);
4406}
4407
Michael Kupersteine45af542015-06-30 13:36:19 +00004408static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004409_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
4410 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4411 (__mmask16)-1);
4412}
4413
Michael Kupersteine45af542015-06-30 13:36:19 +00004414static __inline__ __mmask16 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004415_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
4416 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
4417 __u);
4418}
4419
Michael Kupersteine45af542015-06-30 13:36:19 +00004420static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004421_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
4422 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4423 (__mmask8)-1);
4424}
4425
Michael Kupersteine45af542015-06-30 13:36:19 +00004426static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004427_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4428 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4429 __u);
4430}
4431
Michael Kupersteine45af542015-06-30 13:36:19 +00004432static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004433_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
4434 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4435 (__mmask8)-1);
4436}
4437
Michael Kupersteine45af542015-06-30 13:36:19 +00004438static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper4cac1c22015-01-25 23:30:07 +00004439_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
4440 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
4441 __u);
4442}
4443
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004444static __inline__ __m512i __DEFAULT_FN_ATTRS
4445_mm512_cvtepi8_epi32 (__m128i __A)
4446{
4447 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4448 (__v16si)
4449 _mm512_setzero_si512 (),
4450 (__mmask16) -1);
4451}
4452
4453static __inline__ __m512i __DEFAULT_FN_ATTRS
4454_mm512_mask_cvtepi8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4455{
4456 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4457 (__v16si) __W,
4458 (__mmask16) __U);
4459}
4460
4461static __inline__ __m512i __DEFAULT_FN_ATTRS
4462_mm512_maskz_cvtepi8_epi32 (__mmask16 __U, __m128i __A)
4463{
4464 return (__m512i) __builtin_ia32_pmovsxbd512_mask ((__v16qi) __A,
4465 (__v16si)
4466 _mm512_setzero_si512 (),
4467 (__mmask16) __U);
4468}
4469
4470static __inline__ __m512i __DEFAULT_FN_ATTRS
4471_mm512_cvtepi8_epi64 (__m128i __A)
4472{
4473 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4474 (__v8di)
4475 _mm512_setzero_si512 (),
4476 (__mmask8) -1);
4477}
4478
4479static __inline__ __m512i __DEFAULT_FN_ATTRS
4480_mm512_mask_cvtepi8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4481{
4482 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4483 (__v8di) __W,
4484 (__mmask8) __U);
4485}
4486
4487static __inline__ __m512i __DEFAULT_FN_ATTRS
4488_mm512_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4489{
4490 return (__m512i) __builtin_ia32_pmovsxbq512_mask ((__v16qi) __A,
4491 (__v8di)
4492 _mm512_setzero_si512 (),
4493 (__mmask8) __U);
4494}
4495
4496static __inline__ __m512i __DEFAULT_FN_ATTRS
4497_mm512_cvtepi32_epi64 (__m256i __X)
4498{
4499 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4500 (__v8di)
4501 _mm512_setzero_si512 (),
4502 (__mmask8) -1);
4503}
4504
4505static __inline__ __m512i __DEFAULT_FN_ATTRS
4506_mm512_mask_cvtepi32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4507{
4508 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4509 (__v8di) __W,
4510 (__mmask8) __U);
4511}
4512
4513static __inline__ __m512i __DEFAULT_FN_ATTRS
4514_mm512_maskz_cvtepi32_epi64 (__mmask8 __U, __m256i __X)
4515{
4516 return (__m512i) __builtin_ia32_pmovsxdq512_mask ((__v8si) __X,
4517 (__v8di)
4518 _mm512_setzero_si512 (),
4519 (__mmask8) __U);
4520}
4521
4522static __inline__ __m512i __DEFAULT_FN_ATTRS
4523_mm512_cvtepi16_epi32 (__m256i __A)
4524{
4525 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4526 (__v16si)
4527 _mm512_setzero_si512 (),
4528 (__mmask16) -1);
4529}
4530
4531static __inline__ __m512i __DEFAULT_FN_ATTRS
4532_mm512_mask_cvtepi16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4533{
4534 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4535 (__v16si) __W,
4536 (__mmask16) __U);
4537}
4538
4539static __inline__ __m512i __DEFAULT_FN_ATTRS
4540_mm512_maskz_cvtepi16_epi32 (__mmask16 __U, __m256i __A)
4541{
4542 return (__m512i) __builtin_ia32_pmovsxwd512_mask ((__v16hi) __A,
4543 (__v16si)
4544 _mm512_setzero_si512 (),
4545 (__mmask16) __U);
4546}
4547
4548static __inline__ __m512i __DEFAULT_FN_ATTRS
4549_mm512_cvtepi16_epi64 (__m128i __A)
4550{
4551 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4552 (__v8di)
4553 _mm512_setzero_si512 (),
4554 (__mmask8) -1);
4555}
4556
4557static __inline__ __m512i __DEFAULT_FN_ATTRS
4558_mm512_mask_cvtepi16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4559{
4560 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4561 (__v8di) __W,
4562 (__mmask8) __U);
4563}
4564
4565static __inline__ __m512i __DEFAULT_FN_ATTRS
4566_mm512_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4567{
4568 return (__m512i) __builtin_ia32_pmovsxwq512_mask ((__v8hi) __A,
4569 (__v8di)
4570 _mm512_setzero_si512 (),
4571 (__mmask8) __U);
4572}
4573
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004574static __inline__ __m512i __DEFAULT_FN_ATTRS
4575_mm512_cvtepu8_epi32 (__m128i __A)
4576{
4577 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4578 (__v16si)
4579 _mm512_setzero_si512 (),
4580 (__mmask16) -1);
4581}
4582
4583static __inline__ __m512i __DEFAULT_FN_ATTRS
4584_mm512_mask_cvtepu8_epi32 (__m512i __W, __mmask16 __U, __m128i __A)
4585{
4586 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4587 (__v16si) __W,
4588 (__mmask16) __U);
4589}
4590
4591static __inline__ __m512i __DEFAULT_FN_ATTRS
4592_mm512_maskz_cvtepu8_epi32 (__mmask16 __U, __m128i __A)
4593{
4594 return (__m512i) __builtin_ia32_pmovzxbd512_mask ((__v16qi) __A,
4595 (__v16si)
4596 _mm512_setzero_si512 (),
4597 (__mmask16) __U);
4598}
4599
4600static __inline__ __m512i __DEFAULT_FN_ATTRS
4601_mm512_cvtepu8_epi64 (__m128i __A)
4602{
4603 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4604 (__v8di)
4605 _mm512_setzero_si512 (),
4606 (__mmask8) -1);
4607}
4608
4609static __inline__ __m512i __DEFAULT_FN_ATTRS
4610_mm512_mask_cvtepu8_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4611{
4612 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4613 (__v8di) __W,
4614 (__mmask8) __U);
4615}
4616
4617static __inline__ __m512i __DEFAULT_FN_ATTRS
4618_mm512_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4619{
4620 return (__m512i) __builtin_ia32_pmovzxbq512_mask ((__v16qi) __A,
4621 (__v8di)
4622 _mm512_setzero_si512 (),
4623 (__mmask8) __U);
4624}
4625
4626static __inline__ __m512i __DEFAULT_FN_ATTRS
4627_mm512_cvtepu32_epi64 (__m256i __X)
4628{
4629 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4630 (__v8di)
4631 _mm512_setzero_si512 (),
4632 (__mmask8) -1);
4633}
4634
4635static __inline__ __m512i __DEFAULT_FN_ATTRS
4636_mm512_mask_cvtepu32_epi64 (__m512i __W, __mmask8 __U, __m256i __X)
4637{
4638 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4639 (__v8di) __W,
4640 (__mmask8) __U);
4641}
4642
4643static __inline__ __m512i __DEFAULT_FN_ATTRS
4644_mm512_maskz_cvtepu32_epi64 (__mmask8 __U, __m256i __X)
4645{
4646 return (__m512i) __builtin_ia32_pmovzxdq512_mask ((__v8si) __X,
4647 (__v8di)
4648 _mm512_setzero_si512 (),
4649 (__mmask8) __U);
4650}
4651
4652static __inline__ __m512i __DEFAULT_FN_ATTRS
4653_mm512_cvtepu16_epi32 (__m256i __A)
4654{
4655 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4656 (__v16si)
4657 _mm512_setzero_si512 (),
4658 (__mmask16) -1);
4659}
4660
4661static __inline__ __m512i __DEFAULT_FN_ATTRS
4662_mm512_mask_cvtepu16_epi32 (__m512i __W, __mmask16 __U, __m256i __A)
4663{
4664 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4665 (__v16si) __W,
4666 (__mmask16) __U);
4667}
4668
4669static __inline__ __m512i __DEFAULT_FN_ATTRS
4670_mm512_maskz_cvtepu16_epi32 (__mmask16 __U, __m256i __A)
4671{
4672 return (__m512i) __builtin_ia32_pmovzxwd512_mask ((__v16hi) __A,
4673 (__v16si)
4674 _mm512_setzero_si512 (),
4675 (__mmask16) __U);
4676}
4677
4678static __inline__ __m512i __DEFAULT_FN_ATTRS
4679_mm512_cvtepu16_epi64 (__m128i __A)
4680{
4681 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4682 (__v8di)
4683 _mm512_setzero_si512 (),
4684 (__mmask8) -1);
4685}
4686
4687static __inline__ __m512i __DEFAULT_FN_ATTRS
4688_mm512_mask_cvtepu16_epi64 (__m512i __W, __mmask8 __U, __m128i __A)
4689{
4690 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4691 (__v8di) __W,
4692 (__mmask8) __U);
4693}
4694
4695static __inline__ __m512i __DEFAULT_FN_ATTRS
4696_mm512_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4697{
4698 return (__m512i) __builtin_ia32_pmovzxwq512_mask ((__v8hi) __A,
4699 (__v8di)
4700 _mm512_setzero_si512 (),
4701 (__mmask8) __U);
4702}
4703
Michael Zuckermane98cc742016-02-23 15:59:47 +00004704static __inline__ __m512i __DEFAULT_FN_ATTRS
4705_mm512_rorv_epi32 (__m512i __A, __m512i __B)
4706{
4707 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4708 (__v16si) __B,
4709 (__v16si)
4710 _mm512_setzero_si512 (),
4711 (__mmask16) -1);
4712}
4713
4714static __inline__ __m512i __DEFAULT_FN_ATTRS
4715_mm512_mask_rorv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4716{
4717 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4718 (__v16si) __B,
4719 (__v16si) __W,
4720 (__mmask16) __U);
4721}
4722
4723static __inline__ __m512i __DEFAULT_FN_ATTRS
4724_mm512_maskz_rorv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4725{
4726 return (__m512i) __builtin_ia32_prorvd512_mask ((__v16si) __A,
4727 (__v16si) __B,
4728 (__v16si)
4729 _mm512_setzero_si512 (),
4730 (__mmask16) __U);
4731}
4732
4733static __inline__ __m512i __DEFAULT_FN_ATTRS
4734_mm512_rorv_epi64 (__m512i __A, __m512i __B)
4735{
4736 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4737 (__v8di) __B,
4738 (__v8di)
4739 _mm512_setzero_si512 (),
4740 (__mmask8) -1);
4741}
4742
4743static __inline__ __m512i __DEFAULT_FN_ATTRS
4744_mm512_mask_rorv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4745{
4746 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4747 (__v8di) __B,
4748 (__v8di) __W,
4749 (__mmask8) __U);
4750}
4751
4752static __inline__ __m512i __DEFAULT_FN_ATTRS
4753_mm512_maskz_rorv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4754{
4755 return (__m512i) __builtin_ia32_prorvq512_mask ((__v8di) __A,
4756 (__v8di) __B,
4757 (__v8di)
4758 _mm512_setzero_si512 (),
4759 (__mmask8) __U);
4760}
4761
4762
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004763
Craig Topper4cac1c22015-01-25 23:30:07 +00004764#define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004765 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004766 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004767 (__mmask16)-1); })
4768
4769#define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004770 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004771 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004772 (__mmask16)-1); })
4773
4774#define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004775 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004776 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004777 (__mmask8)-1); })
4778
4779#define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004780 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004781 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004782 (__mmask8)-1); })
4783
4784#define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004785 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004786 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004787 (__mmask16)(m)); })
4788
4789#define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004790 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004791 (__v16si)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004792 (__mmask16)(m)); })
4793
4794#define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004795 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004796 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004797 (__mmask8)(m)); })
4798
4799#define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
Craig Topper3a71f352015-11-29 06:50:33 +00004800 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)(__m512i)(a), \
Craig Topper8c18e112016-05-17 04:41:50 +00004801 (__v8di)(__m512i)(b), (int)(p), \
Craig Topper4cac1c22015-01-25 23:30:07 +00004802 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00004803
Michael Zuckerman38a27272016-02-22 09:05:41 +00004804#define _mm512_rol_epi32(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004805 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4806 (__v16si)_mm512_setzero_si512(), \
4807 (__mmask16)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004808
4809#define _mm512_mask_rol_epi32(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004810 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4811 (__v16si)(__m512i)(W), \
4812 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004813
4814#define _mm512_maskz_rol_epi32(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004815 (__m512i)__builtin_ia32_prold512_mask((__v16si)(__m512i)(a), (int)(b), \
4816 (__v16si)_mm512_setzero_si512(), \
4817 (__mmask16)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004818
4819#define _mm512_rol_epi64(a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004820 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4821 (__v8di)_mm512_setzero_si512(), \
4822 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004823
4824#define _mm512_mask_rol_epi64(W, U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004825 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4826 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004827
4828#define _mm512_maskz_rol_epi64(U, a, b) __extension__ ({ \
Craig Topper8c18e112016-05-17 04:41:50 +00004829 (__m512i)__builtin_ia32_prolq512_mask((__v8di)(__m512i)(a), (int)(b), \
4830 (__v8di)_mm512_setzero_si512(), \
4831 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004832static __inline__ __m512i __DEFAULT_FN_ATTRS
4833_mm512_rolv_epi32 (__m512i __A, __m512i __B)
4834{
4835 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4836 (__v16si) __B,
4837 (__v16si)
4838 _mm512_setzero_si512 (),
4839 (__mmask16) -1);
4840}
4841
4842static __inline__ __m512i __DEFAULT_FN_ATTRS
4843_mm512_mask_rolv_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
4844{
4845 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4846 (__v16si) __B,
4847 (__v16si) __W,
4848 (__mmask16) __U);
4849}
4850
4851static __inline__ __m512i __DEFAULT_FN_ATTRS
4852_mm512_maskz_rolv_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
4853{
4854 return (__m512i) __builtin_ia32_prolvd512_mask ((__v16si) __A,
4855 (__v16si) __B,
4856 (__v16si)
4857 _mm512_setzero_si512 (),
4858 (__mmask16) __U);
4859}
4860
4861static __inline__ __m512i __DEFAULT_FN_ATTRS
4862_mm512_rolv_epi64 (__m512i __A, __m512i __B)
4863{
4864 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4865 (__v8di) __B,
4866 (__v8di)
4867 _mm512_setzero_si512 (),
4868 (__mmask8) -1);
4869}
4870
4871static __inline__ __m512i __DEFAULT_FN_ATTRS
4872_mm512_mask_rolv_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
4873{
4874 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4875 (__v8di) __B,
4876 (__v8di) __W,
4877 (__mmask8) __U);
4878}
4879
4880static __inline__ __m512i __DEFAULT_FN_ATTRS
4881_mm512_maskz_rolv_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
4882{
4883 return (__m512i) __builtin_ia32_prolvq512_mask ((__v8di) __A,
4884 (__v8di) __B,
4885 (__v8di)
4886 _mm512_setzero_si512 (),
4887 (__mmask8) __U);
4888}
4889
Craig Topper8c18e112016-05-17 04:41:50 +00004890#define _mm512_ror_epi32(A, B) __extension__ ({ \
4891 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4892 (__v16si)_mm512_setzero_si512(), \
4893 (__mmask16)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004894
Craig Topper8c18e112016-05-17 04:41:50 +00004895#define _mm512_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4896 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4897 (__v16si)(__m512i)(W), \
4898 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004899
Craig Topper8c18e112016-05-17 04:41:50 +00004900#define _mm512_maskz_ror_epi32(U, A, B) __extension__ ({ \
4901 (__m512i)__builtin_ia32_prord512_mask((__v16si)(__m512i)(A), (int)(B), \
4902 (__v16si)_mm512_setzero_si512(), \
4903 (__mmask16)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004904
Craig Topper8c18e112016-05-17 04:41:50 +00004905#define _mm512_ror_epi64(A, B) __extension__ ({ \
4906 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4907 (__v8di)_mm512_setzero_si512(), \
4908 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004909
Craig Topper8c18e112016-05-17 04:41:50 +00004910#define _mm512_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4911 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4912 (__v8di)(__m512i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004913
Craig Topper8c18e112016-05-17 04:41:50 +00004914#define _mm512_maskz_ror_epi64(U, A, B) __extension__ ({ \
4915 (__m512i)__builtin_ia32_prorq512_mask((__v8di)(__m512i)(A), (int)(B), \
4916 (__v8di)_mm512_setzero_si512(), \
4917 (__mmask8)(U)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004918
Craig Topper8c18e112016-05-17 04:41:50 +00004919#define _mm512_slli_epi32(A, B) __extension__ ({ \
4920 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4921 (__v16si)_mm512_setzero_si512(), \
4922 (__mmask16)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004923
Craig Topper8c18e112016-05-17 04:41:50 +00004924#define _mm512_mask_slli_epi32(W, U, A, B) __extension__ ({ \
4925 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4926 (__v16si)(__m512i)(W), \
4927 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004928
Craig Topper8c18e112016-05-17 04:41:50 +00004929#define _mm512_maskz_slli_epi32(U, A, B) __extension__ ({ \
4930 (__m512i)__builtin_ia32_pslldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4931 (__v16si)_mm512_setzero_si512(), \
4932 (__mmask16)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004933
Craig Topper8c18e112016-05-17 04:41:50 +00004934#define _mm512_slli_epi64(A, B) __extension__ ({ \
4935 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4936 (__v8di)_mm512_setzero_si512(), \
4937 (__mmask8)-1); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004938
Craig Topper8c18e112016-05-17 04:41:50 +00004939#define _mm512_mask_slli_epi64(W, U, A, B) __extension__ ({ \
4940 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4941 (__v8di)(__m512i)(W), \
4942 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004943
Craig Topper8c18e112016-05-17 04:41:50 +00004944#define _mm512_maskz_slli_epi64(U, A, B) __extension__ ({ \
4945 (__m512i)__builtin_ia32_psllqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4946 (__v8di)_mm512_setzero_si512(), \
4947 (__mmask8)(U)); })
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004948
Michael Zuckerman38a27272016-02-22 09:05:41 +00004949
Michael Zuckermand176d742016-03-01 17:49:03 +00004950
Craig Topper8c18e112016-05-17 04:41:50 +00004951#define _mm512_srli_epi32(A, B) __extension__ ({ \
4952 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4953 (__v16si)_mm512_setzero_si512(), \
4954 (__mmask16)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004955
Craig Topper8c18e112016-05-17 04:41:50 +00004956#define _mm512_mask_srli_epi32(W, U, A, B) __extension__ ({ \
4957 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4958 (__v16si)(__m512i)(W), \
4959 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004960
Craig Topper8c18e112016-05-17 04:41:50 +00004961#define _mm512_maskz_srli_epi32(U, A, B) __extension__ ({ \
4962 (__m512i)__builtin_ia32_psrldi512_mask((__v16si)(__m512i)(A), (int)(B), \
4963 (__v16si)_mm512_setzero_si512(), \
4964 (__mmask16)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004965
Craig Topper8c18e112016-05-17 04:41:50 +00004966#define _mm512_srli_epi64(A, B) __extension__ ({ \
4967 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4968 (__v8di)_mm512_setzero_si512(), \
4969 (__mmask8)-1); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004970
Craig Topper8c18e112016-05-17 04:41:50 +00004971#define _mm512_mask_srli_epi64(W, U, A, B) __extension__ ({ \
4972 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4973 (__v8di)(__m512i)(W), \
4974 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004975
Craig Topper8c18e112016-05-17 04:41:50 +00004976#define _mm512_maskz_srli_epi64(U, A, B) __extension__ ({ \
4977 (__m512i)__builtin_ia32_psrlqi512_mask((__v8di)(__m512i)(A), (int)(B), \
4978 (__v8di)_mm512_setzero_si512(), \
4979 (__mmask8)(U)); })
Michael Zuckermand176d742016-03-01 17:49:03 +00004980
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004981static __inline__ __m512i __DEFAULT_FN_ATTRS
4982_mm512_mask_load_epi32 (__m512i __W, __mmask16 __U, void const *__P)
4983{
4984 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4985 (__v16si) __W,
4986 (__mmask16) __U);
4987}
4988
4989static __inline__ __m512i __DEFAULT_FN_ATTRS
4990_mm512_maskz_load_epi32 (__mmask16 __U, void const *__P)
4991{
4992 return (__m512i) __builtin_ia32_movdqa32load512_mask ((const __v16si *) __P,
4993 (__v16si)
4994 _mm512_setzero_si512 (),
4995 (__mmask16) __U);
4996}
4997
4998static __inline__ void __DEFAULT_FN_ATTRS
4999_mm512_mask_store_epi32 (void *__P, __mmask16 __U, __m512i __A)
5000{
5001 __builtin_ia32_movdqa32store512_mask ((__v16si *) __P, (__v16si) __A,
5002 (__mmask16) __U);
5003}
5004
5005static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermane6542002016-05-23 08:01:48 +00005006_mm512_mask_mov_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
5007{
5008 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5009 (__v16si) __W,
5010 (__mmask16) __U);
5011}
5012
5013static __inline__ __m512i __DEFAULT_FN_ATTRS
5014_mm512_maskz_mov_epi32 (__mmask16 __U, __m512i __A)
5015{
5016 return (__m512i) __builtin_ia32_movdqa32_512_mask ((__v16si) __A,
5017 (__v16si)
5018 _mm512_setzero_si512 (),
5019 (__mmask16) __U);
5020}
5021
5022static __inline__ __m512i __DEFAULT_FN_ATTRS
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005023_mm512_mask_mov_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
5024{
5025 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5026 (__v8di) __W,
5027 (__mmask8) __U);
5028}
5029
5030static __inline__ __m512i __DEFAULT_FN_ATTRS
5031_mm512_maskz_mov_epi64 (__mmask8 __U, __m512i __A)
5032{
5033 return (__m512i) __builtin_ia32_movdqa64_512_mask ((__v8di) __A,
5034 (__v8di)
5035 _mm512_setzero_si512 (),
5036 (__mmask8) __U);
5037}
5038
5039static __inline__ __m512i __DEFAULT_FN_ATTRS
5040_mm512_mask_load_epi64 (__m512i __W, __mmask8 __U, void const *__P)
5041{
5042 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5043 (__v8di) __W,
5044 (__mmask8) __U);
5045}
5046
5047static __inline__ __m512i __DEFAULT_FN_ATTRS
5048_mm512_maskz_load_epi64 (__mmask8 __U, void const *__P)
5049{
5050 return (__m512i) __builtin_ia32_movdqa64load512_mask ((const __v8di *) __P,
5051 (__v8di)
5052 _mm512_setzero_si512 (),
5053 (__mmask8) __U);
5054}
5055
5056static __inline__ void __DEFAULT_FN_ATTRS
5057_mm512_mask_store_epi64 (void *__P, __mmask8 __U, __m512i __A)
5058{
5059 __builtin_ia32_movdqa64store512_mask ((__v8di *) __P, (__v8di) __A,
5060 (__mmask8) __U);
5061}
5062
5063
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005064
5065static __inline__ __m512d __DEFAULT_FN_ATTRS
5066_mm512_movedup_pd (__m512d __A)
5067{
5068 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5069 (__v8df)
5070 _mm512_undefined_pd (),
5071 (__mmask8) -1);
5072}
5073
5074static __inline__ __m512d __DEFAULT_FN_ATTRS
5075_mm512_mask_movedup_pd (__m512d __W, __mmask8 __U, __m512d __A)
5076{
5077 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5078 (__v8df) __W,
5079 (__mmask8) __U);
5080}
5081
5082static __inline__ __m512d __DEFAULT_FN_ATTRS
5083_mm512_maskz_movedup_pd (__mmask8 __U, __m512d __A)
5084{
5085 return (__m512d) __builtin_ia32_movddup512_mask ((__v8df) __A,
5086 (__v8df)
5087 _mm512_setzero_pd (),
5088 (__mmask8) __U);
5089}
5090
Craig Topper8c18e112016-05-17 04:41:50 +00005091#define _mm512_fixupimm_round_pd(A, B, C, imm, R) __extension__ ({ \
5092 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5093 (__v8df)(__m512d)(B), \
5094 (__v8di)(__m512i)(C), (int)(imm), \
5095 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005096
Craig Topper8c18e112016-05-17 04:41:50 +00005097#define _mm512_mask_fixupimm_round_pd(A, U, B, C, imm, R) __extension__ ({ \
5098 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5099 (__v8df)(__m512d)(B), \
5100 (__v8di)(__m512i)(C), (int)(imm), \
5101 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005102
Craig Topper8c18e112016-05-17 04:41:50 +00005103#define _mm512_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5104 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5105 (__v8df)(__m512d)(B), \
5106 (__v8di)(__m512i)(C), (int)(imm), \
5107 (__mmask8)-1, \
5108 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005109
Craig Topper8c18e112016-05-17 04:41:50 +00005110#define _mm512_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5111 (__m512d)__builtin_ia32_fixupimmpd512_mask((__v8df)(__m512d)(A), \
5112 (__v8df)(__m512d)(B), \
5113 (__v8di)(__m512i)(C), (int)(imm), \
5114 (__mmask8)(U), \
5115 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005116
Craig Topper8c18e112016-05-17 04:41:50 +00005117#define _mm512_maskz_fixupimm_round_pd(U, A, B, C, imm, R) __extension__ ({ \
5118 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5119 (__v8df)(__m512d)(B), \
5120 (__v8di)(__m512i)(C), \
5121 (int)(imm), (__mmask8)(U), \
5122 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005123
Craig Topper8c18e112016-05-17 04:41:50 +00005124#define _mm512_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5125 (__m512d)__builtin_ia32_fixupimmpd512_maskz((__v8df)(__m512d)(A), \
5126 (__v8df)(__m512d)(B), \
5127 (__v8di)(__m512i)(C), \
5128 (int)(imm), (__mmask8)(U), \
5129 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005130
Craig Topper8c18e112016-05-17 04:41:50 +00005131#define _mm512_fixupimm_round_ps(A, B, C, imm, R) __extension__ ({ \
5132 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5133 (__v16sf)(__m512)(B), \
5134 (__v16si)(__m512i)(C), (int)(imm), \
5135 (__mmask16)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005136
Craig Topper8c18e112016-05-17 04:41:50 +00005137#define _mm512_mask_fixupimm_round_ps(A, U, B, C, imm, R) __extension__ ({ \
5138 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5139 (__v16sf)(__m512)(B), \
5140 (__v16si)(__m512i)(C), (int)(imm), \
5141 (__mmask16)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005142
Craig Topper8c18e112016-05-17 04:41:50 +00005143#define _mm512_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5144 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5145 (__v16sf)(__m512)(B), \
5146 (__v16si)(__m512i)(C), (int)(imm), \
5147 (__mmask16)-1, \
5148 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005149
Craig Topper8c18e112016-05-17 04:41:50 +00005150#define _mm512_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5151 (__m512)__builtin_ia32_fixupimmps512_mask((__v16sf)(__m512)(A), \
5152 (__v16sf)(__m512)(B), \
5153 (__v16si)(__m512i)(C), (int)(imm), \
5154 (__mmask16)(U), \
5155 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005156
Craig Topper8c18e112016-05-17 04:41:50 +00005157#define _mm512_maskz_fixupimm_round_ps(U, A, B, C, imm, R) __extension__ ({ \
5158 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5159 (__v16sf)(__m512)(B), \
5160 (__v16si)(__m512i)(C), \
5161 (int)(imm), (__mmask16)(U), \
5162 (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005163
Craig Topper8c18e112016-05-17 04:41:50 +00005164#define _mm512_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5165 (__m512)__builtin_ia32_fixupimmps512_maskz((__v16sf)(__m512)(A), \
5166 (__v16sf)(__m512)(B), \
5167 (__v16si)(__m512i)(C), \
5168 (int)(imm), (__mmask16)(U), \
5169 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005170
Craig Topper8c18e112016-05-17 04:41:50 +00005171#define _mm_fixupimm_round_sd(A, B, C, imm, R) __extension__ ({ \
5172 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5173 (__v2df)(__m128d)(B), \
5174 (__v2di)(__m128i)(C), (int)(imm), \
5175 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005176
Craig Topper8c18e112016-05-17 04:41:50 +00005177#define _mm_mask_fixupimm_round_sd(A, U, B, C, imm, R) __extension__ ({ \
5178 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5179 (__v2df)(__m128d)(B), \
5180 (__v2di)(__m128i)(C), (int)(imm), \
5181 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005182
Craig Topper8c18e112016-05-17 04:41:50 +00005183#define _mm_fixupimm_sd(A, B, C, imm) __extension__ ({ \
5184 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5185 (__v2df)(__m128d)(B), \
5186 (__v2di)(__m128i)(C), (int)(imm), \
5187 (__mmask8)-1, \
5188 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005189
Craig Topper8c18e112016-05-17 04:41:50 +00005190#define _mm_mask_fixupimm_sd(A, U, B, C, imm) __extension__ ({ \
5191 (__m128d)__builtin_ia32_fixupimmsd_mask((__v2df)(__m128d)(A), \
5192 (__v2df)(__m128d)(B), \
5193 (__v2di)(__m128i)(C), (int)(imm), \
5194 (__mmask8)(U), \
5195 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005196
Craig Topper8c18e112016-05-17 04:41:50 +00005197#define _mm_maskz_fixupimm_round_sd(U, A, B, C, imm, R) __extension__ ({ \
5198 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5199 (__v2df)(__m128d)(B), \
5200 (__v2di)(__m128i)(C), (int)(imm), \
5201 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005202
Craig Topper8c18e112016-05-17 04:41:50 +00005203#define _mm_maskz_fixupimm_sd(U, A, B, C, imm) __extension__ ({ \
5204 (__m128d)__builtin_ia32_fixupimmsd_maskz((__v2df)(__m128d)(A), \
5205 (__v2df)(__m128d)(B), \
5206 (__v2di)(__m128i)(C), (int)(imm), \
5207 (__mmask8)(U), \
5208 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005209
Craig Topper8c18e112016-05-17 04:41:50 +00005210#define _mm_fixupimm_round_ss(A, B, C, imm, R) __extension__ ({ \
5211 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5212 (__v4sf)(__m128)(B), \
5213 (__v4si)(__m128i)(C), (int)(imm), \
5214 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005215
Craig Topper8c18e112016-05-17 04:41:50 +00005216#define _mm_mask_fixupimm_round_ss(A, U, B, C, imm, R) __extension__ ({ \
5217 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5218 (__v4sf)(__m128)(B), \
5219 (__v4si)(__m128i)(C), (int)(imm), \
5220 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005221
Craig Topper8c18e112016-05-17 04:41:50 +00005222#define _mm_fixupimm_ss(A, B, C, imm) __extension__ ({ \
5223 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5224 (__v4sf)(__m128)(B), \
5225 (__v4si)(__m128i)(C), (int)(imm), \
5226 (__mmask8)-1, \
5227 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005228
Craig Topper8c18e112016-05-17 04:41:50 +00005229#define _mm_mask_fixupimm_ss(A, U, B, C, imm) __extension__ ({ \
5230 (__m128)__builtin_ia32_fixupimmss_mask((__v4sf)(__m128)(A), \
5231 (__v4sf)(__m128)(B), \
5232 (__v4si)(__m128i)(C), (int)(imm), \
5233 (__mmask8)(U), \
5234 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005235
Craig Topper8c18e112016-05-17 04:41:50 +00005236#define _mm_maskz_fixupimm_round_ss(U, A, B, C, imm, R) __extension__ ({ \
5237 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5238 (__v4sf)(__m128)(B), \
5239 (__v4si)(__m128i)(C), (int)(imm), \
5240 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005241
Craig Topper8c18e112016-05-17 04:41:50 +00005242#define _mm_maskz_fixupimm_ss(U, A, B, C, imm) __extension__ ({ \
5243 (__m128)__builtin_ia32_fixupimmss_maskz((__v4sf)(__m128)(A), \
5244 (__v4sf)(__m128)(B), \
5245 (__v4si)(__m128i)(C), (int)(imm), \
5246 (__mmask8)(U), \
5247 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005248
Craig Topper8c18e112016-05-17 04:41:50 +00005249#define _mm_getexp_round_sd(A, B, R) __extension__ ({ \
5250 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5251 (__v2df)(__m128d)(B), \
5252 (__v2df)_mm_setzero_pd(), \
5253 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005254
5255
5256static __inline__ __m128d __DEFAULT_FN_ATTRS
5257_mm_getexp_sd (__m128d __A, __m128d __B)
5258{
5259 return (__m128d) __builtin_ia32_getexpsd128_round_mask ((__v2df) __A,
5260 (__v2df) __B, (__v2df) _mm_setzero_pd(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5261}
5262
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005263static __inline__ __m128d __DEFAULT_FN_ATTRS
5264_mm_mask_getexp_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
5265{
5266 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5267 (__v2df) __B,
5268 (__v2df) __W,
5269 (__mmask8) __U,
5270 _MM_FROUND_CUR_DIRECTION);
5271}
5272
Craig Topper8c18e112016-05-17 04:41:50 +00005273#define _mm_mask_getexp_round_sd(W, U, A, B, R) __extension__ ({\
5274 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5275 (__v2df)(__m128d)(B), \
5276 (__v2df)(__m128d)(W), \
5277 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005278
5279static __inline__ __m128d __DEFAULT_FN_ATTRS
5280_mm_maskz_getexp_sd (__mmask8 __U, __m128d __A, __m128d __B)
5281{
5282 return (__m128d) __builtin_ia32_getexpsd128_round_mask ( (__v2df) __A,
5283 (__v2df) __B,
5284 (__v2df) _mm_setzero_pd (),
5285 (__mmask8) __U,
5286 _MM_FROUND_CUR_DIRECTION);
5287}
5288
Craig Topper8c18e112016-05-17 04:41:50 +00005289#define _mm_maskz_getexp_round_sd(U, A, B, R) __extension__ ({\
5290 (__m128d)__builtin_ia32_getexpsd128_round_mask((__v2df)(__m128d)(A), \
5291 (__v2df)(__m128d)(B), \
5292 (__v2df)_mm_setzero_pd(), \
5293 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005294
Craig Topper8c18e112016-05-17 04:41:50 +00005295#define _mm_getexp_round_ss(A, B, R) __extension__ ({ \
5296 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5297 (__v4sf)(__m128)(B), \
5298 (__v4sf)_mm_setzero_ps(), \
5299 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005300
5301static __inline__ __m128 __DEFAULT_FN_ATTRS
5302_mm_getexp_ss (__m128 __A, __m128 __B)
5303{
5304 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
5305 (__v4sf) __B, (__v4sf) _mm_setzero_ps(), (__mmask8) -1, _MM_FROUND_CUR_DIRECTION);
5306}
5307
Craig Topper58187d32016-05-17 04:41:29 +00005308static __inline__ __m128 __DEFAULT_FN_ATTRS
5309_mm_mask_getexp_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005310{
Craig Topper58187d32016-05-17 04:41:29 +00005311 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005312 (__v4sf) __B,
5313 (__v4sf) __W,
5314 (__mmask8) __U,
5315 _MM_FROUND_CUR_DIRECTION);
5316}
5317
Craig Topper8c18e112016-05-17 04:41:50 +00005318#define _mm_mask_getexp_round_ss(W, U, A, B, R) __extension__ ({\
5319 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5320 (__v4sf)(__m128)(B), \
5321 (__v4sf)(__m128)(W), \
5322 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005323
Craig Topper58187d32016-05-17 04:41:29 +00005324static __inline__ __m128 __DEFAULT_FN_ATTRS
5325_mm_maskz_getexp_ss (__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005326{
Craig Topper58187d32016-05-17 04:41:29 +00005327 return (__m128) __builtin_ia32_getexpss128_round_mask ((__v4sf) __A,
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005328 (__v4sf) __B,
5329 (__v4sf) _mm_setzero_pd (),
5330 (__mmask8) __U,
5331 _MM_FROUND_CUR_DIRECTION);
5332}
5333
Craig Topper8c18e112016-05-17 04:41:50 +00005334#define _mm_maskz_getexp_round_ss(U, A, B, R) __extension__ ({\
5335 (__m128)__builtin_ia32_getexpss128_round_mask((__v4sf)(__m128)(A), \
5336 (__v4sf)(__m128)(B), \
5337 (__v4sf)_mm_setzero_ps(), \
5338 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005339
Craig Topper8c18e112016-05-17 04:41:50 +00005340#define _mm_getmant_round_sd(A, B, C, D, R) __extension__ ({ \
5341 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5342 (__v2df)(__m128d)(B), \
5343 (int)(((D)<<2) | (C)), \
5344 (__v2df)_mm_setzero_pd(), \
5345 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005346
Craig Topper8c18e112016-05-17 04:41:50 +00005347#define _mm_getmant_sd(A, B, C, D) __extension__ ({ \
5348 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5349 (__v2df)(__m128d)(B), \
5350 (int)(((D)<<2) | (C)), \
5351 (__v2df)_mm_setzero_pd(), \
5352 (__mmask8)-1, \
5353 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005354
Craig Topper8c18e112016-05-17 04:41:50 +00005355#define _mm_mask_getmant_sd(W, U, A, B, C, D) __extension__ ({\
5356 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5357 (__v2df)(__m128d)(B), \
5358 (int)(((D)<<2) | (C)), \
5359 (__v2df)(__m128d)(W), \
5360 (__mmask8)(U), \
5361 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005362
Craig Topper8c18e112016-05-17 04:41:50 +00005363#define _mm_mask_getmant_round_sd(W, U, A, B, C, D, R)({\
5364 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5365 (__v2df)(__m128d)(B), \
5366 (int)(((D)<<2) | (C)), \
5367 (__v2df)(__m128d)(W), \
5368 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005369
Craig Topper8c18e112016-05-17 04:41:50 +00005370#define _mm_maskz_getmant_sd(U, A, B, C, D) __extension__ ({\
5371 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5372 (__v2df)(__m128d)(B), \
5373 (int)(((D)<<2) | (C)), \
5374 (__v2df)_mm_setzero_pd(), \
5375 (__mmask8)(U), \
5376 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005377
Craig Topper8c18e112016-05-17 04:41:50 +00005378#define _mm_maskz_getmant_round_sd(U, A, B, C, D, R) __extension__ ({\
5379 (__m128d)__builtin_ia32_getmantsd_round_mask((__v2df)(__m128d)(A), \
5380 (__v2df)(__m128d)(B), \
5381 (int)(((D)<<2) | (C)), \
5382 (__v2df)_mm_setzero_pd(), \
5383 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005384
Craig Topper8c18e112016-05-17 04:41:50 +00005385#define _mm_getmant_round_ss(A, B, C, D, R) __extension__ ({ \
5386 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5387 (__v4sf)(__m128)(B), \
5388 (int)(((D)<<2) | (C)), \
5389 (__v4sf)_mm_setzero_ps(), \
5390 (__mmask8)-1, (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005391
Craig Topper8c18e112016-05-17 04:41:50 +00005392#define _mm_getmant_ss(A, B, C, D) __extension__ ({ \
5393 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5394 (__v4sf)(__m128)(B), \
5395 (int)(((D)<<2) | (C)), \
5396 (__v4sf)_mm_setzero_ps(), \
5397 (__mmask8)-1, \
5398 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005399
Craig Topper8c18e112016-05-17 04:41:50 +00005400#define _mm_mask_getmant_ss(W, U, A, B, C, D) __extension__ ({\
5401 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5402 (__v4sf)(__m128)(B), \
5403 (int)(((D)<<2) | (C)), \
5404 (__v4sf)(__m128)(W), \
5405 (__mmask8)(U), \
5406 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005407
Craig Topper8c18e112016-05-17 04:41:50 +00005408#define _mm_mask_getmant_round_ss(W, U, A, B, C, D, R)({\
5409 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5410 (__v4sf)(__m128)(B), \
5411 (int)(((D)<<2) | (C)), \
5412 (__v4sf)(__m128)(W), \
5413 (__mmask8)(U), (int)(R)); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005414
Craig Topper8c18e112016-05-17 04:41:50 +00005415#define _mm_maskz_getmant_ss(U, A, B, C, D) __extension__ ({\
5416 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5417 (__v4sf)(__m128)(B), \
5418 (int)(((D)<<2) | (C)), \
5419 (__v4sf)_mm_setzero_pd(), \
5420 (__mmask8)(U), \
5421 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckermana1ceca22016-04-22 10:06:10 +00005422
Craig Topper8c18e112016-05-17 04:41:50 +00005423#define _mm_maskz_getmant_round_ss(U, A, B, C, D, R) __extension__ ({\
5424 (__m128)__builtin_ia32_getmantss_round_mask((__v4sf)(__m128)(A), \
5425 (__v4sf)(__m128)(B), \
5426 (int)(((D)<<2) | (C)), \
5427 (__v4sf)_mm_setzero_ps(), \
5428 (__mmask8)(U), (int)(R)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005429
5430static __inline__ __mmask16 __DEFAULT_FN_ATTRS
5431_mm512_kmov (__mmask16 __A)
5432{
5433 return __A;
5434}
5435
Craig Topper8c18e112016-05-17 04:41:50 +00005436#define _mm_comi_round_sd(A, B, P, R) __extension__ ({\
5437 (int)__builtin_ia32_vcomisd((__v2df)(__m128d)(A), (__v2df)(__m128d)(B), \
5438 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005439
Craig Topper8c18e112016-05-17 04:41:50 +00005440#define _mm_comi_round_ss(A, B, P, R) __extension__ ({\
5441 (int)__builtin_ia32_vcomiss((__v4sf)(__m128)(A), (__v4sf)(__m128)(B), \
5442 (int)(P), (int)(R)); })
Michael Zuckermane71d59f2016-03-07 19:15:00 +00005443
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005444static __inline__ __m512d __DEFAULT_FN_ATTRS
5445_mm512_mask_unpackhi_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5446{
5447 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5448 (__v8df) __B,
5449 (__v8df) __W,
5450 (__mmask8) __U);
5451}
Craig Topper8c18e112016-05-17 04:41:50 +00005452#define _mm_cvt_roundsd_si64(A, R) __extension__ ({ \
5453 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005454static __inline__ __m512i __DEFAULT_FN_ATTRS
5455_mm512_mask2_permutex2var_epi32 (__m512i __A, __m512i __I,
5456 __mmask16 __U, __m512i __B)
5457{
5458 return (__m512i) __builtin_ia32_vpermi2vard512_mask ((__v16si) __A,
5459 (__v16si) __I
5460 /* idx */ ,
5461 (__v16si) __B,
5462 (__mmask16) __U);
5463}
Michael Zuckerman1af947a2016-04-11 12:32:31 +00005464static __inline__ __m512i __DEFAULT_FN_ATTRS
5465_mm512_unpackhi_epi32 (__m512i __A, __m512i __B)
5466{
5467 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
5468 (__v16si) __B,
5469 (__v16si)
5470 _mm512_setzero_si512 (),
5471 (__mmask16) -1);
5472}
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005473
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005474static __inline__ __m512i __DEFAULT_FN_ATTRS
5475_mm512_sll_epi32 (__m512i __A, __m128i __B)
5476{
5477 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5478 (__v4si) __B,
5479 (__v16si)
5480 _mm512_setzero_si512 (),
5481 (__mmask16) -1);
5482}
5483
5484static __inline__ __m512i __DEFAULT_FN_ATTRS
5485_mm512_mask_sll_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5486{
5487 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5488 (__v4si) __B,
5489 (__v16si) __W,
5490 (__mmask16) __U);
5491}
5492
5493static __inline__ __m512i __DEFAULT_FN_ATTRS
5494_mm512_maskz_sll_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5495{
5496 return (__m512i) __builtin_ia32_pslld512_mask ((__v16si) __A,
5497 (__v4si) __B,
5498 (__v16si)
5499 _mm512_setzero_si512 (),
5500 (__mmask16) __U);
5501}
5502
5503static __inline__ __m512i __DEFAULT_FN_ATTRS
5504_mm512_sll_epi64 (__m512i __A, __m128i __B)
5505{
5506 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5507 (__v2di) __B,
5508 (__v8di)
5509 _mm512_setzero_si512 (),
5510 (__mmask8) -1);
5511}
5512
5513static __inline__ __m512i __DEFAULT_FN_ATTRS
5514_mm512_mask_sll_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5515{
5516 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5517 (__v2di) __B,
5518 (__v8di) __W,
5519 (__mmask8) __U);
5520}
5521
5522static __inline__ __m512i __DEFAULT_FN_ATTRS
5523_mm512_maskz_sll_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5524{
5525 return (__m512i) __builtin_ia32_psllq512_mask ((__v8di) __A,
5526 (__v2di) __B,
5527 (__v8di)
5528 _mm512_setzero_si512 (),
5529 (__mmask8) __U);
5530}
5531
5532static __inline__ __m512i __DEFAULT_FN_ATTRS
5533_mm512_sllv_epi32 (__m512i __X, __m512i __Y)
5534{
5535 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5536 (__v16si) __Y,
5537 (__v16si)
5538 _mm512_setzero_si512 (),
5539 (__mmask16) -1);
5540}
5541
5542static __inline__ __m512i __DEFAULT_FN_ATTRS
5543_mm512_mask_sllv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5544{
5545 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5546 (__v16si) __Y,
5547 (__v16si) __W,
5548 (__mmask16) __U);
5549}
5550
5551static __inline__ __m512i __DEFAULT_FN_ATTRS
5552_mm512_maskz_sllv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5553{
5554 return (__m512i) __builtin_ia32_psllv16si_mask ((__v16si) __X,
5555 (__v16si) __Y,
5556 (__v16si)
5557 _mm512_setzero_si512 (),
5558 (__mmask16) __U);
5559}
5560
5561static __inline__ __m512i __DEFAULT_FN_ATTRS
5562_mm512_sllv_epi64 (__m512i __X, __m512i __Y)
5563{
5564 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5565 (__v8di) __Y,
5566 (__v8di)
5567 _mm512_undefined_pd (),
5568 (__mmask8) -1);
5569}
5570
5571static __inline__ __m512i __DEFAULT_FN_ATTRS
5572_mm512_mask_sllv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5573{
5574 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5575 (__v8di) __Y,
5576 (__v8di) __W,
5577 (__mmask8) __U);
5578}
5579
5580static __inline__ __m512i __DEFAULT_FN_ATTRS
5581_mm512_maskz_sllv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5582{
5583 return (__m512i) __builtin_ia32_psllv8di_mask ((__v8di) __X,
5584 (__v8di) __Y,
5585 (__v8di)
5586 _mm512_setzero_si512 (),
5587 (__mmask8) __U);
5588}
5589
5590static __inline__ __m512i __DEFAULT_FN_ATTRS
5591_mm512_sra_epi32 (__m512i __A, __m128i __B)
5592{
5593 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5594 (__v4si) __B,
5595 (__v16si)
5596 _mm512_setzero_si512 (),
5597 (__mmask16) -1);
5598}
5599
5600static __inline__ __m512i __DEFAULT_FN_ATTRS
5601_mm512_mask_sra_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5602{
5603 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5604 (__v4si) __B,
5605 (__v16si) __W,
5606 (__mmask16) __U);
5607}
5608
5609static __inline__ __m512i __DEFAULT_FN_ATTRS
5610_mm512_maskz_sra_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5611{
5612 return (__m512i) __builtin_ia32_psrad512_mask ((__v16si) __A,
5613 (__v4si) __B,
5614 (__v16si)
5615 _mm512_setzero_si512 (),
5616 (__mmask16) __U);
5617}
5618
5619static __inline__ __m512i __DEFAULT_FN_ATTRS
5620_mm512_sra_epi64 (__m512i __A, __m128i __B)
5621{
5622 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5623 (__v2di) __B,
5624 (__v8di)
5625 _mm512_setzero_si512 (),
5626 (__mmask8) -1);
5627}
5628
5629static __inline__ __m512i __DEFAULT_FN_ATTRS
5630_mm512_mask_sra_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5631{
5632 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5633 (__v2di) __B,
5634 (__v8di) __W,
5635 (__mmask8) __U);
5636}
5637
5638static __inline__ __m512i __DEFAULT_FN_ATTRS
5639_mm512_maskz_sra_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5640{
5641 return (__m512i) __builtin_ia32_psraq512_mask ((__v8di) __A,
5642 (__v2di) __B,
5643 (__v8di)
5644 _mm512_setzero_si512 (),
5645 (__mmask8) __U);
5646}
5647
5648static __inline__ __m512i __DEFAULT_FN_ATTRS
5649_mm512_srav_epi32 (__m512i __X, __m512i __Y)
5650{
5651 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5652 (__v16si) __Y,
5653 (__v16si)
5654 _mm512_setzero_si512 (),
5655 (__mmask16) -1);
5656}
5657
5658static __inline__ __m512i __DEFAULT_FN_ATTRS
5659_mm512_mask_srav_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5660{
5661 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5662 (__v16si) __Y,
5663 (__v16si) __W,
5664 (__mmask16) __U);
5665}
5666
5667static __inline__ __m512i __DEFAULT_FN_ATTRS
5668_mm512_maskz_srav_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5669{
5670 return (__m512i) __builtin_ia32_psrav16si_mask ((__v16si) __X,
5671 (__v16si) __Y,
5672 (__v16si)
5673 _mm512_setzero_si512 (),
5674 (__mmask16) __U);
5675}
5676
5677static __inline__ __m512i __DEFAULT_FN_ATTRS
5678_mm512_srav_epi64 (__m512i __X, __m512i __Y)
5679{
5680 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5681 (__v8di) __Y,
5682 (__v8di)
5683 _mm512_setzero_si512 (),
5684 (__mmask8) -1);
5685}
5686
5687static __inline__ __m512i __DEFAULT_FN_ATTRS
5688_mm512_mask_srav_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5689{
5690 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5691 (__v8di) __Y,
5692 (__v8di) __W,
5693 (__mmask8) __U);
5694}
5695
5696static __inline__ __m512i __DEFAULT_FN_ATTRS
5697_mm512_maskz_srav_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5698{
5699 return (__m512i) __builtin_ia32_psrav8di_mask ((__v8di) __X,
5700 (__v8di) __Y,
5701 (__v8di)
5702 _mm512_setzero_si512 (),
5703 (__mmask8) __U);
5704}
5705
5706static __inline__ __m512i __DEFAULT_FN_ATTRS
5707_mm512_srl_epi32 (__m512i __A, __m128i __B)
5708{
5709 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5710 (__v4si) __B,
5711 (__v16si)
5712 _mm512_setzero_si512 (),
5713 (__mmask16) -1);
5714}
5715
5716static __inline__ __m512i __DEFAULT_FN_ATTRS
5717_mm512_mask_srl_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m128i __B)
5718{
5719 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5720 (__v4si) __B,
5721 (__v16si) __W,
5722 (__mmask16) __U);
5723}
5724
5725static __inline__ __m512i __DEFAULT_FN_ATTRS
5726_mm512_maskz_srl_epi32 (__mmask16 __U, __m512i __A, __m128i __B)
5727{
5728 return (__m512i) __builtin_ia32_psrld512_mask ((__v16si) __A,
5729 (__v4si) __B,
5730 (__v16si)
5731 _mm512_setzero_si512 (),
5732 (__mmask16) __U);
5733}
5734
5735static __inline__ __m512i __DEFAULT_FN_ATTRS
5736_mm512_srl_epi64 (__m512i __A, __m128i __B)
5737{
5738 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5739 (__v2di) __B,
5740 (__v8di)
5741 _mm512_setzero_si512 (),
5742 (__mmask8) -1);
5743}
5744
5745static __inline__ __m512i __DEFAULT_FN_ATTRS
5746_mm512_mask_srl_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m128i __B)
5747{
5748 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5749 (__v2di) __B,
5750 (__v8di) __W,
5751 (__mmask8) __U);
5752}
5753
5754static __inline__ __m512i __DEFAULT_FN_ATTRS
5755_mm512_maskz_srl_epi64 (__mmask8 __U, __m512i __A, __m128i __B)
5756{
5757 return (__m512i) __builtin_ia32_psrlq512_mask ((__v8di) __A,
5758 (__v2di) __B,
5759 (__v8di)
5760 _mm512_setzero_si512 (),
5761 (__mmask8) __U);
5762}
5763
5764static __inline__ __m512i __DEFAULT_FN_ATTRS
5765_mm512_srlv_epi32 (__m512i __X, __m512i __Y)
5766{
5767 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5768 (__v16si) __Y,
5769 (__v16si)
5770 _mm512_setzero_si512 (),
5771 (__mmask16) -1);
5772}
5773
5774static __inline__ __m512i __DEFAULT_FN_ATTRS
5775_mm512_mask_srlv_epi32 (__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y)
5776{
5777 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5778 (__v16si) __Y,
5779 (__v16si) __W,
5780 (__mmask16) __U);
5781}
5782
5783static __inline__ __m512i __DEFAULT_FN_ATTRS
5784_mm512_maskz_srlv_epi32 (__mmask16 __U, __m512i __X, __m512i __Y)
5785{
5786 return (__m512i) __builtin_ia32_psrlv16si_mask ((__v16si) __X,
5787 (__v16si) __Y,
5788 (__v16si)
5789 _mm512_setzero_si512 (),
5790 (__mmask16) __U);
5791}
5792
5793static __inline__ __m512i __DEFAULT_FN_ATTRS
5794_mm512_srlv_epi64 (__m512i __X, __m512i __Y)
5795{
5796 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5797 (__v8di) __Y,
5798 (__v8di)
5799 _mm512_setzero_si512 (),
5800 (__mmask8) -1);
5801}
5802
5803static __inline__ __m512i __DEFAULT_FN_ATTRS
5804_mm512_mask_srlv_epi64 (__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y)
5805{
5806 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5807 (__v8di) __Y,
5808 (__v8di) __W,
5809 (__mmask8) __U);
5810}
5811
5812static __inline__ __m512i __DEFAULT_FN_ATTRS
5813_mm512_maskz_srlv_epi64 (__mmask8 __U, __m512i __X, __m512i __Y)
5814{
5815 return (__m512i) __builtin_ia32_psrlv8di_mask ((__v8di) __X,
5816 (__v8di) __Y,
5817 (__v8di)
5818 _mm512_setzero_si512 (),
5819 (__mmask8) __U);
5820}
5821
Craig Topper8c18e112016-05-17 04:41:50 +00005822#define _mm512_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
5823 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5824 (__v16si)(__m512i)(B), \
5825 (__v16si)(__m512i)(C), (int)(imm), \
5826 (__mmask16)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005827
Craig Topper8c18e112016-05-17 04:41:50 +00005828#define _mm512_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
5829 (__m512i)__builtin_ia32_pternlogd512_mask((__v16si)(__m512i)(A), \
5830 (__v16si)(__m512i)(B), \
5831 (__v16si)(__m512i)(C), (int)(imm), \
5832 (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005833
Craig Topper8c18e112016-05-17 04:41:50 +00005834#define _mm512_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
5835 (__m512i)__builtin_ia32_pternlogd512_maskz((__v16si)(__m512i)(A), \
5836 (__v16si)(__m512i)(B), \
5837 (__v16si)(__m512i)(C), \
5838 (int)(imm), (__mmask16)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005839
Craig Topper8c18e112016-05-17 04:41:50 +00005840#define _mm512_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
5841 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5842 (__v8di)(__m512i)(B), \
5843 (__v8di)(__m512i)(C), (int)(imm), \
5844 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005845
Craig Topper8c18e112016-05-17 04:41:50 +00005846#define _mm512_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
5847 (__m512i)__builtin_ia32_pternlogq512_mask((__v8di)(__m512i)(A), \
5848 (__v8di)(__m512i)(B), \
5849 (__v8di)(__m512i)(C), (int)(imm), \
5850 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005851
Craig Topper8c18e112016-05-17 04:41:50 +00005852#define _mm512_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
5853 (__m512i)__builtin_ia32_pternlogq512_maskz((__v8di)(__m512i)(A), \
5854 (__v8di)(__m512i)(B), \
5855 (__v8di)(__m512i)(C), (int)(imm), \
5856 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00005857
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005858static __inline__ __m512d __DEFAULT_FN_ATTRS
5859_mm512_maskz_unpackhi_pd (__mmask8 __U, __m512d __A, __m512d __B)
5860{
5861 return (__m512d) __builtin_ia32_unpckhpd512_mask ((__v8df) __A,
5862 (__v8df) __B,
5863 (__v8df)
5864 _mm512_setzero_pd (),
5865 (__mmask8) __U);
5866}
5867
5868static __inline__ __m512 __DEFAULT_FN_ATTRS
5869_mm512_mask_unpackhi_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5870{
5871 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5872 (__v16sf) __B,
5873 (__v16sf) __W,
5874 (__mmask16) __U);
5875}
5876
5877static __inline__ __m512 __DEFAULT_FN_ATTRS
5878_mm512_maskz_unpackhi_ps (__mmask16 __U, __m512 __A, __m512 __B)
5879{
5880 return (__m512) __builtin_ia32_unpckhps512_mask ((__v16sf) __A,
5881 (__v16sf) __B,
5882 (__v16sf)
5883 _mm512_setzero_ps (),
5884 (__mmask16) __U);
5885}
5886
5887static __inline__ __m512d __DEFAULT_FN_ATTRS
5888_mm512_mask_unpacklo_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
5889{
5890 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5891 (__v8df) __B,
5892 (__v8df) __W,
5893 (__mmask8) __U);
5894}
5895
5896static __inline__ __m512d __DEFAULT_FN_ATTRS
5897_mm512_maskz_unpacklo_pd (__mmask8 __U, __m512d __A, __m512d __B)
5898{
5899 return (__m512d) __builtin_ia32_unpcklpd512_mask ((__v8df) __A,
5900 (__v8df) __B,
5901 (__v8df)
5902 _mm512_setzero_pd (),
5903 (__mmask8) __U);
5904}
5905
5906static __inline__ __m512 __DEFAULT_FN_ATTRS
5907_mm512_mask_unpacklo_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
5908{
5909 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5910 (__v16sf) __B,
5911 (__v16sf) __W,
5912 (__mmask16) __U);
5913}
5914
5915static __inline__ __m512 __DEFAULT_FN_ATTRS
5916_mm512_maskz_unpacklo_ps (__mmask16 __U, __m512 __A, __m512 __B)
5917{
5918 return (__m512) __builtin_ia32_unpcklps512_mask ((__v16sf) __A,
5919 (__v16sf) __B,
5920 (__v16sf)
5921 _mm512_setzero_ps (),
5922 (__mmask16) __U);
5923}
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005924
Craig Topper8c18e112016-05-17 04:41:50 +00005925#define _mm_cvt_roundsd_i64(A, R) __extension__ ({ \
5926 (long long)__builtin_ia32_vcvtsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005927
Craig Topper8c18e112016-05-17 04:41:50 +00005928#define _mm_cvt_roundsd_si32(A, R) __extension__ ({ \
5929 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005930
Craig Topper8c18e112016-05-17 04:41:50 +00005931#define _mm_cvt_roundsd_i32(A, R) __extension__ ({ \
5932 (int)__builtin_ia32_vcvtsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005933
Craig Topper8c18e112016-05-17 04:41:50 +00005934#define _mm_cvt_roundsd_u32(A, R) __extension__ ({ \
5935 (unsigned int)__builtin_ia32_vcvtsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005936
5937static __inline__ unsigned __DEFAULT_FN_ATTRS
5938_mm_cvtsd_u32 (__m128d __A)
5939{
5940 return (unsigned) __builtin_ia32_vcvtsd2usi32 ((__v2df) __A,
5941 _MM_FROUND_CUR_DIRECTION);
5942}
5943
Craig Topper8c18e112016-05-17 04:41:50 +00005944#define _mm_cvt_roundsd_u64(A, R) __extension__ ({ \
5945 (unsigned long long)__builtin_ia32_vcvtsd2usi64((__v2df)(__m128d)(A), \
5946 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005947
5948static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5949_mm_cvtsd_u64 (__m128d __A)
5950{
5951 return (unsigned long long) __builtin_ia32_vcvtsd2usi64 ((__v2df)
5952 __A,
5953 _MM_FROUND_CUR_DIRECTION);
5954}
5955
Craig Topper8c18e112016-05-17 04:41:50 +00005956#define _mm_cvt_roundss_si32(A, R) __extension__ ({ \
5957 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005958
Craig Topper8c18e112016-05-17 04:41:50 +00005959#define _mm_cvt_roundss_i32(A, R) __extension__ ({ \
5960 (int)__builtin_ia32_vcvtss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005961
Craig Topper8c18e112016-05-17 04:41:50 +00005962#define _mm_cvt_roundss_si64(A, R) __extension__ ({ \
5963 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005964
Craig Topper8c18e112016-05-17 04:41:50 +00005965#define _mm_cvt_roundss_i64(A, R) __extension__ ({ \
5966 (long long)__builtin_ia32_vcvtss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005967
Craig Topper8c18e112016-05-17 04:41:50 +00005968#define _mm_cvt_roundss_u32(A, R) __extension__ ({ \
5969 (unsigned int)__builtin_ia32_vcvtss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005970
5971static __inline__ unsigned __DEFAULT_FN_ATTRS
5972_mm_cvtss_u32 (__m128 __A)
5973{
5974 return (unsigned) __builtin_ia32_vcvtss2usi32 ((__v4sf) __A,
5975 _MM_FROUND_CUR_DIRECTION);
5976}
5977
Craig Topper8c18e112016-05-17 04:41:50 +00005978#define _mm_cvt_roundss_u64(A, R) __extension__ ({ \
5979 (unsigned long long)__builtin_ia32_vcvtss2usi64((__v4sf)(__m128)(A), \
5980 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005981
5982static __inline__ unsigned long long __DEFAULT_FN_ATTRS
5983_mm_cvtss_u64 (__m128 __A)
5984{
5985 return (unsigned long long) __builtin_ia32_vcvtss2usi64 ((__v4sf)
5986 __A,
5987 _MM_FROUND_CUR_DIRECTION);
5988}
5989
Craig Topper8c18e112016-05-17 04:41:50 +00005990#define _mm_cvtt_roundsd_i32(A, R) __extension__ ({ \
5991 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005992
Craig Topper8c18e112016-05-17 04:41:50 +00005993#define _mm_cvtt_roundsd_si32(A, R) __extension__ ({ \
5994 (int)__builtin_ia32_vcvttsd2si32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00005995
5996static __inline__ int __DEFAULT_FN_ATTRS
5997_mm_cvttsd_i32 (__m128d __A)
5998{
5999 return (int) __builtin_ia32_vcvttsd2si32 ((__v2df) __A,
6000 _MM_FROUND_CUR_DIRECTION);
6001}
6002
Craig Topper8c18e112016-05-17 04:41:50 +00006003#define _mm_cvtt_roundsd_si64(A, R) __extension__ ({ \
6004 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006005
Craig Topper8c18e112016-05-17 04:41:50 +00006006#define _mm_cvtt_roundsd_i64(A, R) __extension__ ({ \
6007 (long long)__builtin_ia32_vcvttsd2si64((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006008
6009static __inline__ long long __DEFAULT_FN_ATTRS
6010_mm_cvttsd_i64 (__m128d __A)
6011{
6012 return (long long) __builtin_ia32_vcvttsd2si64 ((__v2df) __A,
6013 _MM_FROUND_CUR_DIRECTION);
6014}
6015
Craig Topper8c18e112016-05-17 04:41:50 +00006016#define _mm_cvtt_roundsd_u32(A, R) __extension__ ({ \
6017 (unsigned int)__builtin_ia32_vcvttsd2usi32((__v2df)(__m128d)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006018
6019static __inline__ unsigned __DEFAULT_FN_ATTRS
6020_mm_cvttsd_u32 (__m128d __A)
6021{
6022 return (unsigned) __builtin_ia32_vcvttsd2usi32 ((__v2df) __A,
6023 _MM_FROUND_CUR_DIRECTION);
6024}
6025
Craig Topper8c18e112016-05-17 04:41:50 +00006026#define _mm_cvtt_roundsd_u64(A, R) __extension__ ({ \
6027 (unsigned long long)__builtin_ia32_vcvttsd2usi64((__v2df)(__m128d)(A), \
6028 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006029
6030static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6031_mm_cvttsd_u64 (__m128d __A)
6032{
6033 return (unsigned long long) __builtin_ia32_vcvttsd2usi64 ((__v2df)
6034 __A,
6035 _MM_FROUND_CUR_DIRECTION);
6036}
6037
Craig Topper8c18e112016-05-17 04:41:50 +00006038#define _mm_cvtt_roundss_i32(A, R) __extension__ ({ \
6039 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006040
Craig Topper8c18e112016-05-17 04:41:50 +00006041#define _mm_cvtt_roundss_si32(A, R) __extension__ ({ \
6042 (int)__builtin_ia32_vcvttss2si32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006043
6044static __inline__ int __DEFAULT_FN_ATTRS
6045_mm_cvttss_i32 (__m128 __A)
6046{
6047 return (int) __builtin_ia32_vcvttss2si32 ((__v4sf) __A,
6048 _MM_FROUND_CUR_DIRECTION);
6049}
6050
Craig Topper8c18e112016-05-17 04:41:50 +00006051#define _mm_cvtt_roundss_i64(A, R) __extension__ ({ \
6052 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006053
Craig Topper8c18e112016-05-17 04:41:50 +00006054#define _mm_cvtt_roundss_si64(A, R) __extension__ ({ \
6055 (long long)__builtin_ia32_vcvttss2si64((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006056
6057static __inline__ long long __DEFAULT_FN_ATTRS
6058_mm_cvttss_i64 (__m128 __A)
6059{
6060 return (long long) __builtin_ia32_vcvttss2si64 ((__v4sf) __A,
6061 _MM_FROUND_CUR_DIRECTION);
6062}
6063
Craig Topper8c18e112016-05-17 04:41:50 +00006064#define _mm_cvtt_roundss_u32(A, R) __extension__ ({ \
6065 (unsigned int)__builtin_ia32_vcvttss2usi32((__v4sf)(__m128)(A), (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006066
6067static __inline__ unsigned __DEFAULT_FN_ATTRS
6068_mm_cvttss_u32 (__m128 __A)
6069{
6070 return (unsigned) __builtin_ia32_vcvttss2usi32 ((__v4sf) __A,
6071 _MM_FROUND_CUR_DIRECTION);
6072}
6073
Craig Topper8c18e112016-05-17 04:41:50 +00006074#define _mm_cvtt_roundss_u64(A, R) __extension__ ({ \
6075 (unsigned long long)__builtin_ia32_vcvttss2usi64((__v4sf)(__m128)(A), \
6076 (int)(R)); })
Michael Zuckerman8d161992016-04-10 17:24:03 +00006077
6078static __inline__ unsigned long long __DEFAULT_FN_ATTRS
6079_mm_cvttss_u64 (__m128 __A)
6080{
6081 return (unsigned long long) __builtin_ia32_vcvttss2usi64 ((__v4sf)
6082 __A,
6083 _MM_FROUND_CUR_DIRECTION);
6084}
6085
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006086static __inline__ __m512d __DEFAULT_FN_ATTRS
6087_mm512_mask2_permutex2var_pd (__m512d __A, __m512i __I, __mmask8 __U,
6088 __m512d __B)
6089{
6090 return (__m512d) __builtin_ia32_vpermi2varpd512_mask ((__v8df) __A,
6091 (__v8di) __I
6092 /* idx */ ,
6093 (__v8df) __B,
6094 (__mmask8) __U);
6095}
6096
6097static __inline__ __m512 __DEFAULT_FN_ATTRS
6098_mm512_mask2_permutex2var_ps (__m512 __A, __m512i __I, __mmask16 __U,
6099 __m512 __B)
6100{
6101 return (__m512) __builtin_ia32_vpermi2varps512_mask ((__v16sf) __A,
6102 (__v16si) __I
6103 /* idx */ ,
6104 (__v16sf) __B,
6105 (__mmask16) __U);
6106}
6107
6108static __inline__ __m512i __DEFAULT_FN_ATTRS
6109_mm512_mask2_permutex2var_epi64 (__m512i __A, __m512i __I,
6110 __mmask8 __U, __m512i __B)
6111{
6112 return (__m512i) __builtin_ia32_vpermi2varq512_mask ((__v8di) __A,
6113 (__v8di) __I
6114 /* idx */ ,
6115 (__v8di) __B,
6116 (__mmask8) __U);
6117}
6118
Craig Topper8c18e112016-05-17 04:41:50 +00006119#define _mm512_permute_pd(X, C) __extension__ ({ \
6120 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6121 (__v8df)_mm512_undefined_pd(), \
6122 (__mmask8)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006123
Craig Topper8c18e112016-05-17 04:41:50 +00006124#define _mm512_mask_permute_pd(W, U, X, C) __extension__ ({ \
6125 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6126 (__v8df)(__m512d)(W), \
6127 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006128
Craig Topper8c18e112016-05-17 04:41:50 +00006129#define _mm512_maskz_permute_pd(U, X, C) __extension__ ({ \
6130 (__m512d)__builtin_ia32_vpermilpd512_mask((__v8df)(__m512d)(X), (int)(C), \
6131 (__v8df)_mm512_setzero_pd(), \
6132 (__mmask8)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006133
Craig Topper8c18e112016-05-17 04:41:50 +00006134#define _mm512_permute_ps(X, C) __extension__ ({ \
6135 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6136 (__v16sf)_mm512_undefined_ps(), \
6137 (__mmask16)-1); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006138
Craig Topper8c18e112016-05-17 04:41:50 +00006139#define _mm512_mask_permute_ps(W, U, X, C) __extension__ ({ \
6140 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6141 (__v16sf)(__m512)(W), \
6142 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006143
Craig Topper8c18e112016-05-17 04:41:50 +00006144#define _mm512_maskz_permute_ps(U, X, C) __extension__ ({ \
6145 (__m512)__builtin_ia32_vpermilps512_mask((__v16sf)(__m512)(X), (int)(C), \
6146 (__v16sf)_mm512_setzero_ps(), \
6147 (__mmask16)(U)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006148
6149static __inline__ __m512d __DEFAULT_FN_ATTRS
6150_mm512_permutevar_pd (__m512d __A, __m512i __C)
6151{
6152 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6153 (__v8di) __C,
6154 (__v8df)
6155 _mm512_undefined_pd (),
6156 (__mmask8) -1);
6157}
6158
6159static __inline__ __m512d __DEFAULT_FN_ATTRS
6160_mm512_mask_permutevar_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512i __C)
6161{
6162 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6163 (__v8di) __C,
6164 (__v8df) __W,
6165 (__mmask8) __U);
6166}
6167
6168static __inline__ __m512d __DEFAULT_FN_ATTRS
6169_mm512_maskz_permutevar_pd (__mmask8 __U, __m512d __A, __m512i __C)
6170{
6171 return (__m512d) __builtin_ia32_vpermilvarpd512_mask ((__v8df) __A,
6172 (__v8di) __C,
6173 (__v8df)
6174 _mm512_setzero_pd (),
6175 (__mmask8) __U);
6176}
6177
6178static __inline__ __m512 __DEFAULT_FN_ATTRS
6179_mm512_permutevar_ps (__m512 __A, __m512i __C)
6180{
6181 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6182 (__v16si) __C,
6183 (__v16sf)
6184 _mm512_undefined_ps (),
6185 (__mmask16) -1);
6186}
6187
6188static __inline__ __m512 __DEFAULT_FN_ATTRS
6189_mm512_mask_permutevar_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512i __C)
6190{
6191 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6192 (__v16si) __C,
6193 (__v16sf) __W,
6194 (__mmask16) __U);
6195}
6196
6197static __inline__ __m512 __DEFAULT_FN_ATTRS
6198_mm512_maskz_permutevar_ps (__mmask16 __U, __m512 __A, __m512i __C)
6199{
6200 return (__m512) __builtin_ia32_vpermilvarps512_mask ((__v16sf) __A,
6201 (__v16si) __C,
6202 (__v16sf)
6203 _mm512_setzero_ps (),
6204 (__mmask16) __U);
6205}
6206
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006207static __inline __m512d __DEFAULT_FN_ATTRS
6208_mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006209{
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006210 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6211 /* idx */ ,
6212 (__v8df) __A,
6213 (__v8df) __B,
6214 (__mmask8) -1);
6215}
6216
6217static __inline__ __m512d __DEFAULT_FN_ATTRS
6218_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B)
6219{
6220 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
6221 /* idx */ ,
6222 (__v8df) __A,
6223 (__v8df) __B,
6224 (__mmask8) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006225}
6226
6227static __inline__ __m512d __DEFAULT_FN_ATTRS
6228_mm512_maskz_permutex2var_pd (__mmask8 __U, __m512d __A, __m512i __I,
6229 __m512d __B)
6230{
6231 return (__m512d) __builtin_ia32_vpermt2varpd512_maskz ((__v8di) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006232 /* idx */ ,
6233 (__v8df) __A,
6234 (__v8df) __B,
6235 (__mmask8) __U);
6236}
6237
6238static __inline __m512 __DEFAULT_FN_ATTRS
6239_mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
6240{
6241 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6242 /* idx */ ,
6243 (__v16sf) __A,
6244 (__v16sf) __B,
6245 (__mmask16) -1);
6246}
6247
6248static __inline__ __m512 __DEFAULT_FN_ATTRS
6249_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B)
6250{
6251 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
6252 /* idx */ ,
6253 (__v16sf) __A,
6254 (__v16sf) __B,
6255 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006256}
6257
6258static __inline__ __m512 __DEFAULT_FN_ATTRS
6259_mm512_maskz_permutex2var_ps (__mmask16 __U, __m512 __A, __m512i __I,
6260 __m512 __B)
6261{
6262 return (__m512) __builtin_ia32_vpermt2varps512_maskz ((__v16si) __I
Michael Zuckerman5e2c6b62016-05-11 11:21:18 +00006263 /* idx */ ,
6264 (__v16sf) __A,
6265 (__v16sf) __B,
6266 (__mmask16) __U);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006267}
6268
Michael Zuckerman07525092016-04-11 10:22:07 +00006269static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6270_mm512_testn_epi32_mask (__m512i __A, __m512i __B)
6271{
6272 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6273 (__v16si) __B,
6274 (__mmask16) -1);
6275}
6276
6277static __inline__ __mmask16 __DEFAULT_FN_ATTRS
6278_mm512_mask_testn_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B)
6279{
6280 return (__mmask16) __builtin_ia32_ptestnmd512 ((__v16si) __A,
6281 (__v16si) __B, __U);
6282}
6283
6284static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6285_mm512_testn_epi64_mask (__m512i __A, __m512i __B)
6286{
6287 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6288 (__v8di) __B,
6289 (__mmask8) -1);
6290}
6291
6292static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6293_mm512_mask_testn_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B)
6294{
6295 return (__mmask8) __builtin_ia32_ptestnmq512 ((__v8di) __A,
6296 (__v8di) __B, __U);
6297}
6298
Craig Topper8c18e112016-05-17 04:41:50 +00006299#define _mm512_cvtt_roundpd_epu32(A, R) __extension__ ({ \
6300 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6301 (__v8si)_mm256_undefined_si256(), \
6302 (__mmask8)-1, (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006303
Craig Topper8c18e112016-05-17 04:41:50 +00006304#define _mm512_mask_cvtt_roundpd_epu32(W, U, A, R) __extension__ ({ \
6305 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6306 (__v8si)(__m256i)(W), \
6307 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006308
Craig Topper8c18e112016-05-17 04:41:50 +00006309#define _mm512_maskz_cvtt_roundpd_epu32(U, A, R) __extension__ ({ \
6310 (__m256i)__builtin_ia32_cvttpd2udq512_mask((__v8df)(__m512d)(A), \
6311 (__v8si)_mm256_setzero_si256(), \
6312 (__mmask8)(U), (int)(R)); })
Michael Zuckerman138fc5b2016-05-03 11:05:24 +00006313
6314static __inline__ __m256i __DEFAULT_FN_ATTRS
6315_mm512_cvttpd_epu32 (__m512d __A)
6316{
6317 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6318 (__v8si)
6319 _mm256_undefined_si256 (),
6320 (__mmask8) -1,
6321 _MM_FROUND_CUR_DIRECTION);
6322}
6323
6324static __inline__ __m256i __DEFAULT_FN_ATTRS
6325_mm512_mask_cvttpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A)
6326{
6327 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6328 (__v8si) __W,
6329 (__mmask8) __U,
6330 _MM_FROUND_CUR_DIRECTION);
6331}
6332
6333static __inline__ __m256i __DEFAULT_FN_ATTRS
6334_mm512_maskz_cvttpd_epu32 (__mmask8 __U, __m512d __A)
6335{
6336 return (__m256i) __builtin_ia32_cvttpd2udq512_mask ((__v8df) __A,
6337 (__v8si)
6338 _mm256_setzero_si256 (),
6339 (__mmask8) __U,
6340 _MM_FROUND_CUR_DIRECTION);
6341}
Michael Zuckerman07525092016-04-11 10:22:07 +00006342
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006343static __inline__ __m512i __DEFAULT_FN_ATTRS
6344_mm512_mask_unpackhi_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6345 __m512i __B)
6346{
6347 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6348 (__v16si) __B,
6349 (__v16si) __W,
6350 (__mmask16) __U);
6351}
6352
6353static __inline__ __m512i __DEFAULT_FN_ATTRS
6354_mm512_maskz_unpackhi_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6355{
6356 return (__m512i) __builtin_ia32_punpckhdq512_mask ((__v16si) __A,
6357 (__v16si) __B,
6358 (__v16si)
6359 _mm512_setzero_si512 (),
6360 (__mmask16) __U);
6361}
6362
6363static __inline__ __m512i __DEFAULT_FN_ATTRS
6364_mm512_unpackhi_epi64 (__m512i __A, __m512i __B)
6365{
6366 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6367 (__v8di) __B,
6368 (__v8di)
6369 _mm512_setzero_si512 (),
6370 (__mmask8) -1);
6371}
6372
6373static __inline__ __m512i __DEFAULT_FN_ATTRS
6374_mm512_mask_unpackhi_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6375{
6376 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6377 (__v8di) __B,
6378 (__v8di) __W,
6379 (__mmask8) __U);
6380}
6381
6382static __inline__ __m512i __DEFAULT_FN_ATTRS
6383_mm512_maskz_unpackhi_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6384{
6385 return (__m512i) __builtin_ia32_punpckhqdq512_mask ((__v8di) __A,
6386 (__v8di) __B,
6387 (__v8di)
6388 _mm512_setzero_si512 (),
6389 (__mmask8) __U);
6390}
6391
6392static __inline__ __m512i __DEFAULT_FN_ATTRS
6393_mm512_unpacklo_epi32 (__m512i __A, __m512i __B)
6394{
6395 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6396 (__v16si) __B,
6397 (__v16si)
6398 _mm512_setzero_si512 (),
6399 (__mmask16) -1);
6400}
6401
6402static __inline__ __m512i __DEFAULT_FN_ATTRS
6403_mm512_mask_unpacklo_epi32 (__m512i __W, __mmask16 __U, __m512i __A,
6404 __m512i __B)
6405{
6406 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6407 (__v16si) __B,
6408 (__v16si) __W,
6409 (__mmask16) __U);
6410}
6411
6412static __inline__ __m512i __DEFAULT_FN_ATTRS
6413_mm512_maskz_unpacklo_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
6414{
6415 return (__m512i) __builtin_ia32_punpckldq512_mask ((__v16si) __A,
6416 (__v16si) __B,
6417 (__v16si)
6418 _mm512_setzero_si512 (),
6419 (__mmask16) __U);
6420}
6421
6422static __inline__ __m512i __DEFAULT_FN_ATTRS
6423_mm512_unpacklo_epi64 (__m512i __A, __m512i __B)
6424{
6425 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6426 (__v8di) __B,
6427 (__v8di)
6428 _mm512_setzero_si512 (),
6429 (__mmask8) -1);
6430}
6431
6432static __inline__ __m512i __DEFAULT_FN_ATTRS
6433_mm512_mask_unpacklo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
6434{
6435 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6436 (__v8di) __B,
6437 (__v8di) __W,
6438 (__mmask8) __U);
6439}
6440
6441static __inline__ __m512i __DEFAULT_FN_ATTRS
6442_mm512_maskz_unpacklo_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
6443{
6444 return (__m512i) __builtin_ia32_punpcklqdq512_mask ((__v8di) __A,
6445 (__v8di) __B,
6446 (__v8di)
6447 _mm512_setzero_si512 (),
6448 (__mmask8) __U);
6449}
6450
Craig Topper8c18e112016-05-17 04:41:50 +00006451#define _mm_roundscale_round_sd(A, B, imm, R) __extension__ ({ \
6452 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6453 (__v2df)(__m128d)(B), \
6454 (__v2df)_mm_setzero_pd(), \
6455 (__mmask8)-1, (int)(imm), \
6456 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006457
Craig Topper8c18e112016-05-17 04:41:50 +00006458#define _mm_roundscale_sd(A, B, imm) __extension__ ({ \
6459 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6460 (__v2df)(__m128d)(B), \
6461 (__v2df)_mm_setzero_pd(), \
6462 (__mmask8)-1, (int)(imm), \
6463 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006464
Craig Topper8c18e112016-05-17 04:41:50 +00006465#define _mm_mask_roundscale_sd(W, U, A, B, imm) __extension__ ({ \
6466 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6467 (__v2df)(__m128d)(B), \
6468 (__v2df)(__m128d)(W), \
6469 (__mmask8)(U), (int)(imm), \
6470 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006471
Craig Topper8c18e112016-05-17 04:41:50 +00006472#define _mm_mask_roundscale_round_sd(W, U, A, B, I, R) __extension__ ({ \
6473 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6474 (__v2df)(__m128d)(B), \
6475 (__v2df)(__m128d)(W), \
6476 (__mmask8)(U), (int)(I), \
6477 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006478
Craig Topper8c18e112016-05-17 04:41:50 +00006479#define _mm_maskz_roundscale_sd(U, A, B, I) __extension__ ({ \
6480 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6481 (__v2df)(__m128d)(B), \
6482 (__v2df)_mm_setzero_pd(), \
6483 (__mmask8)(U), (int)(I), \
6484 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006485
Craig Topper8c18e112016-05-17 04:41:50 +00006486#define _mm_maskz_roundscale_round_sd(U, A, B, I, R) __extension__ ({ \
6487 (__m128d)__builtin_ia32_rndscalesd_round_mask((__v2df)(__m128d)(A), \
6488 (__v2df)(__m128d)(B), \
6489 (__v2df)_mm_setzero_pd(), \
6490 (__mmask8)(U), (int)(I), \
6491 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006492
Craig Topper8c18e112016-05-17 04:41:50 +00006493#define _mm_roundscale_round_ss(A, B, imm, R) __extension__ ({ \
6494 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6495 (__v4sf)(__m128)(B), \
6496 (__v4sf)_mm_setzero_ps(), \
6497 (__mmask8)-1, (int)(imm), \
6498 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006499
Craig Topper8c18e112016-05-17 04:41:50 +00006500#define _mm_roundscale_ss(A, B, imm) __extension__ ({ \
6501 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6502 (__v4sf)(__m128)(B), \
6503 (__v4sf)_mm_setzero_ps(), \
6504 (__mmask8)-1, (int)(imm), \
6505 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006506
Craig Topper8c18e112016-05-17 04:41:50 +00006507#define _mm_mask_roundscale_ss(W, U, A, B, I) __extension__ ({ \
6508 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6509 (__v4sf)(__m128)(B), \
6510 (__v4sf)(__m128)(W), \
6511 (__mmask8)(U), (int)(I), \
6512 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006513
Craig Topper8c18e112016-05-17 04:41:50 +00006514#define _mm_mask_roundscale_round_ss(W, U, A, B, I, R) __extension__ ({ \
6515 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6516 (__v4sf)(__m128)(B), \
6517 (__v4sf)(__m128)(W), \
6518 (__mmask8)(U), (int)(I), \
6519 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006520
Craig Topper8c18e112016-05-17 04:41:50 +00006521#define _mm_maskz_roundscale_ss(U, A, B, I) __extension__ ({ \
6522 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6523 (__v4sf)(__m128)(B), \
6524 (__v4sf)_mm_setzero_ps(), \
6525 (__mmask8)(U), (int)(I), \
6526 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006527
Craig Topper8c18e112016-05-17 04:41:50 +00006528#define _mm_maskz_roundscale_round_ss(U, A, B, I, R) __extension__ ({ \
6529 (__m128)__builtin_ia32_rndscaless_round_mask((__v4sf)(__m128)(A), \
6530 (__v4sf)(__m128)(B), \
6531 (__v4sf)_mm_setzero_ps(), \
6532 (__mmask8)(U), (int)(I), \
6533 (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006534
Craig Topper8c18e112016-05-17 04:41:50 +00006535#define _mm512_scalef_round_pd(A, B, R) __extension__ ({ \
6536 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6537 (__v8df)(__m512d)(B), \
6538 (__v8df)_mm512_undefined_pd(), \
6539 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006540
Craig Topper8c18e112016-05-17 04:41:50 +00006541#define _mm512_mask_scalef_round_pd(W, U, A, B, R) __extension__ ({ \
6542 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6543 (__v8df)(__m512d)(B), \
6544 (__v8df)(__m512d)(W), \
6545 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006546
Craig Topper8c18e112016-05-17 04:41:50 +00006547#define _mm512_maskz_scalef_round_pd(U, A, B, R) __extension__ ({ \
6548 (__m512d)__builtin_ia32_scalefpd512_mask((__v8df)(__m512d)(A), \
6549 (__v8df)(__m512d)(B), \
6550 (__v8df)_mm512_setzero_pd(), \
6551 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006552
6553static __inline__ __m512d __DEFAULT_FN_ATTRS
6554_mm512_scalef_pd (__m512d __A, __m512d __B)
6555{
6556 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6557 (__v8df) __B,
6558 (__v8df)
6559 _mm512_undefined_pd (),
6560 (__mmask8) -1,
6561 _MM_FROUND_CUR_DIRECTION);
6562}
6563
6564static __inline__ __m512d __DEFAULT_FN_ATTRS
6565_mm512_mask_scalef_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B)
6566{
6567 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6568 (__v8df) __B,
6569 (__v8df) __W,
6570 (__mmask8) __U,
6571 _MM_FROUND_CUR_DIRECTION);
6572}
6573
6574static __inline__ __m512d __DEFAULT_FN_ATTRS
6575_mm512_maskz_scalef_pd (__mmask8 __U, __m512d __A, __m512d __B)
6576{
6577 return (__m512d) __builtin_ia32_scalefpd512_mask ((__v8df) __A,
6578 (__v8df) __B,
6579 (__v8df)
6580 _mm512_setzero_pd (),
6581 (__mmask8) __U,
6582 _MM_FROUND_CUR_DIRECTION);
6583}
6584
Craig Topper8c18e112016-05-17 04:41:50 +00006585#define _mm512_scalef_round_ps(A, B, R) __extension__ ({ \
6586 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6587 (__v16sf)(__m512)(B), \
6588 (__v16sf)_mm512_undefined_ps(), \
6589 (__mmask16)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006590
Craig Topper8c18e112016-05-17 04:41:50 +00006591#define _mm512_mask_scalef_round_ps(W, U, A, B, R) __extension__ ({ \
6592 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6593 (__v16sf)(__m512)(B), \
6594 (__v16sf)(__m512)(W), \
6595 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006596
Craig Topper8c18e112016-05-17 04:41:50 +00006597#define _mm512_maskz_scalef_round_ps(U, A, B, R) __extension__ ({ \
6598 (__m512)__builtin_ia32_scalefps512_mask((__v16sf)(__m512)(A), \
6599 (__v16sf)(__m512)(B), \
6600 (__v16sf)_mm512_setzero_ps(), \
6601 (__mmask16)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006602
6603static __inline__ __m512 __DEFAULT_FN_ATTRS
6604_mm512_scalef_ps (__m512 __A, __m512 __B)
6605{
6606 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6607 (__v16sf) __B,
6608 (__v16sf)
6609 _mm512_undefined_ps (),
6610 (__mmask16) -1,
6611 _MM_FROUND_CUR_DIRECTION);
6612}
6613
6614static __inline__ __m512 __DEFAULT_FN_ATTRS
6615_mm512_mask_scalef_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B)
6616{
6617 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6618 (__v16sf) __B,
6619 (__v16sf) __W,
6620 (__mmask16) __U,
6621 _MM_FROUND_CUR_DIRECTION);
6622}
6623
6624static __inline__ __m512 __DEFAULT_FN_ATTRS
6625_mm512_maskz_scalef_ps (__mmask16 __U, __m512 __A, __m512 __B)
6626{
6627 return (__m512) __builtin_ia32_scalefps512_mask ((__v16sf) __A,
6628 (__v16sf) __B,
6629 (__v16sf)
6630 _mm512_setzero_ps (),
6631 (__mmask16) __U,
6632 _MM_FROUND_CUR_DIRECTION);
6633}
6634
Craig Topper8c18e112016-05-17 04:41:50 +00006635#define _mm_scalef_round_sd(A, B, R) __extension__ ({ \
6636 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6637 (__v2df)(__m128d)(B), \
6638 (__v2df)_mm_setzero_pd(), \
6639 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006640
6641static __inline__ __m128d __DEFAULT_FN_ATTRS
6642_mm_scalef_sd (__m128d __A, __m128d __B)
6643{
6644 return (__m128d) __builtin_ia32_scalefsd_round_mask ((__v2df) __A,
6645 (__v2df)( __B), (__v2df) _mm_setzero_pd(),
6646 (__mmask8) -1,
6647 _MM_FROUND_CUR_DIRECTION);
6648}
6649
6650static __inline__ __m128d __DEFAULT_FN_ATTRS
6651_mm_mask_scalef_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6652{
6653 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6654 (__v2df) __B,
6655 (__v2df) __W,
6656 (__mmask8) __U,
6657 _MM_FROUND_CUR_DIRECTION);
6658}
6659
Craig Topper8c18e112016-05-17 04:41:50 +00006660#define _mm_mask_scalef_round_sd(W, U, A, B, R) __extension__ ({ \
6661 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6662 (__v2df)(__m128d)(B), \
6663 (__v2df)(__m128d)(W), \
6664 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006665
6666static __inline__ __m128d __DEFAULT_FN_ATTRS
6667_mm_maskz_scalef_sd (__mmask8 __U, __m128d __A, __m128d __B)
6668{
6669 return (__m128d) __builtin_ia32_scalefsd_round_mask ( (__v2df) __A,
6670 (__v2df) __B,
6671 (__v2df) _mm_setzero_pd (),
6672 (__mmask8) __U,
6673 _MM_FROUND_CUR_DIRECTION);
6674}
6675
Craig Topper8c18e112016-05-17 04:41:50 +00006676#define _mm_maskz_scalef_round_sd(U, A, B, R) __extension__ ({ \
6677 (__m128d)__builtin_ia32_scalefsd_round_mask((__v2df)(__m128d)(A), \
6678 (__v2df)(__m128d)(B), \
6679 (__v2df)_mm_setzero_pd(), \
6680 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006681
Craig Topper8c18e112016-05-17 04:41:50 +00006682#define _mm_scalef_round_ss(A, B, R) __extension__ ({ \
6683 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6684 (__v4sf)(__m128)(B), \
6685 (__v4sf)_mm_setzero_ps(), \
6686 (__mmask8)-1, (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006687
6688static __inline__ __m128 __DEFAULT_FN_ATTRS
6689_mm_scalef_ss (__m128 __A, __m128 __B)
6690{
6691 return (__m128) __builtin_ia32_scalefss_round_mask ((__v4sf) __A,
6692 (__v4sf)( __B), (__v4sf) _mm_setzero_ps(),
6693 (__mmask8) -1,
6694 _MM_FROUND_CUR_DIRECTION);
6695}
6696
6697static __inline__ __m128 __DEFAULT_FN_ATTRS
6698_mm_mask_scalef_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6699{
6700 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6701 (__v4sf) __B,
6702 (__v4sf) __W,
6703 (__mmask8) __U,
6704 _MM_FROUND_CUR_DIRECTION);
6705}
6706
Craig Topper8c18e112016-05-17 04:41:50 +00006707#define _mm_mask_scalef_round_ss(W, U, A, B, R) __extension__ ({ \
6708 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6709 (__v4sf)(__m128)(B), \
6710 (__v4sf)(__m128)(W), \
6711 (__mmask8)(U), (int)(R)); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006712
6713static __inline__ __m128 __DEFAULT_FN_ATTRS
6714_mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
6715{
6716 return (__m128) __builtin_ia32_scalefss_round_mask ( (__v4sf) __A,
6717 (__v4sf) __B,
6718 (__v4sf) _mm_setzero_ps (),
6719 (__mmask8) __U,
6720 _MM_FROUND_CUR_DIRECTION);
6721}
6722
Craig Topper8c18e112016-05-17 04:41:50 +00006723#define _mm_maskz_scalef_round_ss(U, A, B, R) __extension__ ({ \
6724 (__m128)__builtin_ia32_scalefss_round_mask((__v4sf)(__m128)(A), \
6725 (__v4sf)(__m128)(B), \
6726 (__v4sf)_mm_setzero_ps(), \
6727 (__mmask8)(U), \
6728 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006729
Craig Topper79d05c92016-05-15 20:10:06 +00006730#define _mm512_srai_epi32(A, B) __extension__ ({ \
6731 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6732 (__v16si)_mm512_setzero_si512(), \
6733 (__mmask16)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006734
Craig Topper8c18e112016-05-17 04:41:50 +00006735#define _mm512_mask_srai_epi32(W, U, A, B) __extension__ ({ \
6736 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6737 (__v16si)(__m512i)(W), \
6738 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006739
Craig Topper8c18e112016-05-17 04:41:50 +00006740#define _mm512_maskz_srai_epi32(U, A, B) __extension__ ({ \
6741 (__m512i)__builtin_ia32_psradi512_mask((__v16si)(__m512i)(A), (int)(B), \
6742 (__v16si)_mm512_setzero_si512(), \
6743 (__mmask16)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006744
Craig Topper8c18e112016-05-17 04:41:50 +00006745#define _mm512_srai_epi64(A, B) __extension__ ({ \
6746 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6747 (__v8di)_mm512_setzero_si512(), \
6748 (__mmask8)-1); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006749
Craig Topper8c18e112016-05-17 04:41:50 +00006750#define _mm512_mask_srai_epi64(W, U, A, B) __extension__ ({ \
6751 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6752 (__v8di)(__m512i)(W), \
6753 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006754
Craig Topper8c18e112016-05-17 04:41:50 +00006755#define _mm512_maskz_srai_epi64(U, A, B) __extension__ ({ \
6756 (__m512i)__builtin_ia32_psraqi512_mask((__v8di)(__m512i)(A), (int)(B), \
6757 (__v8di)_mm512_setzero_si512(), \
6758 (__mmask8)(U)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006759
Craig Topper8c18e112016-05-17 04:41:50 +00006760#define _mm512_shuffle_f32x4(A, B, imm) __extension__ ({ \
6761 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6762 (__v16sf)(__m512)(B), (int)(imm), \
6763 (__v16sf)_mm512_undefined_ps(), \
6764 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006765
Craig Topper8c18e112016-05-17 04:41:50 +00006766#define _mm512_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6767 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6768 (__v16sf)(__m512)(B), (int)(imm), \
6769 (__v16sf)(__m512)(W), \
6770 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006771
Craig Topper8c18e112016-05-17 04:41:50 +00006772#define _mm512_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6773 (__m512)__builtin_ia32_shuf_f32x4_mask((__v16sf)(__m512)(A), \
6774 (__v16sf)(__m512)(B), (int)(imm), \
6775 (__v16sf)_mm512_setzero_ps(), \
6776 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006777
Craig Topper8c18e112016-05-17 04:41:50 +00006778#define _mm512_shuffle_f64x2(A, B, imm) __extension__ ({ \
6779 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6780 (__v8df)(__m512d)(B), (int)(imm), \
6781 (__v8df)_mm512_undefined_pd(), \
6782 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006783
Craig Topper8c18e112016-05-17 04:41:50 +00006784#define _mm512_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
6785 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6786 (__v8df)(__m512d)(B), (int)(imm), \
6787 (__v8df)(__m512d)(W), \
6788 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006789
Craig Topper8c18e112016-05-17 04:41:50 +00006790#define _mm512_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
6791 (__m512d)__builtin_ia32_shuf_f64x2_mask((__v8df)(__m512d)(A), \
6792 (__v8df)(__m512d)(B), (int)(imm), \
6793 (__v8df)_mm512_setzero_pd(), \
6794 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006795
Craig Topper8c18e112016-05-17 04:41:50 +00006796#define _mm512_shuffle_i32x4(A, B, imm) __extension__ ({ \
6797 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6798 (__v16si)(__m512i)(B), (int)(imm), \
6799 (__v16si)_mm512_setzero_si512(), \
6800 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006801
Craig Topper8c18e112016-05-17 04:41:50 +00006802#define _mm512_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
6803 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6804 (__v16si)(__m512i)(B), (int)(imm), \
6805 (__v16si)(__m512i)(W), \
6806 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006807
Craig Topper8c18e112016-05-17 04:41:50 +00006808#define _mm512_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
6809 (__m512i)__builtin_ia32_shuf_i32x4_mask((__v16si)(__m512i)(A), \
6810 (__v16si)(__m512i)(B), (int)(imm), \
6811 (__v16si)_mm512_setzero_si512(), \
6812 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006813
Craig Topper8c18e112016-05-17 04:41:50 +00006814#define _mm512_shuffle_i64x2(A, B, imm) __extension__ ({ \
6815 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6816 (__v8di)(__m512i)(B), (int)(imm), \
6817 (__v8di)_mm512_setzero_si512(), \
6818 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006819
Craig Topper8c18e112016-05-17 04:41:50 +00006820#define _mm512_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
6821 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6822 (__v8di)(__m512i)(B), (int)(imm), \
6823 (__v8di)(__m512i)(W), \
6824 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006825
Craig Topper8c18e112016-05-17 04:41:50 +00006826#define _mm512_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
6827 (__m512i)__builtin_ia32_shuf_i64x2_mask((__v8di)(__m512i)(A), \
6828 (__v8di)(__m512i)(B), (int)(imm), \
6829 (__v8di)_mm512_setzero_si512(), \
6830 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006831
Craig Topper8c18e112016-05-17 04:41:50 +00006832#define _mm512_shuffle_pd(M, V, imm) __extension__ ({ \
6833 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6834 (__v8df)(__m512d)(V), (int)(imm), \
6835 (__v8df)_mm512_undefined_pd(), \
6836 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006837
Craig Topper8c18e112016-05-17 04:41:50 +00006838#define _mm512_mask_shuffle_pd(W, U, M, V, imm) __extension__ ({ \
6839 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6840 (__v8df)(__m512d)(V), (int)(imm), \
6841 (__v8df)(__m512d)(W), \
6842 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006843
Craig Topper8c18e112016-05-17 04:41:50 +00006844#define _mm512_maskz_shuffle_pd(U, M, V, imm) __extension__ ({ \
6845 (__m512d)__builtin_ia32_shufpd512_mask((__v8df)(__m512d)(M), \
6846 (__v8df)(__m512d)(V), (int)(imm), \
6847 (__v8df)_mm512_setzero_pd(), \
6848 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006849
Craig Topper8c18e112016-05-17 04:41:50 +00006850#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
6851 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6852 (__v16sf)(__m512)(V), (int)(imm), \
6853 (__v16sf)_mm512_undefined_ps(), \
6854 (__mmask16)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006855
Craig Topper8c18e112016-05-17 04:41:50 +00006856#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
6857 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6858 (__v16sf)(__m512)(V), (int)(imm), \
6859 (__v16sf)(__m512)(W), \
6860 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006861
Craig Topper8c18e112016-05-17 04:41:50 +00006862#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
6863 (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
6864 (__v16sf)(__m512)(V), (int)(imm), \
6865 (__v16sf)_mm512_setzero_ps(), \
6866 (__mmask16)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006867
Craig Topper8c18e112016-05-17 04:41:50 +00006868#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
6869 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6870 (__v2df)(__m128d)(A), \
6871 (__v2df)_mm_setzero_pd(), \
6872 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006873
6874static __inline__ __m128d __DEFAULT_FN_ATTRS
6875_mm_mask_sqrt_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6876{
6877 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6878 (__v2df) __A,
6879 (__v2df) __W,
6880 (__mmask8) __U,
6881 _MM_FROUND_CUR_DIRECTION);
6882}
6883
Craig Topper8c18e112016-05-17 04:41:50 +00006884#define _mm_mask_sqrt_round_sd(W, U, A, B, R) __extension__ ({ \
6885 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6886 (__v2df)(__m128d)(A), \
6887 (__v2df)(__m128d)(W), \
6888 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006889
6890static __inline__ __m128d __DEFAULT_FN_ATTRS
6891_mm_maskz_sqrt_sd (__mmask8 __U, __m128d __A, __m128d __B)
6892{
6893 return (__m128d) __builtin_ia32_sqrtsd_round_mask ( (__v2df) __B,
6894 (__v2df) __A,
6895 (__v2df) _mm_setzero_pd (),
6896 (__mmask8) __U,
6897 _MM_FROUND_CUR_DIRECTION);
6898}
6899
Craig Topper8c18e112016-05-17 04:41:50 +00006900#define _mm_maskz_sqrt_round_sd(U, A, B, R) __extension__ ({ \
6901 (__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(B), \
6902 (__v2df)(__m128d)(A), \
6903 (__v2df)_mm_setzero_pd(), \
6904 (__mmask8)(U), (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006905
Craig Topper8c18e112016-05-17 04:41:50 +00006906#define _mm_sqrt_round_ss(A, B, R) __extension__ ({ \
6907 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6908 (__v4sf)(__m128)(A), \
6909 (__v4sf)_mm_setzero_ps(), \
6910 (__mmask8)-1, (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006911
6912static __inline__ __m128 __DEFAULT_FN_ATTRS
6913_mm_mask_sqrt_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6914{
6915 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __B,
6916 (__v4sf) __A,
6917 (__v4sf) __W,
6918 (__mmask8) __U,
6919 _MM_FROUND_CUR_DIRECTION);
6920}
6921
Craig Topper8c18e112016-05-17 04:41:50 +00006922#define _mm_mask_sqrt_round_ss(W, U, A, B, R) __extension__ ({ \
6923 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6924 (__v4sf)(__m128)(A), \
6925 (__v4sf)(__m128)(W), (__mmask8)(U), \
6926 (int)(R)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006927
6928static __inline__ __m128 __DEFAULT_FN_ATTRS
6929_mm_maskz_sqrt_ss (__mmask8 __U, __m128 __A, __m128 __B)
6930{
6931 return (__m128) __builtin_ia32_sqrtss_round_mask ( (__v4sf) __A,
6932 (__v4sf) __B,
6933 (__v4sf) _mm_setzero_ps (),
6934 (__mmask8) __U,
6935 _MM_FROUND_CUR_DIRECTION);
6936}
6937
Craig Topper8c18e112016-05-17 04:41:50 +00006938#define _mm_maskz_sqrt_round_ss(U, A, B, R) __extension__ ({ \
6939 (__m128)__builtin_ia32_sqrtss_round_mask((__v4sf)(__m128)(B), \
6940 (__v4sf)(__m128)(A), \
6941 (__v4sf)_mm_setzero_ps(), \
6942 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006943
Michael Zuckerman8c2900f2016-04-27 11:43:14 +00006944static __inline__ __m512 __DEFAULT_FN_ATTRS
6945_mm512_broadcast_f32x4 (__m128 __A)
6946{
6947 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6948 (__v16sf)
6949 _mm512_undefined_ps (),
6950 (__mmask16) -1);
6951}
6952
6953static __inline__ __m512 __DEFAULT_FN_ATTRS
6954_mm512_mask_broadcast_f32x4 (__m512 __O, __mmask16 __M, __m128 __A)
6955{
6956 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6957 (__v16sf) __O,
6958 __M);
6959}
6960
6961static __inline__ __m512 __DEFAULT_FN_ATTRS
6962_mm512_maskz_broadcast_f32x4 (__mmask16 __M, __m128 __A)
6963{
6964 return (__m512) __builtin_ia32_broadcastf32x4_512 ((__v4sf) __A,
6965 (__v16sf)
6966 _mm512_setzero_ps (),
6967 __M);
6968}
6969
6970static __inline__ __m512d __DEFAULT_FN_ATTRS
6971_mm512_broadcast_f64x4 (__m256d __A)
6972{
6973 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6974 (__v8df)
6975 _mm512_undefined_pd (),
6976 (__mmask8) -1);
6977}
6978
6979static __inline__ __m512d __DEFAULT_FN_ATTRS
6980_mm512_mask_broadcast_f64x4 (__m512d __O, __mmask8 __M, __m256d __A)
6981{
6982 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6983 (__v8df) __O,
6984 __M);
6985}
6986
6987static __inline__ __m512d __DEFAULT_FN_ATTRS
6988_mm512_maskz_broadcast_f64x4 (__mmask8 __M, __m256d __A)
6989{
6990 return (__m512d) __builtin_ia32_broadcastf64x4_512 ((__v4df) __A,
6991 (__v8df)
6992 _mm512_setzero_pd (),
6993 __M);
6994}
6995
6996static __inline__ __m512i __DEFAULT_FN_ATTRS
6997_mm512_broadcast_i32x4 (__m128i __A)
6998{
6999 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7000 (__v16si)
7001 _mm512_undefined_epi32 (),
7002 (__mmask16) -1);
7003}
7004
7005static __inline__ __m512i __DEFAULT_FN_ATTRS
7006_mm512_mask_broadcast_i32x4 (__m512i __O, __mmask16 __M, __m128i __A)
7007{
7008 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7009 (__v16si) __O,
7010 __M);
7011}
7012
7013static __inline__ __m512i __DEFAULT_FN_ATTRS
7014_mm512_maskz_broadcast_i32x4 (__mmask16 __M, __m128i __A)
7015{
7016 return (__m512i) __builtin_ia32_broadcasti32x4_512 ((__v4si) __A,
7017 (__v16si)
7018 _mm512_setzero_si512 (),
7019 __M);
7020}
7021
7022static __inline__ __m512i __DEFAULT_FN_ATTRS
7023_mm512_broadcast_i64x4 (__m256i __A)
7024{
7025 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7026 (__v8di)
7027 _mm512_undefined_epi32 (),
7028 (__mmask8) -1);
7029}
7030
7031static __inline__ __m512i __DEFAULT_FN_ATTRS
7032_mm512_mask_broadcast_i64x4 (__m512i __O, __mmask8 __M, __m256i __A)
7033{
7034 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7035 (__v8di) __O,
7036 __M);
7037}
7038
7039static __inline__ __m512i __DEFAULT_FN_ATTRS
7040_mm512_maskz_broadcast_i64x4 (__mmask8 __M, __m256i __A)
7041{
7042 return (__m512i) __builtin_ia32_broadcasti64x4_512 ((__v4di) __A,
7043 (__v8di)
7044 _mm512_setzero_si512 (),
7045 __M);
7046}
7047
7048static __inline__ __m512d __DEFAULT_FN_ATTRS
7049_mm512_mask_broadcastsd_pd (__m512d __O, __mmask8 __M, __m128d __A)
7050{
7051 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7052 (__v8df) __O, __M);
7053}
7054
7055static __inline__ __m512d __DEFAULT_FN_ATTRS
7056_mm512_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7057{
7058 return (__m512d) __builtin_ia32_broadcastsd512 ((__v2df) __A,
7059 (__v8df)
7060 _mm512_setzero_pd (),
7061 __M);
7062}
7063
7064static __inline__ __m512 __DEFAULT_FN_ATTRS
7065_mm512_mask_broadcastss_ps (__m512 __O, __mmask16 __M, __m128 __A)
7066{
7067 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7068 (__v16sf) __O, __M);
7069}
7070
7071static __inline__ __m512 __DEFAULT_FN_ATTRS
7072_mm512_maskz_broadcastss_ps (__mmask16 __M, __m128 __A)
7073{
7074 return (__m512) __builtin_ia32_broadcastss512 ((__v4sf) __A,
7075 (__v16sf)
7076 _mm512_setzero_ps (),
7077 __M);
7078}
7079
Michael Zuckermane1680612016-04-13 15:02:04 +00007080static __inline__ __m128i __DEFAULT_FN_ATTRS
7081_mm512_cvtsepi32_epi8 (__m512i __A)
7082{
7083 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7084 (__v16qi) _mm_undefined_si128 (),
7085 (__mmask16) -1);
7086}
7087
7088static __inline__ __m128i __DEFAULT_FN_ATTRS
7089_mm512_mask_cvtsepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7090{
7091 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7092 (__v16qi) __O, __M);
7093}
7094
7095static __inline__ __m128i __DEFAULT_FN_ATTRS
7096_mm512_maskz_cvtsepi32_epi8 (__mmask16 __M, __m512i __A)
7097{
7098 return (__m128i) __builtin_ia32_pmovsdb512_mask ((__v16si) __A,
7099 (__v16qi) _mm_setzero_si128 (),
7100 __M);
7101}
7102
7103static __inline__ void __DEFAULT_FN_ATTRS
7104_mm512_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7105{
7106 __builtin_ia32_pmovsdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7107}
7108
7109static __inline__ __m256i __DEFAULT_FN_ATTRS
7110_mm512_cvtsepi32_epi16 (__m512i __A)
7111{
7112 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7113 (__v16hi) _mm256_undefined_si256 (),
7114 (__mmask16) -1);
7115}
7116
7117static __inline__ __m256i __DEFAULT_FN_ATTRS
7118_mm512_mask_cvtsepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7119{
7120 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7121 (__v16hi) __O, __M);
7122}
7123
7124static __inline__ __m256i __DEFAULT_FN_ATTRS
7125_mm512_maskz_cvtsepi32_epi16 (__mmask16 __M, __m512i __A)
7126{
7127 return (__m256i) __builtin_ia32_pmovsdw512_mask ((__v16si) __A,
7128 (__v16hi) _mm256_setzero_si256 (),
7129 __M);
7130}
7131
7132static __inline__ void __DEFAULT_FN_ATTRS
7133_mm512_mask_cvtsepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7134{
7135 __builtin_ia32_pmovsdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7136}
7137
7138static __inline__ __m128i __DEFAULT_FN_ATTRS
7139_mm512_cvtsepi64_epi8 (__m512i __A)
7140{
7141 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7142 (__v16qi) _mm_undefined_si128 (),
7143 (__mmask8) -1);
7144}
7145
7146static __inline__ __m128i __DEFAULT_FN_ATTRS
7147_mm512_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7148{
7149 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7150 (__v16qi) __O, __M);
7151}
7152
7153static __inline__ __m128i __DEFAULT_FN_ATTRS
7154_mm512_maskz_cvtsepi64_epi8 (__mmask8 __M, __m512i __A)
7155{
7156 return (__m128i) __builtin_ia32_pmovsqb512_mask ((__v8di) __A,
7157 (__v16qi) _mm_setzero_si128 (),
7158 __M);
7159}
7160
7161static __inline__ void __DEFAULT_FN_ATTRS
7162_mm512_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7163{
7164 __builtin_ia32_pmovsqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7165}
7166
7167static __inline__ __m256i __DEFAULT_FN_ATTRS
7168_mm512_cvtsepi64_epi32 (__m512i __A)
7169{
7170 __v8si __O;
7171 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7172 (__v8si) _mm256_undefined_si256 (),
7173 (__mmask8) -1);
7174}
7175
7176static __inline__ __m256i __DEFAULT_FN_ATTRS
7177_mm512_mask_cvtsepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7178{
7179 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7180 (__v8si) __O, __M);
7181}
7182
7183static __inline__ __m256i __DEFAULT_FN_ATTRS
7184_mm512_maskz_cvtsepi64_epi32 (__mmask8 __M, __m512i __A)
7185{
7186 return (__m256i) __builtin_ia32_pmovsqd512_mask ((__v8di) __A,
7187 (__v8si) _mm256_setzero_si256 (),
7188 __M);
7189}
7190
7191static __inline__ void __DEFAULT_FN_ATTRS
7192_mm512_mask_cvtsepi64_storeu_epi32 (void *__P, __mmask8 __M, __m512i __A)
7193{
7194 __builtin_ia32_pmovsqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7195}
7196
7197static __inline__ __m128i __DEFAULT_FN_ATTRS
7198_mm512_cvtsepi64_epi16 (__m512i __A)
7199{
7200 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7201 (__v8hi) _mm_undefined_si128 (),
7202 (__mmask8) -1);
7203}
7204
7205static __inline__ __m128i __DEFAULT_FN_ATTRS
7206_mm512_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7207{
7208 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7209 (__v8hi) __O, __M);
7210}
7211
7212static __inline__ __m128i __DEFAULT_FN_ATTRS
7213_mm512_maskz_cvtsepi64_epi16 (__mmask8 __M, __m512i __A)
7214{
7215 return (__m128i) __builtin_ia32_pmovsqw512_mask ((__v8di) __A,
7216 (__v8hi) _mm_setzero_si128 (),
7217 __M);
7218}
7219
7220static __inline__ void __DEFAULT_FN_ATTRS
7221_mm512_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m512i __A)
7222{
7223 __builtin_ia32_pmovsqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7224}
7225
Michael Zuckermand8715312016-04-14 06:48:09 +00007226static __inline__ __m128i __DEFAULT_FN_ATTRS
7227_mm512_cvtusepi32_epi8 (__m512i __A)
7228{
7229 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7230 (__v16qi) _mm_undefined_si128 (),
7231 (__mmask16) -1);
7232}
7233
7234static __inline__ __m128i __DEFAULT_FN_ATTRS
7235_mm512_mask_cvtusepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7236{
7237 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7238 (__v16qi) __O,
7239 __M);
7240}
7241
7242static __inline__ __m128i __DEFAULT_FN_ATTRS
7243_mm512_maskz_cvtusepi32_epi8 (__mmask16 __M, __m512i __A)
7244{
7245 return (__m128i) __builtin_ia32_pmovusdb512_mask ((__v16si) __A,
7246 (__v16qi) _mm_setzero_si128 (),
7247 __M);
7248}
7249
7250static __inline__ void __DEFAULT_FN_ATTRS
7251_mm512_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7252{
7253 __builtin_ia32_pmovusdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7254}
7255
7256static __inline__ __m256i __DEFAULT_FN_ATTRS
7257_mm512_cvtusepi32_epi16 (__m512i __A)
7258{
7259 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7260 (__v16hi) _mm256_undefined_si256 (),
7261 (__mmask16) -1);
7262}
7263
7264static __inline__ __m256i __DEFAULT_FN_ATTRS
7265_mm512_mask_cvtusepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7266{
7267 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7268 (__v16hi) __O,
7269 __M);
7270}
7271
7272static __inline__ __m256i __DEFAULT_FN_ATTRS
7273_mm512_maskz_cvtusepi32_epi16 (__mmask16 __M, __m512i __A)
7274{
7275 return (__m256i) __builtin_ia32_pmovusdw512_mask ((__v16si) __A,
7276 (__v16hi) _mm256_setzero_si256 (),
7277 __M);
7278}
7279
7280static __inline__ void __DEFAULT_FN_ATTRS
7281_mm512_mask_cvtusepi32_storeu_epi16 (void *__P, __mmask16 __M, __m512i __A)
7282{
7283 __builtin_ia32_pmovusdw512mem_mask ((__v16hi*) __P, (__v16si) __A, __M);
7284}
7285
7286static __inline__ __m128i __DEFAULT_FN_ATTRS
7287_mm512_cvtusepi64_epi8 (__m512i __A)
7288{
7289 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7290 (__v16qi) _mm_undefined_si128 (),
7291 (__mmask8) -1);
7292}
7293
7294static __inline__ __m128i __DEFAULT_FN_ATTRS
7295_mm512_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7296{
7297 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7298 (__v16qi) __O,
7299 __M);
7300}
7301
7302static __inline__ __m128i __DEFAULT_FN_ATTRS
7303_mm512_maskz_cvtusepi64_epi8 (__mmask8 __M, __m512i __A)
7304{
7305 return (__m128i) __builtin_ia32_pmovusqb512_mask ((__v8di) __A,
7306 (__v16qi) _mm_setzero_si128 (),
7307 __M);
7308}
7309
7310static __inline__ void __DEFAULT_FN_ATTRS
7311_mm512_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7312{
7313 __builtin_ia32_pmovusqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7314}
7315
7316static __inline__ __m256i __DEFAULT_FN_ATTRS
7317_mm512_cvtusepi64_epi32 (__m512i __A)
7318{
7319 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7320 (__v8si) _mm256_undefined_si256 (),
7321 (__mmask8) -1);
7322}
7323
7324static __inline__ __m256i __DEFAULT_FN_ATTRS
7325_mm512_mask_cvtusepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7326{
7327 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7328 (__v8si) __O, __M);
7329}
7330
7331static __inline__ __m256i __DEFAULT_FN_ATTRS
7332_mm512_maskz_cvtusepi64_epi32 (__mmask8 __M, __m512i __A)
7333{
7334 return (__m256i) __builtin_ia32_pmovusqd512_mask ((__v8di) __A,
7335 (__v8si) _mm256_setzero_si256 (),
7336 __M);
7337}
7338
7339static __inline__ void __DEFAULT_FN_ATTRS
7340_mm512_mask_cvtusepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7341{
7342 __builtin_ia32_pmovusqd512mem_mask ((__v8si*) __P, (__v8di) __A, __M);
7343}
7344
7345static __inline__ __m128i __DEFAULT_FN_ATTRS
7346_mm512_cvtusepi64_epi16 (__m512i __A)
7347{
7348 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7349 (__v8hi) _mm_undefined_si128 (),
7350 (__mmask8) -1);
7351}
7352
7353static __inline__ __m128i __DEFAULT_FN_ATTRS
7354_mm512_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7355{
7356 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7357 (__v8hi) __O, __M);
7358}
7359
7360static __inline__ __m128i __DEFAULT_FN_ATTRS
7361_mm512_maskz_cvtusepi64_epi16 (__mmask8 __M, __m512i __A)
7362{
7363 return (__m128i) __builtin_ia32_pmovusqw512_mask ((__v8di) __A,
7364 (__v8hi) _mm_setzero_si128 (),
7365 __M);
7366}
7367
7368static __inline__ void __DEFAULT_FN_ATTRS
7369_mm512_mask_cvtusepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7370{
7371 __builtin_ia32_pmovusqw512mem_mask ((__v8hi*) __P, (__v8di) __A, __M);
7372}
7373
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007374static __inline__ __m128i __DEFAULT_FN_ATTRS
7375_mm512_cvtepi32_epi8 (__m512i __A)
7376{
7377 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7378 (__v16qi) _mm_undefined_si128 (),
7379 (__mmask16) -1);
7380}
7381
7382static __inline__ __m128i __DEFAULT_FN_ATTRS
7383_mm512_mask_cvtepi32_epi8 (__m128i __O, __mmask16 __M, __m512i __A)
7384{
7385 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7386 (__v16qi) __O, __M);
7387}
7388
7389static __inline__ __m128i __DEFAULT_FN_ATTRS
7390_mm512_maskz_cvtepi32_epi8 (__mmask16 __M, __m512i __A)
7391{
7392 return (__m128i) __builtin_ia32_pmovdb512_mask ((__v16si) __A,
7393 (__v16qi) _mm_setzero_si128 (),
7394 __M);
7395}
7396
7397static __inline__ void __DEFAULT_FN_ATTRS
7398_mm512_mask_cvtepi32_storeu_epi8 (void * __P, __mmask16 __M, __m512i __A)
7399{
7400 __builtin_ia32_pmovdb512mem_mask ((__v16qi *) __P, (__v16si) __A, __M);
7401}
7402
7403static __inline__ __m256i __DEFAULT_FN_ATTRS
7404_mm512_cvtepi32_epi16 (__m512i __A)
7405{
7406 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7407 (__v16hi) _mm256_undefined_si256 (),
7408 (__mmask16) -1);
7409}
7410
7411static __inline__ __m256i __DEFAULT_FN_ATTRS
7412_mm512_mask_cvtepi32_epi16 (__m256i __O, __mmask16 __M, __m512i __A)
7413{
7414 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7415 (__v16hi) __O, __M);
7416}
7417
7418static __inline__ __m256i __DEFAULT_FN_ATTRS
7419_mm512_maskz_cvtepi32_epi16 (__mmask16 __M, __m512i __A)
7420{
7421 return (__m256i) __builtin_ia32_pmovdw512_mask ((__v16si) __A,
7422 (__v16hi) _mm256_setzero_si256 (),
7423 __M);
7424}
7425
7426static __inline__ void __DEFAULT_FN_ATTRS
7427_mm512_mask_cvtepi32_storeu_epi16 (void * __P, __mmask16 __M, __m512i __A)
7428{
7429 __builtin_ia32_pmovdw512mem_mask ((__v16hi *) __P, (__v16si) __A, __M);
7430}
7431
7432static __inline__ __m128i __DEFAULT_FN_ATTRS
7433_mm512_cvtepi64_epi8 (__m512i __A)
7434{
7435 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7436 (__v16qi) _mm_undefined_si128 (),
7437 (__mmask8) -1);
7438}
7439
7440static __inline__ __m128i __DEFAULT_FN_ATTRS
7441_mm512_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m512i __A)
7442{
7443 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7444 (__v16qi) __O, __M);
7445}
7446
7447static __inline__ __m128i __DEFAULT_FN_ATTRS
7448_mm512_maskz_cvtepi64_epi8 (__mmask8 __M, __m512i __A)
7449{
7450 return (__m128i) __builtin_ia32_pmovqb512_mask ((__v8di) __A,
7451 (__v16qi) _mm_setzero_si128 (),
7452 __M);
7453}
7454
7455static __inline__ void __DEFAULT_FN_ATTRS
7456_mm512_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m512i __A)
7457{
7458 __builtin_ia32_pmovqb512mem_mask ((__v16qi *) __P, (__v8di) __A, __M);
7459}
7460
7461static __inline__ __m256i __DEFAULT_FN_ATTRS
7462_mm512_cvtepi64_epi32 (__m512i __A)
7463{
7464 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7465 (__v8si) _mm256_undefined_si256 (),
7466 (__mmask8) -1);
7467}
7468
7469static __inline__ __m256i __DEFAULT_FN_ATTRS
7470_mm512_mask_cvtepi64_epi32 (__m256i __O, __mmask8 __M, __m512i __A)
7471{
7472 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7473 (__v8si) __O, __M);
7474}
7475
7476static __inline__ __m256i __DEFAULT_FN_ATTRS
7477_mm512_maskz_cvtepi64_epi32 (__mmask8 __M, __m512i __A)
7478{
7479 return (__m256i) __builtin_ia32_pmovqd512_mask ((__v8di) __A,
7480 (__v8si) _mm256_setzero_si256 (),
7481 __M);
7482}
7483
7484static __inline__ void __DEFAULT_FN_ATTRS
7485_mm512_mask_cvtepi64_storeu_epi32 (void* __P, __mmask8 __M, __m512i __A)
7486{
7487 __builtin_ia32_pmovqd512mem_mask ((__v8si *) __P, (__v8di) __A, __M);
7488}
7489
7490static __inline__ __m128i __DEFAULT_FN_ATTRS
7491_mm512_cvtepi64_epi16 (__m512i __A)
7492{
7493 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7494 (__v8hi) _mm_undefined_si128 (),
7495 (__mmask8) -1);
7496}
7497
7498static __inline__ __m128i __DEFAULT_FN_ATTRS
7499_mm512_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m512i __A)
7500{
7501 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7502 (__v8hi) __O, __M);
7503}
7504
7505static __inline__ __m128i __DEFAULT_FN_ATTRS
7506_mm512_maskz_cvtepi64_epi16 (__mmask8 __M, __m512i __A)
7507{
7508 return (__m128i) __builtin_ia32_pmovqw512_mask ((__v8di) __A,
7509 (__v8hi) _mm_setzero_si128 (),
7510 __M);
7511}
7512
7513static __inline__ void __DEFAULT_FN_ATTRS
7514_mm512_mask_cvtepi64_storeu_epi16 (void *__P, __mmask8 __M, __m512i __A)
7515{
7516 __builtin_ia32_pmovqw512mem_mask ((__v8hi *) __P, (__v8di) __A, __M);
7517}
7518
Craig Topper8c18e112016-05-17 04:41:50 +00007519#define _mm512_extracti32x4_epi32(A, imm) __extension__ ({ \
7520 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7521 (__v4si)_mm_undefined_si128(), \
7522 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007523
Craig Topper8c18e112016-05-17 04:41:50 +00007524#define _mm512_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
7525 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7526 (__v4si)(__m128i)(W), \
7527 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007528
Craig Topper8c18e112016-05-17 04:41:50 +00007529#define _mm512_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
7530 (__m128i)__builtin_ia32_extracti32x4_mask((__v16si)(__m512i)(A), (int)(imm), \
7531 (__v4si)_mm_setzero_si128(), \
7532 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007533
Craig Topper8c18e112016-05-17 04:41:50 +00007534#define _mm512_extracti64x4_epi64(A, imm) __extension__ ({ \
7535 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7536 (__v4di)_mm256_undefined_si256(), \
7537 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007538
Craig Topper8c18e112016-05-17 04:41:50 +00007539#define _mm512_mask_extracti64x4_epi64(W, U, A, imm) __extension__ ({ \
7540 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7541 (__v4di)(__m256i)(W), \
7542 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007543
Craig Topper8c18e112016-05-17 04:41:50 +00007544#define _mm512_maskz_extracti64x4_epi64(U, A, imm) __extension__ ({ \
7545 (__m256i)__builtin_ia32_extracti64x4_mask((__v8di)(__m512i)(A), (int)(imm), \
7546 (__v4di)_mm256_setzero_si256(), \
7547 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007548
Craig Topper8c18e112016-05-17 04:41:50 +00007549#define _mm512_insertf64x4(A, B, imm) __extension__ ({ \
7550 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7551 (__v4df)(__m256d)(B), (int)(imm), \
7552 (__v8df)_mm512_undefined_pd(), \
7553 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007554
Craig Topper8c18e112016-05-17 04:41:50 +00007555#define _mm512_mask_insertf64x4(W, U, A, B, imm) __extension__ ({ \
7556 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7557 (__v4df)(__m256d)(B), (int)(imm), \
7558 (__v8df)(__m512d)(W), \
7559 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007560
Craig Topper8c18e112016-05-17 04:41:50 +00007561#define _mm512_maskz_insertf64x4(U, A, B, imm) __extension__ ({ \
7562 (__m512d)__builtin_ia32_insertf64x4_mask((__v8df)(__m512d)(A), \
7563 (__v4df)(__m256d)(B), (int)(imm), \
7564 (__v8df)_mm512_setzero_pd(), \
7565 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007566
Craig Topper8c18e112016-05-17 04:41:50 +00007567#define _mm512_inserti64x4(A, B, imm) __extension__ ({ \
7568 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7569 (__v4di)(__m256i)(B), (int)(imm), \
7570 (__v8di)_mm512_setzero_si512(), \
7571 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007572
Craig Topper8c18e112016-05-17 04:41:50 +00007573#define _mm512_mask_inserti64x4(W, U, A, B, imm) __extension__ ({ \
7574 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7575 (__v4di)(__m256i)(B), (int)(imm), \
7576 (__v8di)(__m512i)(W), \
7577 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007578
Craig Topper8c18e112016-05-17 04:41:50 +00007579#define _mm512_maskz_inserti64x4(U, A, B, imm) __extension__ ({ \
7580 (__m512i)__builtin_ia32_inserti64x4_mask((__v8di)(__m512i)(A), \
7581 (__v4di)(__m256i)(B), (int)(imm), \
7582 (__v8di)_mm512_setzero_si512(), \
7583 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007584
Craig Topper8c18e112016-05-17 04:41:50 +00007585#define _mm512_insertf32x4(A, B, imm) __extension__ ({ \
7586 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7587 (__v4sf)(__m128)(B), (int)(imm), \
7588 (__v16sf)_mm512_undefined_ps(), \
7589 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007590
Craig Topper8c18e112016-05-17 04:41:50 +00007591#define _mm512_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
7592 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7593 (__v4sf)(__m128)(B), (int)(imm), \
7594 (__v16sf)(__m512)(W), \
7595 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007596
Craig Topper8c18e112016-05-17 04:41:50 +00007597#define _mm512_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
7598 (__m512)__builtin_ia32_insertf32x4_mask((__v16sf)(__m512)(A), \
7599 (__v4sf)(__m128)(B), (int)(imm), \
7600 (__v16sf)_mm512_setzero_ps(), \
7601 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007602
Craig Topper8c18e112016-05-17 04:41:50 +00007603#define _mm512_inserti32x4(A, B, imm) __extension__ ({ \
7604 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7605 (__v4si)(__m128i)(B), (int)(imm), \
7606 (__v16si)_mm512_setzero_si512(), \
7607 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00007608
Craig Topper8c18e112016-05-17 04:41:50 +00007609#define _mm512_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
7610 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7611 (__v4si)(__m128i)(B), (int)(imm), \
7612 (__v16si)(__m512i)(W), \
7613 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007614
Craig Topper8c18e112016-05-17 04:41:50 +00007615#define _mm512_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
7616 (__m512i)__builtin_ia32_inserti32x4_mask((__v16si)(__m512i)(A), \
7617 (__v4si)(__m128i)(B), (int)(imm), \
7618 (__v16si)_mm512_setzero_si512(), \
7619 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00007620
Craig Topper8c18e112016-05-17 04:41:50 +00007621#define _mm512_getmant_round_pd(A, B, C, R) __extension__ ({ \
7622 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7623 (int)(((C)<<2) | (B)), \
7624 (__v8df)_mm512_undefined_pd(), \
7625 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007626
Craig Topper8c18e112016-05-17 04:41:50 +00007627#define _mm512_mask_getmant_round_pd(W, U, A, B, C, R) __extension__ ({ \
7628 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7629 (int)(((C)<<2) | (B)), \
7630 (__v8df)(__m512d)(W), \
7631 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007632
Craig Topper8c18e112016-05-17 04:41:50 +00007633#define _mm512_maskz_getmant_round_pd(U, A, B, C, R) __extension__ ({ \
7634 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7635 (int)(((C)<<2) | (B)), \
7636 (__v8df)_mm512_setzero_pd(), \
7637 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007638
Craig Topper8c18e112016-05-17 04:41:50 +00007639#define _mm512_getmant_pd(A, B, C) __extension__ ({ \
7640 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7641 (int)(((C)<<2) | (B)), \
7642 (__v8df)_mm512_setzero_pd(), \
7643 (__mmask8)-1, \
7644 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007645
Craig Topper8c18e112016-05-17 04:41:50 +00007646#define _mm512_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7647 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7648 (int)(((C)<<2) | (B)), \
7649 (__v8df)(__m512d)(W), \
7650 (__mmask8)(U), \
7651 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007652
Craig Topper8c18e112016-05-17 04:41:50 +00007653#define _mm512_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7654 (__m512d)__builtin_ia32_getmantpd512_mask((__v8df)(__m512d)(A), \
7655 (int)(((C)<<2) | (B)), \
7656 (__v8df)_mm512_setzero_pd(), \
7657 (__mmask8)(U), \
7658 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007659
Craig Topper8c18e112016-05-17 04:41:50 +00007660#define _mm512_getmant_round_ps(A, B, C, R) __extension__ ({ \
7661 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7662 (int)(((C)<<2) | (B)), \
7663 (__v16sf)_mm512_undefined_ps(), \
7664 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007665
Craig Topper8c18e112016-05-17 04:41:50 +00007666#define _mm512_mask_getmant_round_ps(W, U, A, B, C, R) __extension__ ({ \
7667 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7668 (int)(((C)<<2) | (B)), \
7669 (__v16sf)(__m512)(W), \
7670 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007671
Craig Topper8c18e112016-05-17 04:41:50 +00007672#define _mm512_maskz_getmant_round_ps(U, A, B, C, R) __extension__ ({ \
7673 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7674 (int)(((C)<<2) | (B)), \
7675 (__v16sf)_mm512_setzero_ps(), \
7676 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007677
Craig Topper8c18e112016-05-17 04:41:50 +00007678#define _mm512_getmant_ps(A, B, C) __extension__ ({ \
7679 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7680 (int)(((C)<<2)|(B)), \
7681 (__v16sf)_mm512_undefined_ps(), \
7682 (__mmask16)-1, \
7683 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007684
Craig Topper8c18e112016-05-17 04:41:50 +00007685#define _mm512_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7686 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7687 (int)(((C)<<2)|(B)), \
7688 (__v16sf)(__m512)(W), \
7689 (__mmask16)(U), \
7690 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007691
Craig Topper8c18e112016-05-17 04:41:50 +00007692#define _mm512_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7693 (__m512)__builtin_ia32_getmantps512_mask((__v16sf)(__m512)(A), \
7694 (int)(((C)<<2)|(B)), \
7695 (__v16sf)_mm512_setzero_ps(), \
7696 (__mmask16)(U), \
7697 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007698
Craig Topper8c18e112016-05-17 04:41:50 +00007699#define _mm512_getexp_round_pd(A, R) __extension__ ({ \
7700 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7701 (__v8df)_mm512_undefined_pd(), \
7702 (__mmask8)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007703
Craig Topper8c18e112016-05-17 04:41:50 +00007704#define _mm512_mask_getexp_round_pd(W, U, A, R) __extension__ ({ \
7705 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7706 (__v8df)(__m512d)(W), \
7707 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007708
Craig Topper8c18e112016-05-17 04:41:50 +00007709#define _mm512_maskz_getexp_round_pd(U, A, R) __extension__ ({ \
7710 (__m512d)__builtin_ia32_getexppd512_mask((__v8df)(__m512d)(A), \
7711 (__v8df)_mm512_setzero_pd(), \
7712 (__mmask8)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007713
7714static __inline__ __m512d __DEFAULT_FN_ATTRS
7715_mm512_getexp_pd (__m512d __A)
7716{
7717 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7718 (__v8df) _mm512_undefined_pd (),
7719 (__mmask8) -1,
7720 _MM_FROUND_CUR_DIRECTION);
7721}
7722
7723static __inline__ __m512d __DEFAULT_FN_ATTRS
7724_mm512_mask_getexp_pd (__m512d __W, __mmask8 __U, __m512d __A)
7725{
7726 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7727 (__v8df) __W,
7728 (__mmask8) __U,
7729 _MM_FROUND_CUR_DIRECTION);
7730}
7731
7732static __inline__ __m512d __DEFAULT_FN_ATTRS
7733_mm512_maskz_getexp_pd (__mmask8 __U, __m512d __A)
7734{
7735 return (__m512d) __builtin_ia32_getexppd512_mask ((__v8df) __A,
7736 (__v8df) _mm512_setzero_pd (),
7737 (__mmask8) __U,
7738 _MM_FROUND_CUR_DIRECTION);
7739}
7740
Craig Topper8c18e112016-05-17 04:41:50 +00007741#define _mm512_getexp_round_ps(A, R) __extension__ ({ \
7742 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7743 (__v16sf)_mm512_undefined_ps(), \
7744 (__mmask16)-1, (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007745
Craig Topper8c18e112016-05-17 04:41:50 +00007746#define _mm512_mask_getexp_round_ps(W, U, A, R) __extension__ ({ \
7747 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7748 (__v16sf)(__m512)(W), \
7749 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007750
Craig Topper8c18e112016-05-17 04:41:50 +00007751#define _mm512_maskz_getexp_round_ps(U, A, R) __extension__ ({ \
7752 (__m512)__builtin_ia32_getexpps512_mask((__v16sf)(__m512)(A), \
7753 (__v16sf)_mm512_setzero_ps(), \
7754 (__mmask16)(U), (int)(R)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007755
7756static __inline__ __m512 __DEFAULT_FN_ATTRS
7757_mm512_getexp_ps (__m512 __A)
7758{
7759 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7760 (__v16sf) _mm512_undefined_ps (),
7761 (__mmask16) -1,
7762 _MM_FROUND_CUR_DIRECTION);
7763}
7764
7765static __inline__ __m512 __DEFAULT_FN_ATTRS
7766_mm512_mask_getexp_ps (__m512 __W, __mmask16 __U, __m512 __A)
7767{
7768 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7769 (__v16sf) __W,
7770 (__mmask16) __U,
7771 _MM_FROUND_CUR_DIRECTION);
7772}
7773
7774static __inline__ __m512 __DEFAULT_FN_ATTRS
7775_mm512_maskz_getexp_ps (__mmask16 __U, __m512 __A)
7776{
7777 return (__m512) __builtin_ia32_getexpps512_mask ((__v16sf) __A,
7778 (__v16sf) _mm512_setzero_ps (),
7779 (__mmask16) __U,
7780 _MM_FROUND_CUR_DIRECTION);
7781}
7782
Craig Topper8c18e112016-05-17 04:41:50 +00007783#define _mm512_i64gather_ps(index, addr, scale) __extension__ ({ \
7784 (__m256)__builtin_ia32_gatherdiv16sf((__v8sf)_mm256_undefined_ps(), \
7785 (float const *)(addr), \
7786 (__v8di)(__m512i)(index), (__mmask8)-1, \
7787 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007788
7789#define _mm512_mask_i64gather_ps( __v1_old, __mask, __index,\
7790 __addr, __scale) __extension__({\
7791__builtin_ia32_gatherdiv16sf ((__v8sf) __v1_old,\
7792 __addr,(__v8di) __index, __mask, __scale);\
7793})
7794
Craig Topper8c18e112016-05-17 04:41:50 +00007795#define _mm512_i64gather_epi32(index, addr, scale) __extension__ ({\
7796 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)_mm256_undefined_ps(), \
7797 (int const *)(addr), \
7798 (__v8di)(__m512i)(index), \
7799 (__mmask8)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007800
Craig Topper8c18e112016-05-17 04:41:50 +00007801#define _mm512_mask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7802 (__m256i)__builtin_ia32_gatherdiv16si((__v8si)(__m256i)(v1_old), \
7803 (int const *)(addr), \
7804 (__v8di)(__m512i)(index), \
7805 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007806
Craig Topper8c18e112016-05-17 04:41:50 +00007807#define _mm512_i64gather_pd(index, addr, scale) __extension__ ({\
7808 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)_mm512_undefined_pd(), \
7809 (double const *)(addr), \
7810 (__v8di)(__m512i)(index), (__mmask8)-1, \
7811 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007812
Craig Topper8c18e112016-05-17 04:41:50 +00007813#define _mm512_mask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7814 (__m512d)__builtin_ia32_gatherdiv8df((__v8df)(__m512d)(v1_old), \
7815 (double const *)(addr), \
7816 (__v8di)(__m512i)(index), \
7817 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007818
Craig Topper8c18e112016-05-17 04:41:50 +00007819#define _mm512_i64gather_epi64(index, addr, scale) __extension__ ({\
7820 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)_mm512_undefined_pd(), \
7821 (long long const *)(addr), \
7822 (__v8di)(__m512i)(index), (__mmask8)-1, \
7823 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007824
Craig Topper8c18e112016-05-17 04:41:50 +00007825#define _mm512_mask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7826 (__m512i)__builtin_ia32_gatherdiv8di((__v8di)(__m512i)(v1_old), \
7827 (long long const *)(addr), \
7828 (__v8di)(__m512i)(index), \
7829 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007830
Craig Topper8c18e112016-05-17 04:41:50 +00007831#define _mm512_i32gather_ps(index, addr, scale) __extension__ ({\
7832 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)_mm512_undefined_ps(), \
7833 (float const *)(addr), \
7834 (__v16sf)(__m512)(index), \
7835 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007836
Craig Topper8c18e112016-05-17 04:41:50 +00007837#define _mm512_mask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7838 (__m512)__builtin_ia32_gathersiv16sf((__v16sf)(__m512)(v1_old), \
7839 (float const *)(addr), \
7840 (__v16sf)(__m512)(index), \
7841 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007842
Craig Topper8c18e112016-05-17 04:41:50 +00007843#define _mm512_i32gather_epi32(index, addr, scale) __extension__ ({\
7844 (__m512i)__builtin_ia32_gathersiv16si((__v16si)_mm512_undefined_epi32(), \
7845 (int const *)(addr), \
7846 (__v16si)(__m512i)(index), \
7847 (__mmask16)-1, (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007848
Craig Topper8c18e112016-05-17 04:41:50 +00007849#define _mm512_mask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7850 (__m512i)__builtin_ia32_gathersiv16si((__v16si)(__m512i)(v1_old), \
7851 (int const *)(addr), \
7852 (__v16si)(__m512i)(index), \
7853 (__mmask16)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007854
Craig Topper8c18e112016-05-17 04:41:50 +00007855#define _mm512_i32gather_pd(index, addr, scale) __extension__ ({\
7856 (__m512d)__builtin_ia32_gathersiv8df((__v8df)_mm512_undefined_pd(), \
7857 (double const *)(addr), \
7858 (__v8si)(__m256i)(index), (__mmask8)-1, \
7859 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007860
Craig Topper8c18e112016-05-17 04:41:50 +00007861#define _mm512_mask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7862 (__m512d)__builtin_ia32_gathersiv8df((__v8df)(__m512d)(v1_old), \
7863 (double const *)(addr), \
7864 (__v8si)(__m256i)(index), \
7865 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007866
Craig Topper8c18e112016-05-17 04:41:50 +00007867#define _mm512_i32gather_epi64(index, addr, scale) __extension__ ({\
7868 (__m512i)__builtin_ia32_gathersiv8di((__v8di)_mm512_undefined_epi32(), \
7869 (long long const *)(addr), \
7870 (__v8si)(__m256i)(index), (__mmask8)-1, \
7871 (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007872
Craig Topper8c18e112016-05-17 04:41:50 +00007873#define _mm512_mask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7874 (__m512i)__builtin_ia32_gathersiv8di((__v8di)(__m512i)(v1_old), \
7875 (long long const *)(addr), \
7876 (__v8si)(__m256i)(index), \
7877 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007878
Craig Topper8c18e112016-05-17 04:41:50 +00007879#define _mm512_i64scatter_ps(addr, index, v1, scale) __extension__ ({\
7880 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)-1, \
7881 (__v8di)(__m512i)(index), \
7882 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007883
Craig Topper8c18e112016-05-17 04:41:50 +00007884#define _mm512_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7885 __builtin_ia32_scatterdiv16sf((float *)(addr), (__mmask8)(mask), \
7886 (__v8di)(__m512i)(index), \
7887 (__v8sf)(__m256)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007888
Craig Topper8c18e112016-05-17 04:41:50 +00007889#define _mm512_i64scatter_epi32(addr, index, v1, scale) __extension__ ({\
7890 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)-1, \
7891 (__v8di)(__m512i)(index), \
7892 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007893
Craig Topper8c18e112016-05-17 04:41:50 +00007894#define _mm512_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7895 __builtin_ia32_scatterdiv16si((int *)(addr), (__mmask8)(mask), \
7896 (__v8di)(__m512i)(index), \
7897 (__v8si)(__m256i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007898
Craig Topper8c18e112016-05-17 04:41:50 +00007899#define _mm512_i64scatter_pd(addr, index, v1, scale) __extension__ ({\
7900 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)-1, \
7901 (__v8di)(__m512i)(index), \
7902 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007903
Craig Topper8c18e112016-05-17 04:41:50 +00007904#define _mm512_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7905 __builtin_ia32_scatterdiv8df((double *)(addr), (__mmask8)(mask), \
7906 (__v8di)(__m512i)(index), \
7907 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007908
Craig Topper8c18e112016-05-17 04:41:50 +00007909#define _mm512_i64scatter_epi64(addr, index, v1, scale) __extension__ ({\
7910 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)-1, \
7911 (__v8di)(__m512i)(index), \
7912 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007913
Craig Topper8c18e112016-05-17 04:41:50 +00007914#define _mm512_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7915 __builtin_ia32_scatterdiv8di((long long *)(addr), (__mmask8)(mask), \
7916 (__v8di)(__m512i)(index), \
7917 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007918
Craig Topper8c18e112016-05-17 04:41:50 +00007919#define _mm512_i32scatter_ps(addr, index, v1, scale) __extension__ ({\
7920 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)-1, \
7921 (__v16si)(__m512i)(index), \
7922 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007923
Craig Topper8c18e112016-05-17 04:41:50 +00007924#define _mm512_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({\
7925 __builtin_ia32_scattersiv16sf((float *)(addr), (__mmask16)(mask), \
7926 (__v16si)(__m512i)(index), \
7927 (__v16sf)(__m512)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007928
Craig Topper8c18e112016-05-17 04:41:50 +00007929#define _mm512_i32scatter_epi32(addr, index, v1, scale) __extension__ ({\
7930 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)-1, \
7931 (__v16si)(__m512i)(index), \
7932 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007933
Craig Topper8c18e112016-05-17 04:41:50 +00007934#define _mm512_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({\
7935 __builtin_ia32_scattersiv16si((int *)(addr), (__mmask16)(mask), \
7936 (__v16si)(__m512i)(index), \
7937 (__v16si)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007938
Craig Topper8c18e112016-05-17 04:41:50 +00007939#define _mm512_i32scatter_pd(addr, index, v1, scale) __extension__ ({\
7940 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)-1, \
7941 (__v8si)(__m256i)(index), \
7942 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007943
Craig Topper8c18e112016-05-17 04:41:50 +00007944#define _mm512_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({\
7945 __builtin_ia32_scattersiv8df((double *)(addr), (__mmask8)(mask), \
7946 (__v8si)(__m256i)(index), \
7947 (__v8df)(__m512d)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007948
Craig Topper8c18e112016-05-17 04:41:50 +00007949#define _mm512_i32scatter_epi64(addr, index, v1, scale) __extension__ ({\
7950 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)-1, \
7951 (__v8si)(__m256i)(index), \
7952 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007953
Craig Topper8c18e112016-05-17 04:41:50 +00007954#define _mm512_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({\
7955 __builtin_ia32_scattersiv8di((long long *)(addr), (__mmask8)(mask), \
7956 (__v8si)(__m256i)(index), \
7957 (__v8di)(__m512i)(v1), (int)(scale)); })
Michael Zuckermanfcf32c22016-04-25 13:01:40 +00007958
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007959static __inline__ __m128 __DEFAULT_FN_ATTRS
7960_mm_mask_fmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
7961{
7962 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
7963 (__v4sf) __B,
7964 (__v4sf) __W,
7965 (__mmask8) __U,
7966 _MM_FROUND_CUR_DIRECTION);
7967}
7968
Craig Topper8c18e112016-05-17 04:41:50 +00007969#define _mm_mask_fmadd_round_ss(W, U, A, B, R) __extension__({\
7970 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
7971 (__v4sf)(__m128)(B), \
7972 (__v4sf)(__m128)(W), (__mmask8)(U), \
7973 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007974
7975static __inline__ __m128 __DEFAULT_FN_ATTRS
7976_mm_maskz_fmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
7977{
7978 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
7979 (__v4sf) __B,
7980 (__v4sf) __C,
7981 (__mmask8) __U,
7982 _MM_FROUND_CUR_DIRECTION);
7983}
7984
Craig Topper8c18e112016-05-17 04:41:50 +00007985#define _mm_maskz_fmadd_round_ss(U, A, B, C, R) __extension__ ({\
7986 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
7987 (__v4sf)(__m128)(B), \
7988 (__v4sf)(__m128)(C), (__mmask8)(U), \
7989 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00007990
7991static __inline__ __m128 __DEFAULT_FN_ATTRS
7992_mm_mask3_fmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
7993{
7994 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
7995 (__v4sf) __X,
7996 (__v4sf) __Y,
7997 (__mmask8) __U,
7998 _MM_FROUND_CUR_DIRECTION);
7999}
8000
Craig Topper8c18e112016-05-17 04:41:50 +00008001#define _mm_mask3_fmadd_round_ss(W, X, Y, U, R) __extension__ ({\
8002 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8003 (__v4sf)(__m128)(X), \
8004 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8005 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008006
8007static __inline__ __m128 __DEFAULT_FN_ATTRS
8008_mm_mask_fmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8009{
8010 return (__m128) __builtin_ia32_vfmaddss3_mask ((__v4sf) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008011 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008012 (__v4sf) __W,
8013 (__mmask8) __U,
8014 _MM_FROUND_CUR_DIRECTION);
8015}
8016
Craig Topper8c18e112016-05-17 04:41:50 +00008017#define _mm_mask_fmsub_round_ss(W, U, A, B, R) __extension__ ({\
8018 (__m128)__builtin_ia32_vfmaddss3_mask((__v4sf)(__m128)(A), \
8019 -(__v4sf)(__m128)(B), \
8020 (__v4sf)(__m128)(W), (__mmask8)(U), \
8021 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008022
8023static __inline__ __m128 __DEFAULT_FN_ATTRS
8024_mm_maskz_fmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8025{
8026 return (__m128) __builtin_ia32_vfmaddss3_maskz ((__v4sf) __A,
8027 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008028 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008029 (__mmask8) __U,
8030 _MM_FROUND_CUR_DIRECTION);
8031}
8032
Craig Topper8c18e112016-05-17 04:41:50 +00008033#define _mm_maskz_fmsub_round_ss(U, A, B, C, R) __extension__ ({\
8034 (__m128)__builtin_ia32_vfmaddss3_maskz((__v4sf)(__m128)(A), \
8035 (__v4sf)(__m128)(B), \
8036 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8037 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008038
8039static __inline__ __m128 __DEFAULT_FN_ATTRS
8040_mm_mask3_fmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8041{
8042 return (__m128) __builtin_ia32_vfmaddss3_mask3 ((__v4sf) __W,
8043 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008044 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008045 (__mmask8) __U,
8046 _MM_FROUND_CUR_DIRECTION);
8047}
8048
Craig Topper8c18e112016-05-17 04:41:50 +00008049#define _mm_mask3_fmsub_round_ss(W, X, Y, U, R) __extension__ ({\
8050 (__m128)__builtin_ia32_vfmaddss3_mask3((__v4sf)(__m128)(W), \
8051 (__v4sf)(__m128)(X), \
8052 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8053 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008054
8055static __inline__ __m128 __DEFAULT_FN_ATTRS
8056_mm_mask_fnmadd_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8057{
Craig Topper9864c592016-05-15 20:10:03 +00008058 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008059 (__v4sf) __B,
8060 (__v4sf) __W,
8061 (__mmask8) __U,
8062 _MM_FROUND_CUR_DIRECTION);
8063}
8064
Craig Topper8c18e112016-05-17 04:41:50 +00008065#define _mm_mask_fnmadd_round_ss(W, U, A, B, R) __extension__ ({\
8066 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8067 (__v4sf)(__m128)(B), \
8068 (__v4sf)(__m128)(W), (__mmask8)(U), \
8069 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008070
8071static __inline__ __m128 __DEFAULT_FN_ATTRS
8072_mm_maskz_fnmadd_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8073{
Craig Topper9864c592016-05-15 20:10:03 +00008074 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008075 (__v4sf) __B,
8076 (__v4sf) __C,
8077 (__mmask8) __U,
8078 _MM_FROUND_CUR_DIRECTION);
8079}
8080
Craig Topper8c18e112016-05-17 04:41:50 +00008081#define _mm_maskz_fnmadd_round_ss(U, A, B, C, R) __extension__ ({\
8082 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8083 (__v4sf)(__m128)(B), \
8084 (__v4sf)(__m128)(C), (__mmask8)(U), \
8085 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008086
8087static __inline__ __m128 __DEFAULT_FN_ATTRS
8088_mm_mask3_fnmadd_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8089{
Craig Topper9864c592016-05-15 20:10:03 +00008090 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008091 (__v4sf) __X,
8092 (__v4sf) __Y,
8093 (__mmask8) __U,
8094 _MM_FROUND_CUR_DIRECTION);
8095}
8096
Craig Topper8c18e112016-05-17 04:41:50 +00008097#define _mm_mask3_fnmadd_round_ss(W, X, Y, U, R) __extension__({\
8098 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8099 (__v4sf)(__m128)(X), \
8100 (__v4sf)(__m128)(Y), (__mmask8)(U), \
8101 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008102
8103static __inline__ __m128 __DEFAULT_FN_ATTRS
8104_mm_mask_fnmsub_ss (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
8105{
Craig Topper9864c592016-05-15 20:10:03 +00008106 return (__m128) __builtin_ia32_vfmaddss3_mask (-(__v4sf) __A,
8107 -(__v4sf) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008108 (__v4sf) __W,
8109 (__mmask8) __U,
8110 _MM_FROUND_CUR_DIRECTION);
8111}
8112
Craig Topper8c18e112016-05-17 04:41:50 +00008113#define _mm_mask_fnmsub_round_ss(W, U, A, B, R) __extension__ ({\
8114 (__m128)__builtin_ia32_vfmaddss3_mask(-(__v4sf)(__m128)(A), \
8115 -(__v4sf)(__m128)(B), \
8116 (__v4sf)(__m128)(W), (__mmask8)(U), \
8117 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008118
8119static __inline__ __m128 __DEFAULT_FN_ATTRS
8120_mm_maskz_fnmsub_ss (__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
8121{
Craig Topper9864c592016-05-15 20:10:03 +00008122 return (__m128) __builtin_ia32_vfmaddss3_maskz (-(__v4sf) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008123 (__v4sf) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008124 -(__v4sf) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008125 (__mmask8) __U,
8126 _MM_FROUND_CUR_DIRECTION);
8127}
8128
Craig Topper8c18e112016-05-17 04:41:50 +00008129#define _mm_maskz_fnmsub_round_ss(U, A, B, C, R) __extension__ ({\
8130 (__m128)__builtin_ia32_vfmaddss3_maskz(-(__v4sf)(__m128)(A), \
8131 (__v4sf)(__m128)(B), \
8132 -(__v4sf)(__m128)(C), (__mmask8)(U), \
8133 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008134
8135static __inline__ __m128 __DEFAULT_FN_ATTRS
8136_mm_mask3_fnmsub_ss (__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U)
8137{
Craig Topper9864c592016-05-15 20:10:03 +00008138 return (__m128) __builtin_ia32_vfmaddss3_mask3 (-(__v4sf) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008139 (__v4sf) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008140 -(__v4sf) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008141 (__mmask8) __U,
8142 _MM_FROUND_CUR_DIRECTION);
8143}
8144
Craig Topper8c18e112016-05-17 04:41:50 +00008145#define _mm_mask3_fnmsub_round_ss(W, X, Y, U, R) __extension__({\
8146 (__m128)__builtin_ia32_vfmaddss3_mask3(-(__v4sf)(__m128)(W), \
8147 (__v4sf)(__m128)(X), \
8148 -(__v4sf)(__m128)(Y), (__mmask8)(U), \
8149 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008150
Craig Topper58187d32016-05-17 04:41:29 +00008151static __inline__ __m128d __DEFAULT_FN_ATTRS
8152_mm_mask_fmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008153{
Craig Topper58187d32016-05-17 04:41:29 +00008154 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008155 (__v2df) __B,
8156 (__v2df) __W,
8157 (__mmask8) __U,
8158 _MM_FROUND_CUR_DIRECTION);
8159}
8160
Craig Topper8c18e112016-05-17 04:41:50 +00008161#define _mm_mask_fmadd_round_sd(W, U, A, B, R) __extension__({\
8162 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8163 (__v2df)(__m128d)(B), \
8164 (__v2df)(__m128d)(W), (__mmask8)(U), \
8165 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008166
Craig Topper58187d32016-05-17 04:41:29 +00008167static __inline__ __m128d __DEFAULT_FN_ATTRS
8168_mm_maskz_fmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008169{
Craig Topper58187d32016-05-17 04:41:29 +00008170 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008171 (__v2df) __B,
8172 (__v2df) __C,
8173 (__mmask8) __U,
8174 _MM_FROUND_CUR_DIRECTION);
8175}
8176
Craig Topper8c18e112016-05-17 04:41:50 +00008177#define _mm_maskz_fmadd_round_sd(U, A, B, C, R) __extension__ ({\
8178 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8179 (__v2df)(__m128d)(B), \
8180 (__v2df)(__m128d)(C), (__mmask8)(U), \
8181 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008182
Craig Topper58187d32016-05-17 04:41:29 +00008183static __inline__ __m128d __DEFAULT_FN_ATTRS
8184_mm_mask3_fmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008185{
Craig Topper58187d32016-05-17 04:41:29 +00008186 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008187 (__v2df) __X,
8188 (__v2df) __Y,
8189 (__mmask8) __U,
8190 _MM_FROUND_CUR_DIRECTION);
8191}
8192
Craig Topper8c18e112016-05-17 04:41:50 +00008193#define _mm_mask3_fmadd_round_sd(W, X, Y, U, R) __extension__ ({\
8194 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8195 (__v2df)(__m128d)(X), \
8196 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8197 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008198
Craig Topper58187d32016-05-17 04:41:29 +00008199static __inline__ __m128d __DEFAULT_FN_ATTRS
8200_mm_mask_fmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008201{
Craig Topper58187d32016-05-17 04:41:29 +00008202 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( (__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008203 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008204 (__v2df) __W,
8205 (__mmask8) __U,
8206 _MM_FROUND_CUR_DIRECTION);
8207}
8208
Craig Topper8c18e112016-05-17 04:41:50 +00008209#define _mm_mask_fmsub_round_sd(W, U, A, B, R) __extension__ ({\
8210 (__m128d)__builtin_ia32_vfmaddsd3_mask((__v2df)(__m128d)(A), \
8211 -(__v2df)(__m128d)(B), \
8212 (__v2df)(__m128d)(W), (__mmask8)(U), \
8213 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008214
Craig Topper58187d32016-05-17 04:41:29 +00008215static __inline__ __m128d __DEFAULT_FN_ATTRS
8216_mm_maskz_fmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008217{
Craig Topper58187d32016-05-17 04:41:29 +00008218 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( (__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008219 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008220 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008221 (__mmask8) __U,
8222 _MM_FROUND_CUR_DIRECTION);
8223}
8224
Craig Topper8c18e112016-05-17 04:41:50 +00008225#define _mm_maskz_fmsub_round_sd(U, A, B, C, R) __extension__ ({\
8226 (__m128d)__builtin_ia32_vfmaddsd3_maskz((__v2df)(__m128d)(A), \
8227 (__v2df)(__m128d)(B), \
8228 -(__v2df)(__m128d)(C), \
8229 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008230
Craig Topper58187d32016-05-17 04:41:29 +00008231static __inline__ __m128d __DEFAULT_FN_ATTRS
8232_mm_mask3_fmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008233{
Craig Topper58187d32016-05-17 04:41:29 +00008234 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 ((__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008235 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008236 -(__v2df) __Y,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008237 (__mmask8) __U,
8238 _MM_FROUND_CUR_DIRECTION);
8239}
8240
Craig Topper8c18e112016-05-17 04:41:50 +00008241#define _mm_mask3_fmsub_round_sd(W, X, Y, U, R) __extension__ ({\
8242 (__m128d)__builtin_ia32_vfmaddsd3_mask3((__v2df)(__m128d)(W), \
8243 (__v2df)(__m128d)(X), \
8244 -(__v2df)(__m128d)(Y), \
8245 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008246
Craig Topper58187d32016-05-17 04:41:29 +00008247static __inline__ __m128d __DEFAULT_FN_ATTRS
8248_mm_mask_fnmadd_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008249{
Craig Topper58187d32016-05-17 04:41:29 +00008250 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008251 (__v2df) __B,
8252 (__v2df) __W,
8253 (__mmask8) __U,
8254 _MM_FROUND_CUR_DIRECTION);
8255}
8256
Craig Topper8c18e112016-05-17 04:41:50 +00008257#define _mm_mask_fnmadd_round_sd(W, U, A, B, R) __extension__ ({\
8258 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8259 (__v2df)(__m128d)(B), \
8260 (__v2df)(__m128d)(W), (__mmask8)(U), \
8261 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008262
Craig Topper58187d32016-05-17 04:41:29 +00008263static __inline__ __m128d __DEFAULT_FN_ATTRS
8264_mm_maskz_fnmadd_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008265{
Craig Topper58187d32016-05-17 04:41:29 +00008266 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008267 (__v2df) __B,
8268 (__v2df) __C,
8269 (__mmask8) __U,
8270 _MM_FROUND_CUR_DIRECTION);
8271}
8272
Craig Topper8c18e112016-05-17 04:41:50 +00008273#define _mm_maskz_fnmadd_round_sd(U, A, B, C, R) __extension__ ({\
8274 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8275 (__v2df)(__m128d)(B), \
8276 (__v2df)(__m128d)(C), (__mmask8)(U), \
8277 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008278
Craig Topper58187d32016-05-17 04:41:29 +00008279static __inline__ __m128d __DEFAULT_FN_ATTRS
8280_mm_mask3_fnmadd_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008281{
Craig Topper58187d32016-05-17 04:41:29 +00008282 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) __W,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008283 (__v2df) __X,
8284 (__v2df) __Y,
8285 (__mmask8) __U,
8286 _MM_FROUND_CUR_DIRECTION);
8287}
8288
Craig Topper8c18e112016-05-17 04:41:50 +00008289#define _mm_mask3_fnmadd_round_sd(W, X, Y, U, R) __extension__({\
8290 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8291 (__v2df)(__m128d)(X), \
8292 (__v2df)(__m128d)(Y), (__mmask8)(U), \
8293 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008294
Craig Topper58187d32016-05-17 04:41:29 +00008295static __inline__ __m128d __DEFAULT_FN_ATTRS
8296_mm_mask_fnmsub_sd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008297{
Craig Topper58187d32016-05-17 04:41:29 +00008298 return (__m128d) __builtin_ia32_vfmaddsd3_mask ( -(__v2df) __A,
Craig Topper9864c592016-05-15 20:10:03 +00008299 -(__v2df) __B,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008300 (__v2df) __W,
8301 (__mmask8) __U,
8302 _MM_FROUND_CUR_DIRECTION);
8303}
8304
Craig Topper8c18e112016-05-17 04:41:50 +00008305#define _mm_mask_fnmsub_round_sd(W, U, A, B, R) __extension__ ({\
8306 (__m128d)__builtin_ia32_vfmaddsd3_mask(-(__v2df)(__m128d)(A), \
8307 -(__v2df)(__m128d)(B), \
8308 (__v2df)(__m128d)(W), (__mmask8)(U), \
8309 (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008310
Craig Topper58187d32016-05-17 04:41:29 +00008311static __inline__ __m128d __DEFAULT_FN_ATTRS
8312_mm_maskz_fnmsub_sd (__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008313{
Craig Topper58187d32016-05-17 04:41:29 +00008314 return (__m128d) __builtin_ia32_vfmaddsd3_maskz ( -(__v2df) __A,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008315 (__v2df) __B,
Craig Topper9864c592016-05-15 20:10:03 +00008316 -(__v2df) __C,
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008317 (__mmask8) __U,
8318 _MM_FROUND_CUR_DIRECTION);
8319}
8320
Craig Topper8c18e112016-05-17 04:41:50 +00008321#define _mm_maskz_fnmsub_round_sd(U, A, B, C, R) __extension__ ({\
8322 (__m128d)__builtin_ia32_vfmaddsd3_maskz(-(__v2df)(__m128d)(A), \
8323 (__v2df)(__m128d)(B), \
8324 -(__v2df)(__m128d)(C), \
8325 (__mmask8)(U), \
8326 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008327
Craig Topper58187d32016-05-17 04:41:29 +00008328static __inline__ __m128d __DEFAULT_FN_ATTRS
8329_mm_mask3_fnmsub_sd (__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U)
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008330{
Craig Topper58187d32016-05-17 04:41:29 +00008331 return (__m128d) __builtin_ia32_vfmaddsd3_mask3 (-(__v2df) (__W),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008332 (__v2df) __X,
Craig Topper9864c592016-05-15 20:10:03 +00008333 -(__v2df) (__Y),
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008334 (__mmask8) __U,
8335 _MM_FROUND_CUR_DIRECTION);
8336}
8337
Craig Topper8c18e112016-05-17 04:41:50 +00008338#define _mm_mask3_fnmsub_round_sd(W, X, Y, U, R) __extension__({\
8339 (__m128d)__builtin_ia32_vfmaddsd3_mask3(-(__v2df)(__m128d)(W), \
8340 (__v2df)(__m128d)(X), \
8341 -(__v2df)(__m128d)(Y), \
8342 (__mmask8)(U), (int)(R)); })
Michael Zuckerman743d68c2016-04-22 10:56:24 +00008343
Craig Topper8c18e112016-05-17 04:41:50 +00008344#define _mm512_permutex_pd(X, M) __extension__ ({ \
8345 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8346 (__v8df)_mm512_undefined_pd(), \
8347 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008348
Craig Topper8c18e112016-05-17 04:41:50 +00008349#define _mm512_mask_permutex_pd(W, U, X, M) __extension__ ({ \
8350 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8351 (__v8df)(__m512d)(W), \
8352 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008353
Craig Topper8c18e112016-05-17 04:41:50 +00008354#define _mm512_maskz_permutex_pd(U, X, M) __extension__ ({ \
8355 (__m512d)__builtin_ia32_permdf512_mask((__v8df)(__m512d)(X), (int)(M), \
8356 (__v8df)_mm512_setzero_pd(), \
8357 (__mmask8)(U)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008358
Craig Topper8c18e112016-05-17 04:41:50 +00008359#define _mm512_permutex_epi64(X, I) __extension__ ({ \
8360 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8361 (__v8di)_mm512_undefined_epi32(), \
8362 (__mmask8)-1); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008363
Craig Topper8c18e112016-05-17 04:41:50 +00008364#define _mm512_mask_permutex_epi64(W, M, X, I) __extension__ ({ \
8365 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8366 (__v8di)(__m512i)(W), \
8367 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008368
Craig Topper8c18e112016-05-17 04:41:50 +00008369#define _mm512_maskz_permutex_epi64(M, X, I) __extension__ ({ \
8370 (__m512i)__builtin_ia32_permdi512_mask((__v8di)(__m512i)(X), (int)(I), \
8371 (__v8di)_mm512_setzero_si512(), \
8372 (__mmask8)(M)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008373
8374static __inline__ __m512d __DEFAULT_FN_ATTRS
8375_mm512_permutexvar_pd (__m512i __X, __m512d __Y)
8376{
8377 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8378 (__v8di) __X,
8379 (__v8df) _mm512_undefined_pd (),
8380 (__mmask8) -1);
8381}
8382
8383static __inline__ __m512d __DEFAULT_FN_ATTRS
8384_mm512_mask_permutexvar_pd (__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y)
8385{
8386 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8387 (__v8di) __X,
8388 (__v8df) __W,
8389 (__mmask8) __U);
8390}
8391
8392static __inline__ __m512d __DEFAULT_FN_ATTRS
8393_mm512_maskz_permutexvar_pd (__mmask8 __U, __m512i __X, __m512d __Y)
8394{
8395 return (__m512d) __builtin_ia32_permvardf512_mask ((__v8df) __Y,
8396 (__v8di) __X,
8397 (__v8df) _mm512_setzero_pd (),
8398 (__mmask8) __U);
8399}
8400
8401static __inline__ __m512i __DEFAULT_FN_ATTRS
8402_mm512_maskz_permutexvar_epi64 (__mmask8 __M, __m512i __X, __m512i __Y)
8403{
8404 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8405 (__v8di) __X,
8406 (__v8di) _mm512_setzero_si512 (),
8407 __M);
8408}
8409
8410static __inline__ __m512i __DEFAULT_FN_ATTRS
8411_mm512_permutexvar_epi64 (__m512i __X, __m512i __Y)
8412{
8413 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8414 (__v8di) __X,
8415 (__v8di) _mm512_undefined_epi32 (),
8416 (__mmask8) -1);
8417}
8418
8419static __inline__ __m512i __DEFAULT_FN_ATTRS
8420_mm512_mask_permutexvar_epi64 (__m512i __W, __mmask8 __M, __m512i __X,
8421 __m512i __Y)
8422{
8423 return (__m512i) __builtin_ia32_permvardi512_mask ((__v8di) __Y,
8424 (__v8di) __X,
8425 (__v8di) __W,
8426 __M);
8427}
8428
8429static __inline__ __m512 __DEFAULT_FN_ATTRS
8430_mm512_permutexvar_ps (__m512i __X, __m512 __Y)
8431{
8432 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8433 (__v16si) __X,
8434 (__v16sf) _mm512_undefined_ps (),
8435 (__mmask16) -1);
8436}
8437
8438static __inline__ __m512 __DEFAULT_FN_ATTRS
8439_mm512_mask_permutexvar_ps (__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y)
8440{
8441 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8442 (__v16si) __X,
8443 (__v16sf) __W,
8444 (__mmask16) __U);
8445}
8446
8447static __inline__ __m512 __DEFAULT_FN_ATTRS
8448_mm512_maskz_permutexvar_ps (__mmask16 __U, __m512i __X, __m512 __Y)
8449{
8450 return (__m512) __builtin_ia32_permvarsf512_mask ((__v16sf) __Y,
8451 (__v16si) __X,
8452 (__v16sf) _mm512_setzero_ps (),
8453 (__mmask16) __U);
8454}
8455
8456static __inline__ __m512i __DEFAULT_FN_ATTRS
8457_mm512_maskz_permutexvar_epi32 (__mmask16 __M, __m512i __X, __m512i __Y)
8458{
8459 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8460 (__v16si) __X,
8461 (__v16si) _mm512_setzero_si512 (),
8462 __M);
8463}
8464
8465static __inline__ __m512i __DEFAULT_FN_ATTRS
8466_mm512_permutexvar_epi32 (__m512i __X, __m512i __Y)
8467{
8468 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8469 (__v16si) __X,
8470 (__v16si) _mm512_undefined_epi32 (),
8471 (__mmask16) -1);
8472}
8473
8474static __inline__ __m512i __DEFAULT_FN_ATTRS
8475_mm512_mask_permutexvar_epi32 (__m512i __W, __mmask16 __M, __m512i __X,
8476 __m512i __Y)
8477{
8478 return (__m512i) __builtin_ia32_permvarsi512_mask ((__v16si) __Y,
8479 (__v16si) __X,
8480 (__v16si) __W,
8481 __M);
8482}
8483
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008484static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8485_mm512_kand (__mmask16 __A, __mmask16 __B)
8486{
8487 return (__mmask16) __builtin_ia32_kandhi ((__mmask16) __A, (__mmask16) __B);
8488}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008489
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008490static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8491_mm512_kandn (__mmask16 __A, __mmask16 __B)
8492{
8493 return (__mmask16) __builtin_ia32_kandnhi ((__mmask16) __A, (__mmask16) __B);
8494}
8495
8496static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8497_mm512_kor (__mmask16 __A, __mmask16 __B)
8498{
8499 return (__mmask16) __builtin_ia32_korhi ((__mmask16) __A, (__mmask16) __B);
8500}
8501
8502static __inline__ int __DEFAULT_FN_ATTRS
8503_mm512_kortestc (__mmask16 __A, __mmask16 __B)
8504{
Craig Topper91f23d92016-05-16 01:09:16 +00008505 return __builtin_ia32_kortestchi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008506}
8507
8508static __inline__ int __DEFAULT_FN_ATTRS
8509_mm512_kortestz (__mmask16 __A, __mmask16 __B)
8510{
Craig Topper91f23d92016-05-16 01:09:16 +00008511 return __builtin_ia32_kortestzhi ((__mmask16) __A, (__mmask16) __B);
Michael Zuckermanfa508e82016-04-25 16:42:29 +00008512}
8513
8514static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8515_mm512_kunpackb (__mmask16 __A, __mmask16 __B)
8516{
8517 return (__mmask16) __builtin_ia32_kunpckhi ((__mmask16) __A, (__mmask16) __B);
8518}
8519
8520static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8521_mm512_kxnor (__mmask16 __A, __mmask16 __B)
8522{
8523 return (__mmask16) __builtin_ia32_kxnorhi ((__mmask16) __A, (__mmask16) __B);
8524}
8525
8526static __inline__ __mmask16 __DEFAULT_FN_ATTRS
8527_mm512_kxor (__mmask16 __A, __mmask16 __B)
8528{
8529 return (__mmask16) __builtin_ia32_kxorhi ((__mmask16) __A, (__mmask16) __B);
8530}
Michael Zuckerman8938e832016-04-25 05:32:35 +00008531
Michael Zuckerman7c85a8c2016-04-27 10:44:15 +00008532static __inline__ void __DEFAULT_FN_ATTRS
8533_mm512_stream_si512 (__m512i * __P, __m512i __A)
8534{
8535 __builtin_ia32_movntdq512 ((__v8di *) __P, (__v8di) __A);
8536}
8537
8538static __inline__ __m512i __DEFAULT_FN_ATTRS
8539_mm512_stream_load_si512 (void *__P)
8540{
8541 return __builtin_ia32_movntdqa512 ((__v8di *)__P);
8542}
8543
8544static __inline__ void __DEFAULT_FN_ATTRS
8545_mm512_stream_pd (double *__P, __m512d __A)
8546{
8547 __builtin_ia32_movntpd512 (__P, (__v8df) __A);
8548}
8549
8550static __inline__ void __DEFAULT_FN_ATTRS
8551_mm512_stream_ps (float *__P, __m512 __A)
8552{
8553 __builtin_ia32_movntps512 (__P, (__v16sf) __A);
8554}
8555
Michael Zuckerman41f5a372016-04-29 08:52:02 +00008556static __inline__ __m512d __DEFAULT_FN_ATTRS
8557_mm512_mask_compress_pd (__m512d __W, __mmask8 __U, __m512d __A)
8558{
8559 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8560 (__v8df) __W,
8561 (__mmask8) __U);
8562}
8563
8564static __inline__ __m512d __DEFAULT_FN_ATTRS
8565_mm512_maskz_compress_pd (__mmask8 __U, __m512d __A)
8566{
8567 return (__m512d) __builtin_ia32_compressdf512_mask ((__v8df) __A,
8568 (__v8df)
8569 _mm512_setzero_pd (),
8570 (__mmask8) __U);
8571}
8572
8573static __inline__ __m512i __DEFAULT_FN_ATTRS
8574_mm512_mask_compress_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8575{
8576 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8577 (__v8di) __W,
8578 (__mmask8) __U);
8579}
8580
8581static __inline__ __m512i __DEFAULT_FN_ATTRS
8582_mm512_maskz_compress_epi64 (__mmask8 __U, __m512i __A)
8583{
8584 return (__m512i) __builtin_ia32_compressdi512_mask ((__v8di) __A,
8585 (__v8di)
8586 _mm512_setzero_si512 (),
8587 (__mmask8) __U);
8588}
8589
8590static __inline__ __m512 __DEFAULT_FN_ATTRS
8591_mm512_mask_compress_ps (__m512 __W, __mmask16 __U, __m512 __A)
8592{
8593 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8594 (__v16sf) __W,
8595 (__mmask16) __U);
8596}
8597
8598static __inline__ __m512 __DEFAULT_FN_ATTRS
8599_mm512_maskz_compress_ps (__mmask16 __U, __m512 __A)
8600{
8601 return (__m512) __builtin_ia32_compresssf512_mask ((__v16sf) __A,
8602 (__v16sf)
8603 _mm512_setzero_ps (),
8604 (__mmask16) __U);
8605}
8606
8607static __inline__ __m512i __DEFAULT_FN_ATTRS
8608_mm512_mask_compress_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8609{
8610 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8611 (__v16si) __W,
8612 (__mmask16) __U);
8613}
8614
8615static __inline__ __m512i __DEFAULT_FN_ATTRS
8616_mm512_maskz_compress_epi32 (__mmask16 __U, __m512i __A)
8617{
8618 return (__m512i) __builtin_ia32_compresssi512_mask ((__v16si) __A,
8619 (__v16si)
8620 _mm512_setzero_si512 (),
8621 (__mmask16) __U);
8622}
8623
Craig Topper8c18e112016-05-17 04:41:50 +00008624#define _mm_cmp_round_ss_mask(X, Y, P, R) __extension__ ({ \
8625 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8626 (__v4sf)(__m128)(Y), (int)(P), \
8627 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008628
Craig Topper8c18e112016-05-17 04:41:50 +00008629#define _mm_mask_cmp_round_ss_mask(M, X, Y, P, R) __extension__ ({ \
8630 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8631 (__v4sf)(__m128)(Y), (int)(P), \
8632 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008633
Craig Topper8c18e112016-05-17 04:41:50 +00008634#define _mm_cmp_ss_mask(X, Y, P) __extension__ ({ \
8635 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8636 (__v4sf)(__m128)(Y), (int)(P), \
8637 (__mmask8)-1, \
8638 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008639
Craig Topper8c18e112016-05-17 04:41:50 +00008640#define _mm_mask_cmp_ss_mask(M, X, Y, P) __extension__ ({ \
8641 (__mmask8)__builtin_ia32_cmpss_mask((__v4sf)(__m128)(X), \
8642 (__v4sf)(__m128)(Y), (int)(P), \
8643 (__mmask8)(M), \
8644 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008645
Craig Topper8c18e112016-05-17 04:41:50 +00008646#define _mm_cmp_round_sd_mask(X, Y, P, R) __extension__ ({ \
8647 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8648 (__v2df)(__m128d)(Y), (int)(P), \
8649 (__mmask8)-1, (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008650
Craig Topper8c18e112016-05-17 04:41:50 +00008651#define _mm_mask_cmp_round_sd_mask(M, X, Y, P, R) __extension__ ({ \
8652 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8653 (__v2df)(__m128d)(Y), (int)(P), \
8654 (__mmask8)(M), (int)(R)); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008655
Craig Topper8c18e112016-05-17 04:41:50 +00008656#define _mm_cmp_sd_mask(X, Y, P) __extension__ ({ \
8657 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8658 (__v2df)(__m128d)(Y), (int)(P), \
8659 (__mmask8)-1, \
8660 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008661
Craig Topper8c18e112016-05-17 04:41:50 +00008662#define _mm_mask_cmp_sd_mask(M, X, Y, P) __extension__ ({ \
8663 (__mmask8)__builtin_ia32_cmpsd_mask((__v2df)(__m128d)(X), \
8664 (__v2df)(__m128d)(Y), (int)(P), \
8665 (__mmask8)(M), \
8666 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman0b9d1052016-04-29 11:01:16 +00008667
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008668static __inline__ __m512 __DEFAULT_FN_ATTRS
8669_mm512_movehdup_ps (__m512 __A)
8670{
8671 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8672 (__v16sf)
8673 _mm512_undefined_ps (),
8674 (__mmask16) -1);
8675}
8676
8677static __inline__ __m512 __DEFAULT_FN_ATTRS
8678_mm512_mask_movehdup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8679{
8680 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8681 (__v16sf) __W,
8682 (__mmask16) __U);
8683}
8684
8685static __inline__ __m512 __DEFAULT_FN_ATTRS
8686_mm512_maskz_movehdup_ps (__mmask16 __U, __m512 __A)
8687{
8688 return (__m512) __builtin_ia32_movshdup512_mask ((__v16sf) __A,
8689 (__v16sf)
8690 _mm512_setzero_ps (),
8691 (__mmask16) __U);
8692}
8693
8694static __inline__ __m512 __DEFAULT_FN_ATTRS
8695_mm512_moveldup_ps (__m512 __A)
8696{
8697 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8698 (__v16sf)
8699 _mm512_undefined_ps (),
8700 (__mmask16) -1);
8701}
8702
8703static __inline__ __m512 __DEFAULT_FN_ATTRS
8704_mm512_mask_moveldup_ps (__m512 __W, __mmask16 __U, __m512 __A)
8705{
8706 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8707 (__v16sf) __W,
8708 (__mmask16) __U);
8709}
8710
8711static __inline__ __m512 __DEFAULT_FN_ATTRS
8712_mm512_maskz_moveldup_ps (__mmask16 __U, __m512 __A)
8713{
8714 return (__m512) __builtin_ia32_movsldup512_mask ((__v16sf) __A,
8715 (__v16sf)
8716 _mm512_setzero_ps (),
8717 (__mmask16) __U);
8718}
8719
Craig Topper8c18e112016-05-17 04:41:50 +00008720#define _mm512_shuffle_epi32(A, I) __extension__ ({ \
8721 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8722 (__v16si)_mm512_undefined_epi32(), \
8723 (__mmask16)-1); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008724
Craig Topper8c18e112016-05-17 04:41:50 +00008725#define _mm512_mask_shuffle_epi32(W, U, A, I) __extension__ ({ \
8726 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8727 (__v16si)(__m512i)(W), \
8728 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008729
Craig Topper8c18e112016-05-17 04:41:50 +00008730#define _mm512_maskz_shuffle_epi32(U, A, I) __extension__ ({ \
8731 (__m512i)__builtin_ia32_pshufd512_mask((__v16si)(__m512i)(A), (int)(I), \
8732 (__v16si)_mm512_setzero_si512(), \
8733 (__mmask16)(U)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008734
Michael Zuckerman6a0e0872016-05-02 08:36:41 +00008735static __inline__ __m512d __DEFAULT_FN_ATTRS
8736_mm512_mask_expand_pd (__m512d __W, __mmask8 __U, __m512d __A)
8737{
8738 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8739 (__v8df) __W,
8740 (__mmask8) __U);
8741}
8742
8743static __inline__ __m512d __DEFAULT_FN_ATTRS
8744_mm512_maskz_expand_pd (__mmask8 __U, __m512d __A)
8745{
8746 return (__m512d) __builtin_ia32_expanddf512_mask ((__v8df) __A,
8747 (__v8df) _mm512_setzero_pd (),
8748 (__mmask8) __U);
8749}
8750
8751static __inline__ __m512i __DEFAULT_FN_ATTRS
8752_mm512_mask_expand_epi64 (__m512i __W, __mmask8 __U, __m512i __A)
8753{
8754 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8755 (__v8di) __W,
8756 (__mmask8) __U);
8757}
8758
8759static __inline__ __m512i __DEFAULT_FN_ATTRS
8760_mm512_maskz_expand_epi64 ( __mmask8 __U, __m512i __A)
8761{
8762 return (__m512i) __builtin_ia32_expanddi512_mask ((__v8di) __A,
8763 (__v8di) _mm512_setzero_pd (),
8764 (__mmask8) __U);
8765}
8766
8767static __inline__ __m512d __DEFAULT_FN_ATTRS
8768_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P)
8769{
8770 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8771 (__v8df) __W,
8772 (__mmask8) __U);
8773}
8774
8775static __inline__ __m512d __DEFAULT_FN_ATTRS
8776_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P)
8777{
8778 return (__m512d) __builtin_ia32_expandloaddf512_mask ((const __v8df *)__P,
8779 (__v8df) _mm512_setzero_pd(),
8780 (__mmask8) __U);
8781}
8782
8783static __inline__ __m512i __DEFAULT_FN_ATTRS
8784_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P)
8785{
8786 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8787 (__v8di) __W,
8788 (__mmask8) __U);
8789}
8790
8791static __inline__ __m512i __DEFAULT_FN_ATTRS
8792_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P)
8793{
8794 return (__m512i) __builtin_ia32_expandloaddi512_mask ((const __v8di *)__P,
8795 (__v8di) _mm512_setzero_pd(),
8796 (__mmask8) __U);
8797}
8798
8799static __inline__ __m512 __DEFAULT_FN_ATTRS
8800_mm512_mask_expandloadu_ps(__m512 __W, __mmask16 __U, void const *__P)
8801{
8802 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8803 (__v16sf) __W,
8804 (__mmask16) __U);
8805}
8806
8807static __inline__ __m512 __DEFAULT_FN_ATTRS
8808_mm512_maskz_expandloadu_ps(__mmask16 __U, void const *__P)
8809{
8810 return (__m512) __builtin_ia32_expandloadsf512_mask ((const __v16sf *)__P,
8811 (__v16sf) _mm512_setzero_ps(),
8812 (__mmask16) __U);
8813}
8814
8815static __inline__ __m512i __DEFAULT_FN_ATTRS
8816_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P)
8817{
8818 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8819 (__v16si) __W,
8820 (__mmask16) __U);
8821}
8822
8823static __inline__ __m512i __DEFAULT_FN_ATTRS
8824_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P)
8825{
8826 return (__m512i) __builtin_ia32_expandloadsi512_mask ((const __v16si *)__P,
8827 (__v16si) _mm512_setzero_ps(),
8828 (__mmask16) __U);
8829}
8830
8831static __inline__ __m512 __DEFAULT_FN_ATTRS
8832_mm512_mask_expand_ps (__m512 __W, __mmask16 __U, __m512 __A)
8833{
8834 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8835 (__v16sf) __W,
8836 (__mmask16) __U);
8837}
8838
8839static __inline__ __m512 __DEFAULT_FN_ATTRS
8840_mm512_maskz_expand_ps (__mmask16 __U, __m512 __A)
8841{
8842 return (__m512) __builtin_ia32_expandsf512_mask ((__v16sf) __A,
8843 (__v16sf) _mm512_setzero_ps(),
8844 (__mmask16) __U);
8845}
8846
8847static __inline__ __m512i __DEFAULT_FN_ATTRS
8848_mm512_mask_expand_epi32 (__m512i __W, __mmask16 __U, __m512i __A)
8849{
8850 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8851 (__v16si) __W,
8852 (__mmask16) __U);
8853}
8854
8855static __inline__ __m512i __DEFAULT_FN_ATTRS
8856_mm512_maskz_expand_epi32 (__mmask16 __U, __m512i __A)
8857{
8858 return (__m512i) __builtin_ia32_expandsi512_mask ((__v16si) __A,
8859 (__v16si) _mm512_setzero_ps(),
8860 (__mmask16) __U);
8861}
8862
Craig Topper8c18e112016-05-17 04:41:50 +00008863#define _mm512_cvt_roundps_pd(A, R) __extension__ ({ \
8864 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8865 (__v8df)_mm512_undefined_pd(), \
8866 (__mmask8)-1, (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008867
Craig Topper8c18e112016-05-17 04:41:50 +00008868#define _mm512_mask_cvt_roundps_pd(W, U, A, R) __extension__ ({ \
8869 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8870 (__v8df)(__m512d)(W), \
8871 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008872
Craig Topper8c18e112016-05-17 04:41:50 +00008873#define _mm512_maskz_cvt_roundps_pd(U, A, R) __extension__ ({ \
8874 (__m512d)__builtin_ia32_cvtps2pd512_mask((__v8sf)(__m256)(A), \
8875 (__v8df)_mm512_setzero_pd(), \
8876 (__mmask8)(U), (int)(R)); })
Michael Zuckermand6e68ce2016-05-02 09:42:31 +00008877
8878static __inline__ __m512d __DEFAULT_FN_ATTRS
8879_mm512_cvtps_pd (__m256 __A)
8880{
8881 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8882 (__v8df)
8883 _mm512_undefined_pd (),
8884 (__mmask8) -1,
8885 _MM_FROUND_CUR_DIRECTION);
8886}
8887
8888static __inline__ __m512d __DEFAULT_FN_ATTRS
8889_mm512_mask_cvtps_pd (__m512d __W, __mmask8 __U, __m256 __A)
8890{
8891 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8892 (__v8df) __W,
8893 (__mmask8) __U,
8894 _MM_FROUND_CUR_DIRECTION);
8895}
8896
8897static __inline__ __m512d __DEFAULT_FN_ATTRS
8898_mm512_maskz_cvtps_pd (__mmask8 __U, __m256 __A)
8899{
8900 return (__m512d) __builtin_ia32_cvtps2pd512_mask ((__v8sf) __A,
8901 (__v8df)
8902 _mm512_setzero_pd (),
8903 (__mmask8) __U,
8904 _MM_FROUND_CUR_DIRECTION);
8905}
8906
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008907static __inline__ __m512d __DEFAULT_FN_ATTRS
8908_mm512_mask_mov_pd (__m512d __W, __mmask8 __U, __m512d __A)
8909{
8910 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8911 (__v8df) __W,
8912 (__mmask8) __U);
8913}
8914
8915static __inline__ __m512d __DEFAULT_FN_ATTRS
8916_mm512_maskz_mov_pd (__mmask8 __U, __m512d __A)
8917{
8918 return (__m512d) __builtin_ia32_movapd512_mask ((__v8df) __A,
8919 (__v8df)
8920 _mm512_setzero_pd (),
8921 (__mmask8) __U);
8922}
8923
8924static __inline__ __m512 __DEFAULT_FN_ATTRS
8925_mm512_mask_mov_ps (__m512 __W, __mmask16 __U, __m512 __A)
8926{
8927 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8928 (__v16sf) __W,
8929 (__mmask16) __U);
8930}
8931
8932static __inline__ __m512 __DEFAULT_FN_ATTRS
8933_mm512_maskz_mov_ps (__mmask16 __U, __m512 __A)
8934{
8935 return (__m512) __builtin_ia32_movaps512_mask ((__v16sf) __A,
8936 (__v16sf)
8937 _mm512_setzero_ps (),
8938 (__mmask16) __U);
8939}
8940
Michael Zuckerman708e7592016-05-03 10:42:46 +00008941static __inline__ void __DEFAULT_FN_ATTRS
8942_mm512_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m512d __A)
8943{
8944 __builtin_ia32_compressstoredf512_mask ((__v8df *) __P, (__v8df) __A,
8945 (__mmask8) __U);
8946}
8947
8948static __inline__ void __DEFAULT_FN_ATTRS
8949_mm512_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m512i __A)
8950{
8951 __builtin_ia32_compressstoredi512_mask ((__v8di *) __P, (__v8di) __A,
8952 (__mmask8) __U);
8953}
8954
8955static __inline__ void __DEFAULT_FN_ATTRS
8956_mm512_mask_compressstoreu_ps (void *__P, __mmask16 __U, __m512 __A)
8957{
8958 __builtin_ia32_compressstoresf512_mask ((__v16sf *) __P, (__v16sf) __A,
8959 (__mmask16) __U);
8960}
8961
8962static __inline__ void __DEFAULT_FN_ATTRS
8963_mm512_mask_compressstoreu_epi32 (void *__P, __mmask16 __U, __m512i __A)
8964{
8965 __builtin_ia32_compressstoresi512_mask ((__v16si *) __P, (__v16si) __A,
8966 (__mmask16) __U);
8967}
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008968
Craig Topper8c18e112016-05-17 04:41:50 +00008969#define _mm_cvt_roundsd_ss(A, B, R) __extension__ ({ \
8970 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8971 (__v2df)(__m128d)(B), \
8972 (__v4sf)_mm_undefined_ps(), \
8973 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008974
Craig Topper8c18e112016-05-17 04:41:50 +00008975#define _mm_mask_cvt_roundsd_ss(W, U, A, B, R) __extension__ ({ \
8976 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8977 (__v2df)(__m128d)(B), \
8978 (__v4sf)(__m128)(W), \
8979 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008980
Craig Topper8c18e112016-05-17 04:41:50 +00008981#define _mm_maskz_cvt_roundsd_ss(U, A, B, R) __extension__ ({ \
8982 (__m128)__builtin_ia32_cvtsd2ss_round_mask((__v4sf)(__m128)(A), \
8983 (__v2df)(__m128d)(B), \
8984 (__v4sf)_mm_setzero_ps(), \
8985 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008986
Craig Topper8c18e112016-05-17 04:41:50 +00008987#define _mm_cvt_roundi64_sd(A, B, R) __extension__ ({ \
8988 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8989 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008990
Craig Topper8c18e112016-05-17 04:41:50 +00008991#define _mm_cvt_roundsi64_sd(A, B, R) __extension__ ({ \
8992 (__m128d)__builtin_ia32_cvtsi2sd64((__v2df)(__m128d)(A), (long long)(B), \
8993 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008994
Craig Topper8c18e112016-05-17 04:41:50 +00008995#define _mm_cvt_roundsi32_ss(A, B, R) __extension__ ({ \
8996 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00008997
Craig Topper8c18e112016-05-17 04:41:50 +00008998#define _mm_cvt_roundi32_ss(A, B, R) __extension__ ({ \
8999 (__m128)__builtin_ia32_cvtsi2ss32((__v4sf)(__m128)(A), (int)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009000
Craig Topper8c18e112016-05-17 04:41:50 +00009001#define _mm_cvt_roundsi64_ss(A, B, R) __extension__ ({ \
9002 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9003 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009004
Craig Topper8c18e112016-05-17 04:41:50 +00009005#define _mm_cvt_roundi64_ss(A, B, R) __extension__ ({ \
9006 (__m128)__builtin_ia32_cvtsi2ss64((__v4sf)(__m128)(A), (long long)(B), \
9007 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009008
Craig Topper8c18e112016-05-17 04:41:50 +00009009#define _mm_cvt_roundss_sd(A, B, R) __extension__ ({ \
9010 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9011 (__v4sf)(__m128)(B), \
9012 (__v2df)_mm_undefined_pd(), \
9013 (__mmask8)-1, (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009014
Craig Topper8c18e112016-05-17 04:41:50 +00009015#define _mm_mask_cvt_roundss_sd(W, U, A, B, R) __extension__ ({ \
9016 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9017 (__v4sf)(__m128)(B), \
9018 (__v2df)(__m128d)(W), \
9019 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009020
Craig Topper8c18e112016-05-17 04:41:50 +00009021#define _mm_maskz_cvt_roundss_sd(U, A, B, R) __extension__ ({ \
9022 (__m128d)__builtin_ia32_cvtss2sd_round_mask((__v2df)(__m128d)(A), \
9023 (__v4sf)(__m128)(B), \
9024 (__v2df)_mm_setzero_pd(), \
9025 (__mmask8)(U), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009026
9027static __inline__ __m128d __DEFAULT_FN_ATTRS
9028_mm_cvtu32_sd (__m128d __A, unsigned __B)
9029{
9030 return (__m128d) __builtin_ia32_cvtusi2sd32 ((__v2df) __A, __B);
9031}
9032
Craig Topper8c18e112016-05-17 04:41:50 +00009033#define _mm_cvt_roundu64_sd(A, B, R) __extension__ ({ \
9034 (__m128d)__builtin_ia32_cvtusi2sd64((__v2df)(__m128d)(A), \
9035 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009036
9037static __inline__ __m128d __DEFAULT_FN_ATTRS
9038_mm_cvtu64_sd (__m128d __A, unsigned long long __B)
9039{
9040 return (__m128d) __builtin_ia32_cvtusi2sd64 ((__v2df) __A, __B,
9041 _MM_FROUND_CUR_DIRECTION);
9042}
9043
Craig Topper8c18e112016-05-17 04:41:50 +00009044#define _mm_cvt_roundu32_ss(A, B, R) __extension__ ({ \
9045 (__m128)__builtin_ia32_cvtusi2ss32((__v4sf)(__m128)(A), (unsigned int)(B), \
9046 (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009047
9048static __inline__ __m128 __DEFAULT_FN_ATTRS
9049_mm_cvtu32_ss (__m128 __A, unsigned __B)
9050{
9051 return (__m128) __builtin_ia32_cvtusi2ss32 ((__v4sf) __A, __B,
9052 _MM_FROUND_CUR_DIRECTION);
9053}
9054
Craig Topper8c18e112016-05-17 04:41:50 +00009055#define _mm_cvt_roundu64_ss(A, B, R) __extension__ ({ \
9056 (__m128)__builtin_ia32_cvtusi2ss64((__v4sf)(__m128)(A), \
9057 (unsigned long long)(B), (int)(R)); })
Michael Zuckermane6f73892016-05-04 08:55:11 +00009058
9059static __inline__ __m128 __DEFAULT_FN_ATTRS
9060_mm_cvtu64_ss (__m128 __A, unsigned long long __B)
9061{
9062 return (__m128) __builtin_ia32_cvtusi2ss64 ((__v4sf) __A, __B,
9063 _MM_FROUND_CUR_DIRECTION);
9064}
9065
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009066static __inline__ __m512i __DEFAULT_FN_ATTRS
9067_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A)
9068{
9069 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A, (__v16si) __O,
9070 __M);
9071}
9072
9073static __inline__ __m512i __DEFAULT_FN_ATTRS
9074_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A)
9075{
9076 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A, (__v8di) __O,
9077 __M);
9078}
9079
Michael Zuckerman178113e2016-05-19 12:07:49 +00009080static __inline __m512i __DEFAULT_FN_ATTRS
9081_mm512_set_epi32 (int __A, int __B, int __C, int __D,
9082 int __E, int __F, int __G, int __H,
9083 int __I, int __J, int __K, int __L,
9084 int __M, int __N, int __O, int __P)
9085{
9086 return __extension__ (__m512i)(__v16si)
9087 { __P, __O, __N, __M, __L, __K, __J, __I,
9088 __H, __G, __F, __E, __D, __C, __B, __A };
9089}
9090
9091#define _mm512_setr_epi32(e0,e1,e2,e3,e4,e5,e6,e7, \
9092 e8,e9,e10,e11,e12,e13,e14,e15) \
9093 _mm512_set_epi32(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9094
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009095static __inline__ __m512i __DEFAULT_FN_ATTRS
9096_mm512_set_epi64 (long long __A, long long __B, long long __C,
9097 long long __D, long long __E, long long __F,
9098 long long __G, long long __H)
9099{
9100 return __extension__ (__m512i) (__v8di)
9101 { __H, __G, __F, __E, __D, __C, __B, __A };
9102}
9103
Michael Zuckerman178113e2016-05-19 12:07:49 +00009104#define _mm512_setr_epi64(e0,e1,e2,e3,e4,e5,e6,e7) \
9105 _mm512_set_epi64(e7,e6,e5,e4,e3,e2,e1,e0)
9106
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009107static __inline__ __m512d __DEFAULT_FN_ATTRS
9108_mm512_set_pd (double __A, double __B, double __C, double __D,
9109 double __E, double __F, double __G, double __H)
9110{
9111 return __extension__ (__m512d)
9112 { __H, __G, __F, __E, __D, __C, __B, __A };
9113}
9114
Michael Zuckerman178113e2016-05-19 12:07:49 +00009115#define _mm512_setr_pd(e0,e1,e2,e3,e4,e5,e6,e7) \
9116 _mm512_set_pd(e7,e6,e5,e4,e3,e2,e1,e0)
9117
Michael Zuckerman13d3c002016-05-11 11:41:29 +00009118static __inline__ __m512 __DEFAULT_FN_ATTRS
9119_mm512_set_ps (float __A, float __B, float __C, float __D,
9120 float __E, float __F, float __G, float __H,
9121 float __I, float __J, float __K, float __L,
9122 float __M, float __N, float __O, float __P)
9123{
9124 return __extension__ (__m512)
9125 { __P, __O, __N, __M, __L, __K, __J, __I,
9126 __H, __G, __F, __E, __D, __C, __B, __A };
9127}
9128
Michael Zuckerman178113e2016-05-19 12:07:49 +00009129#define _mm512_setr_ps(e0,e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15) \
9130 _mm512_set_ps(e15,e14,e13,e12,e11,e10,e9,e8,e7,e6,e5,e4,e3,e2,e1,e0)
9131
Michael Kupersteine45af542015-06-30 13:36:19 +00009132#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00009133
Elena Demikhovskyfcc6df32014-07-22 11:31:39 +00009134#endif // __AVX512FINTRIN_H