blob: d7563af9499a2075c42d0f02d7d2e486b7ce40d8 [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
Craig Topperf43e4a12016-09-03 19:19:49 +000040_mm512_mask_mullo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) {
41 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
42 (__v8di)_mm512_mullo_epi64(__A, __B),
43 (__v8di)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000044}
45
Michael Kupersteine45af542015-06-30 13:36:19 +000046static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +000047_mm512_maskz_mullo_epi64(__mmask8 __U, __m512i __A, __m512i __B) {
48 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__U,
49 (__v8di)_mm512_mullo_epi64(__A, __B),
50 (__v8di)_mm512_setzero_si512());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000051}
52
Michael Kupersteine45af542015-06-30 13:36:19 +000053static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000054_mm512_xor_pd(__m512d __A, __m512d __B) {
55 return (__m512d)((__v8du)__A ^ (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000056}
57
Michael Kupersteine45af542015-06-30 13:36:19 +000058static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000059_mm512_mask_xor_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
60 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
61 (__v8df)_mm512_xor_pd(__A, __B),
62 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000063}
64
Michael Kupersteine45af542015-06-30 13:36:19 +000065static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000066_mm512_maskz_xor_pd(__mmask8 __U, __m512d __A, __m512d __B) {
67 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
68 (__v8df)_mm512_xor_pd(__A, __B),
69 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000070}
71
Michael Kupersteine45af542015-06-30 13:36:19 +000072static __inline__ __m512 __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000073_mm512_xor_ps (__m512 __A, __m512 __B) {
Craig Toppera815f482016-08-31 05:38:58 +000074 return (__m512)((__v16su)__A ^ (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000075}
76
Michael Kupersteine45af542015-06-30 13:36:19 +000077static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000078_mm512_mask_xor_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
79 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
80 (__v16sf)_mm512_xor_ps(__A, __B),
81 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000082}
83
Michael Kupersteine45af542015-06-30 13:36:19 +000084static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000085_mm512_maskz_xor_ps(__mmask16 __U, __m512 __A, __m512 __B) {
86 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
87 (__v16sf)_mm512_xor_ps(__A, __B),
88 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000089}
90
Michael Kupersteine45af542015-06-30 13:36:19 +000091static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000092_mm512_or_pd(__m512d __A, __m512d __B) {
93 return (__m512d)((__v8du)__A | (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000094}
95
Michael Kupersteine45af542015-06-30 13:36:19 +000096static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000097_mm512_mask_or_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
98 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
99 (__v8df)_mm512_or_pd(__A, __B),
100 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000101}
102
Michael Kupersteine45af542015-06-30 13:36:19 +0000103static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000104_mm512_maskz_or_pd(__mmask8 __U, __m512d __A, __m512d __B) {
105 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
106 (__v8df)_mm512_or_pd(__A, __B),
107 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000108}
109
Michael Kupersteine45af542015-06-30 13:36:19 +0000110static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000111_mm512_or_ps(__m512 __A, __m512 __B) {
112 return (__m512)((__v16su)__A | (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000113}
114
Michael Kupersteine45af542015-06-30 13:36:19 +0000115static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000116_mm512_mask_or_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
117 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
118 (__v16sf)_mm512_or_ps(__A, __B),
119 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000120}
121
Michael Kupersteine45af542015-06-30 13:36:19 +0000122static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000123_mm512_maskz_or_ps(__mmask16 __U, __m512 __A, __m512 __B) {
124 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
125 (__v16sf)_mm512_or_ps(__A, __B),
126 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000127}
128
Michael Kupersteine45af542015-06-30 13:36:19 +0000129static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000130_mm512_and_pd(__m512d __A, __m512d __B) {
131 return (__m512d)((__v8du)__A & (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000132}
133
Michael Kupersteine45af542015-06-30 13:36:19 +0000134static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000135_mm512_mask_and_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
136 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
137 (__v8df)_mm512_and_pd(__A, __B),
138 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000139}
140
Michael Kupersteine45af542015-06-30 13:36:19 +0000141static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000142_mm512_maskz_and_pd(__mmask8 __U, __m512d __A, __m512d __B) {
143 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
144 (__v8df)_mm512_and_pd(__A, __B),
145 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000146}
147
Michael Kupersteine45af542015-06-30 13:36:19 +0000148static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000149_mm512_and_ps(__m512 __A, __m512 __B) {
150 return (__m512)((__v16su)__A & (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000151}
152
Michael Kupersteine45af542015-06-30 13:36:19 +0000153static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000154_mm512_mask_and_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
155 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
156 (__v16sf)_mm512_and_ps(__A, __B),
157 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000158}
159
Michael Kupersteine45af542015-06-30 13:36:19 +0000160static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000161_mm512_maskz_and_ps(__mmask16 __U, __m512 __A, __m512 __B) {
162 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
163 (__v16sf)_mm512_and_ps(__A, __B),
164 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000165}
166
Michael Kupersteine45af542015-06-30 13:36:19 +0000167static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000168_mm512_andnot_pd(__m512d __A, __m512d __B) {
Lama Saba5d01f222016-08-10 10:34:45 +0000169 return (__m512d)(~(__v8du)__A & (__v8du)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000170}
171
Michael Kupersteine45af542015-06-30 13:36:19 +0000172static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000173_mm512_mask_andnot_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) {
174 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
175 (__v8df)_mm512_andnot_pd(__A, __B),
176 (__v8df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000177}
178
Michael Kupersteine45af542015-06-30 13:36:19 +0000179static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000180_mm512_maskz_andnot_pd(__mmask8 __U, __m512d __A, __m512d __B) {
181 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
182 (__v8df)_mm512_andnot_pd(__A, __B),
183 (__v8df)_mm512_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000184}
185
Michael Kupersteine45af542015-06-30 13:36:19 +0000186static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000187_mm512_andnot_ps(__m512 __A, __m512 __B) {
Lama Saba5d01f222016-08-10 10:34:45 +0000188 return (__m512)(~(__v16su)__A & (__v16su)__B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000189}
190
Michael Kupersteine45af542015-06-30 13:36:19 +0000191static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000192_mm512_mask_andnot_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) {
193 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
194 (__v16sf)_mm512_andnot_ps(__A, __B),
195 (__v16sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000196}
197
Michael Kupersteine45af542015-06-30 13:36:19 +0000198static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000199_mm512_maskz_andnot_ps(__mmask16 __U, __m512 __A, __m512 __B) {
200 return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
201 (__v16sf)_mm512_andnot_ps(__A, __B),
202 (__v16sf)_mm512_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000203}
204
Asaf Badouh27180512015-09-17 14:53:37 +0000205static __inline__ __m512i __DEFAULT_FN_ATTRS
206_mm512_cvtpd_epi64 (__m512d __A) {
207 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
208 (__v8di) _mm512_setzero_si512(),
209 (__mmask8) -1,
210 _MM_FROUND_CUR_DIRECTION);
211}
212
213static __inline__ __m512i __DEFAULT_FN_ATTRS
214_mm512_mask_cvtpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
215 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
216 (__v8di) __W,
217 (__mmask8) __U,
218 _MM_FROUND_CUR_DIRECTION);
219}
220
221static __inline__ __m512i __DEFAULT_FN_ATTRS
222_mm512_maskz_cvtpd_epi64 (__mmask8 __U, __m512d __A) {
223 return (__m512i) __builtin_ia32_cvtpd2qq512_mask ((__v8df) __A,
224 (__v8di) _mm512_setzero_si512(),
225 (__mmask8) __U,
226 _MM_FROUND_CUR_DIRECTION);
227}
228
Craig Topperc6338672018-05-31 00:51:20 +0000229#define _mm512_cvt_roundpd_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000230 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
231 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000232 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000233
Craig Topperc6338672018-05-31 00:51:20 +0000234#define _mm512_mask_cvt_roundpd_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000235 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
236 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000237 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000238
Craig Topperc6338672018-05-31 00:51:20 +0000239#define _mm512_maskz_cvt_roundpd_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000240 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
241 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000242 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000243
244static __inline__ __m512i __DEFAULT_FN_ATTRS
245_mm512_cvtpd_epu64 (__m512d __A) {
246 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
247 (__v8di) _mm512_setzero_si512(),
248 (__mmask8) -1,
249 _MM_FROUND_CUR_DIRECTION);
250}
251
252static __inline__ __m512i __DEFAULT_FN_ATTRS
253_mm512_mask_cvtpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
254 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
255 (__v8di) __W,
256 (__mmask8) __U,
257 _MM_FROUND_CUR_DIRECTION);
258}
259
260static __inline__ __m512i __DEFAULT_FN_ATTRS
261_mm512_maskz_cvtpd_epu64 (__mmask8 __U, __m512d __A) {
262 return (__m512i) __builtin_ia32_cvtpd2uqq512_mask ((__v8df) __A,
263 (__v8di) _mm512_setzero_si512(),
264 (__mmask8) __U,
265 _MM_FROUND_CUR_DIRECTION);
266}
267
Craig Topperc6338672018-05-31 00:51:20 +0000268#define _mm512_cvt_roundpd_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000269 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
270 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000271 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000272
Craig Topperc6338672018-05-31 00:51:20 +0000273#define _mm512_mask_cvt_roundpd_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000274 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
275 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000276 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000277
Craig Topperc6338672018-05-31 00:51:20 +0000278#define _mm512_maskz_cvt_roundpd_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000279 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
280 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000281 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000282
283static __inline__ __m512i __DEFAULT_FN_ATTRS
284_mm512_cvtps_epi64 (__m256 __A) {
285 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
286 (__v8di) _mm512_setzero_si512(),
287 (__mmask8) -1,
288 _MM_FROUND_CUR_DIRECTION);
289}
290
291static __inline__ __m512i __DEFAULT_FN_ATTRS
292_mm512_mask_cvtps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
293 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
294 (__v8di) __W,
295 (__mmask8) __U,
296 _MM_FROUND_CUR_DIRECTION);
297}
298
299static __inline__ __m512i __DEFAULT_FN_ATTRS
300_mm512_maskz_cvtps_epi64 (__mmask8 __U, __m256 __A) {
301 return (__m512i) __builtin_ia32_cvtps2qq512_mask ((__v8sf) __A,
302 (__v8di) _mm512_setzero_si512(),
303 (__mmask8) __U,
304 _MM_FROUND_CUR_DIRECTION);
305}
306
Craig Topperc6338672018-05-31 00:51:20 +0000307#define _mm512_cvt_roundps_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000308 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
309 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000310 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000311
Craig Topperc6338672018-05-31 00:51:20 +0000312#define _mm512_mask_cvt_roundps_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000313 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
314 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000315 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000316
Craig Topperc6338672018-05-31 00:51:20 +0000317#define _mm512_maskz_cvt_roundps_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000318 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
319 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000320 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000321
322static __inline__ __m512i __DEFAULT_FN_ATTRS
323_mm512_cvtps_epu64 (__m256 __A) {
324 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
325 (__v8di) _mm512_setzero_si512(),
326 (__mmask8) -1,
327 _MM_FROUND_CUR_DIRECTION);
328}
329
330static __inline__ __m512i __DEFAULT_FN_ATTRS
331_mm512_mask_cvtps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
332 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
333 (__v8di) __W,
334 (__mmask8) __U,
335 _MM_FROUND_CUR_DIRECTION);
336}
337
338static __inline__ __m512i __DEFAULT_FN_ATTRS
339_mm512_maskz_cvtps_epu64 (__mmask8 __U, __m256 __A) {
340 return (__m512i) __builtin_ia32_cvtps2uqq512_mask ((__v8sf) __A,
341 (__v8di) _mm512_setzero_si512(),
342 (__mmask8) __U,
343 _MM_FROUND_CUR_DIRECTION);
344}
345
Craig Topperc6338672018-05-31 00:51:20 +0000346#define _mm512_cvt_roundps_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000347 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
348 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000349 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000350
Craig Topperc6338672018-05-31 00:51:20 +0000351#define _mm512_mask_cvt_roundps_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000352 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
353 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000354 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000355
Craig Topperc6338672018-05-31 00:51:20 +0000356#define _mm512_maskz_cvt_roundps_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000357 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
358 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000359 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000360
361
362static __inline__ __m512d __DEFAULT_FN_ATTRS
363_mm512_cvtepi64_pd (__m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000364 return (__m512d)__builtin_convertvector((__v8di)__A, __v8df);
Asaf Badouh27180512015-09-17 14:53:37 +0000365}
366
367static __inline__ __m512d __DEFAULT_FN_ATTRS
368_mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000369 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
370 (__v8df)_mm512_cvtepi64_pd(__A),
371 (__v8df)__W);
Asaf Badouh27180512015-09-17 14:53:37 +0000372}
373
374static __inline__ __m512d __DEFAULT_FN_ATTRS
375_mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000376 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
377 (__v8df)_mm512_cvtepi64_pd(__A),
378 (__v8df)_mm512_setzero_pd());
Asaf Badouh27180512015-09-17 14:53:37 +0000379}
380
Craig Topperc6338672018-05-31 00:51:20 +0000381#define _mm512_cvt_roundepi64_pd(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000382 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
383 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000384 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000385
Craig Topperc6338672018-05-31 00:51:20 +0000386#define _mm512_mask_cvt_roundepi64_pd(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000387 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
388 (__v8df)(__m512d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000389 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000390
Craig Topperc6338672018-05-31 00:51:20 +0000391#define _mm512_maskz_cvt_roundepi64_pd(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000392 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
393 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000394 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000395
396static __inline__ __m256 __DEFAULT_FN_ATTRS
397_mm512_cvtepi64_ps (__m512i __A) {
398 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
399 (__v8sf) _mm256_setzero_ps(),
400 (__mmask8) -1,
401 _MM_FROUND_CUR_DIRECTION);
402}
403
404static __inline__ __m256 __DEFAULT_FN_ATTRS
405_mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
406 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
407 (__v8sf) __W,
408 (__mmask8) __U,
409 _MM_FROUND_CUR_DIRECTION);
410}
411
412static __inline__ __m256 __DEFAULT_FN_ATTRS
413_mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
414 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
415 (__v8sf) _mm256_setzero_ps(),
416 (__mmask8) __U,
417 _MM_FROUND_CUR_DIRECTION);
418}
419
Craig Topperc6338672018-05-31 00:51:20 +0000420#define _mm512_cvt_roundepi64_ps(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000421 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
422 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000423 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000424
Craig Topperc6338672018-05-31 00:51:20 +0000425#define _mm512_mask_cvt_roundepi64_ps(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000426 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
427 (__v8sf)(__m256)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000428 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000429
Craig Topperc6338672018-05-31 00:51:20 +0000430#define _mm512_maskz_cvt_roundepi64_ps(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000431 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
432 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000433 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000434
435
436static __inline__ __m512i __DEFAULT_FN_ATTRS
437_mm512_cvttpd_epi64 (__m512d __A) {
438 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
439 (__v8di) _mm512_setzero_si512(),
440 (__mmask8) -1,
441 _MM_FROUND_CUR_DIRECTION);
442}
443
444static __inline__ __m512i __DEFAULT_FN_ATTRS
445_mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
446 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
447 (__v8di) __W,
448 (__mmask8) __U,
449 _MM_FROUND_CUR_DIRECTION);
450}
451
452static __inline__ __m512i __DEFAULT_FN_ATTRS
453_mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
454 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
455 (__v8di) _mm512_setzero_si512(),
456 (__mmask8) __U,
457 _MM_FROUND_CUR_DIRECTION);
458}
459
Craig Topperc6338672018-05-31 00:51:20 +0000460#define _mm512_cvtt_roundpd_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000461 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
462 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000463 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000464
Craig Topperc6338672018-05-31 00:51:20 +0000465#define _mm512_mask_cvtt_roundpd_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000466 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
467 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000468 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000469
Craig Topperc6338672018-05-31 00:51:20 +0000470#define _mm512_maskz_cvtt_roundpd_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000471 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
472 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000473 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000474
475static __inline__ __m512i __DEFAULT_FN_ATTRS
476_mm512_cvttpd_epu64 (__m512d __A) {
477 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
478 (__v8di) _mm512_setzero_si512(),
479 (__mmask8) -1,
480 _MM_FROUND_CUR_DIRECTION);
481}
482
483static __inline__ __m512i __DEFAULT_FN_ATTRS
484_mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
485 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
486 (__v8di) __W,
487 (__mmask8) __U,
488 _MM_FROUND_CUR_DIRECTION);
489}
490
491static __inline__ __m512i __DEFAULT_FN_ATTRS
492_mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
493 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
494 (__v8di) _mm512_setzero_si512(),
495 (__mmask8) __U,
496 _MM_FROUND_CUR_DIRECTION);
497}
498
Craig Topperc6338672018-05-31 00:51:20 +0000499#define _mm512_cvtt_roundpd_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000500 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
501 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000502 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000503
Craig Topperc6338672018-05-31 00:51:20 +0000504#define _mm512_mask_cvtt_roundpd_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000505 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
506 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000507 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000508
Craig Topperc6338672018-05-31 00:51:20 +0000509#define _mm512_maskz_cvtt_roundpd_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000510 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
511 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000512 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000513
514static __inline__ __m512i __DEFAULT_FN_ATTRS
515_mm512_cvttps_epi64 (__m256 __A) {
516 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
517 (__v8di) _mm512_setzero_si512(),
518 (__mmask8) -1,
519 _MM_FROUND_CUR_DIRECTION);
520}
521
522static __inline__ __m512i __DEFAULT_FN_ATTRS
523_mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
524 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
525 (__v8di) __W,
526 (__mmask8) __U,
527 _MM_FROUND_CUR_DIRECTION);
528}
529
530static __inline__ __m512i __DEFAULT_FN_ATTRS
531_mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
532 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
533 (__v8di) _mm512_setzero_si512(),
534 (__mmask8) __U,
535 _MM_FROUND_CUR_DIRECTION);
536}
537
Craig Topperc6338672018-05-31 00:51:20 +0000538#define _mm512_cvtt_roundps_epi64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000539 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
540 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000541 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000542
Craig Topperc6338672018-05-31 00:51:20 +0000543#define _mm512_mask_cvtt_roundps_epi64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000544 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
545 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000546 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000547
Craig Topperc6338672018-05-31 00:51:20 +0000548#define _mm512_maskz_cvtt_roundps_epi64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000549 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
550 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000551 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000552
553static __inline__ __m512i __DEFAULT_FN_ATTRS
554_mm512_cvttps_epu64 (__m256 __A) {
555 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
556 (__v8di) _mm512_setzero_si512(),
557 (__mmask8) -1,
558 _MM_FROUND_CUR_DIRECTION);
559}
560
561static __inline__ __m512i __DEFAULT_FN_ATTRS
562_mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
563 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
564 (__v8di) __W,
565 (__mmask8) __U,
566 _MM_FROUND_CUR_DIRECTION);
567}
568
569static __inline__ __m512i __DEFAULT_FN_ATTRS
570_mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
571 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
572 (__v8di) _mm512_setzero_si512(),
573 (__mmask8) __U,
574 _MM_FROUND_CUR_DIRECTION);
575}
576
Craig Topperc6338672018-05-31 00:51:20 +0000577#define _mm512_cvtt_roundps_epu64(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000578 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
579 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000580 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000581
Craig Topperc6338672018-05-31 00:51:20 +0000582#define _mm512_mask_cvtt_roundps_epu64(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000583 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
584 (__v8di)(__m512i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000585 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000586
Craig Topperc6338672018-05-31 00:51:20 +0000587#define _mm512_maskz_cvtt_roundps_epu64(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000588 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
589 (__v8di)_mm512_setzero_si512(), \
Craig Topperc6338672018-05-31 00:51:20 +0000590 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000591
592static __inline__ __m512d __DEFAULT_FN_ATTRS
593_mm512_cvtepu64_pd (__m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000594 return (__m512d)__builtin_convertvector((__v8du)__A, __v8df);
Asaf Badouh27180512015-09-17 14:53:37 +0000595}
596
597static __inline__ __m512d __DEFAULT_FN_ATTRS
598_mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000599 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
600 (__v8df)_mm512_cvtepu64_pd(__A),
601 (__v8df)__W);
Asaf Badouh27180512015-09-17 14:53:37 +0000602}
603
604static __inline__ __m512d __DEFAULT_FN_ATTRS
605_mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000606 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__U,
607 (__v8df)_mm512_cvtepu64_pd(__A),
608 (__v8df)_mm512_setzero_pd());
Asaf Badouh27180512015-09-17 14:53:37 +0000609}
610
Craig Topperc6338672018-05-31 00:51:20 +0000611#define _mm512_cvt_roundepu64_pd(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000612 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
613 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000614 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000615
Craig Topperc6338672018-05-31 00:51:20 +0000616#define _mm512_mask_cvt_roundepu64_pd(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000617 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
618 (__v8df)(__m512d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000619 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000620
621
Craig Topperc6338672018-05-31 00:51:20 +0000622#define _mm512_maskz_cvt_roundepu64_pd(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000623 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
624 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000625 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000626
627
628static __inline__ __m256 __DEFAULT_FN_ATTRS
629_mm512_cvtepu64_ps (__m512i __A) {
630 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
631 (__v8sf) _mm256_setzero_ps(),
632 (__mmask8) -1,
633 _MM_FROUND_CUR_DIRECTION);
634}
635
636static __inline__ __m256 __DEFAULT_FN_ATTRS
637_mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
638 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
639 (__v8sf) __W,
640 (__mmask8) __U,
641 _MM_FROUND_CUR_DIRECTION);
642}
643
644static __inline__ __m256 __DEFAULT_FN_ATTRS
645_mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
646 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
647 (__v8sf) _mm256_setzero_ps(),
648 (__mmask8) __U,
649 _MM_FROUND_CUR_DIRECTION);
650}
651
Craig Topperc6338672018-05-31 00:51:20 +0000652#define _mm512_cvt_roundepu64_ps(A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000653 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
654 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000655 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000656
Craig Topperc6338672018-05-31 00:51:20 +0000657#define _mm512_mask_cvt_roundepu64_ps(W, U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000658 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
659 (__v8sf)(__m256)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000660 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000661
Craig Topperc6338672018-05-31 00:51:20 +0000662#define _mm512_maskz_cvt_roundepu64_ps(U, A, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000663 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
664 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000665 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000666
Craig Topperc6338672018-05-31 00:51:20 +0000667#define _mm512_range_pd(A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000668 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
669 (__v8df)(__m512d)(B), (int)(C), \
670 (__v8df)_mm512_setzero_pd(), \
671 (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000672 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000673
Craig Topperc6338672018-05-31 00:51:20 +0000674#define _mm512_mask_range_pd(W, U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000675 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
676 (__v8df)(__m512d)(B), (int)(C), \
677 (__v8df)(__m512d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000678 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000679
Craig Topperc6338672018-05-31 00:51:20 +0000680#define _mm512_maskz_range_pd(U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000681 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
682 (__v8df)(__m512d)(B), (int)(C), \
683 (__v8df)_mm512_setzero_pd(), \
684 (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000685 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000686
Craig Topperc6338672018-05-31 00:51:20 +0000687#define _mm512_range_round_pd(A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000688 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
689 (__v8df)(__m512d)(B), (int)(C), \
690 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000691 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000692
Craig Topperc6338672018-05-31 00:51:20 +0000693#define _mm512_mask_range_round_pd(W, U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000694 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
695 (__v8df)(__m512d)(B), (int)(C), \
696 (__v8df)(__m512d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000697 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000698
Craig Topperc6338672018-05-31 00:51:20 +0000699#define _mm512_maskz_range_round_pd(U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000700 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
701 (__v8df)(__m512d)(B), (int)(C), \
702 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000703 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000704
Craig Topperc6338672018-05-31 00:51:20 +0000705#define _mm512_range_ps(A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000706 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
707 (__v16sf)(__m512)(B), (int)(C), \
708 (__v16sf)_mm512_setzero_ps(), \
709 (__mmask16)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000710 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000711
Craig Topperc6338672018-05-31 00:51:20 +0000712#define _mm512_mask_range_ps(W, U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000713 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
714 (__v16sf)(__m512)(B), (int)(C), \
715 (__v16sf)(__m512)(W), (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000716 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000717
Craig Topperc6338672018-05-31 00:51:20 +0000718#define _mm512_maskz_range_ps(U, A, B, C) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000719 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
720 (__v16sf)(__m512)(B), (int)(C), \
721 (__v16sf)_mm512_setzero_ps(), \
722 (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000723 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000724
Craig Topperc6338672018-05-31 00:51:20 +0000725#define _mm512_range_round_ps(A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000726 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
727 (__v16sf)(__m512)(B), (int)(C), \
728 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000729 (__mmask16)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000730
Craig Topperc6338672018-05-31 00:51:20 +0000731#define _mm512_mask_range_round_ps(W, U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000732 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
733 (__v16sf)(__m512)(B), (int)(C), \
734 (__v16sf)(__m512)(W), (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000735 (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000736
Craig Topperc6338672018-05-31 00:51:20 +0000737#define _mm512_maskz_range_round_ps(U, A, B, C, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000738 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
739 (__v16sf)(__m512)(B), (int)(C), \
740 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000741 (__mmask16)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000742
Craig Topperc6338672018-05-31 00:51:20 +0000743#define _mm_range_round_ss(A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000744 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
745 (__v4sf)(__m128)(B), \
746 (__v4sf)_mm_setzero_ps(), \
747 (__mmask8) -1, (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000748 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000749
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000750#define _mm_range_ss(A ,B , C) _mm_range_round_ss(A, B, C ,_MM_FROUND_CUR_DIRECTION)
751
Craig Topperc6338672018-05-31 00:51:20 +0000752#define _mm_mask_range_round_ss(W, U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000753 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
754 (__v4sf)(__m128)(B), \
755 (__v4sf)(__m128)(W),\
756 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000757 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000758
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000759#define _mm_mask_range_ss(W , U, A, B, C) _mm_mask_range_round_ss(W, U, A, B, C , _MM_FROUND_CUR_DIRECTION)
760
Craig Topperc6338672018-05-31 00:51:20 +0000761#define _mm_maskz_range_round_ss(U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000762 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
763 (__v4sf)(__m128)(B), \
764 (__v4sf)_mm_setzero_ps(), \
765 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000766 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000767
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000768#define _mm_maskz_range_ss(U, A ,B , C) _mm_maskz_range_round_ss(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
769
Craig Topperc6338672018-05-31 00:51:20 +0000770#define _mm_range_round_sd(A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000771 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
772 (__v2df)(__m128d)(B), \
773 (__v2df)_mm_setzero_pd(), \
774 (__mmask8) -1, (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000775 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000776
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000777#define _mm_range_sd(A ,B , C) _mm_range_round_sd(A, B, C ,_MM_FROUND_CUR_DIRECTION)
778
Craig Topperc6338672018-05-31 00:51:20 +0000779#define _mm_mask_range_round_sd(W, U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000780 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
781 (__v2df)(__m128d)(B), \
782 (__v2df)(__m128d)(W),\
783 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000784 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000785
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000786#define _mm_mask_range_sd(W, U, A, B, C) _mm_mask_range_round_sd(W, U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
787
Craig Topperc6338672018-05-31 00:51:20 +0000788#define _mm_maskz_range_round_sd(U, A, B, C, R) \
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000789 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
790 (__v2df)(__m128d)(B), \
791 (__v2df)_mm_setzero_pd(), \
792 (__mmask8)(U), (int)(C),\
Craig Topperc6338672018-05-31 00:51:20 +0000793 (int)(R))
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000794
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000795#define _mm_maskz_range_sd(U, A, B, C) _mm_maskz_range_round_sd(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
796
Craig Topperc6338672018-05-31 00:51:20 +0000797#define _mm512_reduce_pd(A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000798 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
799 (__v8df)_mm512_setzero_pd(), \
800 (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000801 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000802
Craig Topperc6338672018-05-31 00:51:20 +0000803#define _mm512_mask_reduce_pd(W, U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000804 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
805 (__v8df)(__m512d)(W), \
806 (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000807 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000808
Craig Topperc6338672018-05-31 00:51:20 +0000809#define _mm512_maskz_reduce_pd(U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000810 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
811 (__v8df)_mm512_setzero_pd(), \
812 (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000813 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000814
Craig Topperc6338672018-05-31 00:51:20 +0000815#define _mm512_reduce_ps(A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000816 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
817 (__v16sf)_mm512_setzero_ps(), \
818 (__mmask16)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000819 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000820
Craig Topperc6338672018-05-31 00:51:20 +0000821#define _mm512_mask_reduce_ps(W, U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000822 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
823 (__v16sf)(__m512)(W), \
824 (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000825 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000826
Craig Topperc6338672018-05-31 00:51:20 +0000827#define _mm512_maskz_reduce_ps(U, A, B) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000828 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
829 (__v16sf)_mm512_setzero_ps(), \
830 (__mmask16)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000831 _MM_FROUND_CUR_DIRECTION)
Asaf Badouh27180512015-09-17 14:53:37 +0000832
Craig Topperc6338672018-05-31 00:51:20 +0000833#define _mm512_reduce_round_pd(A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000834 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
835 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000836 (__mmask8)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000837
Craig Topperc6338672018-05-31 00:51:20 +0000838#define _mm512_mask_reduce_round_pd(W, U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000839 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
840 (__v8df)(__m512d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000841 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000842
Craig Topperc6338672018-05-31 00:51:20 +0000843#define _mm512_maskz_reduce_round_pd(U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000844 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
845 (__v8df)_mm512_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000846 (__mmask8)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000847
Craig Topperc6338672018-05-31 00:51:20 +0000848#define _mm512_reduce_round_ps(A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000849 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
850 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000851 (__mmask16)-1, (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000852
Craig Topperc6338672018-05-31 00:51:20 +0000853#define _mm512_mask_reduce_round_ps(W, U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000854 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
855 (__v16sf)(__m512)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000856 (__mmask16)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000857
Craig Topperc6338672018-05-31 00:51:20 +0000858#define _mm512_maskz_reduce_round_ps(U, A, B, R) \
Craig Topper41ad25a2016-05-17 04:41:36 +0000859 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
860 (__v16sf)_mm512_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000861 (__mmask16)(U), (int)(R))
Asaf Badouh27180512015-09-17 14:53:37 +0000862
Craig Topperc6338672018-05-31 00:51:20 +0000863#define _mm_reduce_ss(A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000864 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
865 (__v4sf)(__m128)(B), \
866 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000867 (int)(C), _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000868
Craig Topperc6338672018-05-31 00:51:20 +0000869#define _mm_mask_reduce_ss(W, U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000870 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
871 (__v4sf)(__m128)(B), \
872 (__v4sf)(__m128)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000873 (int)(C), _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000874
Craig Topperc6338672018-05-31 00:51:20 +0000875#define _mm_maskz_reduce_ss(U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000876 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
877 (__v4sf)(__m128)(B), \
878 (__v4sf)_mm_setzero_ps(), \
879 (__mmask8)(U), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000880 _MM_FROUND_CUR_DIRECTION)
Craig Topperf3efec62016-06-08 06:08:07 +0000881
Craig Topperc6338672018-05-31 00:51:20 +0000882#define _mm_reduce_round_ss(A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000883 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
884 (__v4sf)(__m128)(B), \
885 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
Craig Topperc6338672018-05-31 00:51:20 +0000886 (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000887
Craig Topperc6338672018-05-31 00:51:20 +0000888#define _mm_mask_reduce_round_ss(W, U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000889 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
890 (__v4sf)(__m128)(B), \
891 (__v4sf)(__m128)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000892 (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000893
Craig Topperc6338672018-05-31 00:51:20 +0000894#define _mm_maskz_reduce_round_ss(U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000895 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
896 (__v4sf)(__m128)(B), \
897 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000898 (__mmask8)(U), (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000899
Craig Topperc6338672018-05-31 00:51:20 +0000900#define _mm_reduce_sd(A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000901 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
902 (__v2df)(__m128d)(B), \
903 (__v2df)_mm_setzero_pd(), \
904 (__mmask8)-1, (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000905 _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000906
Craig Topperc6338672018-05-31 00:51:20 +0000907#define _mm_mask_reduce_sd(W, U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000908 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
909 (__v2df)(__m128d)(B), \
910 (__v2df)(__m128d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000911 (int)(C), _MM_FROUND_CUR_DIRECTION)
Michael Zuckerman96d03992016-06-07 14:00:20 +0000912
Craig Topperc6338672018-05-31 00:51:20 +0000913#define _mm_maskz_reduce_sd(U, A, B, C) \
Craig Topperf3efec62016-06-08 06:08:07 +0000914 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
915 (__v2df)(__m128d)(B), \
916 (__v2df)_mm_setzero_pd(), \
917 (__mmask8)(U), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000918 _MM_FROUND_CUR_DIRECTION)
Craig Topperf3efec62016-06-08 06:08:07 +0000919
Craig Topperc6338672018-05-31 00:51:20 +0000920#define _mm_reduce_round_sd(A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000921 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
922 (__v2df)(__m128d)(B), \
923 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000924 (__mmask8)-1, (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000925
Craig Topperc6338672018-05-31 00:51:20 +0000926#define _mm_mask_reduce_round_sd(W, U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000927 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
928 (__v2df)(__m128d)(B), \
929 (__v2df)(__m128d)(W), (__mmask8)(U), \
Craig Topperc6338672018-05-31 00:51:20 +0000930 (int)(C), (int)(R))
Michael Zuckerman96d03992016-06-07 14:00:20 +0000931
Craig Topperc6338672018-05-31 00:51:20 +0000932#define _mm_maskz_reduce_round_sd(U, A, B, C, R) \
Craig Topperf3efec62016-06-08 06:08:07 +0000933 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
934 (__v2df)(__m128d)(B), \
935 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000936 (__mmask8)(U), (int)(C), (int)(R))
937
Michael Zuckerman074edd72016-04-13 10:49:37 +0000938static __inline__ __mmask16 __DEFAULT_FN_ATTRS
939_mm512_movepi32_mask (__m512i __A)
940{
941 return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
942}
943
944static __inline__ __m512i __DEFAULT_FN_ATTRS
945_mm512_movm_epi32 (__mmask16 __A)
946{
947 return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
948}
949
950static __inline__ __m512i __DEFAULT_FN_ATTRS
951_mm512_movm_epi64 (__mmask8 __A)
952{
953 return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
954}
955
956static __inline__ __mmask8 __DEFAULT_FN_ATTRS
957_mm512_movepi64_mask (__m512i __A)
958{
959 return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
960}
961
962
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000963static __inline__ __m512 __DEFAULT_FN_ATTRS
964_mm512_broadcast_f32x2 (__m128 __A)
965{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000966 return (__m512)__builtin_shufflevector((__v4sf)__A,
967 (__v4sf)_mm_undefined_ps(),
968 0, 1, 0, 1, 0, 1, 0, 1,
969 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000970}
971
972static __inline__ __m512 __DEFAULT_FN_ATTRS
973_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
974{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000975 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
976 (__v16sf)_mm512_broadcast_f32x2(__A),
977 (__v16sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000978}
979
980static __inline__ __m512 __DEFAULT_FN_ATTRS
981_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
982{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000983 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
984 (__v16sf)_mm512_broadcast_f32x2(__A),
985 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000986}
987
988static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +0000989_mm512_broadcast_f32x8(__m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000990{
Craig Topper367c86d2017-01-18 02:17:10 +0000991 return (__m512)__builtin_shufflevector((__v8sf)__A, (__v8sf)__A,
992 0, 1, 2, 3, 4, 5, 6, 7,
993 0, 1, 2, 3, 4, 5, 6, 7);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000994}
995
996static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +0000997_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, __m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000998{
Craig Topper367c86d2017-01-18 02:17:10 +0000999 return (__m512)__builtin_ia32_selectps_512((__mmask8)__M,
1000 (__v16sf)_mm512_broadcast_f32x8(__A),
1001 (__v16sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001002}
1003
1004static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001005_mm512_maskz_broadcast_f32x8(__mmask16 __M, __m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001006{
Craig Topper367c86d2017-01-18 02:17:10 +00001007 return (__m512)__builtin_ia32_selectps_512((__mmask8)__M,
1008 (__v16sf)_mm512_broadcast_f32x8(__A),
1009 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001010}
1011
1012static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001013_mm512_broadcast_f64x2(__m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001014{
Craig Topper367c86d2017-01-18 02:17:10 +00001015 return (__m512d)__builtin_shufflevector((__v2df)__A, (__v2df)__A,
1016 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001017}
1018
1019static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001020_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001021{
Craig Topper367c86d2017-01-18 02:17:10 +00001022 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1023 (__v8df)_mm512_broadcast_f64x2(__A),
1024 (__v8df)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001025}
1026
1027static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001028_mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001029{
Craig Topper367c86d2017-01-18 02:17:10 +00001030 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1031 (__v8df)_mm512_broadcast_f64x2(__A),
1032 (__v8df)_mm512_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001033}
1034
1035static __inline__ __m512i __DEFAULT_FN_ATTRS
1036_mm512_broadcast_i32x2 (__m128i __A)
1037{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001038 return (__m512i)__builtin_shufflevector((__v4si)__A,
1039 (__v4si)_mm_undefined_si128(),
1040 0, 1, 0, 1, 0, 1, 0, 1,
1041 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001042}
1043
1044static __inline__ __m512i __DEFAULT_FN_ATTRS
1045_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1046{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001047 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1048 (__v16si)_mm512_broadcast_i32x2(__A),
1049 (__v16si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001050}
1051
1052static __inline__ __m512i __DEFAULT_FN_ATTRS
1053_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1054{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001055 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1056 (__v16si)_mm512_broadcast_i32x2(__A),
1057 (__v16si)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001058}
1059
1060static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001061_mm512_broadcast_i32x8(__m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001062{
Craig Topper367c86d2017-01-18 02:17:10 +00001063 return (__m512i)__builtin_shufflevector((__v8si)__A, (__v8si)__A,
1064 0, 1, 2, 3, 4, 5, 6, 7,
1065 0, 1, 2, 3, 4, 5, 6, 7);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001066}
1067
1068static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001069_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001070{
Craig Topper367c86d2017-01-18 02:17:10 +00001071 return (__m512i)__builtin_ia32_selectd_512((__mmask8)__M,
1072 (__v16si)_mm512_broadcast_i32x8(__A),
1073 (__v16si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001074}
1075
1076static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001077_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001078{
Craig Topper367c86d2017-01-18 02:17:10 +00001079 return (__m512i)__builtin_ia32_selectd_512((__mmask8)__M,
1080 (__v16si)_mm512_broadcast_i32x8(__A),
1081 (__v16si)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001082}
1083
1084static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001085_mm512_broadcast_i64x2(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001086{
Craig Topper367c86d2017-01-18 02:17:10 +00001087 return (__m512i)__builtin_shufflevector((__v2di)__A, (__v2di)__A,
1088 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001089}
1090
1091static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001092_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001093{
Craig Topper367c86d2017-01-18 02:17:10 +00001094 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1095 (__v8di)_mm512_broadcast_i64x2(__A),
1096 (__v8di)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001097}
1098
1099static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001100_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001101{
Craig Topper367c86d2017-01-18 02:17:10 +00001102 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1103 (__v8di)_mm512_broadcast_i64x2(__A),
1104 (__v8di)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001105}
1106
Craig Topperc6338672018-05-31 00:51:20 +00001107#define _mm512_extractf32x8_ps(A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001108 (__m256)__builtin_shufflevector((__v16sf)(__m512)(A), \
1109 (__v16sf)_mm512_undefined_ps(), \
1110 ((imm) & 1) ? 8 : 0, \
1111 ((imm) & 1) ? 9 : 1, \
1112 ((imm) & 1) ? 10 : 2, \
1113 ((imm) & 1) ? 11 : 3, \
1114 ((imm) & 1) ? 12 : 4, \
1115 ((imm) & 1) ? 13 : 5, \
1116 ((imm) & 1) ? 14 : 6, \
Craig Topperc6338672018-05-31 00:51:20 +00001117 ((imm) & 1) ? 15 : 7)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001118
Craig Topperc6338672018-05-31 00:51:20 +00001119#define _mm512_mask_extractf32x8_ps(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001120 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
1121 (__v8sf)_mm512_extractf32x8_ps((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001122 (__v8sf)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001123
Craig Topperc6338672018-05-31 00:51:20 +00001124#define _mm512_maskz_extractf32x8_ps(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001125 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
1126 (__v8sf)_mm512_extractf32x8_ps((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001127 (__v8sf)_mm256_setzero_ps())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001128
Craig Topperc6338672018-05-31 00:51:20 +00001129#define _mm512_extractf64x2_pd(A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001130 (__m128d)__builtin_shufflevector((__v8df)(__m512d)(A), \
1131 (__v8df)_mm512_undefined_pd(), \
1132 0 + ((imm) & 0x3) * 2, \
Craig Topperc6338672018-05-31 00:51:20 +00001133 1 + ((imm) & 0x3) * 2)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001134
Craig Topperc6338672018-05-31 00:51:20 +00001135#define _mm512_mask_extractf64x2_pd(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001136 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1137 (__v2df)_mm512_extractf64x2_pd((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001138 (__v2df)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001139
Craig Topperc6338672018-05-31 00:51:20 +00001140#define _mm512_maskz_extractf64x2_pd(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001141 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1142 (__v2df)_mm512_extractf64x2_pd((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001143 (__v2df)_mm_setzero_pd())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001144
Craig Topperc6338672018-05-31 00:51:20 +00001145#define _mm512_extracti32x8_epi32(A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001146 (__m256i)__builtin_shufflevector((__v16si)(__m512i)(A), \
1147 (__v16si)_mm512_undefined_epi32(), \
1148 ((imm) & 1) ? 8 : 0, \
1149 ((imm) & 1) ? 9 : 1, \
1150 ((imm) & 1) ? 10 : 2, \
1151 ((imm) & 1) ? 11 : 3, \
1152 ((imm) & 1) ? 12 : 4, \
1153 ((imm) & 1) ? 13 : 5, \
1154 ((imm) & 1) ? 14 : 6, \
Craig Topperc6338672018-05-31 00:51:20 +00001155 ((imm) & 1) ? 15 : 7)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001156
Craig Topperc6338672018-05-31 00:51:20 +00001157#define _mm512_mask_extracti32x8_epi32(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001158 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
1159 (__v8si)_mm512_extracti32x8_epi32((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001160 (__v8si)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001161
Craig Topperc6338672018-05-31 00:51:20 +00001162#define _mm512_maskz_extracti32x8_epi32(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001163 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
1164 (__v8si)_mm512_extracti32x8_epi32((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001165 (__v8si)_mm256_setzero_si256())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001166
Craig Topperc6338672018-05-31 00:51:20 +00001167#define _mm512_extracti64x2_epi64(A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001168 (__m128i)__builtin_shufflevector((__v8di)(__m512i)(A), \
1169 (__v8di)_mm512_undefined_epi32(), \
1170 0 + ((imm) & 0x3) * 2, \
Craig Topperc6338672018-05-31 00:51:20 +00001171 1 + ((imm) & 0x3) * 2)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001172
Craig Topperc6338672018-05-31 00:51:20 +00001173#define _mm512_mask_extracti64x2_epi64(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001174 (__m128d)__builtin_ia32_selectq_128((__mmask8)(U), \
1175 (__v2di)_mm512_extracti64x2_epi64((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001176 (__v2di)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001177
Craig Topperc6338672018-05-31 00:51:20 +00001178#define _mm512_maskz_extracti64x2_epi64(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001179 (__m128d)__builtin_ia32_selectq_128((__mmask8)(U), \
1180 (__v2di)_mm512_extracti64x2_epi64((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001181 (__v2di)_mm_setzero_si128())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001182
Craig Topperc6338672018-05-31 00:51:20 +00001183#define _mm512_insertf32x8(A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001184 (__m512)__builtin_shufflevector((__v16sf)(__m512)(A), \
1185 (__v16sf)_mm512_castps256_ps512((__m256)(B)),\
1186 ((imm) & 0x1) ? 0 : 16, \
1187 ((imm) & 0x1) ? 1 : 17, \
1188 ((imm) & 0x1) ? 2 : 18, \
1189 ((imm) & 0x1) ? 3 : 19, \
1190 ((imm) & 0x1) ? 4 : 20, \
1191 ((imm) & 0x1) ? 5 : 21, \
1192 ((imm) & 0x1) ? 6 : 22, \
1193 ((imm) & 0x1) ? 7 : 23, \
1194 ((imm) & 0x1) ? 16 : 8, \
1195 ((imm) & 0x1) ? 17 : 9, \
1196 ((imm) & 0x1) ? 18 : 10, \
1197 ((imm) & 0x1) ? 19 : 11, \
1198 ((imm) & 0x1) ? 20 : 12, \
1199 ((imm) & 0x1) ? 21 : 13, \
1200 ((imm) & 0x1) ? 22 : 14, \
Craig Topperc6338672018-05-31 00:51:20 +00001201 ((imm) & 0x1) ? 23 : 15)
Craig Topperdca1f232016-05-15 21:26:20 +00001202
Craig Topperc6338672018-05-31 00:51:20 +00001203#define _mm512_mask_insertf32x8(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001204 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1205 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001206 (__v16sf)(W))
Craig Topperdca1f232016-05-15 21:26:20 +00001207
Craig Topperc6338672018-05-31 00:51:20 +00001208#define _mm512_maskz_insertf32x8(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001209 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1210 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001211 (__v16sf)_mm512_setzero_ps())
Craig Topperdca1f232016-05-15 21:26:20 +00001212
Craig Topperc6338672018-05-31 00:51:20 +00001213#define _mm512_insertf64x2(A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001214 (__m512d)__builtin_shufflevector((__v8df)(__m512d)(A), \
1215 (__v8df)_mm512_castpd128_pd512((__m128d)(B)),\
1216 (((imm) & 0x3) == 0) ? 8 : 0, \
1217 (((imm) & 0x3) == 0) ? 9 : 1, \
1218 (((imm) & 0x3) == 1) ? 8 : 2, \
1219 (((imm) & 0x3) == 1) ? 9 : 3, \
1220 (((imm) & 0x3) == 2) ? 8 : 4, \
1221 (((imm) & 0x3) == 2) ? 9 : 5, \
1222 (((imm) & 0x3) == 3) ? 8 : 6, \
Craig Topperc6338672018-05-31 00:51:20 +00001223 (((imm) & 0x3) == 3) ? 9 : 7)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001224
Craig Topperc6338672018-05-31 00:51:20 +00001225#define _mm512_mask_insertf64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001226 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1227 (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001228 (__v8df)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001229
Craig Topperc6338672018-05-31 00:51:20 +00001230#define _mm512_maskz_insertf64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001231 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1232 (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001233 (__v8df)_mm512_setzero_pd())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001234
Craig Topperc6338672018-05-31 00:51:20 +00001235#define _mm512_inserti32x8(A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001236 (__m512i)__builtin_shufflevector((__v16si)(__m512i)(A), \
1237 (__v16si)_mm512_castsi256_si512((__m256i)(B)),\
1238 ((imm) & 0x1) ? 0 : 16, \
1239 ((imm) & 0x1) ? 1 : 17, \
1240 ((imm) & 0x1) ? 2 : 18, \
1241 ((imm) & 0x1) ? 3 : 19, \
1242 ((imm) & 0x1) ? 4 : 20, \
1243 ((imm) & 0x1) ? 5 : 21, \
1244 ((imm) & 0x1) ? 6 : 22, \
1245 ((imm) & 0x1) ? 7 : 23, \
1246 ((imm) & 0x1) ? 16 : 8, \
1247 ((imm) & 0x1) ? 17 : 9, \
1248 ((imm) & 0x1) ? 18 : 10, \
1249 ((imm) & 0x1) ? 19 : 11, \
1250 ((imm) & 0x1) ? 20 : 12, \
1251 ((imm) & 0x1) ? 21 : 13, \
1252 ((imm) & 0x1) ? 22 : 14, \
Craig Topperc6338672018-05-31 00:51:20 +00001253 ((imm) & 0x1) ? 23 : 15)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001254
Craig Topperc6338672018-05-31 00:51:20 +00001255#define _mm512_mask_inserti32x8(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001256 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1257 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001258 (__v16si)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001259
Craig Topperc6338672018-05-31 00:51:20 +00001260#define _mm512_maskz_inserti32x8(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001261 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1262 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001263 (__v16si)_mm512_setzero_si512())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001264
Craig Topperc6338672018-05-31 00:51:20 +00001265#define _mm512_inserti64x2(A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001266 (__m512i)__builtin_shufflevector((__v8di)(__m512i)(A), \
1267 (__v8di)_mm512_castsi128_si512((__m128i)(B)),\
1268 (((imm) & 0x3) == 0) ? 8 : 0, \
1269 (((imm) & 0x3) == 0) ? 9 : 1, \
1270 (((imm) & 0x3) == 1) ? 8 : 2, \
1271 (((imm) & 0x3) == 1) ? 9 : 3, \
1272 (((imm) & 0x3) == 2) ? 8 : 4, \
1273 (((imm) & 0x3) == 2) ? 9 : 5, \
1274 (((imm) & 0x3) == 3) ? 8 : 6, \
Craig Topperc6338672018-05-31 00:51:20 +00001275 (((imm) & 0x3) == 3) ? 9 : 7)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001276
Craig Topperc6338672018-05-31 00:51:20 +00001277#define _mm512_mask_inserti64x2(W, 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)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001281
Craig Topperc6338672018-05-31 00:51:20 +00001282#define _mm512_maskz_inserti64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001283 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1284 (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001285 (__v8di)_mm512_setzero_si512())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001286
Craig Topperc6338672018-05-31 00:51:20 +00001287#define _mm512_mask_fpclass_ps_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001288 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperc6338672018-05-31 00:51:20 +00001289 (int)(imm), (__mmask16)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001290
Craig Topperc6338672018-05-31 00:51:20 +00001291#define _mm512_fpclass_ps_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001292 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperc6338672018-05-31 00:51:20 +00001293 (int)(imm), (__mmask16)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001294
Craig Topperc6338672018-05-31 00:51:20 +00001295#define _mm512_mask_fpclass_pd_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001296 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001297 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001298
Craig Topperc6338672018-05-31 00:51:20 +00001299#define _mm512_fpclass_pd_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001300 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001301 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001302
Craig Topperc6338672018-05-31 00:51:20 +00001303#define _mm_fpclass_sd_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001304 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001305 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001306
Craig Topperc6338672018-05-31 00:51:20 +00001307#define _mm_mask_fpclass_sd_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001308 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001309 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001310
Craig Topperc6338672018-05-31 00:51:20 +00001311#define _mm_fpclass_ss_mask(A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001312 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001313 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001314
Craig Topperc6338672018-05-31 00:51:20 +00001315#define _mm_mask_fpclass_ss_mask(U, A, imm) \
Craig Topper41ad25a2016-05-17 04:41:36 +00001316 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001317 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001318
Michael Kupersteine45af542015-06-30 13:36:19 +00001319#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00001320
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001321#endif