1/*===---- 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
31/* Define the default attributes for the functions in this file. */
32#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
33
34static __inline__ __m512i __DEFAULT_FN_ATTRS
35_mm512_mullo_epi64 (__m512i __A, __m512i __B) {
36  return (__m512i) ((__v8du) __A * (__v8du) __B);
37}
38
39static __inline__ __m512i __DEFAULT_FN_ATTRS
40_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);
44}
45
46static __inline__ __m512i __DEFAULT_FN_ATTRS
47_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());
51}
52
53static __inline__ __m512d __DEFAULT_FN_ATTRS
54_mm512_xor_pd(__m512d __A, __m512d __B) {
55  return (__m512d)((__v8du)__A ^ (__v8du)__B);
56}
57
58static __inline__ __m512d __DEFAULT_FN_ATTRS
59_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);
63}
64
65static __inline__ __m512d __DEFAULT_FN_ATTRS
66_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());
70}
71
72static __inline__ __m512 __DEFAULT_FN_ATTRS
73_mm512_xor_ps (__m512 __A, __m512 __B) {
74  return (__m512)((__v16su)__A ^ (__v16su)__B);
75}
76
77static __inline__ __m512 __DEFAULT_FN_ATTRS
78_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);
82}
83
84static __inline__ __m512 __DEFAULT_FN_ATTRS
85_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());
89}
90
91static __inline__ __m512d __DEFAULT_FN_ATTRS
92_mm512_or_pd(__m512d __A, __m512d __B) {
93  return (__m512d)((__v8du)__A | (__v8du)__B);
94}
95
96static __inline__ __m512d __DEFAULT_FN_ATTRS
97_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);
101}
102
103static __inline__ __m512d __DEFAULT_FN_ATTRS
104_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());
108}
109
110static __inline__ __m512 __DEFAULT_FN_ATTRS
111_mm512_or_ps(__m512 __A, __m512 __B) {
112  return (__m512)((__v16su)__A | (__v16su)__B);
113}
114
115static __inline__ __m512 __DEFAULT_FN_ATTRS
116_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);
120}
121
122static __inline__ __m512 __DEFAULT_FN_ATTRS
123_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());
127}
128
129static __inline__ __m512d __DEFAULT_FN_ATTRS
130_mm512_and_pd(__m512d __A, __m512d __B) {
131  return (__m512d)((__v8du)__A & (__v8du)__B);
132}
133
134static __inline__ __m512d __DEFAULT_FN_ATTRS
135_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);
139}
140
141static __inline__ __m512d __DEFAULT_FN_ATTRS
142_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());
146}
147
148static __inline__ __m512 __DEFAULT_FN_ATTRS
149_mm512_and_ps(__m512 __A, __m512 __B) {
150  return (__m512)((__v16su)__A & (__v16su)__B);
151}
152
153static __inline__ __m512 __DEFAULT_FN_ATTRS
154_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);
158}
159
160static __inline__ __m512 __DEFAULT_FN_ATTRS
161_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());
165}
166
167static __inline__ __m512d __DEFAULT_FN_ATTRS
168_mm512_andnot_pd(__m512d __A, __m512d __B) {
169  return (__m512d)(~(__v8du)__A & (__v8du)__B);
170}
171
172static __inline__ __m512d __DEFAULT_FN_ATTRS
173_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);
177}
178
179static __inline__ __m512d __DEFAULT_FN_ATTRS
180_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());
184}
185
186static __inline__ __m512 __DEFAULT_FN_ATTRS
187_mm512_andnot_ps(__m512 __A, __m512 __B) {
188  return (__m512)(~(__v16su)__A & (__v16su)__B);
189}
190
191static __inline__ __m512 __DEFAULT_FN_ATTRS
192_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);
196}
197
198static __inline__ __m512 __DEFAULT_FN_ATTRS
199_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());
203}
204
205static __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
229#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)); })
233
234#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)); })
238
239#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)); })
243
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
268#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)); })
272
273#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)); })
277
278#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)); })
282
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
307#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)); })
311
312#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)); })
316
317#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)); })
321
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
346#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)); })
350
351#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)); })
355
356#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)); })
360
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
386#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)); })
390
391#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)); })
395
396#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)); })
400
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
425#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)); })
429
430#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)); })
434
435#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)); })
439
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
465#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)); })
469
470#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)); })
474
475#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)); })
479
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
504#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)); })
508
509#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)); })
513
514#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)); })
518
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
543#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)); })
547
548#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)); })
552
553#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)); })
557
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
582#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)); })
586
587#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)); })
591
592#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)); })
596
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
621#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)); })
625
626#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)); })
630
631
632#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)); })
636
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
662#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)); })
666
667#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)); })
671
672#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)); })
676
677#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); })
683
684#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); })
689
690#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); })
696
697#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)); })
702
703#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)); })
708
709#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)); })
714
715#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); })
721
722#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); })
727
728#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); })
734
735#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)); })
740
741#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)); })
746
747#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)); })
752
753#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
760#define _mm_range_ss(A ,B , C) _mm_range_round_ss(A, B, C ,_MM_FROUND_CUR_DIRECTION)
761
762#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
769#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
771#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
778#define _mm_maskz_range_ss(U, A ,B , C) _mm_maskz_range_round_ss(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
779
780#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
787#define _mm_range_sd(A ,B , C) _mm_range_round_sd(A, B, C ,_MM_FROUND_CUR_DIRECTION)
788
789#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
796#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
798#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
805#define _mm_maskz_range_sd(U, A, B, C) _mm_maskz_range_round_sd(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
806
807#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); })
812
813#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); })
818
819#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); })
824
825#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); })
830
831#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); })
836
837#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); })
842
843#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)); })
847
848#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)); })
852
853#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)); })
857
858#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)); })
862
863#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)); })
867
868#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)); })
872
873#define _mm_reduce_ss(A, B, C) __extension__ ({              \
874  (__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); })
878
879#define _mm_mask_reduce_ss(W, U, A, B, C) __extension__ ({   \
880  (__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); })
884
885#define _mm_maskz_reduce_ss(U, A, B, C) __extension__ ({       \
886  (__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
892#define _mm_reduce_round_ss(A, B, C, R) __extension__ ({              \
893  (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
894                                       (__v4sf)(__m128)(B), \
895                                       (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
896                                       (int)(C), (int)(R)); })
897
898#define _mm_mask_reduce_round_ss(W, U, A, B, C, R) __extension__ ({   \
899  (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
900                                       (__v4sf)(__m128)(B), \
901                                       (__v4sf)(__m128)(W), (__mmask8)(U), \
902                                       (int)(C), (int)(R)); })
903
904#define _mm_maskz_reduce_round_ss(U, A, B, C, R) __extension__ ({       \
905  (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
906                                       (__v4sf)(__m128)(B), \
907                                       (__v4sf)_mm_setzero_ps(), \
908                                       (__mmask8)(U), (int)(C), (int)(R)); })
909
910#define _mm_reduce_sd(A, B, C) __extension__ ({              \
911  (__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); })
916
917#define _mm_mask_reduce_sd(W, U, A, B, C) __extension__ ({   \
918  (__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); })
922
923#define _mm_maskz_reduce_sd(U, A, B, C) __extension__ ({       \
924  (__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
930#define _mm_reduce_round_sd(A, B, C, R) __extension__ ({              \
931  (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
932                                        (__v2df)(__m128d)(B), \
933                                        (__v2df)_mm_setzero_pd(), \
934                                        (__mmask8)-1, (int)(C), (int)(R)); })
935
936#define _mm_mask_reduce_round_sd(W, U, A, B, C, R) __extension__ ({   \
937  (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
938                                        (__v2df)(__m128d)(B), \
939                                        (__v2df)(__m128d)(W), (__mmask8)(U), \
940                                        (int)(C), (int)(R)); })
941
942#define _mm_maskz_reduce_round_sd(U, A, B, C, R) __extension__ ({       \
943  (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
944                                        (__v2df)(__m128d)(B), \
945                                        (__v2df)_mm_setzero_pd(), \
946                                        (__mmask8)(U), (int)(C), (int)(R)); })
947
948static __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
973static __inline__ __m512 __DEFAULT_FN_ATTRS
974_mm512_broadcast_f32x2 (__m128 __A)
975{
976  return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
977                (__v16sf)_mm512_undefined_ps(),
978                (__mmask16) -1);
979}
980
981static __inline__ __m512 __DEFAULT_FN_ATTRS
982_mm512_mask_broadcast_f32x2 (__m512 __O, __mmask16 __M, __m128 __A)
983{
984  return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
985                (__v16sf)
986                __O, __M);
987}
988
989static __inline__ __m512 __DEFAULT_FN_ATTRS
990_mm512_maskz_broadcast_f32x2 (__mmask16 __M, __m128 __A)
991{
992  return (__m512) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf) __A,
993                (__v16sf)_mm512_setzero_ps (),
994                __M);
995}
996
997static __inline__ __m512 __DEFAULT_FN_ATTRS
998_mm512_broadcast_f32x8(__m256 __A)
999{
1000  return (__m512)__builtin_shufflevector((__v8sf)__A, (__v8sf)__A,
1001                                         0, 1, 2, 3, 4, 5, 6, 7,
1002                                         0, 1, 2, 3, 4, 5, 6, 7);
1003}
1004
1005static __inline__ __m512 __DEFAULT_FN_ATTRS
1006_mm512_mask_broadcast_f32x8(__m512 __O, __mmask16 __M, __m256 __A)
1007{
1008  return (__m512)__builtin_ia32_selectps_512((__mmask8)__M,
1009                                           (__v16sf)_mm512_broadcast_f32x8(__A),
1010                                           (__v16sf)__O);
1011}
1012
1013static __inline__ __m512 __DEFAULT_FN_ATTRS
1014_mm512_maskz_broadcast_f32x8(__mmask16 __M, __m256 __A)
1015{
1016  return (__m512)__builtin_ia32_selectps_512((__mmask8)__M,
1017                                           (__v16sf)_mm512_broadcast_f32x8(__A),
1018                                           (__v16sf)_mm512_setzero_ps());
1019}
1020
1021static __inline__ __m512d __DEFAULT_FN_ATTRS
1022_mm512_broadcast_f64x2(__m128d __A)
1023{
1024  return (__m512d)__builtin_shufflevector((__v2df)__A, (__v2df)__A,
1025                                          0, 1, 0, 1, 0, 1, 0, 1);
1026}
1027
1028static __inline__ __m512d __DEFAULT_FN_ATTRS
1029_mm512_mask_broadcast_f64x2(__m512d __O, __mmask8 __M, __m128d __A)
1030{
1031  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1032                                            (__v8df)_mm512_broadcast_f64x2(__A),
1033                                            (__v8df)__O);
1034}
1035
1036static __inline__ __m512d __DEFAULT_FN_ATTRS
1037_mm512_maskz_broadcast_f64x2(__mmask8 __M, __m128d __A)
1038{
1039  return (__m512d)__builtin_ia32_selectpd_512((__mmask8)__M,
1040                                            (__v8df)_mm512_broadcast_f64x2(__A),
1041                                            (__v8df)_mm512_setzero_pd());
1042}
1043
1044static __inline__ __m512i __DEFAULT_FN_ATTRS
1045_mm512_broadcast_i32x2 (__m128i __A)
1046{
1047  return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1048                 (__v16si)_mm512_setzero_si512(),
1049                 (__mmask16) -1);
1050}
1051
1052static __inline__ __m512i __DEFAULT_FN_ATTRS
1053_mm512_mask_broadcast_i32x2 (__m512i __O, __mmask16 __M, __m128i __A)
1054{
1055  return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1056                 (__v16si)
1057                 __O, __M);
1058}
1059
1060static __inline__ __m512i __DEFAULT_FN_ATTRS
1061_mm512_maskz_broadcast_i32x2 (__mmask16 __M, __m128i __A)
1062{
1063  return (__m512i) __builtin_ia32_broadcasti32x2_512_mask ((__v4si) __A,
1064                 (__v16si)_mm512_setzero_si512 (),
1065                 __M);
1066}
1067
1068static __inline__ __m512i __DEFAULT_FN_ATTRS
1069_mm512_broadcast_i32x8(__m256i __A)
1070{
1071  return (__m512i)__builtin_shufflevector((__v8si)__A, (__v8si)__A,
1072                                          0, 1, 2, 3, 4, 5, 6, 7,
1073                                          0, 1, 2, 3, 4, 5, 6, 7);
1074}
1075
1076static __inline__ __m512i __DEFAULT_FN_ATTRS
1077_mm512_mask_broadcast_i32x8(__m512i __O, __mmask16 __M, __m256i __A)
1078{
1079  return (__m512i)__builtin_ia32_selectd_512((__mmask8)__M,
1080                                           (__v16si)_mm512_broadcast_i32x8(__A),
1081                                           (__v16si)__O);
1082}
1083
1084static __inline__ __m512i __DEFAULT_FN_ATTRS
1085_mm512_maskz_broadcast_i32x8(__mmask16 __M, __m256i __A)
1086{
1087  return (__m512i)__builtin_ia32_selectd_512((__mmask8)__M,
1088                                           (__v16si)_mm512_broadcast_i32x8(__A),
1089                                           (__v16si)_mm512_setzero_si512());
1090}
1091
1092static __inline__ __m512i __DEFAULT_FN_ATTRS
1093_mm512_broadcast_i64x2(__m128i __A)
1094{
1095  return (__m512i)__builtin_shufflevector((__v2di)__A, (__v2di)__A,
1096                                          0, 1, 0, 1, 0, 1, 0, 1);
1097}
1098
1099static __inline__ __m512i __DEFAULT_FN_ATTRS
1100_mm512_mask_broadcast_i64x2(__m512i __O, __mmask8 __M, __m128i __A)
1101{
1102  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1103                                            (__v8di)_mm512_broadcast_i64x2(__A),
1104                                            (__v8di)__O);
1105}
1106
1107static __inline__ __m512i __DEFAULT_FN_ATTRS
1108_mm512_maskz_broadcast_i64x2(__mmask8 __M, __m128i __A)
1109{
1110  return (__m512i)__builtin_ia32_selectq_512((__mmask8)__M,
1111                                            (__v8di)_mm512_broadcast_i64x2(__A),
1112                                            (__v8di)_mm512_setzero_si512());
1113}
1114
1115#define _mm512_extractf32x8_ps(A, imm) __extension__ ({ \
1116  (__m256)__builtin_shufflevector((__v16sf)(__m512)(A),           \
1117                                  (__v16sf)_mm512_undefined_ps(), \
1118                                  ((imm) & 1) ?  8 : 0,           \
1119                                  ((imm) & 1) ?  9 : 1,           \
1120                                  ((imm) & 1) ? 10 : 2,           \
1121                                  ((imm) & 1) ? 11 : 3,           \
1122                                  ((imm) & 1) ? 12 : 4,           \
1123                                  ((imm) & 1) ? 13 : 5,           \
1124                                  ((imm) & 1) ? 14 : 6,           \
1125                                  ((imm) & 1) ? 15 : 7); })
1126
1127#define _mm512_mask_extractf32x8_ps(W, U, A, imm) __extension__ ({ \
1128  (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
1129                                   (__v8sf)_mm512_extractf32x8_ps((A), (imm)), \
1130                                   (__v8sf)(W)); })
1131
1132#define _mm512_maskz_extractf32x8_ps(U, A, imm) __extension__ ({ \
1133  (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
1134                                   (__v8sf)_mm512_extractf32x8_ps((A), (imm)), \
1135                                   (__v8sf)_mm256_setzero_ps()); })
1136
1137#define _mm512_extractf64x2_pd(A, imm) __extension__ ({ \
1138  (__m128d)__builtin_shufflevector((__v8df)(__m512d)(A),          \
1139                                   (__v8df)_mm512_undefined_pd(), \
1140                                   0 + ((imm) & 0x3) * 2,         \
1141                                   1 + ((imm) & 0x3) * 2); })
1142
1143#define _mm512_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
1144  (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1145                                   (__v2df)_mm512_extractf64x2_pd((A), (imm)), \
1146                                   (__v2df)(W)); })
1147
1148#define _mm512_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
1149  (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1150                                   (__v2df)_mm512_extractf64x2_pd((A), (imm)), \
1151                                   (__v2df)_mm_setzero_pd()); })
1152
1153#define _mm512_extracti32x8_epi32(A, imm) __extension__ ({ \
1154  (__m256i)__builtin_shufflevector((__v16si)(__m512i)(A),             \
1155                                   (__v16si)_mm512_undefined_epi32(), \
1156                                   ((imm) & 1) ?  8 : 0,              \
1157                                   ((imm) & 1) ?  9 : 1,              \
1158                                   ((imm) & 1) ? 10 : 2,              \
1159                                   ((imm) & 1) ? 11 : 3,              \
1160                                   ((imm) & 1) ? 12 : 4,              \
1161                                   ((imm) & 1) ? 13 : 5,              \
1162                                   ((imm) & 1) ? 14 : 6,              \
1163                                   ((imm) & 1) ? 15 : 7); })
1164
1165#define _mm512_mask_extracti32x8_epi32(W, U, A, imm) __extension__ ({ \
1166  (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
1167                                (__v8si)_mm512_extracti32x8_epi32((A), (imm)), \
1168                                (__v8si)(W)); })
1169
1170#define _mm512_maskz_extracti32x8_epi32(U, A, imm) __extension__ ({ \
1171  (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
1172                                (__v8si)_mm512_extracti32x8_epi32((A), (imm)), \
1173                                (__v8si)_mm256_setzero_si256()); })
1174
1175#define _mm512_extracti64x2_epi64(A, imm) __extension__ ({ \
1176  (__m128i)__builtin_shufflevector((__v8di)(__m512i)(A),          \
1177                                   (__v8di)_mm512_undefined_epi32(), \
1178                                   0 + ((imm) & 0x3) * 2,           \
1179                                   1 + ((imm) & 0x3) * 2); })
1180
1181#define _mm512_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
1182  (__m128d)__builtin_ia32_selectq_128((__mmask8)(U), \
1183                                (__v2di)_mm512_extracti64x2_epi64((A), (imm)), \
1184                                (__v2di)(W)); })
1185
1186#define _mm512_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
1187  (__m128d)__builtin_ia32_selectq_128((__mmask8)(U), \
1188                                (__v2di)_mm512_extracti64x2_epi64((A), (imm)), \
1189                                (__v2di)_mm_setzero_di()); })
1190
1191#define _mm512_insertf32x8(A, B, imm) __extension__ ({ \
1192  (__m512)__builtin_shufflevector((__v16sf)(__m512)(A), \
1193                                  (__v16sf)_mm512_castps256_ps512((__m256)(B)),\
1194                                  ((imm) & 0x1) ?  0 : 16, \
1195                                  ((imm) & 0x1) ?  1 : 17, \
1196                                  ((imm) & 0x1) ?  2 : 18, \
1197                                  ((imm) & 0x1) ?  3 : 19, \
1198                                  ((imm) & 0x1) ?  4 : 20, \
1199                                  ((imm) & 0x1) ?  5 : 21, \
1200                                  ((imm) & 0x1) ?  6 : 22, \
1201                                  ((imm) & 0x1) ?  7 : 23, \
1202                                  ((imm) & 0x1) ? 16 :  8, \
1203                                  ((imm) & 0x1) ? 17 :  9, \
1204                                  ((imm) & 0x1) ? 18 : 10, \
1205                                  ((imm) & 0x1) ? 19 : 11, \
1206                                  ((imm) & 0x1) ? 20 : 12, \
1207                                  ((imm) & 0x1) ? 21 : 13, \
1208                                  ((imm) & 0x1) ? 22 : 14, \
1209                                  ((imm) & 0x1) ? 23 : 15); })
1210
1211#define _mm512_mask_insertf32x8(W, U, A, B, imm) __extension__ ({ \
1212  (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1213                                 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
1214                                 (__v16sf)(W)); })
1215
1216#define _mm512_maskz_insertf32x8(U, A, B, imm) __extension__ ({ \
1217  (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
1218                                 (__v16sf)_mm512_insertf32x8((A), (B), (imm)), \
1219                                 (__v16sf)_mm512_setzero_ps()); })
1220
1221#define _mm512_insertf64x2(A, B, imm) __extension__ ({ \
1222  (__m512d)__builtin_shufflevector((__v8df)(__m512d)(A), \
1223                                  (__v8df)_mm512_castpd128_pd512((__m128d)(B)),\
1224                                  (((imm) & 0x3) == 0) ? 8 : 0, \
1225                                  (((imm) & 0x3) == 0) ? 9 : 1, \
1226                                  (((imm) & 0x3) == 1) ? 8 : 2, \
1227                                  (((imm) & 0x3) == 1) ? 9 : 3, \
1228                                  (((imm) & 0x3) == 2) ? 8 : 4, \
1229                                  (((imm) & 0x3) == 2) ? 9 : 5, \
1230                                  (((imm) & 0x3) == 3) ? 8 : 6, \
1231                                  (((imm) & 0x3) == 3) ? 9 : 7); })
1232
1233#define _mm512_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
1234  (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1235                                  (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
1236                                  (__v8df)(W)); })
1237
1238#define _mm512_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
1239  (__m512d)__builtin_ia32_selectpd_512((__mmask8)(U), \
1240                                  (__v8df)_mm512_insertf64x2((A), (B), (imm)), \
1241                                  (__v8df)_mm512_setzero_pd()); })
1242
1243#define _mm512_inserti32x8(A, B, imm) __extension__ ({ \
1244  (__m512i)__builtin_shufflevector((__v16si)(__m512i)(A), \
1245                                 (__v16si)_mm512_castsi256_si512((__m256i)(B)),\
1246                                 ((imm) & 0x1) ?  0 : 16, \
1247                                 ((imm) & 0x1) ?  1 : 17, \
1248                                 ((imm) & 0x1) ?  2 : 18, \
1249                                 ((imm) & 0x1) ?  3 : 19, \
1250                                 ((imm) & 0x1) ?  4 : 20, \
1251                                 ((imm) & 0x1) ?  5 : 21, \
1252                                 ((imm) & 0x1) ?  6 : 22, \
1253                                 ((imm) & 0x1) ?  7 : 23, \
1254                                 ((imm) & 0x1) ? 16 :  8, \
1255                                 ((imm) & 0x1) ? 17 :  9, \
1256                                 ((imm) & 0x1) ? 18 : 10, \
1257                                 ((imm) & 0x1) ? 19 : 11, \
1258                                 ((imm) & 0x1) ? 20 : 12, \
1259                                 ((imm) & 0x1) ? 21 : 13, \
1260                                 ((imm) & 0x1) ? 22 : 14, \
1261                                 ((imm) & 0x1) ? 23 : 15); })
1262
1263#define _mm512_mask_inserti32x8(W, U, A, B, imm) __extension__ ({ \
1264  (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1265                                 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
1266                                 (__v16si)(W)); })
1267
1268#define _mm512_maskz_inserti32x8(U, A, B, imm) __extension__ ({ \
1269  (__m512i)__builtin_ia32_selectd_512((__mmask16)(U), \
1270                                 (__v16si)_mm512_inserti32x8((A), (B), (imm)), \
1271                                 (__v16si)_mm512_setzero_si512()); })
1272
1273#define _mm512_inserti64x2(A, B, imm) __extension__ ({ \
1274  (__m512i)__builtin_shufflevector((__v8di)(__m512i)(A), \
1275                                  (__v8di)_mm512_castsi128_si512((__m128i)(B)),\
1276                                  (((imm) & 0x3) == 0) ? 8 : 0, \
1277                                  (((imm) & 0x3) == 0) ? 9 : 1, \
1278                                  (((imm) & 0x3) == 1) ? 8 : 2, \
1279                                  (((imm) & 0x3) == 1) ? 9 : 3, \
1280                                  (((imm) & 0x3) == 2) ? 8 : 4, \
1281                                  (((imm) & 0x3) == 2) ? 9 : 5, \
1282                                  (((imm) & 0x3) == 3) ? 8 : 6, \
1283                                  (((imm) & 0x3) == 3) ? 9 : 7); })
1284
1285#define _mm512_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
1286  (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1287                                  (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
1288                                  (__v8di)(W)); })
1289
1290#define _mm512_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
1291  (__m512i)__builtin_ia32_selectq_512((__mmask8)(U), \
1292                                  (__v8di)_mm512_inserti64x2((A), (B), (imm)), \
1293                                  (__v8di)_mm512_setzero_si512()); })
1294
1295#define _mm512_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1296  (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1297                                              (int)(imm), (__mmask16)(U)); })
1298
1299#define _mm512_fpclass_ps_mask(A, imm) __extension__ ({ \
1300  (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1301                                              (int)(imm), (__mmask16)-1); })
1302
1303#define _mm512_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1304  (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1305                                             (__mmask8)(U)); })
1306
1307#define _mm512_fpclass_pd_mask(A, imm) __extension__ ({ \
1308  (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1309                                             (__mmask8)-1); })
1310
1311#define _mm_fpclass_sd_mask(A, imm) __extension__ ({ \
1312  (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1313                                          (__mmask8)-1); })
1314
1315#define _mm_mask_fpclass_sd_mask(U, A, imm) __extension__ ({ \
1316  (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1317                                          (__mmask8)(U)); })
1318
1319#define _mm_fpclass_ss_mask(A, imm) __extension__ ({ \
1320  (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1321                                          (__mmask8)-1); })
1322
1323#define _mm_mask_fpclass_ss_mask(U, A, imm) __extension__ ({ \
1324  (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1325                                          (__mmask8)(U)); })
1326
1327#undef __DEFAULT_FN_ATTRS
1328
1329#endif
1330