blob: 9d13846e8964ed5386801281298d85981ceb669e [file] [log] [blame]
Craig Topper880f60b2015-11-11 08:00:39 +00001/*===---- avx512vldqintrin.h - AVX512VL and AVX512DQ intrinsics ------------===
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00002 *
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 */
Sean Silvae4c37602015-09-12 02:55:19 +000023
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000024#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
Eric Christopher4d1851682015-06-17 07:09:20 +000031/* Define the default attributes for the functions in this file. */
Craig Topper74c10e32018-07-09 19:00:16 +000032#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)))
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000034
Craig Topper74c10e32018-07-09 19:00:16 +000035static __inline__ __m256i __DEFAULT_FN_ATTRS256
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000036_mm256_mullo_epi64 (__m256i __A, __m256i __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000037 return (__m256i) ((__v4du) __A * (__v4du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000038}
39
Craig Topper74c10e32018-07-09 19:00:16 +000040static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf43e4a12016-09-03 19:19:49 +000041_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000045}
46
Craig Topper74c10e32018-07-09 19:00:16 +000047static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf43e4a12016-09-03 19:19:49 +000048_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000052}
53
Craig Topper74c10e32018-07-09 19:00:16 +000054static __inline__ __m128i __DEFAULT_FN_ATTRS128
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000055_mm_mullo_epi64 (__m128i __A, __m128i __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000056 return (__m128i) ((__v2du) __A * (__v2du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000057}
58
Craig Topper74c10e32018-07-09 19:00:16 +000059static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf43e4a12016-09-03 19:19:49 +000060_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000064}
65
Craig Topper74c10e32018-07-09 19:00:16 +000066static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf43e4a12016-09-03 19:19:49 +000067_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000071}
72
Craig Topper74c10e32018-07-09 19:00:16 +000073static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +000074_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000078}
79
Craig Topper74c10e32018-07-09 19:00:16 +000080static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +000081_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000085}
86
Craig Topper74c10e32018-07-09 19:00:16 +000087static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +000088_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000092}
93
Craig Topper74c10e32018-07-09 19:00:16 +000094static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +000095_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000099}
100
Craig Topper74c10e32018-07-09 19:00:16 +0000101static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000102_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000106}
107
Craig Topper74c10e32018-07-09 19:00:16 +0000108static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000109_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000113}
114
Craig Topper74c10e32018-07-09 19:00:16 +0000115static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000116_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000120}
121
Craig Topper74c10e32018-07-09 19:00:16 +0000122static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000123_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000127}
128
Craig Topper74c10e32018-07-09 19:00:16 +0000129static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000130_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000134}
135
Craig Topper74c10e32018-07-09 19:00:16 +0000136static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000137_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000141}
142
Craig Topper74c10e32018-07-09 19:00:16 +0000143static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000144_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000148}
149
Craig Topper74c10e32018-07-09 19:00:16 +0000150static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000151_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000155}
156
Craig Topper74c10e32018-07-09 19:00:16 +0000157static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000158_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000162}
163
Craig Topper74c10e32018-07-09 19:00:16 +0000164static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000165_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000169}
170
Craig Topper74c10e32018-07-09 19:00:16 +0000171static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000172_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000176}
177
Craig Topper74c10e32018-07-09 19:00:16 +0000178static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000179_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000183}
184
Craig Topper74c10e32018-07-09 19:00:16 +0000185static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000186_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000190}
191
Craig Topper74c10e32018-07-09 19:00:16 +0000192static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000193_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000197}
198
Craig Topper74c10e32018-07-09 19:00:16 +0000199static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000200_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000204}
205
Craig Topper74c10e32018-07-09 19:00:16 +0000206static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000207_mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {
Craig Toppera815f482016-08-31 05:38:58 +0000208 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
209 (__v2df)_mm_xor_pd(__A, __B),
210 (__v2df)_mm_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000211}
212
Craig Topper74c10e32018-07-09 19:00:16 +0000213static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000214_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000218}
219
Craig Topper74c10e32018-07-09 19:00:16 +0000220static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000221_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000225}
226
Craig Topper74c10e32018-07-09 19:00:16 +0000227static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000228_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000232}
233
Craig Topper74c10e32018-07-09 19:00:16 +0000234static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000235_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000239}
240
Craig Topper74c10e32018-07-09 19:00:16 +0000241static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000242_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000246}
247
Craig Topper74c10e32018-07-09 19:00:16 +0000248static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000249_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000253}
254
Craig Topper74c10e32018-07-09 19:00:16 +0000255static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000256_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000260}
261
Craig Topper74c10e32018-07-09 19:00:16 +0000262static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000263_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000267}
268
Craig Topper74c10e32018-07-09 19:00:16 +0000269static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000270_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000274}
275
Craig Topper74c10e32018-07-09 19:00:16 +0000276static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Toppera815f482016-08-31 05:38:58 +0000277_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000281}
282
Craig Topper74c10e32018-07-09 19:00:16 +0000283static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000284_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);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000288}
289
Craig Topper74c10e32018-07-09 19:00:16 +0000290static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Toppera815f482016-08-31 05:38:58 +0000291_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());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000295}
296
Craig Topper74c10e32018-07-09 19:00:16 +0000297static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000298_mm_cvtpd_epi64 (__m128d __A) {
299 return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
300 (__v2di) _mm_setzero_si128(),
301 (__mmask8) -1);
302}
303
Craig Topper74c10e32018-07-09 19:00:16 +0000304static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000305_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
Craig Topper74c10e32018-07-09 19:00:16 +0000311static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000312_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
Craig Topper74c10e32018-07-09 19:00:16 +0000318static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000319_mm256_cvtpd_epi64 (__m256d __A) {
320 return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
321 (__v4di) _mm256_setzero_si256(),
322 (__mmask8) -1);
323}
324
Craig Topper74c10e32018-07-09 19:00:16 +0000325static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000326_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
Craig Topper74c10e32018-07-09 19:00:16 +0000332static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000333_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
Craig Topper74c10e32018-07-09 19:00:16 +0000339static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000340_mm_cvtpd_epu64 (__m128d __A) {
341 return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
342 (__v2di) _mm_setzero_si128(),
343 (__mmask8) -1);
344}
345
Craig Topper74c10e32018-07-09 19:00:16 +0000346static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000347_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
Craig Topper74c10e32018-07-09 19:00:16 +0000353static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000354_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
Craig Topper74c10e32018-07-09 19:00:16 +0000360static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000361_mm256_cvtpd_epu64 (__m256d __A) {
362 return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
363 (__v4di) _mm256_setzero_si256(),
364 (__mmask8) -1);
365}
366
Craig Topper74c10e32018-07-09 19:00:16 +0000367static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000368_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
Craig Topper74c10e32018-07-09 19:00:16 +0000374static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000375_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
Craig Topper74c10e32018-07-09 19:00:16 +0000381static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000382_mm_cvtps_epi64 (__m128 __A) {
383 return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
384 (__v2di) _mm_setzero_si128(),
385 (__mmask8) -1);
386}
387
Craig Topper74c10e32018-07-09 19:00:16 +0000388static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000389_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
Craig Topper74c10e32018-07-09 19:00:16 +0000395static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000396_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
Craig Topper74c10e32018-07-09 19:00:16 +0000402static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000403_mm256_cvtps_epi64 (__m128 __A) {
404 return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
405 (__v4di) _mm256_setzero_si256(),
406 (__mmask8) -1);
407}
408
Craig Topper74c10e32018-07-09 19:00:16 +0000409static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000410_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
Craig Topper74c10e32018-07-09 19:00:16 +0000416static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000417_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
Craig Topper74c10e32018-07-09 19:00:16 +0000423static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000424_mm_cvtps_epu64 (__m128 __A) {
425 return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
426 (__v2di) _mm_setzero_si128(),
427 (__mmask8) -1);
428}
429
Craig Topper74c10e32018-07-09 19:00:16 +0000430static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000431_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
Craig Topper74c10e32018-07-09 19:00:16 +0000437static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000438_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
Craig Topper74c10e32018-07-09 19:00:16 +0000444static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000445_mm256_cvtps_epu64 (__m128 __A) {
446 return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
447 (__v4di) _mm256_setzero_si256(),
448 (__mmask8) -1);
449}
450
Craig Topper74c10e32018-07-09 19:00:16 +0000451static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000452_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
Craig Topper74c10e32018-07-09 19:00:16 +0000458static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000459_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
Craig Topper74c10e32018-07-09 19:00:16 +0000465static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000466_mm_cvtepi64_pd (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000467 return (__m128d)__builtin_convertvector((__v2di)__A, __v2df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000468}
469
Craig Topper74c10e32018-07-09 19:00:16 +0000470static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000471_mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000472 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
473 (__v2df)_mm_cvtepi64_pd(__A),
474 (__v2df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000475}
476
Craig Topper74c10e32018-07-09 19:00:16 +0000477static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000478_mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000479 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
480 (__v2df)_mm_cvtepi64_pd(__A),
481 (__v2df)_mm_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000482}
483
Craig Topper74c10e32018-07-09 19:00:16 +0000484static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000485_mm256_cvtepi64_pd (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000486 return (__m256d)__builtin_convertvector((__v4di)__A, __v4df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000487}
488
Craig Topper74c10e32018-07-09 19:00:16 +0000489static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000490_mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000491 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
492 (__v4df)_mm256_cvtepi64_pd(__A),
493 (__v4df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000494}
495
Craig Topper74c10e32018-07-09 19:00:16 +0000496static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000497_mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000498 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
499 (__v4df)_mm256_cvtepi64_pd(__A),
500 (__v4df)_mm256_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000501}
502
Craig Topper74c10e32018-07-09 19:00:16 +0000503static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000504_mm_cvtepi64_ps (__m128i __A) {
505 return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
506 (__v4sf) _mm_setzero_ps(),
507 (__mmask8) -1);
508}
509
Craig Topper74c10e32018-07-09 19:00:16 +0000510static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000511_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
Craig Topper74c10e32018-07-09 19:00:16 +0000517static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000518_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
Craig Topper74c10e32018-07-09 19:00:16 +0000524static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000525_mm256_cvtepi64_ps (__m256i __A) {
526 return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
527 (__v4sf) _mm_setzero_ps(),
528 (__mmask8) -1);
529}
530
Craig Topper74c10e32018-07-09 19:00:16 +0000531static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000532_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
Craig Topper74c10e32018-07-09 19:00:16 +0000538static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000539_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
Craig Topper74c10e32018-07-09 19:00:16 +0000545static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000546_mm_cvttpd_epi64 (__m128d __A) {
547 return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
548 (__v2di) _mm_setzero_si128(),
549 (__mmask8) -1);
550}
551
Craig Topper74c10e32018-07-09 19:00:16 +0000552static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000553_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
Craig Topper74c10e32018-07-09 19:00:16 +0000559static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000560_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
Craig Topper74c10e32018-07-09 19:00:16 +0000566static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000567_mm256_cvttpd_epi64 (__m256d __A) {
568 return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
569 (__v4di) _mm256_setzero_si256(),
570 (__mmask8) -1);
571}
572
Craig Topper74c10e32018-07-09 19:00:16 +0000573static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000574_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
Craig Topper74c10e32018-07-09 19:00:16 +0000580static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000581_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
Craig Topper74c10e32018-07-09 19:00:16 +0000587static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000588_mm_cvttpd_epu64 (__m128d __A) {
589 return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
590 (__v2di) _mm_setzero_si128(),
591 (__mmask8) -1);
592}
593
Craig Topper74c10e32018-07-09 19:00:16 +0000594static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000595_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
Craig Topper74c10e32018-07-09 19:00:16 +0000601static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000602_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
Craig Topper74c10e32018-07-09 19:00:16 +0000608static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000609_mm256_cvttpd_epu64 (__m256d __A) {
610 return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
611 (__v4di) _mm256_setzero_si256(),
612 (__mmask8) -1);
613}
614
Craig Topper74c10e32018-07-09 19:00:16 +0000615static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000616_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
Craig Topper74c10e32018-07-09 19:00:16 +0000622static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000623_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
Craig Topper74c10e32018-07-09 19:00:16 +0000629static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000630_mm_cvttps_epi64 (__m128 __A) {
631 return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
632 (__v2di) _mm_setzero_si128(),
633 (__mmask8) -1);
634}
635
Craig Topper74c10e32018-07-09 19:00:16 +0000636static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000637_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
Craig Topper74c10e32018-07-09 19:00:16 +0000643static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000644_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
Craig Topper74c10e32018-07-09 19:00:16 +0000650static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000651_mm256_cvttps_epi64 (__m128 __A) {
652 return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
653 (__v4di) _mm256_setzero_si256(),
654 (__mmask8) -1);
655}
656
Craig Topper74c10e32018-07-09 19:00:16 +0000657static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000658_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
Craig Topper74c10e32018-07-09 19:00:16 +0000664static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000665_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
Craig Topper74c10e32018-07-09 19:00:16 +0000671static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000672_mm_cvttps_epu64 (__m128 __A) {
673 return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
674 (__v2di) _mm_setzero_si128(),
675 (__mmask8) -1);
676}
677
Craig Topper74c10e32018-07-09 19:00:16 +0000678static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000679_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
Craig Topper74c10e32018-07-09 19:00:16 +0000685static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000686_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
Craig Topper74c10e32018-07-09 19:00:16 +0000692static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000693_mm256_cvttps_epu64 (__m128 __A) {
694 return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
695 (__v4di) _mm256_setzero_si256(),
696 (__mmask8) -1);
697}
698
Craig Topper74c10e32018-07-09 19:00:16 +0000699static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000700_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
Craig Topper74c10e32018-07-09 19:00:16 +0000706static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000707_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
Craig Topper74c10e32018-07-09 19:00:16 +0000713static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000714_mm_cvtepu64_pd (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000715 return (__m128d)__builtin_convertvector((__v2du)__A, __v2df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000716}
717
Craig Topper74c10e32018-07-09 19:00:16 +0000718static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000719_mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000720 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
721 (__v2df)_mm_cvtepu64_pd(__A),
722 (__v2df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000723}
724
Craig Topper74c10e32018-07-09 19:00:16 +0000725static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000726_mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000727 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
728 (__v2df)_mm_cvtepu64_pd(__A),
729 (__v2df)_mm_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000730}
731
Craig Topper74c10e32018-07-09 19:00:16 +0000732static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000733_mm256_cvtepu64_pd (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000734 return (__m256d)__builtin_convertvector((__v4du)__A, __v4df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000735}
736
Craig Topper74c10e32018-07-09 19:00:16 +0000737static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000738_mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000739 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
740 (__v4df)_mm256_cvtepu64_pd(__A),
741 (__v4df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000742}
743
Craig Topper74c10e32018-07-09 19:00:16 +0000744static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000745_mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000746 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
747 (__v4df)_mm256_cvtepu64_pd(__A),
748 (__v4df)_mm256_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000749}
750
Craig Topper74c10e32018-07-09 19:00:16 +0000751static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000752_mm_cvtepu64_ps (__m128i __A) {
753 return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
754 (__v4sf) _mm_setzero_ps(),
755 (__mmask8) -1);
756}
757
Craig Topper74c10e32018-07-09 19:00:16 +0000758static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000759_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
Craig Topper74c10e32018-07-09 19:00:16 +0000765static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh73b639f2015-08-02 12:43:08 +0000766_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
Craig Topper74c10e32018-07-09 19:00:16 +0000772static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000773_mm256_cvtepu64_ps (__m256i __A) {
774 return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
775 (__v4sf) _mm_setzero_ps(),
776 (__mmask8) -1);
777}
778
Craig Topper74c10e32018-07-09 19:00:16 +0000779static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000780_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
Craig Topper74c10e32018-07-09 19:00:16 +0000786static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh73b639f2015-08-02 12:43:08 +0000787_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
Craig Topperc6338672018-05-31 00:51:20 +0000793#define _mm_range_pd(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000794 (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
795 (__v2df)(__m128d)(B), (int)(C), \
796 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000797 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000798
Craig Topperc6338672018-05-31 00:51:20 +0000799#define _mm_mask_range_pd(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000800 (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
801 (__v2df)(__m128d)(B), (int)(C), \
802 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000803 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000804
Craig Topperc6338672018-05-31 00:51:20 +0000805#define _mm_maskz_range_pd(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000806 (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
807 (__v2df)(__m128d)(B), (int)(C), \
808 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000809 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000810
Craig Topperc6338672018-05-31 00:51:20 +0000811#define _mm256_range_pd(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000812 (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
813 (__v4df)(__m256d)(B), (int)(C), \
814 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000815 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000816
Craig Topperc6338672018-05-31 00:51:20 +0000817#define _mm256_mask_range_pd(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000818 (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
819 (__v4df)(__m256d)(B), (int)(C), \
820 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000821 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000822
Craig Topperc6338672018-05-31 00:51:20 +0000823#define _mm256_maskz_range_pd(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000824 (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
825 (__v4df)(__m256d)(B), (int)(C), \
826 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000827 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000828
Craig Topperc6338672018-05-31 00:51:20 +0000829#define _mm_range_ps(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000830 (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
831 (__v4sf)(__m128)(B), (int)(C), \
832 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000833 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000834
Craig Topperc6338672018-05-31 00:51:20 +0000835#define _mm_mask_range_ps(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000836 (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
837 (__v4sf)(__m128)(B), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000838 (__v4sf)(__m128)(W), (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000839
Craig Topperc6338672018-05-31 00:51:20 +0000840#define _mm_maskz_range_ps(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000841 (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
842 (__v4sf)(__m128)(B), (int)(C), \
843 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000844 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000845
Craig Topperc6338672018-05-31 00:51:20 +0000846#define _mm256_range_ps(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000847 (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
848 (__v8sf)(__m256)(B), (int)(C), \
849 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000850 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000851
Craig Topperc6338672018-05-31 00:51:20 +0000852#define _mm256_mask_range_ps(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000853 (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
854 (__v8sf)(__m256)(B), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000855 (__v8sf)(__m256)(W), (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000856
Craig Topperc6338672018-05-31 00:51:20 +0000857#define _mm256_maskz_range_ps(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000858 (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
859 (__v8sf)(__m256)(B), (int)(C), \
860 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000861 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000862
Craig Topperc6338672018-05-31 00:51:20 +0000863#define _mm_reduce_pd(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000864 (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
865 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000866 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000867
Craig Topperc6338672018-05-31 00:51:20 +0000868#define _mm_mask_reduce_pd(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000869 (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
870 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000871 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000872
Craig Topperc6338672018-05-31 00:51:20 +0000873#define _mm_maskz_reduce_pd(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000874 (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
875 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000876 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000877
Craig Topperc6338672018-05-31 00:51:20 +0000878#define _mm256_reduce_pd(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000879 (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
880 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000881 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000882
Craig Topperc6338672018-05-31 00:51:20 +0000883#define _mm256_mask_reduce_pd(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000884 (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
885 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000886 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000887
Craig Topperc6338672018-05-31 00:51:20 +0000888#define _mm256_maskz_reduce_pd(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000889 (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
890 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000891 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000892
Craig Topperc6338672018-05-31 00:51:20 +0000893#define _mm_reduce_ps(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000894 (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
895 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000896 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000897
Craig Topperc6338672018-05-31 00:51:20 +0000898#define _mm_mask_reduce_ps(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000899 (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
900 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000901 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000902
Craig Topperc6338672018-05-31 00:51:20 +0000903#define _mm_maskz_reduce_ps(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000904 (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
905 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000906 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000907
Craig Topperc6338672018-05-31 00:51:20 +0000908#define _mm256_reduce_ps(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000909 (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
910 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000911 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000912
Craig Topperc6338672018-05-31 00:51:20 +0000913#define _mm256_mask_reduce_ps(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000914 (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
915 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000916 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000917
Craig Topperc6338672018-05-31 00:51:20 +0000918#define _mm256_maskz_reduce_ps(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000919 (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
920 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000921 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000922
Craig Topper74c10e32018-07-09 19:00:16 +0000923static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman074edd72016-04-13 10:49:37 +0000924_mm_movepi32_mask (__m128i __A)
925{
926 return (__mmask8) __builtin_ia32_cvtd2mask128 ((__v4si) __A);
927}
928
Craig Topper74c10e32018-07-09 19:00:16 +0000929static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman074edd72016-04-13 10:49:37 +0000930_mm256_movepi32_mask (__m256i __A)
931{
932 return (__mmask8) __builtin_ia32_cvtd2mask256 ((__v8si) __A);
933}
934
Craig Topper74c10e32018-07-09 19:00:16 +0000935static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman074edd72016-04-13 10:49:37 +0000936_mm_movm_epi32 (__mmask8 __A)
937{
938 return (__m128i) __builtin_ia32_cvtmask2d128 (__A);
939}
940
Craig Topper74c10e32018-07-09 19:00:16 +0000941static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman074edd72016-04-13 10:49:37 +0000942_mm256_movm_epi32 (__mmask8 __A)
943{
944 return (__m256i) __builtin_ia32_cvtmask2d256 (__A);
945}
946
Craig Topper74c10e32018-07-09 19:00:16 +0000947static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman074edd72016-04-13 10:49:37 +0000948_mm_movm_epi64 (__mmask8 __A)
949{
950 return (__m128i) __builtin_ia32_cvtmask2q128 (__A);
951}
952
Craig Topper74c10e32018-07-09 19:00:16 +0000953static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman074edd72016-04-13 10:49:37 +0000954_mm256_movm_epi64 (__mmask8 __A)
955{
956 return (__m256i) __builtin_ia32_cvtmask2q256 (__A);
957}
958
Craig Topper74c10e32018-07-09 19:00:16 +0000959static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman074edd72016-04-13 10:49:37 +0000960_mm_movepi64_mask (__m128i __A)
961{
962 return (__mmask8) __builtin_ia32_cvtq2mask128 ((__v2di) __A);
963}
964
Craig Topper74c10e32018-07-09 19:00:16 +0000965static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman074edd72016-04-13 10:49:37 +0000966_mm256_movepi64_mask (__m256i __A)
967{
968 return (__mmask8) __builtin_ia32_cvtq2mask256 ((__v4di) __A);
969}
970
Craig Topper74c10e32018-07-09 19:00:16 +0000971static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000972_mm256_broadcast_f32x2 (__m128 __A)
973{
Craig Topper95ed88a2018-06-04 19:28:09 +0000974 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +0000975 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000976}
977
Craig Topper74c10e32018-07-09 19:00:16 +0000978static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000979_mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
980{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000981 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
982 (__v8sf)_mm256_broadcast_f32x2(__A),
983 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000984}
985
Craig Topper74c10e32018-07-09 19:00:16 +0000986static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000987_mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
988{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000989 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
990 (__v8sf)_mm256_broadcast_f32x2(__A),
991 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000992}
993
Craig Topper74c10e32018-07-09 19:00:16 +0000994static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +0000995_mm256_broadcast_f64x2(__m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000996{
Craig Topper367c86d2017-01-18 02:17:10 +0000997 return (__m256d)__builtin_shufflevector((__v2df)__A, (__v2df)__A,
998 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000999}
1000
Craig Topper74c10e32018-07-09 19:00:16 +00001001static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00001002_mm256_mask_broadcast_f64x2(__m256d __O, __mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001003{
Craig Topper367c86d2017-01-18 02:17:10 +00001004 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__M,
1005 (__v4df)_mm256_broadcast_f64x2(__A),
1006 (__v4df)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001007}
1008
Craig Topper74c10e32018-07-09 19:00:16 +00001009static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001010_mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1011{
Craig Topper367c86d2017-01-18 02:17:10 +00001012 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__M,
1013 (__v4df)_mm256_broadcast_f64x2(__A),
1014 (__v4df)_mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001015}
1016
Craig Topper74c10e32018-07-09 19:00:16 +00001017static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001018_mm_broadcast_i32x2 (__m128i __A)
1019{
Craig Topper95ed88a2018-06-04 19:28:09 +00001020 return (__m128i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +00001021 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001022}
1023
Craig Topper74c10e32018-07-09 19:00:16 +00001024static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001025_mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
1026{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001027 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1028 (__v4si)_mm_broadcast_i32x2(__A),
1029 (__v4si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001030}
1031
Craig Topper74c10e32018-07-09 19:00:16 +00001032static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001033_mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1034{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001035 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1036 (__v4si)_mm_broadcast_i32x2(__A),
1037 (__v4si)_mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001038}
1039
Craig Topper74c10e32018-07-09 19:00:16 +00001040static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001041_mm256_broadcast_i32x2 (__m128i __A)
1042{
Craig Topper95ed88a2018-06-04 19:28:09 +00001043 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +00001044 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001045}
1046
Craig Topper74c10e32018-07-09 19:00:16 +00001047static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001048_mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
1049{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001050 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1051 (__v8si)_mm256_broadcast_i32x2(__A),
1052 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001053}
1054
Craig Topper74c10e32018-07-09 19:00:16 +00001055static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001056_mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1057{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001058 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1059 (__v8si)_mm256_broadcast_i32x2(__A),
1060 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001061}
1062
Craig Topper74c10e32018-07-09 19:00:16 +00001063static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00001064_mm256_broadcast_i64x2(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001065{
Craig Topper367c86d2017-01-18 02:17:10 +00001066 return (__m256i)__builtin_shufflevector((__v2di)__A, (__v2di)__A,
1067 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001068}
1069
Craig Topper74c10e32018-07-09 19:00:16 +00001070static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00001071_mm256_mask_broadcast_i64x2(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001072{
Craig Topper367c86d2017-01-18 02:17:10 +00001073 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
1074 (__v4di)_mm256_broadcast_i64x2(__A),
1075 (__v4di)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001076}
1077
Craig Topper74c10e32018-07-09 19:00:16 +00001078static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001079_mm256_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
1080{
Craig Topper367c86d2017-01-18 02:17:10 +00001081 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
1082 (__v4di)_mm256_broadcast_i64x2(__A),
1083 (__v4di)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001084}
1085
Craig Topperc6338672018-05-31 00:51:20 +00001086#define _mm256_extractf64x2_pd(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001087 (__m128d)__builtin_ia32_extractf64x2_256_mask((__v4df)(__m256d)(A), \
1088 (int)(imm), \
1089 (__v2df)_mm_undefined_pd(), \
1090 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001091
Craig Topperc6338672018-05-31 00:51:20 +00001092#define _mm256_mask_extractf64x2_pd(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001093 (__m128d)__builtin_ia32_extractf64x2_256_mask((__v4df)(__m256d)(A), \
1094 (int)(imm), \
1095 (__v2df)(__m128d)(W), \
1096 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001097
Craig Topperc6338672018-05-31 00:51:20 +00001098#define _mm256_maskz_extractf64x2_pd(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001099 (__m128d)__builtin_ia32_extractf64x2_256_mask((__v4df)(__m256d)(A), \
1100 (int)(imm), \
1101 (__v2df)_mm_setzero_pd(), \
1102 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001103
Craig Topperc6338672018-05-31 00:51:20 +00001104#define _mm256_extracti64x2_epi64(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001105 (__m128i)__builtin_ia32_extracti64x2_256_mask((__v4di)(__m256i)(A), \
1106 (int)(imm), \
1107 (__v2di)_mm_undefined_si128(), \
1108 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001109
Craig Topperc6338672018-05-31 00:51:20 +00001110#define _mm256_mask_extracti64x2_epi64(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001111 (__m128i)__builtin_ia32_extracti64x2_256_mask((__v4di)(__m256i)(A), \
1112 (int)(imm), \
1113 (__v2di)(__m128i)(W), \
1114 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001115
Craig Topperc6338672018-05-31 00:51:20 +00001116#define _mm256_maskz_extracti64x2_epi64(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00001117 (__m128i)__builtin_ia32_extracti64x2_256_mask((__v4di)(__m256i)(A), \
1118 (int)(imm), \
1119 (__v2di)_mm_setzero_si128(), \
1120 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001121
Craig Topperc6338672018-05-31 00:51:20 +00001122#define _mm256_insertf64x2(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001123 (__m256d)__builtin_ia32_insertf64x2_256((__v4df)(__m256d)(A), \
1124 (__v2df)(__m128d)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001125
Craig Topperc6338672018-05-31 00:51:20 +00001126#define _mm256_mask_insertf64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001127 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
1128 (__v4df)_mm256_insertf64x2((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001129 (__v4df)(__m256d)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001130
Craig Topperc6338672018-05-31 00:51:20 +00001131#define _mm256_maskz_insertf64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001132 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
1133 (__v4df)_mm256_insertf64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001134 (__v4df)_mm256_setzero_pd())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001135
Craig Topperc6338672018-05-31 00:51:20 +00001136#define _mm256_inserti64x2(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001137 (__m256i)__builtin_ia32_inserti64x2_256((__v4di)(__m256i)(A), \
1138 (__v2di)(__m128i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001139
Craig Topperc6338672018-05-31 00:51:20 +00001140#define _mm256_mask_inserti64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001141 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
1142 (__v4di)_mm256_inserti64x2((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001143 (__v4di)(__m256i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001144
Craig Topperc6338672018-05-31 00:51:20 +00001145#define _mm256_maskz_inserti64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001146 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
1147 (__v4di)_mm256_inserti64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001148 (__v4di)_mm256_setzero_si256())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001149
Craig Topperc6338672018-05-31 00:51:20 +00001150#define _mm_mask_fpclass_pd_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001151 (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001152 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001153
Craig Topperc6338672018-05-31 00:51:20 +00001154#define _mm_fpclass_pd_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001155 (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001156 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001157
Craig Topperc6338672018-05-31 00:51:20 +00001158#define _mm256_mask_fpclass_pd_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001159 (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001160 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001161
Craig Topperc6338672018-05-31 00:51:20 +00001162#define _mm256_fpclass_pd_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001163 (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001164 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001165
Craig Topperc6338672018-05-31 00:51:20 +00001166#define _mm_mask_fpclass_ps_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001167 (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001168 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001169
Craig Topperc6338672018-05-31 00:51:20 +00001170#define _mm_fpclass_ps_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001171 (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001172 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001173
Craig Topperc6338672018-05-31 00:51:20 +00001174#define _mm256_mask_fpclass_ps_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001175 (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001176 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001177
Craig Topperc6338672018-05-31 00:51:20 +00001178#define _mm256_fpclass_ps_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001179 (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001180 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001181
Craig Topper74c10e32018-07-09 19:00:16 +00001182#undef __DEFAULT_FN_ATTRS128
1183#undef __DEFAULT_FN_ATTRS256
Eric Christopher4d1851682015-06-17 07:09:20 +00001184
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001185#endif