]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512vldqintrin.h
Upgrade our copies of clang, llvm, lldb and compiler-rt to 3.8.0
[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) ((__v4di) __A * (__v4di) __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_pmullq256_mask ((__v4di) __A,
42               (__v4di) __B,
43               (__v4di) __W,
44               (__mmask8) __U);
45 }
46
47 static __inline__ __m256i __DEFAULT_FN_ATTRS
48 _mm256_maskz_mullo_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
49   return (__m256i) __builtin_ia32_pmullq256_mask ((__v4di) __A,
50               (__v4di) __B,
51               (__v4di)
52               _mm256_setzero_si256 (),
53               (__mmask8) __U);
54 }
55
56 static __inline__ __m128i __DEFAULT_FN_ATTRS
57 _mm_mullo_epi64 (__m128i __A, __m128i __B) {
58   return (__m128i) ((__v2di) __A * (__v2di) __B);
59 }
60
61 static __inline__ __m128i __DEFAULT_FN_ATTRS
62 _mm_mask_mullo_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
63   return (__m128i) __builtin_ia32_pmullq128_mask ((__v2di) __A,
64               (__v2di) __B,
65               (__v2di) __W,
66               (__mmask8) __U);
67 }
68
69 static __inline__ __m128i __DEFAULT_FN_ATTRS
70 _mm_maskz_mullo_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
71   return (__m128i) __builtin_ia32_pmullq128_mask ((__v2di) __A,
72               (__v2di) __B,
73               (__v2di)
74               _mm_setzero_si128 (),
75               (__mmask8) __U);
76 }
77
78 static __inline__ __m256d __DEFAULT_FN_ATTRS
79 _mm256_mask_andnot_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
80   return (__m256d) __builtin_ia32_andnpd256_mask ((__v4df) __A,
81               (__v4df) __B,
82               (__v4df) __W,
83               (__mmask8) __U);
84 }
85
86 static __inline__ __m256d __DEFAULT_FN_ATTRS
87 _mm256_maskz_andnot_pd (__mmask8 __U, __m256d __A, __m256d __B) {
88   return (__m256d) __builtin_ia32_andnpd256_mask ((__v4df) __A,
89               (__v4df) __B,
90               (__v4df)
91               _mm256_setzero_pd (),
92               (__mmask8) __U);
93 }
94
95 static __inline__ __m128d __DEFAULT_FN_ATTRS
96 _mm_mask_andnot_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
97   return (__m128d) __builtin_ia32_andnpd128_mask ((__v2df) __A,
98               (__v2df) __B,
99               (__v2df) __W,
100               (__mmask8) __U);
101 }
102
103 static __inline__ __m128d __DEFAULT_FN_ATTRS
104 _mm_maskz_andnot_pd (__mmask8 __U, __m128d __A, __m128d __B) {
105   return (__m128d) __builtin_ia32_andnpd128_mask ((__v2df) __A,
106               (__v2df) __B,
107               (__v2df)
108               _mm_setzero_pd (),
109               (__mmask8) __U);
110 }
111
112 static __inline__ __m256 __DEFAULT_FN_ATTRS
113 _mm256_mask_andnot_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
114   return (__m256) __builtin_ia32_andnps256_mask ((__v8sf) __A,
115              (__v8sf) __B,
116              (__v8sf) __W,
117              (__mmask8) __U);
118 }
119
120 static __inline__ __m256 __DEFAULT_FN_ATTRS
121 _mm256_maskz_andnot_ps (__mmask8 __U, __m256 __A, __m256 __B) {
122   return (__m256) __builtin_ia32_andnps256_mask ((__v8sf) __A,
123              (__v8sf) __B,
124              (__v8sf)
125              _mm256_setzero_ps (),
126              (__mmask8) __U);
127 }
128
129 static __inline__ __m128 __DEFAULT_FN_ATTRS
130 _mm_mask_andnot_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
131   return (__m128) __builtin_ia32_andnps128_mask ((__v4sf) __A,
132              (__v4sf) __B,
133              (__v4sf) __W,
134              (__mmask8) __U);
135 }
136
137 static __inline__ __m128 __DEFAULT_FN_ATTRS
138 _mm_maskz_andnot_ps (__mmask8 __U, __m128 __A, __m128 __B) {
139   return (__m128) __builtin_ia32_andnps128_mask ((__v4sf) __A,
140              (__v4sf) __B,
141              (__v4sf)
142              _mm_setzero_ps (),
143              (__mmask8) __U);
144 }
145
146 static __inline__ __m256d __DEFAULT_FN_ATTRS
147 _mm256_mask_and_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
148   return (__m256d) __builtin_ia32_andpd256_mask ((__v4df) __A,
149              (__v4df) __B,
150              (__v4df) __W,
151              (__mmask8) __U);
152 }
153
154 static __inline__ __m256d __DEFAULT_FN_ATTRS
155 _mm256_maskz_and_pd (__mmask8 __U, __m256d __A, __m256d __B) {
156   return (__m256d) __builtin_ia32_andpd256_mask ((__v4df) __A,
157              (__v4df) __B,
158              (__v4df)
159              _mm256_setzero_pd (),
160              (__mmask8) __U);
161 }
162
163 static __inline__ __m128d __DEFAULT_FN_ATTRS
164 _mm_mask_and_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
165   return (__m128d) __builtin_ia32_andpd128_mask ((__v2df) __A,
166              (__v2df) __B,
167              (__v2df) __W,
168              (__mmask8) __U);
169 }
170
171 static __inline__ __m128d __DEFAULT_FN_ATTRS
172 _mm_maskz_and_pd (__mmask8 __U, __m128d __A, __m128d __B) {
173   return (__m128d) __builtin_ia32_andpd128_mask ((__v2df) __A,
174              (__v2df) __B,
175              (__v2df)
176              _mm_setzero_pd (),
177              (__mmask8) __U);
178 }
179
180 static __inline__ __m256 __DEFAULT_FN_ATTRS
181 _mm256_mask_and_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
182   return (__m256) __builtin_ia32_andps256_mask ((__v8sf) __A,
183             (__v8sf) __B,
184             (__v8sf) __W,
185             (__mmask8) __U);
186 }
187
188 static __inline__ __m256 __DEFAULT_FN_ATTRS
189 _mm256_maskz_and_ps (__mmask8 __U, __m256 __A, __m256 __B) {
190   return (__m256) __builtin_ia32_andps256_mask ((__v8sf) __A,
191             (__v8sf) __B,
192             (__v8sf)
193             _mm256_setzero_ps (),
194             (__mmask8) __U);
195 }
196
197 static __inline__ __m128 __DEFAULT_FN_ATTRS
198 _mm_mask_and_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
199   return (__m128) __builtin_ia32_andps128_mask ((__v4sf) __A,
200             (__v4sf) __B,
201             (__v4sf) __W,
202             (__mmask8) __U);
203 }
204
205 static __inline__ __m128 __DEFAULT_FN_ATTRS
206 _mm_maskz_and_ps (__mmask8 __U, __m128 __A, __m128 __B) {
207   return (__m128) __builtin_ia32_andps128_mask ((__v4sf) __A,
208             (__v4sf) __B,
209             (__v4sf)
210             _mm_setzero_ps (),
211             (__mmask8) __U);
212 }
213
214 static __inline__ __m256d __DEFAULT_FN_ATTRS
215 _mm256_mask_xor_pd (__m256d __W, __mmask8 __U, __m256d __A,
216         __m256d __B) {
217   return (__m256d) __builtin_ia32_xorpd256_mask ((__v4df) __A,
218              (__v4df) __B,
219              (__v4df) __W,
220              (__mmask8) __U);
221 }
222
223 static __inline__ __m256d __DEFAULT_FN_ATTRS
224 _mm256_maskz_xor_pd (__mmask8 __U, __m256d __A, __m256d __B) {
225   return (__m256d) __builtin_ia32_xorpd256_mask ((__v4df) __A,
226              (__v4df) __B,
227              (__v4df)
228              _mm256_setzero_pd (),
229              (__mmask8) __U);
230 }
231
232 static __inline__ __m128d __DEFAULT_FN_ATTRS
233 _mm_mask_xor_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
234   return (__m128d) __builtin_ia32_xorpd128_mask ((__v2df) __A,
235              (__v2df) __B,
236              (__v2df) __W,
237              (__mmask8) __U);
238 }
239
240 static __inline__ __m128d __DEFAULT_FN_ATTRS
241 _mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {
242   return (__m128d) __builtin_ia32_xorpd128_mask ((__v2df) __A,
243              (__v2df) __B,
244              (__v2df)
245              _mm_setzero_pd (),
246              (__mmask8) __U);
247 }
248
249 static __inline__ __m256 __DEFAULT_FN_ATTRS
250 _mm256_mask_xor_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
251   return (__m256) __builtin_ia32_xorps256_mask ((__v8sf) __A,
252             (__v8sf) __B,
253             (__v8sf) __W,
254             (__mmask8) __U);
255 }
256
257 static __inline__ __m256 __DEFAULT_FN_ATTRS
258 _mm256_maskz_xor_ps (__mmask8 __U, __m256 __A, __m256 __B) {
259   return (__m256) __builtin_ia32_xorps256_mask ((__v8sf) __A,
260             (__v8sf) __B,
261             (__v8sf)
262             _mm256_setzero_ps (),
263             (__mmask8) __U);
264 }
265
266 static __inline__ __m128 __DEFAULT_FN_ATTRS
267 _mm_mask_xor_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
268   return (__m128) __builtin_ia32_xorps128_mask ((__v4sf) __A,
269             (__v4sf) __B,
270             (__v4sf) __W,
271             (__mmask8) __U);
272 }
273
274 static __inline__ __m128 __DEFAULT_FN_ATTRS
275 _mm_maskz_xor_ps (__mmask8 __U, __m128 __A, __m128 __B) {
276   return (__m128) __builtin_ia32_xorps128_mask ((__v4sf) __A,
277             (__v4sf) __B,
278             (__v4sf)
279             _mm_setzero_ps (),
280             (__mmask8) __U);
281 }
282
283 static __inline__ __m256d __DEFAULT_FN_ATTRS
284 _mm256_mask_or_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
285   return (__m256d) __builtin_ia32_orpd256_mask ((__v4df) __A,
286             (__v4df) __B,
287             (__v4df) __W,
288             (__mmask8) __U);
289 }
290
291 static __inline__ __m256d __DEFAULT_FN_ATTRS
292 _mm256_maskz_or_pd (__mmask8 __U, __m256d __A, __m256d __B) {
293   return (__m256d) __builtin_ia32_orpd256_mask ((__v4df) __A,
294             (__v4df) __B,
295             (__v4df)
296             _mm256_setzero_pd (),
297             (__mmask8) __U);
298 }
299
300 static __inline__ __m128d __DEFAULT_FN_ATTRS
301 _mm_mask_or_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
302   return (__m128d) __builtin_ia32_orpd128_mask ((__v2df) __A,
303             (__v2df) __B,
304             (__v2df) __W,
305             (__mmask8) __U);
306 }
307
308 static __inline__ __m128d __DEFAULT_FN_ATTRS
309 _mm_maskz_or_pd (__mmask8 __U, __m128d __A, __m128d __B) {
310   return (__m128d) __builtin_ia32_orpd128_mask ((__v2df) __A,
311             (__v2df) __B,
312             (__v2df)
313             _mm_setzero_pd (),
314             (__mmask8) __U);
315 }
316
317 static __inline__ __m256 __DEFAULT_FN_ATTRS
318 _mm256_mask_or_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
319   return (__m256) __builtin_ia32_orps256_mask ((__v8sf) __A,
320                  (__v8sf) __B,
321                  (__v8sf) __W,
322                  (__mmask8) __U);
323 }
324
325 static __inline__ __m256 __DEFAULT_FN_ATTRS
326 _mm256_maskz_or_ps (__mmask8 __U, __m256 __A, __m256 __B) {
327   return (__m256) __builtin_ia32_orps256_mask ((__v8sf) __A,
328                  (__v8sf) __B,
329                  (__v8sf)
330                  _mm256_setzero_ps (),
331                  (__mmask8) __U);
332 }
333
334 static __inline__ __m128 __DEFAULT_FN_ATTRS
335 _mm_mask_or_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
336   return (__m128) __builtin_ia32_orps128_mask ((__v4sf) __A,
337                  (__v4sf) __B,
338                  (__v4sf) __W,
339                  (__mmask8) __U);
340 }
341
342 static __inline__ __m128 __DEFAULT_FN_ATTRS
343 _mm_maskz_or_ps (__mmask8 __U, __m128 __A, __m128 __B) {
344   return (__m128) __builtin_ia32_orps128_mask ((__v4sf) __A,
345                  (__v4sf) __B,
346                  (__v4sf)
347                  _mm_setzero_ps (),
348                  (__mmask8) __U);
349 }
350
351 static __inline__ __m128i __DEFAULT_FN_ATTRS
352 _mm_cvtpd_epi64 (__m128d __A) {
353   return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
354                 (__v2di) _mm_setzero_si128(),
355                 (__mmask8) -1);
356 }
357
358 static __inline__ __m128i __DEFAULT_FN_ATTRS
359 _mm_mask_cvtpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
360   return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
361                 (__v2di) __W,
362                 (__mmask8) __U);
363 }
364
365 static __inline__ __m128i __DEFAULT_FN_ATTRS
366 _mm_maskz_cvtpd_epi64 (__mmask8 __U, __m128d __A) {
367   return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
368                 (__v2di) _mm_setzero_si128(),
369                 (__mmask8) __U);
370 }
371
372 static __inline__ __m256i __DEFAULT_FN_ATTRS
373 _mm256_cvtpd_epi64 (__m256d __A) {
374   return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
375                 (__v4di) _mm256_setzero_si256(),
376                 (__mmask8) -1);
377 }
378
379 static __inline__ __m256i __DEFAULT_FN_ATTRS
380 _mm256_mask_cvtpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
381   return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
382                 (__v4di) __W,
383                 (__mmask8) __U);
384 }
385
386 static __inline__ __m256i __DEFAULT_FN_ATTRS
387 _mm256_maskz_cvtpd_epi64 (__mmask8 __U, __m256d __A) {
388   return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
389                 (__v4di) _mm256_setzero_si256(),
390                 (__mmask8) __U);
391 }
392
393 static __inline__ __m128i __DEFAULT_FN_ATTRS
394 _mm_cvtpd_epu64 (__m128d __A) {
395   return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
396                 (__v2di) _mm_setzero_si128(),
397                 (__mmask8) -1);
398 }
399
400 static __inline__ __m128i __DEFAULT_FN_ATTRS
401 _mm_mask_cvtpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
402   return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
403                 (__v2di) __W,
404                 (__mmask8) __U);
405 }
406
407 static __inline__ __m128i __DEFAULT_FN_ATTRS
408 _mm_maskz_cvtpd_epu64 (__mmask8 __U, __m128d __A) {
409   return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
410                 (__v2di) _mm_setzero_si128(),
411                 (__mmask8) __U);
412 }
413
414 static __inline__ __m256i __DEFAULT_FN_ATTRS
415 _mm256_cvtpd_epu64 (__m256d __A) {
416   return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
417                 (__v4di) _mm256_setzero_si256(),
418                 (__mmask8) -1);
419 }
420
421 static __inline__ __m256i __DEFAULT_FN_ATTRS
422 _mm256_mask_cvtpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
423   return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
424                 (__v4di) __W,
425                 (__mmask8) __U);
426 }
427
428 static __inline__ __m256i __DEFAULT_FN_ATTRS
429 _mm256_maskz_cvtpd_epu64 (__mmask8 __U, __m256d __A) {
430   return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
431                 (__v4di) _mm256_setzero_si256(),
432                 (__mmask8) __U);
433 }
434
435 static __inline__ __m128i __DEFAULT_FN_ATTRS
436 _mm_cvtps_epi64 (__m128 __A) {
437   return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
438                 (__v2di) _mm_setzero_si128(),
439                 (__mmask8) -1);
440 }
441
442 static __inline__ __m128i __DEFAULT_FN_ATTRS
443 _mm_mask_cvtps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
444   return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
445                 (__v2di) __W,
446                 (__mmask8) __U);
447 }
448
449 static __inline__ __m128i __DEFAULT_FN_ATTRS
450 _mm_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
451   return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
452                 (__v2di) _mm_setzero_si128(),
453                 (__mmask8) __U);
454 }
455
456 static __inline__ __m256i __DEFAULT_FN_ATTRS
457 _mm256_cvtps_epi64 (__m128 __A) {
458   return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
459                 (__v4di) _mm256_setzero_si256(),
460                 (__mmask8) -1);
461 }
462
463 static __inline__ __m256i __DEFAULT_FN_ATTRS
464 _mm256_mask_cvtps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
465   return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
466                 (__v4di) __W,
467                 (__mmask8) __U);
468 }
469
470 static __inline__ __m256i __DEFAULT_FN_ATTRS
471 _mm256_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
472   return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
473                 (__v4di) _mm256_setzero_si256(),
474                 (__mmask8) __U);
475 }
476
477 static __inline__ __m128i __DEFAULT_FN_ATTRS
478 _mm_cvtps_epu64 (__m128 __A) {
479   return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
480                 (__v2di) _mm_setzero_si128(),
481                 (__mmask8) -1);
482 }
483
484 static __inline__ __m128i __DEFAULT_FN_ATTRS
485 _mm_mask_cvtps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
486   return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
487                 (__v2di) __W,
488                 (__mmask8) __U);
489 }
490
491 static __inline__ __m128i __DEFAULT_FN_ATTRS
492 _mm_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
493   return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
494                 (__v2di) _mm_setzero_si128(),
495                 (__mmask8) __U);
496 }
497
498 static __inline__ __m256i __DEFAULT_FN_ATTRS
499 _mm256_cvtps_epu64 (__m128 __A) {
500   return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
501                 (__v4di) _mm256_setzero_si256(),
502                 (__mmask8) -1);
503 }
504
505 static __inline__ __m256i __DEFAULT_FN_ATTRS
506 _mm256_mask_cvtps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
507   return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
508                 (__v4di) __W,
509                 (__mmask8) __U);
510 }
511
512 static __inline__ __m256i __DEFAULT_FN_ATTRS
513 _mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
514   return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
515                 (__v4di) _mm256_setzero_si256(),
516                 (__mmask8) __U);
517 }
518
519 static __inline__ __m128d __DEFAULT_FN_ATTRS
520 _mm_cvtepi64_pd (__m128i __A) {
521   return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
522                 (__v2df) _mm_setzero_pd(),
523                 (__mmask8) -1);
524 }
525
526 static __inline__ __m128d __DEFAULT_FN_ATTRS
527 _mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
528   return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
529                 (__v2df) __W,
530                 (__mmask8) __U);
531 }
532
533 static __inline__ __m128d __DEFAULT_FN_ATTRS
534 _mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) {
535   return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
536                 (__v2df) _mm_setzero_pd(),
537                 (__mmask8) __U);
538 }
539
540 static __inline__ __m256d __DEFAULT_FN_ATTRS
541 _mm256_cvtepi64_pd (__m256i __A) {
542   return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
543                 (__v4df) _mm256_setzero_pd(),
544                 (__mmask8) -1);
545 }
546
547 static __inline__ __m256d __DEFAULT_FN_ATTRS
548 _mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
549   return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
550                 (__v4df) __W,
551                 (__mmask8) __U);
552 }
553
554 static __inline__ __m256d __DEFAULT_FN_ATTRS
555 _mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) {
556   return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
557                 (__v4df) _mm256_setzero_pd(),
558                 (__mmask8) __U);
559 }
560
561 static __inline__ __m128 __DEFAULT_FN_ATTRS
562 _mm_cvtepi64_ps (__m128i __A) {
563   return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
564                 (__v4sf) _mm_setzero_ps(),
565                 (__mmask8) -1);
566 }
567
568 static __inline__ __m128 __DEFAULT_FN_ATTRS
569 _mm_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
570   return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
571                 (__v4sf) __W,
572                 (__mmask8) __U);
573 }
574
575 static __inline__ __m128 __DEFAULT_FN_ATTRS
576 _mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A) {
577   return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
578                 (__v4sf) _mm_setzero_ps(),
579                 (__mmask8) __U);
580 }
581
582 static __inline__ __m128 __DEFAULT_FN_ATTRS
583 _mm256_cvtepi64_ps (__m256i __A) {
584   return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
585                 (__v4sf) _mm_setzero_ps(),
586                 (__mmask8) -1);
587 }
588
589 static __inline__ __m128 __DEFAULT_FN_ATTRS
590 _mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
591   return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
592                 (__v4sf) __W,
593                 (__mmask8) __U);
594 }
595
596 static __inline__ __m128 __DEFAULT_FN_ATTRS
597 _mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A) {
598   return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
599                 (__v4sf) _mm_setzero_ps(),
600                 (__mmask8) __U);
601 }
602
603 static __inline__ __m128i __DEFAULT_FN_ATTRS
604 _mm_cvttpd_epi64 (__m128d __A) {
605   return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
606                 (__v2di) _mm_setzero_si128(),
607                 (__mmask8) -1);
608 }
609
610 static __inline__ __m128i __DEFAULT_FN_ATTRS
611 _mm_mask_cvttpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
612   return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
613                 (__v2di) __W,
614                 (__mmask8) __U);
615 }
616
617 static __inline__ __m128i __DEFAULT_FN_ATTRS
618 _mm_maskz_cvttpd_epi64 (__mmask8 __U, __m128d __A) {
619   return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
620                 (__v2di) _mm_setzero_si128(),
621                 (__mmask8) __U);
622 }
623
624 static __inline__ __m256i __DEFAULT_FN_ATTRS
625 _mm256_cvttpd_epi64 (__m256d __A) {
626   return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
627                 (__v4di) _mm256_setzero_si256(),
628                 (__mmask8) -1);
629 }
630
631 static __inline__ __m256i __DEFAULT_FN_ATTRS
632 _mm256_mask_cvttpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
633   return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
634                 (__v4di) __W,
635                 (__mmask8) __U);
636 }
637
638 static __inline__ __m256i __DEFAULT_FN_ATTRS
639 _mm256_maskz_cvttpd_epi64 (__mmask8 __U, __m256d __A) {
640   return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
641                 (__v4di) _mm256_setzero_si256(),
642                 (__mmask8) __U);
643 }
644
645 static __inline__ __m128i __DEFAULT_FN_ATTRS
646 _mm_cvttpd_epu64 (__m128d __A) {
647   return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
648                 (__v2di) _mm_setzero_si128(),
649                 (__mmask8) -1);
650 }
651
652 static __inline__ __m128i __DEFAULT_FN_ATTRS
653 _mm_mask_cvttpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
654   return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
655                 (__v2di) __W,
656                 (__mmask8) __U);
657 }
658
659 static __inline__ __m128i __DEFAULT_FN_ATTRS
660 _mm_maskz_cvttpd_epu64 (__mmask8 __U, __m128d __A) {
661   return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
662                 (__v2di) _mm_setzero_si128(),
663                 (__mmask8) __U);
664 }
665
666 static __inline__ __m256i __DEFAULT_FN_ATTRS
667 _mm256_cvttpd_epu64 (__m256d __A) {
668   return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
669                 (__v4di) _mm256_setzero_si256(),
670                 (__mmask8) -1);
671 }
672
673 static __inline__ __m256i __DEFAULT_FN_ATTRS
674 _mm256_mask_cvttpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
675   return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
676                 (__v4di) __W,
677                 (__mmask8) __U);
678 }
679
680 static __inline__ __m256i __DEFAULT_FN_ATTRS
681 _mm256_maskz_cvttpd_epu64 (__mmask8 __U, __m256d __A) {
682   return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
683                 (__v4di) _mm256_setzero_si256(),
684                 (__mmask8) __U);
685 }
686
687 static __inline__ __m128i __DEFAULT_FN_ATTRS
688 _mm_cvttps_epi64 (__m128 __A) {
689   return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
690                 (__v2di) _mm_setzero_si128(),
691                 (__mmask8) -1);
692 }
693
694 static __inline__ __m128i __DEFAULT_FN_ATTRS
695 _mm_mask_cvttps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
696   return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
697                 (__v2di) __W,
698                 (__mmask8) __U);
699 }
700
701 static __inline__ __m128i __DEFAULT_FN_ATTRS
702 _mm_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
703   return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
704                 (__v2di) _mm_setzero_si128(),
705                 (__mmask8) __U);
706 }
707
708 static __inline__ __m256i __DEFAULT_FN_ATTRS
709 _mm256_cvttps_epi64 (__m128 __A) {
710   return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
711                 (__v4di) _mm256_setzero_si256(),
712                 (__mmask8) -1);
713 }
714
715 static __inline__ __m256i __DEFAULT_FN_ATTRS
716 _mm256_mask_cvttps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
717   return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
718                 (__v4di) __W,
719                 (__mmask8) __U);
720 }
721
722 static __inline__ __m256i __DEFAULT_FN_ATTRS
723 _mm256_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
724   return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
725                 (__v4di) _mm256_setzero_si256(),
726                 (__mmask8) __U);
727 }
728
729 static __inline__ __m128i __DEFAULT_FN_ATTRS
730 _mm_cvttps_epu64 (__m128 __A) {
731   return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
732                 (__v2di) _mm_setzero_si128(),
733                 (__mmask8) -1);
734 }
735
736 static __inline__ __m128i __DEFAULT_FN_ATTRS
737 _mm_mask_cvttps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
738   return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
739                 (__v2di) __W,
740                 (__mmask8) __U);
741 }
742
743 static __inline__ __m128i __DEFAULT_FN_ATTRS
744 _mm_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
745   return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
746                 (__v2di) _mm_setzero_si128(),
747                 (__mmask8) __U);
748 }
749
750 static __inline__ __m256i __DEFAULT_FN_ATTRS
751 _mm256_cvttps_epu64 (__m128 __A) {
752   return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
753                 (__v4di) _mm256_setzero_si256(),
754                 (__mmask8) -1);
755 }
756
757 static __inline__ __m256i __DEFAULT_FN_ATTRS
758 _mm256_mask_cvttps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
759   return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
760                 (__v4di) __W,
761                 (__mmask8) __U);
762 }
763
764 static __inline__ __m256i __DEFAULT_FN_ATTRS
765 _mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
766   return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
767                 (__v4di) _mm256_setzero_si256(),
768                 (__mmask8) __U);
769 }
770
771 static __inline__ __m128d __DEFAULT_FN_ATTRS
772 _mm_cvtepu64_pd (__m128i __A) {
773   return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
774                 (__v2df) _mm_setzero_pd(),
775                 (__mmask8) -1);
776 }
777
778 static __inline__ __m128d __DEFAULT_FN_ATTRS
779 _mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
780   return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
781                 (__v2df) __W,
782                 (__mmask8) __U);
783 }
784
785 static __inline__ __m128d __DEFAULT_FN_ATTRS
786 _mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) {
787   return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
788                 (__v2df) _mm_setzero_pd(),
789                 (__mmask8) __U);
790 }
791
792 static __inline__ __m256d __DEFAULT_FN_ATTRS
793 _mm256_cvtepu64_pd (__m256i __A) {
794   return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
795                 (__v4df) _mm256_setzero_pd(),
796                 (__mmask8) -1);
797 }
798
799 static __inline__ __m256d __DEFAULT_FN_ATTRS
800 _mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
801   return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
802                 (__v4df) __W,
803                 (__mmask8) __U);
804 }
805
806 static __inline__ __m256d __DEFAULT_FN_ATTRS
807 _mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) {
808   return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
809                 (__v4df) _mm256_setzero_pd(),
810                 (__mmask8) __U);
811 }
812
813 static __inline__ __m128 __DEFAULT_FN_ATTRS
814 _mm_cvtepu64_ps (__m128i __A) {
815   return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
816                 (__v4sf) _mm_setzero_ps(),
817                 (__mmask8) -1);
818 }
819
820 static __inline__ __m128 __DEFAULT_FN_ATTRS
821 _mm_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
822   return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
823                 (__v4sf) __W,
824                 (__mmask8) __U);
825 }
826
827 static __inline__ __m128 __DEFAULT_FN_ATTRS
828 _mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A) {
829   return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
830                 (__v4sf) _mm_setzero_ps(),
831                 (__mmask8) __U);
832 }
833
834 static __inline__ __m128 __DEFAULT_FN_ATTRS
835 _mm256_cvtepu64_ps (__m256i __A) {
836   return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
837                 (__v4sf) _mm_setzero_ps(),
838                 (__mmask8) -1);
839 }
840
841 static __inline__ __m128 __DEFAULT_FN_ATTRS
842 _mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
843   return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
844                 (__v4sf) __W,
845                 (__mmask8) __U);
846 }
847
848 static __inline__ __m128 __DEFAULT_FN_ATTRS
849 _mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A) {
850   return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
851                 (__v4sf) _mm_setzero_ps(),
852                 (__mmask8) __U);
853 }
854
855 #define _mm_range_pd(__A, __B, __C) __extension__ ({                         \
856   (__m128d) __builtin_ia32_rangepd128_mask ((__v2df) __A, (__v2df) __B, __C, \
857                 (__v2df) _mm_setzero_pd(), (__mmask8) -1); })
858
859 #define _mm_mask_range_pd(__W, __U, __A, __B, __C) __extension__ ({          \
860   (__m128d) __builtin_ia32_rangepd128_mask ((__v2df) __A, (__v2df) __B, __C, \
861                 (__v2df) __W, (__mmask8) __U); })
862
863 #define _mm_maskz_range_pd(__U, __A, __B, __C) __extension__ ({              \
864   (__m128d) __builtin_ia32_rangepd128_mask ((__v2df) __A, (__v2df) __B, __C, \
865                 (__v2df) _mm_setzero_pd(), (__mmask8) __U); })
866
867 #define _mm256_range_pd(__A, __B, __C) __extension__ ({                      \
868   (__m256d) __builtin_ia32_rangepd256_mask ((__v4df) __A, (__v4df) __B, __C, \
869                 (__v4df) _mm256_setzero_pd(), (__mmask8) -1); })
870
871 #define _mm256_mask_range_pd(__W, __U, __A, __B, __C) __extension__ ({       \
872   (__m256d) __builtin_ia32_rangepd256_mask ((__v4df) __A, (__v4df) __B, __C, \
873                 (__v4df) __W, (__mmask8) __U); })
874
875 #define _mm256_maskz_range_pd(__U, __A, __B, __C) __extension__ ({           \
876   (__m256d) __builtin_ia32_rangepd256_mask ((__v4df) __A, (__v4df) __B, __C, \
877                 (__v4df) _mm256_setzero_pd(), (__mmask8) __U); })
878
879 #define _mm_range_ps(__A, __B, __C) __extension__ ({                         \
880   (__m128) __builtin_ia32_rangeps128_mask ((__v4sf) __A, (__v4sf) __B, __C,  \
881                 (__v4sf) _mm_setzero_ps(), (__mmask8) -1); })
882
883 #define _mm_mask_range_ps(__W, __U, __A, __B, __C) __extension__ ({          \
884   (__m128) __builtin_ia32_rangeps128_mask ((__v4sf) __A, (__v4sf) __B, __C,  \
885                 (__v4sf) __W, (__mmask8) __U); })
886
887 #define _mm_maskz_range_ps(__U, __A, __B, __C) __extension__ ({              \
888   (__m128) __builtin_ia32_rangeps128_mask ((__v4sf) __A, (__v4sf) __B, __C,  \
889                 (__v4sf) _mm_setzero_ps(), (__mmask8) __U); })
890
891 #define _mm256_range_ps(__A, __B, __C) __extension__ ({                      \
892   (__m256) __builtin_ia32_rangeps256_mask ((__v8sf) __A, (__v8sf) __B, __C,  \
893                 (__v8sf) _mm256_setzero_ps(), (__mmask8) -1); })
894
895 #define _mm256_mask_range_ps(__W, __U, __A, __B, __C) __extension__ ({       \
896   (__m256) __builtin_ia32_rangeps256_mask ((__v8sf) __A, (__v8sf) __B, __C,  \
897                 (__v8sf) __W, (__mmask8) __U); })
898
899 #define _mm256_maskz_range_ps(__U, __A, __B, __C) __extension__ ({           \
900   (__m256) __builtin_ia32_rangeps256_mask ((__v8sf) __A, (__v8sf) __B, __C,  \
901                 (__v8sf) _mm256_setzero_ps(), (__mmask8) __U); })
902
903 #define _mm_reduce_pd(__A, __B) __extension__ ({                \
904   (__m128d) __builtin_ia32_reducepd128_mask ((__v2df) __A, __B, \
905                 (__v2df) _mm_setzero_pd(), (__mmask8) -1); })
906
907 #define _mm_mask_reduce_pd(__W, __U, __A, __B) __extension__ ({ \
908   (__m128d) __builtin_ia32_reducepd128_mask ((__v2df) __A, __B, \
909                 (__v2df) __W, (__mmask8) __U); })
910
911 #define _mm_maskz_reduce_pd(__U, __A, __B) __extension__ ({     \
912   (__m128d) __builtin_ia32_reducepd128_mask ((__v2df) __A, __B, \
913                 (__v2df) _mm_setzero_pd(), (__mmask8) __U); })
914
915 #define _mm256_reduce_pd(__A, __B) __extension__ ({                \
916   (__m256d) __builtin_ia32_reducepd256_mask ((__v4df) __A, __B,    \
917                 (__v4df) _mm256_setzero_pd(), (__mmask8) -1); })
918
919 #define _mm256_mask_reduce_pd(__W, __U, __A, __B) __extension__ ({ \
920   (__m256d) __builtin_ia32_reducepd256_mask ((__v4df) __A, __B,    \
921                 (__v4df) __W, (__mmask8) __U); })
922
923 #define _mm256_maskz_reduce_pd(__U, __A, __B) __extension__ ({     \
924   (__m256d) __builtin_ia32_reducepd256_mask ((__v4df) __A, __B,    \
925                 (__v4df) _mm256_setzero_pd(), (__mmask8) __U); })
926
927 #define _mm_reduce_ps(__A, __B) __extension__ ({                   \
928   (__m128) __builtin_ia32_reduceps128_mask ((__v4sf) __A, __B,     \
929                 (__v4sf) _mm_setzero_ps(), (__mmask8) -1); })
930
931 #define _mm_mask_reduce_ps(__W, __U, __A, __B) __extension__ ({    \
932   (__m128) __builtin_ia32_reduceps128_mask ((__v4sf) __A, __B,     \
933                 (__v4sf) __W, (__mmask8) __U); })
934
935 #define _mm_maskz_reduce_ps(__U, __A, __B) __extension__ ({        \
936   (__m128) __builtin_ia32_reduceps128_mask ((__v4sf) __A, __B,     \
937                 (__v4sf) _mm_setzero_ps(), (__mmask8) __U); })
938
939 #define _mm256_reduce_ps(__A, __B) __extension__ ({                \
940   (__m256) __builtin_ia32_reduceps256_mask ((__v8sf) __A, __B,     \
941                 (__v8sf) _mm256_setzero_ps(), (__mmask8) -1); })
942
943 #define _mm256_mask_reduce_ps(__W, __U, __A, __B) __extension__ ({ \
944   (__m256) __builtin_ia32_reduceps256_mask ((__v8sf) __A, __B,     \
945                 (__v8sf) __W, (__mmask8) __U); })
946
947 #define _mm256_maskz_reduce_ps(__U, __A, __B) __extension__ ({     \
948   (__m256) __builtin_ia32_reduceps256_mask ((__v8sf) __A, __B,     \
949                 (__v8sf) _mm256_setzero_ps(), (__mmask8) __U); })
950
951 #undef __DEFAULT_FN_ATTRS
952
953 #endif