blob: 2c431d9740cd145e20f96864715b54a323fc37d6 [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 Topper41ad25a2016-05-17 04:41:36 +0000229#define _mm512_cvt_roundpd_epi64(A, R) __extension__ ({ \
230 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
231 (__v8di)_mm512_setzero_si512(), \
232 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000233
Craig Topper41ad25a2016-05-17 04:41:36 +0000234#define _mm512_mask_cvt_roundpd_epi64(W, U, A, R) __extension__ ({ \
235 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
236 (__v8di)(__m512i)(W), \
237 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000238
Craig Topper41ad25a2016-05-17 04:41:36 +0000239#define _mm512_maskz_cvt_roundpd_epi64(U, A, R) __extension__ ({ \
240 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
241 (__v8di)_mm512_setzero_si512(), \
242 (__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 Topper41ad25a2016-05-17 04:41:36 +0000268#define _mm512_cvt_roundpd_epu64(A, R) __extension__ ({ \
269 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
270 (__v8di)_mm512_setzero_si512(), \
271 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000272
Craig Topper41ad25a2016-05-17 04:41:36 +0000273#define _mm512_mask_cvt_roundpd_epu64(W, U, A, R) __extension__ ({ \
274 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
275 (__v8di)(__m512i)(W), \
276 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000277
Craig Topper41ad25a2016-05-17 04:41:36 +0000278#define _mm512_maskz_cvt_roundpd_epu64(U, A, R) __extension__ ({ \
279 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
280 (__v8di)_mm512_setzero_si512(), \
281 (__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 Topper41ad25a2016-05-17 04:41:36 +0000307#define _mm512_cvt_roundps_epi64(A, R) __extension__ ({ \
308 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
309 (__v8di)_mm512_setzero_si512(), \
310 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000311
Craig Topper41ad25a2016-05-17 04:41:36 +0000312#define _mm512_mask_cvt_roundps_epi64(W, U, A, R) __extension__ ({ \
313 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
314 (__v8di)(__m512i)(W), \
315 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000316
Craig Topper41ad25a2016-05-17 04:41:36 +0000317#define _mm512_maskz_cvt_roundps_epi64(U, A, R) __extension__ ({ \
318 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
319 (__v8di)_mm512_setzero_si512(), \
320 (__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 Topper41ad25a2016-05-17 04:41:36 +0000346#define _mm512_cvt_roundps_epu64(A, R) __extension__ ({ \
347 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
348 (__v8di)_mm512_setzero_si512(), \
349 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000350
Craig Topper41ad25a2016-05-17 04:41:36 +0000351#define _mm512_mask_cvt_roundps_epu64(W, U, A, R) __extension__ ({ \
352 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
353 (__v8di)(__m512i)(W), \
354 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000355
Craig Topper41ad25a2016-05-17 04:41:36 +0000356#define _mm512_maskz_cvt_roundps_epu64(U, A, R) __extension__ ({ \
357 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
358 (__v8di)_mm512_setzero_si512(), \
359 (__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) {
364 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
365 (__v8df) _mm512_setzero_pd(),
366 (__mmask8) -1,
367 _MM_FROUND_CUR_DIRECTION);
368}
369
370static __inline__ __m512d __DEFAULT_FN_ATTRS
371_mm512_mask_cvtepi64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
372 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
373 (__v8df) __W,
374 (__mmask8) __U,
375 _MM_FROUND_CUR_DIRECTION);
376}
377
378static __inline__ __m512d __DEFAULT_FN_ATTRS
379_mm512_maskz_cvtepi64_pd (__mmask8 __U, __m512i __A) {
380 return (__m512d) __builtin_ia32_cvtqq2pd512_mask ((__v8di) __A,
381 (__v8df) _mm512_setzero_pd(),
382 (__mmask8) __U,
383 _MM_FROUND_CUR_DIRECTION);
384}
385
Craig Topper41ad25a2016-05-17 04:41:36 +0000386#define _mm512_cvt_roundepi64_pd(A, R) __extension__ ({ \
387 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
388 (__v8df)_mm512_setzero_pd(), \
389 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000390
Craig Topper41ad25a2016-05-17 04:41:36 +0000391#define _mm512_mask_cvt_roundepi64_pd(W, U, A, R) __extension__ ({ \
392 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
393 (__v8df)(__m512d)(W), \
394 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000395
Craig Topper41ad25a2016-05-17 04:41:36 +0000396#define _mm512_maskz_cvt_roundepi64_pd(U, A, R) __extension__ ({ \
397 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
398 (__v8df)_mm512_setzero_pd(), \
399 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000400
401static __inline__ __m256 __DEFAULT_FN_ATTRS
402_mm512_cvtepi64_ps (__m512i __A) {
403 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
404 (__v8sf) _mm256_setzero_ps(),
405 (__mmask8) -1,
406 _MM_FROUND_CUR_DIRECTION);
407}
408
409static __inline__ __m256 __DEFAULT_FN_ATTRS
410_mm512_mask_cvtepi64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
411 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
412 (__v8sf) __W,
413 (__mmask8) __U,
414 _MM_FROUND_CUR_DIRECTION);
415}
416
417static __inline__ __m256 __DEFAULT_FN_ATTRS
418_mm512_maskz_cvtepi64_ps (__mmask8 __U, __m512i __A) {
419 return (__m256) __builtin_ia32_cvtqq2ps512_mask ((__v8di) __A,
420 (__v8sf) _mm256_setzero_ps(),
421 (__mmask8) __U,
422 _MM_FROUND_CUR_DIRECTION);
423}
424
Craig Topper41ad25a2016-05-17 04:41:36 +0000425#define _mm512_cvt_roundepi64_ps(A, R) __extension__ ({ \
426 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
427 (__v8sf)_mm256_setzero_ps(), \
428 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000429
Craig Topper41ad25a2016-05-17 04:41:36 +0000430#define _mm512_mask_cvt_roundepi64_ps(W, U, A, R) __extension__ ({ \
431 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
432 (__v8sf)(__m256)(W), (__mmask8)(U), \
433 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000434
Craig Topper41ad25a2016-05-17 04:41:36 +0000435#define _mm512_maskz_cvt_roundepi64_ps(U, A, R) __extension__ ({ \
436 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
437 (__v8sf)_mm256_setzero_ps(), \
438 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000439
440
441static __inline__ __m512i __DEFAULT_FN_ATTRS
442_mm512_cvttpd_epi64 (__m512d __A) {
443 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
444 (__v8di) _mm512_setzero_si512(),
445 (__mmask8) -1,
446 _MM_FROUND_CUR_DIRECTION);
447}
448
449static __inline__ __m512i __DEFAULT_FN_ATTRS
450_mm512_mask_cvttpd_epi64 (__m512i __W, __mmask8 __U, __m512d __A) {
451 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
452 (__v8di) __W,
453 (__mmask8) __U,
454 _MM_FROUND_CUR_DIRECTION);
455}
456
457static __inline__ __m512i __DEFAULT_FN_ATTRS
458_mm512_maskz_cvttpd_epi64 (__mmask8 __U, __m512d __A) {
459 return (__m512i) __builtin_ia32_cvttpd2qq512_mask ((__v8df) __A,
460 (__v8di) _mm512_setzero_si512(),
461 (__mmask8) __U,
462 _MM_FROUND_CUR_DIRECTION);
463}
464
Craig Topper41ad25a2016-05-17 04:41:36 +0000465#define _mm512_cvtt_roundpd_epi64(A, R) __extension__ ({ \
466 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
467 (__v8di)_mm512_setzero_si512(), \
468 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000469
Craig Topper41ad25a2016-05-17 04:41:36 +0000470#define _mm512_mask_cvtt_roundpd_epi64(W, U, A, R) __extension__ ({ \
471 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
472 (__v8di)(__m512i)(W), \
473 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000474
Craig Topper41ad25a2016-05-17 04:41:36 +0000475#define _mm512_maskz_cvtt_roundpd_epi64(U, A, R) __extension__ ({ \
476 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
477 (__v8di)_mm512_setzero_si512(), \
478 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000479
480static __inline__ __m512i __DEFAULT_FN_ATTRS
481_mm512_cvttpd_epu64 (__m512d __A) {
482 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
483 (__v8di) _mm512_setzero_si512(),
484 (__mmask8) -1,
485 _MM_FROUND_CUR_DIRECTION);
486}
487
488static __inline__ __m512i __DEFAULT_FN_ATTRS
489_mm512_mask_cvttpd_epu64 (__m512i __W, __mmask8 __U, __m512d __A) {
490 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
491 (__v8di) __W,
492 (__mmask8) __U,
493 _MM_FROUND_CUR_DIRECTION);
494}
495
496static __inline__ __m512i __DEFAULT_FN_ATTRS
497_mm512_maskz_cvttpd_epu64 (__mmask8 __U, __m512d __A) {
498 return (__m512i) __builtin_ia32_cvttpd2uqq512_mask ((__v8df) __A,
499 (__v8di) _mm512_setzero_si512(),
500 (__mmask8) __U,
501 _MM_FROUND_CUR_DIRECTION);
502}
503
Craig Topper41ad25a2016-05-17 04:41:36 +0000504#define _mm512_cvtt_roundpd_epu64(A, R) __extension__ ({ \
505 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
506 (__v8di)_mm512_setzero_si512(), \
507 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000508
Craig Topper41ad25a2016-05-17 04:41:36 +0000509#define _mm512_mask_cvtt_roundpd_epu64(W, U, A, R) __extension__ ({ \
510 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
511 (__v8di)(__m512i)(W), \
512 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000513
Craig Topper41ad25a2016-05-17 04:41:36 +0000514#define _mm512_maskz_cvtt_roundpd_epu64(U, A, R) __extension__ ({ \
515 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
516 (__v8di)_mm512_setzero_si512(), \
517 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000518
519static __inline__ __m512i __DEFAULT_FN_ATTRS
520_mm512_cvttps_epi64 (__m256 __A) {
521 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
522 (__v8di) _mm512_setzero_si512(),
523 (__mmask8) -1,
524 _MM_FROUND_CUR_DIRECTION);
525}
526
527static __inline__ __m512i __DEFAULT_FN_ATTRS
528_mm512_mask_cvttps_epi64 (__m512i __W, __mmask8 __U, __m256 __A) {
529 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
530 (__v8di) __W,
531 (__mmask8) __U,
532 _MM_FROUND_CUR_DIRECTION);
533}
534
535static __inline__ __m512i __DEFAULT_FN_ATTRS
536_mm512_maskz_cvttps_epi64 (__mmask8 __U, __m256 __A) {
537 return (__m512i) __builtin_ia32_cvttps2qq512_mask ((__v8sf) __A,
538 (__v8di) _mm512_setzero_si512(),
539 (__mmask8) __U,
540 _MM_FROUND_CUR_DIRECTION);
541}
542
Craig Topper41ad25a2016-05-17 04:41:36 +0000543#define _mm512_cvtt_roundps_epi64(A, R) __extension__ ({ \
544 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
545 (__v8di)_mm512_setzero_si512(), \
546 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000547
Craig Topper41ad25a2016-05-17 04:41:36 +0000548#define _mm512_mask_cvtt_roundps_epi64(W, U, A, R) __extension__ ({ \
549 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
550 (__v8di)(__m512i)(W), \
551 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000552
Craig Topper41ad25a2016-05-17 04:41:36 +0000553#define _mm512_maskz_cvtt_roundps_epi64(U, A, R) __extension__ ({ \
554 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
555 (__v8di)_mm512_setzero_si512(), \
556 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000557
558static __inline__ __m512i __DEFAULT_FN_ATTRS
559_mm512_cvttps_epu64 (__m256 __A) {
560 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
561 (__v8di) _mm512_setzero_si512(),
562 (__mmask8) -1,
563 _MM_FROUND_CUR_DIRECTION);
564}
565
566static __inline__ __m512i __DEFAULT_FN_ATTRS
567_mm512_mask_cvttps_epu64 (__m512i __W, __mmask8 __U, __m256 __A) {
568 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
569 (__v8di) __W,
570 (__mmask8) __U,
571 _MM_FROUND_CUR_DIRECTION);
572}
573
574static __inline__ __m512i __DEFAULT_FN_ATTRS
575_mm512_maskz_cvttps_epu64 (__mmask8 __U, __m256 __A) {
576 return (__m512i) __builtin_ia32_cvttps2uqq512_mask ((__v8sf) __A,
577 (__v8di) _mm512_setzero_si512(),
578 (__mmask8) __U,
579 _MM_FROUND_CUR_DIRECTION);
580}
581
Craig Topper41ad25a2016-05-17 04:41:36 +0000582#define _mm512_cvtt_roundps_epu64(A, R) __extension__ ({ \
583 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
584 (__v8di)_mm512_setzero_si512(), \
585 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000586
Craig Topper41ad25a2016-05-17 04:41:36 +0000587#define _mm512_mask_cvtt_roundps_epu64(W, U, A, R) __extension__ ({ \
588 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
589 (__v8di)(__m512i)(W), \
590 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000591
Craig Topper41ad25a2016-05-17 04:41:36 +0000592#define _mm512_maskz_cvtt_roundps_epu64(U, A, R) __extension__ ({ \
593 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
594 (__v8di)_mm512_setzero_si512(), \
595 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000596
597static __inline__ __m512d __DEFAULT_FN_ATTRS
598_mm512_cvtepu64_pd (__m512i __A) {
599 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
600 (__v8df) _mm512_setzero_pd(),
601 (__mmask8) -1,
602 _MM_FROUND_CUR_DIRECTION);
603}
604
605static __inline__ __m512d __DEFAULT_FN_ATTRS
606_mm512_mask_cvtepu64_pd (__m512d __W, __mmask8 __U, __m512i __A) {
607 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
608 (__v8df) __W,
609 (__mmask8) __U,
610 _MM_FROUND_CUR_DIRECTION);
611}
612
613static __inline__ __m512d __DEFAULT_FN_ATTRS
614_mm512_maskz_cvtepu64_pd (__mmask8 __U, __m512i __A) {
615 return (__m512d) __builtin_ia32_cvtuqq2pd512_mask ((__v8di) __A,
616 (__v8df) _mm512_setzero_pd(),
617 (__mmask8) __U,
618 _MM_FROUND_CUR_DIRECTION);
619}
620
Craig Topper41ad25a2016-05-17 04:41:36 +0000621#define _mm512_cvt_roundepu64_pd(A, R) __extension__ ({ \
622 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
623 (__v8df)_mm512_setzero_pd(), \
624 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000625
Craig Topper41ad25a2016-05-17 04:41:36 +0000626#define _mm512_mask_cvt_roundepu64_pd(W, U, A, R) __extension__ ({ \
627 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
628 (__v8df)(__m512d)(W), \
629 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000630
631
Craig Topper41ad25a2016-05-17 04:41:36 +0000632#define _mm512_maskz_cvt_roundepu64_pd(U, A, R) __extension__ ({ \
633 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
634 (__v8df)_mm512_setzero_pd(), \
635 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000636
637
638static __inline__ __m256 __DEFAULT_FN_ATTRS
639_mm512_cvtepu64_ps (__m512i __A) {
640 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
641 (__v8sf) _mm256_setzero_ps(),
642 (__mmask8) -1,
643 _MM_FROUND_CUR_DIRECTION);
644}
645
646static __inline__ __m256 __DEFAULT_FN_ATTRS
647_mm512_mask_cvtepu64_ps (__m256 __W, __mmask8 __U, __m512i __A) {
648 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
649 (__v8sf) __W,
650 (__mmask8) __U,
651 _MM_FROUND_CUR_DIRECTION);
652}
653
654static __inline__ __m256 __DEFAULT_FN_ATTRS
655_mm512_maskz_cvtepu64_ps (__mmask8 __U, __m512i __A) {
656 return (__m256) __builtin_ia32_cvtuqq2ps512_mask ((__v8di) __A,
657 (__v8sf) _mm256_setzero_ps(),
658 (__mmask8) __U,
659 _MM_FROUND_CUR_DIRECTION);
660}
661
Craig Topper41ad25a2016-05-17 04:41:36 +0000662#define _mm512_cvt_roundepu64_ps(A, R) __extension__ ({ \
663 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
664 (__v8sf)_mm256_setzero_ps(), \
665 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000666
Craig Topper41ad25a2016-05-17 04:41:36 +0000667#define _mm512_mask_cvt_roundepu64_ps(W, U, A, R) __extension__ ({ \
668 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
669 (__v8sf)(__m256)(W), (__mmask8)(U), \
670 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000671
Craig Topper41ad25a2016-05-17 04:41:36 +0000672#define _mm512_maskz_cvt_roundepu64_ps(U, A, R) __extension__ ({ \
673 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
674 (__v8sf)_mm256_setzero_ps(), \
675 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000676
Craig Topper41ad25a2016-05-17 04:41:36 +0000677#define _mm512_range_pd(A, B, C) __extension__ ({ \
678 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
679 (__v8df)(__m512d)(B), (int)(C), \
680 (__v8df)_mm512_setzero_pd(), \
681 (__mmask8)-1, \
682 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000683
Craig Topper41ad25a2016-05-17 04:41:36 +0000684#define _mm512_mask_range_pd(W, U, A, B, C) __extension__ ({ \
685 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
686 (__v8df)(__m512d)(B), (int)(C), \
687 (__v8df)(__m512d)(W), (__mmask8)(U), \
688 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000689
Craig Topper41ad25a2016-05-17 04:41:36 +0000690#define _mm512_maskz_range_pd(U, A, B, C) __extension__ ({ \
691 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
692 (__v8df)(__m512d)(B), (int)(C), \
693 (__v8df)_mm512_setzero_pd(), \
694 (__mmask8)(U), \
695 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000696
Craig Topper41ad25a2016-05-17 04:41:36 +0000697#define _mm512_range_round_pd(A, B, C, R) __extension__ ({ \
698 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
699 (__v8df)(__m512d)(B), (int)(C), \
700 (__v8df)_mm512_setzero_pd(), \
701 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000702
Craig Topper41ad25a2016-05-17 04:41:36 +0000703#define _mm512_mask_range_round_pd(W, U, A, B, C, R) __extension__ ({ \
704 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
705 (__v8df)(__m512d)(B), (int)(C), \
706 (__v8df)(__m512d)(W), (__mmask8)(U), \
707 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000708
Craig Topper41ad25a2016-05-17 04:41:36 +0000709#define _mm512_maskz_range_round_pd(U, A, B, C, R) __extension__ ({ \
710 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
711 (__v8df)(__m512d)(B), (int)(C), \
712 (__v8df)_mm512_setzero_pd(), \
713 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000714
Craig Topper41ad25a2016-05-17 04:41:36 +0000715#define _mm512_range_ps(A, B, C) __extension__ ({ \
716 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
717 (__v16sf)(__m512)(B), (int)(C), \
718 (__v16sf)_mm512_setzero_ps(), \
719 (__mmask16)-1, \
720 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000721
Craig Topper41ad25a2016-05-17 04:41:36 +0000722#define _mm512_mask_range_ps(W, U, A, B, C) __extension__ ({ \
723 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
724 (__v16sf)(__m512)(B), (int)(C), \
725 (__v16sf)(__m512)(W), (__mmask16)(U), \
726 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000727
Craig Topper41ad25a2016-05-17 04:41:36 +0000728#define _mm512_maskz_range_ps(U, A, B, C) __extension__ ({ \
729 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
730 (__v16sf)(__m512)(B), (int)(C), \
731 (__v16sf)_mm512_setzero_ps(), \
732 (__mmask16)(U), \
733 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000734
Craig Topper41ad25a2016-05-17 04:41:36 +0000735#define _mm512_range_round_ps(A, B, C, R) __extension__ ({ \
736 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
737 (__v16sf)(__m512)(B), (int)(C), \
738 (__v16sf)_mm512_setzero_ps(), \
739 (__mmask16)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000740
Craig Topper41ad25a2016-05-17 04:41:36 +0000741#define _mm512_mask_range_round_ps(W, U, A, B, C, R) __extension__ ({ \
742 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
743 (__v16sf)(__m512)(B), (int)(C), \
744 (__v16sf)(__m512)(W), (__mmask16)(U), \
745 (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000746
Craig Topper41ad25a2016-05-17 04:41:36 +0000747#define _mm512_maskz_range_round_ps(U, A, B, C, R) __extension__ ({ \
748 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
749 (__v16sf)(__m512)(B), (int)(C), \
750 (__v16sf)_mm512_setzero_ps(), \
751 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000752
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000753#define _mm_range_round_ss(A, B, C, R) __extension__ ({ \
754 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
755 (__v4sf)(__m128)(B), \
756 (__v4sf)_mm_setzero_ps(), \
757 (__mmask8) -1, (int)(C),\
758 (int)(R)); })
759
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000760#define _mm_range_ss(A ,B , C) _mm_range_round_ss(A, B, C ,_MM_FROUND_CUR_DIRECTION)
761
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000762#define _mm_mask_range_round_ss(W, U, A, B, C, R) __extension__ ({ \
763 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
764 (__v4sf)(__m128)(B), \
765 (__v4sf)(__m128)(W),\
766 (__mmask8)(U), (int)(C),\
767 (int)(R)); })
768
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000769#define _mm_mask_range_ss(W , U, A, B, C) _mm_mask_range_round_ss(W, U, A, B, C , _MM_FROUND_CUR_DIRECTION)
770
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000771#define _mm_maskz_range_round_ss(U, A, B, C, R) __extension__ ({ \
772 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
773 (__v4sf)(__m128)(B), \
774 (__v4sf)_mm_setzero_ps(), \
775 (__mmask8)(U), (int)(C),\
776 (int)(R)); })
777
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000778#define _mm_maskz_range_ss(U, A ,B , C) _mm_maskz_range_round_ss(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
779
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000780#define _mm_range_round_sd(A, B, C, R) __extension__ ({ \
781 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
782 (__v2df)(__m128d)(B), \
783 (__v2df)_mm_setzero_pd(), \
784 (__mmask8) -1, (int)(C),\
785 (int)(R)); })
786
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000787#define _mm_range_sd(A ,B , C) _mm_range_round_sd(A, B, C ,_MM_FROUND_CUR_DIRECTION)
788
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000789#define _mm_mask_range_round_sd(W, U, A, B, C, R) __extension__ ({ \
790 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
791 (__v2df)(__m128d)(B), \
792 (__v2df)(__m128d)(W),\
793 (__mmask8)(U), (int)(C),\
794 (int)(R)); })
795
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000796#define _mm_mask_range_sd(W, U, A, B, C) _mm_mask_range_round_sd(W, U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
797
Michael Zuckermanc4ae8532016-06-08 08:19:27 +0000798#define _mm_maskz_range_round_sd(U, A, B, C, R) __extension__ ({ \
799 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
800 (__v2df)(__m128d)(B), \
801 (__v2df)_mm_setzero_pd(), \
802 (__mmask8)(U), (int)(C),\
803 (int)(R)); })
804
Michael Zuckerman3f316ab2016-06-30 08:05:46 +0000805#define _mm_maskz_range_sd(U, A, B, C) _mm_maskz_range_round_sd(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
806
Craig Topper41ad25a2016-05-17 04:41:36 +0000807#define _mm512_reduce_pd(A, B) __extension__ ({ \
808 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
809 (__v8df)_mm512_setzero_pd(), \
810 (__mmask8)-1, \
811 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000812
Craig Topper41ad25a2016-05-17 04:41:36 +0000813#define _mm512_mask_reduce_pd(W, U, A, B) __extension__ ({ \
814 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
815 (__v8df)(__m512d)(W), \
816 (__mmask8)(U), \
817 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000818
Craig Topper41ad25a2016-05-17 04:41:36 +0000819#define _mm512_maskz_reduce_pd(U, A, B) __extension__ ({ \
820 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
821 (__v8df)_mm512_setzero_pd(), \
822 (__mmask8)(U), \
823 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000824
Craig Topper41ad25a2016-05-17 04:41:36 +0000825#define _mm512_reduce_ps(A, B) __extension__ ({ \
826 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
827 (__v16sf)_mm512_setzero_ps(), \
828 (__mmask16)-1, \
829 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000830
Craig Topper41ad25a2016-05-17 04:41:36 +0000831#define _mm512_mask_reduce_ps(W, U, A, B) __extension__ ({ \
832 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
833 (__v16sf)(__m512)(W), \
834 (__mmask16)(U), \
835 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000836
Craig Topper41ad25a2016-05-17 04:41:36 +0000837#define _mm512_maskz_reduce_ps(U, A, B) __extension__ ({ \
838 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
839 (__v16sf)_mm512_setzero_ps(), \
840 (__mmask16)(U), \
841 _MM_FROUND_CUR_DIRECTION); })
Asaf Badouh27180512015-09-17 14:53:37 +0000842
Craig Topper41ad25a2016-05-17 04:41:36 +0000843#define _mm512_reduce_round_pd(A, B, R) __extension__ ({\
844 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
845 (__v8df)_mm512_setzero_pd(), \
846 (__mmask8)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000847
Craig Topper41ad25a2016-05-17 04:41:36 +0000848#define _mm512_mask_reduce_round_pd(W, U, A, B, R) __extension__ ({\
849 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
850 (__v8df)(__m512d)(W), \
851 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000852
Craig Topper41ad25a2016-05-17 04:41:36 +0000853#define _mm512_maskz_reduce_round_pd(U, A, B, R) __extension__ ({\
854 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
855 (__v8df)_mm512_setzero_pd(), \
856 (__mmask8)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000857
Craig Topper41ad25a2016-05-17 04:41:36 +0000858#define _mm512_reduce_round_ps(A, B, R) __extension__ ({\
859 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
860 (__v16sf)_mm512_setzero_ps(), \
861 (__mmask16)-1, (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000862
Craig Topper41ad25a2016-05-17 04:41:36 +0000863#define _mm512_mask_reduce_round_ps(W, U, A, B, R) __extension__ ({\
864 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
865 (__v16sf)(__m512)(W), \
866 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000867
Craig Topper41ad25a2016-05-17 04:41:36 +0000868#define _mm512_maskz_reduce_round_ps(U, A, B, R) __extension__ ({\
869 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
870 (__v16sf)_mm512_setzero_ps(), \
871 (__mmask16)(U), (int)(R)); })
Asaf Badouh27180512015-09-17 14:53:37 +0000872
Michael Zuckerman96d03992016-06-07 14:00:20 +0000873#define _mm_reduce_ss(A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000874 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
875 (__v4sf)(__m128)(B), \
876 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
877 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000878
879#define _mm_mask_reduce_ss(W, U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000880 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
881 (__v4sf)(__m128)(B), \
882 (__v4sf)(__m128)(W), (__mmask8)(U), \
883 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000884
885#define _mm_maskz_reduce_ss(U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000886 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
887 (__v4sf)(__m128)(B), \
888 (__v4sf)_mm_setzero_ps(), \
889 (__mmask8)(U), (int)(C), \
890 _MM_FROUND_CUR_DIRECTION); })
891
Michael Zuckerman96d03992016-06-07 14:00:20 +0000892#define _mm_reduce_round_ss(A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000893 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
894 (__v4sf)(__m128)(B), \
895 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
896 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000897
898#define _mm_mask_reduce_round_ss(W, U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000899 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
900 (__v4sf)(__m128)(B), \
901 (__v4sf)(__m128)(W), (__mmask8)(U), \
902 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000903
904#define _mm_maskz_reduce_round_ss(U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000905 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
906 (__v4sf)(__m128)(B), \
907 (__v4sf)_mm_setzero_ps(), \
908 (__mmask8)(U), (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000909
910#define _mm_reduce_sd(A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000911 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
912 (__v2df)(__m128d)(B), \
913 (__v2df)_mm_setzero_pd(), \
914 (__mmask8)-1, (int)(C), \
915 _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000916
917#define _mm_mask_reduce_sd(W, U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000918 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
919 (__v2df)(__m128d)(B), \
920 (__v2df)(__m128d)(W), (__mmask8)(U), \
921 (int)(C), _MM_FROUND_CUR_DIRECTION); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000922
923#define _mm_maskz_reduce_sd(U, A, B, C) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000924 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
925 (__v2df)(__m128d)(B), \
926 (__v2df)_mm_setzero_pd(), \
927 (__mmask8)(U), (int)(C), \
928 _MM_FROUND_CUR_DIRECTION); })
929
Michael Zuckerman96d03992016-06-07 14:00:20 +0000930#define _mm_reduce_round_sd(A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000931 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
932 (__v2df)(__m128d)(B), \
933 (__v2df)_mm_setzero_pd(), \
934 (__mmask8)-1, (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000935
936#define _mm_mask_reduce_round_sd(W, U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000937 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
938 (__v2df)(__m128d)(B), \
939 (__v2df)(__m128d)(W), (__mmask8)(U), \
940 (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000941
942#define _mm_maskz_reduce_round_sd(U, A, B, C, R) __extension__ ({ \
Craig Topperf3efec62016-06-08 06:08:07 +0000943 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
944 (__v2df)(__m128d)(B), \
945 (__v2df)_mm_setzero_pd(), \
946 (__mmask8)(U), (int)(C), (int)(R)); })
Michael Zuckerman96d03992016-06-07 14:00:20 +0000947
Michael Zuckerman074edd72016-04-13 10:49:37 +0000948static __inline__ __mmask16 __DEFAULT_FN_ATTRS
949_mm512_movepi32_mask (__m512i __A)
950{
951 return (__mmask16) __builtin_ia32_cvtd2mask512 ((__v16si) __A);
952}
953
954static __inline__ __m512i __DEFAULT_FN_ATTRS
955_mm512_movm_epi32 (__mmask16 __A)
956{
957 return (__m512i) __builtin_ia32_cvtmask2d512 (__A);
958}
959
960static __inline__ __m512i __DEFAULT_FN_ATTRS
961_mm512_movm_epi64 (__mmask8 __A)
962{
963 return (__m512i) __builtin_ia32_cvtmask2q512 (__A);
964}
965
966static __inline__ __mmask8 __DEFAULT_FN_ATTRS
967_mm512_movepi64_mask (__m512i __A)
968{
969 return (__mmask8) __builtin_ia32_cvtq2mask512 ((__v8di) __A);
970}
971
972
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000973static __inline__ __m512 __DEFAULT_FN_ATTRS
974_mm512_broadcast_f32x2 (__m128 __A)
975{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000976 return (__m512)__builtin_shufflevector((__v4sf)__A,
977 (__v4sf)_mm_undefined_ps(),
978 0, 1, 0, 1, 0, 1, 0, 1,
979 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000980}
981
982static __inline__ __m512 __DEFAULT_FN_ATTRS
983_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
984{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000985 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
986 (__v16sf)_mm512_broadcast_f32x2(__A),
987 (__v16sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000988}
989
990static __inline__ __m512 __DEFAULT_FN_ATTRS
991_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
992{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000993 return (__m512)__builtin_ia32_selectps_512((__mmask16)__M,
994 (__v16sf)_mm512_broadcast_f32x2(__A),
995 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000996}
997
998static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +0000999_mm512_broadcast_f32x8(__m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001000{
Craig Topper367c86d2017-01-18 02:17:10 +00001001 return (__m512)__builtin_shufflevector((__v8sf)__A, (__v8sf)__A,
1002 0, 1, 2, 3, 4, 5, 6, 7,
1003 0, 1, 2, 3, 4, 5, 6, 7);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001004}
1005
1006static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001007_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, __m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001008{
Craig Topper367c86d2017-01-18 02:17:10 +00001009 return (__m512)__builtin_ia32_selectps_512((__mmask8)__M,
1010 (__v16sf)_mm512_broadcast_f32x8(__A),
1011 (__v16sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001012}
1013
1014static __inline__ __m512 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001015_mm512_maskz_broadcast_f32x8(__mmask16 __M, __m256 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001016{
Craig Topper367c86d2017-01-18 02:17:10 +00001017 return (__m512)__builtin_ia32_selectps_512((__mmask8)__M,
1018 (__v16sf)_mm512_broadcast_f32x8(__A),
1019 (__v16sf)_mm512_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001020}
1021
1022static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001023_mm512_broadcast_f64x2(__m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001024{
Craig Topper367c86d2017-01-18 02:17:10 +00001025 return (__m512d)__builtin_shufflevector((__v2df)__A, (__v2df)__A,
1026 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001027}
1028
1029static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001030_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001031{
Craig Topper367c86d2017-01-18 02:17:10 +00001032 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1033 (__v8df)_mm512_broadcast_f64x2(__A),
1034 (__v8df)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001035}
1036
1037static __inline__ __m512d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001038_mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001039{
Craig Topper367c86d2017-01-18 02:17:10 +00001040 return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1041 (__v8df)_mm512_broadcast_f64x2(__A),
1042 (__v8df)_mm512_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001043}
1044
1045static __inline__ __m512i __DEFAULT_FN_ATTRS
1046_mm512_broadcast_i32x2 (__m128i __A)
1047{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001048 return (__m512i)__builtin_shufflevector((__v4si)__A,
1049 (__v4si)_mm_undefined_si128(),
1050 0, 1, 0, 1, 0, 1, 0, 1,
1051 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001052}
1053
1054static __inline__ __m512i __DEFAULT_FN_ATTRS
1055_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1056{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001057 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1058 (__v16si)_mm512_broadcast_i32x2(__A),
1059 (__v16si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001060}
1061
1062static __inline__ __m512i __DEFAULT_FN_ATTRS
1063_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1064{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001065 return (__m512i)__builtin_ia32_selectd_512((__mmask16)__M,
1066 (__v16si)_mm512_broadcast_i32x2(__A),
1067 (__v16si)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001068}
1069
1070static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001071_mm512_broadcast_i32x8(__m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001072{
Craig Topper367c86d2017-01-18 02:17:10 +00001073 return (__m512i)__builtin_shufflevector((__v8si)__A, (__v8si)__A,
1074 0, 1, 2, 3, 4, 5, 6, 7,
1075 0, 1, 2, 3, 4, 5, 6, 7);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001076}
1077
1078static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001079_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001080{
Craig Topper367c86d2017-01-18 02:17:10 +00001081 return (__m512i)__builtin_ia32_selectd_512((__mmask8)__M,
1082 (__v16si)_mm512_broadcast_i32x8(__A),
1083 (__v16si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001084}
1085
1086static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001087_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001088{
Craig Topper367c86d2017-01-18 02:17:10 +00001089 return (__m512i)__builtin_ia32_selectd_512((__mmask8)__M,
1090 (__v16si)_mm512_broadcast_i32x8(__A),
1091 (__v16si)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001092}
1093
1094static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001095_mm512_broadcast_i64x2(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001096{
Craig Topper367c86d2017-01-18 02:17:10 +00001097 return (__m512i)__builtin_shufflevector((__v2di)__A, (__v2di)__A,
1098 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001099}
1100
1101static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001102_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001103{
Craig Topper367c86d2017-01-18 02:17:10 +00001104 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1105 (__v8di)_mm512_broadcast_i64x2(__A),
1106 (__v8di)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001107}
1108
1109static __inline__ __m512i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001110_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001111{
Craig Topper367c86d2017-01-18 02:17:10 +00001112 return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1113 (__v8di)_mm512_broadcast_i64x2(__A),
1114 (__v8di)_mm512_setzero_si512());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001115}
1116
Craig Topper41ad25a2016-05-17 04:41:36 +00001117#define _mm512_extractf32x8_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001118 (__m256)__builtin_shufflevector((__v16sf)(__m512)(A), \
1119 (__v16sf)_mm512_undefined_ps(), \
1120 ((imm) & 1) ? 8 : 0, \
1121 ((imm) & 1) ? 9 : 1, \
1122 ((imm) & 1) ? 10 : 2, \
1123 ((imm) & 1) ? 11 : 3, \
1124 ((imm) & 1) ? 12 : 4, \
1125 ((imm) & 1) ? 13 : 5, \
1126 ((imm) & 1) ? 14 : 6, \
1127 ((imm) & 1) ? 15 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001128
Craig Topper41ad25a2016-05-17 04:41:36 +00001129#define _mm512_mask_extractf32x8_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001130 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
1131 (__v8sf)_mm512_extractf32x8_ps((A), (imm)), \
1132 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001133
Craig Topper41ad25a2016-05-17 04:41:36 +00001134#define _mm512_maskz_extractf32x8_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001135 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
1136 (__v8sf)_mm512_extractf32x8_ps((A), (imm)), \
1137 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001138
Craig Topper41ad25a2016-05-17 04:41:36 +00001139#define _mm512_extractf64x2_pd(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001140 (__m128d)__builtin_shufflevector((__v8df)(__m512d)(A), \
1141 (__v8df)_mm512_undefined_pd(), \
1142 0 + ((imm) & 0x3) * 2, \
1143 1 + ((imm) & 0x3) * 2); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001144
Craig Topper41ad25a2016-05-17 04:41:36 +00001145#define _mm512_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001146 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1147 (__v2df)_mm512_extractf64x2_pd((A), (imm)), \
1148 (__v2df)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001149
Craig Topper41ad25a2016-05-17 04:41:36 +00001150#define _mm512_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001151 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1152 (__v2df)_mm512_extractf64x2_pd((A), (imm)), \
1153 (__v2df)_mm_setzero_pd()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001154
Craig Topper41ad25a2016-05-17 04:41:36 +00001155#define _mm512_extracti32x8_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001156 (__m256i)__builtin_shufflevector((__v16si)(__m512i)(A), \
1157 (__v16si)_mm512_undefined_epi32(), \
1158 ((imm) & 1) ? 8 : 0, \
1159 ((imm) & 1) ? 9 : 1, \
1160 ((imm) & 1) ? 10 : 2, \
1161 ((imm) & 1) ? 11 : 3, \
1162 ((imm) & 1) ? 12 : 4, \
1163 ((imm) & 1) ? 13 : 5, \
1164 ((imm) & 1) ? 14 : 6, \
1165 ((imm) & 1) ? 15 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001166
Craig Topper41ad25a2016-05-17 04:41:36 +00001167#define _mm512_mask_extracti32x8_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001168 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
1169 (__v8si)_mm512_extracti32x8_epi32((A), (imm)), \
1170 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001171
Craig Topper41ad25a2016-05-17 04:41:36 +00001172#define _mm512_maskz_extracti32x8_epi32(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001173 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
1174 (__v8si)_mm512_extracti32x8_epi32((A), (imm)), \
1175 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001176
Craig Topper41ad25a2016-05-17 04:41:36 +00001177#define _mm512_extracti64x2_epi64(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001178 (__m128i)__builtin_shufflevector((__v8di)(__m512i)(A), \
1179 (__v8di)_mm512_undefined_epi32(), \
1180 0 + ((imm) & 0x3) * 2, \
1181 1 + ((imm) & 0x3) * 2); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001182
Craig Topper41ad25a2016-05-17 04:41:36 +00001183#define _mm512_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001184 (__m128d)__builtin_ia32_selectq_128((__mmask8)(U), \
1185 (__v2di)_mm512_extracti64x2_epi64((A), (imm)), \
1186 (__v2di)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001187
Craig Topper41ad25a2016-05-17 04:41:36 +00001188#define _mm512_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00001189 (__m128d)__builtin_ia32_selectq_128((__mmask8)(U), \
1190 (__v2di)_mm512_extracti64x2_epi64((A), (imm)), \
1191 (__v2di)_mm_setzero_di()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001192
Craig Topperf3efec62016-06-08 06:08:07 +00001193#define _mm512_insertf32x8(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001194 (__m512)__builtin_shufflevector((__v16sf)(__m512)(A), \
1195 (__v16sf)_mm512_castps256_ps512((__m256)(B)),\
1196 ((imm) & 0x1) ? 0 : 16, \
1197 ((imm) & 0x1) ? 1 : 17, \
1198 ((imm) & 0x1) ? 2 : 18, \
1199 ((imm) & 0x1) ? 3 : 19, \
1200 ((imm) & 0x1) ? 4 : 20, \
1201 ((imm) & 0x1) ? 5 : 21, \
1202 ((imm) & 0x1) ? 6 : 22, \
1203 ((imm) & 0x1) ? 7 : 23, \
1204 ((imm) & 0x1) ? 16 : 8, \
1205 ((imm) & 0x1) ? 17 : 9, \
1206 ((imm) & 0x1) ? 18 : 10, \
1207 ((imm) & 0x1) ? 19 : 11, \
1208 ((imm) & 0x1) ? 20 : 12, \
1209 ((imm) & 0x1) ? 21 : 13, \
1210 ((imm) & 0x1) ? 22 : 14, \
1211 ((imm) & 0x1) ? 23 : 15); })
Craig Topperdca1f232016-05-15 21:26:20 +00001212
Craig Topperf3efec62016-06-08 06:08:07 +00001213#define _mm512_mask_insertf32x8(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001214 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1215 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
1216 (__v16sf)(W)); })
Craig Topperdca1f232016-05-15 21:26:20 +00001217
Craig Topperf3efec62016-06-08 06:08:07 +00001218#define _mm512_maskz_insertf32x8(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001219 (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1220 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
1221 (__v16sf)_mm512_setzero_ps()); })
Craig Topperdca1f232016-05-15 21:26:20 +00001222
Craig Topper41ad25a2016-05-17 04:41:36 +00001223#define _mm512_insertf64x2(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001224 (__m512d)__builtin_shufflevector((__v8df)(__m512d)(A), \
1225 (__v8df)_mm512_castpd128_pd512((__m128d)(B)),\
1226 (((imm) & 0x3) == 0) ? 8 : 0, \
1227 (((imm) & 0x3) == 0) ? 9 : 1, \
1228 (((imm) & 0x3) == 1) ? 8 : 2, \
1229 (((imm) & 0x3) == 1) ? 9 : 3, \
1230 (((imm) & 0x3) == 2) ? 8 : 4, \
1231 (((imm) & 0x3) == 2) ? 9 : 5, \
1232 (((imm) & 0x3) == 3) ? 8 : 6, \
1233 (((imm) & 0x3) == 3) ? 9 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001234
Craig Topper41ad25a2016-05-17 04:41:36 +00001235#define _mm512_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001236 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1237 (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
1238 (__v8df)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001239
Craig Topper41ad25a2016-05-17 04:41:36 +00001240#define _mm512_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001241 (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1242 (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
1243 (__v8df)_mm512_setzero_pd()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001244
Craig Topper41ad25a2016-05-17 04:41:36 +00001245#define _mm512_inserti32x8(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001246 (__m512i)__builtin_shufflevector((__v16si)(__m512i)(A), \
1247 (__v16si)_mm512_castsi256_si512((__m256i)(B)),\
1248 ((imm) & 0x1) ? 0 : 16, \
1249 ((imm) & 0x1) ? 1 : 17, \
1250 ((imm) & 0x1) ? 2 : 18, \
1251 ((imm) & 0x1) ? 3 : 19, \
1252 ((imm) & 0x1) ? 4 : 20, \
1253 ((imm) & 0x1) ? 5 : 21, \
1254 ((imm) & 0x1) ? 6 : 22, \
1255 ((imm) & 0x1) ? 7 : 23, \
1256 ((imm) & 0x1) ? 16 : 8, \
1257 ((imm) & 0x1) ? 17 : 9, \
1258 ((imm) & 0x1) ? 18 : 10, \
1259 ((imm) & 0x1) ? 19 : 11, \
1260 ((imm) & 0x1) ? 20 : 12, \
1261 ((imm) & 0x1) ? 21 : 13, \
1262 ((imm) & 0x1) ? 22 : 14, \
1263 ((imm) & 0x1) ? 23 : 15); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001264
Craig Topper41ad25a2016-05-17 04:41:36 +00001265#define _mm512_mask_inserti32x8(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001266 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1267 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
1268 (__v16si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001269
Craig Topper41ad25a2016-05-17 04:41:36 +00001270#define _mm512_maskz_inserti32x8(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001271 (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1272 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
1273 (__v16si)_mm512_setzero_si512()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001274
Craig Topper41ad25a2016-05-17 04:41:36 +00001275#define _mm512_inserti64x2(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001276 (__m512i)__builtin_shufflevector((__v8di)(__m512i)(A), \
1277 (__v8di)_mm512_castsi128_si512((__m128i)(B)),\
1278 (((imm) & 0x3) == 0) ? 8 : 0, \
1279 (((imm) & 0x3) == 0) ? 9 : 1, \
1280 (((imm) & 0x3) == 1) ? 8 : 2, \
1281 (((imm) & 0x3) == 1) ? 9 : 3, \
1282 (((imm) & 0x3) == 2) ? 8 : 4, \
1283 (((imm) & 0x3) == 2) ? 9 : 5, \
1284 (((imm) & 0x3) == 3) ? 8 : 6, \
1285 (((imm) & 0x3) == 3) ? 9 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001286
Craig Topper41ad25a2016-05-17 04:41:36 +00001287#define _mm512_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001288 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1289 (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
1290 (__v8di)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001291
Craig Topper41ad25a2016-05-17 04:41:36 +00001292#define _mm512_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00001293 (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1294 (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
1295 (__v8di)_mm512_setzero_si512()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001296
Craig Topper41ad25a2016-05-17 04:41:36 +00001297#define _mm512_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1298 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
Craig Topperf3efec62016-06-08 06:08:07 +00001299 (int)(imm), (__mmask16)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001300
Craig Topper41ad25a2016-05-17 04:41:36 +00001301#define _mm512_fpclass_ps_mask(A, imm) __extension__ ({ \
1302 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1303 (int)(imm), (__mmask16)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001304
Craig Topper41ad25a2016-05-17 04:41:36 +00001305#define _mm512_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1306 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1307 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001308
Craig Topper41ad25a2016-05-17 04:41:36 +00001309#define _mm512_fpclass_pd_mask(A, imm) __extension__ ({ \
1310 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1311 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001312
Craig Topper41ad25a2016-05-17 04:41:36 +00001313#define _mm_fpclass_sd_mask(A, imm) __extension__ ({ \
1314 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1315 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001316
Craig Topper41ad25a2016-05-17 04:41:36 +00001317#define _mm_mask_fpclass_sd_mask(U, A, imm) __extension__ ({ \
1318 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1319 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001320
Craig Topper41ad25a2016-05-17 04:41:36 +00001321#define _mm_fpclass_ss_mask(A, imm) __extension__ ({ \
1322 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1323 (__mmask8)-1); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001324
Craig Topper41ad25a2016-05-17 04:41:36 +00001325#define _mm_mask_fpclass_ss_mask(U, A, imm) __extension__ ({ \
1326 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1327 (__mmask8)(U)); })
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001328
Michael Kupersteine45af542015-06-30 13:36:19 +00001329#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00001330
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001331#endif