]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h
Merge from vendor branch importing dtc 1.4.3
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / lib / Headers / avx512vldqintrin.h
1 /*===---- avx512vldqintrin.h - AVX512VL and 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 <avx512vldqintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef __AVX512VLDQINTRIN_H
29 #define __AVX512VLDQINTRIN_H
30
31 /* Define the default attributes for the functions in this file. */
32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512dq")))
33
34 static __inline__ __m256i __DEFAULT_FN_ATTRS
35 _mm256_mullo_epi64 (__m256i __A, __m256i __B) {
36   return (__m256i) ((__v4du) __A * (__v4du) __B);
37 }
38
39 static __inline__ __m256i __DEFAULT_FN_ATTRS
40 _mm256_mask_mullo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
41   return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
42                                              (__v4di)_mm256_mullo_epi64(__A, __B),
43                                              (__v4di)__W);
44 }
45
46 static __inline__ __m256i __DEFAULT_FN_ATTRS
47 _mm256_maskz_mullo_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
48   return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
49                                              (__v4di)_mm256_mullo_epi64(__A, __B),
50                                              (__v4di)_mm256_setzero_si256());
51 }
52
53 static __inline__ __m128i __DEFAULT_FN_ATTRS
54 _mm_mullo_epi64 (__m128i __A, __m128i __B) {
55   return (__m128i) ((__v2du) __A * (__v2du) __B);
56 }
57
58 static __inline__ __m128i __DEFAULT_FN_ATTRS
59 _mm_mask_mullo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
60   return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
61                                              (__v2di)_mm_mullo_epi64(__A, __B),
62                                              (__v2di)__W);
63 }
64
65 static __inline__ __m128i __DEFAULT_FN_ATTRS
66 _mm_maskz_mullo_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
67   return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
68                                              (__v2di)_mm_mullo_epi64(__A, __B),
69                                              (__v2di)_mm_setzero_si128());
70 }
71
72 static __inline__ __m256d __DEFAULT_FN_ATTRS
73 _mm256_mask_andnot_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
74   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
75                                               (__v4df)_mm256_andnot_pd(__A, __B),
76                                               (__v4df)__W);
77 }
78
79 static __inline__ __m256d __DEFAULT_FN_ATTRS
80 _mm256_maskz_andnot_pd(__mmask8 __U, __m256d __A, __m256d __B) {
81   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
82                                               (__v4df)_mm256_andnot_pd(__A, __B),
83                                               (__v4df)_mm256_setzero_pd());
84 }
85
86 static __inline__ __m128d __DEFAULT_FN_ATTRS
87 _mm_mask_andnot_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
88   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
89                                               (__v2df)_mm_andnot_pd(__A, __B),
90                                               (__v2df)__W);
91 }
92
93 static __inline__ __m128d __DEFAULT_FN_ATTRS
94 _mm_maskz_andnot_pd(__mmask8 __U, __m128d __A, __m128d __B) {
95   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
96                                               (__v2df)_mm_andnot_pd(__A, __B),
97                                               (__v2df)_mm_setzero_pd());
98 }
99
100 static __inline__ __m256 __DEFAULT_FN_ATTRS
101 _mm256_mask_andnot_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
102   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
103                                              (__v8sf)_mm256_andnot_ps(__A, __B),
104                                              (__v8sf)__W);
105 }
106
107 static __inline__ __m256 __DEFAULT_FN_ATTRS
108 _mm256_maskz_andnot_ps(__mmask8 __U, __m256 __A, __m256 __B) {
109   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
110                                              (__v8sf)_mm256_andnot_ps(__A, __B),
111                                              (__v8sf)_mm256_setzero_ps());
112 }
113
114 static __inline__ __m128 __DEFAULT_FN_ATTRS
115 _mm_mask_andnot_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
116   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
117                                              (__v4sf)_mm_andnot_ps(__A, __B),
118                                              (__v4sf)__W);
119 }
120
121 static __inline__ __m128 __DEFAULT_FN_ATTRS
122 _mm_maskz_andnot_ps(__mmask8 __U, __m128 __A, __m128 __B) {
123   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
124                                              (__v4sf)_mm_andnot_ps(__A, __B),
125                                              (__v4sf)_mm_setzero_ps());
126 }
127
128 static __inline__ __m256d __DEFAULT_FN_ATTRS
129 _mm256_mask_and_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
130   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
131                                               (__v4df)_mm256_and_pd(__A, __B),
132                                               (__v4df)__W);
133 }
134
135 static __inline__ __m256d __DEFAULT_FN_ATTRS
136 _mm256_maskz_and_pd(__mmask8 __U, __m256d __A, __m256d __B) {
137   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
138                                               (__v4df)_mm256_and_pd(__A, __B),
139                                               (__v4df)_mm256_setzero_pd());
140 }
141
142 static __inline__ __m128d __DEFAULT_FN_ATTRS
143 _mm_mask_and_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
144   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
145                                               (__v2df)_mm_and_pd(__A, __B),
146                                               (__v2df)__W);
147 }
148
149 static __inline__ __m128d __DEFAULT_FN_ATTRS
150 _mm_maskz_and_pd(__mmask8 __U, __m128d __A, __m128d __B) {
151   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
152                                               (__v2df)_mm_and_pd(__A, __B),
153                                               (__v2df)_mm_setzero_pd());
154 }
155
156 static __inline__ __m256 __DEFAULT_FN_ATTRS
157 _mm256_mask_and_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
158   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
159                                              (__v8sf)_mm256_and_ps(__A, __B),
160                                              (__v8sf)__W);
161 }
162
163 static __inline__ __m256 __DEFAULT_FN_ATTRS
164 _mm256_maskz_and_ps(__mmask8 __U, __m256 __A, __m256 __B) {
165   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
166                                              (__v8sf)_mm256_and_ps(__A, __B),
167                                              (__v8sf)_mm256_setzero_ps());
168 }
169
170 static __inline__ __m128 __DEFAULT_FN_ATTRS
171 _mm_mask_and_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
172   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
173                                              (__v4sf)_mm_and_ps(__A, __B),
174                                              (__v4sf)__W);
175 }
176
177 static __inline__ __m128 __DEFAULT_FN_ATTRS
178 _mm_maskz_and_ps(__mmask8 __U, __m128 __A, __m128 __B) {
179   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
180                                              (__v4sf)_mm_and_ps(__A, __B),
181                                              (__v4sf)_mm_setzero_ps());
182 }
183
184 static __inline__ __m256d __DEFAULT_FN_ATTRS
185 _mm256_mask_xor_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
186   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
187                                               (__v4df)_mm256_xor_pd(__A, __B),
188                                               (__v4df)__W);
189 }
190
191 static __inline__ __m256d __DEFAULT_FN_ATTRS
192 _mm256_maskz_xor_pd(__mmask8 __U, __m256d __A, __m256d __B) {
193   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
194                                               (__v4df)_mm256_xor_pd(__A, __B),
195                                               (__v4df)_mm256_setzero_pd());
196 }
197
198 static __inline__ __m128d __DEFAULT_FN_ATTRS
199 _mm_mask_xor_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
200   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
201                                               (__v2df)_mm_xor_pd(__A, __B),
202                                               (__v2df)__W);
203 }
204
205 static __inline__ __m128d __DEFAULT_FN_ATTRS
206 _mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {
207   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
208                                               (__v2df)_mm_xor_pd(__A, __B),
209                                               (__v2df)_mm_setzero_pd());
210 }
211
212 static __inline__ __m256 __DEFAULT_FN_ATTRS
213 _mm256_mask_xor_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
214   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
215                                              (__v8sf)_mm256_xor_ps(__A, __B),
216                                              (__v8sf)__W);
217 }
218
219 static __inline__ __m256 __DEFAULT_FN_ATTRS
220 _mm256_maskz_xor_ps(__mmask8 __U, __m256 __A, __m256 __B) {
221   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
222                                              (__v8sf)_mm256_xor_ps(__A, __B),
223                                              (__v8sf)_mm256_setzero_ps());
224 }
225
226 static __inline__ __m128 __DEFAULT_FN_ATTRS
227 _mm_mask_xor_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
228   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
229                                              (__v4sf)_mm_xor_ps(__A, __B),
230                                              (__v4sf)__W);
231 }
232
233 static __inline__ __m128 __DEFAULT_FN_ATTRS
234 _mm_maskz_xor_ps(__mmask8 __U, __m128 __A, __m128 __B) {
235   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
236                                              (__v4sf)_mm_xor_ps(__A, __B),
237                                              (__v4sf)_mm_setzero_ps());
238 }
239
240 static __inline__ __m256d __DEFAULT_FN_ATTRS
241 _mm256_mask_or_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
242   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
243                                               (__v4df)_mm256_or_pd(__A, __B),
244                                               (__v4df)__W);
245 }
246
247 static __inline__ __m256d __DEFAULT_FN_ATTRS
248 _mm256_maskz_or_pd(__mmask8 __U, __m256d __A, __m256d __B) {
249   return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
250                                               (__v4df)_mm256_or_pd(__A, __B),
251                                               (__v4df)_mm256_setzero_pd());
252 }
253
254 static __inline__ __m128d __DEFAULT_FN_ATTRS
255 _mm_mask_or_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
256   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
257                                               (__v2df)_mm_or_pd(__A, __B),
258                                               (__v2df)__W);
259 }
260
261 static __inline__ __m128d __DEFAULT_FN_ATTRS
262 _mm_maskz_or_pd(__mmask8 __U, __m128d __A, __m128d __B) {
263   return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
264                                               (__v2df)_mm_or_pd(__A, __B),
265                                               (__v2df)_mm_setzero_pd());
266 }
267
268 static __inline__ __m256 __DEFAULT_FN_ATTRS
269 _mm256_mask_or_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
270   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
271                                              (__v8sf)_mm256_or_ps(__A, __B),
272                                              (__v8sf)__W);
273 }
274
275 static __inline__ __m256 __DEFAULT_FN_ATTRS
276 _mm256_maskz_or_ps(__mmask8 __U, __m256 __A, __m256 __B) {
277   return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
278                                              (__v8sf)_mm256_or_ps(__A, __B),
279                                              (__v8sf)_mm256_setzero_ps());
280 }
281
282 static __inline__ __m128 __DEFAULT_FN_ATTRS
283 _mm_mask_or_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
284   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
285                                              (__v4sf)_mm_or_ps(__A, __B),
286                                              (__v4sf)__W);
287 }
288
289 static __inline__ __m128 __DEFAULT_FN_ATTRS
290 _mm_maskz_or_ps(__mmask8 __U, __m128 __A, __m128 __B) {
291   return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
292                                              (__v4sf)_mm_or_ps(__A, __B),
293                                              (__v4sf)_mm_setzero_ps());
294 }
295
296 static __inline__ __m128i __DEFAULT_FN_ATTRS
297 _mm_cvtpd_epi64 (__m128d __A) {
298   return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
299                 (__v2di) _mm_setzero_si128(),
300                 (__mmask8) -1);
301 }
302
303 static __inline__ __m128i __DEFAULT_FN_ATTRS
304 _mm_mask_cvtpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
305   return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
306                 (__v2di) __W,
307                 (__mmask8) __U);
308 }
309
310 static __inline__ __m128i __DEFAULT_FN_ATTRS
311 _mm_maskz_cvtpd_epi64 (__mmask8 __U, __m128d __A) {
312   return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
313                 (__v2di) _mm_setzero_si128(),
314                 (__mmask8) __U);
315 }
316
317 static __inline__ __m256i __DEFAULT_FN_ATTRS
318 _mm256_cvtpd_epi64 (__m256d __A) {
319   return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
320                 (__v4di) _mm256_setzero_si256(),
321                 (__mmask8) -1);
322 }
323
324 static __inline__ __m256i __DEFAULT_FN_ATTRS
325 _mm256_mask_cvtpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
326   return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
327                 (__v4di) __W,
328                 (__mmask8) __U);
329 }
330
331 static __inline__ __m256i __DEFAULT_FN_ATTRS
332 _mm256_maskz_cvtpd_epi64 (__mmask8 __U, __m256d __A) {
333   return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
334                 (__v4di) _mm256_setzero_si256(),
335                 (__mmask8) __U);
336 }
337
338 static __inline__ __m128i __DEFAULT_FN_ATTRS
339 _mm_cvtpd_epu64 (__m128d __A) {
340   return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
341                 (__v2di) _mm_setzero_si128(),
342                 (__mmask8) -1);
343 }
344
345 static __inline__ __m128i __DEFAULT_FN_ATTRS
346 _mm_mask_cvtpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
347   return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
348                 (__v2di) __W,
349                 (__mmask8) __U);
350 }
351
352 static __inline__ __m128i __DEFAULT_FN_ATTRS
353 _mm_maskz_cvtpd_epu64 (__mmask8 __U, __m128d __A) {
354   return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
355                 (__v2di) _mm_setzero_si128(),
356                 (__mmask8) __U);
357 }
358
359 static __inline__ __m256i __DEFAULT_FN_ATTRS
360 _mm256_cvtpd_epu64 (__m256d __A) {
361   return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
362                 (__v4di) _mm256_setzero_si256(),
363                 (__mmask8) -1);
364 }
365
366 static __inline__ __m256i __DEFAULT_FN_ATTRS
367 _mm256_mask_cvtpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
368   return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
369                 (__v4di) __W,
370                 (__mmask8) __U);
371 }
372
373 static __inline__ __m256i __DEFAULT_FN_ATTRS
374 _mm256_maskz_cvtpd_epu64 (__mmask8 __U, __m256d __A) {
375   return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
376                 (__v4di) _mm256_setzero_si256(),
377                 (__mmask8) __U);
378 }
379
380 static __inline__ __m128i __DEFAULT_FN_ATTRS
381 _mm_cvtps_epi64 (__m128 __A) {
382   return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
383                 (__v2di) _mm_setzero_si128(),
384                 (__mmask8) -1);
385 }
386
387 static __inline__ __m128i __DEFAULT_FN_ATTRS
388 _mm_mask_cvtps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
389   return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
390                 (__v2di) __W,
391                 (__mmask8) __U);
392 }
393
394 static __inline__ __m128i __DEFAULT_FN_ATTRS
395 _mm_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
396   return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
397                 (__v2di) _mm_setzero_si128(),
398                 (__mmask8) __U);
399 }
400
401 static __inline__ __m256i __DEFAULT_FN_ATTRS
402 _mm256_cvtps_epi64 (__m128 __A) {
403   return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
404                 (__v4di) _mm256_setzero_si256(),
405                 (__mmask8) -1);
406 }
407
408 static __inline__ __m256i __DEFAULT_FN_ATTRS
409 _mm256_mask_cvtps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
410   return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
411                 (__v4di) __W,
412                 (__mmask8) __U);
413 }
414
415 static __inline__ __m256i __DEFAULT_FN_ATTRS
416 _mm256_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
417   return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
418                 (__v4di) _mm256_setzero_si256(),
419                 (__mmask8) __U);
420 }
421
422 static __inline__ __m128i __DEFAULT_FN_ATTRS
423 _mm_cvtps_epu64 (__m128 __A) {
424   return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
425                 (__v2di) _mm_setzero_si128(),
426                 (__mmask8) -1);
427 }
428
429 static __inline__ __m128i __DEFAULT_FN_ATTRS
430 _mm_mask_cvtps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
431   return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
432                 (__v2di) __W,
433                 (__mmask8) __U);
434 }
435
436 static __inline__ __m128i __DEFAULT_FN_ATTRS
437 _mm_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
438   return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
439                 (__v2di) _mm_setzero_si128(),
440                 (__mmask8) __U);
441 }
442
443 static __inline__ __m256i __DEFAULT_FN_ATTRS
444 _mm256_cvtps_epu64 (__m128 __A) {
445   return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
446                 (__v4di) _mm256_setzero_si256(),
447                 (__mmask8) -1);
448 }
449
450 static __inline__ __m256i __DEFAULT_FN_ATTRS
451 _mm256_mask_cvtps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
452   return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
453                 (__v4di) __W,
454                 (__mmask8) __U);
455 }
456
457 static __inline__ __m256i __DEFAULT_FN_ATTRS
458 _mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
459   return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
460                 (__v4di) _mm256_setzero_si256(),
461                 (__mmask8) __U);
462 }
463
464 static __inline__ __m128d __DEFAULT_FN_ATTRS
465 _mm_cvtepi64_pd (__m128i __A) {
466   return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
467                 (__v2df) _mm_setzero_pd(),
468                 (__mmask8) -1);
469 }
470
471 static __inline__ __m128d __DEFAULT_FN_ATTRS
472 _mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
473   return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
474                 (__v2df) __W,
475                 (__mmask8) __U);
476 }
477
478 static __inline__ __m128d __DEFAULT_FN_ATTRS
479 _mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) {
480   return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
481                 (__v2df) _mm_setzero_pd(),
482                 (__mmask8) __U);
483 }
484
485 static __inline__ __m256d __DEFAULT_FN_ATTRS
486 _mm256_cvtepi64_pd (__m256i __A) {
487   return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
488                 (__v4df) _mm256_setzero_pd(),
489                 (__mmask8) -1);
490 }
491
492 static __inline__ __m256d __DEFAULT_FN_ATTRS
493 _mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
494   return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
495                 (__v4df) __W,
496                 (__mmask8) __U);
497 }
498
499 static __inline__ __m256d __DEFAULT_FN_ATTRS
500 _mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) {
501   return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
502                 (__v4df) _mm256_setzero_pd(),
503                 (__mmask8) __U);
504 }
505
506 static __inline__ __m128 __DEFAULT_FN_ATTRS
507 _mm_cvtepi64_ps (__m128i __A) {
508   return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
509                 (__v4sf) _mm_setzero_ps(),
510                 (__mmask8) -1);
511 }
512
513 static __inline__ __m128 __DEFAULT_FN_ATTRS
514 _mm_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
515   return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
516                 (__v4sf) __W,
517                 (__mmask8) __U);
518 }
519
520 static __inline__ __m128 __DEFAULT_FN_ATTRS
521 _mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A) {
522   return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
523                 (__v4sf) _mm_setzero_ps(),
524                 (__mmask8) __U);
525 }
526
527 static __inline__ __m128 __DEFAULT_FN_ATTRS
528 _mm256_cvtepi64_ps (__m256i __A) {
529   return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
530                 (__v4sf) _mm_setzero_ps(),
531                 (__mmask8) -1);
532 }
533
534 static __inline__ __m128 __DEFAULT_FN_ATTRS
535 _mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
536   return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
537                 (__v4sf) __W,
538                 (__mmask8) __U);
539 }
540
541 static __inline__ __m128 __DEFAULT_FN_ATTRS
542 _mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A) {
543   return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
544                 (__v4sf) _mm_setzero_ps(),
545                 (__mmask8) __U);
546 }
547
548 static __inline__ __m128i __DEFAULT_FN_ATTRS
549 _mm_cvttpd_epi64 (__m128d __A) {
550   return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
551                 (__v2di) _mm_setzero_si128(),
552                 (__mmask8) -1);
553 }
554
555 static __inline__ __m128i __DEFAULT_FN_ATTRS
556 _mm_mask_cvttpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
557   return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
558                 (__v2di) __W,
559                 (__mmask8) __U);
560 }
561
562 static __inline__ __m128i __DEFAULT_FN_ATTRS
563 _mm_maskz_cvttpd_epi64 (__mmask8 __U, __m128d __A) {
564   return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
565                 (__v2di) _mm_setzero_si128(),
566                 (__mmask8) __U);
567 }
568
569 static __inline__ __m256i __DEFAULT_FN_ATTRS
570 _mm256_cvttpd_epi64 (__m256d __A) {
571   return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
572                 (__v4di) _mm256_setzero_si256(),
573                 (__mmask8) -1);
574 }
575
576 static __inline__ __m256i __DEFAULT_FN_ATTRS
577 _mm256_mask_cvttpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
578   return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
579                 (__v4di) __W,
580                 (__mmask8) __U);
581 }
582
583 static __inline__ __m256i __DEFAULT_FN_ATTRS
584 _mm256_maskz_cvttpd_epi64 (__mmask8 __U, __m256d __A) {
585   return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
586                 (__v4di) _mm256_setzero_si256(),
587                 (__mmask8) __U);
588 }
589
590 static __inline__ __m128i __DEFAULT_FN_ATTRS
591 _mm_cvttpd_epu64 (__m128d __A) {
592   return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
593                 (__v2di) _mm_setzero_si128(),
594                 (__mmask8) -1);
595 }
596
597 static __inline__ __m128i __DEFAULT_FN_ATTRS
598 _mm_mask_cvttpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
599   return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
600                 (__v2di) __W,
601                 (__mmask8) __U);
602 }
603
604 static __inline__ __m128i __DEFAULT_FN_ATTRS
605 _mm_maskz_cvttpd_epu64 (__mmask8 __U, __m128d __A) {
606   return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
607                 (__v2di) _mm_setzero_si128(),
608                 (__mmask8) __U);
609 }
610
611 static __inline__ __m256i __DEFAULT_FN_ATTRS
612 _mm256_cvttpd_epu64 (__m256d __A) {
613   return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
614                 (__v4di) _mm256_setzero_si256(),
615                 (__mmask8) -1);
616 }
617
618 static __inline__ __m256i __DEFAULT_FN_ATTRS
619 _mm256_mask_cvttpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
620   return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
621                 (__v4di) __W,
622                 (__mmask8) __U);
623 }
624
625 static __inline__ __m256i __DEFAULT_FN_ATTRS
626 _mm256_maskz_cvttpd_epu64 (__mmask8 __U, __m256d __A) {
627   return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
628                 (__v4di) _mm256_setzero_si256(),
629                 (__mmask8) __U);
630 }
631
632 static __inline__ __m128i __DEFAULT_FN_ATTRS
633 _mm_cvttps_epi64 (__m128 __A) {
634   return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
635                 (__v2di) _mm_setzero_si128(),
636                 (__mmask8) -1);
637 }
638
639 static __inline__ __m128i __DEFAULT_FN_ATTRS
640 _mm_mask_cvttps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
641   return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
642                 (__v2di) __W,
643                 (__mmask8) __U);
644 }
645
646 static __inline__ __m128i __DEFAULT_FN_ATTRS
647 _mm_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
648   return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
649                 (__v2di) _mm_setzero_si128(),
650                 (__mmask8) __U);
651 }
652
653 static __inline__ __m256i __DEFAULT_FN_ATTRS
654 _mm256_cvttps_epi64 (__m128 __A) {
655   return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
656                 (__v4di) _mm256_setzero_si256(),
657                 (__mmask8) -1);
658 }
659
660 static __inline__ __m256i __DEFAULT_FN_ATTRS
661 _mm256_mask_cvttps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
662   return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
663                 (__v4di) __W,
664                 (__mmask8) __U);
665 }
666
667 static __inline__ __m256i __DEFAULT_FN_ATTRS
668 _mm256_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
669   return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
670                 (__v4di) _mm256_setzero_si256(),
671                 (__mmask8) __U);
672 }
673
674 static __inline__ __m128i __DEFAULT_FN_ATTRS
675 _mm_cvttps_epu64 (__m128 __A) {
676   return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
677                 (__v2di) _mm_setzero_si128(),
678                 (__mmask8) -1);
679 }
680
681 static __inline__ __m128i __DEFAULT_FN_ATTRS
682 _mm_mask_cvttps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
683   return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
684                 (__v2di) __W,
685                 (__mmask8) __U);
686 }
687
688 static __inline__ __m128i __DEFAULT_FN_ATTRS
689 _mm_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
690   return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
691                 (__v2di) _mm_setzero_si128(),
692                 (__mmask8) __U);
693 }
694
695 static __inline__ __m256i __DEFAULT_FN_ATTRS
696 _mm256_cvttps_epu64 (__m128 __A) {
697   return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
698                 (__v4di) _mm256_setzero_si256(),
699                 (__mmask8) -1);
700 }
701
702 static __inline__ __m256i __DEFAULT_FN_ATTRS
703 _mm256_mask_cvttps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
704   return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
705                 (__v4di) __W,
706                 (__mmask8) __U);
707 }
708
709 static __inline__ __m256i __DEFAULT_FN_ATTRS
710 _mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
711   return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
712                 (__v4di) _mm256_setzero_si256(),
713                 (__mmask8) __U);
714 }
715
716 static __inline__ __m128d __DEFAULT_FN_ATTRS
717 _mm_cvtepu64_pd (__m128i __A) {
718   return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
719                 (__v2df) _mm_setzero_pd(),
720                 (__mmask8) -1);
721 }
722
723 static __inline__ __m128d __DEFAULT_FN_ATTRS
724 _mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
725   return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
726                 (__v2df) __W,
727                 (__mmask8) __U);
728 }
729
730 static __inline__ __m128d __DEFAULT_FN_ATTRS
731 _mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) {
732   return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
733                 (__v2df) _mm_setzero_pd(),
734                 (__mmask8) __U);
735 }
736
737 static __inline__ __m256d __DEFAULT_FN_ATTRS
738 _mm256_cvtepu64_pd (__m256i __A) {
739   return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
740                 (__v4df) _mm256_setzero_pd(),
741                 (__mmask8) -1);
742 }
743
744 static __inline__ __m256d __DEFAULT_FN_ATTRS
745 _mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
746   return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
747                 (__v4df) __W,
748                 (__mmask8) __U);
749 }
750
751 static __inline__ __m256d __DEFAULT_FN_ATTRS
752 _mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) {
753   return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
754                 (__v4df) _mm256_setzero_pd(),
755                 (__mmask8) __U);
756 }
757
758 static __inline__ __m128 __DEFAULT_FN_ATTRS
759 _mm_cvtepu64_ps (__m128i __A) {
760   return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
761                 (__v4sf) _mm_setzero_ps(),
762                 (__mmask8) -1);
763 }
764
765 static __inline__ __m128 __DEFAULT_FN_ATTRS
766 _mm_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
767   return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
768                 (__v4sf) __W,
769                 (__mmask8) __U);
770 }
771
772 static __inline__ __m128 __DEFAULT_FN_ATTRS
773 _mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A) {
774   return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
775                 (__v4sf) _mm_setzero_ps(),
776                 (__mmask8) __U);
777 }
778
779 static __inline__ __m128 __DEFAULT_FN_ATTRS
780 _mm256_cvtepu64_ps (__m256i __A) {
781   return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
782                 (__v4sf) _mm_setzero_ps(),
783                 (__mmask8) -1);
784 }
785
786 static __inline__ __m128 __DEFAULT_FN_ATTRS
787 _mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
788   return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
789                 (__v4sf) __W,
790                 (__mmask8) __U);
791 }
792
793 static __inline__ __m128 __DEFAULT_FN_ATTRS
794 _mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A) {
795   return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
796                 (__v4sf) _mm_setzero_ps(),
797                 (__mmask8) __U);
798 }
799
800 #define _mm_range_pd(A, B, C) __extension__ ({                         \
801   (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
802                                           (__v2df)(__m128d)(B), (int)(C), \
803                                           (__v2df)_mm_setzero_pd(), \
804                                           (__mmask8)-1); })
805
806 #define _mm_mask_range_pd(W, U, A, B, C) __extension__ ({          \
807   (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
808                                           (__v2df)(__m128d)(B), (int)(C), \
809                                           (__v2df)(__m128d)(W), \
810                                           (__mmask8)(U)); })
811
812 #define _mm_maskz_range_pd(U, A, B, C) __extension__ ({              \
813   (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
814                                           (__v2df)(__m128d)(B), (int)(C), \
815                                           (__v2df)_mm_setzero_pd(), \
816                                           (__mmask8)(U)); })
817
818 #define _mm256_range_pd(A, B, C) __extension__ ({                      \
819   (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
820                                           (__v4df)(__m256d)(B), (int)(C), \
821                                           (__v4df)_mm256_setzero_pd(), \
822                                           (__mmask8)-1); })
823
824 #define _mm256_mask_range_pd(W, U, A, B, C) __extension__ ({       \
825   (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
826                                           (__v4df)(__m256d)(B), (int)(C), \
827                                           (__v4df)(__m256d)(W), \
828                                           (__mmask8)(U)); })
829
830 #define _mm256_maskz_range_pd(U, A, B, C) __extension__ ({           \
831   (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
832                                           (__v4df)(__m256d)(B), (int)(C), \
833                                           (__v4df)_mm256_setzero_pd(), \
834                                           (__mmask8)(U)); })
835
836 #define _mm_range_ps(A, B, C) __extension__ ({                         \
837   (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
838                                          (__v4sf)(__m128)(B), (int)(C), \
839                                          (__v4sf)_mm_setzero_ps(), \
840                                          (__mmask8)-1); })
841
842 #define _mm_mask_range_ps(W, U, A, B, C) __extension__ ({          \
843   (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
844                                          (__v4sf)(__m128)(B), (int)(C), \
845                                          (__v4sf)(__m128)(W), (__mmask8)(U)); })
846
847 #define _mm_maskz_range_ps(U, A, B, C) __extension__ ({              \
848   (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
849                                          (__v4sf)(__m128)(B), (int)(C), \
850                                          (__v4sf)_mm_setzero_ps(), \
851                                          (__mmask8)(U)); })
852
853 #define _mm256_range_ps(A, B, C) __extension__ ({                      \
854   (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
855                                          (__v8sf)(__m256)(B), (int)(C), \
856                                          (__v8sf)_mm256_setzero_ps(), \
857                                          (__mmask8)-1); })
858
859 #define _mm256_mask_range_ps(W, U, A, B, C) __extension__ ({       \
860   (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
861                                          (__v8sf)(__m256)(B), (int)(C), \
862                                          (__v8sf)(__m256)(W), (__mmask8)(U)); })
863
864 #define _mm256_maskz_range_ps(U, A, B, C) __extension__ ({           \
865   (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
866                                          (__v8sf)(__m256)(B), (int)(C), \
867                                          (__v8sf)_mm256_setzero_ps(), \
868                                          (__mmask8)(U)); })
869
870 #define _mm_reduce_pd(A, B) __extension__ ({                \
871   (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
872                                            (__v2df)_mm_setzero_pd(), \
873                                            (__mmask8)-1); })
874
875 #define _mm_mask_reduce_pd(W, U, A, B) __extension__ ({ \
876   (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
877                                            (__v2df)(__m128d)(W), \
878                                            (__mmask8)(U)); })
879
880 #define _mm_maskz_reduce_pd(U, A, B) __extension__ ({     \
881   (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
882                                            (__v2df)_mm_setzero_pd(), \
883                                            (__mmask8)(U)); })
884
885 #define _mm256_reduce_pd(A, B) __extension__ ({                \
886   (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
887                                            (__v4df)_mm256_setzero_pd(), \
888                                            (__mmask8)-1); })
889
890 #define _mm256_mask_reduce_pd(W, U, A, B) __extension__ ({ \
891   (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
892                                            (__v4df)(__m256d)(W), \
893                                            (__mmask8)(U)); })
894
895 #define _mm256_maskz_reduce_pd(U, A, B) __extension__ ({     \
896   (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
897                                            (__v4df)_mm256_setzero_pd(), \
898                                            (__mmask8)(U)); })
899
900 #define _mm_reduce_ps(A, B) __extension__ ({                   \
901   (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
902                                           (__v4sf)_mm_setzero_ps(), \
903                                           (__mmask8)-1); })
904
905 #define _mm_mask_reduce_ps(W, U, A, B) __extension__ ({    \
906   (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
907                                           (__v4sf)(__m128)(W), \
908                                           (__mmask8)(U)); })
909
910 #define _mm_maskz_reduce_ps(U, A, B) __extension__ ({        \
911   (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
912                                           (__v4sf)_mm_setzero_ps(), \
913                                           (__mmask8)(U)); })
914
915 #define _mm256_reduce_ps(A, B) __extension__ ({                \
916   (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
917                                           (__v8sf)_mm256_setzero_ps(), \
918                                           (__mmask8)-1); })
919
920 #define _mm256_mask_reduce_ps(W, U, A, B) __extension__ ({ \
921   (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
922                                           (__v8sf)(__m256)(W), \
923                                           (__mmask8)(U)); })
924
925 #define _mm256_maskz_reduce_ps(U, A, B) __extension__ ({     \
926   (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
927                                           (__v8sf)_mm256_setzero_ps(), \
928                                           (__mmask8)(U)); })
929
930 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
931 _mm_movepi32_mask (__m128i __A)
932 {
933   return (__mmask8) __builtin_ia32_cvtd2mask128 ((__v4si) __A);
934 }
935
936 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
937 _mm256_movepi32_mask (__m256i __A)
938 {
939   return (__mmask8) __builtin_ia32_cvtd2mask256 ((__v8si) __A);
940 }
941
942 static __inline__ __m128i __DEFAULT_FN_ATTRS
943 _mm_movm_epi32 (__mmask8 __A)
944 {
945   return (__m128i) __builtin_ia32_cvtmask2d128 (__A);
946 }
947
948 static __inline__ __m256i __DEFAULT_FN_ATTRS
949 _mm256_movm_epi32 (__mmask8 __A)
950 {
951   return (__m256i) __builtin_ia32_cvtmask2d256 (__A);
952 }
953
954 static __inline__ __m128i __DEFAULT_FN_ATTRS
955 _mm_movm_epi64 (__mmask8 __A)
956 {
957   return (__m128i) __builtin_ia32_cvtmask2q128 (__A);
958 }
959
960 static __inline__ __m256i __DEFAULT_FN_ATTRS
961 _mm256_movm_epi64 (__mmask8 __A)
962 {
963   return (__m256i) __builtin_ia32_cvtmask2q256 (__A);
964 }
965
966 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
967 _mm_movepi64_mask (__m128i __A)
968 {
969   return (__mmask8) __builtin_ia32_cvtq2mask128 ((__v2di) __A);
970 }
971
972 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
973 _mm256_movepi64_mask (__m256i __A)
974 {
975   return (__mmask8) __builtin_ia32_cvtq2mask256 ((__v4di) __A);
976 }
977
978 static __inline__ __m256 __DEFAULT_FN_ATTRS
979 _mm256_broadcast_f32x2 (__m128 __A)
980 {
981   return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
982                 (__v8sf)_mm256_undefined_ps(),
983                 (__mmask8) -1);
984 }
985
986 static __inline__ __m256 __DEFAULT_FN_ATTRS
987 _mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
988 {
989   return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
990                 (__v8sf) __O,
991                 __M);
992 }
993
994 static __inline__ __m256 __DEFAULT_FN_ATTRS
995 _mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
996 {
997   return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
998                 (__v8sf) _mm256_setzero_ps (),
999                 __M);
1000 }
1001
1002 static __inline__ __m256d __DEFAULT_FN_ATTRS
1003 _mm256_broadcast_f64x2 (__m128d __A)
1004 {
1005   return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df) __A,
1006                  (__v4df)_mm256_undefined_pd(),
1007                  (__mmask8) -1);
1008 }
1009
1010 static __inline__ __m256d __DEFAULT_FN_ATTRS
1011 _mm256_mask_broadcast_f64x2 (__m256d __O, __mmask8 __M, __m128d __A)
1012 {
1013   return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df) __A,
1014                  (__v4df) __O,
1015                  __M);
1016 }
1017
1018 static __inline__ __m256d __DEFAULT_FN_ATTRS
1019 _mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1020 {
1021   return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df) __A,
1022                  (__v4df) _mm256_setzero_ps (),
1023                  __M);
1024 }
1025
1026 static __inline__ __m128i __DEFAULT_FN_ATTRS
1027 _mm_broadcast_i32x2 (__m128i __A)
1028 {
1029   return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1030                  (__v4si)_mm_undefined_si128(),
1031                  (__mmask8) -1);
1032 }
1033
1034 static __inline__ __m128i __DEFAULT_FN_ATTRS
1035 _mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
1036 {
1037   return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1038                  (__v4si) __O,
1039                  __M);
1040 }
1041
1042 static __inline__ __m128i __DEFAULT_FN_ATTRS
1043 _mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1044 {
1045   return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1046                  (__v4si) _mm_setzero_si128 (),
1047                  __M);
1048 }
1049
1050 static __inline__ __m256i __DEFAULT_FN_ATTRS
1051 _mm256_broadcast_i32x2 (__m128i __A)
1052 {
1053   return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1054                  (__v8si)_mm256_undefined_si256(),
1055                  (__mmask8) -1);
1056 }
1057
1058 static __inline__ __m256i __DEFAULT_FN_ATTRS
1059 _mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
1060 {
1061   return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1062                  (__v8si) __O,
1063                  __M);
1064 }
1065
1066 static __inline__ __m256i __DEFAULT_FN_ATTRS
1067 _mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1068 {
1069   return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1070                  (__v8si) _mm256_setzero_si256 (),
1071                  __M);
1072 }
1073
1074 static __inline__ __m256i __DEFAULT_FN_ATTRS
1075 _mm256_broadcast_i64x2 (__m128i __A)
1076 {
1077   return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di) __A,
1078                  (__v4di)_mm256_undefined_si256(),
1079                  (__mmask8) -1);
1080 }
1081
1082 static __inline__ __m256i __DEFAULT_FN_ATTRS
1083 _mm256_mask_broadcast_i64x2 (__m256i __O, __mmask8 __M, __m128i __A)
1084 {
1085   return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di) __A,
1086                  (__v4di) __O,
1087                  __M);
1088 }
1089
1090 static __inline__ __m256i __DEFAULT_FN_ATTRS
1091 _mm256_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
1092 {
1093   return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di) __A,
1094                  (__v4di) _mm256_setzero_si256 (),
1095                  __M);
1096 }
1097
1098 #define _mm256_extractf64x2_pd(A, imm) __extension__ ({ \
1099   (__m128d)__builtin_shufflevector((__v4df)(__m256d)(A),           \
1100                                    (__v4df)_mm256_undefined_pd(), \
1101                                    ((imm) & 1) ? 2 : 0,           \
1102                                    ((imm) & 1) ? 3 : 1); })
1103
1104 #define _mm256_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
1105   (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1106                                    (__v2df)_mm256_extractf64x2_pd((A), (imm)), \
1107                                    (__v2df)(W)); })
1108
1109 #define _mm256_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
1110   (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1111                                    (__v2df)_mm256_extractf64x2_pd((A), (imm)), \
1112                                    (__v2df)_mm_setzero_pd()); })
1113
1114 #define _mm256_extracti64x2_epi64(A, imm) __extension__ ({ \
1115   (__m128i)__builtin_shufflevector((__v4di)(__m256i)(A),             \
1116                                    (__v4di)_mm256_undefined_si256(), \
1117                                    ((imm) & 1) ? 2 : 0,              \
1118                                    ((imm) & 1) ? 3 : 1); })
1119
1120 #define _mm256_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
1121   (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
1122                                 (__v2di)_mm256_extracti64x2_epi64((A), (imm)), \
1123                                 (__v2di)(W)); })
1124
1125 #define _mm256_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
1126   (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
1127                                 (__v2di)_mm256_extracti64x2_epi64((A), (imm)), \
1128                                 (__v2di)_mm_setzero_di()); })
1129
1130 #define _mm256_insertf64x2(A, B, imm) __extension__ ({ \
1131   (__m256d)__builtin_shufflevector((__v4df)(A), \
1132                                  (__v4df)_mm256_castpd128_pd256((__m128d)(B)), \
1133                                  ((imm) & 0x1) ? 0 : 4, \
1134                                  ((imm) & 0x1) ? 1 : 5, \
1135                                  ((imm) & 0x1) ? 4 : 2, \
1136                                  ((imm) & 0x1) ? 5 : 3); })
1137
1138 #define _mm256_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
1139   (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
1140                                   (__v4df)_mm256_insertf64x2((A), (B), (imm)), \
1141                                   (__v4df)(W)); })
1142
1143 #define _mm256_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
1144   (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
1145                                   (__v4df)_mm256_insertf64x2((A), (B), (imm)), \
1146                                   (__v4df)_mm256_setzero_pd()); })
1147
1148 #define _mm256_inserti64x2(A, B, imm) __extension__ ({ \
1149   (__m256i)__builtin_shufflevector((__v4di)(A), \
1150                                  (__v4di)_mm256_castsi128_si256((__m128i)(B)), \
1151                                  ((imm) & 0x1) ? 0 : 4, \
1152                                  ((imm) & 0x1) ? 1 : 5, \
1153                                  ((imm) & 0x1) ? 4 : 2, \
1154                                  ((imm) & 0x1) ? 5 : 3); })
1155
1156 #define _mm256_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
1157   (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
1158                                   (__v4di)_mm256_inserti64x2((A), (B), (imm)), \
1159                                   (__v4di)(W)); })
1160
1161 #define _mm256_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
1162   (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
1163                                   (__v4di)_mm256_inserti64x2((A), (B), (imm)), \
1164                                   (__v4di)_mm256_setzero_si256()); })
1165
1166 #define _mm_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1167   (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
1168                                              (__mmask8)(U)); })
1169
1170 #define _mm_fpclass_pd_mask(A, imm) __extension__ ({ \
1171   (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
1172                                              (__mmask8)-1); })
1173
1174 #define _mm256_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1175   (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
1176                                              (__mmask8)(U)); })
1177
1178 #define _mm256_fpclass_pd_mask(A, imm) __extension__ ({ \
1179   (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
1180                                              (__mmask8)-1); })
1181
1182 #define _mm_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1183   (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
1184                                              (__mmask8)(U)); })
1185
1186 #define _mm_fpclass_ps_mask(A, imm) __extension__ ({ \
1187   (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
1188                                              (__mmask8)-1); })
1189
1190 #define _mm256_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1191   (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
1192                                              (__mmask8)(U)); })
1193
1194 #define _mm256_fpclass_ps_mask(A, imm) __extension__ ({ \
1195   (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
1196                                              (__mmask8)-1); })
1197
1198 #undef __DEFAULT_FN_ATTRS
1199
1200 #endif