blob: 19514cf489a2c5d67c89201272ac9ebc9ebb15ef [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
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000788#define _mm_range_round_ss(A, B, C, R) __extension__ ({ \
789 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
790 (__v4sf)(__m128)(B), \
791 (__v4sf)_mm_setzero_ps(), \
792 (__mmask8) -1, (int)(C),\
793 (int)(R)); })
794
795#define _mm_mask_range_round_ss(W, U, A, B, C, R) __extension__ ({ \
796 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
797 (__v4sf)(__m128)(B), \
798 (__v4sf)(__m128)(W),\
799 (__mmask8)(U), (int)(C),\
800 (int)(R)); })
801
802#define _mm_maskz_range_round_ss(U, A, B, C, R) __extension__ ({ \
803 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
804 (__v4sf)(__m128)(B), \
805 (__v4sf)_mm_setzero_ps(), \
806 (__mmask8)(U), (int)(C),\
807 (int)(R)); })
808
809#define _mm_range_round_sd(A, B, C, R) __extension__ ({ \
810 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
811 (__v2df)(__m128d)(B), \
812 (__v2df)_mm_setzero_pd(), \
813 (__mmask8) -1, (int)(C),\
814 (int)(R)); })
815
816#define _mm_mask_range_round_sd(W, U, A, B, C, R) __extension__ ({ \
817 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
818 (__v2df)(__m128d)(B), \
819 (__v2df)(__m128d)(W),\
820 (__mmask8)(U), (int)(C),\
821 (int)(R)); })
822
823#define _mm_maskz_range_round_sd(U, A, B, C, R) __extension__ ({ \
824 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
825 (__v2df)(__m128d)(B), \
826 (__v2df)_mm_setzero_pd(), \
827 (__mmask8)(U), (int)(C),\
828 (int)(R)); })
829
Craig Topper41ad25a2016-05-17 04:41:36 +0000830#define _mm512_reduce_pd(A, B) __extension__ ({ \
831 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
832 (__v8df)_mm512_setzero_pd(), \
833 (__mmask8)-1, \
834 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000835
Craig Topper41ad25a2016-05-17 04:41:36 +0000836#define _mm512_mask_reduce_pd(W, U, A, B) __extension__ ({ \
837 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
838 (__v8df)(__m512d)(W), \
839 (__mmask8)(U), \
840 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000841
Craig Topper41ad25a2016-05-17 04:41:36 +0000842#define _mm512_maskz_reduce_pd(U, A, B) __extension__ ({ \
843 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
844 (__v8df)_mm512_setzero_pd(), \
845 (__mmask8)(U), \
846 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000847
Craig Topper41ad25a2016-05-17 04:41:36 +0000848#define _mm512_reduce_ps(A, B) __extension__ ({ \
849 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
850 (__v16sf)_mm512_setzero_ps(), \
851 (__mmask16)-1, \
852 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000853
Craig Topper41ad25a2016-05-17 04:41:36 +0000854#define _mm512_mask_reduce_ps(W, U, A, B) __extension__ ({ \
855 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
856 (__v16sf)(__m512)(W), \
857 (__mmask16)(U), \
858 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000859
Craig Topper41ad25a2016-05-17 04:41:36 +0000860#define _mm512_maskz_reduce_ps(U, A, B) __extension__ ({ \
861 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
862 (__v16sf)_mm512_setzero_ps(), \
863 (__mmask16)(U), \
864 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000865
Craig Topper41ad25a2016-05-17 04:41:36 +0000866#define _mm512_reduce_round_pd(A, B, R) __extension__ ({\
867 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
868 (__v8df)_mm512_setzero_pd(), \
869 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000870
Craig Topper41ad25a2016-05-17 04:41:36 +0000871#define _mm512_mask_reduce_round_pd(W, U, A, B, R) __extension__ ({\
872 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
873 (__v8df)(__m512d)(W), \
874 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000875
Craig Topper41ad25a2016-05-17 04:41:36 +0000876#define _mm512_maskz_reduce_round_pd(U, A, B, R) __extension__ ({\
877 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
878 (__v8df)_mm512_setzero_pd(), \
879 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000880
Craig Topper41ad25a2016-05-17 04:41:36 +0000881#define _mm512_reduce_round_ps(A, B, R) __extension__ ({\
882 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
883 (__v16sf)_mm512_setzero_ps(), \
884 (__mmask16)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000885
Craig Topper41ad25a2016-05-17 04:41:36 +0000886#define _mm512_mask_reduce_round_ps(W, U, A, B, R) __extension__ ({\
887 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
888 (__v16sf)(__m512)(W), \
889 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000890
Craig Topper41ad25a2016-05-17 04:41:36 +0000891#define _mm512_maskz_reduce_round_ps(U, A, B, R) __extension__ ({\
892 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
893 (__v16sf)_mm512_setzero_ps(), \
894 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000895
Michael Zuckerman96d03992016-06-07 14:00:20 +0000896#define _mm_reduce_ss(A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000897 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
898 (__v4sf)(__m128)(B), \
899 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
900 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000901
902#define _mm_mask_reduce_ss(W, U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000903 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
904 (__v4sf)(__m128)(B), \
905 (__v4sf)(__m128)(W), (__mmask8)(U), \
906 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000907
908#define _mm_maskz_reduce_ss(U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000909 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
910 (__v4sf)(__m128)(B), \
911 (__v4sf)_mm_setzero_ps(), \
912 (__mmask8)(U), (int)(C), \
913 _MM_FROUND_CUR_DIRECTION); })
914
Michael Zuckerman96d03992016-06-07 14:00:20 +0000915#define _mm_reduce_round_ss(A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000916 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
917 (__v4sf)(__m128)(B), \
918 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
919 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000920
921#define _mm_mask_reduce_round_ss(W, U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000922 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
923 (__v4sf)(__m128)(B), \
924 (__v4sf)(__m128)(W), (__mmask8)(U), \
925 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000926
927#define _mm_maskz_reduce_round_ss(U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000928 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
929 (__v4sf)(__m128)(B), \
930 (__v4sf)_mm_setzero_ps(), \
931 (__mmask8)(U), (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000932
933#define _mm_reduce_sd(A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000934 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
935 (__v2df)(__m128d)(B), \
936 (__v2df)_mm_setzero_pd(), \
937 (__mmask8)-1, (int)(C), \
938 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000939
940#define _mm_mask_reduce_sd(W, U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000941 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
942 (__v2df)(__m128d)(B), \
943 (__v2df)(__m128d)(W), (__mmask8)(U), \
944 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000945
946#define _mm_maskz_reduce_sd(U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000947 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
948 (__v2df)(__m128d)(B), \
949 (__v2df)_mm_setzero_pd(), \
950 (__mmask8)(U), (int)(C), \
951 _MM_FROUND_CUR_DIRECTION); })
952
Michael Zuckerman96d03992016-06-07 14:00:20 +0000953#define _mm_reduce_round_sd(A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000954 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
955 (__v2df)(__m128d)(B), \
956 (__v2df)_mm_setzero_pd(), \
957 (__mmask8)-1, (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000958
959#define _mm_mask_reduce_round_sd(W, U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000960 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
961 (__v2df)(__m128d)(B), \
962 (__v2df)(__m128d)(W), (__mmask8)(U), \
963 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000964
965#define _mm_maskz_reduce_round_sd(U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000966 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
967 (__v2df)(__m128d)(B), \
968 (__v2df)_mm_setzero_pd(), \
969 (__mmask8)(U), (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000970
Michael Zuckerman074edd72016-04-13 10:49:37 +0000971static __inline__ __mmask16 __DEFAULT_FN_ATTRS
972_mm512_movepi32_mask (__m512i __A)
973{
974 return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
975}
976
977static __inline__ __m512i __DEFAULT_FN_ATTRS
978_mm512_movm_epi32 (__mmask16 __A)
979{
980 return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
981}
982
983static __inline__ __m512i __DEFAULT_FN_ATTRS
984_mm512_movm_epi64 (__mmask8 __A)
985{
986 return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
987}
988
989static __inline__ __mmask8 __DEFAULT_FN_ATTRS
990_mm512_movepi64_mask (__m512i __A)
991{
992 return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
993}
994
995
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000996static __inline__ __m512 __DEFAULT_FN_ATTRS
997_mm512_broadcast_f32x2 (__m128 __A)
998{
999 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
1000 (__v16sf)_mm512_undefined_ps(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001001 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001002}
1003
1004static __inline__ __m512 __DEFAULT_FN_ATTRS
1005_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
1006{
1007 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
1008 (__v16sf)
1009 __O, __M);
1010}
1011
1012static __inline__ __m512 __DEFAULT_FN_ATTRS
1013_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
1014{
1015 return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
1016 (__v16sf)_mm512_setzero_ps (),
1017 __M);
1018}
1019
1020static __inline__ __m512 __DEFAULT_FN_ATTRS
1021_mm512_broadcast_f32x8 (__m256 __A)
1022{
1023 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
1024 _mm512_undefined_ps(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001025 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001026}
1027
1028static __inline__ __m512 __DEFAULT_FN_ATTRS
1029_mm512_mask_broadcast_f32x8 (__m512 __O, __mmask16 __M, __m256 __A)
1030{
1031 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
1032 (__v16sf)__O,
1033 __M);
1034}
1035
1036static __inline__ __m512 __DEFAULT_FN_ATTRS
1037_mm512_maskz_broadcast_f32x8 (__mmask16 __M, __m256 __A)
1038{
1039 return (__m512) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf) __A,
1040 (__v16sf)_mm512_setzero_ps (),
1041 __M);
1042}
1043
1044static __inline__ __m512d __DEFAULT_FN_ATTRS
1045_mm512_broadcast_f64x2 (__m128d __A)
1046{
1047 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
1048 (__v8df)_mm512_undefined_pd(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001049 (__mmask8) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001050}
1051
1052static __inline__ __m512d __DEFAULT_FN_ATTRS
1053_mm512_mask_broadcast_f64x2 (__m512d __O, __mmask8 __M, __m128d __A)
1054{
1055 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
1056 (__v8df)
1057 __O, __M);
1058}
1059
1060static __inline__ __m512d __DEFAULT_FN_ATTRS
1061_mm512_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1062{
1063 return (__m512d) __builtin_ia32_broadcastf64x2_512_mask ((__v2df) __A,
1064 (__v8df)_mm512_setzero_ps (),
1065 __M);
1066}
1067
1068static __inline__ __m512i __DEFAULT_FN_ATTRS
1069_mm512_broadcast_i32x2 (__m128i __A)
1070{
1071 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1072 (__v16si)_mm512_setzero_si512(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001073 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001074}
1075
1076static __inline__ __m512i __DEFAULT_FN_ATTRS
1077_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1078{
1079 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1080 (__v16si)
1081 __O, __M);
1082}
1083
1084static __inline__ __m512i __DEFAULT_FN_ATTRS
1085_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1086{
1087 return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1088 (__v16si)_mm512_setzero_si512 (),
1089 __M);
1090}
1091
1092static __inline__ __m512i __DEFAULT_FN_ATTRS
1093_mm512_broadcast_i32x8 (__m256i __A)
1094{
1095 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
1096 (__v16si)_mm512_setzero_si512(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001097 (__mmask16) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001098}
1099
1100static __inline__ __m512i __DEFAULT_FN_ATTRS
1101_mm512_mask_broadcast_i32x8 (__m512i __O, __mmask16 __M, __m256i __A)
1102{
1103 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
1104 (__v16si)__O,
1105 __M);
1106}
1107
1108static __inline__ __m512i __DEFAULT_FN_ATTRS
1109_mm512_maskz_broadcast_i32x8 (__mmask16 __M, __m256i __A)
1110{
1111 return (__m512i) __builtin_ia32_broadcasti32x8_512_mask ((__v8si) __A,
1112 (__v16si)
1113 _mm512_setzero_si512 (),
1114 __M);
1115}
1116
1117static __inline__ __m512i __DEFAULT_FN_ATTRS
1118_mm512_broadcast_i64x2 (__m128i __A)
1119{
1120 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
1121 (__v8di)_mm512_setzero_si512(),
Craig Topper406d5cd2016-06-04 05:43:37 +00001122 (__mmask8) -1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001123}
1124
1125static __inline__ __m512i __DEFAULT_FN_ATTRS
1126_mm512_mask_broadcast_i64x2 (__m512i __O, __mmask8 __M, __m128i __A)
1127{
1128 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
1129 (__v8di)
1130 __O, __M);
1131}
1132
1133static __inline__ __m512i __DEFAULT_FN_ATTRS
1134_mm512_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
1135{
1136 return (__m512i) __builtin_ia32_broadcasti64x2_512_mask ((__v2di) __A,
1137 (__v8di)_mm512_setzero_si512 (),
1138 __M);
1139}
1140
Craig Topper41ad25a2016-05-17 04:41:36 +00001141#define _mm512_extractf32x8_ps(A, imm) __extension__ ({ \
1142 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1143 (__v8sf)_mm256_setzero_ps(), \
1144 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001145
Craig Topper41ad25a2016-05-17 04:41:36 +00001146#define _mm512_mask_extractf32x8_ps(W, U, A, imm) __extension__ ({ \
1147 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1148 (__v8sf)(__m256)(W), \
1149 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001150
Craig Topper41ad25a2016-05-17 04:41:36 +00001151#define _mm512_maskz_extractf32x8_ps(U, A, imm) __extension__ ({ \
1152 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1153 (__v8sf)_mm256_setzero_ps(), \
1154 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001155
Craig Topper41ad25a2016-05-17 04:41:36 +00001156#define _mm512_extractf64x2_pd(A, imm) __extension__ ({ \
1157 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1158 (int)(imm), \
1159 (__v2df)_mm_setzero_pd(), \
1160 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001161
Craig Topper41ad25a2016-05-17 04:41:36 +00001162#define _mm512_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
1163 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1164 (int)(imm), \
1165 (__v2df)(__m128d)(W), \
1166 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001167
Craig Topper41ad25a2016-05-17 04:41:36 +00001168#define _mm512_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
1169 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1170 (int)(imm), \
1171 (__v2df)_mm_setzero_pd(), \
1172 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001173
Craig Topper41ad25a2016-05-17 04:41:36 +00001174#define _mm512_extracti32x8_epi32(A, imm) __extension__ ({ \
1175 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1176 (__v8si)_mm256_setzero_si256(), \
1177 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001178
Craig Topper41ad25a2016-05-17 04:41:36 +00001179#define _mm512_mask_extracti32x8_epi32(W, U, A, imm) __extension__ ({ \
1180 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1181 (__v8si)(__m256i)(W), \
1182 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001183
Craig Topper41ad25a2016-05-17 04:41:36 +00001184#define _mm512_maskz_extracti32x8_epi32(U, A, imm) __extension__ ({ \
1185 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1186 (__v8si)_mm256_setzero_si256(), \
1187 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001188
Craig Topper41ad25a2016-05-17 04:41:36 +00001189#define _mm512_extracti64x2_epi64(A, imm) __extension__ ({ \
1190 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1191 (int)(imm), \
1192 (__v2di)_mm_setzero_di(), \
1193 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001194
Craig Topper41ad25a2016-05-17 04:41:36 +00001195#define _mm512_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
1196 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1197 (int)(imm), \
1198 (__v2di)(__m128i)(W), \
1199 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001200
Craig Topper41ad25a2016-05-17 04:41:36 +00001201#define _mm512_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
1202 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1203 (int)(imm), \
1204 (__v2di)_mm_setzero_di(), \
1205 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001206
Craig Topperf3efec62016-06-08 06:08:07 +00001207#define _mm512_insertf32x8(A, B, imm) __extension__ ({ \
1208 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1209 (__v8sf)(__m256)(B), (int)(imm), \
1210 (__v16sf)_mm512_setzero_ps(), \
1211 (__mmask16)-1); })
Craig Topperdca1f232016-05-15 21:26:20 +00001212
Craig Topperf3efec62016-06-08 06:08:07 +00001213#define _mm512_mask_insertf32x8(W, U, A, B, imm) __extension__ ({ \
1214 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1215 (__v8sf)(__m256)(B), (int)(imm), \
1216 (__v16sf)(__m512)(W), \
1217 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00001218
Craig Topperf3efec62016-06-08 06:08:07 +00001219#define _mm512_maskz_insertf32x8(U, A, B, imm) __extension__ ({ \
1220 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1221 (__v8sf)(__m256)(B), (int)(imm), \
1222 (__v16sf)_mm512_setzero_ps(), \
1223 (__mmask16)(U)); })
Craig Topperdca1f232016-05-15 21:26:20 +00001224
Craig Topper41ad25a2016-05-17 04:41:36 +00001225#define _mm512_insertf64x2(A, B, imm) __extension__ ({ \
1226 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1227 (__v2df)(__m128d)(B), \
1228 (int)(imm), \
1229 (__v8df)_mm512_setzero_pd(), \
1230 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001231
Craig Topper41ad25a2016-05-17 04:41:36 +00001232#define _mm512_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
1233 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1234 (__v2df)(__m128d)(B), \
1235 (int)(imm), \
1236 (__v8df)(__m512d)(W), \
1237 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001238
Craig Topper41ad25a2016-05-17 04:41:36 +00001239#define _mm512_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
1240 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1241 (__v2df)(__m128d)(B), \
1242 (int)(imm), \
1243 (__v8df)_mm512_setzero_pd(), \
1244 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001245
Craig Topper41ad25a2016-05-17 04:41:36 +00001246#define _mm512_inserti32x8(A, B, imm) __extension__ ({ \
1247 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1248 (__v8si)(__m256i)(B), (int)(imm), \
1249 (__v16si)_mm512_setzero_si512(), \
1250 (__mmask16)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001251
Craig Topper41ad25a2016-05-17 04:41:36 +00001252#define _mm512_mask_inserti32x8(W, U, A, B, imm) __extension__ ({ \
1253 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1254 (__v8si)(__m256i)(B), (int)(imm), \
1255 (__v16si)(__m512i)(W), \
1256 (__mmask16)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001257
Craig Topper41ad25a2016-05-17 04:41:36 +00001258#define _mm512_maskz_inserti32x8(U, A, B, imm) __extension__ ({ \
1259 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1260 (__v8si)(__m256i)(B), (int)(imm), \
1261 (__v16si)_mm512_setzero_si512(), \
1262 (__mmask16)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001263
Craig Topper41ad25a2016-05-17 04:41:36 +00001264#define _mm512_inserti64x2(A, B, imm) __extension__ ({ \
1265 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1266 (__v2di)(__m128i)(B), \
1267 (int)(imm), \
1268 (__v8di)_mm512_setzero_si512(), \
1269 (__mmask8)-1); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001270
Craig Topper41ad25a2016-05-17 04:41:36 +00001271#define _mm512_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
1272 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1273 (__v2di)(__m128i)(B), \
1274 (int)(imm), \
1275 (__v8di)(__m512i)(W), \
1276 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001277
Craig Topper41ad25a2016-05-17 04:41:36 +00001278#define _mm512_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
1279 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1280 (__v2di)(__m128i)(B), \
1281 (int)(imm), \
1282 (__v8di)_mm512_setzero_si512(), \
1283 (__mmask8)(U)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001284
Craig Topper41ad25a2016-05-17 04:41:36 +00001285#define _mm512_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1286 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00001287 (int)(imm), (__mmask16)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001288
Craig Topper41ad25a2016-05-17 04:41:36 +00001289#define _mm512_fpclass_ps_mask(A, imm) __extension__ ({ \
1290 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1291 (int)(imm), (__mmask16)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001292
Craig Topper41ad25a2016-05-17 04:41:36 +00001293#define _mm512_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1294 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1295 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001296
Craig Topper41ad25a2016-05-17 04:41:36 +00001297#define _mm512_fpclass_pd_mask(A, imm) __extension__ ({ \
1298 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1299 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001300
Craig Topper41ad25a2016-05-17 04:41:36 +00001301#define _mm_fpclass_sd_mask(A, imm) __extension__ ({ \
1302 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1303 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001304
Craig Topper41ad25a2016-05-17 04:41:36 +00001305#define _mm_mask_fpclass_sd_mask(U, A, imm) __extension__ ({ \
1306 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1307 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001308
Craig Topper41ad25a2016-05-17 04:41:36 +00001309#define _mm_fpclass_ss_mask(A, imm) __extension__ ({ \
1310 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1311 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001312
Craig Topper41ad25a2016-05-17 04:41:36 +00001313#define _mm_mask_fpclass_ss_mask(U, A, imm) __extension__ ({ \
1314 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1315 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001316
Michael Kupersteine45af542015-06-30 13:36:19 +00001317#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00001318
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001319#endif