blob: 563e94b94783ab56e71063ce2f5aa35f6d27d115 [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. */
Craig Toppere0b5d4c2018-08-27 06:20:19 +000032#define __DEFAULT_FN_ATTRS512 __attribute__((__always_inline__, __nodebug__, __target__("avx512dq"), __min_vector_width__(512)))
Craig Topperc330ca82018-08-27 06:20:22 +000033#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
34
35static __inline __mmask8 __DEFAULT_FN_ATTRS
36_knot_mask8(__mmask8 __M)
37{
38 return __builtin_ia32_knotqi(__M);
39}
40
41static __inline__ __mmask8 __DEFAULT_FN_ATTRS
42_kand_mask8(__mmask8 __A, __mmask8 __B)
43{
44 return (__mmask8)__builtin_ia32_kandqi((__mmask8)__A, (__mmask8)__B);
45}
46
47static __inline__ __mmask8 __DEFAULT_FN_ATTRS
48_kandn_mask8(__mmask8 __A, __mmask8 __B)
49{
50 return (__mmask8)__builtin_ia32_kandnqi((__mmask8)__A, (__mmask8)__B);
51}
52
53static __inline__ __mmask8 __DEFAULT_FN_ATTRS
54_kor_mask8(__mmask8 __A, __mmask8 __B)
55{
56 return (__mmask8)__builtin_ia32_korqi((__mmask8)__A, (__mmask8)__B);
57}
58
59static __inline__ __mmask8 __DEFAULT_FN_ATTRS
60_kxnor_mask8(__mmask8 __A, __mmask8 __B)
61{
62 return (__mmask8)__builtin_ia32_kxnorqi((__mmask8)__A, (__mmask8)__B);
63}
64
65static __inline__ __mmask8 __DEFAULT_FN_ATTRS
66_kxor_mask8(__mmask8 __A, __mmask8 __B)
67{
68 return (__mmask8)__builtin_ia32_kxorqi((__mmask8)__A, (__mmask8)__B);
69}
Eric Christopher4d1851682015-06-17 07:09:20 +000070
Craig Toppercb5fd56c2018-08-28 06:28:25 +000071static __inline__ unsigned char __DEFAULT_FN_ATTRS
72_kortestc_mask8_u8(__mmask8 __A, __mmask8 __B)
73{
74 return (unsigned char)__builtin_ia32_kortestcqi(__A, __B);
75}
76
77static __inline__ unsigned char __DEFAULT_FN_ATTRS
78_kortestz_mask8_u8(__mmask8 __A, __mmask8 __B)
79{
80 return (unsigned char)__builtin_ia32_kortestzqi(__A, __B);
81}
82
83static __inline__ unsigned char __DEFAULT_FN_ATTRS
84_kortest_mask8_u8(__mmask8 __A, __mmask8 __B, unsigned char *__C) {
85 *__C = (unsigned char)__builtin_ia32_kortestcqi(__A, __B);
86 return (unsigned char)__builtin_ia32_kortestzqi(__A, __B);
87}
88
Craig Toppere0b5d4c2018-08-27 06:20:19 +000089static __inline__ __m512i __DEFAULT_FN_ATTRS512
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000090_mm512_mullo_epi64 (__m512i __A, __m512i __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000091 return (__m512i) ((__v8du) __A * (__v8du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000092}
93
Craig Toppere0b5d4c2018-08-27 06:20:19 +000094static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topperf43e4a12016-09-03 19:19:49 +000095_mm512_mask_mullo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
96 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
97 (__v8di)_mm512_mullo_epi64(__A, __B),
98 (__v8di)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000099}
100
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000101static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topperf43e4a12016-09-03 19:19:49 +0000102_mm512_maskz_mullo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
103 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
104 (__v8di)_mm512_mullo_epi64(__A, __B),
105 (__v8di)_mm512_setzero_si512());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000106}
107
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000108static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000109_mm512_xor_pd(__m512d __A, __m512d __B) {
110 return (__m512d)((__v8du)__A ^ (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000111}
112
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000113static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000114_mm512_mask_xor_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
115 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
116 (__v8df)_mm512_xor_pd(__A, __B),
117 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000118}
119
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000120static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000121_mm512_maskz_xor_pd(__mmask8 __U, __m512d __A, __m512d __B) {
122 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
123 (__v8df)_mm512_xor_pd(__A, __B),
124 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000125}
126
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000127static __inline__ __m512 __DEFAULT_FN_ATTRS512
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000128_mm512_xor_ps (__m512 __A, __m512 __B) {
Craig Toppera815f482016-08-31 05:38:58 +0000129 return (__m512)((__v16su)__A ^ (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000130}
131
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000132static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000133_mm512_mask_xor_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
134 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
135 (__v16sf)_mm512_xor_ps(__A, __B),
136 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000137}
138
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000139static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000140_mm512_maskz_xor_ps(__mmask16 __U, __m512 __A, __m512 __B) {
141 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
142 (__v16sf)_mm512_xor_ps(__A, __B),
143 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000144}
145
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000146static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000147_mm512_or_pd(__m512d __A, __m512d __B) {
148 return (__m512d)((__v8du)__A | (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000149}
150
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000151static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000152_mm512_mask_or_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
153 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
154 (__v8df)_mm512_or_pd(__A, __B),
155 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000156}
157
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000158static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000159_mm512_maskz_or_pd(__mmask8 __U, __m512d __A, __m512d __B) {
160 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
161 (__v8df)_mm512_or_pd(__A, __B),
162 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000163}
164
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000165static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000166_mm512_or_ps(__m512 __A, __m512 __B) {
167 return (__m512)((__v16su)__A | (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000168}
169
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000170static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000171_mm512_mask_or_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
172 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
173 (__v16sf)_mm512_or_ps(__A, __B),
174 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000175}
176
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000177static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000178_mm512_maskz_or_ps(__mmask16 __U, __m512 __A, __m512 __B) {
179 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
180 (__v16sf)_mm512_or_ps(__A, __B),
181 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000182}
183
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000184static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000185_mm512_and_pd(__m512d __A, __m512d __B) {
186 return (__m512d)((__v8du)__A & (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000187}
188
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000189static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000190_mm512_mask_and_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
191 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
192 (__v8df)_mm512_and_pd(__A, __B),
193 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000194}
195
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000196static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000197_mm512_maskz_and_pd(__mmask8 __U, __m512d __A, __m512d __B) {
198 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
199 (__v8df)_mm512_and_pd(__A, __B),
200 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000201}
202
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000203static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000204_mm512_and_ps(__m512 __A, __m512 __B) {
205 return (__m512)((__v16su)__A & (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000206}
207
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000208static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000209_mm512_mask_and_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
210 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
211 (__v16sf)_mm512_and_ps(__A, __B),
212 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000213}
214
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000215static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000216_mm512_maskz_and_ps(__mmask16 __U, __m512 __A, __m512 __B) {
217 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
218 (__v16sf)_mm512_and_ps(__A, __B),
219 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000220}
221
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000222static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000223_mm512_andnot_pd(__m512d __A, __m512d __B) {
Lama Saba5d01f222016-08-10 10:34:45 +0000224 return (__m512d)(~(__v8du)__A & (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000225}
226
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000227static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000228_mm512_mask_andnot_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
229 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
230 (__v8df)_mm512_andnot_pd(__A, __B),
231 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000232}
233
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000234static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000235_mm512_maskz_andnot_pd(__mmask8 __U, __m512d __A, __m512d __B) {
236 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
237 (__v8df)_mm512_andnot_pd(__A, __B),
238 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000239}
240
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000241static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000242_mm512_andnot_ps(__m512 __A, __m512 __B) {
Lama Saba5d01f222016-08-10 10:34:45 +0000243 return (__m512)(~(__v16su)__A & (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000244}
245
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000246static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000247_mm512_mask_andnot_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
248 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
249 (__v16sf)_mm512_andnot_ps(__A, __B),
250 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000251}
252
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000253static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Toppera815f482016-08-31 05:38:58 +0000254_mm512_maskz_andnot_ps(__mmask16 __U, __m512 __A, __m512 __B) {
255 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
256 (__v16sf)_mm512_andnot_ps(__A, __B),
257 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000258}
259
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000260static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000261_mm512_cvtpd_epi64 (__m512d __A) {
262 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
263 (__v8di) _mm512_setzero_si512(),
264 (__mmask8) -1,
265 _MM_FROUND_CUR_DIRECTION);
266}
267
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000268static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000269_mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
270 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
271 (__v8di) __W,
272 (__mmask8) __U,
273 _MM_FROUND_CUR_DIRECTION);
274}
275
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000276static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000277_mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A) {
278 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
279 (__v8di) _mm512_setzero_si512(),
280 (__mmask8) __U,
281 _MM_FROUND_CUR_DIRECTION);
282}
283
Craig Topperc6338672018-05-31 00:51:20 +0000284#define _mm512_cvt_roundpd_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000285 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
286 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000287 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000288
Craig Topperc6338672018-05-31 00:51:20 +0000289#define _mm512_mask_cvt_roundpd_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000290 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
291 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000292 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000293
Craig Topperc6338672018-05-31 00:51:20 +0000294#define _mm512_maskz_cvt_roundpd_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000295 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
296 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000297 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000298
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000299static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000300_mm512_cvtpd_epu64 (__m512d __A) {
301 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
302 (__v8di) _mm512_setzero_si512(),
303 (__mmask8) -1,
304 _MM_FROUND_CUR_DIRECTION);
305}
306
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000307static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000308_mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
309 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
310 (__v8di) __W,
311 (__mmask8) __U,
312 _MM_FROUND_CUR_DIRECTION);
313}
314
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000315static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000316_mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A) {
317 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
318 (__v8di) _mm512_setzero_si512(),
319 (__mmask8) __U,
320 _MM_FROUND_CUR_DIRECTION);
321}
322
Craig Topperc6338672018-05-31 00:51:20 +0000323#define _mm512_cvt_roundpd_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000324 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
325 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000326 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000327
Craig Topperc6338672018-05-31 00:51:20 +0000328#define _mm512_mask_cvt_roundpd_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000329 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
330 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000331 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000332
Craig Topperc6338672018-05-31 00:51:20 +0000333#define _mm512_maskz_cvt_roundpd_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000334 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
335 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000336 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000337
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000338static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000339_mm512_cvtps_epi64 (__m256 __A) {
340 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
341 (__v8di) _mm512_setzero_si512(),
342 (__mmask8) -1,
343 _MM_FROUND_CUR_DIRECTION);
344}
345
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000346static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000347_mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
348 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
349 (__v8di) __W,
350 (__mmask8) __U,
351 _MM_FROUND_CUR_DIRECTION);
352}
353
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000354static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000355_mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A) {
356 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
357 (__v8di) _mm512_setzero_si512(),
358 (__mmask8) __U,
359 _MM_FROUND_CUR_DIRECTION);
360}
361
Craig Topperc6338672018-05-31 00:51:20 +0000362#define _mm512_cvt_roundps_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000363 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
364 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000365 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000366
Craig Topperc6338672018-05-31 00:51:20 +0000367#define _mm512_mask_cvt_roundps_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000368 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
369 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000370 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000371
Craig Topperc6338672018-05-31 00:51:20 +0000372#define _mm512_maskz_cvt_roundps_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000373 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
374 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000375 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000376
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000377static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000378_mm512_cvtps_epu64 (__m256 __A) {
379 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
380 (__v8di) _mm512_setzero_si512(),
381 (__mmask8) -1,
382 _MM_FROUND_CUR_DIRECTION);
383}
384
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000385static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000386_mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
387 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
388 (__v8di) __W,
389 (__mmask8) __U,
390 _MM_FROUND_CUR_DIRECTION);
391}
392
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000393static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000394_mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A) {
395 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
396 (__v8di) _mm512_setzero_si512(),
397 (__mmask8) __U,
398 _MM_FROUND_CUR_DIRECTION);
399}
400
Craig Topperc6338672018-05-31 00:51:20 +0000401#define _mm512_cvt_roundps_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000402 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
403 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000404 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000405
Craig Topperc6338672018-05-31 00:51:20 +0000406#define _mm512_mask_cvt_roundps_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000407 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
408 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000409 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000410
Craig Topperc6338672018-05-31 00:51:20 +0000411#define _mm512_maskz_cvt_roundps_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000412 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
413 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000414 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000415
416
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000417static __inline__ __m512d __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000418_mm512_cvtepi64_pd (__m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000419 return (__m512d)__builtin_convertvector((__v8di)__A, __v8df);
Asaf Badouh27180512015-09-17 14:53:37 +0000420}
421
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000422static __inline__ __m512d __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000423_mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000424 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
425 (__v8df)_mm512_cvtepi64_pd(__A),
426 (__v8df)__W);
Asaf Badouh27180512015-09-17 14:53:37 +0000427}
428
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000429static __inline__ __m512d __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000430_mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000431 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
432 (__v8df)_mm512_cvtepi64_pd(__A),
433 (__v8df)_mm512_setzero_pd());
Asaf Badouh27180512015-09-17 14:53:37 +0000434}
435
Craig Topperc6338672018-05-31 00:51:20 +0000436#define _mm512_cvt_roundepi64_pd(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000437 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
438 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000439 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000440
Craig Topperc6338672018-05-31 00:51:20 +0000441#define _mm512_mask_cvt_roundepi64_pd(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000442 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
443 (__v8df)(__m512d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000444 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000445
Craig Topperc6338672018-05-31 00:51:20 +0000446#define _mm512_maskz_cvt_roundepi64_pd(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000447 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
448 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000449 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000450
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000451static __inline__ __m256 __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000452_mm512_cvtepi64_ps (__m512i __A) {
453 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
454 (__v8sf) _mm256_setzero_ps(),
455 (__mmask8) -1,
456 _MM_FROUND_CUR_DIRECTION);
457}
458
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000459static __inline__ __m256 __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000460_mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
461 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
462 (__v8sf) __W,
463 (__mmask8) __U,
464 _MM_FROUND_CUR_DIRECTION);
465}
466
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000467static __inline__ __m256 __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000468_mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
469 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
470 (__v8sf) _mm256_setzero_ps(),
471 (__mmask8) __U,
472 _MM_FROUND_CUR_DIRECTION);
473}
474
Craig Topperc6338672018-05-31 00:51:20 +0000475#define _mm512_cvt_roundepi64_ps(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000476 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
477 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000478 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000479
Craig Topperc6338672018-05-31 00:51:20 +0000480#define _mm512_mask_cvt_roundepi64_ps(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000481 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
482 (__v8sf)(__m256)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000483 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000484
Craig Topperc6338672018-05-31 00:51:20 +0000485#define _mm512_maskz_cvt_roundepi64_ps(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000486 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
487 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000488 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000489
490
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000491static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000492_mm512_cvttpd_epi64 (__m512d __A) {
493 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
494 (__v8di) _mm512_setzero_si512(),
495 (__mmask8) -1,
496 _MM_FROUND_CUR_DIRECTION);
497}
498
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000499static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000500_mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
501 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
502 (__v8di) __W,
503 (__mmask8) __U,
504 _MM_FROUND_CUR_DIRECTION);
505}
506
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000507static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000508_mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
509 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
510 (__v8di) _mm512_setzero_si512(),
511 (__mmask8) __U,
512 _MM_FROUND_CUR_DIRECTION);
513}
514
Craig Topperc6338672018-05-31 00:51:20 +0000515#define _mm512_cvtt_roundpd_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000516 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
517 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000518 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000519
Craig Topperc6338672018-05-31 00:51:20 +0000520#define _mm512_mask_cvtt_roundpd_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000521 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
522 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000523 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000524
Craig Topperc6338672018-05-31 00:51:20 +0000525#define _mm512_maskz_cvtt_roundpd_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000526 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
527 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000528 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000529
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000530static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000531_mm512_cvttpd_epu64 (__m512d __A) {
532 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
533 (__v8di) _mm512_setzero_si512(),
534 (__mmask8) -1,
535 _MM_FROUND_CUR_DIRECTION);
536}
537
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000538static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000539_mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
540 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
541 (__v8di) __W,
542 (__mmask8) __U,
543 _MM_FROUND_CUR_DIRECTION);
544}
545
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000546static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000547_mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
548 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
549 (__v8di) _mm512_setzero_si512(),
550 (__mmask8) __U,
551 _MM_FROUND_CUR_DIRECTION);
552}
553
Craig Topperc6338672018-05-31 00:51:20 +0000554#define _mm512_cvtt_roundpd_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000555 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
556 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000557 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000558
Craig Topperc6338672018-05-31 00:51:20 +0000559#define _mm512_mask_cvtt_roundpd_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000560 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
561 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000562 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000563
Craig Topperc6338672018-05-31 00:51:20 +0000564#define _mm512_maskz_cvtt_roundpd_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000565 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
566 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000567 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000568
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000569static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000570_mm512_cvttps_epi64 (__m256 __A) {
571 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
572 (__v8di) _mm512_setzero_si512(),
573 (__mmask8) -1,
574 _MM_FROUND_CUR_DIRECTION);
575}
576
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000577static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000578_mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
579 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
580 (__v8di) __W,
581 (__mmask8) __U,
582 _MM_FROUND_CUR_DIRECTION);
583}
584
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000585static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000586_mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
587 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
588 (__v8di) _mm512_setzero_si512(),
589 (__mmask8) __U,
590 _MM_FROUND_CUR_DIRECTION);
591}
592
Craig Topperc6338672018-05-31 00:51:20 +0000593#define _mm512_cvtt_roundps_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000594 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
595 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000596 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000597
Craig Topperc6338672018-05-31 00:51:20 +0000598#define _mm512_mask_cvtt_roundps_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000599 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
600 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000601 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000602
Craig Topperc6338672018-05-31 00:51:20 +0000603#define _mm512_maskz_cvtt_roundps_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000604 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
605 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000606 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000607
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000608static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000609_mm512_cvttps_epu64 (__m256 __A) {
610 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
611 (__v8di) _mm512_setzero_si512(),
612 (__mmask8) -1,
613 _MM_FROUND_CUR_DIRECTION);
614}
615
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000616static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000617_mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
618 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
619 (__v8di) __W,
620 (__mmask8) __U,
621 _MM_FROUND_CUR_DIRECTION);
622}
623
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000624static __inline__ __m512i __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000625_mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
626 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
627 (__v8di) _mm512_setzero_si512(),
628 (__mmask8) __U,
629 _MM_FROUND_CUR_DIRECTION);
630}
631
Craig Topperc6338672018-05-31 00:51:20 +0000632#define _mm512_cvtt_roundps_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000633 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
634 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000635 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000636
Craig Topperc6338672018-05-31 00:51:20 +0000637#define _mm512_mask_cvtt_roundps_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000638 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
639 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000640 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000641
Craig Topperc6338672018-05-31 00:51:20 +0000642#define _mm512_maskz_cvtt_roundps_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000643 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
644 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000645 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000646
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000647static __inline__ __m512d __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000648_mm512_cvtepu64_pd (__m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000649 return (__m512d)__builtin_convertvector((__v8du)__A, __v8df);
Asaf Badouh27180512015-09-17 14:53:37 +0000650}
651
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000652static __inline__ __m512d __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000653_mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000654 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
655 (__v8df)_mm512_cvtepu64_pd(__A),
656 (__v8df)__W);
Asaf Badouh27180512015-09-17 14:53:37 +0000657}
658
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000659static __inline__ __m512d __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000660_mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000661 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
662 (__v8df)_mm512_cvtepu64_pd(__A),
663 (__v8df)_mm512_setzero_pd());
Asaf Badouh27180512015-09-17 14:53:37 +0000664}
665
Craig Topperc6338672018-05-31 00:51:20 +0000666#define _mm512_cvt_roundepu64_pd(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000667 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
668 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000669 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000670
Craig Topperc6338672018-05-31 00:51:20 +0000671#define _mm512_mask_cvt_roundepu64_pd(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000672 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
673 (__v8df)(__m512d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000674 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000675
676
Craig Topperc6338672018-05-31 00:51:20 +0000677#define _mm512_maskz_cvt_roundepu64_pd(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000678 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
679 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000680 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000681
682
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000683static __inline__ __m256 __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000684_mm512_cvtepu64_ps (__m512i __A) {
685 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
686 (__v8sf) _mm256_setzero_ps(),
687 (__mmask8) -1,
688 _MM_FROUND_CUR_DIRECTION);
689}
690
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000691static __inline__ __m256 __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000692_mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
693 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
694 (__v8sf) __W,
695 (__mmask8) __U,
696 _MM_FROUND_CUR_DIRECTION);
697}
698
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000699static __inline__ __m256 __DEFAULT_FN_ATTRS512
Asaf Badouh27180512015-09-17 14:53:37 +0000700_mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
701 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
702 (__v8sf) _mm256_setzero_ps(),
703 (__mmask8) __U,
704 _MM_FROUND_CUR_DIRECTION);
705}
706
Craig Topperc6338672018-05-31 00:51:20 +0000707#define _mm512_cvt_roundepu64_ps(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000708 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
709 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000710 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000711
Craig Topperc6338672018-05-31 00:51:20 +0000712#define _mm512_mask_cvt_roundepu64_ps(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000713 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
714 (__v8sf)(__m256)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000715 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000716
Craig Topperc6338672018-05-31 00:51:20 +0000717#define _mm512_maskz_cvt_roundepu64_ps(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000718 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
719 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000720 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000721
Craig Topperc6338672018-05-31 00:51:20 +0000722#define _mm512_range_pd(A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000723 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
724 (__v8df)(__m512d)(B), (int)(C), \
725 (__v8df)_mm512_setzero_pd(), \
726 (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000727 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000728
Craig Topperc6338672018-05-31 00:51:20 +0000729#define _mm512_mask_range_pd(W, U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000730 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
731 (__v8df)(__m512d)(B), (int)(C), \
732 (__v8df)(__m512d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000733 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000734
Craig Topperc6338672018-05-31 00:51:20 +0000735#define _mm512_maskz_range_pd(U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000736 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
737 (__v8df)(__m512d)(B), (int)(C), \
738 (__v8df)_mm512_setzero_pd(), \
739 (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000740 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000741
Craig Topperc6338672018-05-31 00:51:20 +0000742#define _mm512_range_round_pd(A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000743 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
744 (__v8df)(__m512d)(B), (int)(C), \
745 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000746 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000747
Craig Topperc6338672018-05-31 00:51:20 +0000748#define _mm512_mask_range_round_pd(W, U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000749 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
750 (__v8df)(__m512d)(B), (int)(C), \
751 (__v8df)(__m512d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000752 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000753
Craig Topperc6338672018-05-31 00:51:20 +0000754#define _mm512_maskz_range_round_pd(U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000755 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
756 (__v8df)(__m512d)(B), (int)(C), \
757 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000758 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000759
Craig Topperc6338672018-05-31 00:51:20 +0000760#define _mm512_range_ps(A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000761 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
762 (__v16sf)(__m512)(B), (int)(C), \
763 (__v16sf)_mm512_setzero_ps(), \
764 (__mmask16)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000765 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000766
Craig Topperc6338672018-05-31 00:51:20 +0000767#define _mm512_mask_range_ps(W, U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000768 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
769 (__v16sf)(__m512)(B), (int)(C), \
770 (__v16sf)(__m512)(W), (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000771 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000772
Craig Topperc6338672018-05-31 00:51:20 +0000773#define _mm512_maskz_range_ps(U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000774 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
775 (__v16sf)(__m512)(B), (int)(C), \
776 (__v16sf)_mm512_setzero_ps(), \
777 (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000778 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000779
Craig Topperc6338672018-05-31 00:51:20 +0000780#define _mm512_range_round_ps(A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000781 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
782 (__v16sf)(__m512)(B), (int)(C), \
783 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000784 (__mmask16)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000785
Craig Topperc6338672018-05-31 00:51:20 +0000786#define _mm512_mask_range_round_ps(W, U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000787 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
788 (__v16sf)(__m512)(B), (int)(C), \
789 (__v16sf)(__m512)(W), (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000790 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000791
Craig Topperc6338672018-05-31 00:51:20 +0000792#define _mm512_maskz_range_round_ps(U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000793 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
794 (__v16sf)(__m512)(B), (int)(C), \
795 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000796 (__mmask16)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000797
Craig Topperc6338672018-05-31 00:51:20 +0000798#define _mm_range_round_ss(A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000799 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
800 (__v4sf)(__m128)(B), \
801 (__v4sf)_mm_setzero_ps(), \
802 (__mmask8) -1, (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000803 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000804
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000805#define _mm_range_ss(A ,B , C) _mm_range_round_ss(A, B, C ,_MM_FROUND_CUR_DIRECTION)
806
Craig Topperc6338672018-05-31 00:51:20 +0000807#define _mm_mask_range_round_ss(W, U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000808 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
809 (__v4sf)(__m128)(B), \
810 (__v4sf)(__m128)(W),\
811 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000812 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000813
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000814#define _mm_mask_range_ss(W , U, A, B, C) _mm_mask_range_round_ss(W, U, A, B, C , _MM_FROUND_CUR_DIRECTION)
815
Craig Topperc6338672018-05-31 00:51:20 +0000816#define _mm_maskz_range_round_ss(U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000817 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
818 (__v4sf)(__m128)(B), \
819 (__v4sf)_mm_setzero_ps(), \
820 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000821 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000822
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000823#define _mm_maskz_range_ss(U, A ,B , C) _mm_maskz_range_round_ss(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
824
Craig Topperc6338672018-05-31 00:51:20 +0000825#define _mm_range_round_sd(A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000826 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
827 (__v2df)(__m128d)(B), \
828 (__v2df)_mm_setzero_pd(), \
829 (__mmask8) -1, (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000830 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000831
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000832#define _mm_range_sd(A ,B , C) _mm_range_round_sd(A, B, C ,_MM_FROUND_CUR_DIRECTION)
833
Craig Topperc6338672018-05-31 00:51:20 +0000834#define _mm_mask_range_round_sd(W, U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000835 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
836 (__v2df)(__m128d)(B), \
837 (__v2df)(__m128d)(W),\
838 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000839 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000840
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000841#define _mm_mask_range_sd(W, U, A, B, C) _mm_mask_range_round_sd(W, U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
842
Craig Topperc6338672018-05-31 00:51:20 +0000843#define _mm_maskz_range_round_sd(U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000844 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
845 (__v2df)(__m128d)(B), \
846 (__v2df)_mm_setzero_pd(), \
847 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000848 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000849
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000850#define _mm_maskz_range_sd(U, A, B, C) _mm_maskz_range_round_sd(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
851
Craig Topperc6338672018-05-31 00:51:20 +0000852#define _mm512_reduce_pd(A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000853 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
854 (__v8df)_mm512_setzero_pd(), \
855 (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000856 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000857
Craig Topperc6338672018-05-31 00:51:20 +0000858#define _mm512_mask_reduce_pd(W, U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000859 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
860 (__v8df)(__m512d)(W), \
861 (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000862 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000863
Craig Topperc6338672018-05-31 00:51:20 +0000864#define _mm512_maskz_reduce_pd(U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000865 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
866 (__v8df)_mm512_setzero_pd(), \
867 (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000868 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000869
Craig Topperc6338672018-05-31 00:51:20 +0000870#define _mm512_reduce_ps(A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000871 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
872 (__v16sf)_mm512_setzero_ps(), \
873 (__mmask16)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000874 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000875
Craig Topperc6338672018-05-31 00:51:20 +0000876#define _mm512_mask_reduce_ps(W, U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000877 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
878 (__v16sf)(__m512)(W), \
879 (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000880 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000881
Craig Topperc6338672018-05-31 00:51:20 +0000882#define _mm512_maskz_reduce_ps(U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000883 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
884 (__v16sf)_mm512_setzero_ps(), \
885 (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000886 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000887
Craig Topperc6338672018-05-31 00:51:20 +0000888#define _mm512_reduce_round_pd(A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000889 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
890 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000891 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000892
Craig Topperc6338672018-05-31 00:51:20 +0000893#define _mm512_mask_reduce_round_pd(W, U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000894 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
895 (__v8df)(__m512d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000896 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000897
Craig Topperc6338672018-05-31 00:51:20 +0000898#define _mm512_maskz_reduce_round_pd(U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000899 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
900 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000901 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000902
Craig Topperc6338672018-05-31 00:51:20 +0000903#define _mm512_reduce_round_ps(A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000904 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
905 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000906 (__mmask16)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000907
Craig Topperc6338672018-05-31 00:51:20 +0000908#define _mm512_mask_reduce_round_ps(W, U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000909 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
910 (__v16sf)(__m512)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000911 (__mmask16)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000912
Craig Topperc6338672018-05-31 00:51:20 +0000913#define _mm512_maskz_reduce_round_ps(U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000914 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
915 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000916 (__mmask16)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000917
Craig Topperc6338672018-05-31 00:51:20 +0000918#define _mm_reduce_ss(A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000919 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
920 (__v4sf)(__m128)(B), \
921 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000922 (int)(C), _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000923
Craig Topperc6338672018-05-31 00:51:20 +0000924#define _mm_mask_reduce_ss(W, U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000925 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
926 (__v4sf)(__m128)(B), \
927 (__v4sf)(__m128)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000928 (int)(C), _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000929
Craig Topperc6338672018-05-31 00:51:20 +0000930#define _mm_maskz_reduce_ss(U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000931 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
932 (__v4sf)(__m128)(B), \
933 (__v4sf)_mm_setzero_ps(), \
934 (__mmask8)(U), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000935 _MM_FROUND_CUR_DIRECTION)
Craig Topperf3efec62016-06-08 06:08:07 +0000936
Craig Topperc6338672018-05-31 00:51:20 +0000937#define _mm_reduce_round_ss(A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000938 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
939 (__v4sf)(__m128)(B), \
940 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000941 (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000942
Craig Topperc6338672018-05-31 00:51:20 +0000943#define _mm_mask_reduce_round_ss(W, U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000944 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
945 (__v4sf)(__m128)(B), \
946 (__v4sf)(__m128)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000947 (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000948
Craig Topperc6338672018-05-31 00:51:20 +0000949#define _mm_maskz_reduce_round_ss(U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000950 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
951 (__v4sf)(__m128)(B), \
952 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000953 (__mmask8)(U), (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000954
Craig Topperc6338672018-05-31 00:51:20 +0000955#define _mm_reduce_sd(A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000956 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
957 (__v2df)(__m128d)(B), \
958 (__v2df)_mm_setzero_pd(), \
959 (__mmask8)-1, (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000960 _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000961
Craig Topperc6338672018-05-31 00:51:20 +0000962#define _mm_mask_reduce_sd(W, U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000963 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
964 (__v2df)(__m128d)(B), \
965 (__v2df)(__m128d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000966 (int)(C), _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000967
Craig Topperc6338672018-05-31 00:51:20 +0000968#define _mm_maskz_reduce_sd(U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000969 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
970 (__v2df)(__m128d)(B), \
971 (__v2df)_mm_setzero_pd(), \
972 (__mmask8)(U), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000973 _MM_FROUND_CUR_DIRECTION)
Craig Topperf3efec62016-06-08 06:08:07 +0000974
Craig Topperc6338672018-05-31 00:51:20 +0000975#define _mm_reduce_round_sd(A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000976 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
977 (__v2df)(__m128d)(B), \
978 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000979 (__mmask8)-1, (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000980
Craig Topperc6338672018-05-31 00:51:20 +0000981#define _mm_mask_reduce_round_sd(W, U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000982 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
983 (__v2df)(__m128d)(B), \
984 (__v2df)(__m128d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000985 (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000986
Craig Topperc6338672018-05-31 00:51:20 +0000987#define _mm_maskz_reduce_round_sd(U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000988 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
989 (__v2df)(__m128d)(B), \
990 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000991 (__mmask8)(U), (int)(C), (int)(R))
992
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000993static __inline__ __mmask16 __DEFAULT_FN_ATTRS512
Michael Zuckerman074edd72016-04-13 10:49:37 +0000994_mm512_movepi32_mask (__m512i __A)
995{
996 return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
997}
998
Craig Toppere0b5d4c2018-08-27 06:20:19 +0000999static __inline__ __m512i __DEFAULT_FN_ATTRS512
Michael Zuckerman074edd72016-04-13 10:49:37 +00001000_mm512_movm_epi32 (__mmask16 __A)
1001{
1002 return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
1003}
1004
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001005static __inline__ __m512i __DEFAULT_FN_ATTRS512
Michael Zuckerman074edd72016-04-13 10:49:37 +00001006_mm512_movm_epi64 (__mmask8 __A)
1007{
1008 return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
1009}
1010
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001011static __inline__ __mmask8 __DEFAULT_FN_ATTRS512
Michael Zuckerman074edd72016-04-13 10:49:37 +00001012_mm512_movepi64_mask (__m512i __A)
1013{
1014 return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
1015}
1016
1017
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001018static __inline__ __m512 __DEFAULT_FN_ATTRS512
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001019_mm512_broadcast_f32x2 (__m128 __A)
1020{
Craig Topper95ed88a2018-06-04 19:28:09 +00001021 return (__m512)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +00001022 0, 1, 0, 1, 0, 1, 0, 1,
1023 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001024}
1025
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001026static __inline__ __m512 __DEFAULT_FN_ATTRS512
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001027_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
1028{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001029 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
1030 (__v16sf)_mm512_broadcast_f32x2(__A),
1031 (__v16sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001032}
1033
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001034static __inline__ __m512 __DEFAULT_FN_ATTRS512
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001035_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
1036{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001037 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
1038 (__v16sf)_mm512_broadcast_f32x2(__A),
1039 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001040}
1041
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001042static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001043_mm512_broadcast_f32x8(__m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001044{
Craig Topper367c86d2017-01-18 02:17:10 +00001045 return (__m512)__builtin_shufflevector((__v8sf)__A, (__v8sf)__A,
1046 0, 1, 2, 3, 4, 5, 6, 7,
1047 0, 1, 2, 3, 4, 5, 6, 7);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001048}
1049
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001050static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001051_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, __m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001052{
Craig Topper00294702018-06-30 06:05:17 +00001053 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
Craig Topper367c86d2017-01-18 02:17:10 +00001054 (__v16sf)_mm512_broadcast_f32x8(__A),
1055 (__v16sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001056}
1057
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001058static __inline__ __m512 __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001059_mm512_maskz_broadcast_f32x8(__mmask16 __M, __m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001060{
Craig Topper00294702018-06-30 06:05:17 +00001061 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
Craig Topper367c86d2017-01-18 02:17:10 +00001062 (__v16sf)_mm512_broadcast_f32x8(__A),
1063 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001064}
1065
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001066static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001067_mm512_broadcast_f64x2(__m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001068{
Craig Topper367c86d2017-01-18 02:17:10 +00001069 return (__m512d)__builtin_shufflevector((__v2df)__A, (__v2df)__A,
1070 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001071}
1072
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001073static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001074_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001075{
Craig Topper367c86d2017-01-18 02:17:10 +00001076 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1077 (__v8df)_mm512_broadcast_f64x2(__A),
1078 (__v8df)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001079}
1080
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001081static __inline__ __m512d __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001082_mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001083{
Craig Topper367c86d2017-01-18 02:17:10 +00001084 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1085 (__v8df)_mm512_broadcast_f64x2(__A),
1086 (__v8df)_mm512_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001087}
1088
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001089static __inline__ __m512i __DEFAULT_FN_ATTRS512
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001090_mm512_broadcast_i32x2 (__m128i __A)
1091{
Craig Topper95ed88a2018-06-04 19:28:09 +00001092 return (__m512i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +00001093 0, 1, 0, 1, 0, 1, 0, 1,
1094 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001095}
1096
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001097static __inline__ __m512i __DEFAULT_FN_ATTRS512
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001098_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1099{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001100 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1101 (__v16si)_mm512_broadcast_i32x2(__A),
1102 (__v16si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001103}
1104
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001105static __inline__ __m512i __DEFAULT_FN_ATTRS512
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001106_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1107{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001108 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1109 (__v16si)_mm512_broadcast_i32x2(__A),
1110 (__v16si)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001111}
1112
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001113static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001114_mm512_broadcast_i32x8(__m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001115{
Craig Topper367c86d2017-01-18 02:17:10 +00001116 return (__m512i)__builtin_shufflevector((__v8si)__A, (__v8si)__A,
1117 0, 1, 2, 3, 4, 5, 6, 7,
1118 0, 1, 2, 3, 4, 5, 6, 7);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001119}
1120
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001121static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001122_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001123{
Craig Topper00294702018-06-30 06:05:17 +00001124 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
Craig Topper367c86d2017-01-18 02:17:10 +00001125 (__v16si)_mm512_broadcast_i32x8(__A),
1126 (__v16si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001127}
1128
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001129static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001130_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001131{
Craig Topper00294702018-06-30 06:05:17 +00001132 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
Craig Topper367c86d2017-01-18 02:17:10 +00001133 (__v16si)_mm512_broadcast_i32x8(__A),
1134 (__v16si)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001135}
1136
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001137static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001138_mm512_broadcast_i64x2(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001139{
Craig Topper367c86d2017-01-18 02:17:10 +00001140 return (__m512i)__builtin_shufflevector((__v2di)__A, (__v2di)__A,
1141 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001142}
1143
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001144static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001145_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001146{
Craig Topper367c86d2017-01-18 02:17:10 +00001147 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1148 (__v8di)_mm512_broadcast_i64x2(__A),
1149 (__v8di)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001150}
1151
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001152static __inline__ __m512i __DEFAULT_FN_ATTRS512
Craig Topper367c86d2017-01-18 02:17:10 +00001153_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001154{
Craig Topper367c86d2017-01-18 02:17:10 +00001155 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1156 (__v8di)_mm512_broadcast_i64x2(__A),
1157 (__v8di)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001158}
1159
Craig Topperc6338672018-05-31 00:51:20 +00001160#define _mm512_extractf32x8_ps(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001161 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1162 (__v8sf)_mm256_undefined_ps(), \
Eric Christopher83225b42018-07-17 20:22:17 +00001163 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001164
Craig Topperc6338672018-05-31 00:51:20 +00001165#define _mm512_mask_extractf32x8_ps(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001166 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1167 (__v8sf)(__m256)(W), \
1168 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001169
Craig Topperc6338672018-05-31 00:51:20 +00001170#define _mm512_maskz_extractf32x8_ps(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001171 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1172 (__v8sf)_mm256_setzero_ps(), \
1173 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001174
Craig Topperc6338672018-05-31 00:51:20 +00001175#define _mm512_extractf64x2_pd(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001176 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1177 (int)(imm), \
1178 (__v2df)_mm_undefined_pd(), \
1179 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001180
Craig Topperc6338672018-05-31 00:51:20 +00001181#define _mm512_mask_extractf64x2_pd(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001182 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1183 (int)(imm), \
1184 (__v2df)(__m128d)(W), \
1185 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001186
Craig Topperc6338672018-05-31 00:51:20 +00001187#define _mm512_maskz_extractf64x2_pd(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001188 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1189 (int)(imm), \
1190 (__v2df)_mm_setzero_pd(), \
1191 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001192
Craig Topperc6338672018-05-31 00:51:20 +00001193#define _mm512_extracti32x8_epi32(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001194 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1195 (__v8si)_mm256_undefined_si256(), \
1196 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001197
Craig Topperc6338672018-05-31 00:51:20 +00001198#define _mm512_mask_extracti32x8_epi32(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001199 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1200 (__v8si)(__m256i)(W), \
1201 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001202
Craig Topperc6338672018-05-31 00:51:20 +00001203#define _mm512_maskz_extracti32x8_epi32(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001204 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1205 (__v8si)_mm256_setzero_si256(), \
1206 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001207
Craig Topperc6338672018-05-31 00:51:20 +00001208#define _mm512_extracti64x2_epi64(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001209 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1210 (int)(imm), \
1211 (__v2di)_mm_undefined_si128(), \
1212 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001213
Craig Topperc6338672018-05-31 00:51:20 +00001214#define _mm512_mask_extracti64x2_epi64(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001215 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1216 (int)(imm), \
1217 (__v2di)(__m128i)(W), \
1218 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001219
Craig Topperc6338672018-05-31 00:51:20 +00001220#define _mm512_maskz_extracti64x2_epi64(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001221 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1222 (int)(imm), \
1223 (__v2di)_mm_setzero_si128(), \
1224 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001225
Craig Topperc6338672018-05-31 00:51:20 +00001226#define _mm512_insertf32x8(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001227 (__m512)__builtin_ia32_insertf32x8((__v16sf)(__m512)(A), \
1228 (__v8sf)(__m256)(B), (int)(imm))
Craig Topperdca1f232016-05-15 21:26:20 +00001229
Craig Topperc6338672018-05-31 00:51:20 +00001230#define _mm512_mask_insertf32x8(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001231 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1232 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001233 (__v16sf)(__m512)(W))
Craig Topperdca1f232016-05-15 21:26:20 +00001234
Craig Topperc6338672018-05-31 00:51:20 +00001235#define _mm512_maskz_insertf32x8(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001236 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1237 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001238 (__v16sf)_mm512_setzero_ps())
Craig Topperdca1f232016-05-15 21:26:20 +00001239
Craig Topperc6338672018-05-31 00:51:20 +00001240#define _mm512_insertf64x2(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001241 (__m512d)__builtin_ia32_insertf64x2_512((__v8df)(__m512d)(A), \
1242 (__v2df)(__m128d)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001243
Craig Topperc6338672018-05-31 00:51:20 +00001244#define _mm512_mask_insertf64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001245 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1246 (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001247 (__v8df)(__m512d)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001248
Craig Topperc6338672018-05-31 00:51:20 +00001249#define _mm512_maskz_insertf64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001250 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1251 (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001252 (__v8df)_mm512_setzero_pd())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001253
Craig Topperc6338672018-05-31 00:51:20 +00001254#define _mm512_inserti32x8(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001255 (__m512i)__builtin_ia32_inserti32x8((__v16si)(__m512i)(A), \
1256 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001257
Craig Topperc6338672018-05-31 00:51:20 +00001258#define _mm512_mask_inserti32x8(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001259 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1260 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001261 (__v16si)(__m512i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001262
Craig Topperc6338672018-05-31 00:51:20 +00001263#define _mm512_maskz_inserti32x8(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001264 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1265 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001266 (__v16si)_mm512_setzero_si512())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001267
Craig Topperc6338672018-05-31 00:51:20 +00001268#define _mm512_inserti64x2(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001269 (__m512i)__builtin_ia32_inserti64x2_512((__v8di)(__m512i)(A), \
1270 (__v2di)(__m128i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001271
Craig Topperc6338672018-05-31 00:51:20 +00001272#define _mm512_mask_inserti64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001273 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1274 (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001275 (__v8di)(__m512i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001276
Craig Topperc6338672018-05-31 00:51:20 +00001277#define _mm512_maskz_inserti64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001278 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1279 (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001280 (__v8di)_mm512_setzero_si512())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001281
Craig Topperc6338672018-05-31 00:51:20 +00001282#define _mm512_mask_fpclass_ps_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001283 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperc6338672018-05-31 00:51:20 +00001284 (int)(imm), (__mmask16)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001285
Craig Topperc6338672018-05-31 00:51:20 +00001286#define _mm512_fpclass_ps_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001287 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperc6338672018-05-31 00:51:20 +00001288 (int)(imm), (__mmask16)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001289
Craig Topperc6338672018-05-31 00:51:20 +00001290#define _mm512_mask_fpclass_pd_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001291 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001292 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001293
Craig Topperc6338672018-05-31 00:51:20 +00001294#define _mm512_fpclass_pd_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001295 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001296 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001297
Craig Topperc6338672018-05-31 00:51:20 +00001298#define _mm_fpclass_sd_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001299 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001300 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001301
Craig Topperc6338672018-05-31 00:51:20 +00001302#define _mm_mask_fpclass_sd_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001303 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001304 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001305
Craig Topperc6338672018-05-31 00:51:20 +00001306#define _mm_fpclass_ss_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001307 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001308 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001309
Craig Topperc6338672018-05-31 00:51:20 +00001310#define _mm_mask_fpclass_ss_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001311 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001312 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001313
Craig Toppere0b5d4c2018-08-27 06:20:19 +00001314#undef __DEFAULT_FN_ATTRS512
Craig Topperc330ca82018-08-27 06:20:22 +00001315#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00001316
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001317#endif