blob: da79b201b7759a9454b1a9b228e30cd161301748 [file] [log] [blame]
Robert Khasanovb9f3a912014-10-08 17:18:13 +00001/*===---- avx512vlintrin.h - AVX512VL intrinsics ---------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512vlintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLINTRIN_H
29#define __AVX512VLINTRIN_H
30
Michael Kupersteine45af542015-06-30 13:36:19 +000031#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl")))
Eric Christopher4d1851682015-06-17 07:09:20 +000032
Craig Topper08181f72016-06-22 06:36:21 +000033/* Doesn't require avx512vl, used in avx512dqintrin.h */
34static __inline __m128i __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Michael Zuckerman38a27272016-02-22 09:05:41 +000035_mm_setzero_di(void) {
Craig Topper08181f72016-06-22 06:36:21 +000036 return (__m128i)(__v2di){ 0LL, 0LL};
Michael Zuckerman38a27272016-02-22 09:05:41 +000037}
38
Robert Khasanovb9f3a912014-10-08 17:18:13 +000039/* Integer compare */
40
Craig Topperfc074982016-06-13 04:15:11 +000041static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +000042_mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {
43 return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b,
44 (__mmask8)-1);
45}
46
Craig Topperfc074982016-06-13 04:15:11 +000047static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +000048_mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
49 return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b,
50 __u);
51}
52
Michael Kupersteine45af542015-06-30 13:36:19 +000053static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +000054_mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {
55 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0,
56 (__mmask8)-1);
57}
58
Michael Kupersteine45af542015-06-30 13:36:19 +000059static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +000060_mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
61 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0,
62 __u);
63}
Robert Khasanovb9f3a912014-10-08 17:18:13 +000064
Craig Topperfc074982016-06-13 04:15:11 +000065static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +000066_mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {
67 return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b,
68 (__mmask8)-1);
69}
70
Craig Topperfc074982016-06-13 04:15:11 +000071static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +000072_mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
73 return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b,
74 __u);
75}
76
Michael Kupersteine45af542015-06-30 13:36:19 +000077static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +000078_mm256_cmpeq_epu32_mask(__m256i __a, __m256i __b) {
79 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0,
80 (__mmask8)-1);
81}
82
Michael Kupersteine45af542015-06-30 13:36:19 +000083static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +000084_mm256_mask_cmpeq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
85 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0,
86 __u);
87}
88
Craig Topperfc074982016-06-13 04:15:11 +000089static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +000090_mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {
91 return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b,
92 (__mmask8)-1);
93}
94
Craig Topperfc074982016-06-13 04:15:11 +000095static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +000096_mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
97 return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b,
98 __u);
99}
100
Michael Kupersteine45af542015-06-30 13:36:19 +0000101static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000102_mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) {
103 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0,
104 (__mmask8)-1);
105}
106
Michael Kupersteine45af542015-06-30 13:36:19 +0000107static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000108_mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
109 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0,
110 __u);
111}
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000112
Craig Topperfc074982016-06-13 04:15:11 +0000113static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000114_mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {
115 return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b,
116 (__mmask8)-1);
117}
118
Craig Topperfc074982016-06-13 04:15:11 +0000119static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000120_mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
121 return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b,
122 __u);
123}
124
Michael Kupersteine45af542015-06-30 13:36:19 +0000125static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000126_mm256_cmpeq_epu64_mask(__m256i __a, __m256i __b) {
127 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0,
128 (__mmask8)-1);
129}
130
Michael Kupersteine45af542015-06-30 13:36:19 +0000131static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000132_mm256_mask_cmpeq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
133 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0,
134 __u);
135}
136
137
Michael Kupersteine45af542015-06-30 13:36:19 +0000138static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000139_mm_cmpge_epi32_mask(__m128i __a, __m128i __b) {
140 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5,
141 (__mmask8)-1);
142}
143
Michael Kupersteine45af542015-06-30 13:36:19 +0000144static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000145_mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
146 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5,
147 __u);
148}
149
Michael Kupersteine45af542015-06-30 13:36:19 +0000150static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000151_mm_cmpge_epu32_mask(__m128i __a, __m128i __b) {
152 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5,
153 (__mmask8)-1);
154}
155
Michael Kupersteine45af542015-06-30 13:36:19 +0000156static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000157_mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
158 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5,
159 __u);
160}
161
Michael Kupersteine45af542015-06-30 13:36:19 +0000162static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000163_mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) {
164 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5,
165 (__mmask8)-1);
166}
167
Michael Kupersteine45af542015-06-30 13:36:19 +0000168static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000169_mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
170 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5,
171 __u);
172}
173
Michael Kupersteine45af542015-06-30 13:36:19 +0000174static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000175_mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) {
176 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5,
177 (__mmask8)-1);
178}
179
Michael Kupersteine45af542015-06-30 13:36:19 +0000180static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000181_mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
182 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5,
183 __u);
184}
185
Michael Kupersteine45af542015-06-30 13:36:19 +0000186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000187_mm_cmpge_epi64_mask(__m128i __a, __m128i __b) {
188 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5,
189 (__mmask8)-1);
190}
191
Michael Kupersteine45af542015-06-30 13:36:19 +0000192static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000193_mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
194 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5,
195 __u);
196}
197
Michael Kupersteine45af542015-06-30 13:36:19 +0000198static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000199_mm_cmpge_epu64_mask(__m128i __a, __m128i __b) {
200 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5,
201 (__mmask8)-1);
202}
203
Michael Kupersteine45af542015-06-30 13:36:19 +0000204static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000205_mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
206 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5,
207 __u);
208}
209
Michael Kupersteine45af542015-06-30 13:36:19 +0000210static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000211_mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) {
212 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5,
213 (__mmask8)-1);
214}
215
Michael Kupersteine45af542015-06-30 13:36:19 +0000216static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000217_mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
218 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5,
219 __u);
220}
221
Michael Kupersteine45af542015-06-30 13:36:19 +0000222static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000223_mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) {
224 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5,
225 (__mmask8)-1);
226}
227
Michael Kupersteine45af542015-06-30 13:36:19 +0000228static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000229_mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
230 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5,
231 __u);
232}
233
Craig Topperfc074982016-06-13 04:15:11 +0000234static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000235_mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {
236 return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b,
237 (__mmask8)-1);
238}
239
Craig Topperfc074982016-06-13 04:15:11 +0000240static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000241_mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
242 return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b,
243 __u);
244}
245
Michael Kupersteine45af542015-06-30 13:36:19 +0000246static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000247_mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) {
248 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6,
249 (__mmask8)-1);
250}
251
Michael Kupersteine45af542015-06-30 13:36:19 +0000252static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000253_mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
254 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6,
255 __u);
256}
257
Craig Topperfc074982016-06-13 04:15:11 +0000258static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000259_mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {
260 return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b,
261 (__mmask8)-1);
262}
263
Craig Topperfc074982016-06-13 04:15:11 +0000264static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000265_mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
266 return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b,
267 __u);
268}
269
Michael Kupersteine45af542015-06-30 13:36:19 +0000270static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000271_mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) {
272 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6,
273 (__mmask8)-1);
274}
275
Michael Kupersteine45af542015-06-30 13:36:19 +0000276static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000277_mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
278 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6,
279 __u);
280}
281
Craig Topperfc074982016-06-13 04:15:11 +0000282static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000283_mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {
284 return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b,
285 (__mmask8)-1);
286}
287
Craig Topperfc074982016-06-13 04:15:11 +0000288static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000289_mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
290 return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b,
291 __u);
292}
293
Michael Kupersteine45af542015-06-30 13:36:19 +0000294static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000295_mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) {
296 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6,
297 (__mmask8)-1);
298}
299
Michael Kupersteine45af542015-06-30 13:36:19 +0000300static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000301_mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
302 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6,
303 __u);
304}
305
Craig Topperfc074982016-06-13 04:15:11 +0000306static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000307_mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {
308 return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b,
309 (__mmask8)-1);
310}
311
Craig Topperfc074982016-06-13 04:15:11 +0000312static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000313_mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
314 return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b,
315 __u);
316}
317
Michael Kupersteine45af542015-06-30 13:36:19 +0000318static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000319_mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) {
320 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6,
321 (__mmask8)-1);
322}
323
Michael Kupersteine45af542015-06-30 13:36:19 +0000324static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000325_mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
326 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6,
327 __u);
328}
329
Michael Kupersteine45af542015-06-30 13:36:19 +0000330static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000331_mm_cmple_epi32_mask(__m128i __a, __m128i __b) {
332 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2,
333 (__mmask8)-1);
334}
335
Michael Kupersteine45af542015-06-30 13:36:19 +0000336static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000337_mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
338 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2,
339 __u);
340}
341
Michael Kupersteine45af542015-06-30 13:36:19 +0000342static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000343_mm_cmple_epu32_mask(__m128i __a, __m128i __b) {
344 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2,
345 (__mmask8)-1);
346}
347
Michael Kupersteine45af542015-06-30 13:36:19 +0000348static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000349_mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
350 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2,
351 __u);
352}
353
Michael Kupersteine45af542015-06-30 13:36:19 +0000354static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000355_mm256_cmple_epi32_mask(__m256i __a, __m256i __b) {
356 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2,
357 (__mmask8)-1);
358}
359
Michael Kupersteine45af542015-06-30 13:36:19 +0000360static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000361_mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
362 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2,
363 __u);
364}
365
Michael Kupersteine45af542015-06-30 13:36:19 +0000366static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000367_mm256_cmple_epu32_mask(__m256i __a, __m256i __b) {
368 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2,
369 (__mmask8)-1);
370}
371
Michael Kupersteine45af542015-06-30 13:36:19 +0000372static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000373_mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
374 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2,
375 __u);
376}
377
Michael Kupersteine45af542015-06-30 13:36:19 +0000378static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000379_mm_cmple_epi64_mask(__m128i __a, __m128i __b) {
380 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2,
381 (__mmask8)-1);
382}
383
Michael Kupersteine45af542015-06-30 13:36:19 +0000384static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000385_mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
386 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2,
387 __u);
388}
389
Michael Kupersteine45af542015-06-30 13:36:19 +0000390static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000391_mm_cmple_epu64_mask(__m128i __a, __m128i __b) {
392 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2,
393 (__mmask8)-1);
394}
395
Michael Kupersteine45af542015-06-30 13:36:19 +0000396static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000397_mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
398 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2,
399 __u);
400}
401
Michael Kupersteine45af542015-06-30 13:36:19 +0000402static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000403_mm256_cmple_epi64_mask(__m256i __a, __m256i __b) {
404 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2,
405 (__mmask8)-1);
406}
407
Michael Kupersteine45af542015-06-30 13:36:19 +0000408static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000409_mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
410 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2,
411 __u);
412}
413
Michael Kupersteine45af542015-06-30 13:36:19 +0000414static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000415_mm256_cmple_epu64_mask(__m256i __a, __m256i __b) {
416 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2,
417 (__mmask8)-1);
418}
419
Michael Kupersteine45af542015-06-30 13:36:19 +0000420static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000421_mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
422 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2,
423 __u);
424}
425
Michael Kupersteine45af542015-06-30 13:36:19 +0000426static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000427_mm_cmplt_epi32_mask(__m128i __a, __m128i __b) {
428 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1,
429 (__mmask8)-1);
430}
431
Michael Kupersteine45af542015-06-30 13:36:19 +0000432static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000433_mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
434 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1,
435 __u);
436}
437
Michael Kupersteine45af542015-06-30 13:36:19 +0000438static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000439_mm_cmplt_epu32_mask(__m128i __a, __m128i __b) {
440 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1,
441 (__mmask8)-1);
442}
443
Michael Kupersteine45af542015-06-30 13:36:19 +0000444static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000445_mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
446 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1,
447 __u);
448}
449
Michael Kupersteine45af542015-06-30 13:36:19 +0000450static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000451_mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) {
452 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1,
453 (__mmask8)-1);
454}
455
Michael Kupersteine45af542015-06-30 13:36:19 +0000456static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000457_mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
458 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1,
459 __u);
460}
461
Michael Kupersteine45af542015-06-30 13:36:19 +0000462static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000463_mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) {
464 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1,
465 (__mmask8)-1);
466}
467
Michael Kupersteine45af542015-06-30 13:36:19 +0000468static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000469_mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
470 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1,
471 __u);
472}
473
Michael Kupersteine45af542015-06-30 13:36:19 +0000474static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000475_mm_cmplt_epi64_mask(__m128i __a, __m128i __b) {
476 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1,
477 (__mmask8)-1);
478}
479
Michael Kupersteine45af542015-06-30 13:36:19 +0000480static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000481_mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
482 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1,
483 __u);
484}
485
Michael Kupersteine45af542015-06-30 13:36:19 +0000486static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000487_mm_cmplt_epu64_mask(__m128i __a, __m128i __b) {
488 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1,
489 (__mmask8)-1);
490}
491
Michael Kupersteine45af542015-06-30 13:36:19 +0000492static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000493_mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
494 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1,
495 __u);
496}
497
Michael Kupersteine45af542015-06-30 13:36:19 +0000498static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000499_mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) {
500 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1,
501 (__mmask8)-1);
502}
503
Michael Kupersteine45af542015-06-30 13:36:19 +0000504static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000505_mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
506 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1,
507 __u);
508}
509
Michael Kupersteine45af542015-06-30 13:36:19 +0000510static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000511_mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) {
512 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1,
513 (__mmask8)-1);
514}
515
Michael Kupersteine45af542015-06-30 13:36:19 +0000516static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000517_mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
518 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1,
519 __u);
520}
521
Michael Kupersteine45af542015-06-30 13:36:19 +0000522static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000523_mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) {
524 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4,
525 (__mmask8)-1);
526}
527
Michael Kupersteine45af542015-06-30 13:36:19 +0000528static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000529_mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
530 return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4,
531 __u);
532}
533
Michael Kupersteine45af542015-06-30 13:36:19 +0000534static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000535_mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) {
536 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4,
537 (__mmask8)-1);
538}
539
Michael Kupersteine45af542015-06-30 13:36:19 +0000540static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000541_mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
542 return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4,
543 __u);
544}
545
Michael Kupersteine45af542015-06-30 13:36:19 +0000546static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000547_mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) {
548 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4,
549 (__mmask8)-1);
550}
551
Michael Kupersteine45af542015-06-30 13:36:19 +0000552static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000553_mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
554 return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4,
555 __u);
556}
557
Michael Kupersteine45af542015-06-30 13:36:19 +0000558static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000559_mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) {
560 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4,
561 (__mmask8)-1);
562}
563
Michael Kupersteine45af542015-06-30 13:36:19 +0000564static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000565_mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
566 return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4,
567 __u);
568}
569
Michael Kupersteine45af542015-06-30 13:36:19 +0000570static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000571_mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) {
572 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4,
573 (__mmask8)-1);
574}
575
Michael Kupersteine45af542015-06-30 13:36:19 +0000576static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000577_mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
578 return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4,
579 __u);
580}
581
Michael Kupersteine45af542015-06-30 13:36:19 +0000582static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000583_mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) {
584 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4,
585 (__mmask8)-1);
586}
587
Michael Kupersteine45af542015-06-30 13:36:19 +0000588static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000589_mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
590 return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4,
591 __u);
592}
593
Michael Kupersteine45af542015-06-30 13:36:19 +0000594static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000595_mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) {
596 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4,
597 (__mmask8)-1);
598}
599
Michael Kupersteine45af542015-06-30 13:36:19 +0000600static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000601_mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
602 return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4,
603 __u);
604}
605
Michael Kupersteine45af542015-06-30 13:36:19 +0000606static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000607_mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) {
608 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4,
609 (__mmask8)-1);
610}
611
Michael Kupersteine45af542015-06-30 13:36:19 +0000612static __inline__ __mmask8 __DEFAULT_FN_ATTRS
Craig Topper2f25a5a2015-01-26 08:11:49 +0000613_mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
614 return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4,
615 __u);
616}
617
Michael Kupersteine45af542015-06-30 13:36:19 +0000618static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000619_mm256_mask_add_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000620{
Craig Topper0e189762016-09-03 18:29:35 +0000621 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
622 (__v8si)_mm256_add_epi32(__A, __B),
623 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000624}
625
Michael Kupersteine45af542015-06-30 13:36:19 +0000626static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000627_mm256_maskz_add_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000628{
Craig Topper0e189762016-09-03 18:29:35 +0000629 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
630 (__v8si)_mm256_add_epi32(__A, __B),
631 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000632}
633
Michael Kupersteine45af542015-06-30 13:36:19 +0000634static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000635_mm256_mask_add_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000636{
Craig Topper0e189762016-09-03 18:29:35 +0000637 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
638 (__v4di)_mm256_add_epi64(__A, __B),
639 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000640}
641
Michael Kupersteine45af542015-06-30 13:36:19 +0000642static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000643_mm256_maskz_add_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000644{
Craig Topper0e189762016-09-03 18:29:35 +0000645 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
646 (__v4di)_mm256_add_epi64(__A, __B),
647 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000648}
649
Michael Kupersteine45af542015-06-30 13:36:19 +0000650static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000651_mm256_mask_sub_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000652{
Craig Topper0e189762016-09-03 18:29:35 +0000653 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
654 (__v8si)_mm256_sub_epi32(__A, __B),
655 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000656}
657
Michael Kupersteine45af542015-06-30 13:36:19 +0000658static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000659_mm256_maskz_sub_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000660{
Craig Topper0e189762016-09-03 18:29:35 +0000661 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
662 (__v8si)_mm256_sub_epi32(__A, __B),
663 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000664}
665
Michael Kupersteine45af542015-06-30 13:36:19 +0000666static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000667_mm256_mask_sub_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000668{
Craig Topper0e189762016-09-03 18:29:35 +0000669 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
670 (__v4di)_mm256_sub_epi64(__A, __B),
671 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000672}
673
Michael Kupersteine45af542015-06-30 13:36:19 +0000674static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000675_mm256_maskz_sub_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000676{
Craig Topper0e189762016-09-03 18:29:35 +0000677 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
678 (__v4di)_mm256_sub_epi64(__A, __B),
679 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000680}
681
Michael Kupersteine45af542015-06-30 13:36:19 +0000682static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000683_mm_mask_add_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000684{
Craig Topper0e189762016-09-03 18:29:35 +0000685 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
686 (__v4si)_mm_add_epi32(__A, __B),
687 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000688}
689
Michael Kupersteine45af542015-06-30 13:36:19 +0000690static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000691_mm_maskz_add_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000692{
Craig Topper0e189762016-09-03 18:29:35 +0000693 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
694 (__v4si)_mm_add_epi32(__A, __B),
695 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000696}
697
Michael Kupersteine45af542015-06-30 13:36:19 +0000698static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000699_mm_mask_add_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000700{
Craig Topper0e189762016-09-03 18:29:35 +0000701 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
702 (__v2di)_mm_add_epi64(__A, __B),
703 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000704}
705
Michael Kupersteine45af542015-06-30 13:36:19 +0000706static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000707_mm_maskz_add_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000708{
Craig Topper0e189762016-09-03 18:29:35 +0000709 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
710 (__v2di)_mm_add_epi64(__A, __B),
711 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000712}
713
Michael Kupersteine45af542015-06-30 13:36:19 +0000714static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000715_mm_mask_sub_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000716{
Craig Topper0e189762016-09-03 18:29:35 +0000717 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
718 (__v4si)_mm_sub_epi32(__A, __B),
719 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000720}
721
Michael Kupersteine45af542015-06-30 13:36:19 +0000722static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000723_mm_maskz_sub_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000724{
Craig Topper0e189762016-09-03 18:29:35 +0000725 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
726 (__v4si)_mm_sub_epi32(__A, __B),
727 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000728}
729
Michael Kupersteine45af542015-06-30 13:36:19 +0000730static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000731_mm_mask_sub_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000732{
Craig Topper0e189762016-09-03 18:29:35 +0000733 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
734 (__v2di)_mm_sub_epi64(__A, __B),
735 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000736}
737
Michael Kupersteine45af542015-06-30 13:36:19 +0000738static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000739_mm_maskz_sub_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000740{
Craig Topper0e189762016-09-03 18:29:35 +0000741 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
742 (__v2di)_mm_sub_epi64(__A, __B),
743 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000744}
745
Michael Kupersteine45af542015-06-30 13:36:19 +0000746static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000747_mm256_mask_mul_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000748{
Craig Topper09e94002016-10-29 19:02:07 +0000749 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
750 (__v4di)_mm256_mul_epi32(__X, __Y),
751 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000752}
753
Michael Kupersteine45af542015-06-30 13:36:19 +0000754static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000755_mm256_maskz_mul_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000756{
Craig Topper09e94002016-10-29 19:02:07 +0000757 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
758 (__v4di)_mm256_mul_epi32(__X, __Y),
759 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000760}
761
Michael Kupersteine45af542015-06-30 13:36:19 +0000762static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000763_mm_mask_mul_epi32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000764{
Craig Topper09e94002016-10-29 19:02:07 +0000765 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
766 (__v2di)_mm_mul_epi32(__X, __Y),
767 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000768}
769
Michael Kupersteine45af542015-06-30 13:36:19 +0000770static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000771_mm_maskz_mul_epi32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000772{
Craig Topper09e94002016-10-29 19:02:07 +0000773 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
774 (__v2di)_mm_mul_epi32(__X, __Y),
775 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000776}
777
Michael Kupersteine45af542015-06-30 13:36:19 +0000778static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000779_mm256_mask_mul_epu32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000780{
Craig Topper09e94002016-10-29 19:02:07 +0000781 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
782 (__v4di)_mm256_mul_epu32(__X, __Y),
783 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000784}
785
Michael Kupersteine45af542015-06-30 13:36:19 +0000786static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000787_mm256_maskz_mul_epu32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000788{
Craig Topper09e94002016-10-29 19:02:07 +0000789 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
790 (__v4di)_mm256_mul_epu32(__X, __Y),
791 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000792}
793
Michael Kupersteine45af542015-06-30 13:36:19 +0000794static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000795_mm_mask_mul_epu32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000796{
Craig Topper09e94002016-10-29 19:02:07 +0000797 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
798 (__v2di)_mm_mul_epu32(__X, __Y),
799 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000800}
801
Michael Kupersteine45af542015-06-30 13:36:19 +0000802static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000803_mm_maskz_mul_epu32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000804{
Craig Topper09e94002016-10-29 19:02:07 +0000805 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
806 (__v2di)_mm_mul_epu32(__X, __Y),
807 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000808}
809
Michael Kupersteine45af542015-06-30 13:36:19 +0000810static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000811_mm256_maskz_mullo_epi32(__mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000812{
Craig Topperf43e4a12016-09-03 19:19:49 +0000813 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
814 (__v8si)_mm256_mullo_epi32(__A, __B),
815 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000816}
817
Michael Kupersteine45af542015-06-30 13:36:19 +0000818static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000819_mm256_mask_mullo_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000820{
Craig Topperf43e4a12016-09-03 19:19:49 +0000821 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
822 (__v8si)_mm256_mullo_epi32(__A, __B),
823 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000824}
825
Michael Kupersteine45af542015-06-30 13:36:19 +0000826static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000827_mm_maskz_mullo_epi32(__mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000828{
Craig Topperf43e4a12016-09-03 19:19:49 +0000829 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
830 (__v4si)_mm_mullo_epi32(__A, __B),
831 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000832}
833
Michael Kupersteine45af542015-06-30 13:36:19 +0000834static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000835_mm_mask_mullo_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000836{
Craig Topperf43e4a12016-09-03 19:19:49 +0000837 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
838 (__v4si)_mm_mullo_epi32(__A, __B),
839 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000840}
841
Michael Kupersteine45af542015-06-30 13:36:19 +0000842static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000843_mm256_mask_and_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000844{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000845 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
846 (__v8si)_mm256_and_si256(__A, __B),
847 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000848}
849
Michael Kupersteine45af542015-06-30 13:36:19 +0000850static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000851_mm256_maskz_and_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000852{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000853 return (__m256i)_mm256_mask_and_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000854}
855
Michael Kupersteine45af542015-06-30 13:36:19 +0000856static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000857_mm_mask_and_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000858{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000859 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
860 (__v4si)_mm_and_si128(__A, __B),
861 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000862}
863
Michael Kupersteine45af542015-06-30 13:36:19 +0000864static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000865_mm_maskz_and_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000866{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000867 return (__m128i)_mm_mask_and_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000868}
869
Michael Kupersteine45af542015-06-30 13:36:19 +0000870static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000871_mm256_mask_andnot_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000872{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000873 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
874 (__v8si)_mm256_andnot_si256(__A, __B),
875 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000876}
877
Michael Kupersteine45af542015-06-30 13:36:19 +0000878static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000879_mm256_maskz_andnot_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000880{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000881 return (__m256i)_mm256_mask_andnot_epi32(_mm256_setzero_si256(),
882 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000883}
884
Michael Kupersteine45af542015-06-30 13:36:19 +0000885static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000886_mm_mask_andnot_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000887{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000888 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
889 (__v4si)_mm_andnot_si128(__A, __B),
890 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000891}
892
Michael Kupersteine45af542015-06-30 13:36:19 +0000893static __inline__ __m128i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000894_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
895{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000896 return (__m128i)_mm_mask_andnot_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000897}
898
Michael Kupersteine45af542015-06-30 13:36:19 +0000899static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000900_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000901{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000902 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
903 (__v8si)_mm256_or_si256(__A, __B),
904 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000905}
906
Michael Kupersteine45af542015-06-30 13:36:19 +0000907static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000908_mm256_maskz_or_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000909{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000910 return (__m256i)_mm256_mask_or_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000911}
912
Michael Kupersteine45af542015-06-30 13:36:19 +0000913static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000914_mm_mask_or_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000915{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000916 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
917 (__v4si)_mm_or_si128(__A, __B),
918 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000919}
920
Michael Kupersteine45af542015-06-30 13:36:19 +0000921static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000922_mm_maskz_or_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000923{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000924 return (__m128i)_mm_mask_or_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000925}
926
Michael Kupersteine45af542015-06-30 13:36:19 +0000927static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000928_mm256_mask_xor_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000929{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000930 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
931 (__v8si)_mm256_xor_si256(__A, __B),
932 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000933}
934
Michael Kupersteine45af542015-06-30 13:36:19 +0000935static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000936_mm256_maskz_xor_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000937{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000938 return (__m256i)_mm256_mask_xor_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000939}
940
Michael Kupersteine45af542015-06-30 13:36:19 +0000941static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000942_mm_mask_xor_epi32(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000943 __m128i __B)
944{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000945 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
946 (__v4si)_mm_xor_si128(__A, __B),
947 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000948}
949
Michael Kupersteine45af542015-06-30 13:36:19 +0000950static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000951_mm_maskz_xor_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000952{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000953 return (__m128i)_mm_mask_xor_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000954}
955
Michael Kupersteine45af542015-06-30 13:36:19 +0000956static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000957_mm256_mask_and_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000958{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000959 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
960 (__v4di)_mm256_and_si256(__A, __B),
961 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000962}
963
Michael Kupersteine45af542015-06-30 13:36:19 +0000964static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000965_mm256_maskz_and_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000966{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000967 return (__m256i)_mm256_mask_and_epi64(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000968}
969
Michael Kupersteine45af542015-06-30 13:36:19 +0000970static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000971_mm_mask_and_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
972{
973 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
974 (__v2di)_mm_and_si128(__A, __B),
975 (__v2di)__W);
976}
977
978static __inline__ __m128i __DEFAULT_FN_ATTRS
979_mm_maskz_and_epi64(__mmask8 __U, __m128i __A, __m128i __B)
980{
981 return (__m128i)_mm_mask_and_epi64(_mm_setzero_si128(), __U, __A, __B);
982}
983
984static __inline__ __m256i __DEFAULT_FN_ATTRS
985_mm256_mask_andnot_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
986{
987 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
988 (__v4di)_mm256_andnot_si256(__A, __B),
989 (__v4di)__W);
990}
991
992static __inline__ __m256i __DEFAULT_FN_ATTRS
993_mm256_maskz_andnot_epi64(__mmask8 __U, __m256i __A, __m256i __B)
994{
995 return (__m256i)_mm256_mask_andnot_epi64(_mm256_setzero_si256(),
996 __U, __A, __B);
997}
998
999static __inline__ __m128i __DEFAULT_FN_ATTRS
1000_mm_mask_andnot_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1001{
1002 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1003 (__v2di)_mm_andnot_si128(__A, __B),
1004 (__v2di)__W);
1005}
1006
1007static __inline__ __m128i __DEFAULT_FN_ATTRS
1008_mm_maskz_andnot_epi64(__mmask8 __U, __m128i __A, __m128i __B)
1009{
1010 return (__m128i)_mm_mask_andnot_epi64(_mm_setzero_si128(), __U, __A, __B);
1011}
1012
1013static __inline__ __m256i __DEFAULT_FN_ATTRS
1014_mm256_mask_or_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
1015{
1016 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
1017 (__v4di)_mm256_or_si256(__A, __B),
1018 (__v4di)__W);
1019}
1020
1021static __inline__ __m256i __DEFAULT_FN_ATTRS
1022_mm256_maskz_or_epi64(__mmask8 __U, __m256i __A, __m256i __B)
1023{
1024 return (__m256i)_mm256_mask_or_epi64(_mm256_setzero_si256(), __U, __A, __B);
1025}
1026
1027static __inline__ __m128i __DEFAULT_FN_ATTRS
1028_mm_mask_or_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1029{
1030 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1031 (__v2di)_mm_or_si128(__A, __B),
1032 (__v2di)__W);
1033}
1034
1035static __inline__ __m128i __DEFAULT_FN_ATTRS
1036_mm_maskz_or_epi64(__mmask8 __U, __m128i __A, __m128i __B)
1037{
1038 return (__m128i)_mm_mask_or_epi64(_mm_setzero_si128(), __U, __A, __B);
1039}
1040
1041static __inline__ __m256i __DEFAULT_FN_ATTRS
1042_mm256_mask_xor_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
1043{
1044 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
1045 (__v4di)_mm256_xor_si256(__A, __B),
1046 (__v4di)__W);
1047}
1048
1049static __inline__ __m256i __DEFAULT_FN_ATTRS
1050_mm256_maskz_xor_epi64(__mmask8 __U, __m256i __A, __m256i __B)
1051{
1052 return (__m256i)_mm256_mask_xor_epi64(_mm256_setzero_si256(), __U, __A, __B);
1053}
1054
1055static __inline__ __m128i __DEFAULT_FN_ATTRS
1056_mm_mask_xor_epi64(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001057 __m128i __B)
1058{
Craig Topper4d61a3c2016-07-11 06:14:18 +00001059 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1060 (__v2di)_mm_xor_si128(__A, __B),
1061 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001062}
1063
Michael Kupersteine45af542015-06-30 13:36:19 +00001064static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +00001065_mm_maskz_xor_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001066{
Craig Topper4d61a3c2016-07-11 06:14:18 +00001067 return (__m128i)_mm_mask_xor_epi64(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +00001068}
1069
Craig Topper2f25a5a2015-01-26 08:11:49 +00001070#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
1071 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001072 (__v4si)(__m128i)(b), (int)(p), \
1073 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001074
1075#define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1076 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001077 (__v4si)(__m128i)(b), (int)(p), \
1078 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001079
1080#define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \
1081 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001082 (__v4si)(__m128i)(b), (int)(p), \
1083 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001084
1085#define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1086 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001087 (__v4si)(__m128i)(b), (int)(p), \
1088 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001089
1090#define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \
1091 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001092 (__v8si)(__m256i)(b), (int)(p), \
1093 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001094
1095#define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1096 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001097 (__v8si)(__m256i)(b), (int)(p), \
1098 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001099
1100#define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \
1101 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001102 (__v8si)(__m256i)(b), (int)(p), \
1103 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001104
1105#define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1106 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001107 (__v8si)(__m256i)(b), (int)(p), \
1108 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001109
1110#define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \
1111 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001112 (__v2di)(__m128i)(b), (int)(p), \
1113 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001114
1115#define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1116 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001117 (__v2di)(__m128i)(b), (int)(p), \
1118 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001119
1120#define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \
1121 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001122 (__v2di)(__m128i)(b), (int)(p), \
1123 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001124
1125#define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1126 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001127 (__v2di)(__m128i)(b), (int)(p), \
1128 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001129
1130#define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \
1131 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001132 (__v4di)(__m256i)(b), (int)(p), \
1133 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001134
1135#define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1136 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001137 (__v4di)(__m256i)(b), (int)(p), \
1138 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001139
1140#define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \
1141 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001142 (__v4di)(__m256i)(b), (int)(p), \
1143 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001144
1145#define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1146 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001147 (__v4di)(__m256i)(b), (int)(p), \
1148 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +00001149
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001150#define _mm256_cmp_ps_mask(a, b, p) __extension__ ({ \
1151 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001152 (__v8sf)(__m256)(b), (int)(p), \
1153 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001154
1155#define _mm256_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
1156 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001157 (__v8sf)(__m256)(b), (int)(p), \
1158 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001159
1160#define _mm256_cmp_pd_mask(a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00001161 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
1162 (__v4df)(__m256d)(b), (int)(p), \
1163 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001164
1165#define _mm256_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00001166 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
1167 (__v4df)(__m256d)(b), (int)(p), \
1168 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001169
Michael Zuckermaneb5f1782016-05-26 08:10:12 +00001170#define _mm_cmp_ps_mask(a, b, p) __extension__ ({ \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001171 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001172 (__v4sf)(__m128)(b), (int)(p), \
1173 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001174
Michael Zuckermaneb5f1782016-05-26 08:10:12 +00001175#define _mm_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001176 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +00001177 (__v4sf)(__m128)(b), (int)(p), \
1178 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001179
Michael Zuckermaneb5f1782016-05-26 08:10:12 +00001180#define _mm_cmp_pd_mask(a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00001181 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
1182 (__v2df)(__m128d)(b), (int)(p), \
1183 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +00001184
Michael Zuckermaneb5f1782016-05-26 08:10:12 +00001185#define _mm_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00001186 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
1187 (__v2df)(__m128d)(b), (int)(p), \
1188 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +00001189
Michael Kupersteine45af542015-06-30 13:36:19 +00001190static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001191_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1192{
1193 return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
1194 (__v2df) __B,
1195 (__v2df) __C,
1196 (__mmask8) __U);
1197}
1198
Michael Kupersteine45af542015-06-30 13:36:19 +00001199static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001200_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1201{
1202 return (__m128d) __builtin_ia32_vfmaddpd128_mask3 ((__v2df) __A,
1203 (__v2df) __B,
1204 (__v2df) __C,
1205 (__mmask8) __U);
1206}
1207
Michael Kupersteine45af542015-06-30 13:36:19 +00001208static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001209_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1210{
1211 return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
1212 (__v2df) __B,
1213 (__v2df) __C,
1214 (__mmask8) __U);
1215}
1216
Michael Kupersteine45af542015-06-30 13:36:19 +00001217static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001218_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1219{
1220 return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
1221 (__v2df) __B,
1222 -(__v2df) __C,
1223 (__mmask8) __U);
1224}
1225
Michael Kupersteine45af542015-06-30 13:36:19 +00001226static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001227_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1228{
1229 return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
1230 (__v2df) __B,
1231 -(__v2df) __C,
1232 (__mmask8) __U);
1233}
1234
Michael Kupersteine45af542015-06-30 13:36:19 +00001235static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001236_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1237{
1238 return (__m128d) __builtin_ia32_vfmaddpd128_mask3 (-(__v2df) __A,
1239 (__v2df) __B,
1240 (__v2df) __C,
1241 (__mmask8) __U);
1242}
1243
Michael Kupersteine45af542015-06-30 13:36:19 +00001244static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001245_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1246{
1247 return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
1248 (__v2df) __B,
1249 (__v2df) __C,
1250 (__mmask8) __U);
1251}
1252
Michael Kupersteine45af542015-06-30 13:36:19 +00001253static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001254_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1255{
1256 return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
1257 (__v2df) __B,
1258 -(__v2df) __C,
1259 (__mmask8) __U);
1260}
1261
Michael Kupersteine45af542015-06-30 13:36:19 +00001262static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001263_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1264{
1265 return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
1266 (__v4df) __B,
1267 (__v4df) __C,
1268 (__mmask8) __U);
1269}
1270
Michael Kupersteine45af542015-06-30 13:36:19 +00001271static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001272_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1273{
1274 return (__m256d) __builtin_ia32_vfmaddpd256_mask3 ((__v4df) __A,
1275 (__v4df) __B,
1276 (__v4df) __C,
1277 (__mmask8) __U);
1278}
1279
Michael Kupersteine45af542015-06-30 13:36:19 +00001280static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001281_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1282{
1283 return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
1284 (__v4df) __B,
1285 (__v4df) __C,
1286 (__mmask8) __U);
1287}
1288
Michael Kupersteine45af542015-06-30 13:36:19 +00001289static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001290_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1291{
1292 return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
1293 (__v4df) __B,
1294 -(__v4df) __C,
1295 (__mmask8) __U);
1296}
1297
Michael Kupersteine45af542015-06-30 13:36:19 +00001298static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001299_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1300{
1301 return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
1302 (__v4df) __B,
1303 -(__v4df) __C,
1304 (__mmask8) __U);
1305}
1306
Michael Kupersteine45af542015-06-30 13:36:19 +00001307static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001308_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1309{
1310 return (__m256d) __builtin_ia32_vfmaddpd256_mask3 (-(__v4df) __A,
1311 (__v4df) __B,
1312 (__v4df) __C,
1313 (__mmask8) __U);
1314}
1315
Michael Kupersteine45af542015-06-30 13:36:19 +00001316static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001317_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1318{
1319 return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
1320 (__v4df) __B,
1321 (__v4df) __C,
1322 (__mmask8) __U);
1323}
1324
Michael Kupersteine45af542015-06-30 13:36:19 +00001325static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001326_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1327{
1328 return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
1329 (__v4df) __B,
1330 -(__v4df) __C,
1331 (__mmask8) __U);
1332}
1333
Michael Kupersteine45af542015-06-30 13:36:19 +00001334static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001335_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1336{
1337 return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
1338 (__v4sf) __B,
1339 (__v4sf) __C,
1340 (__mmask8) __U);
1341}
1342
Michael Kupersteine45af542015-06-30 13:36:19 +00001343static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001344_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1345{
1346 return (__m128) __builtin_ia32_vfmaddps128_mask3 ((__v4sf) __A,
1347 (__v4sf) __B,
1348 (__v4sf) __C,
1349 (__mmask8) __U);
1350}
1351
Michael Kupersteine45af542015-06-30 13:36:19 +00001352static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001353_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1354{
1355 return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
1356 (__v4sf) __B,
1357 (__v4sf) __C,
1358 (__mmask8) __U);
1359}
1360
Michael Kupersteine45af542015-06-30 13:36:19 +00001361static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001362_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1363{
1364 return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
1365 (__v4sf) __B,
1366 -(__v4sf) __C,
1367 (__mmask8) __U);
1368}
1369
Michael Kupersteine45af542015-06-30 13:36:19 +00001370static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001371_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1372{
1373 return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
1374 (__v4sf) __B,
1375 -(__v4sf) __C,
1376 (__mmask8) __U);
1377}
1378
Michael Kupersteine45af542015-06-30 13:36:19 +00001379static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001380_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1381{
1382 return (__m128) __builtin_ia32_vfmaddps128_mask3 (-(__v4sf) __A,
1383 (__v4sf) __B,
1384 (__v4sf) __C,
1385 (__mmask8) __U);
1386}
1387
Michael Kupersteine45af542015-06-30 13:36:19 +00001388static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001389_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1390{
1391 return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
1392 (__v4sf) __B,
1393 (__v4sf) __C,
1394 (__mmask8) __U);
1395}
1396
Michael Kupersteine45af542015-06-30 13:36:19 +00001397static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001398_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1399{
1400 return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
1401 (__v4sf) __B,
1402 -(__v4sf) __C,
1403 (__mmask8) __U);
1404}
1405
Michael Kupersteine45af542015-06-30 13:36:19 +00001406static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001407_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1408{
1409 return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
1410 (__v8sf) __B,
1411 (__v8sf) __C,
1412 (__mmask8) __U);
1413}
1414
Michael Kupersteine45af542015-06-30 13:36:19 +00001415static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001416_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1417{
1418 return (__m256) __builtin_ia32_vfmaddps256_mask3 ((__v8sf) __A,
1419 (__v8sf) __B,
1420 (__v8sf) __C,
1421 (__mmask8) __U);
1422}
1423
Michael Kupersteine45af542015-06-30 13:36:19 +00001424static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001425_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1426{
1427 return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
1428 (__v8sf) __B,
1429 (__v8sf) __C,
1430 (__mmask8) __U);
1431}
1432
Michael Kupersteine45af542015-06-30 13:36:19 +00001433static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001434_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1435{
1436 return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
1437 (__v8sf) __B,
1438 -(__v8sf) __C,
1439 (__mmask8) __U);
1440}
1441
Michael Kupersteine45af542015-06-30 13:36:19 +00001442static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001443_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1444{
1445 return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
1446 (__v8sf) __B,
1447 -(__v8sf) __C,
1448 (__mmask8) __U);
1449}
1450
Michael Kupersteine45af542015-06-30 13:36:19 +00001451static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001452_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1453{
1454 return (__m256) __builtin_ia32_vfmaddps256_mask3 (-(__v8sf) __A,
1455 (__v8sf) __B,
1456 (__v8sf) __C,
1457 (__mmask8) __U);
1458}
1459
Michael Kupersteine45af542015-06-30 13:36:19 +00001460static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001461_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1462{
1463 return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
1464 (__v8sf) __B,
1465 (__v8sf) __C,
1466 (__mmask8) __U);
1467}
1468
Michael Kupersteine45af542015-06-30 13:36:19 +00001469static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001470_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1471{
1472 return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
1473 (__v8sf) __B,
1474 -(__v8sf) __C,
1475 (__mmask8) __U);
1476}
1477
Michael Kupersteine45af542015-06-30 13:36:19 +00001478static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001479_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1480{
1481 return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
1482 (__v2df) __B,
1483 (__v2df) __C,
1484 (__mmask8) __U);
1485}
1486
Michael Kupersteine45af542015-06-30 13:36:19 +00001487static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001488_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1489{
1490 return (__m128d) __builtin_ia32_vfmaddsubpd128_mask3 ((__v2df) __A,
1491 (__v2df) __B,
1492 (__v2df) __C,
1493 (__mmask8)
1494 __U);
1495}
1496
Michael Kupersteine45af542015-06-30 13:36:19 +00001497static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001498_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1499{
1500 return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
1501 (__v2df) __B,
1502 (__v2df) __C,
1503 (__mmask8)
1504 __U);
1505}
1506
Michael Kupersteine45af542015-06-30 13:36:19 +00001507static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001508_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1509{
1510 return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
1511 (__v2df) __B,
1512 -(__v2df) __C,
1513 (__mmask8) __U);
1514}
1515
Michael Kupersteine45af542015-06-30 13:36:19 +00001516static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001517_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1518{
1519 return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
1520 (__v2df) __B,
1521 -(__v2df) __C,
1522 (__mmask8)
1523 __U);
1524}
1525
Michael Kupersteine45af542015-06-30 13:36:19 +00001526static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001527_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1528{
1529 return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
1530 (__v4df) __B,
1531 (__v4df) __C,
1532 (__mmask8) __U);
1533}
1534
Michael Kupersteine45af542015-06-30 13:36:19 +00001535static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001536_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1537{
1538 return (__m256d) __builtin_ia32_vfmaddsubpd256_mask3 ((__v4df) __A,
1539 (__v4df) __B,
1540 (__v4df) __C,
1541 (__mmask8)
1542 __U);
1543}
1544
Michael Kupersteine45af542015-06-30 13:36:19 +00001545static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001546_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1547{
1548 return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
1549 (__v4df) __B,
1550 (__v4df) __C,
1551 (__mmask8)
1552 __U);
1553}
1554
Michael Kupersteine45af542015-06-30 13:36:19 +00001555static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001556_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1557{
1558 return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
1559 (__v4df) __B,
1560 -(__v4df) __C,
1561 (__mmask8) __U);
1562}
1563
Michael Kupersteine45af542015-06-30 13:36:19 +00001564static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001565_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1566{
1567 return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
1568 (__v4df) __B,
1569 -(__v4df) __C,
1570 (__mmask8)
1571 __U);
1572}
1573
Michael Kupersteine45af542015-06-30 13:36:19 +00001574static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001575_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1576{
1577 return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
1578 (__v4sf) __B,
1579 (__v4sf) __C,
1580 (__mmask8) __U);
1581}
1582
Michael Kupersteine45af542015-06-30 13:36:19 +00001583static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001584_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1585{
1586 return (__m128) __builtin_ia32_vfmaddsubps128_mask3 ((__v4sf) __A,
1587 (__v4sf) __B,
1588 (__v4sf) __C,
1589 (__mmask8) __U);
1590}
1591
Michael Kupersteine45af542015-06-30 13:36:19 +00001592static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001593_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1594{
1595 return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
1596 (__v4sf) __B,
1597 (__v4sf) __C,
1598 (__mmask8) __U);
1599}
1600
Michael Kupersteine45af542015-06-30 13:36:19 +00001601static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001602_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1603{
1604 return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
1605 (__v4sf) __B,
1606 -(__v4sf) __C,
1607 (__mmask8) __U);
1608}
1609
Michael Kupersteine45af542015-06-30 13:36:19 +00001610static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001611_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1612{
1613 return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
1614 (__v4sf) __B,
1615 -(__v4sf) __C,
1616 (__mmask8) __U);
1617}
1618
Michael Kupersteine45af542015-06-30 13:36:19 +00001619static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001620_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B,
1621 __m256 __C)
1622{
1623 return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
1624 (__v8sf) __B,
1625 (__v8sf) __C,
1626 (__mmask8) __U);
1627}
1628
Michael Kupersteine45af542015-06-30 13:36:19 +00001629static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001630_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1631{
1632 return (__m256) __builtin_ia32_vfmaddsubps256_mask3 ((__v8sf) __A,
1633 (__v8sf) __B,
1634 (__v8sf) __C,
1635 (__mmask8) __U);
1636}
1637
Michael Kupersteine45af542015-06-30 13:36:19 +00001638static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001639_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1640{
1641 return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
1642 (__v8sf) __B,
1643 (__v8sf) __C,
1644 (__mmask8) __U);
1645}
1646
Michael Kupersteine45af542015-06-30 13:36:19 +00001647static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001648_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1649{
1650 return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
1651 (__v8sf) __B,
1652 -(__v8sf) __C,
1653 (__mmask8) __U);
1654}
1655
Michael Kupersteine45af542015-06-30 13:36:19 +00001656static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001657_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1658{
1659 return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
1660 (__v8sf) __B,
1661 -(__v8sf) __C,
1662 (__mmask8) __U);
1663}
1664
Michael Kupersteine45af542015-06-30 13:36:19 +00001665static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001666_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1667{
1668 return (__m128d) __builtin_ia32_vfmsubpd128_mask3 ((__v2df) __A,
1669 (__v2df) __B,
1670 (__v2df) __C,
1671 (__mmask8) __U);
1672}
1673
Michael Kupersteine45af542015-06-30 13:36:19 +00001674static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001675_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1676{
1677 return (__m256d) __builtin_ia32_vfmsubpd256_mask3 ((__v4df) __A,
1678 (__v4df) __B,
1679 (__v4df) __C,
1680 (__mmask8) __U);
1681}
1682
Michael Kupersteine45af542015-06-30 13:36:19 +00001683static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001684_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1685{
1686 return (__m128) __builtin_ia32_vfmsubps128_mask3 ((__v4sf) __A,
1687 (__v4sf) __B,
1688 (__v4sf) __C,
1689 (__mmask8) __U);
1690}
1691
Michael Kupersteine45af542015-06-30 13:36:19 +00001692static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001693_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1694{
1695 return (__m256) __builtin_ia32_vfmsubps256_mask3 ((__v8sf) __A,
1696 (__v8sf) __B,
1697 (__v8sf) __C,
1698 (__mmask8) __U);
1699}
1700
Michael Kupersteine45af542015-06-30 13:36:19 +00001701static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001702_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1703{
1704 return (__m128d) __builtin_ia32_vfmsubaddpd128_mask3 ((__v2df) __A,
1705 (__v2df) __B,
1706 (__v2df) __C,
1707 (__mmask8)
1708 __U);
1709}
1710
Michael Kupersteine45af542015-06-30 13:36:19 +00001711static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001712_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1713{
1714 return (__m256d) __builtin_ia32_vfmsubaddpd256_mask3 ((__v4df) __A,
1715 (__v4df) __B,
1716 (__v4df) __C,
1717 (__mmask8)
1718 __U);
1719}
1720
Michael Kupersteine45af542015-06-30 13:36:19 +00001721static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001722_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1723{
1724 return (__m128) __builtin_ia32_vfmsubaddps128_mask3 ((__v4sf) __A,
1725 (__v4sf) __B,
1726 (__v4sf) __C,
1727 (__mmask8) __U);
1728}
1729
Michael Kupersteine45af542015-06-30 13:36:19 +00001730static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001731_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1732{
1733 return (__m256) __builtin_ia32_vfmsubaddps256_mask3 ((__v8sf) __A,
1734 (__v8sf) __B,
1735 (__v8sf) __C,
1736 (__mmask8) __U);
1737}
1738
Michael Kupersteine45af542015-06-30 13:36:19 +00001739static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001740_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1741{
1742 return (__m128d) __builtin_ia32_vfnmaddpd128_mask ((__v2df) __A,
1743 (__v2df) __B,
1744 (__v2df) __C,
1745 (__mmask8) __U);
1746}
1747
Michael Kupersteine45af542015-06-30 13:36:19 +00001748static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001749_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1750{
1751 return (__m256d) __builtin_ia32_vfnmaddpd256_mask ((__v4df) __A,
1752 (__v4df) __B,
1753 (__v4df) __C,
1754 (__mmask8) __U);
1755}
1756
Michael Kupersteine45af542015-06-30 13:36:19 +00001757static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001758_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1759{
1760 return (__m128) __builtin_ia32_vfnmaddps128_mask ((__v4sf) __A,
1761 (__v4sf) __B,
1762 (__v4sf) __C,
1763 (__mmask8) __U);
1764}
1765
Michael Kupersteine45af542015-06-30 13:36:19 +00001766static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001767_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1768{
1769 return (__m256) __builtin_ia32_vfnmaddps256_mask ((__v8sf) __A,
1770 (__v8sf) __B,
1771 (__v8sf) __C,
1772 (__mmask8) __U);
1773}
1774
Michael Kupersteine45af542015-06-30 13:36:19 +00001775static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001776_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1777{
1778 return (__m128d) __builtin_ia32_vfnmsubpd128_mask ((__v2df) __A,
1779 (__v2df) __B,
1780 (__v2df) __C,
1781 (__mmask8) __U);
1782}
1783
Michael Kupersteine45af542015-06-30 13:36:19 +00001784static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001785_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1786{
1787 return (__m128d) __builtin_ia32_vfnmsubpd128_mask3 ((__v2df) __A,
1788 (__v2df) __B,
1789 (__v2df) __C,
1790 (__mmask8) __U);
1791}
1792
Michael Kupersteine45af542015-06-30 13:36:19 +00001793static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001794_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1795{
1796 return (__m256d) __builtin_ia32_vfnmsubpd256_mask ((__v4df) __A,
1797 (__v4df) __B,
1798 (__v4df) __C,
1799 (__mmask8) __U);
1800}
1801
Michael Kupersteine45af542015-06-30 13:36:19 +00001802static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001803_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1804{
1805 return (__m256d) __builtin_ia32_vfnmsubpd256_mask3 ((__v4df) __A,
1806 (__v4df) __B,
1807 (__v4df) __C,
1808 (__mmask8) __U);
1809}
1810
Michael Kupersteine45af542015-06-30 13:36:19 +00001811static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001812_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1813{
1814 return (__m128) __builtin_ia32_vfnmsubps128_mask ((__v4sf) __A,
1815 (__v4sf) __B,
1816 (__v4sf) __C,
1817 (__mmask8) __U);
1818}
1819
Michael Kupersteine45af542015-06-30 13:36:19 +00001820static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001821_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1822{
1823 return (__m128) __builtin_ia32_vfnmsubps128_mask3 ((__v4sf) __A,
1824 (__v4sf) __B,
1825 (__v4sf) __C,
1826 (__mmask8) __U);
1827}
1828
Michael Kupersteine45af542015-06-30 13:36:19 +00001829static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001830_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1831{
1832 return (__m256) __builtin_ia32_vfnmsubps256_mask ((__v8sf) __A,
1833 (__v8sf) __B,
1834 (__v8sf) __C,
1835 (__mmask8) __U);
1836}
1837
Michael Kupersteine45af542015-06-30 13:36:19 +00001838static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001839_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1840{
1841 return (__m256) __builtin_ia32_vfnmsubps256_mask3 ((__v8sf) __A,
1842 (__v8sf) __B,
1843 (__v8sf) __C,
1844 (__mmask8) __U);
1845}
1846
Asaf Badouh74da3872015-07-28 08:26:14 +00001847static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001848_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1849 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1850 (__v2df)_mm_add_pd(__A, __B),
1851 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001852}
1853
1854static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001855_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
1856 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1857 (__v2df)_mm_add_pd(__A, __B),
1858 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001859}
1860
1861static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001862_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
1863 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1864 (__v4df)_mm256_add_pd(__A, __B),
1865 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001866}
1867
1868static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001869_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
1870 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1871 (__v4df)_mm256_add_pd(__A, __B),
1872 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001873}
1874
1875static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001876_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1877 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1878 (__v4sf)_mm_add_ps(__A, __B),
1879 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001880}
1881
1882static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001883_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
1884 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1885 (__v4sf)_mm_add_ps(__A, __B),
1886 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001887}
1888
1889static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001890_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
1891 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1892 (__v8sf)_mm256_add_ps(__A, __B),
1893 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001894}
1895
1896static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001897_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
1898 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1899 (__v8sf)_mm256_add_ps(__A, __B),
1900 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001901}
1902
1903static __inline__ __m128i __DEFAULT_FN_ATTRS
1904_mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001905 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001906 (__v4si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001907 (__v4si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001908}
1909
1910static __inline__ __m256i __DEFAULT_FN_ATTRS
1911_mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001912 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001913 (__v8si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001914 (__v8si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001915}
1916
1917static __inline__ __m128d __DEFAULT_FN_ATTRS
1918_mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001919 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001920 (__v2df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001921 (__v2df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001922}
1923
1924static __inline__ __m256d __DEFAULT_FN_ATTRS
1925_mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001926 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001927 (__v4df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001928 (__v4df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001929}
1930
1931static __inline__ __m128 __DEFAULT_FN_ATTRS
1932_mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001933 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001934 (__v4sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001935 (__v4sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001936}
1937
1938static __inline__ __m256 __DEFAULT_FN_ATTRS
1939_mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001940 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001941 (__v8sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001942 (__v8sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001943}
1944
1945static __inline__ __m128i __DEFAULT_FN_ATTRS
1946_mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001947 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001948 (__v2di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001949 (__v2di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001950}
1951
1952static __inline__ __m256i __DEFAULT_FN_ATTRS
1953_mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001954 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001955 (__v4di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001956 (__v4di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001957}
1958
1959static __inline__ __m128d __DEFAULT_FN_ATTRS
1960_mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A) {
1961 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1962 (__v2df) __W,
1963 (__mmask8) __U);
1964}
1965
1966static __inline__ __m128d __DEFAULT_FN_ATTRS
1967_mm_maskz_compress_pd (__mmask8 __U, __m128d __A) {
1968 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1969 (__v2df)
1970 _mm_setzero_pd (),
1971 (__mmask8) __U);
1972}
1973
1974static __inline__ __m256d __DEFAULT_FN_ATTRS
1975_mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A) {
1976 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1977 (__v4df) __W,
1978 (__mmask8) __U);
1979}
1980
1981static __inline__ __m256d __DEFAULT_FN_ATTRS
1982_mm256_maskz_compress_pd (__mmask8 __U, __m256d __A) {
1983 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1984 (__v4df)
1985 _mm256_setzero_pd (),
1986 (__mmask8) __U);
1987}
1988
1989static __inline__ __m128i __DEFAULT_FN_ATTRS
1990_mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
1991 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1992 (__v2di) __W,
1993 (__mmask8) __U);
1994}
1995
1996static __inline__ __m128i __DEFAULT_FN_ATTRS
1997_mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A) {
1998 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1999 (__v2di)
2000 _mm_setzero_si128 (),
2001 (__mmask8) __U);
2002}
2003
2004static __inline__ __m256i __DEFAULT_FN_ATTRS
2005_mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2006 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
2007 (__v4di) __W,
2008 (__mmask8) __U);
2009}
2010
2011static __inline__ __m256i __DEFAULT_FN_ATTRS
2012_mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A) {
2013 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
2014 (__v4di)
2015 _mm256_setzero_si256 (),
2016 (__mmask8) __U);
2017}
2018
2019static __inline__ __m128 __DEFAULT_FN_ATTRS
2020_mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2021 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
2022 (__v4sf) __W,
2023 (__mmask8) __U);
2024}
2025
2026static __inline__ __m128 __DEFAULT_FN_ATTRS
2027_mm_maskz_compress_ps (__mmask8 __U, __m128 __A) {
2028 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
2029 (__v4sf)
2030 _mm_setzero_ps (),
2031 (__mmask8) __U);
2032}
2033
2034static __inline__ __m256 __DEFAULT_FN_ATTRS
2035_mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2036 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
2037 (__v8sf) __W,
2038 (__mmask8) __U);
2039}
2040
2041static __inline__ __m256 __DEFAULT_FN_ATTRS
2042_mm256_maskz_compress_ps (__mmask8 __U, __m256 __A) {
2043 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
2044 (__v8sf)
2045 _mm256_setzero_ps (),
2046 (__mmask8) __U);
2047}
2048
2049static __inline__ __m128i __DEFAULT_FN_ATTRS
2050_mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2051 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
2052 (__v4si) __W,
2053 (__mmask8) __U);
2054}
2055
2056static __inline__ __m128i __DEFAULT_FN_ATTRS
2057_mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A) {
2058 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
2059 (__v4si)
2060 _mm_setzero_si128 (),
2061 (__mmask8) __U);
2062}
2063
2064static __inline__ __m256i __DEFAULT_FN_ATTRS
2065_mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2066 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
2067 (__v8si) __W,
2068 (__mmask8) __U);
2069}
2070
2071static __inline__ __m256i __DEFAULT_FN_ATTRS
2072_mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A) {
2073 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
2074 (__v8si)
2075 _mm256_setzero_si256 (),
2076 (__mmask8) __U);
2077}
2078
2079static __inline__ void __DEFAULT_FN_ATTRS
2080_mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A) {
2081 __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
2082 (__v2df) __A,
2083 (__mmask8) __U);
2084}
2085
2086static __inline__ void __DEFAULT_FN_ATTRS
2087_mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A) {
2088 __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
2089 (__v4df) __A,
2090 (__mmask8) __U);
2091}
2092
2093static __inline__ void __DEFAULT_FN_ATTRS
2094_mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A) {
2095 __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
2096 (__v2di) __A,
2097 (__mmask8) __U);
2098}
2099
2100static __inline__ void __DEFAULT_FN_ATTRS
2101_mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A) {
2102 __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
2103 (__v4di) __A,
2104 (__mmask8) __U);
2105}
2106
2107static __inline__ void __DEFAULT_FN_ATTRS
2108_mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A) {
2109 __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
2110 (__v4sf) __A,
2111 (__mmask8) __U);
2112}
2113
2114static __inline__ void __DEFAULT_FN_ATTRS
2115_mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A) {
2116 __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
2117 (__v8sf) __A,
2118 (__mmask8) __U);
2119}
2120
2121static __inline__ void __DEFAULT_FN_ATTRS
2122_mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A) {
2123 __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
2124 (__v4si) __A,
2125 (__mmask8) __U);
2126}
2127
2128static __inline__ void __DEFAULT_FN_ATTRS
2129_mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A) {
2130 __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
2131 (__v8si) __A,
2132 (__mmask8) __U);
2133}
2134
2135static __inline__ __m128d __DEFAULT_FN_ATTRS
2136_mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002137 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2138 (__v2df)_mm_cvtepi32_pd(__A),
2139 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002140}
2141
2142static __inline__ __m128d __DEFAULT_FN_ATTRS
2143_mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002144 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2145 (__v2df)_mm_cvtepi32_pd(__A),
2146 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002147}
2148
2149static __inline__ __m256d __DEFAULT_FN_ATTRS
2150_mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002151 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2152 (__v4df)_mm256_cvtepi32_pd(__A),
2153 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002154}
2155
2156static __inline__ __m256d __DEFAULT_FN_ATTRS
2157_mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002158 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2159 (__v4df)_mm256_cvtepi32_pd(__A),
2160 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002161}
2162
2163static __inline__ __m128 __DEFAULT_FN_ATTRS
2164_mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
2165 return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
2166 (__v4sf) __W,
2167 (__mmask8) __U);
2168}
2169
2170static __inline__ __m128 __DEFAULT_FN_ATTRS
2171_mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A) {
2172 return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
2173 (__v4sf)
2174 _mm_setzero_ps (),
2175 (__mmask8) __U);
2176}
2177
2178static __inline__ __m256 __DEFAULT_FN_ATTRS
2179_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
2180 return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
2181 (__v8sf) __W,
2182 (__mmask8) __U);
2183}
2184
2185static __inline__ __m256 __DEFAULT_FN_ATTRS
2186_mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A) {
2187 return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
2188 (__v8sf)
2189 _mm256_setzero_ps (),
2190 (__mmask8) __U);
2191}
2192
2193static __inline__ __m128i __DEFAULT_FN_ATTRS
2194_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2195 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
2196 (__v4si) __W,
2197 (__mmask8) __U);
2198}
2199
2200static __inline__ __m128i __DEFAULT_FN_ATTRS
2201_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
2202 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
2203 (__v4si)
2204 _mm_setzero_si128 (),
2205 (__mmask8) __U);
2206}
2207
2208static __inline__ __m128i __DEFAULT_FN_ATTRS
2209_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
2210 return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
2211 (__v4si) __W,
2212 (__mmask8) __U);
2213}
2214
2215static __inline__ __m128i __DEFAULT_FN_ATTRS
2216_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
2217 return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
2218 (__v4si)
2219 _mm_setzero_si128 (),
2220 (__mmask8) __U);
2221}
2222
2223static __inline__ __m128 __DEFAULT_FN_ATTRS
2224_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
2225 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
2226 (__v4sf) __W,
2227 (__mmask8) __U);
2228}
2229
2230static __inline__ __m128 __DEFAULT_FN_ATTRS
2231_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
2232 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
2233 (__v4sf)
2234 _mm_setzero_ps (),
2235 (__mmask8) __U);
2236}
2237
2238static __inline__ __m128 __DEFAULT_FN_ATTRS
2239_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
2240 return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
2241 (__v4sf) __W,
2242 (__mmask8) __U);
2243}
2244
2245static __inline__ __m128 __DEFAULT_FN_ATTRS
2246_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
2247 return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
2248 (__v4sf)
2249 _mm_setzero_ps (),
2250 (__mmask8) __U);
2251}
2252
2253static __inline__ __m128i __DEFAULT_FN_ATTRS
2254_mm_cvtpd_epu32 (__m128d __A) {
2255 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
2256 (__v4si)
2257 _mm_setzero_si128 (),
2258 (__mmask8) -1);
2259}
2260
2261static __inline__ __m128i __DEFAULT_FN_ATTRS
2262_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2263 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
2264 (__v4si) __W,
2265 (__mmask8) __U);
2266}
2267
2268static __inline__ __m128i __DEFAULT_FN_ATTRS
2269_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
2270 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
2271 (__v4si)
2272 _mm_setzero_si128 (),
2273 (__mmask8) __U);
2274}
2275
2276static __inline__ __m128i __DEFAULT_FN_ATTRS
2277_mm256_cvtpd_epu32 (__m256d __A) {
2278 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
2279 (__v4si)
2280 _mm_setzero_si128 (),
2281 (__mmask8) -1);
2282}
2283
2284static __inline__ __m128i __DEFAULT_FN_ATTRS
2285_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2286 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
2287 (__v4si) __W,
2288 (__mmask8) __U);
2289}
2290
2291static __inline__ __m128i __DEFAULT_FN_ATTRS
2292_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
2293 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
2294 (__v4si)
2295 _mm_setzero_si128 (),
2296 (__mmask8) __U);
2297}
2298
2299static __inline__ __m128i __DEFAULT_FN_ATTRS
2300_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
2301 return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
2302 (__v4si) __W,
2303 (__mmask8) __U);
2304}
2305
2306static __inline__ __m128i __DEFAULT_FN_ATTRS
2307_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
2308 return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
2309 (__v4si)
2310 _mm_setzero_si128 (),
2311 (__mmask8) __U);
2312}
2313
2314static __inline__ __m256i __DEFAULT_FN_ATTRS
2315_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
2316 return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
2317 (__v8si) __W,
2318 (__mmask8) __U);
2319}
2320
2321static __inline__ __m256i __DEFAULT_FN_ATTRS
2322_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
2323 return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
2324 (__v8si)
2325 _mm256_setzero_si256 (),
2326 (__mmask8) __U);
2327}
2328
2329static __inline__ __m128d __DEFAULT_FN_ATTRS
2330_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
2331 return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
2332 (__v2df) __W,
2333 (__mmask8) __U);
2334}
2335
2336static __inline__ __m128d __DEFAULT_FN_ATTRS
2337_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
2338 return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
2339 (__v2df)
2340 _mm_setzero_pd (),
2341 (__mmask8) __U);
2342}
2343
2344static __inline__ __m256d __DEFAULT_FN_ATTRS
2345_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
2346 return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
2347 (__v4df) __W,
2348 (__mmask8) __U);
2349}
2350
2351static __inline__ __m256d __DEFAULT_FN_ATTRS
2352_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
2353 return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
2354 (__v4df)
2355 _mm256_setzero_pd (),
2356 (__mmask8) __U);
2357}
2358
2359static __inline__ __m128i __DEFAULT_FN_ATTRS
2360_mm_cvtps_epu32 (__m128 __A) {
2361 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2362 (__v4si)
2363 _mm_setzero_si128 (),
2364 (__mmask8) -1);
2365}
2366
2367static __inline__ __m128i __DEFAULT_FN_ATTRS
2368_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2369 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2370 (__v4si) __W,
2371 (__mmask8) __U);
2372}
2373
2374static __inline__ __m128i __DEFAULT_FN_ATTRS
2375_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
2376 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2377 (__v4si)
2378 _mm_setzero_si128 (),
2379 (__mmask8) __U);
2380}
2381
2382static __inline__ __m256i __DEFAULT_FN_ATTRS
2383_mm256_cvtps_epu32 (__m256 __A) {
2384 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2385 (__v8si)
2386 _mm256_setzero_si256 (),
2387 (__mmask8) -1);
2388}
2389
2390static __inline__ __m256i __DEFAULT_FN_ATTRS
2391_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2392 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2393 (__v8si) __W,
2394 (__mmask8) __U);
2395}
2396
2397static __inline__ __m256i __DEFAULT_FN_ATTRS
2398_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2399 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2400 (__v8si)
2401 _mm256_setzero_si256 (),
2402 (__mmask8) __U);
2403}
2404
2405static __inline__ __m128i __DEFAULT_FN_ATTRS
2406_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2407 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2408 (__v4si) __W,
2409 (__mmask8) __U);
2410}
2411
2412static __inline__ __m128i __DEFAULT_FN_ATTRS
2413_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2414 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2415 (__v4si)
2416 _mm_setzero_si128 (),
2417 (__mmask8) __U);
2418}
2419
2420static __inline__ __m128i __DEFAULT_FN_ATTRS
2421_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
2422 return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
2423 (__v4si) __W,
2424 (__mmask8) __U);
2425}
2426
2427static __inline__ __m128i __DEFAULT_FN_ATTRS
2428_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
2429 return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
2430 (__v4si)
2431 _mm_setzero_si128 (),
2432 (__mmask8) __U);
2433}
2434
2435static __inline__ __m128i __DEFAULT_FN_ATTRS
2436_mm_cvttpd_epu32 (__m128d __A) {
2437 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2438 (__v4si)
2439 _mm_setzero_si128 (),
2440 (__mmask8) -1);
2441}
2442
2443static __inline__ __m128i __DEFAULT_FN_ATTRS
2444_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2445 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2446 (__v4si) __W,
2447 (__mmask8) __U);
2448}
2449
2450static __inline__ __m128i __DEFAULT_FN_ATTRS
2451_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2452 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2453 (__v4si)
2454 _mm_setzero_si128 (),
2455 (__mmask8) __U);
2456}
2457
2458static __inline__ __m128i __DEFAULT_FN_ATTRS
2459_mm256_cvttpd_epu32 (__m256d __A) {
2460 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2461 (__v4si)
2462 _mm_setzero_si128 (),
2463 (__mmask8) -1);
2464}
2465
2466static __inline__ __m128i __DEFAULT_FN_ATTRS
2467_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2468 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2469 (__v4si) __W,
2470 (__mmask8) __U);
2471}
2472
2473static __inline__ __m128i __DEFAULT_FN_ATTRS
2474_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2475 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2476 (__v4si)
2477 _mm_setzero_si128 (),
2478 (__mmask8) __U);
2479}
2480
2481static __inline__ __m128i __DEFAULT_FN_ATTRS
2482_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
2483 return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
2484 (__v4si) __W,
2485 (__mmask8) __U);
2486}
2487
2488static __inline__ __m128i __DEFAULT_FN_ATTRS
2489_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
2490 return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
2491 (__v4si)
2492 _mm_setzero_si128 (),
2493 (__mmask8) __U);
2494}
2495
2496static __inline__ __m256i __DEFAULT_FN_ATTRS
2497_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
2498 return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
2499 (__v8si) __W,
2500 (__mmask8) __U);
2501}
2502
2503static __inline__ __m256i __DEFAULT_FN_ATTRS
2504_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
2505 return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
2506 (__v8si)
2507 _mm256_setzero_si256 (),
2508 (__mmask8) __U);
2509}
2510
2511static __inline__ __m128i __DEFAULT_FN_ATTRS
2512_mm_cvttps_epu32 (__m128 __A) {
2513 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2514 (__v4si)
2515 _mm_setzero_si128 (),
2516 (__mmask8) -1);
2517}
2518
2519static __inline__ __m128i __DEFAULT_FN_ATTRS
2520_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2521 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2522 (__v4si) __W,
2523 (__mmask8) __U);
2524}
2525
2526static __inline__ __m128i __DEFAULT_FN_ATTRS
2527_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2528 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2529 (__v4si)
2530 _mm_setzero_si128 (),
2531 (__mmask8) __U);
2532}
2533
2534static __inline__ __m256i __DEFAULT_FN_ATTRS
2535_mm256_cvttps_epu32 (__m256 __A) {
2536 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2537 (__v8si)
2538 _mm256_setzero_si256 (),
2539 (__mmask8) -1);
2540}
2541
2542static __inline__ __m256i __DEFAULT_FN_ATTRS
2543_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2544 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2545 (__v8si) __W,
2546 (__mmask8) __U);
2547}
2548
2549static __inline__ __m256i __DEFAULT_FN_ATTRS
2550_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2551 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2552 (__v8si)
2553 _mm256_setzero_si256 (),
2554 (__mmask8) __U);
2555}
2556
2557static __inline__ __m128d __DEFAULT_FN_ATTRS
2558_mm_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002559 return (__m128d) __builtin_convertvector(
2560 __builtin_shufflevector((__v4su)__A, (__v4su)__A, 0, 1), __v2df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002561}
2562
2563static __inline__ __m128d __DEFAULT_FN_ATTRS
2564_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002565 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2566 (__v2df)_mm_cvtepu32_pd(__A),
2567 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002568}
2569
2570static __inline__ __m128d __DEFAULT_FN_ATTRS
2571_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002572 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2573 (__v2df)_mm_cvtepu32_pd(__A),
2574 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002575}
2576
2577static __inline__ __m256d __DEFAULT_FN_ATTRS
2578_mm256_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002579 return (__m256d)__builtin_convertvector((__v4su)__A, __v4df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002580}
2581
2582static __inline__ __m256d __DEFAULT_FN_ATTRS
2583_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002584 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2585 (__v4df)_mm256_cvtepu32_pd(__A),
2586 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002587}
2588
2589static __inline__ __m256d __DEFAULT_FN_ATTRS
2590_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002591 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2592 (__v4df)_mm256_cvtepu32_pd(__A),
2593 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002594}
2595
2596static __inline__ __m128 __DEFAULT_FN_ATTRS
2597_mm_cvtepu32_ps (__m128i __A) {
2598 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2599 (__v4sf)
2600 _mm_setzero_ps (),
2601 (__mmask8) -1);
2602}
2603
2604static __inline__ __m128 __DEFAULT_FN_ATTRS
2605_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
2606 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2607 (__v4sf) __W,
2608 (__mmask8) __U);
2609}
2610
2611static __inline__ __m128 __DEFAULT_FN_ATTRS
2612_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
2613 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2614 (__v4sf)
2615 _mm_setzero_ps (),
2616 (__mmask8) __U);
2617}
2618
2619static __inline__ __m256 __DEFAULT_FN_ATTRS
2620_mm256_cvtepu32_ps (__m256i __A) {
2621 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2622 (__v8sf)
2623 _mm256_setzero_ps (),
2624 (__mmask8) -1);
2625}
2626
2627static __inline__ __m256 __DEFAULT_FN_ATTRS
2628_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
2629 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2630 (__v8sf) __W,
2631 (__mmask8) __U);
2632}
2633
2634static __inline__ __m256 __DEFAULT_FN_ATTRS
2635_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
2636 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2637 (__v8sf)
2638 _mm256_setzero_ps (),
2639 (__mmask8) __U);
2640}
2641
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002642static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002643_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2644 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2645 (__v2df)_mm_div_pd(__A, __B),
2646 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002647}
2648
2649static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002650_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2651 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2652 (__v2df)_mm_div_pd(__A, __B),
2653 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002654}
2655
2656static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002657_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2658 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2659 (__v4df)_mm256_div_pd(__A, __B),
2660 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002661}
2662
2663static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002664_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2665 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2666 (__v4df)_mm256_div_pd(__A, __B),
2667 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002668}
2669
2670static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002671_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2672 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2673 (__v4sf)_mm_div_ps(__A, __B),
2674 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002675}
2676
2677static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002678_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2679 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2680 (__v4sf)_mm_div_ps(__A, __B),
2681 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002682}
2683
2684static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002685_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2686 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2687 (__v8sf)_mm256_div_ps(__A, __B),
2688 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002689}
2690
2691static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002692_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2693 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2694 (__v8sf)_mm256_div_ps(__A, __B),
2695 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002696}
2697
2698static __inline__ __m128d __DEFAULT_FN_ATTRS
2699_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2700 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2701 (__v2df) __W,
2702 (__mmask8) __U);
2703}
2704
2705static __inline__ __m128d __DEFAULT_FN_ATTRS
2706_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2707 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2708 (__v2df)
2709 _mm_setzero_pd (),
2710 (__mmask8) __U);
2711}
2712
2713static __inline__ __m256d __DEFAULT_FN_ATTRS
2714_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2715 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2716 (__v4df) __W,
2717 (__mmask8) __U);
2718}
2719
2720static __inline__ __m256d __DEFAULT_FN_ATTRS
2721_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2722 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2723 (__v4df)
2724 _mm256_setzero_pd (),
2725 (__mmask8) __U);
2726}
2727
2728static __inline__ __m128i __DEFAULT_FN_ATTRS
2729_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2730 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2731 (__v2di) __W,
2732 (__mmask8) __U);
2733}
2734
2735static __inline__ __m128i __DEFAULT_FN_ATTRS
2736_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2737 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2738 (__v2di)
2739 _mm_setzero_si128 (),
2740 (__mmask8) __U);
2741}
2742
2743static __inline__ __m256i __DEFAULT_FN_ATTRS
2744_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2745 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2746 (__v4di) __W,
2747 (__mmask8) __U);
2748}
2749
2750static __inline__ __m256i __DEFAULT_FN_ATTRS
2751_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2752 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2753 (__v4di)
2754 _mm256_setzero_si256 (),
2755 (__mmask8) __U);
2756}
2757
2758static __inline__ __m128d __DEFAULT_FN_ATTRS
2759_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2760 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2761 (__v2df) __W,
2762 (__mmask8)
2763 __U);
2764}
2765
2766static __inline__ __m128d __DEFAULT_FN_ATTRS
2767_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2768 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2769 (__v2df)
2770 _mm_setzero_pd (),
2771 (__mmask8)
2772 __U);
2773}
2774
2775static __inline__ __m256d __DEFAULT_FN_ATTRS
2776_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2777 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2778 (__v4df) __W,
2779 (__mmask8)
2780 __U);
2781}
2782
2783static __inline__ __m256d __DEFAULT_FN_ATTRS
2784_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2785 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2786 (__v4df)
2787 _mm256_setzero_pd (),
2788 (__mmask8)
2789 __U);
2790}
2791
2792static __inline__ __m128i __DEFAULT_FN_ATTRS
2793_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2794 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2795 (__v2di) __W,
2796 (__mmask8)
2797 __U);
2798}
2799
2800static __inline__ __m128i __DEFAULT_FN_ATTRS
2801_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2802 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2803 (__v2di)
2804 _mm_setzero_si128 (),
2805 (__mmask8)
2806 __U);
2807}
2808
2809static __inline__ __m256i __DEFAULT_FN_ATTRS
2810_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2811 void const *__P) {
2812 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2813 (__v4di) __W,
2814 (__mmask8)
2815 __U);
2816}
2817
2818static __inline__ __m256i __DEFAULT_FN_ATTRS
2819_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2820 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2821 (__v4di)
2822 _mm256_setzero_si256 (),
2823 (__mmask8)
2824 __U);
2825}
2826
2827static __inline__ __m128 __DEFAULT_FN_ATTRS
2828_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2829 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2830 (__v4sf) __W,
2831 (__mmask8) __U);
2832}
2833
2834static __inline__ __m128 __DEFAULT_FN_ATTRS
2835_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2836 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2837 (__v4sf)
2838 _mm_setzero_ps (),
2839 (__mmask8)
2840 __U);
2841}
2842
2843static __inline__ __m256 __DEFAULT_FN_ATTRS
2844_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2845 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2846 (__v8sf) __W,
2847 (__mmask8) __U);
2848}
2849
2850static __inline__ __m256 __DEFAULT_FN_ATTRS
2851_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2852 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2853 (__v8sf)
2854 _mm256_setzero_ps (),
2855 (__mmask8)
2856 __U);
2857}
2858
2859static __inline__ __m128i __DEFAULT_FN_ATTRS
2860_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2861 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2862 (__v4si) __W,
2863 (__mmask8)
2864 __U);
2865}
2866
2867static __inline__ __m128i __DEFAULT_FN_ATTRS
2868_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2869 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2870 (__v4si)
2871 _mm_setzero_si128 (),
2872 (__mmask8) __U);
2873}
2874
2875static __inline__ __m256i __DEFAULT_FN_ATTRS
2876_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2877 void const *__P) {
2878 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2879 (__v8si) __W,
2880 (__mmask8)
2881 __U);
2882}
2883
2884static __inline__ __m256i __DEFAULT_FN_ATTRS
2885_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2886 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2887 (__v8si)
2888 _mm256_setzero_si256 (),
2889 (__mmask8)
2890 __U);
2891}
2892
2893static __inline__ __m128 __DEFAULT_FN_ATTRS
2894_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2895 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2896 (__v4sf) __W,
2897 (__mmask8) __U);
2898}
2899
2900static __inline__ __m128 __DEFAULT_FN_ATTRS
2901_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2902 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2903 (__v4sf)
2904 _mm_setzero_ps (),
2905 (__mmask8) __U);
2906}
2907
2908static __inline__ __m256 __DEFAULT_FN_ATTRS
2909_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2910 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2911 (__v8sf) __W,
2912 (__mmask8) __U);
2913}
2914
2915static __inline__ __m256 __DEFAULT_FN_ATTRS
2916_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2917 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2918 (__v8sf)
2919 _mm256_setzero_ps (),
2920 (__mmask8) __U);
2921}
2922
2923static __inline__ __m128i __DEFAULT_FN_ATTRS
2924_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2925 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2926 (__v4si) __W,
2927 (__mmask8) __U);
2928}
2929
2930static __inline__ __m128i __DEFAULT_FN_ATTRS
2931_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2932 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2933 (__v4si)
2934 _mm_setzero_si128 (),
2935 (__mmask8) __U);
2936}
2937
2938static __inline__ __m256i __DEFAULT_FN_ATTRS
2939_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2940 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2941 (__v8si) __W,
2942 (__mmask8) __U);
2943}
2944
2945static __inline__ __m256i __DEFAULT_FN_ATTRS
2946_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2947 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2948 (__v8si)
2949 _mm256_setzero_si256 (),
2950 (__mmask8) __U);
2951}
2952
2953static __inline__ __m128d __DEFAULT_FN_ATTRS
2954_mm_getexp_pd (__m128d __A) {
2955 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2956 (__v2df)
2957 _mm_setzero_pd (),
2958 (__mmask8) -1);
2959}
2960
2961static __inline__ __m128d __DEFAULT_FN_ATTRS
2962_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2963 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2964 (__v2df) __W,
2965 (__mmask8) __U);
2966}
2967
2968static __inline__ __m128d __DEFAULT_FN_ATTRS
2969_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2970 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2971 (__v2df)
2972 _mm_setzero_pd (),
2973 (__mmask8) __U);
2974}
2975
2976static __inline__ __m256d __DEFAULT_FN_ATTRS
2977_mm256_getexp_pd (__m256d __A) {
2978 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2979 (__v4df)
2980 _mm256_setzero_pd (),
2981 (__mmask8) -1);
2982}
2983
2984static __inline__ __m256d __DEFAULT_FN_ATTRS
2985_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2986 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2987 (__v4df) __W,
2988 (__mmask8) __U);
2989}
2990
2991static __inline__ __m256d __DEFAULT_FN_ATTRS
2992_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2993 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2994 (__v4df)
2995 _mm256_setzero_pd (),
2996 (__mmask8) __U);
2997}
2998
2999static __inline__ __m128 __DEFAULT_FN_ATTRS
3000_mm_getexp_ps (__m128 __A) {
3001 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
3002 (__v4sf)
3003 _mm_setzero_ps (),
3004 (__mmask8) -1);
3005}
3006
3007static __inline__ __m128 __DEFAULT_FN_ATTRS
3008_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
3009 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
3010 (__v4sf) __W,
3011 (__mmask8) __U);
3012}
3013
3014static __inline__ __m128 __DEFAULT_FN_ATTRS
3015_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
3016 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
3017 (__v4sf)
3018 _mm_setzero_ps (),
3019 (__mmask8) __U);
3020}
3021
3022static __inline__ __m256 __DEFAULT_FN_ATTRS
3023_mm256_getexp_ps (__m256 __A) {
3024 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
3025 (__v8sf)
3026 _mm256_setzero_ps (),
3027 (__mmask8) -1);
3028}
3029
3030static __inline__ __m256 __DEFAULT_FN_ATTRS
3031_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
3032 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
3033 (__v8sf) __W,
3034 (__mmask8) __U);
3035}
3036
3037static __inline__ __m256 __DEFAULT_FN_ATTRS
3038_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
3039 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
3040 (__v8sf)
3041 _mm256_setzero_ps (),
3042 (__mmask8) __U);
3043}
3044
3045static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003046_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3047 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3048 (__v2df)_mm_max_pd(__A, __B),
3049 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003050}
3051
3052static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003053_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3054 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3055 (__v2df)_mm_max_pd(__A, __B),
3056 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003057}
3058
3059static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003060_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3061 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3062 (__v4df)_mm256_max_pd(__A, __B),
3063 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003064}
3065
3066static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003067_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3068 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3069 (__v4df)_mm256_max_pd(__A, __B),
3070 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003071}
3072
3073static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003074_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3075 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3076 (__v4sf)_mm_max_ps(__A, __B),
3077 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003078}
3079
3080static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003081_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3082 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3083 (__v4sf)_mm_max_ps(__A, __B),
3084 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003085}
3086
3087static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003088_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3089 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3090 (__v8sf)_mm256_max_ps(__A, __B),
3091 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003092}
3093
3094static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003095_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3096 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3097 (__v8sf)_mm256_max_ps(__A, __B),
3098 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003099}
3100
3101static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003102_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3103 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3104 (__v2df)_mm_min_pd(__A, __B),
3105 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003106}
3107
3108static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003109_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3110 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3111 (__v2df)_mm_min_pd(__A, __B),
3112 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003113}
3114
3115static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003116_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3117 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3118 (__v4df)_mm256_min_pd(__A, __B),
3119 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003120}
3121
3122static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003123_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3124 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3125 (__v4df)_mm256_min_pd(__A, __B),
3126 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003127}
3128
3129static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003130_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3131 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3132 (__v4sf)_mm_min_ps(__A, __B),
3133 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003134}
3135
3136static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003137_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3138 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3139 (__v4sf)_mm_min_ps(__A, __B),
3140 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003141}
3142
3143static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003144_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3145 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3146 (__v8sf)_mm256_min_ps(__A, __B),
3147 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003148}
3149
3150static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00003151_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3152 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3153 (__v8sf)_mm256_min_ps(__A, __B),
3154 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003155}
3156
3157static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003158_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3159 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3160 (__v2df)_mm_mul_pd(__A, __B),
3161 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003162}
3163
3164static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003165_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3166 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3167 (__v2df)_mm_mul_pd(__A, __B),
3168 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003169}
3170
3171static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003172_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3173 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3174 (__v4df)_mm256_mul_pd(__A, __B),
3175 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003176}
3177
3178static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003179_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3180 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3181 (__v4df)_mm256_mul_pd(__A, __B),
3182 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003183}
3184
3185static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003186_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3187 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3188 (__v4sf)_mm_mul_ps(__A, __B),
3189 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003190}
3191
3192static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003193_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3194 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3195 (__v4sf)_mm_mul_ps(__A, __B),
3196 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003197}
3198
3199static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003200_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3201 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3202 (__v8sf)_mm256_mul_ps(__A, __B),
3203 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003204}
3205
3206static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003207_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3208 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3209 (__v8sf)_mm256_mul_ps(__A, __B),
3210 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003211}
3212
3213static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00003214_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
3215 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3216 (__v4si)_mm_abs_epi32(__A),
3217 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003218}
3219
3220static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00003221_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
3222 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3223 (__v4si)_mm_abs_epi32(__A),
3224 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003225}
3226
3227static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00003228_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
3229 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
3230 (__v8si)_mm256_abs_epi32(__A),
3231 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003232}
3233
3234static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00003235_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
3236 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
3237 (__v8si)_mm256_abs_epi32(__A),
3238 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00003239}
3240
3241static __inline__ __m128i __DEFAULT_FN_ATTRS
3242_mm_abs_epi64 (__m128i __A) {
3243 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
3244 (__v2di)
3245 _mm_setzero_si128 (),
3246 (__mmask8) -1);
3247}
3248
3249static __inline__ __m128i __DEFAULT_FN_ATTRS
3250_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
3251 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
3252 (__v2di) __W,
3253 (__mmask8) __U);
3254}
3255
3256static __inline__ __m128i __DEFAULT_FN_ATTRS
3257_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
3258 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
3259 (__v2di)
3260 _mm_setzero_si128 (),
3261 (__mmask8) __U);
3262}
3263
3264static __inline__ __m256i __DEFAULT_FN_ATTRS
3265_mm256_abs_epi64 (__m256i __A) {
3266 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
3267 (__v4di)
3268 _mm256_setzero_si256 (),
3269 (__mmask8) -1);
3270}
3271
3272static __inline__ __m256i __DEFAULT_FN_ATTRS
3273_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
3274 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
3275 (__v4di) __W,
3276 (__mmask8) __U);
3277}
3278
3279static __inline__ __m256i __DEFAULT_FN_ATTRS
3280_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
3281 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
3282 (__v4di)
3283 _mm256_setzero_si256 (),
3284 (__mmask8) __U);
3285}
3286
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003287static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003288_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3289 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3290 (__v4si)_mm_max_epi32(__A, __B),
3291 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003292}
3293
3294static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003295_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3296 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3297 (__v4si)_mm_max_epi32(__A, __B),
3298 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003299}
3300
3301static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003302_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3303 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3304 (__v8si)_mm256_max_epi32(__A, __B),
3305 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003306}
3307
3308static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003309_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3310 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3311 (__v8si)_mm256_max_epi32(__A, __B),
3312 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003313}
3314
3315static __inline__ __m128i __DEFAULT_FN_ATTRS
3316_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
3317 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
3318 (__v2di) __B,
3319 (__v2di)
3320 _mm_setzero_si128 (),
3321 __M);
3322}
3323
3324static __inline__ __m128i __DEFAULT_FN_ATTRS
3325_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
3326 __m128i __B) {
3327 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
3328 (__v2di) __B,
3329 (__v2di) __W, __M);
3330}
3331
3332static __inline__ __m128i __DEFAULT_FN_ATTRS
3333_mm_max_epi64 (__m128i __A, __m128i __B) {
3334 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
3335 (__v2di) __B,
3336 (__v2di)
3337 _mm_setzero_si128 (),
3338 (__mmask8) -1);
3339}
3340
3341static __inline__ __m256i __DEFAULT_FN_ATTRS
3342_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3343 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
3344 (__v4di) __B,
3345 (__v4di)
3346 _mm256_setzero_si256 (),
3347 __M);
3348}
3349
3350static __inline__ __m256i __DEFAULT_FN_ATTRS
3351_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
3352 __m256i __B) {
3353 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
3354 (__v4di) __B,
3355 (__v4di) __W, __M);
3356}
3357
3358static __inline__ __m256i __DEFAULT_FN_ATTRS
3359_mm256_max_epi64 (__m256i __A, __m256i __B) {
3360 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
3361 (__v4di) __B,
3362 (__v4di)
3363 _mm256_setzero_si256 (),
3364 (__mmask8) -1);
3365}
3366
3367static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003368_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3369 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3370 (__v4si)_mm_max_epu32(__A, __B),
3371 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003372}
3373
3374static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003375_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3376 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3377 (__v4si)_mm_max_epu32(__A, __B),
3378 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003379}
3380
3381static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003382_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3383 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3384 (__v8si)_mm256_max_epu32(__A, __B),
3385 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003386}
3387
3388static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003389_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3390 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3391 (__v8si)_mm256_max_epu32(__A, __B),
3392 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003393}
3394
3395static __inline__ __m128i __DEFAULT_FN_ATTRS
3396_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3397 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3398 (__v2di) __B,
3399 (__v2di)
3400 _mm_setzero_si128 (),
3401 __M);
3402}
3403
3404static __inline__ __m128i __DEFAULT_FN_ATTRS
3405_mm_max_epu64 (__m128i __A, __m128i __B) {
3406 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3407 (__v2di) __B,
3408 (__v2di)
3409 _mm_setzero_si128 (),
3410 (__mmask8) -1);
3411}
3412
3413static __inline__ __m128i __DEFAULT_FN_ATTRS
3414_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3415 __m128i __B) {
3416 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3417 (__v2di) __B,
3418 (__v2di) __W, __M);
3419}
3420
3421static __inline__ __m256i __DEFAULT_FN_ATTRS
3422_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3423 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3424 (__v4di) __B,
3425 (__v4di)
3426 _mm256_setzero_si256 (),
3427 __M);
3428}
3429
3430static __inline__ __m256i __DEFAULT_FN_ATTRS
3431_mm256_max_epu64 (__m256i __A, __m256i __B) {
3432 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3433 (__v4di) __B,
3434 (__v4di)
3435 _mm256_setzero_si256 (),
3436 (__mmask8) -1);
3437}
3438
3439static __inline__ __m256i __DEFAULT_FN_ATTRS
3440_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3441 __m256i __B) {
3442 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3443 (__v4di) __B,
3444 (__v4di) __W, __M);
3445}
3446
3447static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003448_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3449 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3450 (__v4si)_mm_min_epi32(__A, __B),
3451 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003452}
3453
3454static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003455_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3456 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3457 (__v4si)_mm_min_epi32(__A, __B),
3458 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003459}
3460
3461static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003462_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3463 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3464 (__v8si)_mm256_min_epi32(__A, __B),
3465 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003466}
3467
3468static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003469_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3470 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3471 (__v8si)_mm256_min_epi32(__A, __B),
3472 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003473}
3474
3475static __inline__ __m128i __DEFAULT_FN_ATTRS
3476_mm_min_epi64 (__m128i __A, __m128i __B) {
3477 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3478 (__v2di) __B,
3479 (__v2di)
3480 _mm_setzero_si128 (),
3481 (__mmask8) -1);
3482}
3483
3484static __inline__ __m128i __DEFAULT_FN_ATTRS
3485_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
3486 __m128i __B) {
3487 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3488 (__v2di) __B,
3489 (__v2di) __W, __M);
3490}
3491
3492static __inline__ __m128i __DEFAULT_FN_ATTRS
3493_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
3494 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3495 (__v2di) __B,
3496 (__v2di)
3497 _mm_setzero_si128 (),
3498 __M);
3499}
3500
3501static __inline__ __m256i __DEFAULT_FN_ATTRS
3502_mm256_min_epi64 (__m256i __A, __m256i __B) {
3503 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3504 (__v4di) __B,
3505 (__v4di)
3506 _mm256_setzero_si256 (),
3507 (__mmask8) -1);
3508}
3509
3510static __inline__ __m256i __DEFAULT_FN_ATTRS
3511_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
3512 __m256i __B) {
3513 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3514 (__v4di) __B,
3515 (__v4di) __W, __M);
3516}
3517
3518static __inline__ __m256i __DEFAULT_FN_ATTRS
3519_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3520 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3521 (__v4di) __B,
3522 (__v4di)
3523 _mm256_setzero_si256 (),
3524 __M);
3525}
3526
3527static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003528_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3529 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3530 (__v4si)_mm_min_epu32(__A, __B),
3531 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003532}
3533
3534static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003535_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3536 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3537 (__v4si)_mm_min_epu32(__A, __B),
3538 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003539}
3540
3541static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003542_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3543 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3544 (__v8si)_mm256_min_epu32(__A, __B),
3545 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003546}
3547
3548static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003549_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3550 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3551 (__v8si)_mm256_min_epu32(__A, __B),
3552 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003553}
3554
3555static __inline__ __m128i __DEFAULT_FN_ATTRS
3556_mm_min_epu64 (__m128i __A, __m128i __B) {
3557 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3558 (__v2di) __B,
3559 (__v2di)
3560 _mm_setzero_si128 (),
3561 (__mmask8) -1);
3562}
3563
3564static __inline__ __m128i __DEFAULT_FN_ATTRS
3565_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3566 __m128i __B) {
3567 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3568 (__v2di) __B,
3569 (__v2di) __W, __M);
3570}
3571
3572static __inline__ __m128i __DEFAULT_FN_ATTRS
3573_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3574 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3575 (__v2di) __B,
3576 (__v2di)
3577 _mm_setzero_si128 (),
3578 __M);
3579}
3580
3581static __inline__ __m256i __DEFAULT_FN_ATTRS
3582_mm256_min_epu64 (__m256i __A, __m256i __B) {
3583 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3584 (__v4di) __B,
3585 (__v4di)
3586 _mm256_setzero_si256 (),
3587 (__mmask8) -1);
3588}
3589
3590static __inline__ __m256i __DEFAULT_FN_ATTRS
3591_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3592 __m256i __B) {
3593 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3594 (__v4di) __B,
3595 (__v4di) __W, __M);
3596}
3597
3598static __inline__ __m256i __DEFAULT_FN_ATTRS
3599_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3600 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3601 (__v4di) __B,
3602 (__v4di)
3603 _mm256_setzero_si256 (),
3604 __M);
3605}
3606
Craig Topperd2661882016-05-17 04:41:48 +00003607#define _mm_roundscale_pd(A, imm) __extension__ ({ \
3608 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3609 (int)(imm), \
3610 (__v2df)_mm_setzero_pd(), \
3611 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003612
3613
Craig Topperd2661882016-05-17 04:41:48 +00003614#define _mm_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3615 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3616 (int)(imm), \
3617 (__v2df)(__m128d)(W), \
3618 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003619
3620
Craig Topperd2661882016-05-17 04:41:48 +00003621#define _mm_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3622 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3623 (int)(imm), \
3624 (__v2df)_mm_setzero_pd(), \
3625 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003626
3627
Craig Topperd2661882016-05-17 04:41:48 +00003628#define _mm256_roundscale_pd(A, imm) __extension__ ({ \
3629 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3630 (int)(imm), \
3631 (__v4df)_mm256_setzero_pd(), \
3632 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003633
3634
Craig Topperd2661882016-05-17 04:41:48 +00003635#define _mm256_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3636 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3637 (int)(imm), \
3638 (__v4df)(__m256d)(W), \
3639 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003640
3641
Craig Topperd2661882016-05-17 04:41:48 +00003642#define _mm256_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3643 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3644 (int)(imm), \
3645 (__v4df)_mm256_setzero_pd(), \
3646 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003647
Craig Topperd2661882016-05-17 04:41:48 +00003648#define _mm_roundscale_ps(A, imm) __extension__ ({ \
3649 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3650 (__v4sf)_mm_setzero_ps(), \
3651 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003652
3653
Craig Topperd2661882016-05-17 04:41:48 +00003654#define _mm_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3655 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3656 (__v4sf)(__m128)(W), \
3657 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003658
3659
Craig Topperd2661882016-05-17 04:41:48 +00003660#define _mm_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3661 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3662 (__v4sf)_mm_setzero_ps(), \
3663 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003664
Craig Topperd2661882016-05-17 04:41:48 +00003665#define _mm256_roundscale_ps(A, imm) __extension__ ({ \
3666 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3667 (__v8sf)_mm256_setzero_ps(), \
3668 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003669
Craig Topperd2661882016-05-17 04:41:48 +00003670#define _mm256_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3671 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3672 (__v8sf)(__m256)(W), \
3673 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003674
3675
Craig Topperd2661882016-05-17 04:41:48 +00003676#define _mm256_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3677 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3678 (__v8sf)_mm256_setzero_ps(), \
3679 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003680
3681static __inline__ __m128d __DEFAULT_FN_ATTRS
3682_mm_scalef_pd (__m128d __A, __m128d __B) {
3683 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3684 (__v2df) __B,
3685 (__v2df)
3686 _mm_setzero_pd (),
3687 (__mmask8) -1);
3688}
3689
3690static __inline__ __m128d __DEFAULT_FN_ATTRS
3691_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3692 __m128d __B) {
3693 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3694 (__v2df) __B,
3695 (__v2df) __W,
3696 (__mmask8) __U);
3697}
3698
3699static __inline__ __m128d __DEFAULT_FN_ATTRS
3700_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3701 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3702 (__v2df) __B,
3703 (__v2df)
3704 _mm_setzero_pd (),
3705 (__mmask8) __U);
3706}
3707
3708static __inline__ __m256d __DEFAULT_FN_ATTRS
3709_mm256_scalef_pd (__m256d __A, __m256d __B) {
3710 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3711 (__v4df) __B,
3712 (__v4df)
3713 _mm256_setzero_pd (),
3714 (__mmask8) -1);
3715}
3716
3717static __inline__ __m256d __DEFAULT_FN_ATTRS
3718_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3719 __m256d __B) {
3720 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3721 (__v4df) __B,
3722 (__v4df) __W,
3723 (__mmask8) __U);
3724}
3725
3726static __inline__ __m256d __DEFAULT_FN_ATTRS
3727_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3728 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3729 (__v4df) __B,
3730 (__v4df)
3731 _mm256_setzero_pd (),
3732 (__mmask8) __U);
3733}
3734
3735static __inline__ __m128 __DEFAULT_FN_ATTRS
3736_mm_scalef_ps (__m128 __A, __m128 __B) {
3737 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3738 (__v4sf) __B,
3739 (__v4sf)
3740 _mm_setzero_ps (),
3741 (__mmask8) -1);
3742}
3743
3744static __inline__ __m128 __DEFAULT_FN_ATTRS
3745_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3746 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3747 (__v4sf) __B,
3748 (__v4sf) __W,
3749 (__mmask8) __U);
3750}
3751
3752static __inline__ __m128 __DEFAULT_FN_ATTRS
3753_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3754 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3755 (__v4sf) __B,
3756 (__v4sf)
3757 _mm_setzero_ps (),
3758 (__mmask8) __U);
3759}
3760
3761static __inline__ __m256 __DEFAULT_FN_ATTRS
3762_mm256_scalef_ps (__m256 __A, __m256 __B) {
3763 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3764 (__v8sf) __B,
3765 (__v8sf)
3766 _mm256_setzero_ps (),
3767 (__mmask8) -1);
3768}
3769
3770static __inline__ __m256 __DEFAULT_FN_ATTRS
3771_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3772 __m256 __B) {
3773 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3774 (__v8sf) __B,
3775 (__v8sf) __W,
3776 (__mmask8) __U);
3777}
3778
3779static __inline__ __m256 __DEFAULT_FN_ATTRS
3780_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3781 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3782 (__v8sf) __B,
3783 (__v8sf)
3784 _mm256_setzero_ps (),
3785 (__mmask8) __U);
3786}
3787
Craig Topperd2661882016-05-17 04:41:48 +00003788#define _mm_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3789 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3790 (__v2di)(__m128i)(index), \
3791 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003792
Craig Topperd2661882016-05-17 04:41:48 +00003793#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3794 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3795 (__v2di)(__m128i)(index), \
3796 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003797
Craig Topperd2661882016-05-17 04:41:48 +00003798#define _mm_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3799 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3800 (__v2di)(__m128i)(index), \
3801 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003802
Craig Topperd2661882016-05-17 04:41:48 +00003803#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3804 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3805 (__v2di)(__m128i)(index), \
3806 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003807
Craig Topperd2661882016-05-17 04:41:48 +00003808#define _mm256_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3809 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3810 (__v4di)(__m256i)(index), \
3811 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003812
Craig Topperd2661882016-05-17 04:41:48 +00003813#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3814 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3815 (__v4di)(__m256i)(index), \
3816 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003817
Craig Topperd2661882016-05-17 04:41:48 +00003818#define _mm256_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3819 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3820 (__v4di)(__m256i)(index), \
3821 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003822
Craig Topperd2661882016-05-17 04:41:48 +00003823#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3824 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3825 (__v4di)(__m256i)(index), \
3826 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003827
Craig Topperd2661882016-05-17 04:41:48 +00003828#define _mm_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3829 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3830 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3831 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003832
Craig Topperd2661882016-05-17 04:41:48 +00003833#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3834 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3835 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3836 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003837
Craig Topperd2661882016-05-17 04:41:48 +00003838#define _mm_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3839 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3840 (__v2di)(__m128i)(index), \
3841 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003842
Craig Topperd2661882016-05-17 04:41:48 +00003843#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3844 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3845 (__v2di)(__m128i)(index), \
3846 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003847
Craig Topperd2661882016-05-17 04:41:48 +00003848#define _mm256_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3849 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3850 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3851 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003852
Craig Topperd2661882016-05-17 04:41:48 +00003853#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3854 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3855 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3856 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003857
Craig Topperd2661882016-05-17 04:41:48 +00003858#define _mm256_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3859 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3860 (__v4di)(__m256i)(index), \
3861 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003862
Craig Topperd2661882016-05-17 04:41:48 +00003863#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3864 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3865 (__v4di)(__m256i)(index), \
3866 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003867
Craig Topperd2661882016-05-17 04:41:48 +00003868#define _mm_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3869 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3870 (__v4si)(__m128i)(index), \
3871 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003872
Craig Topperd2661882016-05-17 04:41:48 +00003873#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3874 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3875 (__v4si)(__m128i)(index), \
3876 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003877
Craig Topperd2661882016-05-17 04:41:48 +00003878#define _mm_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3879 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
3880 (__v4si)(__m128i)(index), \
3881 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003882
Craig Topperd2661882016-05-17 04:41:48 +00003883#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3884 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3885 (__v4si)(__m128i)(index), \
3886 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003887
Craig Topperd2661882016-05-17 04:41:48 +00003888#define _mm256_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3889 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
3890 (__v4si)(__m128i)(index), \
3891 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003892
Craig Topperd2661882016-05-17 04:41:48 +00003893#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3894 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3895 (__v4si)(__m128i)(index), \
3896 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003897
Craig Topperd2661882016-05-17 04:41:48 +00003898#define _mm256_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3899 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
3900 (__v4si)(__m128i)(index), \
3901 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003902
Craig Topperd2661882016-05-17 04:41:48 +00003903#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3904 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3905 (__v4si)(__m128i)(index), \
3906 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003907
Craig Topperd2661882016-05-17 04:41:48 +00003908#define _mm_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3909 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
3910 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3911 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003912
Craig Topperd2661882016-05-17 04:41:48 +00003913#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3914 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3915 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3916 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003917
Craig Topperd2661882016-05-17 04:41:48 +00003918#define _mm_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3919 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
3920 (__v4si)(__m128i)(index), \
3921 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003922
Craig Topperd2661882016-05-17 04:41:48 +00003923#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3924 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3925 (__v4si)(__m128i)(index), \
3926 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003927
Craig Topperd2661882016-05-17 04:41:48 +00003928#define _mm256_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3929 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
3930 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3931 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003932
Craig Topperd2661882016-05-17 04:41:48 +00003933#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3934 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3935 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3936 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003937
Craig Topperd2661882016-05-17 04:41:48 +00003938#define _mm256_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3939 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
3940 (__v8si)(__m256i)(index), \
3941 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003942
Craig Topperd2661882016-05-17 04:41:48 +00003943#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3944 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3945 (__v8si)(__m256i)(index), \
3946 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003947
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003948static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003949_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3950 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3951 (__v2df)_mm_sqrt_pd(__A),
3952 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003953}
3954
3955static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003956_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3957 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3958 (__v2df)_mm_sqrt_pd(__A),
3959 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003960}
3961
3962static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003963_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3964 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3965 (__v4df)_mm256_sqrt_pd(__A),
3966 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003967}
3968
3969static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003970_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3971 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3972 (__v4df)_mm256_sqrt_pd(__A),
3973 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003974}
3975
3976static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003977_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3978 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3979 (__v4sf)_mm_sqrt_ps(__A),
3980 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003981}
3982
3983static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003984_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3985 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3986 (__v4sf)_mm_sqrt_ps(__A),
3987 (__v4sf)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003988}
3989
3990static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003991_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3992 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3993 (__v8sf)_mm256_sqrt_ps(__A),
3994 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003995}
3996
3997static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003998_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3999 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
4000 (__v8sf)_mm256_sqrt_ps(__A),
4001 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004002}
4003
4004static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004005_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4006 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
4007 (__v2df)_mm_sub_pd(__A, __B),
4008 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004009}
4010
4011static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004012_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
4013 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
4014 (__v2df)_mm_sub_pd(__A, __B),
4015 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004016}
4017
4018static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004019_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
4020 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
4021 (__v4df)_mm256_sub_pd(__A, __B),
4022 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004023}
4024
4025static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004026_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
4027 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
4028 (__v4df)_mm256_sub_pd(__A, __B),
4029 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004030}
4031
4032static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004033_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
4034 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
4035 (__v4sf)_mm_sub_ps(__A, __B),
4036 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004037}
4038
4039static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004040_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
4041 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
4042 (__v4sf)_mm_sub_ps(__A, __B),
4043 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004044}
4045
4046static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004047_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
4048 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
4049 (__v8sf)_mm256_sub_ps(__A, __B),
4050 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004051}
4052
4053static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00004054_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
4055 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
4056 (__v8sf)_mm256_sub_ps(__A, __B),
4057 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00004058}
4059
4060static __inline__ __m128i __DEFAULT_FN_ATTRS
4061_mm_mask2_permutex2var_epi32 (__m128i __A, __m128i __I, __mmask8 __U,
4062 __m128i __B) {
4063 return (__m128i) __builtin_ia32_vpermi2vard128_mask ((__v4si) __A,
4064 (__v4si) __I
4065 /* idx */ ,
4066 (__v4si) __B,
4067 (__mmask8) __U);
4068}
4069
4070static __inline__ __m256i __DEFAULT_FN_ATTRS
4071_mm256_mask2_permutex2var_epi32 (__m256i __A, __m256i __I,
4072 __mmask8 __U, __m256i __B) {
4073 return (__m256i) __builtin_ia32_vpermi2vard256_mask ((__v8si) __A,
4074 (__v8si) __I
4075 /* idx */ ,
4076 (__v8si) __B,
4077 (__mmask8) __U);
4078}
4079
4080static __inline__ __m128d __DEFAULT_FN_ATTRS
4081_mm_mask2_permutex2var_pd (__m128d __A, __m128i __I, __mmask8 __U,
4082 __m128d __B) {
4083 return (__m128d) __builtin_ia32_vpermi2varpd128_mask ((__v2df) __A,
4084 (__v2di) __I
4085 /* idx */ ,
4086 (__v2df) __B,
4087 (__mmask8)
4088 __U);
4089}
4090
4091static __inline__ __m256d __DEFAULT_FN_ATTRS
4092_mm256_mask2_permutex2var_pd (__m256d __A, __m256i __I, __mmask8 __U,
4093 __m256d __B) {
4094 return (__m256d) __builtin_ia32_vpermi2varpd256_mask ((__v4df) __A,
4095 (__v4di) __I
4096 /* idx */ ,
4097 (__v4df) __B,
4098 (__mmask8)
4099 __U);
4100}
4101
4102static __inline__ __m128 __DEFAULT_FN_ATTRS
4103_mm_mask2_permutex2var_ps (__m128 __A, __m128i __I, __mmask8 __U,
4104 __m128 __B) {
4105 return (__m128) __builtin_ia32_vpermi2varps128_mask ((__v4sf) __A,
4106 (__v4si) __I
4107 /* idx */ ,
4108 (__v4sf) __B,
4109 (__mmask8) __U);
4110}
4111
4112static __inline__ __m256 __DEFAULT_FN_ATTRS
4113_mm256_mask2_permutex2var_ps (__m256 __A, __m256i __I, __mmask8 __U,
4114 __m256 __B) {
4115 return (__m256) __builtin_ia32_vpermi2varps256_mask ((__v8sf) __A,
4116 (__v8si) __I
4117 /* idx */ ,
4118 (__v8sf) __B,
4119 (__mmask8) __U);
4120}
4121
4122static __inline__ __m128i __DEFAULT_FN_ATTRS
4123_mm_mask2_permutex2var_epi64 (__m128i __A, __m128i __I, __mmask8 __U,
4124 __m128i __B) {
4125 return (__m128i) __builtin_ia32_vpermi2varq128_mask ((__v2di) __A,
4126 (__v2di) __I
4127 /* idx */ ,
4128 (__v2di) __B,
4129 (__mmask8) __U);
4130}
4131
4132static __inline__ __m256i __DEFAULT_FN_ATTRS
4133_mm256_mask2_permutex2var_epi64 (__m256i __A, __m256i __I,
4134 __mmask8 __U, __m256i __B) {
4135 return (__m256i) __builtin_ia32_vpermi2varq256_mask ((__v4di) __A,
4136 (__v4di) __I
4137 /* idx */ ,
4138 (__v4di) __B,
4139 (__mmask8) __U);
4140}
4141
4142static __inline__ __m128i __DEFAULT_FN_ATTRS
4143_mm_permutex2var_epi32 (__m128i __A, __m128i __I, __m128i __B) {
4144 return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
4145 /* idx */ ,
4146 (__v4si) __A,
4147 (__v4si) __B,
4148 (__mmask8) -1);
4149}
4150
4151static __inline__ __m128i __DEFAULT_FN_ATTRS
4152_mm_mask_permutex2var_epi32 (__m128i __A, __mmask8 __U, __m128i __I,
4153 __m128i __B) {
4154 return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
4155 /* idx */ ,
4156 (__v4si) __A,
4157 (__v4si) __B,
4158 (__mmask8) __U);
4159}
4160
4161static __inline__ __m128i __DEFAULT_FN_ATTRS
4162_mm_maskz_permutex2var_epi32 (__mmask8 __U, __m128i __A, __m128i __I,
4163 __m128i __B) {
4164 return (__m128i) __builtin_ia32_vpermt2vard128_maskz ((__v4si) __I
4165 /* idx */ ,
4166 (__v4si) __A,
4167 (__v4si) __B,
4168 (__mmask8)
4169 __U);
4170}
4171
4172static __inline__ __m256i __DEFAULT_FN_ATTRS
4173_mm256_permutex2var_epi32 (__m256i __A, __m256i __I, __m256i __B) {
4174 return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
4175 /* idx */ ,
4176 (__v8si) __A,
4177 (__v8si) __B,
4178 (__mmask8) -1);
4179}
4180
4181static __inline__ __m256i __DEFAULT_FN_ATTRS
4182_mm256_mask_permutex2var_epi32 (__m256i __A, __mmask8 __U, __m256i __I,
4183 __m256i __B) {
4184 return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
4185 /* idx */ ,
4186 (__v8si) __A,
4187 (__v8si) __B,
4188 (__mmask8) __U);
4189}
4190
4191static __inline__ __m256i __DEFAULT_FN_ATTRS
4192_mm256_maskz_permutex2var_epi32 (__mmask8 __U, __m256i __A,
4193 __m256i __I, __m256i __B) {
4194 return (__m256i) __builtin_ia32_vpermt2vard256_maskz ((__v8si) __I
4195 /* idx */ ,
4196 (__v8si) __A,
4197 (__v8si) __B,
4198 (__mmask8)
4199 __U);
4200}
4201
4202static __inline__ __m128d __DEFAULT_FN_ATTRS
4203_mm_permutex2var_pd (__m128d __A, __m128i __I, __m128d __B) {
4204 return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
4205 /* idx */ ,
4206 (__v2df) __A,
4207 (__v2df) __B,
4208 (__mmask8) -
4209 1);
4210}
4211
4212static __inline__ __m128d __DEFAULT_FN_ATTRS
4213_mm_mask_permutex2var_pd (__m128d __A, __mmask8 __U, __m128i __I,
4214 __m128d __B) {
4215 return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
4216 /* idx */ ,
4217 (__v2df) __A,
4218 (__v2df) __B,
4219 (__mmask8)
4220 __U);
4221}
4222
4223static __inline__ __m128d __DEFAULT_FN_ATTRS
4224_mm_maskz_permutex2var_pd (__mmask8 __U, __m128d __A, __m128i __I,
4225 __m128d __B) {
4226 return (__m128d) __builtin_ia32_vpermt2varpd128_maskz ((__v2di) __I
4227 /* idx */ ,
4228 (__v2df) __A,
4229 (__v2df) __B,
4230 (__mmask8)
4231 __U);
4232}
4233
4234static __inline__ __m256d __DEFAULT_FN_ATTRS
4235_mm256_permutex2var_pd (__m256d __A, __m256i __I, __m256d __B) {
4236 return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
4237 /* idx */ ,
4238 (__v4df) __A,
4239 (__v4df) __B,
4240 (__mmask8) -
4241 1);
4242}
4243
4244static __inline__ __m256d __DEFAULT_FN_ATTRS
4245_mm256_mask_permutex2var_pd (__m256d __A, __mmask8 __U, __m256i __I,
4246 __m256d __B) {
4247 return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
4248 /* idx */ ,
4249 (__v4df) __A,
4250 (__v4df) __B,
4251 (__mmask8)
4252 __U);
4253}
4254
4255static __inline__ __m256d __DEFAULT_FN_ATTRS
4256_mm256_maskz_permutex2var_pd (__mmask8 __U, __m256d __A, __m256i __I,
4257 __m256d __B) {
4258 return (__m256d) __builtin_ia32_vpermt2varpd256_maskz ((__v4di) __I
4259 /* idx */ ,
4260 (__v4df) __A,
4261 (__v4df) __B,
4262 (__mmask8)
4263 __U);
4264}
4265
4266static __inline__ __m128 __DEFAULT_FN_ATTRS
4267_mm_permutex2var_ps (__m128 __A, __m128i __I, __m128 __B) {
4268 return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
4269 /* idx */ ,
4270 (__v4sf) __A,
4271 (__v4sf) __B,
4272 (__mmask8) -1);
4273}
4274
4275static __inline__ __m128 __DEFAULT_FN_ATTRS
4276_mm_mask_permutex2var_ps (__m128 __A, __mmask8 __U, __m128i __I,
4277 __m128 __B) {
4278 return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
4279 /* idx */ ,
4280 (__v4sf) __A,
4281 (__v4sf) __B,
4282 (__mmask8) __U);
4283}
4284
4285static __inline__ __m128 __DEFAULT_FN_ATTRS
4286_mm_maskz_permutex2var_ps (__mmask8 __U, __m128 __A, __m128i __I,
4287 __m128 __B) {
4288 return (__m128) __builtin_ia32_vpermt2varps128_maskz ((__v4si) __I
4289 /* idx */ ,
4290 (__v4sf) __A,
4291 (__v4sf) __B,
4292 (__mmask8)
4293 __U);
4294}
4295
4296static __inline__ __m256 __DEFAULT_FN_ATTRS
4297_mm256_permutex2var_ps (__m256 __A, __m256i __I, __m256 __B) {
4298 return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
4299 /* idx */ ,
4300 (__v8sf) __A,
4301 (__v8sf) __B,
4302 (__mmask8) -1);
4303}
4304
4305static __inline__ __m256 __DEFAULT_FN_ATTRS
4306_mm256_mask_permutex2var_ps (__m256 __A, __mmask8 __U, __m256i __I,
4307 __m256 __B) {
4308 return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
4309 /* idx */ ,
4310 (__v8sf) __A,
4311 (__v8sf) __B,
4312 (__mmask8) __U);
4313}
4314
4315static __inline__ __m256 __DEFAULT_FN_ATTRS
4316_mm256_maskz_permutex2var_ps (__mmask8 __U, __m256 __A, __m256i __I,
4317 __m256 __B) {
4318 return (__m256) __builtin_ia32_vpermt2varps256_maskz ((__v8si) __I
4319 /* idx */ ,
4320 (__v8sf) __A,
4321 (__v8sf) __B,
4322 (__mmask8)
4323 __U);
4324}
4325
4326static __inline__ __m128i __DEFAULT_FN_ATTRS
4327_mm_permutex2var_epi64 (__m128i __A, __m128i __I, __m128i __B) {
4328 return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
4329 /* idx */ ,
4330 (__v2di) __A,
4331 (__v2di) __B,
4332 (__mmask8) -1);
4333}
4334
4335static __inline__ __m128i __DEFAULT_FN_ATTRS
4336_mm_mask_permutex2var_epi64 (__m128i __A, __mmask8 __U, __m128i __I,
4337 __m128i __B) {
4338 return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
4339 /* idx */ ,
4340 (__v2di) __A,
4341 (__v2di) __B,
4342 (__mmask8) __U);
4343}
4344
4345static __inline__ __m128i __DEFAULT_FN_ATTRS
4346_mm_maskz_permutex2var_epi64 (__mmask8 __U, __m128i __A, __m128i __I,
4347 __m128i __B) {
4348 return (__m128i) __builtin_ia32_vpermt2varq128_maskz ((__v2di) __I
4349 /* idx */ ,
4350 (__v2di) __A,
4351 (__v2di) __B,
4352 (__mmask8)
4353 __U);
4354}
4355
4356
4357static __inline__ __m256i __DEFAULT_FN_ATTRS
4358_mm256_permutex2var_epi64 (__m256i __A, __m256i __I, __m256i __B) {
4359 return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
4360 /* idx */ ,
4361 (__v4di) __A,
4362 (__v4di) __B,
4363 (__mmask8) -1);
4364}
4365
4366static __inline__ __m256i __DEFAULT_FN_ATTRS
4367_mm256_mask_permutex2var_epi64 (__m256i __A, __mmask8 __U, __m256i __I,
4368 __m256i __B) {
4369 return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
4370 /* idx */ ,
4371 (__v4di) __A,
4372 (__v4di) __B,
4373 (__mmask8) __U);
4374}
4375
4376static __inline__ __m256i __DEFAULT_FN_ATTRS
4377_mm256_maskz_permutex2var_epi64 (__mmask8 __U, __m256i __A,
4378 __m256i __I, __m256i __B) {
4379 return (__m256i) __builtin_ia32_vpermt2varq256_maskz ((__v4di) __I
4380 /* idx */ ,
4381 (__v4di) __A,
4382 (__v4di) __B,
4383 (__mmask8)
4384 __U);
4385}
4386
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004387static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004388_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004389{
Craig Topper11dda922016-10-22 21:24:48 +00004390 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4391 (__v4si)_mm_cvtepi8_epi32(__A),
4392 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004393}
4394
4395static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004396_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004397{
Craig Topper11dda922016-10-22 21:24:48 +00004398 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4399 (__v4si)_mm_cvtepi8_epi32(__A),
4400 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004401}
4402
4403static __inline__ __m256i __DEFAULT_FN_ATTRS
4404_mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4405{
Craig Topper11dda922016-10-22 21:24:48 +00004406 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4407 (__v8si)_mm256_cvtepi8_epi32(__A),
4408 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004409}
4410
4411static __inline__ __m256i __DEFAULT_FN_ATTRS
4412_mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
4413{
Craig Topper11dda922016-10-22 21:24:48 +00004414 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4415 (__v8si)_mm256_cvtepi8_epi32(__A),
4416 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004417}
4418
4419static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004420_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004421{
Craig Topper11dda922016-10-22 21:24:48 +00004422 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4423 (__v2di)_mm_cvtepi8_epi64(__A),
4424 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004425}
4426
4427static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004428_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004429{
Craig Topper11dda922016-10-22 21:24:48 +00004430 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4431 (__v2di)_mm_cvtepi8_epi64(__A),
4432 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004433}
4434
4435static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004436_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004437{
Craig Topper11dda922016-10-22 21:24:48 +00004438 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4439 (__v4di)_mm256_cvtepi8_epi64(__A),
4440 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004441}
4442
4443static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004444_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004445{
Craig Topper11dda922016-10-22 21:24:48 +00004446 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4447 (__v4di)_mm256_cvtepi8_epi64(__A),
4448 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004449}
4450
4451static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004452_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004453{
Craig Topper11dda922016-10-22 21:24:48 +00004454 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4455 (__v2di)_mm_cvtepi32_epi64(__X),
4456 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004457}
4458
4459static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004460_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004461{
Craig Topper11dda922016-10-22 21:24:48 +00004462 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4463 (__v2di)_mm_cvtepi32_epi64(__X),
4464 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004465}
4466
4467static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004468_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004469{
Craig Topper11dda922016-10-22 21:24:48 +00004470 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4471 (__v4di)_mm256_cvtepi32_epi64(__X),
4472 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004473}
4474
4475static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004476_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004477{
Craig Topper11dda922016-10-22 21:24:48 +00004478 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4479 (__v4di)_mm256_cvtepi32_epi64(__X),
4480 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004481}
4482
4483static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004484_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004485{
Craig Topper11dda922016-10-22 21:24:48 +00004486 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4487 (__v4si)_mm_cvtepi16_epi32(__A),
4488 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004489}
4490
4491static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004492_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004493{
Craig Topper11dda922016-10-22 21:24:48 +00004494 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4495 (__v4si)_mm_cvtepi16_epi32(__A),
4496 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004497}
4498
4499static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004500_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004501{
Craig Topper11dda922016-10-22 21:24:48 +00004502 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4503 (__v8si)_mm256_cvtepi16_epi32(__A),
4504 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004505}
4506
4507static __inline__ __m256i __DEFAULT_FN_ATTRS
4508_mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4509{
Craig Topper11dda922016-10-22 21:24:48 +00004510 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4511 (__v8si)_mm256_cvtepi16_epi32(__A),
4512 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004513}
4514
4515static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004516_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004517{
Craig Topper11dda922016-10-22 21:24:48 +00004518 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4519 (__v2di)_mm_cvtepi16_epi64(__A),
4520 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004521}
4522
4523static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004524_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004525{
Craig Topper11dda922016-10-22 21:24:48 +00004526 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4527 (__v2di)_mm_cvtepi16_epi64(__A),
4528 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004529}
4530
4531static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004532_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004533{
Craig Topper11dda922016-10-22 21:24:48 +00004534 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4535 (__v4di)_mm256_cvtepi16_epi64(__A),
4536 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004537}
4538
4539static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004540_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004541{
Craig Topper11dda922016-10-22 21:24:48 +00004542 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4543 (__v4di)_mm256_cvtepi16_epi64(__A),
4544 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004545}
4546
4547
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004548static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004549_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004550{
Craig Topper11dda922016-10-22 21:24:48 +00004551 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4552 (__v4si)_mm_cvtepu8_epi32(__A),
4553 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004554}
4555
4556static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004557_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004558{
Craig Topper11dda922016-10-22 21:24:48 +00004559 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4560 (__v4si)_mm_cvtepu8_epi32(__A),
4561 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004562}
4563
4564static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004565_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004566{
Craig Topper11dda922016-10-22 21:24:48 +00004567 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4568 (__v8si)_mm256_cvtepu8_epi32(__A),
4569 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004570}
4571
4572static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004573_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004574{
Craig Topper11dda922016-10-22 21:24:48 +00004575 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4576 (__v8si)_mm256_cvtepu8_epi32(__A),
4577 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004578}
4579
4580static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004581_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004582{
Craig Topper11dda922016-10-22 21:24:48 +00004583 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4584 (__v2di)_mm_cvtepu8_epi64(__A),
4585 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004586}
4587
4588static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004589_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004590{
Craig Topper11dda922016-10-22 21:24:48 +00004591 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4592 (__v2di)_mm_cvtepu8_epi64(__A),
4593 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004594}
4595
4596static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004597_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004598{
Craig Topper11dda922016-10-22 21:24:48 +00004599 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4600 (__v4di)_mm256_cvtepu8_epi64(__A),
4601 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004602}
4603
4604static __inline__ __m256i __DEFAULT_FN_ATTRS
4605_mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4606{
Craig Topper11dda922016-10-22 21:24:48 +00004607 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4608 (__v4di)_mm256_cvtepu8_epi64(__A),
4609 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004610}
4611
4612static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004613_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004614{
Craig Topper11dda922016-10-22 21:24:48 +00004615 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4616 (__v2di)_mm_cvtepu32_epi64(__X),
4617 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004618}
4619
4620static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004621_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004622{
Craig Topper11dda922016-10-22 21:24:48 +00004623 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4624 (__v2di)_mm_cvtepu32_epi64(__X),
4625 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004626}
4627
4628static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004629_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004630{
Craig Topper11dda922016-10-22 21:24:48 +00004631 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4632 (__v4di)_mm256_cvtepu32_epi64(__X),
4633 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004634}
4635
4636static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004637_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004638{
Craig Topper11dda922016-10-22 21:24:48 +00004639 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4640 (__v4di)_mm256_cvtepu32_epi64(__X),
4641 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004642}
4643
4644static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004645_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004646{
Craig Topper11dda922016-10-22 21:24:48 +00004647 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4648 (__v4si)_mm_cvtepu16_epi32(__A),
4649 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004650}
4651
4652static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004653_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004654{
Craig Topper11dda922016-10-22 21:24:48 +00004655 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4656 (__v4si)_mm_cvtepu16_epi32(__A),
4657 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004658}
4659
4660static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004661_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004662{
Craig Topper11dda922016-10-22 21:24:48 +00004663 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4664 (__v8si)_mm256_cvtepu16_epi32(__A),
4665 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004666}
4667
4668static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004669_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004670{
Craig Topper11dda922016-10-22 21:24:48 +00004671 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4672 (__v8si)_mm256_cvtepu16_epi32(__A),
4673 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004674}
4675
4676static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004677_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004678{
Craig Topper11dda922016-10-22 21:24:48 +00004679 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4680 (__v2di)_mm_cvtepu16_epi64(__A),
4681 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004682}
4683
4684static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004685_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004686{
Craig Topper11dda922016-10-22 21:24:48 +00004687 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4688 (__v2di)_mm_cvtepu16_epi64(__A),
4689 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004690}
4691
4692static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004693_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004694{
Craig Topper11dda922016-10-22 21:24:48 +00004695 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4696 (__v4di)_mm256_cvtepu16_epi64(__A),
4697 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004698}
4699
4700static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004701_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004702{
Craig Topper11dda922016-10-22 21:24:48 +00004703 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4704 (__v4di)_mm256_cvtepu16_epi64(__A),
4705 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004706}
4707
4708
Michael Zuckerman38a27272016-02-22 09:05:41 +00004709#define _mm_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004710 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4711 (__v4si)_mm_setzero_si128(), \
4712 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004713
4714#define _mm_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004715 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4716 (__v4si)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004717
4718#define _mm_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004719 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4720 (__v4si)_mm_setzero_si128(), \
4721 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004722
4723#define _mm256_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004724 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4725 (__v8si)_mm256_setzero_si256(), \
4726 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004727
4728#define _mm256_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004729 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4730 (__v8si)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004731
4732#define _mm256_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004733 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4734 (__v8si)_mm256_setzero_si256(), \
4735 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004736
Michael Zuckerman477e0a32016-02-22 09:42:57 +00004737#define _mm_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004738 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4739 (__v2di)_mm_setzero_di(), \
4740 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004741
4742#define _mm_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004743 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4744 (__v2di)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004745
4746#define _mm_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004747 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4748 (__v2di)_mm_setzero_di(), \
4749 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004750
4751#define _mm256_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004752 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4753 (__v4di)_mm256_setzero_si256(), \
4754 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004755
4756#define _mm256_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004757 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4758 (__v4di)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004759
4760#define _mm256_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004761 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4762 (__v4di)_mm256_setzero_si256(), \
4763 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004764
Michael Zuckerman0231f162016-02-23 13:41:13 +00004765static __inline__ __m128i __DEFAULT_FN_ATTRS
4766_mm_rolv_epi32 (__m128i __A, __m128i __B)
4767{
4768 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4769 (__v4si) __B,
4770 (__v4si)
4771 _mm_setzero_si128 (),
4772 (__mmask8) -1);
4773}
4774
4775static __inline__ __m128i __DEFAULT_FN_ATTRS
4776_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4777 __m128i __B)
4778{
4779 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4780 (__v4si) __B,
4781 (__v4si) __W,
4782 (__mmask8) __U);
4783}
4784
4785static __inline__ __m128i __DEFAULT_FN_ATTRS
4786_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4787{
4788 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4789 (__v4si) __B,
4790 (__v4si)
4791 _mm_setzero_si128 (),
4792 (__mmask8) __U);
4793}
4794
4795static __inline__ __m256i __DEFAULT_FN_ATTRS
4796_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4797{
4798 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4799 (__v8si) __B,
4800 (__v8si)
4801 _mm256_setzero_si256 (),
4802 (__mmask8) -1);
4803}
4804
4805static __inline__ __m256i __DEFAULT_FN_ATTRS
4806_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4807 __m256i __B)
4808{
4809 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4810 (__v8si) __B,
4811 (__v8si) __W,
4812 (__mmask8) __U);
4813}
4814
4815static __inline__ __m256i __DEFAULT_FN_ATTRS
4816_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4817{
4818 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4819 (__v8si) __B,
4820 (__v8si)
4821 _mm256_setzero_si256 (),
4822 (__mmask8) __U);
4823}
4824
4825static __inline__ __m128i __DEFAULT_FN_ATTRS
4826_mm_rolv_epi64 (__m128i __A, __m128i __B)
4827{
4828 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4829 (__v2di) __B,
4830 (__v2di)
4831 _mm_setzero_di (),
4832 (__mmask8) -1);
4833}
4834
4835static __inline__ __m128i __DEFAULT_FN_ATTRS
4836_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4837 __m128i __B)
4838{
4839 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4840 (__v2di) __B,
4841 (__v2di) __W,
4842 (__mmask8) __U);
4843}
4844
4845static __inline__ __m128i __DEFAULT_FN_ATTRS
4846_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4847{
4848 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4849 (__v2di) __B,
4850 (__v2di)
4851 _mm_setzero_di (),
4852 (__mmask8) __U);
4853}
4854
4855static __inline__ __m256i __DEFAULT_FN_ATTRS
4856_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4857{
4858 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4859 (__v4di) __B,
4860 (__v4di)
4861 _mm256_setzero_si256 (),
4862 (__mmask8) -1);
4863}
4864
4865static __inline__ __m256i __DEFAULT_FN_ATTRS
4866_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4867 __m256i __B)
4868{
4869 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4870 (__v4di) __B,
4871 (__v4di) __W,
4872 (__mmask8) __U);
4873}
4874
4875static __inline__ __m256i __DEFAULT_FN_ATTRS
4876_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4877{
4878 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4879 (__v4di) __B,
4880 (__v4di)
4881 _mm256_setzero_si256 (),
4882 (__mmask8) __U);
4883}
4884
Craig Topperd2661882016-05-17 04:41:48 +00004885#define _mm_ror_epi32(A, B) __extension__ ({ \
4886 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4887 (__v4si)_mm_setzero_si128(), \
4888 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004889
Craig Topperd2661882016-05-17 04:41:48 +00004890#define _mm_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4891 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4892 (__v4si)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004893
Craig Topperd2661882016-05-17 04:41:48 +00004894#define _mm_maskz_ror_epi32(U, A, B) __extension__ ({ \
4895 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4896 (__v4si)_mm_setzero_si128(), \
4897 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004898
Craig Topperd2661882016-05-17 04:41:48 +00004899#define _mm256_ror_epi32(A, B) __extension__ ({ \
4900 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4901 (__v8si)_mm256_setzero_si256(), \
4902 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004903
Craig Topperd2661882016-05-17 04:41:48 +00004904#define _mm256_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4905 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4906 (__v8si)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004907
Craig Topperd2661882016-05-17 04:41:48 +00004908#define _mm256_maskz_ror_epi32(U, A, B) __extension__ ({ \
4909 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4910 (__v8si)_mm256_setzero_si256(), \
4911 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004912
Craig Topperd2661882016-05-17 04:41:48 +00004913#define _mm_ror_epi64(A, B) __extension__ ({ \
4914 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4915 (__v2di)_mm_setzero_di(), \
4916 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004917
Craig Topperd2661882016-05-17 04:41:48 +00004918#define _mm_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4919 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4920 (__v2di)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004921
Craig Topperd2661882016-05-17 04:41:48 +00004922#define _mm_maskz_ror_epi64(U, A, B) __extension__ ({ \
4923 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4924 (__v2di)_mm_setzero_di(), \
4925 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004926
Craig Topperd2661882016-05-17 04:41:48 +00004927#define _mm256_ror_epi64(A, B) __extension__ ({ \
4928 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4929 (__v4di)_mm256_setzero_si256(), \
4930 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004931
Craig Topperd2661882016-05-17 04:41:48 +00004932#define _mm256_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4933 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4934 (__v4di)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004935
Craig Topperd2661882016-05-17 04:41:48 +00004936#define _mm256_maskz_ror_epi64(U, A, B) __extension__ ({ \
4937 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4938 (__v4di)_mm256_setzero_si256(), \
4939 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004940
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004941static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004942_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004943{
Craig Topper66b2fd12016-10-31 04:30:51 +00004944 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4945 (__v4si)_mm_sll_epi32(__A, __B),
4946 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004947}
4948
4949static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004950_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004951{
Craig Topper66b2fd12016-10-31 04:30:51 +00004952 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4953 (__v4si)_mm_sll_epi32(__A, __B),
4954 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004955}
4956
4957static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004958_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004959{
Craig Topper66b2fd12016-10-31 04:30:51 +00004960 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4961 (__v8si)_mm256_sll_epi32(__A, __B),
4962 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004963}
4964
4965static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004966_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004967{
Craig Topper66b2fd12016-10-31 04:30:51 +00004968 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4969 (__v8si)_mm256_sll_epi32(__A, __B),
4970 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004971}
4972
4973static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004974_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004975{
Craig Topper66b2fd12016-10-31 04:30:51 +00004976 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4977 (__v4si)_mm_slli_epi32(__A, __B),
4978 (__v4si)__W);
4979}
4980
4981static __inline__ __m128i __DEFAULT_FN_ATTRS
4982_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4983{
4984 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4985 (__v4si)_mm_slli_epi32(__A, __B),
4986 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004987}
4988
4989static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004990_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004991{
Craig Topper66b2fd12016-10-31 04:30:51 +00004992 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4993 (__v8si)_mm256_slli_epi32(__A, __B),
4994 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004995}
4996
4997static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004998_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004999{
Craig Topper66b2fd12016-10-31 04:30:51 +00005000 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5001 (__v8si)_mm256_slli_epi32(__A, __B),
5002 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005003}
5004
Craig Topper66b2fd12016-10-31 04:30:51 +00005005static __inline__ __m128i __DEFAULT_FN_ATTRS
5006_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
5007{
5008 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5009 (__v2di)_mm_sll_epi64(__A, __B),
5010 (__v2di)__W);
5011}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005012
Craig Topper66b2fd12016-10-31 04:30:51 +00005013static __inline__ __m128i __DEFAULT_FN_ATTRS
5014_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
5015{
5016 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5017 (__v2di)_mm_sll_epi64(__A, __B),
5018 (__v2di)_mm_setzero_di());
5019}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005020
Craig Topper66b2fd12016-10-31 04:30:51 +00005021static __inline__ __m256i __DEFAULT_FN_ATTRS
5022_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
5023{
5024 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5025 (__v4di)_mm256_sll_epi64(__A, __B),
5026 (__v4di)__W);
5027}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005028
Craig Topper66b2fd12016-10-31 04:30:51 +00005029static __inline__ __m256i __DEFAULT_FN_ATTRS
5030_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
5031{
5032 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5033 (__v4di)_mm256_sll_epi64(__A, __B),
5034 (__v4di)_mm256_setzero_si256());
5035}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00005036
Craig Topper66b2fd12016-10-31 04:30:51 +00005037static __inline__ __m128i __DEFAULT_FN_ATTRS
5038_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
5039{
5040 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5041 (__v2di)_mm_slli_epi64(__A, __B),
5042 (__v2di)__W);
5043}
5044
5045static __inline__ __m128i __DEFAULT_FN_ATTRS
5046_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
5047{
5048 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5049 (__v2di)_mm_slli_epi64(__A, __B),
5050 (__v2di)_mm_setzero_di());
5051}
5052
5053static __inline__ __m256i __DEFAULT_FN_ATTRS
5054_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
5055{
5056 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5057 (__v4di)_mm256_slli_epi64(__A, __B),
5058 (__v4di)__W);
5059}
5060
5061static __inline__ __m256i __DEFAULT_FN_ATTRS
5062_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
5063{
5064 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5065 (__v4di)_mm256_slli_epi64(__A, __B),
5066 (__v4di)_mm256_setzero_si256());
5067}
Michael Zuckerman0231f162016-02-23 13:41:13 +00005068
Michael Zuckermane98cc742016-02-23 15:59:47 +00005069static __inline__ __m128i __DEFAULT_FN_ATTRS
5070_mm_rorv_epi32 (__m128i __A, __m128i __B)
5071{
5072 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
5073 (__v4si) __B,
5074 (__v4si)
5075 _mm_setzero_si128 (),
5076 (__mmask8) -1);
5077}
5078
5079static __inline__ __m128i __DEFAULT_FN_ATTRS
5080_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
5081 __m128i __B)
5082{
5083 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
5084 (__v4si) __B,
5085 (__v4si) __W,
5086 (__mmask8) __U);
5087}
5088
5089static __inline__ __m128i __DEFAULT_FN_ATTRS
5090_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
5091{
5092 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
5093 (__v4si) __B,
5094 (__v4si)
5095 _mm_setzero_si128 (),
5096 (__mmask8) __U);
5097}
5098
5099static __inline__ __m256i __DEFAULT_FN_ATTRS
5100_mm256_rorv_epi32 (__m256i __A, __m256i __B)
5101{
5102 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
5103 (__v8si) __B,
5104 (__v8si)
5105 _mm256_setzero_si256 (),
5106 (__mmask8) -1);
5107}
5108
5109static __inline__ __m256i __DEFAULT_FN_ATTRS
5110_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
5111 __m256i __B)
5112{
5113 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
5114 (__v8si) __B,
5115 (__v8si) __W,
5116 (__mmask8) __U);
5117}
5118
5119static __inline__ __m256i __DEFAULT_FN_ATTRS
5120_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
5121{
5122 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
5123 (__v8si) __B,
5124 (__v8si)
5125 _mm256_setzero_si256 (),
5126 (__mmask8) __U);
5127}
5128
5129static __inline__ __m128i __DEFAULT_FN_ATTRS
5130_mm_rorv_epi64 (__m128i __A, __m128i __B)
5131{
5132 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
5133 (__v2di) __B,
5134 (__v2di)
5135 _mm_setzero_di (),
5136 (__mmask8) -1);
5137}
5138
5139static __inline__ __m128i __DEFAULT_FN_ATTRS
5140_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
5141 __m128i __B)
5142{
5143 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
5144 (__v2di) __B,
5145 (__v2di) __W,
5146 (__mmask8) __U);
5147}
5148
5149static __inline__ __m128i __DEFAULT_FN_ATTRS
5150_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
5151{
5152 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
5153 (__v2di) __B,
5154 (__v2di)
5155 _mm_setzero_di (),
5156 (__mmask8) __U);
5157}
5158
5159static __inline__ __m256i __DEFAULT_FN_ATTRS
5160_mm256_rorv_epi64 (__m256i __A, __m256i __B)
5161{
5162 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
5163 (__v4di) __B,
5164 (__v4di)
5165 _mm256_setzero_si256 (),
5166 (__mmask8) -1);
5167}
5168
5169static __inline__ __m256i __DEFAULT_FN_ATTRS
5170_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
5171 __m256i __B)
5172{
5173 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
5174 (__v4di) __B,
5175 (__v4di) __W,
5176 (__mmask8) __U);
5177}
5178
5179static __inline__ __m256i __DEFAULT_FN_ATTRS
5180_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
5181{
5182 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
5183 (__v4di) __B,
5184 (__v4di)
5185 _mm256_setzero_si256 (),
5186 (__mmask8) __U);
5187}
5188
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005189static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005190_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005191{
Craig Topper66b2fd12016-10-31 04:30:51 +00005192 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5193 (__v2di)_mm_sllv_epi64(__X, __Y),
5194 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005195}
5196
5197static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005198_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005199{
Craig Topper66b2fd12016-10-31 04:30:51 +00005200 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5201 (__v2di)_mm_sllv_epi64(__X, __Y),
5202 (__v2di)_mm_setzero_di());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005203}
5204
5205static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005206_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005207{
Craig Topper66b2fd12016-10-31 04:30:51 +00005208 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5209 (__v4di)_mm256_sllv_epi64(__X, __Y),
5210 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005211}
5212
5213static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005214_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005215{
Craig Topper66b2fd12016-10-31 04:30:51 +00005216 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5217 (__v4di)_mm256_sllv_epi64(__X, __Y),
5218 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005219}
5220
5221static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005222_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005223{
Craig Topper66b2fd12016-10-31 04:30:51 +00005224 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5225 (__v4si)_mm_sllv_epi32(__X, __Y),
5226 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005227}
5228
5229static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005230_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005231{
Craig Topper66b2fd12016-10-31 04:30:51 +00005232 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5233 (__v4si)_mm_sllv_epi32(__X, __Y),
5234 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005235}
5236
5237static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005238_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005239{
Craig Topper66b2fd12016-10-31 04:30:51 +00005240 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5241 (__v8si)_mm256_sllv_epi32(__X, __Y),
5242 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005243}
5244
5245static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005246_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00005247{
Craig Topper66b2fd12016-10-31 04:30:51 +00005248 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5249 (__v8si)_mm256_sllv_epi32(__X, __Y),
5250 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00005251}
5252
5253static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005254_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00005255{
Craig Topper66b2fd12016-10-31 04:30:51 +00005256 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5257 (__v2di)_mm_srlv_epi64(__X, __Y),
5258 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00005259}
5260
5261static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005262_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00005263{
Craig Topper66b2fd12016-10-31 04:30:51 +00005264 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5265 (__v2di)_mm_srlv_epi64(__X, __Y),
5266 (__v2di)_mm_setzero_di());
5267}
5268
5269static __inline__ __m256i __DEFAULT_FN_ATTRS
5270_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
5271{
5272 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5273 (__v4di)_mm256_srlv_epi64(__X, __Y),
5274 (__v4di)__W);
5275}
5276
5277static __inline__ __m256i __DEFAULT_FN_ATTRS
5278_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
5279{
5280 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5281 (__v4di)_mm256_srlv_epi64(__X, __Y),
5282 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00005283}
5284
5285static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005286_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00005287{
Craig Topper66b2fd12016-10-31 04:30:51 +00005288 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5289 (__v4si)_mm_srlv_epi32(__X, __Y),
5290 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00005291}
5292
5293static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005294_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00005295{
Craig Topper66b2fd12016-10-31 04:30:51 +00005296 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5297 (__v4si)_mm_srlv_epi32(__X, __Y),
5298 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00005299}
5300
5301static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005302_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00005303{
Craig Topper66b2fd12016-10-31 04:30:51 +00005304 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5305 (__v8si)_mm256_srlv_epi32(__X, __Y),
5306 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00005307}
5308
5309static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005310_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00005311{
Craig Topper66b2fd12016-10-31 04:30:51 +00005312 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5313 (__v8si)_mm256_srlv_epi32(__X, __Y),
5314 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00005315}
5316
5317static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005318_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00005319{
Craig Topper66b2fd12016-10-31 04:30:51 +00005320 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5321 (__v4si)_mm_srl_epi32(__A, __B),
5322 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005323}
5324
5325static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005326_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005327{
Craig Topper66b2fd12016-10-31 04:30:51 +00005328 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5329 (__v4si)_mm_srl_epi32(__A, __B),
5330 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005331}
5332
5333static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005334_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005335{
Craig Topper66b2fd12016-10-31 04:30:51 +00005336 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5337 (__v8si)_mm256_srl_epi32(__A, __B),
5338 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005339}
5340
5341static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00005342_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005343{
Craig Topper66b2fd12016-10-31 04:30:51 +00005344 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5345 (__v8si)_mm256_srl_epi32(__A, __B),
5346 (__v8si)_mm256_setzero_si256());
5347}
5348
5349static __inline__ __m128i __DEFAULT_FN_ATTRS
5350_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
5351{
5352 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5353 (__v4si)_mm_srli_epi32(__A, __B),
5354 (__v4si)__W);
5355}
5356
5357static __inline__ __m128i __DEFAULT_FN_ATTRS
5358_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
5359{
5360 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5361 (__v4si)_mm_srli_epi32(__A, __B),
5362 (__v4si)_mm_setzero_si128());
5363}
5364
5365static __inline__ __m256i __DEFAULT_FN_ATTRS
5366_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
5367{
5368 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5369 (__v8si)_mm256_srli_epi32(__A, __B),
5370 (__v8si)__W);
5371}
5372
5373static __inline__ __m256i __DEFAULT_FN_ATTRS
5374_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
5375{
5376 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5377 (__v8si)_mm256_srli_epi32(__A, __B),
5378 (__v8si)_mm256_setzero_si256());
5379}
5380
5381static __inline__ __m128i __DEFAULT_FN_ATTRS
5382_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
5383{
5384 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5385 (__v2di)_mm_srl_epi64(__A, __B),
5386 (__v2di)__W);
5387}
5388
5389static __inline__ __m128i __DEFAULT_FN_ATTRS
5390_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
5391{
5392 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5393 (__v2di)_mm_srl_epi64(__A, __B),
5394 (__v2di)_mm_setzero_di());
5395}
5396
5397static __inline__ __m256i __DEFAULT_FN_ATTRS
5398_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
5399{
5400 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5401 (__v4di)_mm256_srl_epi64(__A, __B),
5402 (__v4di)__W);
5403}
5404
5405static __inline__ __m256i __DEFAULT_FN_ATTRS
5406_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
5407{
5408 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5409 (__v4di)_mm256_srl_epi64(__A, __B),
5410 (__v4di)_mm256_setzero_si256());
5411}
5412
5413static __inline__ __m128i __DEFAULT_FN_ATTRS
5414_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
5415{
5416 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5417 (__v2di)_mm_srli_epi64(__A, __B),
5418 (__v2di)__W);
5419}
5420
5421static __inline__ __m128i __DEFAULT_FN_ATTRS
5422_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
5423{
5424 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5425 (__v2di)_mm_srli_epi64(__A, __B),
5426 (__v2di)_mm_setzero_di());
5427}
5428
5429static __inline__ __m256i __DEFAULT_FN_ATTRS
5430_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
5431{
5432 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5433 (__v4di)_mm256_srli_epi64(__A, __B),
5434 (__v4di)__W);
5435}
5436
5437static __inline__ __m256i __DEFAULT_FN_ATTRS
5438_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
5439{
5440 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5441 (__v4di)_mm256_srli_epi64(__A, __B),
5442 (__v4di)_mm256_setzero_si256());
5443}
5444
5445static __inline__ __m128i __DEFAULT_FN_ATTRS
5446_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
5447{
5448 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5449 (__v4si)_mm_srav_epi32(__X, __Y),
5450 (__v4si)__W);
5451}
5452
5453static __inline__ __m128i __DEFAULT_FN_ATTRS
5454_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
5455{
5456 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5457 (__v4si)_mm_srav_epi32(__X, __Y),
5458 (__v4si)_mm_setzero_si128());
5459}
5460
5461static __inline__ __m256i __DEFAULT_FN_ATTRS
5462_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
5463{
5464 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5465 (__v8si)_mm256_srav_epi32(__X, __Y),
5466 (__v8si)__W);
5467}
5468
5469static __inline__ __m256i __DEFAULT_FN_ATTRS
5470_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
5471{
5472 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5473 (__v8si)_mm256_srav_epi32(__X, __Y),
5474 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005475}
5476
5477static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005478_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005479{
Craig Topper5e0709d2016-11-13 07:26:34 +00005480 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005481}
5482
5483static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005484_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005485{
Craig Topper5e0709d2016-11-13 07:26:34 +00005486 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5487 (__v2di)_mm_srav_epi64(__X, __Y),
5488 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005489}
5490
5491static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005492_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005493{
Craig Topper5e0709d2016-11-13 07:26:34 +00005494 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5495 (__v2di)_mm_srav_epi64(__X, __Y),
5496 (__v2di)_mm_setzero_di());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005497}
5498
5499static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005500_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005501{
Craig Topper5e0709d2016-11-13 07:26:34 +00005502 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005503}
5504
5505static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005506_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005507{
Craig Topper5e0709d2016-11-13 07:26:34 +00005508 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5509 (__v4di)_mm256_srav_epi64(__X, __Y),
5510 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005511}
5512
5513static __inline__ __m256i __DEFAULT_FN_ATTRS
5514_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5515{
Craig Topper5e0709d2016-11-13 07:26:34 +00005516 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5517 (__v4di)_mm256_srav_epi64(__X, __Y),
5518 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005519}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005520
Michael Zuckermane6542002016-05-23 08:01:48 +00005521static __inline__ __m128i __DEFAULT_FN_ATTRS
5522_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
5523{
Igor Bregeraadb8762016-06-08 13:59:20 +00005524 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5525 (__v4si) __A,
5526 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005527}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005528
Michael Zuckermane6542002016-05-23 08:01:48 +00005529static __inline__ __m128i __DEFAULT_FN_ATTRS
5530_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
5531{
Igor Bregeraadb8762016-06-08 13:59:20 +00005532 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5533 (__v4si) __A,
5534 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005535}
5536
5537
5538static __inline__ __m256i __DEFAULT_FN_ATTRS
5539_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
5540{
Igor Bregeraadb8762016-06-08 13:59:20 +00005541 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5542 (__v8si) __A,
5543 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005544}
5545
5546static __inline__ __m256i __DEFAULT_FN_ATTRS
5547_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
5548{
Igor Bregeraadb8762016-06-08 13:59:20 +00005549 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5550 (__v8si) __A,
5551 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005552}
5553
5554static __inline__ __m128i __DEFAULT_FN_ATTRS
5555_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5556{
5557 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5558 (__v4si) __W,
5559 (__mmask8)
5560 __U);
5561}
5562
5563static __inline__ __m128i __DEFAULT_FN_ATTRS
5564_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5565{
5566 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5567 (__v4si)
5568 _mm_setzero_si128 (),
5569 (__mmask8)
5570 __U);
5571}
5572
5573static __inline__ __m256i __DEFAULT_FN_ATTRS
5574_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5575{
5576 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5577 (__v8si) __W,
5578 (__mmask8)
5579 __U);
5580}
5581
5582static __inline__ __m256i __DEFAULT_FN_ATTRS
5583_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5584{
5585 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5586 (__v8si)
5587 _mm256_setzero_si256 (),
5588 (__mmask8)
5589 __U);
5590}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005591
5592static __inline__ void __DEFAULT_FN_ATTRS
5593_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5594{
5595 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5596 (__v4si) __A,
5597 (__mmask8) __U);
5598}
5599
5600static __inline__ void __DEFAULT_FN_ATTRS
5601_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5602{
5603 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5604 (__v8si) __A,
5605 (__mmask8) __U);
5606}
5607
5608static __inline__ __m128i __DEFAULT_FN_ATTRS
5609_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5610{
Igor Bregeraadb8762016-06-08 13:59:20 +00005611 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5612 (__v2di) __A,
5613 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005614}
5615
5616static __inline__ __m128i __DEFAULT_FN_ATTRS
5617_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5618{
Igor Bregeraadb8762016-06-08 13:59:20 +00005619 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5620 (__v2di) __A,
5621 (__v2di) _mm_setzero_di ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005622}
5623
5624static __inline__ __m256i __DEFAULT_FN_ATTRS
5625_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5626{
Igor Bregeraadb8762016-06-08 13:59:20 +00005627 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5628 (__v4di) __A,
5629 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005630}
5631
5632static __inline__ __m256i __DEFAULT_FN_ATTRS
5633_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5634{
Igor Bregeraadb8762016-06-08 13:59:20 +00005635 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5636 (__v4di) __A,
5637 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005638}
5639
5640static __inline__ __m128i __DEFAULT_FN_ATTRS
5641_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5642{
5643 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5644 (__v2di) __W,
5645 (__mmask8)
5646 __U);
5647}
5648
5649static __inline__ __m128i __DEFAULT_FN_ATTRS
5650_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5651{
5652 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5653 (__v2di)
5654 _mm_setzero_di (),
5655 (__mmask8)
5656 __U);
5657}
5658
5659static __inline__ __m256i __DEFAULT_FN_ATTRS
5660_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5661{
5662 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5663 (__v4di) __W,
5664 (__mmask8)
5665 __U);
5666}
5667
5668static __inline__ __m256i __DEFAULT_FN_ATTRS
5669_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5670{
5671 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5672 (__v4di)
5673 _mm256_setzero_si256 (),
5674 (__mmask8)
5675 __U);
5676}
5677
5678static __inline__ void __DEFAULT_FN_ATTRS
5679_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5680{
5681 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5682 (__v2di) __A,
5683 (__mmask8) __U);
5684}
5685
5686static __inline__ void __DEFAULT_FN_ATTRS
5687_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5688{
5689 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5690 (__v4di) __A,
5691 (__mmask8) __U);
5692}
5693
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005694static __inline__ __m128d __DEFAULT_FN_ATTRS
5695_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5696{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005697 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5698 (__v2df)_mm_movedup_pd(__A),
5699 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005700}
5701
5702static __inline__ __m128d __DEFAULT_FN_ATTRS
5703_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5704{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005705 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5706 (__v2df)_mm_movedup_pd(__A),
5707 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005708}
5709
5710static __inline__ __m256d __DEFAULT_FN_ATTRS
5711_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5712{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005713 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5714 (__v4df)_mm256_movedup_pd(__A),
5715 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005716}
5717
5718static __inline__ __m256d __DEFAULT_FN_ATTRS
5719_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5720{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005721 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5722 (__v4df)_mm256_movedup_pd(__A),
5723 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005724}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005725
Jina Nahias3ad702a2017-09-19 11:00:27 +00005726static __inline__ __m128i __DEFAULT_FN_ATTRS
5727_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5728{
5729 return (__m128i)__builtin_ia32_selectd_128(__M,
5730 (__v4si) _mm_set1_epi32(__A),
5731 (__v4si)__O);
5732}
Michael Zuckerman912be162016-03-07 08:29:10 +00005733
Jina Nahias3ad702a2017-09-19 11:00:27 +00005734static __inline__ __m128i __DEFAULT_FN_ATTRS
5735_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5736{
5737 return (__m128i)__builtin_ia32_selectd_128(__M,
5738 (__v4si) _mm_set1_epi32(__A),
5739 (__v4si)_mm_setzero_si128());
5740}
Michael Zuckerman912be162016-03-07 08:29:10 +00005741
Jina Nahias3ad702a2017-09-19 11:00:27 +00005742static __inline__ __m256i __DEFAULT_FN_ATTRS
5743_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5744{
5745 return (__m256i)__builtin_ia32_selectd_256(__M,
5746 (__v8si) _mm256_set1_epi32(__A),
5747 (__v8si)__O);
5748}
Michael Zuckerman912be162016-03-07 08:29:10 +00005749
Jina Nahias3ad702a2017-09-19 11:00:27 +00005750static __inline__ __m256i __DEFAULT_FN_ATTRS
5751_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5752{
5753 return (__m256i)__builtin_ia32_selectd_256(__M,
5754 (__v8si) _mm256_set1_epi32(__A),
5755 (__v8si)_mm256_setzero_si256());
5756}
Michael Zuckerman912be162016-03-07 08:29:10 +00005757
Michael Zuckerman912be162016-03-07 08:29:10 +00005758
Craig Topper45db56c2016-07-21 07:38:39 +00005759#ifdef __x86_64__
Michael Zuckerman912be162016-03-07 08:29:10 +00005760static __inline__ __m128i __DEFAULT_FN_ATTRS
5761_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5762{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005763 return (__m128i) __builtin_ia32_selectq_128(__M,
5764 (__v2di) _mm_set1_epi8(__A),
5765 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005766}
5767
5768static __inline__ __m128i __DEFAULT_FN_ATTRS
5769_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5770{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005771 return (__m128i) __builtin_ia32_selectq_128(__M,
5772 (__v2di) _mm_set1_epi8(__A),
5773 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005774}
5775
5776static __inline__ __m256i __DEFAULT_FN_ATTRS
5777_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5778{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005779 return (__m256i) __builtin_ia32_selectq_256(__M,
5780 (__v4di) _mm256_set1_epi64x(__A),
5781 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005782}
5783
5784static __inline__ __m256i __DEFAULT_FN_ATTRS
5785_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5786{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005787 return (__m256i) __builtin_ia32_selectq_256(__M,
5788 (__v4di) _mm256_set1_epi64x(__A),
5789 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005790}
Jina Nahias3ad702a2017-09-19 11:00:27 +00005791
Craig Topper45db56c2016-07-21 07:38:39 +00005792#endif
Michael Zuckermandef78752016-03-28 12:23:09 +00005793
Craig Topperd2661882016-05-17 04:41:48 +00005794#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5795 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5796 (__v2df)(__m128d)(B), \
5797 (__v2di)(__m128i)(C), (int)(imm), \
5798 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005799
Craig Topperd2661882016-05-17 04:41:48 +00005800#define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5801 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5802 (__v2df)(__m128d)(B), \
5803 (__v2di)(__m128i)(C), (int)(imm), \
5804 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005805
Craig Topperd2661882016-05-17 04:41:48 +00005806#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5807 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5808 (__v2df)(__m128d)(B), \
5809 (__v2di)(__m128i)(C), \
5810 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005811
Craig Topperd2661882016-05-17 04:41:48 +00005812#define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5813 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5814 (__v4df)(__m256d)(B), \
5815 (__v4di)(__m256i)(C), (int)(imm), \
5816 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005817
Craig Topperd2661882016-05-17 04:41:48 +00005818#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5819 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5820 (__v4df)(__m256d)(B), \
5821 (__v4di)(__m256i)(C), (int)(imm), \
5822 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005823
Craig Topperd2661882016-05-17 04:41:48 +00005824#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5825 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5826 (__v4df)(__m256d)(B), \
5827 (__v4di)(__m256i)(C), \
5828 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005829
Craig Topperd2661882016-05-17 04:41:48 +00005830#define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5831 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5832 (__v4sf)(__m128)(B), \
5833 (__v4si)(__m128i)(C), (int)(imm), \
5834 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005835
Craig Topperd2661882016-05-17 04:41:48 +00005836#define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5837 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5838 (__v4sf)(__m128)(B), \
5839 (__v4si)(__m128i)(C), (int)(imm), \
5840 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005841
Craig Topperd2661882016-05-17 04:41:48 +00005842#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5843 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5844 (__v4sf)(__m128)(B), \
5845 (__v4si)(__m128i)(C), (int)(imm), \
5846 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005847
Craig Topperd2661882016-05-17 04:41:48 +00005848#define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5849 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5850 (__v8sf)(__m256)(B), \
5851 (__v8si)(__m256i)(C), (int)(imm), \
5852 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005853
Craig Topperd2661882016-05-17 04:41:48 +00005854#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5855 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5856 (__v8sf)(__m256)(B), \
5857 (__v8si)(__m256i)(C), (int)(imm), \
5858 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005859
Craig Topperd2661882016-05-17 04:41:48 +00005860#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5861 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5862 (__v8sf)(__m256)(B), \
5863 (__v8si)(__m256i)(C), (int)(imm), \
5864 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005865
5866static __inline__ __m128d __DEFAULT_FN_ATTRS
5867_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5868{
5869 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5870 (__v2df) __W,
5871 (__mmask8) __U);
5872}
5873
5874static __inline__ __m128d __DEFAULT_FN_ATTRS
5875_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5876{
5877 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5878 (__v2df)
5879 _mm_setzero_pd (),
5880 (__mmask8) __U);
5881}
5882
5883static __inline__ __m256d __DEFAULT_FN_ATTRS
5884_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5885{
5886 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5887 (__v4df) __W,
5888 (__mmask8) __U);
5889}
5890
5891static __inline__ __m256d __DEFAULT_FN_ATTRS
5892_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5893{
5894 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5895 (__v4df)
5896 _mm256_setzero_pd (),
5897 (__mmask8) __U);
5898}
5899
5900static __inline__ __m128 __DEFAULT_FN_ATTRS
5901_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5902{
5903 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5904 (__v4sf) __W,
5905 (__mmask8) __U);
5906}
5907
5908static __inline__ __m128 __DEFAULT_FN_ATTRS
5909_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5910{
5911 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5912 (__v4sf)
5913 _mm_setzero_ps (),
5914 (__mmask8) __U);
5915}
5916
5917static __inline__ __m256 __DEFAULT_FN_ATTRS
5918_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5919{
5920 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5921 (__v8sf) __W,
5922 (__mmask8) __U);
5923}
5924
5925static __inline__ __m256 __DEFAULT_FN_ATTRS
5926_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5927{
5928 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5929 (__v8sf)
5930 _mm256_setzero_ps (),
5931 (__mmask8) __U);
5932}
5933
5934static __inline__ __m128i __DEFAULT_FN_ATTRS
5935_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5936{
5937 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5938 (__v2di) __W,
5939 (__mmask8) __U);
5940}
5941
5942static __inline__ __m128i __DEFAULT_FN_ATTRS
5943_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5944{
5945 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5946 (__v2di)
5947 _mm_setzero_si128 (),
5948 (__mmask8) __U);
5949}
5950
5951static __inline__ __m256i __DEFAULT_FN_ATTRS
5952_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5953{
5954 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5955 (__v4di) __W,
5956 (__mmask8) __U);
5957}
5958
5959static __inline__ __m256i __DEFAULT_FN_ATTRS
5960_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5961{
5962 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5963 (__v4di)
5964 _mm256_setzero_si256 (),
5965 (__mmask8) __U);
5966}
5967
5968static __inline__ __m128i __DEFAULT_FN_ATTRS
5969_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5970{
5971 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5972 (__v4si) __W,
5973 (__mmask8) __U);
5974}
5975
5976static __inline__ __m128i __DEFAULT_FN_ATTRS
5977_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5978{
5979 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5980 (__v4si)
5981 _mm_setzero_si128 (),
5982 (__mmask8) __U);
5983}
5984
5985static __inline__ __m256i __DEFAULT_FN_ATTRS
5986_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5987{
5988 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5989 (__v8si) __W,
5990 (__mmask8) __U);
5991}
5992
5993static __inline__ __m256i __DEFAULT_FN_ATTRS
5994_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5995{
5996 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5997 (__v8si)
5998 _mm256_setzero_si256 (),
5999 (__mmask8) __U);
6000}
6001
6002static __inline__ __m128d __DEFAULT_FN_ATTRS
6003_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
6004{
6005 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
6006 (__v2df) __W,
6007 (__mmask8) __U);
6008}
6009
6010static __inline__ __m128d __DEFAULT_FN_ATTRS
6011_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
6012{
6013 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
6014 (__v2df)
6015 _mm_setzero_pd (),
6016 (__mmask8) __U);
6017}
6018
6019static __inline__ __m256d __DEFAULT_FN_ATTRS
6020_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
6021{
6022 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
6023 (__v4df) __W,
6024 (__mmask8) __U);
6025}
6026
6027static __inline__ __m256d __DEFAULT_FN_ATTRS
6028_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
6029{
6030 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
6031 (__v4df)
6032 _mm256_setzero_pd (),
6033 (__mmask8) __U);
6034}
6035
6036static __inline__ __m128 __DEFAULT_FN_ATTRS
6037_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
6038{
6039 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
6040 (__v4sf) __W,
6041 (__mmask8) __U);
6042}
6043
6044static __inline__ __m128 __DEFAULT_FN_ATTRS
6045_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
6046{
6047 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
6048 (__v4sf)
6049 _mm_setzero_ps (),
6050 (__mmask8) __U);
6051}
6052
6053static __inline__ __m256 __DEFAULT_FN_ATTRS
6054_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
6055{
6056 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
6057 (__v8sf) __W,
6058 (__mmask8) __U);
6059}
6060
6061static __inline__ __m256 __DEFAULT_FN_ATTRS
6062_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
6063{
6064 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
6065 (__v8sf)
6066 _mm256_setzero_ps (),
6067 (__mmask8) __U);
6068}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00006069
6070static __inline__ void __DEFAULT_FN_ATTRS
6071_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
6072{
6073 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
6074 (__v2df) __A,
6075 (__mmask8) __U);
6076}
6077
6078static __inline__ void __DEFAULT_FN_ATTRS
6079_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
6080{
6081 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
6082 (__v4df) __A,
6083 (__mmask8) __U);
6084}
6085
6086static __inline__ void __DEFAULT_FN_ATTRS
6087_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
6088{
6089 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
6090 (__v4sf) __A,
6091 (__mmask8) __U);
6092}
6093
6094static __inline__ void __DEFAULT_FN_ATTRS
6095_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
6096{
6097 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
6098 (__v8sf) __A,
6099 (__mmask8) __U);
6100}
6101
6102static __inline__ void __DEFAULT_FN_ATTRS
6103_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
6104{
6105 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
6106 (__v2di) __A,
6107 (__mmask8) __U);
6108}
6109
6110static __inline__ void __DEFAULT_FN_ATTRS
6111_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
6112{
6113 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
6114 (__v4di) __A,
6115 (__mmask8) __U);
6116}
6117
6118static __inline__ void __DEFAULT_FN_ATTRS
6119_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
6120{
6121 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
6122 (__v4si) __A,
6123 (__mmask8) __U);
6124}
6125
6126static __inline__ void __DEFAULT_FN_ATTRS
6127_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
6128{
6129 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
6130 (__v8si) __A,
6131 (__mmask8) __U);
6132}
6133
6134static __inline__ void __DEFAULT_FN_ATTRS
6135_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
6136{
6137 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
6138 (__v2df) __A,
6139 (__mmask8) __U);
6140}
6141
6142static __inline__ void __DEFAULT_FN_ATTRS
6143_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
6144{
6145 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
6146 (__v4df) __A,
6147 (__mmask8) __U);
6148}
6149
6150static __inline__ void __DEFAULT_FN_ATTRS
6151_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
6152{
6153 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
6154 (__v4sf) __A,
6155 (__mmask8) __U);
6156}
6157
6158static __inline__ void __DEFAULT_FN_ATTRS
6159_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
6160{
6161 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
6162 (__v8sf) __A,
6163 (__mmask8) __U);
6164}
6165
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006166
6167static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006168_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006169{
Craig Topper79f53ca2016-06-23 06:36:42 +00006170 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6171 (__v2df)_mm_unpackhi_pd(__A, __B),
6172 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006173}
6174
6175static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006176_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006177{
Craig Topper79f53ca2016-06-23 06:36:42 +00006178 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6179 (__v2df)_mm_unpackhi_pd(__A, __B),
6180 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006181}
6182
6183static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006184_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006185{
Craig Topper79f53ca2016-06-23 06:36:42 +00006186 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6187 (__v4df)_mm256_unpackhi_pd(__A, __B),
6188 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006189}
6190
6191static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006192_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006193{
Craig Topper79f53ca2016-06-23 06:36:42 +00006194 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6195 (__v4df)_mm256_unpackhi_pd(__A, __B),
6196 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006197}
6198
6199static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006200_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006201{
Craig Topper79f53ca2016-06-23 06:36:42 +00006202 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6203 (__v4sf)_mm_unpackhi_ps(__A, __B),
6204 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006205}
6206
6207static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006208_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006209{
Craig Topper79f53ca2016-06-23 06:36:42 +00006210 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6211 (__v4sf)_mm_unpackhi_ps(__A, __B),
6212 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006213}
6214
6215static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006216_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006217{
Craig Topper79f53ca2016-06-23 06:36:42 +00006218 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6219 (__v8sf)_mm256_unpackhi_ps(__A, __B),
6220 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006221}
6222
6223static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006224_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006225{
Craig Topper79f53ca2016-06-23 06:36:42 +00006226 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6227 (__v8sf)_mm256_unpackhi_ps(__A, __B),
6228 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006229}
6230
6231static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006232_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006233{
Craig Topper79f53ca2016-06-23 06:36:42 +00006234 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6235 (__v2df)_mm_unpacklo_pd(__A, __B),
6236 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006237}
6238
6239static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006240_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006241{
Craig Topper79f53ca2016-06-23 06:36:42 +00006242 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6243 (__v2df)_mm_unpacklo_pd(__A, __B),
6244 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006245}
6246
6247static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006248_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006249{
Craig Topper79f53ca2016-06-23 06:36:42 +00006250 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6251 (__v4df)_mm256_unpacklo_pd(__A, __B),
6252 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006253}
6254
6255static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006256_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006257{
Craig Topper79f53ca2016-06-23 06:36:42 +00006258 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6259 (__v4df)_mm256_unpacklo_pd(__A, __B),
6260 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006261}
6262
6263static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006264_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006265{
Craig Topper79f53ca2016-06-23 06:36:42 +00006266 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6267 (__v4sf)_mm_unpacklo_ps(__A, __B),
6268 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006269}
6270
6271static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006272_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006273{
Craig Topper79f53ca2016-06-23 06:36:42 +00006274 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6275 (__v4sf)_mm_unpacklo_ps(__A, __B),
6276 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006277}
6278
6279static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006280_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006281{
Craig Topper79f53ca2016-06-23 06:36:42 +00006282 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6283 (__v8sf)_mm256_unpacklo_ps(__A, __B),
6284 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006285}
6286
6287static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006288_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006289{
Craig Topper79f53ca2016-06-23 06:36:42 +00006290 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6291 (__v8sf)_mm256_unpacklo_ps(__A, __B),
6292 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00006293}
6294
6295static __inline__ __m128d __DEFAULT_FN_ATTRS
6296_mm_rcp14_pd (__m128d __A)
6297{
6298 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
6299 (__v2df)
6300 _mm_setzero_pd (),
6301 (__mmask8) -1);
6302}
6303
6304static __inline__ __m128d __DEFAULT_FN_ATTRS
6305_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6306{
6307 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
6308 (__v2df) __W,
6309 (__mmask8) __U);
6310}
6311
6312static __inline__ __m128d __DEFAULT_FN_ATTRS
6313_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
6314{
6315 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
6316 (__v2df)
6317 _mm_setzero_pd (),
6318 (__mmask8) __U);
6319}
6320
6321static __inline__ __m256d __DEFAULT_FN_ATTRS
6322_mm256_rcp14_pd (__m256d __A)
6323{
6324 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
6325 (__v4df)
6326 _mm256_setzero_pd (),
6327 (__mmask8) -1);
6328}
6329
6330static __inline__ __m256d __DEFAULT_FN_ATTRS
6331_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6332{
6333 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
6334 (__v4df) __W,
6335 (__mmask8) __U);
6336}
6337
6338static __inline__ __m256d __DEFAULT_FN_ATTRS
6339_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
6340{
6341 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
6342 (__v4df)
6343 _mm256_setzero_pd (),
6344 (__mmask8) __U);
6345}
6346
6347static __inline__ __m128 __DEFAULT_FN_ATTRS
6348_mm_rcp14_ps (__m128 __A)
6349{
6350 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
6351 (__v4sf)
6352 _mm_setzero_ps (),
6353 (__mmask8) -1);
6354}
6355
6356static __inline__ __m128 __DEFAULT_FN_ATTRS
6357_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6358{
6359 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
6360 (__v4sf) __W,
6361 (__mmask8) __U);
6362}
6363
6364static __inline__ __m128 __DEFAULT_FN_ATTRS
6365_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
6366{
6367 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
6368 (__v4sf)
6369 _mm_setzero_ps (),
6370 (__mmask8) __U);
6371}
6372
6373static __inline__ __m256 __DEFAULT_FN_ATTRS
6374_mm256_rcp14_ps (__m256 __A)
6375{
6376 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6377 (__v8sf)
6378 _mm256_setzero_ps (),
6379 (__mmask8) -1);
6380}
6381
6382static __inline__ __m256 __DEFAULT_FN_ATTRS
6383_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6384{
6385 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6386 (__v8sf) __W,
6387 (__mmask8) __U);
6388}
6389
6390static __inline__ __m256 __DEFAULT_FN_ATTRS
6391_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
6392{
6393 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6394 (__v8sf)
6395 _mm256_setzero_ps (),
6396 (__mmask8) __U);
6397}
6398
Craig Topperd2661882016-05-17 04:41:48 +00006399#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006400 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6401 (__v2df)_mm_permute_pd((X), (C)), \
6402 (__v2df)(__m128d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006403
Craig Topperd2661882016-05-17 04:41:48 +00006404#define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006405 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6406 (__v2df)_mm_permute_pd((X), (C)), \
6407 (__v2df)_mm_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006408
Craig Topperd2661882016-05-17 04:41:48 +00006409#define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006410 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6411 (__v4df)_mm256_permute_pd((X), (C)), \
6412 (__v4df)(__m256d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006413
Craig Topperd2661882016-05-17 04:41:48 +00006414#define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006415 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6416 (__v4df)_mm256_permute_pd((X), (C)), \
6417 (__v4df)_mm256_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006418
Craig Topperd2661882016-05-17 04:41:48 +00006419#define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006420 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6421 (__v4sf)_mm_permute_ps((X), (C)), \
6422 (__v4sf)(__m128)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006423
Craig Topperd2661882016-05-17 04:41:48 +00006424#define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006425 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6426 (__v4sf)_mm_permute_ps((X), (C)), \
6427 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006428
Craig Topperd2661882016-05-17 04:41:48 +00006429#define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006430 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6431 (__v8sf)_mm256_permute_ps((X), (C)), \
6432 (__v8sf)(__m256)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006433
Craig Topperd2661882016-05-17 04:41:48 +00006434#define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006435 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6436 (__v8sf)_mm256_permute_ps((X), (C)), \
6437 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006438
6439static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006440_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006441{
Craig Topper5391c982016-12-10 20:27:39 +00006442 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6443 (__v2df)_mm_permutevar_pd(__A, __C),
6444 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006445}
6446
6447static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006448_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006449{
Craig Topper5391c982016-12-10 20:27:39 +00006450 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6451 (__v2df)_mm_permutevar_pd(__A, __C),
6452 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006453}
6454
6455static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006456_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006457{
Craig Topper5391c982016-12-10 20:27:39 +00006458 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6459 (__v4df)_mm256_permutevar_pd(__A, __C),
6460 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006461}
6462
6463static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006464_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006465{
Craig Topper5391c982016-12-10 20:27:39 +00006466 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6467 (__v4df)_mm256_permutevar_pd(__A, __C),
6468 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006469}
6470
6471static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006472_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006473{
Craig Topper5391c982016-12-10 20:27:39 +00006474 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6475 (__v4sf)_mm_permutevar_ps(__A, __C),
6476 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006477}
6478
6479static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006480_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006481{
Craig Topper5391c982016-12-10 20:27:39 +00006482 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6483 (__v4sf)_mm_permutevar_ps(__A, __C),
6484 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006485}
6486
6487static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006488_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006489{
Craig Topper5391c982016-12-10 20:27:39 +00006490 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6491 (__v8sf)_mm256_permutevar_ps(__A, __C),
6492 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006493}
6494
6495static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006496_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006497{
Craig Topper5391c982016-12-10 20:27:39 +00006498 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6499 (__v8sf)_mm256_permutevar_ps(__A, __C),
6500 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006501}
6502
Michael Zuckerman07525092016-04-11 10:22:07 +00006503static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6504_mm_test_epi32_mask (__m128i __A, __m128i __B)
6505{
6506 return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A,
6507 (__v4si) __B,
6508 (__mmask8) -1);
6509}
6510
6511static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6512_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6513{
6514 return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A,
6515 (__v4si) __B, __U);
6516}
6517
6518static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6519_mm256_test_epi32_mask (__m256i __A, __m256i __B)
6520{
6521 return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A,
6522 (__v8si) __B,
6523 (__mmask8) -1);
6524}
6525
6526static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6527_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6528{
6529 return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A,
6530 (__v8si) __B, __U);
6531}
6532
6533static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6534_mm_test_epi64_mask (__m128i __A, __m128i __B)
6535{
6536 return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A,
6537 (__v2di) __B,
6538 (__mmask8) -1);
6539}
6540
6541static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6542_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6543{
6544 return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A,
6545 (__v2di) __B, __U);
6546}
6547
6548static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6549_mm256_test_epi64_mask (__m256i __A, __m256i __B)
6550{
6551 return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A,
6552 (__v4di) __B,
6553 (__mmask8) -1);
6554}
6555
6556static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6557_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6558{
6559 return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A,
6560 (__v4di) __B, __U);
6561}
6562
6563static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6564_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6565{
6566 return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A,
6567 (__v4si) __B,
6568 (__mmask8) -1);
6569}
6570
6571static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6572_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6573{
6574 return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A,
6575 (__v4si) __B, __U);
6576}
6577
6578static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6579_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6580{
6581 return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A,
6582 (__v8si) __B,
6583 (__mmask8) -1);
6584}
6585
6586static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6587_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6588{
6589 return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A,
6590 (__v8si) __B, __U);
6591}
6592
6593static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6594_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6595{
6596 return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A,
6597 (__v2di) __B,
6598 (__mmask8) -1);
6599}
6600
6601static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6602_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6603{
6604 return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A,
6605 (__v2di) __B, __U);
6606}
6607
6608static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6609_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6610{
6611 return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A,
6612 (__v4di) __B,
6613 (__mmask8) -1);
6614}
6615
6616static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6617_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6618{
6619 return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A,
6620 (__v4di) __B, __U);
6621}
6622
6623
6624
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006625static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006626_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006627{
Craig Topper79f53ca2016-06-23 06:36:42 +00006628 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6629 (__v4si)_mm_unpackhi_epi32(__A, __B),
6630 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006631}
6632
6633static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006634_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006635{
Craig Topper79f53ca2016-06-23 06:36:42 +00006636 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6637 (__v4si)_mm_unpackhi_epi32(__A, __B),
6638 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006639}
6640
6641static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006642_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006643{
Craig Topper79f53ca2016-06-23 06:36:42 +00006644 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6645 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6646 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006647}
6648
6649static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006650_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006651{
Craig Topper79f53ca2016-06-23 06:36:42 +00006652 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6653 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6654 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006655}
6656
6657static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006658_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006659{
Craig Topper79f53ca2016-06-23 06:36:42 +00006660 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6661 (__v2di)_mm_unpackhi_epi64(__A, __B),
6662 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006663}
6664
6665static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006666_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006667{
Craig Topper79f53ca2016-06-23 06:36:42 +00006668 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6669 (__v2di)_mm_unpackhi_epi64(__A, __B),
6670 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006671}
6672
6673static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006674_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006675{
Craig Topper79f53ca2016-06-23 06:36:42 +00006676 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6677 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6678 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006679}
6680
6681static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006682_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006683{
Craig Topper79f53ca2016-06-23 06:36:42 +00006684 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6685 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6686 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006687}
6688
6689static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006690_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006691{
Craig Topper79f53ca2016-06-23 06:36:42 +00006692 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6693 (__v4si)_mm_unpacklo_epi32(__A, __B),
6694 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006695}
6696
6697static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006698_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006699{
Craig Topper79f53ca2016-06-23 06:36:42 +00006700 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6701 (__v4si)_mm_unpacklo_epi32(__A, __B),
6702 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006703}
6704
6705static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006706_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006707{
Craig Topper79f53ca2016-06-23 06:36:42 +00006708 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6709 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6710 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006711}
6712
6713static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006714_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006715{
Craig Topper79f53ca2016-06-23 06:36:42 +00006716 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6717 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6718 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006719}
6720
6721static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006722_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006723{
Craig Topper79f53ca2016-06-23 06:36:42 +00006724 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6725 (__v2di)_mm_unpacklo_epi64(__A, __B),
6726 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006727}
6728
6729static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006730_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006731{
Craig Topper79f53ca2016-06-23 06:36:42 +00006732 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6733 (__v2di)_mm_unpacklo_epi64(__A, __B),
6734 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006735}
6736
6737static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006738_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006739{
Craig Topper79f53ca2016-06-23 06:36:42 +00006740 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6741 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6742 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006743}
6744
6745static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006746_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006747{
Craig Topper79f53ca2016-06-23 06:36:42 +00006748 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6749 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6750 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006751}
6752
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006753static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006754_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006755{
Craig Topper66b2fd12016-10-31 04:30:51 +00006756 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6757 (__v4si)_mm_sra_epi32(__A, __B),
6758 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006759}
6760
6761static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006762_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006763{
Craig Topper66b2fd12016-10-31 04:30:51 +00006764 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6765 (__v4si)_mm_sra_epi32(__A, __B),
6766 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006767}
6768
6769static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006770_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006771{
Craig Topper66b2fd12016-10-31 04:30:51 +00006772 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6773 (__v8si)_mm256_sra_epi32(__A, __B),
6774 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006775}
6776
6777static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006778_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006779{
Craig Topper66b2fd12016-10-31 04:30:51 +00006780 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6781 (__v8si)_mm256_sra_epi32(__A, __B),
6782 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006783}
6784
Craig Topper66b2fd12016-10-31 04:30:51 +00006785static __inline__ __m128i __DEFAULT_FN_ATTRS
6786_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6787{
6788 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6789 (__v4si)_mm_srai_epi32(__A, __B),
6790 (__v4si)__W);
6791}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006792
Craig Topper66b2fd12016-10-31 04:30:51 +00006793static __inline__ __m128i __DEFAULT_FN_ATTRS
6794_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6795{
6796 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6797 (__v4si)_mm_srai_epi32(__A, __B),
6798 (__v4si)_mm_setzero_si128());
6799}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006800
Craig Topper66b2fd12016-10-31 04:30:51 +00006801static __inline__ __m256i __DEFAULT_FN_ATTRS
6802_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6803{
6804 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6805 (__v8si)_mm256_srai_epi32(__A, __B),
6806 (__v8si)__W);
6807}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006808
Craig Topper66b2fd12016-10-31 04:30:51 +00006809static __inline__ __m256i __DEFAULT_FN_ATTRS
6810_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6811{
6812 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6813 (__v8si)_mm256_srai_epi32(__A, __B),
6814 (__v8si)_mm256_setzero_si256());
6815}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006816
6817static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006818_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006819{
Craig Topper1a441932016-11-12 07:16:59 +00006820 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006821}
6822
6823static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006824_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006825{
Craig Topper1a441932016-11-12 07:16:59 +00006826 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6827 (__v2di)_mm_sra_epi64(__A, __B), \
6828 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006829}
6830
6831static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006832_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006833{
Craig Topper1a441932016-11-12 07:16:59 +00006834 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6835 (__v2di)_mm_sra_epi64(__A, __B), \
6836 (__v2di)_mm_setzero_di());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006837}
6838
6839static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006840_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006841{
Craig Topper1a441932016-11-12 07:16:59 +00006842 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006843}
6844
6845static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006846_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006847{
Craig Topper1a441932016-11-12 07:16:59 +00006848 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6849 (__v4di)_mm256_sra_epi64(__A, __B), \
6850 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006851}
6852
6853static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006854_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006855{
Craig Topper1a441932016-11-12 07:16:59 +00006856 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6857 (__v4di)_mm256_sra_epi64(__A, __B), \
6858 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006859}
6860
Craig Topper1a441932016-11-12 07:16:59 +00006861static __inline__ __m128i __DEFAULT_FN_ATTRS
6862_mm_srai_epi64(__m128i __A, int __imm)
6863{
6864 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6865}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006866
Craig Topper1a441932016-11-12 07:16:59 +00006867static __inline__ __m128i __DEFAULT_FN_ATTRS
6868_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6869{
6870 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6871 (__v2di)_mm_srai_epi64(__A, __imm), \
6872 (__v2di)__W);
6873}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006874
Craig Topper1a441932016-11-12 07:16:59 +00006875static __inline__ __m128i __DEFAULT_FN_ATTRS
6876_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6877{
6878 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6879 (__v2di)_mm_srai_epi64(__A, __imm), \
6880 (__v2di)_mm_setzero_di());
6881}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006882
Craig Topper1a441932016-11-12 07:16:59 +00006883static __inline__ __m256i __DEFAULT_FN_ATTRS
6884_mm256_srai_epi64(__m256i __A, int __imm)
6885{
6886 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6887}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006888
Craig Topper1a441932016-11-12 07:16:59 +00006889static __inline__ __m256i __DEFAULT_FN_ATTRS
6890_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6891{
6892 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6893 (__v4di)_mm256_srai_epi64(__A, __imm), \
6894 (__v4di)__W);
6895}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006896
Craig Topper1a441932016-11-12 07:16:59 +00006897static __inline__ __m256i __DEFAULT_FN_ATTRS
6898_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6899{
6900 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6901 (__v4di)_mm256_srai_epi64(__A, __imm), \
6902 (__v4di)_mm256_setzero_si256());
6903}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006904
Craig Topperd2661882016-05-17 04:41:48 +00006905#define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6906 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6907 (__v4si)(__m128i)(B), \
6908 (__v4si)(__m128i)(C), (int)(imm), \
6909 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006910
Craig Topperd2661882016-05-17 04:41:48 +00006911#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6912 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6913 (__v4si)(__m128i)(B), \
6914 (__v4si)(__m128i)(C), (int)(imm), \
6915 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006916
Craig Topperd2661882016-05-17 04:41:48 +00006917#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6918 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6919 (__v4si)(__m128i)(B), \
6920 (__v4si)(__m128i)(C), (int)(imm), \
6921 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006922
Craig Topperd2661882016-05-17 04:41:48 +00006923#define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6924 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6925 (__v8si)(__m256i)(B), \
6926 (__v8si)(__m256i)(C), (int)(imm), \
6927 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006928
Craig Topperd2661882016-05-17 04:41:48 +00006929#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6930 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6931 (__v8si)(__m256i)(B), \
6932 (__v8si)(__m256i)(C), (int)(imm), \
6933 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006934
Craig Topperd2661882016-05-17 04:41:48 +00006935#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6936 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6937 (__v8si)(__m256i)(B), \
6938 (__v8si)(__m256i)(C), (int)(imm), \
6939 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006940
Craig Topperd2661882016-05-17 04:41:48 +00006941#define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6942 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6943 (__v2di)(__m128i)(B), \
6944 (__v2di)(__m128i)(C), (int)(imm), \
6945 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006946
Craig Topperd2661882016-05-17 04:41:48 +00006947#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6948 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6949 (__v2di)(__m128i)(B), \
6950 (__v2di)(__m128i)(C), (int)(imm), \
6951 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006952
Craig Topperd2661882016-05-17 04:41:48 +00006953#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6954 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6955 (__v2di)(__m128i)(B), \
6956 (__v2di)(__m128i)(C), (int)(imm), \
6957 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006958
Craig Topperd2661882016-05-17 04:41:48 +00006959#define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6960 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6961 (__v4di)(__m256i)(B), \
6962 (__v4di)(__m256i)(C), (int)(imm), \
6963 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006964
Craig Topperd2661882016-05-17 04:41:48 +00006965#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6966 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6967 (__v4di)(__m256i)(B), \
6968 (__v4di)(__m256i)(C), (int)(imm), \
6969 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006970
Craig Topperd2661882016-05-17 04:41:48 +00006971#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6972 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6973 (__v4di)(__m256i)(B), \
6974 (__v4di)(__m256i)(C), (int)(imm), \
6975 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006976
6977
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006978
Craig Topperd2661882016-05-17 04:41:48 +00006979#define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
6980 (__m256)__builtin_ia32_shuf_f32x4_256_mask((__v8sf)(__m256)(A), \
6981 (__v8sf)(__m256)(B), (int)(imm), \
6982 (__v8sf)_mm256_setzero_ps(), \
6983 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006984
Craig Topperd2661882016-05-17 04:41:48 +00006985#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
6986 (__m256)__builtin_ia32_shuf_f32x4_256_mask((__v8sf)(__m256)(A), \
6987 (__v8sf)(__m256)(B), (int)(imm), \
6988 (__v8sf)(__m256)(W), \
6989 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006990
Craig Topperd2661882016-05-17 04:41:48 +00006991#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
6992 (__m256)__builtin_ia32_shuf_f32x4_256_mask((__v8sf)(__m256)(A), \
6993 (__v8sf)(__m256)(B), (int)(imm), \
6994 (__v8sf)_mm256_setzero_ps(), \
6995 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006996
Craig Topperd2661882016-05-17 04:41:48 +00006997#define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
6998 (__m256d)__builtin_ia32_shuf_f64x2_256_mask((__v4df)(__m256d)(A), \
6999 (__v4df)(__m256d)(B), \
7000 (int)(imm), \
7001 (__v4df)_mm256_setzero_pd(), \
7002 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007003
Craig Topperd2661882016-05-17 04:41:48 +00007004#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
7005 (__m256d)__builtin_ia32_shuf_f64x2_256_mask((__v4df)(__m256d)(A), \
7006 (__v4df)(__m256d)(B), \
7007 (int)(imm), \
7008 (__v4df)(__m256d)(W), \
7009 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007010
Craig Topperd2661882016-05-17 04:41:48 +00007011#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
7012 (__m256d)__builtin_ia32_shuf_f64x2_256_mask((__v4df)(__m256d)(A), \
7013 (__v4df)(__m256d)(B), \
7014 (int)(imm), \
7015 (__v4df)_mm256_setzero_pd(), \
7016 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007017
Craig Topperd2661882016-05-17 04:41:48 +00007018#define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
7019 (__m256i)__builtin_ia32_shuf_i32x4_256_mask((__v8si)(__m256i)(A), \
7020 (__v8si)(__m256i)(B), \
7021 (int)(imm), \
7022 (__v8si)_mm256_setzero_si256(), \
7023 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007024
Craig Topperd2661882016-05-17 04:41:48 +00007025#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
7026 (__m256i)__builtin_ia32_shuf_i32x4_256_mask((__v8si)(__m256i)(A), \
7027 (__v8si)(__m256i)(B), \
7028 (int)(imm), \
7029 (__v8si)(__m256i)(W), \
7030 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007031
Craig Topperd2661882016-05-17 04:41:48 +00007032#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
7033 (__m256i)__builtin_ia32_shuf_i32x4_256_mask((__v8si)(__m256i)(A), \
7034 (__v8si)(__m256i)(B), \
7035 (int)(imm), \
7036 (__v8si)_mm256_setzero_si256(), \
7037 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007038
Craig Topperd2661882016-05-17 04:41:48 +00007039#define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
7040 (__m256i)__builtin_ia32_shuf_i64x2_256_mask((__v4di)(__m256i)(A), \
7041 (__v4di)(__m256i)(B), \
7042 (int)(imm), \
7043 (__v4di)_mm256_setzero_si256(), \
7044 (__mmask8)-1); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007045
Craig Topperd2661882016-05-17 04:41:48 +00007046#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
7047 (__m256i)__builtin_ia32_shuf_i64x2_256_mask((__v4di)(__m256i)(A), \
7048 (__v4di)(__m256i)(B), \
7049 (int)(imm), \
7050 (__v4di)(__m256i)(W), \
7051 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007052
Craig Topperd2661882016-05-17 04:41:48 +00007053#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
7054 (__m256i)__builtin_ia32_shuf_i64x2_256_mask((__v4di)(__m256i)(A), \
7055 (__v4di)(__m256i)(B), \
7056 (int)(imm), \
7057 (__v4di)_mm256_setzero_si256(), \
7058 (__mmask8)(U)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007059
Simon Pilgrim427154d2016-07-04 21:30:47 +00007060#define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
7061 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
7062 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
7063 (__v2df)(__m128d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007064
Simon Pilgrim427154d2016-07-04 21:30:47 +00007065#define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
7066 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
7067 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
7068 (__v2df)_mm_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007069
Simon Pilgrim427154d2016-07-04 21:30:47 +00007070#define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
7071 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7072 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
7073 (__v4df)(__m256d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007074
Simon Pilgrim427154d2016-07-04 21:30:47 +00007075#define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
7076 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7077 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
7078 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007079
Simon Pilgrim427154d2016-07-04 21:30:47 +00007080#define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
7081 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7082 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
7083 (__v4sf)(__m128)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007084
Simon Pilgrim427154d2016-07-04 21:30:47 +00007085#define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
7086 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7087 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
7088 (__v4sf)_mm_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007089
Simon Pilgrim427154d2016-07-04 21:30:47 +00007090#define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
7091 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7092 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
7093 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007094
Simon Pilgrim427154d2016-07-04 21:30:47 +00007095#define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
7096 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7097 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
7098 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00007099
7100static __inline__ __m128d __DEFAULT_FN_ATTRS
7101_mm_rsqrt14_pd (__m128d __A)
7102{
7103 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
7104 (__v2df)
7105 _mm_setzero_pd (),
7106 (__mmask8) -1);
7107}
7108
7109static __inline__ __m128d __DEFAULT_FN_ATTRS
7110_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
7111{
7112 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
7113 (__v2df) __W,
7114 (__mmask8) __U);
7115}
7116
7117static __inline__ __m128d __DEFAULT_FN_ATTRS
7118_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
7119{
7120 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
7121 (__v2df)
7122 _mm_setzero_pd (),
7123 (__mmask8) __U);
7124}
7125
7126static __inline__ __m256d __DEFAULT_FN_ATTRS
7127_mm256_rsqrt14_pd (__m256d __A)
7128{
7129 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
7130 (__v4df)
7131 _mm256_setzero_pd (),
7132 (__mmask8) -1);
7133}
7134
7135static __inline__ __m256d __DEFAULT_FN_ATTRS
7136_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
7137{
7138 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
7139 (__v4df) __W,
7140 (__mmask8) __U);
7141}
7142
7143static __inline__ __m256d __DEFAULT_FN_ATTRS
7144_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
7145{
7146 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
7147 (__v4df)
7148 _mm256_setzero_pd (),
7149 (__mmask8) __U);
7150}
7151
7152static __inline__ __m128 __DEFAULT_FN_ATTRS
7153_mm_rsqrt14_ps (__m128 __A)
7154{
7155 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
7156 (__v4sf)
7157 _mm_setzero_ps (),
7158 (__mmask8) -1);
7159}
7160
7161static __inline__ __m128 __DEFAULT_FN_ATTRS
7162_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
7163{
7164 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
7165 (__v4sf) __W,
7166 (__mmask8) __U);
7167}
7168
7169static __inline__ __m128 __DEFAULT_FN_ATTRS
7170_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
7171{
7172 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
7173 (__v4sf)
7174 _mm_setzero_ps (),
7175 (__mmask8) __U);
7176}
7177
7178static __inline__ __m256 __DEFAULT_FN_ATTRS
7179_mm256_rsqrt14_ps (__m256 __A)
7180{
7181 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
7182 (__v8sf)
7183 _mm256_setzero_ps (),
7184 (__mmask8) -1);
7185}
7186
7187static __inline__ __m256 __DEFAULT_FN_ATTRS
7188_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
7189{
7190 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
7191 (__v8sf) __W,
7192 (__mmask8) __U);
7193}
7194
7195static __inline__ __m256 __DEFAULT_FN_ATTRS
7196_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
7197{
7198 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
7199 (__v8sf)
7200 _mm256_setzero_ps (),
7201 (__mmask8) __U);
7202}
7203
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007204static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00007205_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007206{
Craig Topper367c86d2017-01-18 02:17:10 +00007207 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
7208 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007209}
7210
7211static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00007212_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007213{
Craig Topper367c86d2017-01-18 02:17:10 +00007214 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
7215 (__v8sf)_mm256_broadcast_f32x4(__A),
7216 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007217}
7218
7219static __inline__ __m256 __DEFAULT_FN_ATTRS
7220_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
7221{
Craig Topper367c86d2017-01-18 02:17:10 +00007222 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
7223 (__v8sf)_mm256_broadcast_f32x4(__A),
7224 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007225}
7226
7227static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00007228_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007229{
Craig Topper367c86d2017-01-18 02:17:10 +00007230 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
7231 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007232}
7233
7234static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00007235_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007236{
Craig Topper367c86d2017-01-18 02:17:10 +00007237 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
7238 (__v8si)_mm256_broadcast_i32x4(__A),
7239 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007240}
7241
7242static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00007243_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007244{
Craig Topper367c86d2017-01-18 02:17:10 +00007245 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
7246 (__v8si)_mm256_broadcast_i32x4(__A),
7247 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007248}
7249
7250static __inline__ __m256d __DEFAULT_FN_ATTRS
7251_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
7252{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007253 return (__m256d)__builtin_ia32_selectpd_256(__M,
7254 (__v4df) _mm256_broadcastsd_pd(__A),
7255 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007256}
7257
7258static __inline__ __m256d __DEFAULT_FN_ATTRS
7259_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7260{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007261 return (__m256d)__builtin_ia32_selectpd_256(__M,
7262 (__v4df) _mm256_broadcastsd_pd(__A),
7263 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007264}
7265
7266static __inline__ __m128 __DEFAULT_FN_ATTRS
7267_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
7268{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007269 return (__m128)__builtin_ia32_selectps_128(__M,
7270 (__v4sf) _mm_broadcastss_ps(__A),
7271 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007272}
7273
7274static __inline__ __m128 __DEFAULT_FN_ATTRS
7275_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
7276{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007277 return (__m128)__builtin_ia32_selectps_128(__M,
7278 (__v4sf) _mm_broadcastss_ps(__A),
7279 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007280}
7281
7282static __inline__ __m256 __DEFAULT_FN_ATTRS
7283_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
7284{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007285 return (__m256)__builtin_ia32_selectps_256(__M,
7286 (__v8sf) _mm256_broadcastss_ps(__A),
7287 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007288}
7289
7290static __inline__ __m256 __DEFAULT_FN_ATTRS
7291_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
7292{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007293 return (__m256)__builtin_ia32_selectps_256(__M,
7294 (__v8sf) _mm256_broadcastss_ps(__A),
7295 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007296}
7297
7298static __inline__ __m128i __DEFAULT_FN_ATTRS
7299_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7300{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007301 return (__m128i)__builtin_ia32_selectd_128(__M,
7302 (__v4si) _mm_broadcastd_epi32(__A),
7303 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007304}
7305
7306static __inline__ __m128i __DEFAULT_FN_ATTRS
7307_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
7308{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007309 return (__m128i)__builtin_ia32_selectd_128(__M,
7310 (__v4si) _mm_broadcastd_epi32(__A),
7311 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007312}
7313
7314static __inline__ __m256i __DEFAULT_FN_ATTRS
7315_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
7316{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007317 return (__m256i)__builtin_ia32_selectd_256(__M,
7318 (__v8si) _mm256_broadcastd_epi32(__A),
7319 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007320}
7321
7322static __inline__ __m256i __DEFAULT_FN_ATTRS
7323_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
7324{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007325 return (__m256i)__builtin_ia32_selectd_256(__M,
7326 (__v8si) _mm256_broadcastd_epi32(__A),
7327 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007328}
7329
7330static __inline__ __m128i __DEFAULT_FN_ATTRS
7331_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
7332{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007333 return (__m128i)__builtin_ia32_selectq_128(__M,
7334 (__v2di) _mm_broadcastq_epi64(__A),
7335 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007336}
7337
7338static __inline__ __m128i __DEFAULT_FN_ATTRS
7339_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
7340{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007341 return (__m128i)__builtin_ia32_selectq_128(__M,
7342 (__v2di) _mm_broadcastq_epi64(__A),
7343 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007344}
7345
7346static __inline__ __m256i __DEFAULT_FN_ATTRS
7347_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
7348{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007349 return (__m256i)__builtin_ia32_selectq_256(__M,
7350 (__v4di) _mm256_broadcastq_epi64(__A),
7351 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007352}
7353
7354static __inline__ __m256i __DEFAULT_FN_ATTRS
7355_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
7356{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00007357 return (__m256i)__builtin_ia32_selectq_256(__M,
7358 (__v4di) _mm256_broadcastq_epi64(__A),
7359 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00007360}
7361
Michael Zuckermane1680612016-04-13 15:02:04 +00007362static __inline__ __m128i __DEFAULT_FN_ATTRS
7363_mm_cvtsepi32_epi8 (__m128i __A)
7364{
7365 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
7366 (__v16qi)_mm_undefined_si128(),
7367 (__mmask8) -1);
7368}
7369
7370static __inline__ __m128i __DEFAULT_FN_ATTRS
7371_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7372{
7373 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
7374 (__v16qi) __O, __M);
7375}
7376
7377static __inline__ __m128i __DEFAULT_FN_ATTRS
7378_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
7379{
7380 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
7381 (__v16qi) _mm_setzero_si128 (),
7382 __M);
7383}
7384
7385static __inline__ void __DEFAULT_FN_ATTRS
7386_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7387{
7388 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7389}
7390
7391static __inline__ __m128i __DEFAULT_FN_ATTRS
7392_mm256_cvtsepi32_epi8 (__m256i __A)
7393{
7394 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7395 (__v16qi)_mm_undefined_si128(),
7396 (__mmask8) -1);
7397}
7398
7399static __inline__ __m128i __DEFAULT_FN_ATTRS
7400_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7401{
7402 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7403 (__v16qi) __O, __M);
7404}
7405
7406static __inline__ __m128i __DEFAULT_FN_ATTRS
7407_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
7408{
7409 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7410 (__v16qi) _mm_setzero_si128 (),
7411 __M);
7412}
7413
7414static __inline__ void __DEFAULT_FN_ATTRS
7415_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7416{
7417 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7418}
7419
7420static __inline__ __m128i __DEFAULT_FN_ATTRS
7421_mm_cvtsepi32_epi16 (__m128i __A)
7422{
7423 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7424 (__v8hi)_mm_setzero_si128 (),
7425 (__mmask8) -1);
7426}
7427
7428static __inline__ __m128i __DEFAULT_FN_ATTRS
7429_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7430{
7431 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7432 (__v8hi)__O,
7433 __M);
7434}
7435
7436static __inline__ __m128i __DEFAULT_FN_ATTRS
7437_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
7438{
7439 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7440 (__v8hi) _mm_setzero_si128 (),
7441 __M);
7442}
7443
7444static __inline__ void __DEFAULT_FN_ATTRS
7445_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7446{
7447 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7448}
7449
7450static __inline__ __m128i __DEFAULT_FN_ATTRS
7451_mm256_cvtsepi32_epi16 (__m256i __A)
7452{
7453 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7454 (__v8hi)_mm_undefined_si128(),
7455 (__mmask8) -1);
7456}
7457
7458static __inline__ __m128i __DEFAULT_FN_ATTRS
7459_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7460{
7461 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7462 (__v8hi) __O, __M);
7463}
7464
7465static __inline__ __m128i __DEFAULT_FN_ATTRS
7466_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
7467{
7468 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7469 (__v8hi) _mm_setzero_si128 (),
7470 __M);
7471}
7472
7473static __inline__ void __DEFAULT_FN_ATTRS
7474_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7475{
7476 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7477}
7478
7479static __inline__ __m128i __DEFAULT_FN_ATTRS
7480_mm_cvtsepi64_epi8 (__m128i __A)
7481{
7482 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7483 (__v16qi)_mm_undefined_si128(),
7484 (__mmask8) -1);
7485}
7486
7487static __inline__ __m128i __DEFAULT_FN_ATTRS
7488_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7489{
7490 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7491 (__v16qi) __O, __M);
7492}
7493
7494static __inline__ __m128i __DEFAULT_FN_ATTRS
7495_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
7496{
7497 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7498 (__v16qi) _mm_setzero_si128 (),
7499 __M);
7500}
7501
7502static __inline__ void __DEFAULT_FN_ATTRS
7503_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7504{
7505 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7506}
7507
7508static __inline__ __m128i __DEFAULT_FN_ATTRS
7509_mm256_cvtsepi64_epi8 (__m256i __A)
7510{
7511 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7512 (__v16qi)_mm_undefined_si128(),
7513 (__mmask8) -1);
7514}
7515
7516static __inline__ __m128i __DEFAULT_FN_ATTRS
7517_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7518{
7519 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7520 (__v16qi) __O, __M);
7521}
7522
7523static __inline__ __m128i __DEFAULT_FN_ATTRS
7524_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
7525{
7526 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7527 (__v16qi) _mm_setzero_si128 (),
7528 __M);
7529}
7530
7531static __inline__ void __DEFAULT_FN_ATTRS
7532_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7533{
7534 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7535}
7536
7537static __inline__ __m128i __DEFAULT_FN_ATTRS
7538_mm_cvtsepi64_epi32 (__m128i __A)
7539{
7540 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7541 (__v4si)_mm_undefined_si128(),
7542 (__mmask8) -1);
7543}
7544
7545static __inline__ __m128i __DEFAULT_FN_ATTRS
7546_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7547{
7548 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7549 (__v4si) __O, __M);
7550}
7551
7552static __inline__ __m128i __DEFAULT_FN_ATTRS
7553_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7554{
7555 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7556 (__v4si) _mm_setzero_si128 (),
7557 __M);
7558}
7559
7560static __inline__ void __DEFAULT_FN_ATTRS
7561_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7562{
7563 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7564}
7565
7566static __inline__ __m128i __DEFAULT_FN_ATTRS
7567_mm256_cvtsepi64_epi32 (__m256i __A)
7568{
7569 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7570 (__v4si)_mm_undefined_si128(),
7571 (__mmask8) -1);
7572}
7573
7574static __inline__ __m128i __DEFAULT_FN_ATTRS
7575_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7576{
7577 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7578 (__v4si)__O,
7579 __M);
7580}
7581
7582static __inline__ __m128i __DEFAULT_FN_ATTRS
7583_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7584{
7585 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7586 (__v4si) _mm_setzero_si128 (),
7587 __M);
7588}
7589
7590static __inline__ void __DEFAULT_FN_ATTRS
7591_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7592{
7593 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7594}
7595
7596static __inline__ __m128i __DEFAULT_FN_ATTRS
7597_mm_cvtsepi64_epi16 (__m128i __A)
7598{
7599 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7600 (__v8hi)_mm_undefined_si128(),
7601 (__mmask8) -1);
7602}
7603
7604static __inline__ __m128i __DEFAULT_FN_ATTRS
7605_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7606{
7607 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7608 (__v8hi) __O, __M);
7609}
7610
7611static __inline__ __m128i __DEFAULT_FN_ATTRS
7612_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7613{
7614 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7615 (__v8hi) _mm_setzero_si128 (),
7616 __M);
7617}
7618
7619static __inline__ void __DEFAULT_FN_ATTRS
7620_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7621{
7622 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7623}
7624
7625static __inline__ __m128i __DEFAULT_FN_ATTRS
7626_mm256_cvtsepi64_epi16 (__m256i __A)
7627{
7628 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7629 (__v8hi)_mm_undefined_si128(),
7630 (__mmask8) -1);
7631}
7632
7633static __inline__ __m128i __DEFAULT_FN_ATTRS
7634_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7635{
7636 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7637 (__v8hi) __O, __M);
7638}
7639
7640static __inline__ __m128i __DEFAULT_FN_ATTRS
7641_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7642{
7643 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7644 (__v8hi) _mm_setzero_si128 (),
7645 __M);
7646}
7647
7648static __inline__ void __DEFAULT_FN_ATTRS
7649_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7650{
7651 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7652}
7653
Michael Zuckermand8715312016-04-14 06:48:09 +00007654static __inline__ __m128i __DEFAULT_FN_ATTRS
7655_mm_cvtusepi32_epi8 (__m128i __A)
7656{
7657 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7658 (__v16qi)_mm_undefined_si128(),
7659 (__mmask8) -1);
7660}
7661
7662static __inline__ __m128i __DEFAULT_FN_ATTRS
7663_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7664{
7665 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7666 (__v16qi) __O,
7667 __M);
7668}
7669
7670static __inline__ __m128i __DEFAULT_FN_ATTRS
7671_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7672{
7673 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7674 (__v16qi) _mm_setzero_si128 (),
7675 __M);
7676}
7677
7678static __inline__ void __DEFAULT_FN_ATTRS
7679_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7680{
7681 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7682}
7683
7684static __inline__ __m128i __DEFAULT_FN_ATTRS
7685_mm256_cvtusepi32_epi8 (__m256i __A)
7686{
7687 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7688 (__v16qi)_mm_undefined_si128(),
7689 (__mmask8) -1);
7690}
7691
7692static __inline__ __m128i __DEFAULT_FN_ATTRS
7693_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7694{
7695 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7696 (__v16qi) __O,
7697 __M);
7698}
7699
7700static __inline__ __m128i __DEFAULT_FN_ATTRS
7701_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7702{
7703 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7704 (__v16qi) _mm_setzero_si128 (),
7705 __M);
7706}
7707
7708static __inline__ void __DEFAULT_FN_ATTRS
7709_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7710{
7711 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7712}
7713
7714static __inline__ __m128i __DEFAULT_FN_ATTRS
7715_mm_cvtusepi32_epi16 (__m128i __A)
7716{
7717 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7718 (__v8hi)_mm_undefined_si128(),
7719 (__mmask8) -1);
7720}
7721
7722static __inline__ __m128i __DEFAULT_FN_ATTRS
7723_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7724{
7725 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7726 (__v8hi) __O, __M);
7727}
7728
7729static __inline__ __m128i __DEFAULT_FN_ATTRS
7730_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7731{
7732 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7733 (__v8hi) _mm_setzero_si128 (),
7734 __M);
7735}
7736
7737static __inline__ void __DEFAULT_FN_ATTRS
7738_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7739{
7740 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7741}
7742
7743static __inline__ __m128i __DEFAULT_FN_ATTRS
7744_mm256_cvtusepi32_epi16 (__m256i __A)
7745{
7746 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7747 (__v8hi) _mm_undefined_si128(),
7748 (__mmask8) -1);
7749}
7750
7751static __inline__ __m128i __DEFAULT_FN_ATTRS
7752_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7753{
7754 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7755 (__v8hi) __O, __M);
7756}
7757
7758static __inline__ __m128i __DEFAULT_FN_ATTRS
7759_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7760{
7761 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7762 (__v8hi) _mm_setzero_si128 (),
7763 __M);
7764}
7765
7766static __inline__ void __DEFAULT_FN_ATTRS
7767_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7768{
7769 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7770}
7771
7772static __inline__ __m128i __DEFAULT_FN_ATTRS
7773_mm_cvtusepi64_epi8 (__m128i __A)
7774{
7775 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7776 (__v16qi)_mm_undefined_si128(),
7777 (__mmask8) -1);
7778}
7779
7780static __inline__ __m128i __DEFAULT_FN_ATTRS
7781_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7782{
7783 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7784 (__v16qi) __O,
7785 __M);
7786}
7787
7788static __inline__ __m128i __DEFAULT_FN_ATTRS
7789_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7790{
7791 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7792 (__v16qi) _mm_setzero_si128 (),
7793 __M);
7794}
7795
7796static __inline__ void __DEFAULT_FN_ATTRS
7797_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7798{
7799 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7800}
7801
7802static __inline__ __m128i __DEFAULT_FN_ATTRS
7803_mm256_cvtusepi64_epi8 (__m256i __A)
7804{
7805 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7806 (__v16qi)_mm_undefined_si128(),
7807 (__mmask8) -1);
7808}
7809
7810static __inline__ __m128i __DEFAULT_FN_ATTRS
7811_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7812{
7813 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7814 (__v16qi) __O,
7815 __M);
7816}
7817
7818static __inline__ __m128i __DEFAULT_FN_ATTRS
7819_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7820{
7821 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7822 (__v16qi) _mm_setzero_si128 (),
7823 __M);
7824}
7825
7826static __inline__ void __DEFAULT_FN_ATTRS
7827_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7828{
7829 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7830}
7831
7832static __inline__ __m128i __DEFAULT_FN_ATTRS
7833_mm_cvtusepi64_epi32 (__m128i __A)
7834{
7835 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7836 (__v4si)_mm_undefined_si128(),
7837 (__mmask8) -1);
7838}
7839
7840static __inline__ __m128i __DEFAULT_FN_ATTRS
7841_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7842{
7843 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7844 (__v4si) __O, __M);
7845}
7846
7847static __inline__ __m128i __DEFAULT_FN_ATTRS
7848_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7849{
7850 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7851 (__v4si) _mm_setzero_si128 (),
7852 __M);
7853}
7854
7855static __inline__ void __DEFAULT_FN_ATTRS
7856_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7857{
7858 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7859}
7860
7861static __inline__ __m128i __DEFAULT_FN_ATTRS
7862_mm256_cvtusepi64_epi32 (__m256i __A)
7863{
7864 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7865 (__v4si)_mm_undefined_si128(),
7866 (__mmask8) -1);
7867}
7868
7869static __inline__ __m128i __DEFAULT_FN_ATTRS
7870_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7871{
7872 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7873 (__v4si) __O, __M);
7874}
7875
7876static __inline__ __m128i __DEFAULT_FN_ATTRS
7877_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7878{
7879 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7880 (__v4si) _mm_setzero_si128 (),
7881 __M);
7882}
7883
7884static __inline__ void __DEFAULT_FN_ATTRS
7885_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7886{
7887 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7888}
7889
7890static __inline__ __m128i __DEFAULT_FN_ATTRS
7891_mm_cvtusepi64_epi16 (__m128i __A)
7892{
7893 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7894 (__v8hi)_mm_undefined_si128(),
7895 (__mmask8) -1);
7896}
7897
7898static __inline__ __m128i __DEFAULT_FN_ATTRS
7899_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7900{
7901 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7902 (__v8hi) __O, __M);
7903}
7904
7905static __inline__ __m128i __DEFAULT_FN_ATTRS
7906_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7907{
7908 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7909 (__v8hi) _mm_setzero_si128 (),
7910 __M);
7911}
7912
7913static __inline__ void __DEFAULT_FN_ATTRS
7914_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7915{
7916 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7917}
7918
7919static __inline__ __m128i __DEFAULT_FN_ATTRS
7920_mm256_cvtusepi64_epi16 (__m256i __A)
7921{
7922 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7923 (__v8hi)_mm_undefined_si128(),
7924 (__mmask8) -1);
7925}
7926
7927static __inline__ __m128i __DEFAULT_FN_ATTRS
7928_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7929{
7930 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7931 (__v8hi) __O, __M);
7932}
7933
7934static __inline__ __m128i __DEFAULT_FN_ATTRS
7935_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7936{
7937 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7938 (__v8hi) _mm_setzero_si128 (),
7939 __M);
7940}
7941
7942static __inline__ void __DEFAULT_FN_ATTRS
7943_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7944{
7945 return __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7946}
7947
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007948static __inline__ __m128i __DEFAULT_FN_ATTRS
7949_mm_cvtepi32_epi8 (__m128i __A)
7950{
7951 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7952 (__v16qi)_mm_undefined_si128(),
7953 (__mmask8) -1);
7954}
7955
7956static __inline__ __m128i __DEFAULT_FN_ATTRS
7957_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7958{
7959 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7960 (__v16qi) __O, __M);
7961}
7962
7963static __inline__ __m128i __DEFAULT_FN_ATTRS
7964_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7965{
7966 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7967 (__v16qi)
7968 _mm_setzero_si128 (),
7969 __M);
7970}
7971
7972static __inline__ void __DEFAULT_FN_ATTRS
7973_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7974{
7975 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7976}
7977
7978static __inline__ __m128i __DEFAULT_FN_ATTRS
7979_mm256_cvtepi32_epi8 (__m256i __A)
7980{
7981 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7982 (__v16qi)_mm_undefined_si128(),
7983 (__mmask8) -1);
7984}
7985
7986static __inline__ __m128i __DEFAULT_FN_ATTRS
7987_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7988{
7989 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7990 (__v16qi) __O, __M);
7991}
7992
7993static __inline__ __m128i __DEFAULT_FN_ATTRS
7994_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7995{
7996 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7997 (__v16qi) _mm_setzero_si128 (),
7998 __M);
7999}
8000
8001static __inline__ void __DEFAULT_FN_ATTRS
8002_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
8003{
8004 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
8005}
8006
8007static __inline__ __m128i __DEFAULT_FN_ATTRS
8008_mm_cvtepi32_epi16 (__m128i __A)
8009{
8010 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
8011 (__v8hi) _mm_setzero_si128 (),
8012 (__mmask8) -1);
8013}
8014
8015static __inline__ __m128i __DEFAULT_FN_ATTRS
8016_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
8017{
8018 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
8019 (__v8hi) __O, __M);
8020}
8021
8022static __inline__ __m128i __DEFAULT_FN_ATTRS
8023_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
8024{
8025 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
8026 (__v8hi) _mm_setzero_si128 (),
8027 __M);
8028}
8029
8030static __inline__ void __DEFAULT_FN_ATTRS
8031_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
8032{
8033 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
8034}
8035
8036static __inline__ __m128i __DEFAULT_FN_ATTRS
8037_mm256_cvtepi32_epi16 (__m256i __A)
8038{
8039 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
8040 (__v8hi)_mm_setzero_si128 (),
8041 (__mmask8) -1);
8042}
8043
8044static __inline__ __m128i __DEFAULT_FN_ATTRS
8045_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
8046{
8047 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
8048 (__v8hi) __O, __M);
8049}
8050
8051static __inline__ __m128i __DEFAULT_FN_ATTRS
8052_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
8053{
8054 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
8055 (__v8hi) _mm_setzero_si128 (),
8056 __M);
8057}
8058
8059static __inline__ void __DEFAULT_FN_ATTRS
8060_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
8061{
8062 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
8063}
8064
8065static __inline__ __m128i __DEFAULT_FN_ATTRS
8066_mm_cvtepi64_epi8 (__m128i __A)
8067{
8068 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
8069 (__v16qi) _mm_undefined_si128(),
8070 (__mmask8) -1);
8071}
8072
8073static __inline__ __m128i __DEFAULT_FN_ATTRS
8074_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
8075{
8076 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
8077 (__v16qi) __O, __M);
8078}
8079
8080static __inline__ __m128i __DEFAULT_FN_ATTRS
8081_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
8082{
8083 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
8084 (__v16qi) _mm_setzero_si128 (),
8085 __M);
8086}
8087
8088static __inline__ void __DEFAULT_FN_ATTRS
8089_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
8090{
8091 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
8092}
8093
8094static __inline__ __m128i __DEFAULT_FN_ATTRS
8095_mm256_cvtepi64_epi8 (__m256i __A)
8096{
8097 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
8098 (__v16qi) _mm_undefined_si128(),
8099 (__mmask8) -1);
8100}
8101
8102static __inline__ __m128i __DEFAULT_FN_ATTRS
8103_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
8104{
8105 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
8106 (__v16qi) __O, __M);
8107}
8108
8109static __inline__ __m128i __DEFAULT_FN_ATTRS
8110_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
8111{
8112 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
8113 (__v16qi) _mm_setzero_si128 (),
8114 __M);
8115}
8116
8117static __inline__ void __DEFAULT_FN_ATTRS
8118_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
8119{
8120 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
8121}
8122
8123static __inline__ __m128i __DEFAULT_FN_ATTRS
8124_mm_cvtepi64_epi32 (__m128i __A)
8125{
8126 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
8127 (__v4si)_mm_undefined_si128(),
8128 (__mmask8) -1);
8129}
8130
8131static __inline__ __m128i __DEFAULT_FN_ATTRS
8132_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
8133{
8134 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
8135 (__v4si) __O, __M);
8136}
8137
8138static __inline__ __m128i __DEFAULT_FN_ATTRS
8139_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
8140{
8141 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
8142 (__v4si) _mm_setzero_si128 (),
8143 __M);
8144}
8145
8146static __inline__ void __DEFAULT_FN_ATTRS
8147_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
8148{
8149 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
8150}
8151
8152static __inline__ __m128i __DEFAULT_FN_ATTRS
8153_mm256_cvtepi64_epi32 (__m256i __A)
8154{
8155 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
8156 (__v4si) _mm_undefined_si128(),
8157 (__mmask8) -1);
8158}
8159
8160static __inline__ __m128i __DEFAULT_FN_ATTRS
8161_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
8162{
8163 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
8164 (__v4si) __O, __M);
8165}
8166
8167static __inline__ __m128i __DEFAULT_FN_ATTRS
8168_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
8169{
8170 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
8171 (__v4si) _mm_setzero_si128 (),
8172 __M);
8173}
8174
8175static __inline__ void __DEFAULT_FN_ATTRS
8176_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
8177{
8178 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
8179}
8180
8181static __inline__ __m128i __DEFAULT_FN_ATTRS
8182_mm_cvtepi64_epi16 (__m128i __A)
8183{
8184 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
8185 (__v8hi) _mm_undefined_si128(),
8186 (__mmask8) -1);
8187}
8188
8189static __inline__ __m128i __DEFAULT_FN_ATTRS
8190_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
8191{
8192 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
8193 (__v8hi)__O,
8194 __M);
8195}
8196
8197static __inline__ __m128i __DEFAULT_FN_ATTRS
8198_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
8199{
8200 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
8201 (__v8hi) _mm_setzero_si128 (),
8202 __M);
8203}
8204
8205static __inline__ void __DEFAULT_FN_ATTRS
8206_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
8207{
8208 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
8209}
8210
8211static __inline__ __m128i __DEFAULT_FN_ATTRS
8212_mm256_cvtepi64_epi16 (__m256i __A)
8213{
8214 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
8215 (__v8hi)_mm_undefined_si128(),
8216 (__mmask8) -1);
8217}
8218
8219static __inline__ __m128i __DEFAULT_FN_ATTRS
8220_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
8221{
8222 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
8223 (__v8hi) __O, __M);
8224}
8225
8226static __inline__ __m128i __DEFAULT_FN_ATTRS
8227_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
8228{
8229 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
8230 (__v8hi) _mm_setzero_si128 (),
8231 __M);
8232}
8233
8234static __inline__ void __DEFAULT_FN_ATTRS
8235_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
8236{
8237 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
8238}
8239
Craig Topperd2661882016-05-17 04:41:48 +00008240#define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00008241 (__m128)__builtin_shufflevector((__v8sf)(__m256)(A), \
8242 (__v8sf)_mm256_undefined_ps(), \
8243 ((imm) & 1) ? 4 : 0, \
8244 ((imm) & 1) ? 5 : 1, \
8245 ((imm) & 1) ? 6 : 2, \
8246 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008247
Craig Topperd2661882016-05-17 04:41:48 +00008248#define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00008249 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
8250 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
8251 (__v4sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008252
Craig Topperd2661882016-05-17 04:41:48 +00008253#define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00008254 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
8255 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
8256 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008257
Craig Topperd2661882016-05-17 04:41:48 +00008258#define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00008259 (__m128i)__builtin_shufflevector((__v8si)(__m256)(A), \
8260 (__v8si)_mm256_undefined_si256(), \
8261 ((imm) & 1) ? 4 : 0, \
8262 ((imm) & 1) ? 5 : 1, \
8263 ((imm) & 1) ? 6 : 2, \
8264 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008265
Craig Topperd2661882016-05-17 04:41:48 +00008266#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00008267 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00008268 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
8269 (__v4si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008270
Craig Topperd2661882016-05-17 04:41:48 +00008271#define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00008272 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00008273 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
8274 (__v4si)_mm_setzero_si128()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008275
Craig Topperd2661882016-05-17 04:41:48 +00008276#define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00008277 (__m256)__builtin_shufflevector((__v8sf)(A), \
8278 (__v8sf)_mm256_castps128_ps256((__m128)(B)), \
8279 ((imm) & 0x1) ? 0 : 8, \
8280 ((imm) & 0x1) ? 1 : 9, \
8281 ((imm) & 0x1) ? 2 : 10, \
8282 ((imm) & 0x1) ? 3 : 11, \
8283 ((imm) & 0x1) ? 8 : 4, \
8284 ((imm) & 0x1) ? 9 : 5, \
8285 ((imm) & 0x1) ? 10 : 6, \
8286 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008287
Craig Topperd2661882016-05-17 04:41:48 +00008288#define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00008289 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
8290 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
8291 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008292
Craig Topperd2661882016-05-17 04:41:48 +00008293#define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00008294 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
8295 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
8296 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008297
Craig Topperd2661882016-05-17 04:41:48 +00008298#define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00008299 (__m256i)__builtin_shufflevector((__v8si)(A), \
8300 (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
8301 ((imm) & 0x1) ? 0 : 8, \
8302 ((imm) & 0x1) ? 1 : 9, \
8303 ((imm) & 0x1) ? 2 : 10, \
8304 ((imm) & 0x1) ? 3 : 11, \
8305 ((imm) & 0x1) ? 8 : 4, \
8306 ((imm) & 0x1) ? 9 : 5, \
8307 ((imm) & 0x1) ? 10 : 6, \
8308 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008309
Craig Topperd2661882016-05-17 04:41:48 +00008310#define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00008311 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8312 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
8313 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008314
Craig Topperd2661882016-05-17 04:41:48 +00008315#define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00008316 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8317 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
8318 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00008319
Craig Topperd2661882016-05-17 04:41:48 +00008320#define _mm_getmant_pd(A, B, C) __extension__({\
8321 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
8322 (int)(((C)<<2) | (B)), \
8323 (__v2df)_mm_setzero_pd(), \
8324 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008325
Craig Topperd2661882016-05-17 04:41:48 +00008326#define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
8327 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
8328 (int)(((C)<<2) | (B)), \
8329 (__v2df)(__m128d)(W), \
8330 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008331
Craig Topperd2661882016-05-17 04:41:48 +00008332#define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
8333 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
8334 (int)(((C)<<2) | (B)), \
8335 (__v2df)_mm_setzero_pd(), \
8336 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008337
Craig Topperd2661882016-05-17 04:41:48 +00008338#define _mm256_getmant_pd(A, B, C) __extension__ ({ \
8339 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
8340 (int)(((C)<<2) | (B)), \
8341 (__v4df)_mm256_setzero_pd(), \
8342 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008343
Craig Topperd2661882016-05-17 04:41:48 +00008344#define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
8345 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
8346 (int)(((C)<<2) | (B)), \
8347 (__v4df)(__m256d)(W), \
8348 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008349
Craig Topperd2661882016-05-17 04:41:48 +00008350#define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
8351 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
8352 (int)(((C)<<2) | (B)), \
8353 (__v4df)_mm256_setzero_pd(), \
8354 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008355
Craig Topperd2661882016-05-17 04:41:48 +00008356#define _mm_getmant_ps(A, B, C) __extension__ ({ \
8357 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
8358 (int)(((C)<<2) | (B)), \
8359 (__v4sf)_mm_setzero_ps(), \
8360 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008361
Craig Topperd2661882016-05-17 04:41:48 +00008362#define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8363 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
8364 (int)(((C)<<2) | (B)), \
8365 (__v4sf)(__m128)(W), \
8366 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008367
Craig Topperd2661882016-05-17 04:41:48 +00008368#define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8369 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
8370 (int)(((C)<<2) | (B)), \
8371 (__v4sf)_mm_setzero_ps(), \
8372 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008373
Craig Topperd2661882016-05-17 04:41:48 +00008374#define _mm256_getmant_ps(A, B, C) __extension__ ({ \
8375 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
8376 (int)(((C)<<2) | (B)), \
8377 (__v8sf)_mm256_setzero_ps(), \
8378 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008379
Craig Topperd2661882016-05-17 04:41:48 +00008380#define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8381 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
8382 (int)(((C)<<2) | (B)), \
8383 (__v8sf)(__m256)(W), \
8384 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008385
Craig Topperd2661882016-05-17 04:41:48 +00008386#define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8387 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
8388 (int)(((C)<<2) | (B)), \
8389 (__v8sf)_mm256_setzero_ps(), \
8390 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00008391
Craig Topperd2661882016-05-17 04:41:48 +00008392#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8393 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
8394 (double const *)(addr), \
8395 (__v2di)(__m128i)(index), \
8396 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008397
Craig Topperd2661882016-05-17 04:41:48 +00008398#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8399 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
8400 (long long const *)(addr), \
8401 (__v2di)(__m128i)(index), \
8402 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008403
Craig Topperd2661882016-05-17 04:41:48 +00008404#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8405 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
8406 (double const *)(addr), \
8407 (__v4di)(__m256i)(index), \
8408 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008409
Craig Topperd2661882016-05-17 04:41:48 +00008410#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8411 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
8412 (long long const *)(addr), \
8413 (__v4di)(__m256i)(index), \
8414 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008415
Craig Topperd2661882016-05-17 04:41:48 +00008416#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8417 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
8418 (float const *)(addr), \
8419 (__v2di)(__m128i)(index), \
8420 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008421
Craig Topperd2661882016-05-17 04:41:48 +00008422#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8423 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
8424 (int const *)(addr), \
8425 (__v2di)(__m128i)(index), \
8426 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008427
Craig Topperd2661882016-05-17 04:41:48 +00008428#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8429 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
8430 (float const *)(addr), \
8431 (__v4di)(__m256i)(index), \
8432 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008433
Craig Topperd2661882016-05-17 04:41:48 +00008434#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8435 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
8436 (int const *)(addr), \
8437 (__v4di)(__m256i)(index), \
8438 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008439
Craig Topperd2661882016-05-17 04:41:48 +00008440#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8441 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
8442 (double const *)(addr), \
8443 (__v4si)(__m128i)(index), \
8444 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008445
Craig Topperd2661882016-05-17 04:41:48 +00008446#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8447 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
8448 (long long const *)(addr), \
8449 (__v4si)(__m128i)(index), \
8450 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008451
Craig Topperd2661882016-05-17 04:41:48 +00008452#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8453 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
8454 (double const *)(addr), \
8455 (__v4si)(__m128i)(index), \
8456 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008457
Craig Topperd2661882016-05-17 04:41:48 +00008458#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8459 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
8460 (long long const *)(addr), \
8461 (__v4si)(__m128i)(index), \
8462 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008463
Craig Topperd2661882016-05-17 04:41:48 +00008464#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8465 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
8466 (float const *)(addr), \
8467 (__v4si)(__m128i)(index), \
8468 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008469
Craig Topperd2661882016-05-17 04:41:48 +00008470#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8471 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
8472 (int const *)(addr), \
8473 (__v4si)(__m128i)(index), \
8474 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008475
Craig Topperd2661882016-05-17 04:41:48 +00008476#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8477 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
8478 (float const *)(addr), \
8479 (__v8si)(__m256i)(index), \
8480 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008481
Craig Topperd2661882016-05-17 04:41:48 +00008482#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8483 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
8484 (int const *)(addr), \
8485 (__v8si)(__m256i)(index), \
8486 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008487
Simon Pilgrim30db8112016-07-04 13:34:44 +00008488#define _mm256_permutex_pd(X, C) __extension__ ({ \
8489 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
8490 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008491 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8492 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008493
Simon Pilgrim30db8112016-07-04 13:34:44 +00008494#define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
8495 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8496 (__v4df)_mm256_permutex_pd((X), (C)), \
8497 (__v4df)(__m256d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008498
Simon Pilgrim30db8112016-07-04 13:34:44 +00008499#define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
8500 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8501 (__v4df)_mm256_permutex_pd((X), (C)), \
8502 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008503
Simon Pilgrim30db8112016-07-04 13:34:44 +00008504#define _mm256_permutex_epi64(X, C) __extension__ ({ \
8505 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
8506 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008507 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8508 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008509
Simon Pilgrim30db8112016-07-04 13:34:44 +00008510#define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
8511 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8512 (__v4di)_mm256_permutex_epi64((X), (C)), \
8513 (__v4di)(__m256i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008514
Simon Pilgrim30db8112016-07-04 13:34:44 +00008515#define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
8516 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8517 (__v4di)_mm256_permutex_epi64((X), (C)), \
8518 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008519
8520static __inline__ __m256d __DEFAULT_FN_ATTRS
8521_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
8522{
8523 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8524 (__v4di) __X,
8525 (__v4df) _mm256_undefined_si256 (),
8526 (__mmask8) -1);
8527}
8528
8529static __inline__ __m256d __DEFAULT_FN_ATTRS
8530_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
8531 __m256d __Y)
8532{
8533 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8534 (__v4di) __X,
8535 (__v4df) __W,
8536 (__mmask8) __U);
8537}
8538
8539static __inline__ __m256d __DEFAULT_FN_ATTRS
8540_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
8541{
8542 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8543 (__v4di) __X,
8544 (__v4df) _mm256_setzero_pd (),
8545 (__mmask8) __U);
8546}
8547
8548static __inline__ __m256i __DEFAULT_FN_ATTRS
8549_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
8550{
8551 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8552 (__v4di) __X,
8553 (__v4di) _mm256_setzero_si256 (),
8554 (__mmask8) __M);
8555}
8556
8557static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00008558_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008559{
8560 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8561 (__v4di) __X,
8562 (__v4di) _mm256_undefined_si256 (),
8563 (__mmask8) -1);
8564}
8565
8566static __inline__ __m256i __DEFAULT_FN_ATTRS
8567_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
8568 __m256i __Y)
8569{
8570 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8571 (__v4di) __X,
8572 (__v4di) __W,
8573 __M);
8574}
8575
8576static __inline__ __m256 __DEFAULT_FN_ATTRS
8577_mm256_mask_permutexvar_ps (__m256 __W, __mmask8 __U, __m256i __X,
8578 __m256 __Y)
8579{
8580 return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8581 (__v8si) __X,
8582 (__v8sf) __W,
8583 (__mmask8) __U);
8584}
8585
8586static __inline__ __m256 __DEFAULT_FN_ATTRS
8587_mm256_maskz_permutexvar_ps (__mmask8 __U, __m256i __X, __m256 __Y)
8588{
8589 return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8590 (__v8si) __X,
8591 (__v8sf) _mm256_setzero_ps (),
8592 (__mmask8) __U);
8593}
8594
8595static __inline__ __m256 __DEFAULT_FN_ATTRS
8596_mm256_permutexvar_ps (__m256i __X, __m256 __Y)
8597{
8598 return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8599 (__v8si) __X,
8600 (__v8sf) _mm256_undefined_si256 (),
8601 (__mmask8) -1);
8602}
8603
8604static __inline__ __m256i __DEFAULT_FN_ATTRS
8605_mm256_maskz_permutexvar_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
8606{
8607 return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8608 (__v8si) __X,
8609 (__v8si) _mm256_setzero_si256 (),
8610 __M);
8611}
8612
8613static __inline__ __m256i __DEFAULT_FN_ATTRS
8614_mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
8615 __m256i __Y)
8616{
8617 return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8618 (__v8si) __X,
8619 (__v8si) __W,
8620 (__mmask8) __M);
8621}
8622
8623static __inline__ __m256i __DEFAULT_FN_ATTRS
8624_mm256_permutexvar_epi32 (__m256i __X, __m256i __Y)
8625{
8626 return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8627 (__v8si) __X,
8628 (__v8si) _mm256_undefined_si256(),
8629 (__mmask8) -1);
8630}
8631
Craig Topperd2661882016-05-17 04:41:48 +00008632#define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008633 (__m128i)__builtin_shufflevector((__v4si)(__m128i)(B), \
8634 (__v4si)(__m128i)(A), \
8635 ((int)(imm) & 0x3) + 0, \
8636 ((int)(imm) & 0x3) + 1, \
8637 ((int)(imm) & 0x3) + 2, \
8638 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008639
Craig Topperd2661882016-05-17 04:41:48 +00008640#define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008641 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8642 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8643 (__v4si)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008644
Craig Topperd2661882016-05-17 04:41:48 +00008645#define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008646 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8647 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8648 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008649
Craig Topperd2661882016-05-17 04:41:48 +00008650#define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008651 (__m256i)__builtin_shufflevector((__v8si)(__m256i)(B), \
8652 (__v8si)(__m256i)(A), \
8653 ((int)(imm) & 0x7) + 0, \
8654 ((int)(imm) & 0x7) + 1, \
8655 ((int)(imm) & 0x7) + 2, \
8656 ((int)(imm) & 0x7) + 3, \
8657 ((int)(imm) & 0x7) + 4, \
8658 ((int)(imm) & 0x7) + 5, \
8659 ((int)(imm) & 0x7) + 6, \
8660 ((int)(imm) & 0x7) + 7); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008661
Craig Topperd2661882016-05-17 04:41:48 +00008662#define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008663 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8664 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8665 (__v8si)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008666
Craig Topperd2661882016-05-17 04:41:48 +00008667#define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008668 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8669 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8670 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008671
Craig Topperd2661882016-05-17 04:41:48 +00008672#define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008673 (__m128i)__builtin_shufflevector((__v2di)(__m128i)(B), \
8674 (__v2di)(__m128i)(A), \
8675 ((int)(imm) & 0x1) + 0, \
8676 ((int)(imm) & 0x1) + 1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008677
Craig Topperd2661882016-05-17 04:41:48 +00008678#define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008679 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8680 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8681 (__v2di)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008682
Craig Topperd2661882016-05-17 04:41:48 +00008683#define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008684 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8685 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8686 (__v2di)_mm_setzero_di()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008687
Craig Topperd2661882016-05-17 04:41:48 +00008688#define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008689 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(B), \
8690 (__v4di)(__m256i)(A), \
8691 ((int)(imm) & 0x3) + 0, \
8692 ((int)(imm) & 0x3) + 1, \
8693 ((int)(imm) & 0x3) + 2, \
8694 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008695
Craig Topperd2661882016-05-17 04:41:48 +00008696#define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008697 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8698 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8699 (__v4di)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008700
Craig Topperd2661882016-05-17 04:41:48 +00008701#define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008702 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8703 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8704 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008705
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008706static __inline__ __m128 __DEFAULT_FN_ATTRS
8707_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8708{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008709 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8710 (__v4sf)_mm_movehdup_ps(__A),
8711 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008712}
8713
8714static __inline__ __m128 __DEFAULT_FN_ATTRS
8715_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8716{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008717 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8718 (__v4sf)_mm_movehdup_ps(__A),
8719 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008720}
8721
8722static __inline__ __m256 __DEFAULT_FN_ATTRS
8723_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8724{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008725 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8726 (__v8sf)_mm256_movehdup_ps(__A),
8727 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008728}
8729
8730static __inline__ __m256 __DEFAULT_FN_ATTRS
8731_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8732{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008733 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8734 (__v8sf)_mm256_movehdup_ps(__A),
8735 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008736}
8737
8738static __inline__ __m128 __DEFAULT_FN_ATTRS
8739_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8740{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008741 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8742 (__v4sf)_mm_moveldup_ps(__A),
8743 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008744}
8745
8746static __inline__ __m128 __DEFAULT_FN_ATTRS
8747_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8748{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008749 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8750 (__v4sf)_mm_moveldup_ps(__A),
8751 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008752}
8753
8754static __inline__ __m256 __DEFAULT_FN_ATTRS
8755_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8756{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008757 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8758 (__v8sf)_mm256_moveldup_ps(__A),
8759 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008760}
8761
8762static __inline__ __m256 __DEFAULT_FN_ATTRS
8763_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8764{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008765 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8766 (__v8sf)_mm256_moveldup_ps(__A),
8767 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008768}
8769
Craig Topperd2661882016-05-17 04:41:48 +00008770#define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008771 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8772 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8773 (__v8si)(__m256i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008774
Craig Topperd2661882016-05-17 04:41:48 +00008775#define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008776 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8777 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8778 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008779
Craig Topperd2661882016-05-17 04:41:48 +00008780#define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008781 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8782 (__v4si)_mm_shuffle_epi32((A), (I)), \
8783 (__v4si)(__m128i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008784
Craig Topperd2661882016-05-17 04:41:48 +00008785#define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008786 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8787 (__v4si)_mm_shuffle_epi32((A), (I)), \
8788 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008789
8790static __inline__ __m128d __DEFAULT_FN_ATTRS
8791_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8792{
Igor Bregeraadb8762016-06-08 13:59:20 +00008793 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8794 (__v2df) __A,
8795 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008796}
8797
8798static __inline__ __m128d __DEFAULT_FN_ATTRS
8799_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8800{
Igor Bregeraadb8762016-06-08 13:59:20 +00008801 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8802 (__v2df) __A,
8803 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008804}
8805
8806static __inline__ __m256d __DEFAULT_FN_ATTRS
8807_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8808{
Igor Bregeraadb8762016-06-08 13:59:20 +00008809 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8810 (__v4df) __A,
8811 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008812}
8813
8814static __inline__ __m256d __DEFAULT_FN_ATTRS
8815_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8816{
Igor Bregeraadb8762016-06-08 13:59:20 +00008817 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8818 (__v4df) __A,
8819 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008820}
8821
8822static __inline__ __m128 __DEFAULT_FN_ATTRS
8823_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8824{
Igor Bregeraadb8762016-06-08 13:59:20 +00008825 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8826 (__v4sf) __A,
8827 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008828}
8829
8830static __inline__ __m128 __DEFAULT_FN_ATTRS
8831_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8832{
Igor Bregeraadb8762016-06-08 13:59:20 +00008833 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8834 (__v4sf) __A,
8835 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008836}
8837
8838static __inline__ __m256 __DEFAULT_FN_ATTRS
8839_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8840{
Igor Bregeraadb8762016-06-08 13:59:20 +00008841 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8842 (__v8sf) __A,
8843 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008844}
8845
8846static __inline__ __m256 __DEFAULT_FN_ATTRS
8847_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8848{
Igor Bregeraadb8762016-06-08 13:59:20 +00008849 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8850 (__v8sf) __A,
8851 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008852}
8853
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008854static __inline__ __m128 __DEFAULT_FN_ATTRS
8855_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8856{
8857 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8858 (__v4sf) __W,
8859 (__mmask8) __U);
8860}
8861
8862static __inline__ __m128 __DEFAULT_FN_ATTRS
8863_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8864{
8865 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8866 (__v4sf)
8867 _mm_setzero_ps (),
8868 (__mmask8) __U);
8869}
8870
8871static __inline__ __m256 __DEFAULT_FN_ATTRS
8872_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8873{
8874 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8875 (__v8sf) __W,
8876 (__mmask8) __U);
8877}
8878
8879static __inline__ __m256 __DEFAULT_FN_ATTRS
8880_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8881{
8882 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8883 (__v8sf)
8884 _mm256_setzero_ps (),
8885 (__mmask8) __U);
8886}
8887
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008888static __inline __m128i __DEFAULT_FN_ATTRS
8889_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8890{
8891 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8892 (__v8hi) __W,
8893 (__mmask8) __U);
8894}
8895
8896static __inline __m128i __DEFAULT_FN_ATTRS
8897_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8898{
8899 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8900 (__v8hi) _mm_setzero_si128 (),
8901 (__mmask8) __U);
8902}
8903
8904#define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008905 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8906 (__v8hi)(__m128i)(W), \
8907 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008908
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008909#define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008910 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8911 (__v8hi)_mm_setzero_si128(), \
8912 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008913
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008914static __inline __m128i __DEFAULT_FN_ATTRS
8915_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8916{
8917 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8918 (__v8hi) __W,
8919 (__mmask8) __U);
8920}
8921
8922static __inline __m128i __DEFAULT_FN_ATTRS
8923_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8924{
8925 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8926 (__v8hi) _mm_setzero_si128(),
8927 (__mmask8) __U);
8928}
8929#define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008930 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8931 (__v8hi)(__m128i)(W), \
8932 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008933
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008934#define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008935 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8936 (__v8hi)_mm_setzero_si128(), \
8937 (__mmask8)(U)); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008938
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008939
Michael Kupersteine45af542015-06-30 13:36:19 +00008940#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008941
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008942#endif /* __AVX512VLINTRIN_H */