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