blob: 6180b40546a6e4b5ea8c4856c22f2263ba18c8e6 [file] [log] [blame]
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001/*===---- avx512dqintrin.h - AVX512DQ intrinsics ---------------------------===
2 *
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
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512DQINTRIN_H
29#define __AVX512DQINTRIN_H
30
Eric Christopher4d1851682015-06-17 07:09:20 +000031/* Define the default attributes for the functions in this file. */
Michael Kupersteine45af542015-06-30 13:36:19 +000032#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
Eric Christopher4d1851682015-06-17 07:09:20 +000033
Michael Kupersteine45af542015-06-30 13:36:19 +000034static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000035_mm512_mullo_epi64 (__m512i __A, __m512i __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000036 return (__m512i) ((__v8du) __A * (__v8du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000037}
38
Michael Kupersteine45af542015-06-30 13:36:19 +000039static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000040_mm512_mask_mullo_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
41 return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
42 (__v8di) __B,
43 (__v8di) __W,
44 (__mmask8) __U);
45}
46
Michael Kupersteine45af542015-06-30 13:36:19 +000047static __inline__ __m512i __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000048_mm512_maskz_mullo_epi64 (__mmask8 __U, __m512i __A, __m512i __B) {
49 return (__m512i) __builtin_ia32_pmullq512_mask ((__v8di) __A,
50 (__v8di) __B,
51 (__v8di)
52 _mm512_setzero_si512 (),
53 (__mmask8) __U);
54}
55
Michael Kupersteine45af542015-06-30 13:36:19 +000056static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000057_mm512_xor_pd (__m512d __A, __m512d __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000058 return (__m512d) ((__v8du) __A ^ (__v8du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000059}
60
Michael Kupersteine45af542015-06-30 13:36:19 +000061static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000062_mm512_mask_xor_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
63 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
64 (__v8df) __B,
65 (__v8df) __W,
66 (__mmask8) __U);
67}
68
Michael Kupersteine45af542015-06-30 13:36:19 +000069static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000070_mm512_maskz_xor_pd (__mmask8 __U, __m512d __A, __m512d __B) {
71 return (__m512d) __builtin_ia32_xorpd512_mask ((__v8df) __A,
72 (__v8df) __B,
73 (__v8df)
74 _mm512_setzero_pd (),
75 (__mmask8) __U);
76}
77
Michael Kupersteine45af542015-06-30 13:36:19 +000078static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000079_mm512_xor_ps (__m512 __A, __m512 __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000080 return (__m512) ((__v16su) __A ^ (__v16su) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000081}
82
Michael Kupersteine45af542015-06-30 13:36:19 +000083static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000084_mm512_mask_xor_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
85 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
86 (__v16sf) __B,
87 (__v16sf) __W,
88 (__mmask16) __U);
89}
90
Michael Kupersteine45af542015-06-30 13:36:19 +000091static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000092_mm512_maskz_xor_ps (__mmask16 __U, __m512 __A, __m512 __B) {
93 return (__m512) __builtin_ia32_xorps512_mask ((__v16sf) __A,
94 (__v16sf) __B,
95 (__v16sf)
96 _mm512_setzero_ps (),
97 (__mmask16) __U);
98}
99
Michael Kupersteine45af542015-06-30 13:36:19 +0000100static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000101_mm512_or_pd (__m512d __A, __m512d __B) {
Craig Topper6a77b622016-06-04 05:43:41 +0000102 return (__m512d) ((__v8du) __A | (__v8du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000103}
104
Michael Kupersteine45af542015-06-30 13:36:19 +0000105static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000106_mm512_mask_or_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
107 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
108 (__v8df) __B,
109 (__v8df) __W,
110 (__mmask8) __U);
111}
112
Michael Kupersteine45af542015-06-30 13:36:19 +0000113static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000114_mm512_maskz_or_pd (__mmask8 __U, __m512d __A, __m512d __B) {
115 return (__m512d) __builtin_ia32_orpd512_mask ((__v8df) __A,
116 (__v8df) __B,
117 (__v8df)
118 _mm512_setzero_pd (),
119 (__mmask8) __U);
120}
121
Michael Kupersteine45af542015-06-30 13:36:19 +0000122static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000123_mm512_or_ps (__m512 __A, __m512 __B) {
Craig Topper6a77b622016-06-04 05:43:41 +0000124 return (__m512) ((__v16su) __A | (__v16su) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000125}
126
Michael Kupersteine45af542015-06-30 13:36:19 +0000127static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000128_mm512_mask_or_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
129 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
130 (__v16sf) __B,
131 (__v16sf) __W,
132 (__mmask16) __U);
133}
134
Michael Kupersteine45af542015-06-30 13:36:19 +0000135static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000136_mm512_maskz_or_ps (__mmask16 __U, __m512 __A, __m512 __B) {
137 return (__m512) __builtin_ia32_orps512_mask ((__v16sf) __A,
138 (__v16sf) __B,
139 (__v16sf)
140 _mm512_setzero_ps (),
141 (__mmask16) __U);
142}
143
Michael Kupersteine45af542015-06-30 13:36:19 +0000144static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000145_mm512_and_pd (__m512d __A, __m512d __B) {
Craig Topper6a77b622016-06-04 05:43:41 +0000146 return (__m512d) ((__v8du) __A & (__v8du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000147}
148
Michael Kupersteine45af542015-06-30 13:36:19 +0000149static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000150_mm512_mask_and_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
151 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
152 (__v8df) __B,
153 (__v8df) __W,
154 (__mmask8) __U);
155}
156
Michael Kupersteine45af542015-06-30 13:36:19 +0000157static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000158_mm512_maskz_and_pd (__mmask8 __U, __m512d __A, __m512d __B) {
159 return (__m512d) __builtin_ia32_andpd512_mask ((__v8df) __A,
160 (__v8df) __B,
161 (__v8df)
162 _mm512_setzero_pd (),
163 (__mmask8) __U);
164}
165
Michael Kupersteine45af542015-06-30 13:36:19 +0000166static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000167_mm512_and_ps (__m512 __A, __m512 __B) {
Craig Topper6a77b622016-06-04 05:43:41 +0000168 return (__m512) ((__v16su) __A & (__v16su) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000169}
170
Michael Kupersteine45af542015-06-30 13:36:19 +0000171static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000172_mm512_mask_and_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
173 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
174 (__v16sf) __B,
175 (__v16sf) __W,
176 (__mmask16) __U);
177}
178
Michael Kupersteine45af542015-06-30 13:36:19 +0000179static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000180_mm512_maskz_and_ps (__mmask16 __U, __m512 __A, __m512 __B) {
181 return (__m512) __builtin_ia32_andps512_mask ((__v16sf) __A,
182 (__v16sf) __B,
183 (__v16sf)
184 _mm512_setzero_ps (),
185 (__mmask16) __U);
186}
187
Michael Kupersteine45af542015-06-30 13:36:19 +0000188static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000189_mm512_andnot_pd (__m512d __A, __m512d __B) {
190 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
191 (__v8df) __B,
192 (__v8df)
193 _mm512_setzero_pd (),
194 (__mmask8) -1);
195}
196
Michael Kupersteine45af542015-06-30 13:36:19 +0000197static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000198_mm512_mask_andnot_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
199 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
200 (__v8df) __B,
201 (__v8df) __W,
202 (__mmask8) __U);
203}
204
Michael Kupersteine45af542015-06-30 13:36:19 +0000205static __inline__ __m512d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000206_mm512_maskz_andnot_pd (__mmask8 __U, __m512d __A, __m512d __B) {
207 return (__m512d) __builtin_ia32_andnpd512_mask ((__v8df) __A,
208 (__v8df) __B,
209 (__v8df)
210 _mm512_setzero_pd (),
211 (__mmask8) __U);
212}
213
Michael Kupersteine45af542015-06-30 13:36:19 +0000214static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000215_mm512_andnot_ps (__m512 __A, __m512 __B) {
216 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
217 (__v16sf) __B,
218 (__v16sf)
219 _mm512_setzero_ps (),
220 (__mmask16) -1);
221}
222
Michael Kupersteine45af542015-06-30 13:36:19 +0000223static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000224_mm512_mask_andnot_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
225 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
226 (__v16sf) __B,
227 (__v16sf) __W,
228 (__mmask16) __U);
229}
230
Michael Kupersteine45af542015-06-30 13:36:19 +0000231static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000232_mm512_maskz_andnot_ps (__mmask16 __U, __m512 __A, __m512 __B) {
233 return (__m512) __builtin_ia32_andnps512_mask ((__v16sf) __A,
234 (__v16sf) __B,
235 (__v16sf)
236 _mm512_setzero_ps (),
237 (__mmask16) __U);
238}
239
Asaf Badouh27180512015-09-17 14:53:37 +0000240static __inline__ __m512i __DEFAULT_FN_ATTRS
241_mm512_cvtpd_epi64 (__m512d __A) {
242 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
243 (__v8di) _mm512_setzero_si512(),
244 (__mmask8) -1,
245 _MM_FROUND_CUR_DIRECTION);
246}
247
248static __inline__ __m512i __DEFAULT_FN_ATTRS
249_mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
250 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
251 (__v8di) __W,
252 (__mmask8) __U,
253 _MM_FROUND_CUR_DIRECTION);
254}
255
256static __inline__ __m512i __DEFAULT_FN_ATTRS
257_mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A) {
258 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
259 (__v8di) _mm512_setzero_si512(),
260 (__mmask8) __U,
261 _MM_FROUND_CUR_DIRECTION);
262}
263
Craig Topper41ad25a2016-05-17 04:41:36 +0000264#define _mm512_cvt_roundpd_epi64(A, R) __extension__ ({ \
265 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
266 (__v8di)_mm512_setzero_si512(), \
267 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000268
Craig Topper41ad25a2016-05-17 04:41:36 +0000269#define _mm512_mask_cvt_roundpd_epi64(W, U, A, R) __extension__ ({ \
270 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
271 (__v8di)(__m512i)(W), \
272 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000273
Craig Topper41ad25a2016-05-17 04:41:36 +0000274#define _mm512_maskz_cvt_roundpd_epi64(U, A, R) __extension__ ({ \
275 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
276 (__v8di)_mm512_setzero_si512(), \
277 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000278
279static __inline__ __m512i __DEFAULT_FN_ATTRS
280_mm512_cvtpd_epu64 (__m512d __A) {
281 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
282 (__v8di) _mm512_setzero_si512(),
283 (__mmask8) -1,
284 _MM_FROUND_CUR_DIRECTION);
285}
286
287static __inline__ __m512i __DEFAULT_FN_ATTRS
288_mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
289 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
290 (__v8di) __W,
291 (__mmask8) __U,
292 _MM_FROUND_CUR_DIRECTION);
293}
294
295static __inline__ __m512i __DEFAULT_FN_ATTRS
296_mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A) {
297 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
298 (__v8di) _mm512_setzero_si512(),
299 (__mmask8) __U,
300 _MM_FROUND_CUR_DIRECTION);
301}
302
Craig Topper41ad25a2016-05-17 04:41:36 +0000303#define _mm512_cvt_roundpd_epu64(A, R) __extension__ ({ \
304 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
305 (__v8di)_mm512_setzero_si512(), \
306 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000307
Craig Topper41ad25a2016-05-17 04:41:36 +0000308#define _mm512_mask_cvt_roundpd_epu64(W, U, A, R) __extension__ ({ \
309 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
310 (__v8di)(__m512i)(W), \
311 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000312
Craig Topper41ad25a2016-05-17 04:41:36 +0000313#define _mm512_maskz_cvt_roundpd_epu64(U, A, R) __extension__ ({ \
314 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
315 (__v8di)_mm512_setzero_si512(), \
316 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000317
318static __inline__ __m512i __DEFAULT_FN_ATTRS
319_mm512_cvtps_epi64 (__m256 __A) {
320 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
321 (__v8di) _mm512_setzero_si512(),
322 (__mmask8) -1,
323 _MM_FROUND_CUR_DIRECTION);
324}
325
326static __inline__ __m512i __DEFAULT_FN_ATTRS
327_mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
328 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
329 (__v8di) __W,
330 (__mmask8) __U,
331 _MM_FROUND_CUR_DIRECTION);
332}
333
334static __inline__ __m512i __DEFAULT_FN_ATTRS
335_mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A) {
336 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
337 (__v8di) _mm512_setzero_si512(),
338 (__mmask8) __U,
339 _MM_FROUND_CUR_DIRECTION);
340}
341
Craig Topper41ad25a2016-05-17 04:41:36 +0000342#define _mm512_cvt_roundps_epi64(A, R) __extension__ ({ \
343 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
344 (__v8di)_mm512_setzero_si512(), \
345 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000346
Craig Topper41ad25a2016-05-17 04:41:36 +0000347#define _mm512_mask_cvt_roundps_epi64(W, U, A, R) __extension__ ({ \
348 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
349 (__v8di)(__m512i)(W), \
350 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000351
Craig Topper41ad25a2016-05-17 04:41:36 +0000352#define _mm512_maskz_cvt_roundps_epi64(U, A, R) __extension__ ({ \
353 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
354 (__v8di)_mm512_setzero_si512(), \
355 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000356
357static __inline__ __m512i __DEFAULT_FN_ATTRS
358_mm512_cvtps_epu64 (__m256 __A) {
359 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
360 (__v8di) _mm512_setzero_si512(),
361 (__mmask8) -1,
362 _MM_FROUND_CUR_DIRECTION);
363}
364
365static __inline__ __m512i __DEFAULT_FN_ATTRS
366_mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
367 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
368 (__v8di) __W,
369 (__mmask8) __U,
370 _MM_FROUND_CUR_DIRECTION);
371}
372
373static __inline__ __m512i __DEFAULT_FN_ATTRS
374_mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A) {
375 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
376 (__v8di) _mm512_setzero_si512(),
377 (__mmask8) __U,
378 _MM_FROUND_CUR_DIRECTION);
379}
380
Craig Topper41ad25a2016-05-17 04:41:36 +0000381#define _mm512_cvt_roundps_epu64(A, R) __extension__ ({ \
382 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
383 (__v8di)_mm512_setzero_si512(), \
384 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000385
Craig Topper41ad25a2016-05-17 04:41:36 +0000386#define _mm512_mask_cvt_roundps_epu64(W, U, A, R) __extension__ ({ \
387 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
388 (__v8di)(__m512i)(W), \
389 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000390
Craig Topper41ad25a2016-05-17 04:41:36 +0000391#define _mm512_maskz_cvt_roundps_epu64(U, A, R) __extension__ ({ \
392 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
393 (__v8di)_mm512_setzero_si512(), \
394 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000395
396
397static __inline__ __m512d __DEFAULT_FN_ATTRS
398_mm512_cvtepi64_pd (__m512i __A) {
399 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
400 (__v8df) _mm512_setzero_pd(),
401 (__mmask8) -1,
402 _MM_FROUND_CUR_DIRECTION);
403}
404
405static __inline__ __m512d __DEFAULT_FN_ATTRS
406_mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
407 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
408 (__v8df) __W,
409 (__mmask8) __U,
410 _MM_FROUND_CUR_DIRECTION);
411}
412
413static __inline__ __m512d __DEFAULT_FN_ATTRS
414_mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
415 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
416 (__v8df) _mm512_setzero_pd(),
417 (__mmask8) __U,
418 _MM_FROUND_CUR_DIRECTION);
419}
420
Craig Topper41ad25a2016-05-17 04:41:36 +0000421#define _mm512_cvt_roundepi64_pd(A, R) __extension__ ({ \
422 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
423 (__v8df)_mm512_setzero_pd(), \
424 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000425
Craig Topper41ad25a2016-05-17 04:41:36 +0000426#define _mm512_mask_cvt_roundepi64_pd(W, U, A, R) __extension__ ({ \
427 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
428 (__v8df)(__m512d)(W), \
429 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000430
Craig Topper41ad25a2016-05-17 04:41:36 +0000431#define _mm512_maskz_cvt_roundepi64_pd(U, A, R) __extension__ ({ \
432 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
433 (__v8df)_mm512_setzero_pd(), \
434 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000435
436static __inline__ __m256 __DEFAULT_FN_ATTRS
437_mm512_cvtepi64_ps (__m512i __A) {
438 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
439 (__v8sf) _mm256_setzero_ps(),
440 (__mmask8) -1,
441 _MM_FROUND_CUR_DIRECTION);
442}
443
444static __inline__ __m256 __DEFAULT_FN_ATTRS
445_mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
446 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
447 (__v8sf) __W,
448 (__mmask8) __U,
449 _MM_FROUND_CUR_DIRECTION);
450}
451
452static __inline__ __m256 __DEFAULT_FN_ATTRS
453_mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
454 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
455 (__v8sf) _mm256_setzero_ps(),
456 (__mmask8) __U,
457 _MM_FROUND_CUR_DIRECTION);
458}
459
Craig Topper41ad25a2016-05-17 04:41:36 +0000460#define _mm512_cvt_roundepi64_ps(A, R) __extension__ ({ \
461 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
462 (__v8sf)_mm256_setzero_ps(), \
463 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000464
Craig Topper41ad25a2016-05-17 04:41:36 +0000465#define _mm512_mask_cvt_roundepi64_ps(W, U, A, R) __extension__ ({ \
466 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
467 (__v8sf)(__m256)(W), (__mmask8)(U), \
468 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000469
Craig Topper41ad25a2016-05-17 04:41:36 +0000470#define _mm512_maskz_cvt_roundepi64_ps(U, A, R) __extension__ ({ \
471 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
472 (__v8sf)_mm256_setzero_ps(), \
473 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000474
475
476static __inline__ __m512i __DEFAULT_FN_ATTRS
477_mm512_cvttpd_epi64 (__m512d __A) {
478 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
479 (__v8di) _mm512_setzero_si512(),
480 (__mmask8) -1,
481 _MM_FROUND_CUR_DIRECTION);
482}
483
484static __inline__ __m512i __DEFAULT_FN_ATTRS
485_mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
486 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
487 (__v8di) __W,
488 (__mmask8) __U,
489 _MM_FROUND_CUR_DIRECTION);
490}
491
492static __inline__ __m512i __DEFAULT_FN_ATTRS
493_mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
494 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
495 (__v8di) _mm512_setzero_si512(),
496 (__mmask8) __U,
497 _MM_FROUND_CUR_DIRECTION);
498}
499
Craig Topper41ad25a2016-05-17 04:41:36 +0000500#define _mm512_cvtt_roundpd_epi64(A, R) __extension__ ({ \
501 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
502 (__v8di)_mm512_setzero_si512(), \
503 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000504
Craig Topper41ad25a2016-05-17 04:41:36 +0000505#define _mm512_mask_cvtt_roundpd_epi64(W, U, A, R) __extension__ ({ \
506 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
507 (__v8di)(__m512i)(W), \
508 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000509
Craig Topper41ad25a2016-05-17 04:41:36 +0000510#define _mm512_maskz_cvtt_roundpd_epi64(U, A, R) __extension__ ({ \
511 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
512 (__v8di)_mm512_setzero_si512(), \
513 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000514
515static __inline__ __m512i __DEFAULT_FN_ATTRS
516_mm512_cvttpd_epu64 (__m512d __A) {
517 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
518 (__v8di) _mm512_setzero_si512(),
519 (__mmask8) -1,
520 _MM_FROUND_CUR_DIRECTION);
521}
522
523static __inline__ __m512i __DEFAULT_FN_ATTRS
524_mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
525 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
526 (__v8di) __W,
527 (__mmask8) __U,
528 _MM_FROUND_CUR_DIRECTION);
529}
530
531static __inline__ __m512i __DEFAULT_FN_ATTRS
532_mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
533 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
534 (__v8di) _mm512_setzero_si512(),
535 (__mmask8) __U,
536 _MM_FROUND_CUR_DIRECTION);
537}
538
Craig Topper41ad25a2016-05-17 04:41:36 +0000539#define _mm512_cvtt_roundpd_epu64(A, R) __extension__ ({ \
540 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
541 (__v8di)_mm512_setzero_si512(), \
542 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000543
Craig Topper41ad25a2016-05-17 04:41:36 +0000544#define _mm512_mask_cvtt_roundpd_epu64(W, U, A, R) __extension__ ({ \
545 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
546 (__v8di)(__m512i)(W), \
547 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000548
Craig Topper41ad25a2016-05-17 04:41:36 +0000549#define _mm512_maskz_cvtt_roundpd_epu64(U, A, R) __extension__ ({ \
550 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
551 (__v8di)_mm512_setzero_si512(), \
552 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000553
554static __inline__ __m512i __DEFAULT_FN_ATTRS
555_mm512_cvttps_epi64 (__m256 __A) {
556 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
557 (__v8di) _mm512_setzero_si512(),
558 (__mmask8) -1,
559 _MM_FROUND_CUR_DIRECTION);
560}
561
562static __inline__ __m512i __DEFAULT_FN_ATTRS
563_mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
564 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
565 (__v8di) __W,
566 (__mmask8) __U,
567 _MM_FROUND_CUR_DIRECTION);
568}
569
570static __inline__ __m512i __DEFAULT_FN_ATTRS
571_mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
572 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
573 (__v8di) _mm512_setzero_si512(),
574 (__mmask8) __U,
575 _MM_FROUND_CUR_DIRECTION);
576}
577
Craig Topper41ad25a2016-05-17 04:41:36 +0000578#define _mm512_cvtt_roundps_epi64(A, R) __extension__ ({ \
579 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
580 (__v8di)_mm512_setzero_si512(), \
581 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000582
Craig Topper41ad25a2016-05-17 04:41:36 +0000583#define _mm512_mask_cvtt_roundps_epi64(W, U, A, R) __extension__ ({ \
584 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
585 (__v8di)(__m512i)(W), \
586 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000587
Craig Topper41ad25a2016-05-17 04:41:36 +0000588#define _mm512_maskz_cvtt_roundps_epi64(U, A, R) __extension__ ({ \
589 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
590 (__v8di)_mm512_setzero_si512(), \
591 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000592
593static __inline__ __m512i __DEFAULT_FN_ATTRS
594_mm512_cvttps_epu64 (__m256 __A) {
595 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
596 (__v8di) _mm512_setzero_si512(),
597 (__mmask8) -1,
598 _MM_FROUND_CUR_DIRECTION);
599}
600
601static __inline__ __m512i __DEFAULT_FN_ATTRS
602_mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
603 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
604 (__v8di) __W,
605 (__mmask8) __U,
606 _MM_FROUND_CUR_DIRECTION);
607}
608
609static __inline__ __m512i __DEFAULT_FN_ATTRS
610_mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
611 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
612 (__v8di) _mm512_setzero_si512(),
613 (__mmask8) __U,
614 _MM_FROUND_CUR_DIRECTION);
615}
616
Craig Topper41ad25a2016-05-17 04:41:36 +0000617#define _mm512_cvtt_roundps_epu64(A, R) __extension__ ({ \
618 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
619 (__v8di)_mm512_setzero_si512(), \
620 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000621
Craig Topper41ad25a2016-05-17 04:41:36 +0000622#define _mm512_mask_cvtt_roundps_epu64(W, U, A, R) __extension__ ({ \
623 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
624 (__v8di)(__m512i)(W), \
625 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000626
Craig Topper41ad25a2016-05-17 04:41:36 +0000627#define _mm512_maskz_cvtt_roundps_epu64(U, A, R) __extension__ ({ \
628 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
629 (__v8di)_mm512_setzero_si512(), \
630 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000631
632static __inline__ __m512d __DEFAULT_FN_ATTRS
633_mm512_cvtepu64_pd (__m512i __A) {
634 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
635 (__v8df) _mm512_setzero_pd(),
636 (__mmask8) -1,
637 _MM_FROUND_CUR_DIRECTION);
638}
639
640static __inline__ __m512d __DEFAULT_FN_ATTRS
641_mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
642 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
643 (__v8df) __W,
644 (__mmask8) __U,
645 _MM_FROUND_CUR_DIRECTION);
646}
647
648static __inline__ __m512d __DEFAULT_FN_ATTRS
649_mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
650 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
651 (__v8df) _mm512_setzero_pd(),
652 (__mmask8) __U,
653 _MM_FROUND_CUR_DIRECTION);
654}
655
Craig Topper41ad25a2016-05-17 04:41:36 +0000656#define _mm512_cvt_roundepu64_pd(A, R) __extension__ ({ \
657 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
658 (__v8df)_mm512_setzero_pd(), \
659 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000660
Craig Topper41ad25a2016-05-17 04:41:36 +0000661#define _mm512_mask_cvt_roundepu64_pd(W, U, A, R) __extension__ ({ \
662 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
663 (__v8df)(__m512d)(W), \
664 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000665
666
Craig Topper41ad25a2016-05-17 04:41:36 +0000667#define _mm512_maskz_cvt_roundepu64_pd(U, A, R) __extension__ ({ \
668 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
669 (__v8df)_mm512_setzero_pd(), \
670 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000671
672
673static __inline__ __m256 __DEFAULT_FN_ATTRS
674_mm512_cvtepu64_ps (__m512i __A) {
675 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
676 (__v8sf) _mm256_setzero_ps(),
677 (__mmask8) -1,
678 _MM_FROUND_CUR_DIRECTION);
679}
680
681static __inline__ __m256 __DEFAULT_FN_ATTRS
682_mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
683 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
684 (__v8sf) __W,
685 (__mmask8) __U,
686 _MM_FROUND_CUR_DIRECTION);
687}
688
689static __inline__ __m256 __DEFAULT_FN_ATTRS
690_mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
691 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
692 (__v8sf) _mm256_setzero_ps(),
693 (__mmask8) __U,
694 _MM_FROUND_CUR_DIRECTION);
695}
696
Craig Topper41ad25a2016-05-17 04:41:36 +0000697#define _mm512_cvt_roundepu64_ps(A, R) __extension__ ({ \
698 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
699 (__v8sf)_mm256_setzero_ps(), \
700 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000701
Craig Topper41ad25a2016-05-17 04:41:36 +0000702#define _mm512_mask_cvt_roundepu64_ps(W, U, A, R) __extension__ ({ \
703 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
704 (__v8sf)(__m256)(W), (__mmask8)(U), \
705 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000706
Craig Topper41ad25a2016-05-17 04:41:36 +0000707#define _mm512_maskz_cvt_roundepu64_ps(U, A, R) __extension__ ({ \
708 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
709 (__v8sf)_mm256_setzero_ps(), \
710 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000711
Craig Topper41ad25a2016-05-17 04:41:36 +0000712#define _mm512_range_pd(A, B, C) __extension__ ({ \
713 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
714 (__v8df)(__m512d)(B), (int)(C), \
715 (__v8df)_mm512_setzero_pd(), \
716 (__mmask8)-1, \
717 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000718
Craig Topper41ad25a2016-05-17 04:41:36 +0000719#define _mm512_mask_range_pd(W, U, A, B, C) __extension__ ({ \
720 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
721 (__v8df)(__m512d)(B), (int)(C), \
722 (__v8df)(__m512d)(W), (__mmask8)(U), \
723 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000724
Craig Topper41ad25a2016-05-17 04:41:36 +0000725#define _mm512_maskz_range_pd(U, A, B, C) __extension__ ({ \
726 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
727 (__v8df)(__m512d)(B), (int)(C), \
728 (__v8df)_mm512_setzero_pd(), \
729 (__mmask8)(U), \
730 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000731
Craig Topper41ad25a2016-05-17 04:41:36 +0000732#define _mm512_range_round_pd(A, B, C, R) __extension__ ({ \
733 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
734 (__v8df)(__m512d)(B), (int)(C), \
735 (__v8df)_mm512_setzero_pd(), \
736 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000737
Craig Topper41ad25a2016-05-17 04:41:36 +0000738#define _mm512_mask_range_round_pd(W, U, A, B, C, R) __extension__ ({ \
739 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
740 (__v8df)(__m512d)(B), (int)(C), \
741 (__v8df)(__m512d)(W), (__mmask8)(U), \
742 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000743
Craig Topper41ad25a2016-05-17 04:41:36 +0000744#define _mm512_maskz_range_round_pd(U, A, B, C, R) __extension__ ({ \
745 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
746 (__v8df)(__m512d)(B), (int)(C), \
747 (__v8df)_mm512_setzero_pd(), \
748 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000749
Craig Topper41ad25a2016-05-17 04:41:36 +0000750#define _mm512_range_ps(A, B, C) __extension__ ({ \
751 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
752 (__v16sf)(__m512)(B), (int)(C), \
753 (__v16sf)_mm512_setzero_ps(), \
754 (__mmask16)-1, \
755 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000756
Craig Topper41ad25a2016-05-17 04:41:36 +0000757#define _mm512_mask_range_ps(W, U, A, B, C) __extension__ ({ \
758 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
759 (__v16sf)(__m512)(B), (int)(C), \
760 (__v16sf)(__m512)(W), (__mmask16)(U), \
761 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000762
Craig Topper41ad25a2016-05-17 04:41:36 +0000763#define _mm512_maskz_range_ps(U, A, B, C) __extension__ ({ \
764 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
765 (__v16sf)(__m512)(B), (int)(C), \
766 (__v16sf)_mm512_setzero_ps(), \
767 (__mmask16)(U), \
768 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000769
Craig Topper41ad25a2016-05-17 04:41:36 +0000770#define _mm512_range_round_ps(A, B, C, R) __extension__ ({ \
771 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
772 (__v16sf)(__m512)(B), (int)(C), \
773 (__v16sf)_mm512_setzero_ps(), \
774 (__mmask16)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000775
Craig Topper41ad25a2016-05-17 04:41:36 +0000776#define _mm512_mask_range_round_ps(W, U, A, B, C, R) __extension__ ({ \
777 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
778 (__v16sf)(__m512)(B), (int)(C), \
779 (__v16sf)(__m512)(W), (__mmask16)(U), \
780 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000781
Craig Topper41ad25a2016-05-17 04:41:36 +0000782#define _mm512_maskz_range_round_ps(U, A, B, C, R) __extension__ ({ \
783 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
784 (__v16sf)(__m512)(B), (int)(C), \
785 (__v16sf)_mm512_setzero_ps(), \
786 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000787
Craig Topper41ad25a2016-05-17 04:41:36 +0000788#define _mm512_reduce_pd(A, B) __extension__ ({ \
789 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
790 (__v8df)_mm512_setzero_pd(), \
791 (__mmask8)-1, \
792 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000793
Craig Topper41ad25a2016-05-17 04:41:36 +0000794#define _mm512_mask_reduce_pd(W, U, A, B) __extension__ ({ \
795 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
796 (__v8df)(__m512d)(W), \
797 (__mmask8)(U), \
798 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000799
Craig Topper41ad25a2016-05-17 04:41:36 +0000800#define _mm512_maskz_reduce_pd(U, A, B) __extension__ ({ \
801 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
802 (__v8df)_mm512_setzero_pd(), \
803 (__mmask8)(U), \
804 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000805
Craig Topper41ad25a2016-05-17 04:41:36 +0000806#define _mm512_reduce_ps(A, B) __extension__ ({ \
807 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
808 (__v16sf)_mm512_setzero_ps(), \
809 (__mmask16)-1, \
810 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000811
Craig Topper41ad25a2016-05-17 04:41:36 +0000812#define _mm512_mask_reduce_ps(W, U, A, B) __extension__ ({ \
813 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
814 (__v16sf)(__m512)(W), \
815 (__mmask16)(U), \
816 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000817
Craig Topper41ad25a2016-05-17 04:41:36 +0000818#define _mm512_maskz_reduce_ps(U, A, B) __extension__ ({ \
819 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
820 (__v16sf)_mm512_setzero_ps(), \
821 (__mmask16)(U), \
822 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000823
Craig Topper41ad25a2016-05-17 04:41:36 +0000824#define _mm512_reduce_round_pd(A, B, R) __extension__ ({\
825 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
826 (__v8df)_mm512_setzero_pd(), \
827 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000828
Craig Topper41ad25a2016-05-17 04:41:36 +0000829#define _mm512_mask_reduce_round_pd(W, U, A, B, R) __extension__ ({\
830 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
831 (__v8df)(__m512d)(W), \
832 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000833
Craig Topper41ad25a2016-05-17 04:41:36 +0000834#define _mm512_maskz_reduce_round_pd(U, A, B, R) __extension__ ({\
835 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
836 (__v8df)_mm512_setzero_pd(), \
837 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000838
Craig Topper41ad25a2016-05-17 04:41:36 +0000839#define _mm512_reduce_round_ps(A, B, R) __extension__ ({\
840 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
841 (__v16sf)_mm512_setzero_ps(), \
842 (__mmask16)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000843
Craig Topper41ad25a2016-05-17 04:41:36 +0000844#define _mm512_mask_reduce_round_ps(W, U, A, B, R) __extension__ ({\
845 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
846 (__v16sf)(__m512)(W), \
847 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000848
Craig Topper41ad25a2016-05-17 04:41:36 +0000849#define _mm512_maskz_reduce_round_ps(U, A, B, R) __extension__ ({\
850 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
851 (__v16sf)_mm512_setzero_ps(), \
852 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000853
Michael Zuckerman96d03992016-06-07 14:00:20 +0000854#define _mm_reduce_ss(A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000855 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
856 (__v4sf)(__m128)(B), \
857 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
858 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000859
860#define _mm_mask_reduce_ss(W, U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000861 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
862 (__v4sf)(__m128)(B), \
863 (__v4sf)(__m128)(W), (__mmask8)(U), \
864 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000865
866#define _mm_maskz_reduce_ss(U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000867 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
868 (__v4sf)(__m128)(B), \
869 (__v4sf)_mm_setzero_ps(), \
870 (__mmask8)(U), (int)(C), \
871 _MM_FROUND_CUR_DIRECTION); })
872
Michael Zuckerman96d03992016-06-07 14:00:20 +0000873#define _mm_reduce_round_ss(A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000874 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
875 (__v4sf)(__m128)(B), \
876 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
877 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000878
879#define _mm_mask_reduce_round_ss(W, U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000880 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
881 (__v4sf)(__m128)(B), \
882 (__v4sf)(__m128)(W), (__mmask8)(U), \
883 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000884
885#define _mm_maskz_reduce_round_ss(U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000886 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
887 (__v4sf)(__m128)(B), \
888 (__v4sf)_mm_setzero_ps(), \
889 (__mmask8)(U), (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000890
891#define _mm_reduce_sd(A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000892 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
893 (__v2df)(__m128d)(B), \
894 (__v2df)_mm_setzero_pd(), \
895 (__mmask8)-1, (int)(C), \
896 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000897
898#define _mm_mask_reduce_sd(W, U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000899 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
900 (__v2df)(__m128d)(B), \
901 (__v2df)(__m128d)(W), (__mmask8)(U), \
902 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000903
904#define _mm_maskz_reduce_sd(U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000905 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
906 (__v2df)(__m128d)(B), \
907 (__v2df)_mm_setzero_pd(), \
908 (__mmask8)(U), (int)(C), \
909 _MM_FROUND_CUR_DIRECTION); })
910
Michael Zuckerman96d03992016-06-07 14:00:20 +0000911#define _mm_reduce_round_sd(A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000912 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
913 (__v2df)(__m128d)(B), \
914 (__v2df)_mm_setzero_pd(), \
915 (__mmask8)-1, (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000916
917#define _mm_mask_reduce_round_sd(W, U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000918 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
919 (__v2df)(__m128d)(B), \
920 (__v2df)(__m128d)(W), (__mmask8)(U), \
921 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000922
923#define _mm_maskz_reduce_round_sd(U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000924 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
925 (__v2df)(__m128d)(B), \
926 (__v2df)_mm_setzero_pd(), \
927 (__mmask8)(U), (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000928
Michael Zuckerman074edd72016-04-13 10:49:37 +0000929static __inline__ __mmask16 __DEFAULT_FN_ATTRS
930_mm512_movepi32_mask (__m512i __A)
931{
932 return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
933}
934
935static __inline__ __m512i __DEFAULT_FN_ATTRS
936_mm512_movm_epi32 (__mmask16 __A)
937{
938 return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
939}
940
941static __inline__ __m512i __DEFAULT_FN_ATTRS
942_mm512_movm_epi64 (__mmask8 __A)
943{
944 return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
945}
946
947static __inline__ __mmask8 __DEFAULT_FN_ATTRS
948_mm512_movepi64_mask (__m512i __A)
949{
950 return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
951}
952
953
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000954static __inline__ __m512 __DEFAULT_FN_ATTRS
955_mm512_broadcast_f32x2 (__m128 __A)
956{
957 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
958 (__v16sf)_mm512_undefined_ps(),
Craig Topper406d5cd2016-06-04 05:43:37 +0000959 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000960}
961
962static __inline__ __m512 __DEFAULT_FN_ATTRS
963_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
964{
965 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
966 (__v16sf)
967 __O, __M);
968}
969
970static __inline__ __m512 __DEFAULT_FN_ATTRS
971_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
972{
973 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
974 (__v16sf)_mm512_setzero_ps (),
975 __M);
976}
977
978static __inline__ __m512 __DEFAULT_FN_ATTRS
979_mm512_broadcast_f32x8 (__m256 __A)
980{
981 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
982 _mm512_undefined_ps(),
Craig Topper406d5cd2016-06-04 05:43:37 +0000983 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000984}
985
986static __inline__ __m512 __DEFAULT_FN_ATTRS
987_mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
988{
989 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
990 (__v16sf)__O,
991 __M);
992}
993
994static __inline__ __m512 __DEFAULT_FN_ATTRS
995_mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
996{
997 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
998 (__v16sf)_mm512_setzero_ps (),
999 __M);
1000}
1001
1002static __inline__ __m512d __DEFAULT_FN_ATTRS
1003_mm512_broadcast_f64x2 (__m128d __A)
1004{
1005 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
1006 (__v8df)_mm512_undefined_pd(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001007 (__mmask8) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001008}
1009
1010static __inline__ __m512d __DEFAULT_FN_ATTRS
1011_mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
1012{
1013 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
1014 (__v8df)
1015 __O, __M);
1016}
1017
1018static __inline__ __m512d __DEFAULT_FN_ATTRS
1019_mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1020{
1021 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
1022 (__v8df)_mm512_setzero_ps (),
1023 __M);
1024}
1025
1026static __inline__ __m512i __DEFAULT_FN_ATTRS
1027_mm512_broadcast_i32x2 (__m128i __A)
1028{
1029 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1030 (__v16si)_mm512_setzero_si512(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001031 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001032}
1033
1034static __inline__ __m512i __DEFAULT_FN_ATTRS
1035_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1036{
1037 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1038 (__v16si)
1039 __O, __M);
1040}
1041
1042static __inline__ __m512i __DEFAULT_FN_ATTRS
1043_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1044{
1045 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1046 (__v16si)_mm512_setzero_si512 (),
1047 __M);
1048}
1049
1050static __inline__ __m512i __DEFAULT_FN_ATTRS
1051_mm512_broadcast_i32x8 (__m256i __A)
1052{
1053 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
1054 (__v16si)_mm512_setzero_si512(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001055 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001056}
1057
1058static __inline__ __m512i __DEFAULT_FN_ATTRS
1059_mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
1060{
1061 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
1062 (__v16si)__O,
1063 __M);
1064}
1065
1066static __inline__ __m512i __DEFAULT_FN_ATTRS
1067_mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
1068{
1069 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
1070 (__v16si)
1071 _mm512_setzero_si512 (),
1072 __M);
1073}
1074
1075static __inline__ __m512i __DEFAULT_FN_ATTRS
1076_mm512_broadcast_i64x2 (__m128i __A)
1077{
1078 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
1079 (__v8di)_mm512_setzero_si512(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001080 (__mmask8) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001081}
1082
1083static __inline__ __m512i __DEFAULT_FN_ATTRS
1084_mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
1085{
1086 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
1087 (__v8di)
1088 __O, __M);
1089}
1090
1091static __inline__ __m512i __DEFAULT_FN_ATTRS
1092_mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
1093{
1094 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
1095 (__v8di)_mm512_setzero_si512 (),
1096 __M);
1097}
1098
Craig Topper41ad25a2016-05-17 04:41:36 +00001099#define _mm512_extractf32x8_ps(A, imm) __extension__ ({ \
1100 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1101 (__v8sf)_mm256_setzero_ps(), \
1102 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001103
Craig Topper41ad25a2016-05-17 04:41:36 +00001104#define _mm512_mask_extractf32x8_ps(W, U, A, imm) __extension__ ({ \
1105 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1106 (__v8sf)(__m256)(W), \
1107 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001108
Craig Topper41ad25a2016-05-17 04:41:36 +00001109#define _mm512_maskz_extractf32x8_ps(U, A, imm) __extension__ ({ \
1110 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1111 (__v8sf)_mm256_setzero_ps(), \
1112 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001113
Craig Topper41ad25a2016-05-17 04:41:36 +00001114#define _mm512_extractf64x2_pd(A, imm) __extension__ ({ \
1115 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1116 (int)(imm), \
1117 (__v2df)_mm_setzero_pd(), \
1118 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001119
Craig Topper41ad25a2016-05-17 04:41:36 +00001120#define _mm512_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
1121 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1122 (int)(imm), \
1123 (__v2df)(__m128d)(W), \
1124 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001125
Craig Topper41ad25a2016-05-17 04:41:36 +00001126#define _mm512_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
1127 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1128 (int)(imm), \
1129 (__v2df)_mm_setzero_pd(), \
1130 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001131
Craig Topper41ad25a2016-05-17 04:41:36 +00001132#define _mm512_extracti32x8_epi32(A, imm) __extension__ ({ \
1133 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1134 (__v8si)_mm256_setzero_si256(), \
1135 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001136
Craig Topper41ad25a2016-05-17 04:41:36 +00001137#define _mm512_mask_extracti32x8_epi32(W, U, A, imm) __extension__ ({ \
1138 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1139 (__v8si)(__m256i)(W), \
1140 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001141
Craig Topper41ad25a2016-05-17 04:41:36 +00001142#define _mm512_maskz_extracti32x8_epi32(U, A, imm) __extension__ ({ \
1143 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1144 (__v8si)_mm256_setzero_si256(), \
1145 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001146
Craig Topper41ad25a2016-05-17 04:41:36 +00001147#define _mm512_extracti64x2_epi64(A, imm) __extension__ ({ \
1148 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1149 (int)(imm), \
1150 (__v2di)_mm_setzero_di(), \
1151 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001152
Craig Topper41ad25a2016-05-17 04:41:36 +00001153#define _mm512_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
1154 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1155 (int)(imm), \
1156 (__v2di)(__m128i)(W), \
1157 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001158
Craig Topper41ad25a2016-05-17 04:41:36 +00001159#define _mm512_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
1160 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1161 (int)(imm), \
1162 (__v2di)_mm_setzero_di(), \
1163 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001164
Craig Topperf3efec62016-06-08 06:08:07 +00001165#define _mm512_insertf32x8(A, B, imm) __extension__ ({ \
1166 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1167 (__v8sf)(__m256)(B), (int)(imm), \
1168 (__v16sf)_mm512_setzero_ps(), \
1169 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00001170
Craig Topperf3efec62016-06-08 06:08:07 +00001171#define _mm512_mask_insertf32x8(W, U, A, B, imm) __extension__ ({ \
1172 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1173 (__v8sf)(__m256)(B), (int)(imm), \
1174 (__v16sf)(__m512)(W), \
1175 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00001176
Craig Topperf3efec62016-06-08 06:08:07 +00001177#define _mm512_maskz_insertf32x8(U, A, B, imm) __extension__ ({ \
1178 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1179 (__v8sf)(__m256)(B), (int)(imm), \
1180 (__v16sf)_mm512_setzero_ps(), \
1181 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00001182
Craig Topper41ad25a2016-05-17 04:41:36 +00001183#define _mm512_insertf64x2(A, B, imm) __extension__ ({ \
1184 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1185 (__v2df)(__m128d)(B), \
1186 (int)(imm), \
1187 (__v8df)_mm512_setzero_pd(), \
1188 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001189
Craig Topper41ad25a2016-05-17 04:41:36 +00001190#define _mm512_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
1191 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1192 (__v2df)(__m128d)(B), \
1193 (int)(imm), \
1194 (__v8df)(__m512d)(W), \
1195 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001196
Craig Topper41ad25a2016-05-17 04:41:36 +00001197#define _mm512_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
1198 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1199 (__v2df)(__m128d)(B), \
1200 (int)(imm), \
1201 (__v8df)_mm512_setzero_pd(), \
1202 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001203
Craig Topper41ad25a2016-05-17 04:41:36 +00001204#define _mm512_inserti32x8(A, B, imm) __extension__ ({ \
1205 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1206 (__v8si)(__m256i)(B), (int)(imm), \
1207 (__v16si)_mm512_setzero_si512(), \
1208 (__mmask16)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001209
Craig Topper41ad25a2016-05-17 04:41:36 +00001210#define _mm512_mask_inserti32x8(W, U, A, B, imm) __extension__ ({ \
1211 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1212 (__v8si)(__m256i)(B), (int)(imm), \
1213 (__v16si)(__m512i)(W), \
1214 (__mmask16)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001215
Craig Topper41ad25a2016-05-17 04:41:36 +00001216#define _mm512_maskz_inserti32x8(U, A, B, imm) __extension__ ({ \
1217 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1218 (__v8si)(__m256i)(B), (int)(imm), \
1219 (__v16si)_mm512_setzero_si512(), \
1220 (__mmask16)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001221
Craig Topper41ad25a2016-05-17 04:41:36 +00001222#define _mm512_inserti64x2(A, B, imm) __extension__ ({ \
1223 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1224 (__v2di)(__m128i)(B), \
1225 (int)(imm), \
1226 (__v8di)_mm512_setzero_si512(), \
1227 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001228
Craig Topper41ad25a2016-05-17 04:41:36 +00001229#define _mm512_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
1230 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1231 (__v2di)(__m128i)(B), \
1232 (int)(imm), \
1233 (__v8di)(__m512i)(W), \
1234 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001235
Craig Topper41ad25a2016-05-17 04:41:36 +00001236#define _mm512_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
1237 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1238 (__v2di)(__m128i)(B), \
1239 (int)(imm), \
1240 (__v8di)_mm512_setzero_si512(), \
1241 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001242
Craig Topper41ad25a2016-05-17 04:41:36 +00001243#define _mm512_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1244 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00001245 (int)(imm), (__mmask16)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001246
Craig Topper41ad25a2016-05-17 04:41:36 +00001247#define _mm512_fpclass_ps_mask(A, imm) __extension__ ({ \
1248 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1249 (int)(imm), (__mmask16)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001250
Craig Topper41ad25a2016-05-17 04:41:36 +00001251#define _mm512_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1252 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1253 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001254
Craig Topper41ad25a2016-05-17 04:41:36 +00001255#define _mm512_fpclass_pd_mask(A, imm) __extension__ ({ \
1256 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1257 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001258
Craig Topper41ad25a2016-05-17 04:41:36 +00001259#define _mm_fpclass_sd_mask(A, imm) __extension__ ({ \
1260 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1261 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001262
Craig Topper41ad25a2016-05-17 04:41:36 +00001263#define _mm_mask_fpclass_sd_mask(U, A, imm) __extension__ ({ \
1264 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1265 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001266
Craig Topper41ad25a2016-05-17 04:41:36 +00001267#define _mm_fpclass_ss_mask(A, imm) __extension__ ({ \
1268 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1269 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001270
Craig Topper41ad25a2016-05-17 04:41:36 +00001271#define _mm_mask_fpclass_ss_mask(U, A, imm) __extension__ ({ \
1272 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1273 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001274
Michael Kupersteine45af542015-06-30 13:36:19 +00001275#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00001276
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001277#endif