blob: 8d6ff3ec8d9774d5bd767441e0dbd38189cd16ea [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. */
Michael Kupersteine45af542015-06-30 13:36:19 +000032#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512dq")))
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000033
Michael Kupersteine45af542015-06-30 13:36:19 +000034static __inline__ __m256i __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000035_mm256_mullo_epi64 (__m256i __A, __m256i __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000036 return (__m256i) ((__v4du) __A * (__v4du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000037}
38
Michael Kupersteine45af542015-06-30 13:36:19 +000039static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +000040_mm256_mask_mullo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
41 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
42 (__v4di)_mm256_mullo_epi64(__A, __B),
43 (__v4di)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000044}
45
Michael Kupersteine45af542015-06-30 13:36:19 +000046static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +000047_mm256_maskz_mullo_epi64(__mmask8 __U, __m256i __A, __m256i __B) {
48 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
49 (__v4di)_mm256_mullo_epi64(__A, __B),
50 (__v4di)_mm256_setzero_si256());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000051}
52
Michael Kupersteine45af542015-06-30 13:36:19 +000053static __inline__ __m128i __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000054_mm_mullo_epi64 (__m128i __A, __m128i __B) {
Craig Topper6a77b622016-06-04 05:43:41 +000055 return (__m128i) ((__v2du) __A * (__v2du) __B);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000056}
57
Michael Kupersteine45af542015-06-30 13:36:19 +000058static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +000059_mm_mask_mullo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
60 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
61 (__v2di)_mm_mullo_epi64(__A, __B),
62 (__v2di)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000063}
64
Michael Kupersteine45af542015-06-30 13:36:19 +000065static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +000066_mm_maskz_mullo_epi64(__mmask8 __U, __m128i __A, __m128i __B) {
67 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
68 (__v2di)_mm_mullo_epi64(__A, __B),
69 (__v2di)_mm_setzero_si128());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000070}
71
Michael Kupersteine45af542015-06-30 13:36:19 +000072static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000073_mm256_mask_andnot_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
74 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
75 (__v4df)_mm256_andnot_pd(__A, __B),
76 (__v4df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000077}
78
Michael Kupersteine45af542015-06-30 13:36:19 +000079static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000080_mm256_maskz_andnot_pd(__mmask8 __U, __m256d __A, __m256d __B) {
81 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
82 (__v4df)_mm256_andnot_pd(__A, __B),
83 (__v4df)_mm256_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000084}
85
Michael Kupersteine45af542015-06-30 13:36:19 +000086static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000087_mm_mask_andnot_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
88 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
89 (__v2df)_mm_andnot_pd(__A, __B),
90 (__v2df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000091}
92
Michael Kupersteine45af542015-06-30 13:36:19 +000093static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +000094_mm_maskz_andnot_pd(__mmask8 __U, __m128d __A, __m128d __B) {
95 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
96 (__v2df)_mm_andnot_pd(__A, __B),
97 (__v2df)_mm_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +000098}
99
Michael Kupersteine45af542015-06-30 13:36:19 +0000100static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000101_mm256_mask_andnot_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
102 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
103 (__v8sf)_mm256_andnot_ps(__A, __B),
104 (__v8sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000105}
106
Michael Kupersteine45af542015-06-30 13:36:19 +0000107static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000108_mm256_maskz_andnot_ps(__mmask8 __U, __m256 __A, __m256 __B) {
109 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
110 (__v8sf)_mm256_andnot_ps(__A, __B),
111 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000112}
113
Michael Kupersteine45af542015-06-30 13:36:19 +0000114static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000115_mm_mask_andnot_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
116 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
117 (__v4sf)_mm_andnot_ps(__A, __B),
118 (__v4sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000119}
120
Michael Kupersteine45af542015-06-30 13:36:19 +0000121static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000122_mm_maskz_andnot_ps(__mmask8 __U, __m128 __A, __m128 __B) {
123 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
124 (__v4sf)_mm_andnot_ps(__A, __B),
125 (__v4sf)_mm_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000126}
127
Michael Kupersteine45af542015-06-30 13:36:19 +0000128static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000129_mm256_mask_and_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
130 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
131 (__v4df)_mm256_and_pd(__A, __B),
132 (__v4df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000133}
134
Michael Kupersteine45af542015-06-30 13:36:19 +0000135static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000136_mm256_maskz_and_pd(__mmask8 __U, __m256d __A, __m256d __B) {
137 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
138 (__v4df)_mm256_and_pd(__A, __B),
139 (__v4df)_mm256_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000140}
141
Michael Kupersteine45af542015-06-30 13:36:19 +0000142static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000143_mm_mask_and_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
144 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
145 (__v2df)_mm_and_pd(__A, __B),
146 (__v2df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000147}
148
Michael Kupersteine45af542015-06-30 13:36:19 +0000149static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000150_mm_maskz_and_pd(__mmask8 __U, __m128d __A, __m128d __B) {
151 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
152 (__v2df)_mm_and_pd(__A, __B),
153 (__v2df)_mm_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000154}
155
Michael Kupersteine45af542015-06-30 13:36:19 +0000156static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000157_mm256_mask_and_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
158 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
159 (__v8sf)_mm256_and_ps(__A, __B),
160 (__v8sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000161}
162
Michael Kupersteine45af542015-06-30 13:36:19 +0000163static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000164_mm256_maskz_and_ps(__mmask8 __U, __m256 __A, __m256 __B) {
165 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
166 (__v8sf)_mm256_and_ps(__A, __B),
167 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000168}
169
Michael Kupersteine45af542015-06-30 13:36:19 +0000170static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000171_mm_mask_and_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
172 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
173 (__v4sf)_mm_and_ps(__A, __B),
174 (__v4sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000175}
176
Michael Kupersteine45af542015-06-30 13:36:19 +0000177static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000178_mm_maskz_and_ps(__mmask8 __U, __m128 __A, __m128 __B) {
179 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
180 (__v4sf)_mm_and_ps(__A, __B),
181 (__v4sf)_mm_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000182}
183
Michael Kupersteine45af542015-06-30 13:36:19 +0000184static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000185_mm256_mask_xor_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
186 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
187 (__v4df)_mm256_xor_pd(__A, __B),
188 (__v4df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000189}
190
Michael Kupersteine45af542015-06-30 13:36:19 +0000191static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000192_mm256_maskz_xor_pd(__mmask8 __U, __m256d __A, __m256d __B) {
193 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
194 (__v4df)_mm256_xor_pd(__A, __B),
195 (__v4df)_mm256_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000196}
197
Michael Kupersteine45af542015-06-30 13:36:19 +0000198static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000199_mm_mask_xor_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
200 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
201 (__v2df)_mm_xor_pd(__A, __B),
202 (__v2df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000203}
204
Michael Kupersteine45af542015-06-30 13:36:19 +0000205static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000206_mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {
Craig Toppera815f482016-08-31 05:38:58 +0000207 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
208 (__v2df)_mm_xor_pd(__A, __B),
209 (__v2df)_mm_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000210}
211
Michael Kupersteine45af542015-06-30 13:36:19 +0000212static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000213_mm256_mask_xor_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
214 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
215 (__v8sf)_mm256_xor_ps(__A, __B),
216 (__v8sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000217}
218
Michael Kupersteine45af542015-06-30 13:36:19 +0000219static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000220_mm256_maskz_xor_ps(__mmask8 __U, __m256 __A, __m256 __B) {
221 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
222 (__v8sf)_mm256_xor_ps(__A, __B),
223 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000224}
225
Michael Kupersteine45af542015-06-30 13:36:19 +0000226static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000227_mm_mask_xor_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
228 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
229 (__v4sf)_mm_xor_ps(__A, __B),
230 (__v4sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000231}
232
Michael Kupersteine45af542015-06-30 13:36:19 +0000233static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000234_mm_maskz_xor_ps(__mmask8 __U, __m128 __A, __m128 __B) {
235 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
236 (__v4sf)_mm_xor_ps(__A, __B),
237 (__v4sf)_mm_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000238}
239
Michael Kupersteine45af542015-06-30 13:36:19 +0000240static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000241_mm256_mask_or_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
242 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
243 (__v4df)_mm256_or_pd(__A, __B),
244 (__v4df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000245}
246
Michael Kupersteine45af542015-06-30 13:36:19 +0000247static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000248_mm256_maskz_or_pd(__mmask8 __U, __m256d __A, __m256d __B) {
249 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
250 (__v4df)_mm256_or_pd(__A, __B),
251 (__v4df)_mm256_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000252}
253
Michael Kupersteine45af542015-06-30 13:36:19 +0000254static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000255_mm_mask_or_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
256 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
257 (__v2df)_mm_or_pd(__A, __B),
258 (__v2df)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000259}
260
Michael Kupersteine45af542015-06-30 13:36:19 +0000261static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000262_mm_maskz_or_pd(__mmask8 __U, __m128d __A, __m128d __B) {
263 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
264 (__v2df)_mm_or_pd(__A, __B),
265 (__v2df)_mm_setzero_pd());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000266}
267
Michael Kupersteine45af542015-06-30 13:36:19 +0000268static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000269_mm256_mask_or_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
270 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
271 (__v8sf)_mm256_or_ps(__A, __B),
272 (__v8sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000273}
274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000276_mm256_maskz_or_ps(__mmask8 __U, __m256 __A, __m256 __B) {
277 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
278 (__v8sf)_mm256_or_ps(__A, __B),
279 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000280}
281
Michael Kupersteine45af542015-06-30 13:36:19 +0000282static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000283_mm_mask_or_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
284 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
285 (__v4sf)_mm_or_ps(__A, __B),
286 (__v4sf)__W);
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000287}
288
Michael Kupersteine45af542015-06-30 13:36:19 +0000289static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Toppera815f482016-08-31 05:38:58 +0000290_mm_maskz_or_ps(__mmask8 __U, __m128 __A, __m128 __B) {
291 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
292 (__v4sf)_mm_or_ps(__A, __B),
293 (__v4sf)_mm_setzero_ps());
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +0000294}
295
Asaf Badouh73b639f2015-08-02 12:43:08 +0000296static __inline__ __m128i __DEFAULT_FN_ATTRS
297_mm_cvtpd_epi64 (__m128d __A) {
298 return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
299 (__v2di) _mm_setzero_si128(),
300 (__mmask8) -1);
301}
302
303static __inline__ __m128i __DEFAULT_FN_ATTRS
304_mm_mask_cvtpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
305 return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
306 (__v2di) __W,
307 (__mmask8) __U);
308}
309
310static __inline__ __m128i __DEFAULT_FN_ATTRS
311_mm_maskz_cvtpd_epi64 (__mmask8 __U, __m128d __A) {
312 return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
313 (__v2di) _mm_setzero_si128(),
314 (__mmask8) __U);
315}
316
317static __inline__ __m256i __DEFAULT_FN_ATTRS
318_mm256_cvtpd_epi64 (__m256d __A) {
319 return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
320 (__v4di) _mm256_setzero_si256(),
321 (__mmask8) -1);
322}
323
324static __inline__ __m256i __DEFAULT_FN_ATTRS
325_mm256_mask_cvtpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
326 return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
327 (__v4di) __W,
328 (__mmask8) __U);
329}
330
331static __inline__ __m256i __DEFAULT_FN_ATTRS
332_mm256_maskz_cvtpd_epi64 (__mmask8 __U, __m256d __A) {
333 return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
334 (__v4di) _mm256_setzero_si256(),
335 (__mmask8) __U);
336}
337
338static __inline__ __m128i __DEFAULT_FN_ATTRS
339_mm_cvtpd_epu64 (__m128d __A) {
340 return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
341 (__v2di) _mm_setzero_si128(),
342 (__mmask8) -1);
343}
344
345static __inline__ __m128i __DEFAULT_FN_ATTRS
346_mm_mask_cvtpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
347 return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
348 (__v2di) __W,
349 (__mmask8) __U);
350}
351
352static __inline__ __m128i __DEFAULT_FN_ATTRS
353_mm_maskz_cvtpd_epu64 (__mmask8 __U, __m128d __A) {
354 return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
355 (__v2di) _mm_setzero_si128(),
356 (__mmask8) __U);
357}
358
359static __inline__ __m256i __DEFAULT_FN_ATTRS
360_mm256_cvtpd_epu64 (__m256d __A) {
361 return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
362 (__v4di) _mm256_setzero_si256(),
363 (__mmask8) -1);
364}
365
366static __inline__ __m256i __DEFAULT_FN_ATTRS
367_mm256_mask_cvtpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
368 return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
369 (__v4di) __W,
370 (__mmask8) __U);
371}
372
373static __inline__ __m256i __DEFAULT_FN_ATTRS
374_mm256_maskz_cvtpd_epu64 (__mmask8 __U, __m256d __A) {
375 return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
376 (__v4di) _mm256_setzero_si256(),
377 (__mmask8) __U);
378}
379
380static __inline__ __m128i __DEFAULT_FN_ATTRS
381_mm_cvtps_epi64 (__m128 __A) {
382 return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
383 (__v2di) _mm_setzero_si128(),
384 (__mmask8) -1);
385}
386
387static __inline__ __m128i __DEFAULT_FN_ATTRS
388_mm_mask_cvtps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
389 return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
390 (__v2di) __W,
391 (__mmask8) __U);
392}
393
394static __inline__ __m128i __DEFAULT_FN_ATTRS
395_mm_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
396 return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
397 (__v2di) _mm_setzero_si128(),
398 (__mmask8) __U);
399}
400
401static __inline__ __m256i __DEFAULT_FN_ATTRS
402_mm256_cvtps_epi64 (__m128 __A) {
403 return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
404 (__v4di) _mm256_setzero_si256(),
405 (__mmask8) -1);
406}
407
408static __inline__ __m256i __DEFAULT_FN_ATTRS
409_mm256_mask_cvtps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
410 return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
411 (__v4di) __W,
412 (__mmask8) __U);
413}
414
415static __inline__ __m256i __DEFAULT_FN_ATTRS
416_mm256_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
417 return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
418 (__v4di) _mm256_setzero_si256(),
419 (__mmask8) __U);
420}
421
422static __inline__ __m128i __DEFAULT_FN_ATTRS
423_mm_cvtps_epu64 (__m128 __A) {
424 return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
425 (__v2di) _mm_setzero_si128(),
426 (__mmask8) -1);
427}
428
429static __inline__ __m128i __DEFAULT_FN_ATTRS
430_mm_mask_cvtps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
431 return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
432 (__v2di) __W,
433 (__mmask8) __U);
434}
435
436static __inline__ __m128i __DEFAULT_FN_ATTRS
437_mm_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
438 return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
439 (__v2di) _mm_setzero_si128(),
440 (__mmask8) __U);
441}
442
443static __inline__ __m256i __DEFAULT_FN_ATTRS
444_mm256_cvtps_epu64 (__m128 __A) {
445 return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
446 (__v4di) _mm256_setzero_si256(),
447 (__mmask8) -1);
448}
449
450static __inline__ __m256i __DEFAULT_FN_ATTRS
451_mm256_mask_cvtps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
452 return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
453 (__v4di) __W,
454 (__mmask8) __U);
455}
456
457static __inline__ __m256i __DEFAULT_FN_ATTRS
458_mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
459 return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
460 (__v4di) _mm256_setzero_si256(),
461 (__mmask8) __U);
462}
463
464static __inline__ __m128d __DEFAULT_FN_ATTRS
465_mm_cvtepi64_pd (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000466 return (__m128d)__builtin_convertvector((__v2di)__A, __v2df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000467}
468
469static __inline__ __m128d __DEFAULT_FN_ATTRS
470_mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000471 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
472 (__v2df)_mm_cvtepi64_pd(__A),
473 (__v2df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000474}
475
476static __inline__ __m128d __DEFAULT_FN_ATTRS
477_mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000478 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
479 (__v2df)_mm_cvtepi64_pd(__A),
480 (__v2df)_mm_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000481}
482
483static __inline__ __m256d __DEFAULT_FN_ATTRS
484_mm256_cvtepi64_pd (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000485 return (__m256d)__builtin_convertvector((__v4di)__A, __v4df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000486}
487
488static __inline__ __m256d __DEFAULT_FN_ATTRS
489_mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000490 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
491 (__v4df)_mm256_cvtepi64_pd(__A),
492 (__v4df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000493}
494
495static __inline__ __m256d __DEFAULT_FN_ATTRS
496_mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000497 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
498 (__v4df)_mm256_cvtepi64_pd(__A),
499 (__v4df)_mm256_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000500}
501
502static __inline__ __m128 __DEFAULT_FN_ATTRS
503_mm_cvtepi64_ps (__m128i __A) {
504 return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
505 (__v4sf) _mm_setzero_ps(),
506 (__mmask8) -1);
507}
508
509static __inline__ __m128 __DEFAULT_FN_ATTRS
510_mm_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
511 return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
512 (__v4sf) __W,
513 (__mmask8) __U);
514}
515
516static __inline__ __m128 __DEFAULT_FN_ATTRS
517_mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A) {
518 return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
519 (__v4sf) _mm_setzero_ps(),
520 (__mmask8) __U);
521}
522
523static __inline__ __m128 __DEFAULT_FN_ATTRS
524_mm256_cvtepi64_ps (__m256i __A) {
525 return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
526 (__v4sf) _mm_setzero_ps(),
527 (__mmask8) -1);
528}
529
530static __inline__ __m128 __DEFAULT_FN_ATTRS
531_mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
532 return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
533 (__v4sf) __W,
534 (__mmask8) __U);
535}
536
537static __inline__ __m128 __DEFAULT_FN_ATTRS
538_mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A) {
539 return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
540 (__v4sf) _mm_setzero_ps(),
541 (__mmask8) __U);
542}
543
544static __inline__ __m128i __DEFAULT_FN_ATTRS
545_mm_cvttpd_epi64 (__m128d __A) {
546 return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
547 (__v2di) _mm_setzero_si128(),
548 (__mmask8) -1);
549}
550
551static __inline__ __m128i __DEFAULT_FN_ATTRS
552_mm_mask_cvttpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
553 return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
554 (__v2di) __W,
555 (__mmask8) __U);
556}
557
558static __inline__ __m128i __DEFAULT_FN_ATTRS
559_mm_maskz_cvttpd_epi64 (__mmask8 __U, __m128d __A) {
560 return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
561 (__v2di) _mm_setzero_si128(),
562 (__mmask8) __U);
563}
564
565static __inline__ __m256i __DEFAULT_FN_ATTRS
566_mm256_cvttpd_epi64 (__m256d __A) {
567 return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
568 (__v4di) _mm256_setzero_si256(),
569 (__mmask8) -1);
570}
571
572static __inline__ __m256i __DEFAULT_FN_ATTRS
573_mm256_mask_cvttpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
574 return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
575 (__v4di) __W,
576 (__mmask8) __U);
577}
578
579static __inline__ __m256i __DEFAULT_FN_ATTRS
580_mm256_maskz_cvttpd_epi64 (__mmask8 __U, __m256d __A) {
581 return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
582 (__v4di) _mm256_setzero_si256(),
583 (__mmask8) __U);
584}
585
586static __inline__ __m128i __DEFAULT_FN_ATTRS
587_mm_cvttpd_epu64 (__m128d __A) {
588 return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
589 (__v2di) _mm_setzero_si128(),
590 (__mmask8) -1);
591}
592
593static __inline__ __m128i __DEFAULT_FN_ATTRS
594_mm_mask_cvttpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
595 return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
596 (__v2di) __W,
597 (__mmask8) __U);
598}
599
600static __inline__ __m128i __DEFAULT_FN_ATTRS
601_mm_maskz_cvttpd_epu64 (__mmask8 __U, __m128d __A) {
602 return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
603 (__v2di) _mm_setzero_si128(),
604 (__mmask8) __U);
605}
606
607static __inline__ __m256i __DEFAULT_FN_ATTRS
608_mm256_cvttpd_epu64 (__m256d __A) {
609 return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
610 (__v4di) _mm256_setzero_si256(),
611 (__mmask8) -1);
612}
613
614static __inline__ __m256i __DEFAULT_FN_ATTRS
615_mm256_mask_cvttpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
616 return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
617 (__v4di) __W,
618 (__mmask8) __U);
619}
620
621static __inline__ __m256i __DEFAULT_FN_ATTRS
622_mm256_maskz_cvttpd_epu64 (__mmask8 __U, __m256d __A) {
623 return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
624 (__v4di) _mm256_setzero_si256(),
625 (__mmask8) __U);
626}
627
628static __inline__ __m128i __DEFAULT_FN_ATTRS
629_mm_cvttps_epi64 (__m128 __A) {
630 return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
631 (__v2di) _mm_setzero_si128(),
632 (__mmask8) -1);
633}
634
635static __inline__ __m128i __DEFAULT_FN_ATTRS
636_mm_mask_cvttps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
637 return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
638 (__v2di) __W,
639 (__mmask8) __U);
640}
641
642static __inline__ __m128i __DEFAULT_FN_ATTRS
643_mm_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
644 return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
645 (__v2di) _mm_setzero_si128(),
646 (__mmask8) __U);
647}
648
649static __inline__ __m256i __DEFAULT_FN_ATTRS
650_mm256_cvttps_epi64 (__m128 __A) {
651 return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
652 (__v4di) _mm256_setzero_si256(),
653 (__mmask8) -1);
654}
655
656static __inline__ __m256i __DEFAULT_FN_ATTRS
657_mm256_mask_cvttps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
658 return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
659 (__v4di) __W,
660 (__mmask8) __U);
661}
662
663static __inline__ __m256i __DEFAULT_FN_ATTRS
664_mm256_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
665 return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
666 (__v4di) _mm256_setzero_si256(),
667 (__mmask8) __U);
668}
669
670static __inline__ __m128i __DEFAULT_FN_ATTRS
671_mm_cvttps_epu64 (__m128 __A) {
672 return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
673 (__v2di) _mm_setzero_si128(),
674 (__mmask8) -1);
675}
676
677static __inline__ __m128i __DEFAULT_FN_ATTRS
678_mm_mask_cvttps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
679 return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
680 (__v2di) __W,
681 (__mmask8) __U);
682}
683
684static __inline__ __m128i __DEFAULT_FN_ATTRS
685_mm_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
686 return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
687 (__v2di) _mm_setzero_si128(),
688 (__mmask8) __U);
689}
690
691static __inline__ __m256i __DEFAULT_FN_ATTRS
692_mm256_cvttps_epu64 (__m128 __A) {
693 return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
694 (__v4di) _mm256_setzero_si256(),
695 (__mmask8) -1);
696}
697
698static __inline__ __m256i __DEFAULT_FN_ATTRS
699_mm256_mask_cvttps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
700 return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
701 (__v4di) __W,
702 (__mmask8) __U);
703}
704
705static __inline__ __m256i __DEFAULT_FN_ATTRS
706_mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
707 return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
708 (__v4di) _mm256_setzero_si256(),
709 (__mmask8) __U);
710}
711
712static __inline__ __m128d __DEFAULT_FN_ATTRS
713_mm_cvtepu64_pd (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000714 return (__m128d)__builtin_convertvector((__v2du)__A, __v2df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000715}
716
717static __inline__ __m128d __DEFAULT_FN_ATTRS
718_mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000719 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
720 (__v2df)_mm_cvtepu64_pd(__A),
721 (__v2df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000722}
723
724static __inline__ __m128d __DEFAULT_FN_ATTRS
725_mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000726 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
727 (__v2df)_mm_cvtepu64_pd(__A),
728 (__v2df)_mm_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000729}
730
731static __inline__ __m256d __DEFAULT_FN_ATTRS
732_mm256_cvtepu64_pd (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000733 return (__m256d)__builtin_convertvector((__v4du)__A, __v4df);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000734}
735
736static __inline__ __m256d __DEFAULT_FN_ATTRS
737_mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000738 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
739 (__v4df)_mm256_cvtepu64_pd(__A),
740 (__v4df)__W);
Asaf Badouh73b639f2015-08-02 12:43:08 +0000741}
742
743static __inline__ __m256d __DEFAULT_FN_ATTRS
744_mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +0000745 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
746 (__v4df)_mm256_cvtepu64_pd(__A),
747 (__v4df)_mm256_setzero_pd());
Asaf Badouh73b639f2015-08-02 12:43:08 +0000748}
749
750static __inline__ __m128 __DEFAULT_FN_ATTRS
751_mm_cvtepu64_ps (__m128i __A) {
752 return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
753 (__v4sf) _mm_setzero_ps(),
754 (__mmask8) -1);
755}
756
757static __inline__ __m128 __DEFAULT_FN_ATTRS
758_mm_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
759 return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
760 (__v4sf) __W,
761 (__mmask8) __U);
762}
763
764static __inline__ __m128 __DEFAULT_FN_ATTRS
765_mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A) {
766 return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
767 (__v4sf) _mm_setzero_ps(),
768 (__mmask8) __U);
769}
770
771static __inline__ __m128 __DEFAULT_FN_ATTRS
772_mm256_cvtepu64_ps (__m256i __A) {
773 return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
774 (__v4sf) _mm_setzero_ps(),
775 (__mmask8) -1);
776}
777
778static __inline__ __m128 __DEFAULT_FN_ATTRS
779_mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
780 return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
781 (__v4sf) __W,
782 (__mmask8) __U);
783}
784
785static __inline__ __m128 __DEFAULT_FN_ATTRS
786_mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A) {
787 return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
788 (__v4sf) _mm_setzero_ps(),
789 (__mmask8) __U);
790}
791
Craig Topperc6338672018-05-31 00:51:20 +0000792#define _mm_range_pd(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000793 (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
794 (__v2df)(__m128d)(B), (int)(C), \
795 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000796 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000797
Craig Topperc6338672018-05-31 00:51:20 +0000798#define _mm_mask_range_pd(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000799 (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
800 (__v2df)(__m128d)(B), (int)(C), \
801 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000802 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000803
Craig Topperc6338672018-05-31 00:51:20 +0000804#define _mm_maskz_range_pd(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000805 (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
806 (__v2df)(__m128d)(B), (int)(C), \
807 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000808 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000809
Craig Topperc6338672018-05-31 00:51:20 +0000810#define _mm256_range_pd(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000811 (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
812 (__v4df)(__m256d)(B), (int)(C), \
813 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000814 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000815
Craig Topperc6338672018-05-31 00:51:20 +0000816#define _mm256_mask_range_pd(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000817 (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
818 (__v4df)(__m256d)(B), (int)(C), \
819 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000820 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000821
Craig Topperc6338672018-05-31 00:51:20 +0000822#define _mm256_maskz_range_pd(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000823 (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
824 (__v4df)(__m256d)(B), (int)(C), \
825 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000826 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000827
Craig Topperc6338672018-05-31 00:51:20 +0000828#define _mm_range_ps(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000829 (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
830 (__v4sf)(__m128)(B), (int)(C), \
831 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000832 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000833
Craig Topperc6338672018-05-31 00:51:20 +0000834#define _mm_mask_range_ps(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000835 (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
836 (__v4sf)(__m128)(B), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000837 (__v4sf)(__m128)(W), (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000838
Craig Topperc6338672018-05-31 00:51:20 +0000839#define _mm_maskz_range_ps(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000840 (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
841 (__v4sf)(__m128)(B), (int)(C), \
842 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000843 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000844
Craig Topperc6338672018-05-31 00:51:20 +0000845#define _mm256_range_ps(A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000846 (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
847 (__v8sf)(__m256)(B), (int)(C), \
848 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000849 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000850
Craig Topperc6338672018-05-31 00:51:20 +0000851#define _mm256_mask_range_ps(W, U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000852 (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
853 (__v8sf)(__m256)(B), (int)(C), \
Craig Topperc6338672018-05-31 00:51:20 +0000854 (__v8sf)(__m256)(W), (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000855
Craig Topperc6338672018-05-31 00:51:20 +0000856#define _mm256_maskz_range_ps(U, A, B, C) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000857 (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
858 (__v8sf)(__m256)(B), (int)(C), \
859 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000860 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000861
Craig Topperc6338672018-05-31 00:51:20 +0000862#define _mm_reduce_pd(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000863 (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
864 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000865 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000866
Craig Topperc6338672018-05-31 00:51:20 +0000867#define _mm_mask_reduce_pd(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000868 (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
869 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000870 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000871
Craig Topperc6338672018-05-31 00:51:20 +0000872#define _mm_maskz_reduce_pd(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000873 (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
874 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000875 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000876
Craig Topperc6338672018-05-31 00:51:20 +0000877#define _mm256_reduce_pd(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000878 (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
879 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000880 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000881
Craig Topperc6338672018-05-31 00:51:20 +0000882#define _mm256_mask_reduce_pd(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000883 (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
884 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000885 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000886
Craig Topperc6338672018-05-31 00:51:20 +0000887#define _mm256_maskz_reduce_pd(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000888 (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
889 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +0000890 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000891
Craig Topperc6338672018-05-31 00:51:20 +0000892#define _mm_reduce_ps(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000893 (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
894 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000895 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000896
Craig Topperc6338672018-05-31 00:51:20 +0000897#define _mm_mask_reduce_ps(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000898 (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
899 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000900 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000901
Craig Topperc6338672018-05-31 00:51:20 +0000902#define _mm_maskz_reduce_ps(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000903 (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
904 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000905 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000906
Craig Topperc6338672018-05-31 00:51:20 +0000907#define _mm256_reduce_ps(A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000908 (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
909 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000910 (__mmask8)-1)
Asaf Badouh73b639f2015-08-02 12:43:08 +0000911
Craig Topperc6338672018-05-31 00:51:20 +0000912#define _mm256_mask_reduce_ps(W, U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000913 (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
914 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +0000915 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000916
Craig Topperc6338672018-05-31 00:51:20 +0000917#define _mm256_maskz_reduce_ps(U, A, B) \
Craig Topperf2e67a02016-05-17 04:41:46 +0000918 (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
919 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +0000920 (__mmask8)(U))
Asaf Badouh73b639f2015-08-02 12:43:08 +0000921
Michael Zuckerman074edd72016-04-13 10:49:37 +0000922static __inline__ __mmask8 __DEFAULT_FN_ATTRS
923_mm_movepi32_mask (__m128i __A)
924{
925 return (__mmask8) __builtin_ia32_cvtd2mask128 ((__v4si) __A);
926}
927
928static __inline__ __mmask8 __DEFAULT_FN_ATTRS
929_mm256_movepi32_mask (__m256i __A)
930{
931 return (__mmask8) __builtin_ia32_cvtd2mask256 ((__v8si) __A);
932}
933
934static __inline__ __m128i __DEFAULT_FN_ATTRS
935_mm_movm_epi32 (__mmask8 __A)
936{
937 return (__m128i) __builtin_ia32_cvtmask2d128 (__A);
938}
939
940static __inline__ __m256i __DEFAULT_FN_ATTRS
941_mm256_movm_epi32 (__mmask8 __A)
942{
943 return (__m256i) __builtin_ia32_cvtmask2d256 (__A);
944}
945
946static __inline__ __m128i __DEFAULT_FN_ATTRS
947_mm_movm_epi64 (__mmask8 __A)
948{
949 return (__m128i) __builtin_ia32_cvtmask2q128 (__A);
950}
951
952static __inline__ __m256i __DEFAULT_FN_ATTRS
953_mm256_movm_epi64 (__mmask8 __A)
954{
955 return (__m256i) __builtin_ia32_cvtmask2q256 (__A);
956}
957
958static __inline__ __mmask8 __DEFAULT_FN_ATTRS
959_mm_movepi64_mask (__m128i __A)
960{
961 return (__mmask8) __builtin_ia32_cvtq2mask128 ((__v2di) __A);
962}
963
964static __inline__ __mmask8 __DEFAULT_FN_ATTRS
965_mm256_movepi64_mask (__m256i __A)
966{
967 return (__mmask8) __builtin_ia32_cvtq2mask256 ((__v4di) __A);
968}
969
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000970static __inline__ __m256 __DEFAULT_FN_ATTRS
971_mm256_broadcast_f32x2 (__m128 __A)
972{
Craig Topper95ed88a2018-06-04 19:28:09 +0000973 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +0000974 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000975}
976
977static __inline__ __m256 __DEFAULT_FN_ATTRS
978_mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
979{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000980 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
981 (__v8sf)_mm256_broadcast_f32x2(__A),
982 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000983}
984
985static __inline__ __m256 __DEFAULT_FN_ATTRS
986_mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
987{
Craig Topper5ece4cf2017-08-30 16:15:12 +0000988 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
989 (__v8sf)_mm256_broadcast_f32x2(__A),
990 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000991}
992
993static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +0000994_mm256_broadcast_f64x2(__m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000995{
Craig Topper367c86d2017-01-18 02:17:10 +0000996 return (__m256d)__builtin_shufflevector((__v2df)__A, (__v2df)__A,
997 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +0000998}
999
1000static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001001_mm256_mask_broadcast_f64x2(__m256d __O, __mmask8 __M, __m128d __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001002{
Craig Topper367c86d2017-01-18 02:17:10 +00001003 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__M,
1004 (__v4df)_mm256_broadcast_f64x2(__A),
1005 (__v4df)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001006}
1007
1008static __inline__ __m256d __DEFAULT_FN_ATTRS
1009_mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1010{
Craig Topper367c86d2017-01-18 02:17:10 +00001011 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__M,
1012 (__v4df)_mm256_broadcast_f64x2(__A),
1013 (__v4df)_mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001014}
1015
1016static __inline__ __m128i __DEFAULT_FN_ATTRS
1017_mm_broadcast_i32x2 (__m128i __A)
1018{
Craig Topper95ed88a2018-06-04 19:28:09 +00001019 return (__m128i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +00001020 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001021}
1022
1023static __inline__ __m128i __DEFAULT_FN_ATTRS
1024_mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
1025{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001026 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1027 (__v4si)_mm_broadcast_i32x2(__A),
1028 (__v4si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001029}
1030
1031static __inline__ __m128i __DEFAULT_FN_ATTRS
1032_mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1033{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001034 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
1035 (__v4si)_mm_broadcast_i32x2(__A),
1036 (__v4si)_mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001037}
1038
1039static __inline__ __m256i __DEFAULT_FN_ATTRS
1040_mm256_broadcast_i32x2 (__m128i __A)
1041{
Craig Topper95ed88a2018-06-04 19:28:09 +00001042 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
Craig Topper5ece4cf2017-08-30 16:15:12 +00001043 0, 1, 0, 1, 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001044}
1045
1046static __inline__ __m256i __DEFAULT_FN_ATTRS
1047_mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
1048{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001049 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1050 (__v8si)_mm256_broadcast_i32x2(__A),
1051 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001052}
1053
1054static __inline__ __m256i __DEFAULT_FN_ATTRS
1055_mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1056{
Craig Topper5ece4cf2017-08-30 16:15:12 +00001057 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
1058 (__v8si)_mm256_broadcast_i32x2(__A),
1059 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001060}
1061
1062static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001063_mm256_broadcast_i64x2(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001064{
Craig Topper367c86d2017-01-18 02:17:10 +00001065 return (__m256i)__builtin_shufflevector((__v2di)__A, (__v2di)__A,
1066 0, 1, 0, 1);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001067}
1068
1069static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00001070_mm256_mask_broadcast_i64x2(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001071{
Craig Topper367c86d2017-01-18 02:17:10 +00001072 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
1073 (__v4di)_mm256_broadcast_i64x2(__A),
1074 (__v4di)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001075}
1076
1077static __inline__ __m256i __DEFAULT_FN_ATTRS
1078_mm256_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
1079{
Craig Topper367c86d2017-01-18 02:17:10 +00001080 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
1081 (__v4di)_mm256_broadcast_i64x2(__A),
1082 (__v4di)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00001083}
1084
Craig Topperc6338672018-05-31 00:51:20 +00001085#define _mm256_extractf64x2_pd(A, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001086 (__m128d)__builtin_ia32_extractf64x2_256((__v4df)(__m256d)(A), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001087
Craig Topperc6338672018-05-31 00:51:20 +00001088#define _mm256_mask_extractf64x2_pd(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001089 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1090 (__v2df)_mm256_extractf64x2_pd((A), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001091 (__v2df)(__m128d)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001092
Craig Topperc6338672018-05-31 00:51:20 +00001093#define _mm256_maskz_extractf64x2_pd(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001094 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
1095 (__v2df)_mm256_extractf64x2_pd((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001096 (__v2df)_mm_setzero_pd())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001097
Craig Topperc6338672018-05-31 00:51:20 +00001098#define _mm256_extracti64x2_epi64(A, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001099 (__m128i)__builtin_ia32_extracti64x2_256((__v4di)(__m256i)(A), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001100
Craig Topperc6338672018-05-31 00:51:20 +00001101#define _mm256_mask_extracti64x2_epi64(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001102 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
1103 (__v2di)_mm256_extracti64x2_epi64((A), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001104 (__v2di)(__m128i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001105
Craig Topperc6338672018-05-31 00:51:20 +00001106#define _mm256_maskz_extracti64x2_epi64(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00001107 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
1108 (__v2di)_mm256_extracti64x2_epi64((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001109 (__v2di)_mm_setzero_si128())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001110
Craig Topperc6338672018-05-31 00:51:20 +00001111#define _mm256_insertf64x2(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001112 (__m256d)__builtin_ia32_insertf64x2_256((__v4df)(__m256d)(A), \
1113 (__v2df)(__m128d)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001114
Craig Topperc6338672018-05-31 00:51:20 +00001115#define _mm256_mask_insertf64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001116 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
1117 (__v4df)_mm256_insertf64x2((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001118 (__v4df)(__m256d)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001119
Craig Topperc6338672018-05-31 00:51:20 +00001120#define _mm256_maskz_insertf64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001121 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
1122 (__v4df)_mm256_insertf64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001123 (__v4df)_mm256_setzero_pd())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001124
Craig Topperc6338672018-05-31 00:51:20 +00001125#define _mm256_inserti64x2(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00001126 (__m256i)__builtin_ia32_inserti64x2_256((__v4di)(__m256i)(A), \
1127 (__v2di)(__m128i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001128
Craig Topperc6338672018-05-31 00:51:20 +00001129#define _mm256_mask_inserti64x2(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001130 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
1131 (__v4di)_mm256_inserti64x2((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00001132 (__v4di)(__m256i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001133
Craig Topperc6338672018-05-31 00:51:20 +00001134#define _mm256_maskz_inserti64x2(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00001135 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
1136 (__v4di)_mm256_inserti64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00001137 (__v4di)_mm256_setzero_si256())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00001138
Craig Topperc6338672018-05-31 00:51:20 +00001139#define _mm_mask_fpclass_pd_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001140 (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001141 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001142
Craig Topperc6338672018-05-31 00:51:20 +00001143#define _mm_fpclass_pd_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001144 (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001145 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001146
Craig Topperc6338672018-05-31 00:51:20 +00001147#define _mm256_mask_fpclass_pd_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001148 (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001149 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001150
Craig Topperc6338672018-05-31 00:51:20 +00001151#define _mm256_fpclass_pd_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001152 (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001153 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001154
Craig Topperc6338672018-05-31 00:51:20 +00001155#define _mm_mask_fpclass_ps_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001156 (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001157 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001158
Craig Topperc6338672018-05-31 00:51:20 +00001159#define _mm_fpclass_ps_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001160 (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001161 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001162
Craig Topperc6338672018-05-31 00:51:20 +00001163#define _mm256_mask_fpclass_ps_mask(U, A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001164 (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001165 (__mmask8)(U))
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001166
Craig Topperc6338672018-05-31 00:51:20 +00001167#define _mm256_fpclass_ps_mask(A, imm) \
Craig Topperf2e67a02016-05-17 04:41:46 +00001168 (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00001169 (__mmask8)-1)
Michael Zuckermanedc82fe2016-04-25 14:48:23 +00001170
Michael Kupersteine45af542015-06-30 13:36:19 +00001171#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00001172
Elena Demikhovskye7d4c2e2015-04-30 09:24:29 +00001173#endif