blob: 23bc89a65d780ee5a08c08718f214bbc331f1406 [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
Robert Khasanovb9f3a912014-10-08 17:18:13 +000033/* Integer compare */
34
Craig Topper57f96ac2017-11-06 21:00:49 +000035#define _mm_cmpeq_epi32_mask(A, B) \
36 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
37#define _mm_mask_cmpeq_epi32_mask(k, A, B) \
38 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
39#define _mm_cmpge_epi32_mask(A, B) \
40 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
41#define _mm_mask_cmpge_epi32_mask(k, A, B) \
42 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
43#define _mm_cmpgt_epi32_mask(A, B) \
44 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
45#define _mm_mask_cmpgt_epi32_mask(k, A, B) \
46 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
47#define _mm_cmple_epi32_mask(A, B) \
48 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
49#define _mm_mask_cmple_epi32_mask(k, A, B) \
50 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
51#define _mm_cmplt_epi32_mask(A, B) \
52 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
53#define _mm_mask_cmplt_epi32_mask(k, A, B) \
54 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
55#define _mm_cmpneq_epi32_mask(A, B) \
56 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
57#define _mm_mask_cmpneq_epi32_mask(k, A, B) \
58 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000059
Craig Topper57f96ac2017-11-06 21:00:49 +000060#define _mm256_cmpeq_epi32_mask(A, B) \
61 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
62#define _mm256_mask_cmpeq_epi32_mask(k, A, B) \
63 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
64#define _mm256_cmpge_epi32_mask(A, B) \
65 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
66#define _mm256_mask_cmpge_epi32_mask(k, A, B) \
67 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
68#define _mm256_cmpgt_epi32_mask(A, B) \
69 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
70#define _mm256_mask_cmpgt_epi32_mask(k, A, B) \
71 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
72#define _mm256_cmple_epi32_mask(A, B) \
73 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
74#define _mm256_mask_cmple_epi32_mask(k, A, B) \
75 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
76#define _mm256_cmplt_epi32_mask(A, B) \
77 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
78#define _mm256_mask_cmplt_epi32_mask(k, A, B) \
79 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
80#define _mm256_cmpneq_epi32_mask(A, B) \
81 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
82#define _mm256_mask_cmpneq_epi32_mask(k, A, B) \
83 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000084
Craig Topper57f96ac2017-11-06 21:00:49 +000085#define _mm_cmpeq_epu32_mask(A, B) \
86 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
87#define _mm_mask_cmpeq_epu32_mask(k, A, B) \
88 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
89#define _mm_cmpge_epu32_mask(A, B) \
90 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
91#define _mm_mask_cmpge_epu32_mask(k, A, B) \
92 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
93#define _mm_cmpgt_epu32_mask(A, B) \
94 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
95#define _mm_mask_cmpgt_epu32_mask(k, A, B) \
96 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
97#define _mm_cmple_epu32_mask(A, B) \
98 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
99#define _mm_mask_cmple_epu32_mask(k, A, B) \
100 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
101#define _mm_cmplt_epu32_mask(A, B) \
102 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
103#define _mm_mask_cmplt_epu32_mask(k, A, B) \
104 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
105#define _mm_cmpneq_epu32_mask(A, B) \
106 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
107#define _mm_mask_cmpneq_epu32_mask(k, A, B) \
108 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000109
Craig Topper57f96ac2017-11-06 21:00:49 +0000110#define _mm256_cmpeq_epu32_mask(A, B) \
111 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
112#define _mm256_mask_cmpeq_epu32_mask(k, A, B) \
113 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
114#define _mm256_cmpge_epu32_mask(A, B) \
115 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
116#define _mm256_mask_cmpge_epu32_mask(k, A, B) \
117 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
118#define _mm256_cmpgt_epu32_mask(A, B) \
119 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
120#define _mm256_mask_cmpgt_epu32_mask(k, A, B) \
121 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
122#define _mm256_cmple_epu32_mask(A, B) \
123 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
124#define _mm256_mask_cmple_epu32_mask(k, A, B) \
125 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
126#define _mm256_cmplt_epu32_mask(A, B) \
127 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
128#define _mm256_mask_cmplt_epu32_mask(k, A, B) \
129 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
130#define _mm256_cmpneq_epu32_mask(A, B) \
131 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
132#define _mm256_mask_cmpneq_epu32_mask(k, A, B) \
133 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000134
Craig Topper57f96ac2017-11-06 21:00:49 +0000135#define _mm_cmpeq_epi64_mask(A, B) \
136 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
137#define _mm_mask_cmpeq_epi64_mask(k, A, B) \
138 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
139#define _mm_cmpge_epi64_mask(A, B) \
140 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
141#define _mm_mask_cmpge_epi64_mask(k, A, B) \
142 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
143#define _mm_cmpgt_epi64_mask(A, B) \
144 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
145#define _mm_mask_cmpgt_epi64_mask(k, A, B) \
146 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
147#define _mm_cmple_epi64_mask(A, B) \
148 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
149#define _mm_mask_cmple_epi64_mask(k, A, B) \
150 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
151#define _mm_cmplt_epi64_mask(A, B) \
152 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
153#define _mm_mask_cmplt_epi64_mask(k, A, B) \
154 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
155#define _mm_cmpneq_epi64_mask(A, B) \
156 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
157#define _mm_mask_cmpneq_epi64_mask(k, A, B) \
158 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000159
Craig Topper57f96ac2017-11-06 21:00:49 +0000160#define _mm256_cmpeq_epi64_mask(A, B) \
161 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
162#define _mm256_mask_cmpeq_epi64_mask(k, A, B) \
163 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
164#define _mm256_cmpge_epi64_mask(A, B) \
165 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
166#define _mm256_mask_cmpge_epi64_mask(k, A, B) \
167 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
168#define _mm256_cmpgt_epi64_mask(A, B) \
169 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
170#define _mm256_mask_cmpgt_epi64_mask(k, A, B) \
171 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
172#define _mm256_cmple_epi64_mask(A, B) \
173 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
174#define _mm256_mask_cmple_epi64_mask(k, A, B) \
175 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
176#define _mm256_cmplt_epi64_mask(A, B) \
177 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
178#define _mm256_mask_cmplt_epi64_mask(k, A, B) \
179 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
180#define _mm256_cmpneq_epi64_mask(A, B) \
181 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
182#define _mm256_mask_cmpneq_epi64_mask(k, A, B) \
183 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000184
Craig Topper57f96ac2017-11-06 21:00:49 +0000185#define _mm_cmpeq_epu64_mask(A, B) \
186 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
187#define _mm_mask_cmpeq_epu64_mask(k, A, B) \
188 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
189#define _mm_cmpge_epu64_mask(A, B) \
190 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
191#define _mm_mask_cmpge_epu64_mask(k, A, B) \
192 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
193#define _mm_cmpgt_epu64_mask(A, B) \
194 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
195#define _mm_mask_cmpgt_epu64_mask(k, A, B) \
196 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
197#define _mm_cmple_epu64_mask(A, B) \
198 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
199#define _mm_mask_cmple_epu64_mask(k, A, B) \
200 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
201#define _mm_cmplt_epu64_mask(A, B) \
202 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
203#define _mm_mask_cmplt_epu64_mask(k, A, B) \
204 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
205#define _mm_cmpneq_epu64_mask(A, B) \
206 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
207#define _mm_mask_cmpneq_epu64_mask(k, A, B) \
208 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000209
Craig Topper57f96ac2017-11-06 21:00:49 +0000210#define _mm256_cmpeq_epu64_mask(A, B) \
211 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
212#define _mm256_mask_cmpeq_epu64_mask(k, A, B) \
213 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
214#define _mm256_cmpge_epu64_mask(A, B) \
215 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
216#define _mm256_mask_cmpge_epu64_mask(k, A, B) \
217 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
218#define _mm256_cmpgt_epu64_mask(A, B) \
219 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
220#define _mm256_mask_cmpgt_epu64_mask(k, A, B) \
221 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
222#define _mm256_cmple_epu64_mask(A, B) \
223 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
224#define _mm256_mask_cmple_epu64_mask(k, A, B) \
225 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
226#define _mm256_cmplt_epu64_mask(A, B) \
227 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
228#define _mm256_mask_cmplt_epu64_mask(k, A, B) \
229 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
230#define _mm256_cmpneq_epu64_mask(A, B) \
231 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
232#define _mm256_mask_cmpneq_epu64_mask(k, A, B) \
233 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000234
Michael Kupersteine45af542015-06-30 13:36:19 +0000235static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000236_mm256_mask_add_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000237{
Craig Topper0e189762016-09-03 18:29:35 +0000238 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
239 (__v8si)_mm256_add_epi32(__A, __B),
240 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000241}
242
Michael Kupersteine45af542015-06-30 13:36:19 +0000243static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000244_mm256_maskz_add_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000245{
Craig Topper0e189762016-09-03 18:29:35 +0000246 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
247 (__v8si)_mm256_add_epi32(__A, __B),
248 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000249}
250
Michael Kupersteine45af542015-06-30 13:36:19 +0000251static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000252_mm256_mask_add_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000253{
Craig Topper0e189762016-09-03 18:29:35 +0000254 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
255 (__v4di)_mm256_add_epi64(__A, __B),
256 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000257}
258
Michael Kupersteine45af542015-06-30 13:36:19 +0000259static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000260_mm256_maskz_add_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000261{
Craig Topper0e189762016-09-03 18:29:35 +0000262 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
263 (__v4di)_mm256_add_epi64(__A, __B),
264 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000265}
266
Michael Kupersteine45af542015-06-30 13:36:19 +0000267static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000268_mm256_mask_sub_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000269{
Craig Topper0e189762016-09-03 18:29:35 +0000270 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
271 (__v8si)_mm256_sub_epi32(__A, __B),
272 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000273}
274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000276_mm256_maskz_sub_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000277{
Craig Topper0e189762016-09-03 18:29:35 +0000278 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
279 (__v8si)_mm256_sub_epi32(__A, __B),
280 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000281}
282
Michael Kupersteine45af542015-06-30 13:36:19 +0000283static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000284_mm256_mask_sub_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000285{
Craig Topper0e189762016-09-03 18:29:35 +0000286 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
287 (__v4di)_mm256_sub_epi64(__A, __B),
288 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000289}
290
Michael Kupersteine45af542015-06-30 13:36:19 +0000291static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000292_mm256_maskz_sub_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000293{
Craig Topper0e189762016-09-03 18:29:35 +0000294 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
295 (__v4di)_mm256_sub_epi64(__A, __B),
296 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000297}
298
Michael Kupersteine45af542015-06-30 13:36:19 +0000299static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000300_mm_mask_add_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000301{
Craig Topper0e189762016-09-03 18:29:35 +0000302 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
303 (__v4si)_mm_add_epi32(__A, __B),
304 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000305}
306
Michael Kupersteine45af542015-06-30 13:36:19 +0000307static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000308_mm_maskz_add_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000309{
Craig Topper0e189762016-09-03 18:29:35 +0000310 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
311 (__v4si)_mm_add_epi32(__A, __B),
312 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000313}
314
Michael Kupersteine45af542015-06-30 13:36:19 +0000315static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000316_mm_mask_add_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000317{
Craig Topper0e189762016-09-03 18:29:35 +0000318 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
319 (__v2di)_mm_add_epi64(__A, __B),
320 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000321}
322
Michael Kupersteine45af542015-06-30 13:36:19 +0000323static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000324_mm_maskz_add_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000325{
Craig Topper0e189762016-09-03 18:29:35 +0000326 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
327 (__v2di)_mm_add_epi64(__A, __B),
328 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000329}
330
Michael Kupersteine45af542015-06-30 13:36:19 +0000331static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000332_mm_mask_sub_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000333{
Craig Topper0e189762016-09-03 18:29:35 +0000334 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
335 (__v4si)_mm_sub_epi32(__A, __B),
336 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000337}
338
Michael Kupersteine45af542015-06-30 13:36:19 +0000339static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000340_mm_maskz_sub_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000341{
Craig Topper0e189762016-09-03 18:29:35 +0000342 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
343 (__v4si)_mm_sub_epi32(__A, __B),
344 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000345}
346
Michael Kupersteine45af542015-06-30 13:36:19 +0000347static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000348_mm_mask_sub_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000349{
Craig Topper0e189762016-09-03 18:29:35 +0000350 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
351 (__v2di)_mm_sub_epi64(__A, __B),
352 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000353}
354
Michael Kupersteine45af542015-06-30 13:36:19 +0000355static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000356_mm_maskz_sub_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000357{
Craig Topper0e189762016-09-03 18:29:35 +0000358 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
359 (__v2di)_mm_sub_epi64(__A, __B),
360 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000361}
362
Michael Kupersteine45af542015-06-30 13:36:19 +0000363static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000364_mm256_mask_mul_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000365{
Craig Topper09e94002016-10-29 19:02:07 +0000366 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
367 (__v4di)_mm256_mul_epi32(__X, __Y),
368 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000369}
370
Michael Kupersteine45af542015-06-30 13:36:19 +0000371static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000372_mm256_maskz_mul_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000373{
Craig Topper09e94002016-10-29 19:02:07 +0000374 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
375 (__v4di)_mm256_mul_epi32(__X, __Y),
376 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000377}
378
Michael Kupersteine45af542015-06-30 13:36:19 +0000379static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000380_mm_mask_mul_epi32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000381{
Craig Topper09e94002016-10-29 19:02:07 +0000382 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
383 (__v2di)_mm_mul_epi32(__X, __Y),
384 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000385}
386
Michael Kupersteine45af542015-06-30 13:36:19 +0000387static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000388_mm_maskz_mul_epi32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000389{
Craig Topper09e94002016-10-29 19:02:07 +0000390 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
391 (__v2di)_mm_mul_epi32(__X, __Y),
392 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000393}
394
Michael Kupersteine45af542015-06-30 13:36:19 +0000395static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000396_mm256_mask_mul_epu32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000397{
Craig Topper09e94002016-10-29 19:02:07 +0000398 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
399 (__v4di)_mm256_mul_epu32(__X, __Y),
400 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000401}
402
Michael Kupersteine45af542015-06-30 13:36:19 +0000403static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000404_mm256_maskz_mul_epu32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000405{
Craig Topper09e94002016-10-29 19:02:07 +0000406 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
407 (__v4di)_mm256_mul_epu32(__X, __Y),
408 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000409}
410
Michael Kupersteine45af542015-06-30 13:36:19 +0000411static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000412_mm_mask_mul_epu32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000413{
Craig Topper09e94002016-10-29 19:02:07 +0000414 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
415 (__v2di)_mm_mul_epu32(__X, __Y),
416 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000417}
418
Michael Kupersteine45af542015-06-30 13:36:19 +0000419static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000420_mm_maskz_mul_epu32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000421{
Craig Topper09e94002016-10-29 19:02:07 +0000422 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
423 (__v2di)_mm_mul_epu32(__X, __Y),
424 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000425}
426
Michael Kupersteine45af542015-06-30 13:36:19 +0000427static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000428_mm256_maskz_mullo_epi32(__mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000429{
Craig Topperf43e4a12016-09-03 19:19:49 +0000430 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
431 (__v8si)_mm256_mullo_epi32(__A, __B),
432 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000433}
434
Michael Kupersteine45af542015-06-30 13:36:19 +0000435static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000436_mm256_mask_mullo_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000437{
Craig Topperf43e4a12016-09-03 19:19:49 +0000438 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
439 (__v8si)_mm256_mullo_epi32(__A, __B),
440 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000441}
442
Michael Kupersteine45af542015-06-30 13:36:19 +0000443static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000444_mm_maskz_mullo_epi32(__mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000445{
Craig Topperf43e4a12016-09-03 19:19:49 +0000446 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
447 (__v4si)_mm_mullo_epi32(__A, __B),
448 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000449}
450
Michael Kupersteine45af542015-06-30 13:36:19 +0000451static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000452_mm_mask_mullo_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000453{
Craig Topperf43e4a12016-09-03 19:19:49 +0000454 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
455 (__v4si)_mm_mullo_epi32(__A, __B),
456 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000457}
458
Michael Kupersteine45af542015-06-30 13:36:19 +0000459static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000460_mm256_mask_and_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000461{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000462 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
463 (__v8si)_mm256_and_si256(__A, __B),
464 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000465}
466
Michael Kupersteine45af542015-06-30 13:36:19 +0000467static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000468_mm256_maskz_and_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000469{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000470 return (__m256i)_mm256_mask_and_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000474_mm_mask_and_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000475{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000476 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
477 (__v4si)_mm_and_si128(__A, __B),
478 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000479}
480
Michael Kupersteine45af542015-06-30 13:36:19 +0000481static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000482_mm_maskz_and_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000483{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000484 return (__m128i)_mm_mask_and_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000485}
486
Michael Kupersteine45af542015-06-30 13:36:19 +0000487static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000488_mm256_mask_andnot_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000489{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000490 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
491 (__v8si)_mm256_andnot_si256(__A, __B),
492 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000493}
494
Michael Kupersteine45af542015-06-30 13:36:19 +0000495static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000496_mm256_maskz_andnot_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000497{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000498 return (__m256i)_mm256_mask_andnot_epi32(_mm256_setzero_si256(),
499 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000500}
501
Michael Kupersteine45af542015-06-30 13:36:19 +0000502static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000503_mm_mask_andnot_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000504{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000505 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
506 (__v4si)_mm_andnot_si128(__A, __B),
507 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000508}
509
Michael Kupersteine45af542015-06-30 13:36:19 +0000510static __inline__ __m128i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000511_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
512{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000513 return (__m128i)_mm_mask_andnot_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000514}
515
Michael Kupersteine45af542015-06-30 13:36:19 +0000516static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000517_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000518{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000519 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
520 (__v8si)_mm256_or_si256(__A, __B),
521 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000522}
523
Michael Kupersteine45af542015-06-30 13:36:19 +0000524static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000525_mm256_maskz_or_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000526{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000527 return (__m256i)_mm256_mask_or_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000531_mm_mask_or_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000532{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000533 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
534 (__v4si)_mm_or_si128(__A, __B),
535 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000539_mm_maskz_or_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000540{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000541 return (__m128i)_mm_mask_or_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000542}
543
Michael Kupersteine45af542015-06-30 13:36:19 +0000544static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000545_mm256_mask_xor_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000546{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000547 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
548 (__v8si)_mm256_xor_si256(__A, __B),
549 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000550}
551
Michael Kupersteine45af542015-06-30 13:36:19 +0000552static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000553_mm256_maskz_xor_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000554{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000555 return (__m256i)_mm256_mask_xor_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000556}
557
Michael Kupersteine45af542015-06-30 13:36:19 +0000558static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000559_mm_mask_xor_epi32(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000560 __m128i __B)
561{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000562 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
563 (__v4si)_mm_xor_si128(__A, __B),
564 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000565}
566
Michael Kupersteine45af542015-06-30 13:36:19 +0000567static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000568_mm_maskz_xor_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000569{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000570 return (__m128i)_mm_mask_xor_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000571}
572
Michael Kupersteine45af542015-06-30 13:36:19 +0000573static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000574_mm256_mask_and_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000575{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000576 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
577 (__v4di)_mm256_and_si256(__A, __B),
578 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000579}
580
Michael Kupersteine45af542015-06-30 13:36:19 +0000581static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000582_mm256_maskz_and_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000583{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000584 return (__m256i)_mm256_mask_and_epi64(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000585}
586
Michael Kupersteine45af542015-06-30 13:36:19 +0000587static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000588_mm_mask_and_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
589{
590 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
591 (__v2di)_mm_and_si128(__A, __B),
592 (__v2di)__W);
593}
594
595static __inline__ __m128i __DEFAULT_FN_ATTRS
596_mm_maskz_and_epi64(__mmask8 __U, __m128i __A, __m128i __B)
597{
598 return (__m128i)_mm_mask_and_epi64(_mm_setzero_si128(), __U, __A, __B);
599}
600
601static __inline__ __m256i __DEFAULT_FN_ATTRS
602_mm256_mask_andnot_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
603{
604 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
605 (__v4di)_mm256_andnot_si256(__A, __B),
606 (__v4di)__W);
607}
608
609static __inline__ __m256i __DEFAULT_FN_ATTRS
610_mm256_maskz_andnot_epi64(__mmask8 __U, __m256i __A, __m256i __B)
611{
612 return (__m256i)_mm256_mask_andnot_epi64(_mm256_setzero_si256(),
613 __U, __A, __B);
614}
615
616static __inline__ __m128i __DEFAULT_FN_ATTRS
617_mm_mask_andnot_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
618{
619 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
620 (__v2di)_mm_andnot_si128(__A, __B),
621 (__v2di)__W);
622}
623
624static __inline__ __m128i __DEFAULT_FN_ATTRS
625_mm_maskz_andnot_epi64(__mmask8 __U, __m128i __A, __m128i __B)
626{
627 return (__m128i)_mm_mask_andnot_epi64(_mm_setzero_si128(), __U, __A, __B);
628}
629
630static __inline__ __m256i __DEFAULT_FN_ATTRS
631_mm256_mask_or_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
632{
633 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
634 (__v4di)_mm256_or_si256(__A, __B),
635 (__v4di)__W);
636}
637
638static __inline__ __m256i __DEFAULT_FN_ATTRS
639_mm256_maskz_or_epi64(__mmask8 __U, __m256i __A, __m256i __B)
640{
641 return (__m256i)_mm256_mask_or_epi64(_mm256_setzero_si256(), __U, __A, __B);
642}
643
644static __inline__ __m128i __DEFAULT_FN_ATTRS
645_mm_mask_or_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
646{
647 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
648 (__v2di)_mm_or_si128(__A, __B),
649 (__v2di)__W);
650}
651
652static __inline__ __m128i __DEFAULT_FN_ATTRS
653_mm_maskz_or_epi64(__mmask8 __U, __m128i __A, __m128i __B)
654{
655 return (__m128i)_mm_mask_or_epi64(_mm_setzero_si128(), __U, __A, __B);
656}
657
658static __inline__ __m256i __DEFAULT_FN_ATTRS
659_mm256_mask_xor_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
660{
661 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
662 (__v4di)_mm256_xor_si256(__A, __B),
663 (__v4di)__W);
664}
665
666static __inline__ __m256i __DEFAULT_FN_ATTRS
667_mm256_maskz_xor_epi64(__mmask8 __U, __m256i __A, __m256i __B)
668{
669 return (__m256i)_mm256_mask_xor_epi64(_mm256_setzero_si256(), __U, __A, __B);
670}
671
672static __inline__ __m128i __DEFAULT_FN_ATTRS
673_mm_mask_xor_epi64(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000674 __m128i __B)
675{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000676 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
677 (__v2di)_mm_xor_si128(__A, __B),
678 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000679}
680
Michael Kupersteine45af542015-06-30 13:36:19 +0000681static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000682_mm_maskz_xor_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000683{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000684 return (__m128i)_mm_mask_xor_epi64(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000685}
686
Craig Topper2f25a5a2015-01-26 08:11:49 +0000687#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
688 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000689 (__v4si)(__m128i)(b), (int)(p), \
690 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000691
692#define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
693 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000694 (__v4si)(__m128i)(b), (int)(p), \
695 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000696
697#define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \
698 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000699 (__v4si)(__m128i)(b), (int)(p), \
700 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000701
702#define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
703 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000704 (__v4si)(__m128i)(b), (int)(p), \
705 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000706
707#define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \
708 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000709 (__v8si)(__m256i)(b), (int)(p), \
710 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000711
712#define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
713 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000714 (__v8si)(__m256i)(b), (int)(p), \
715 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000716
717#define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \
718 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000719 (__v8si)(__m256i)(b), (int)(p), \
720 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000721
722#define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
723 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000724 (__v8si)(__m256i)(b), (int)(p), \
725 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000726
727#define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \
728 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000729 (__v2di)(__m128i)(b), (int)(p), \
730 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000731
732#define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
733 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000734 (__v2di)(__m128i)(b), (int)(p), \
735 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000736
737#define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \
738 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000739 (__v2di)(__m128i)(b), (int)(p), \
740 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000741
742#define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
743 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000744 (__v2di)(__m128i)(b), (int)(p), \
745 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000746
747#define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \
748 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000749 (__v4di)(__m256i)(b), (int)(p), \
750 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000751
752#define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
753 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000754 (__v4di)(__m256i)(b), (int)(p), \
755 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000756
757#define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \
758 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000759 (__v4di)(__m256i)(b), (int)(p), \
760 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000761
762#define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
763 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000764 (__v4di)(__m256i)(b), (int)(p), \
765 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000766
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000767#define _mm256_cmp_ps_mask(a, b, p) __extension__ ({ \
768 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000769 (__v8sf)(__m256)(b), (int)(p), \
770 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000771
772#define _mm256_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
773 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000774 (__v8sf)(__m256)(b), (int)(p), \
775 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000776
777#define _mm256_cmp_pd_mask(a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000778 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
779 (__v4df)(__m256d)(b), (int)(p), \
780 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000781
782#define _mm256_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000783 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
784 (__v4df)(__m256d)(b), (int)(p), \
785 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000786
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000787#define _mm_cmp_ps_mask(a, b, p) __extension__ ({ \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000788 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000789 (__v4sf)(__m128)(b), (int)(p), \
790 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000791
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000792#define _mm_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000793 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000794 (__v4sf)(__m128)(b), (int)(p), \
795 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000796
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000797#define _mm_cmp_pd_mask(a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000798 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
799 (__v2df)(__m128d)(b), (int)(p), \
800 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000801
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000802#define _mm_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000803 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
804 (__v2df)(__m128d)(b), (int)(p), \
805 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +0000806
Michael Kupersteine45af542015-06-30 13:36:19 +0000807static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000808_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
809{
Gabor Buella70d8d512018-05-30 15:27:49 +0000810 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
811 __builtin_ia32_vfmaddpd ((__v2df) __A,
812 (__v2df) __B,
813 (__v2df) __C),
814 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000815}
816
Michael Kupersteine45af542015-06-30 13:36:19 +0000817static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000818_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
819{
Gabor Buella70d8d512018-05-30 15:27:49 +0000820 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
821 __builtin_ia32_vfmaddpd ((__v2df) __A,
822 (__v2df) __B,
823 (__v2df) __C),
824 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000825}
826
Michael Kupersteine45af542015-06-30 13:36:19 +0000827static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000828_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
829{
Gabor Buella70d8d512018-05-30 15:27:49 +0000830 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
831 __builtin_ia32_vfmaddpd ((__v2df) __A,
832 (__v2df) __B,
833 (__v2df) __C),
834 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000835}
836
Michael Kupersteine45af542015-06-30 13:36:19 +0000837static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000838_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
839{
Gabor Buella70d8d512018-05-30 15:27:49 +0000840 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
841 __builtin_ia32_vfmaddpd ((__v2df) __A,
842 (__v2df) __B,
843 -(__v2df) __C),
844 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000845}
846
Michael Kupersteine45af542015-06-30 13:36:19 +0000847static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000848_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
849{
Gabor Buella70d8d512018-05-30 15:27:49 +0000850 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
851 __builtin_ia32_vfmaddpd ((__v2df) __A,
852 (__v2df) __B,
853 -(__v2df) __C),
854 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000855}
856
Michael Kupersteine45af542015-06-30 13:36:19 +0000857static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000858_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
859{
Gabor Buella70d8d512018-05-30 15:27:49 +0000860 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
861 __builtin_ia32_vfmaddpd (-(__v2df) __A,
862 (__v2df) __B,
863 (__v2df) __C),
864 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000865}
866
Michael Kupersteine45af542015-06-30 13:36:19 +0000867static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000868_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
869{
Gabor Buella70d8d512018-05-30 15:27:49 +0000870 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
871 __builtin_ia32_vfmaddpd (-(__v2df) __A,
872 (__v2df) __B,
873 (__v2df) __C),
874 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000875}
876
Michael Kupersteine45af542015-06-30 13:36:19 +0000877static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000878_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
879{
Gabor Buella70d8d512018-05-30 15:27:49 +0000880 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
881 __builtin_ia32_vfmaddpd (-(__v2df) __A,
882 (__v2df) __B,
883 -(__v2df) __C),
884 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000885}
886
Michael Kupersteine45af542015-06-30 13:36:19 +0000887static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000888_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
889{
Gabor Buella70d8d512018-05-30 15:27:49 +0000890 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
891 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
892 (__v4df) __B,
893 (__v4df) __C),
894 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000895}
896
Michael Kupersteine45af542015-06-30 13:36:19 +0000897static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000898_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
899{
Gabor Buella70d8d512018-05-30 15:27:49 +0000900 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
901 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
902 (__v4df) __B,
903 (__v4df) __C),
904 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000905}
906
Michael Kupersteine45af542015-06-30 13:36:19 +0000907static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000908_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
909{
Gabor Buella70d8d512018-05-30 15:27:49 +0000910 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
911 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
912 (__v4df) __B,
913 (__v4df) __C),
914 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000915}
916
Michael Kupersteine45af542015-06-30 13:36:19 +0000917static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000918_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
919{
Gabor Buella70d8d512018-05-30 15:27:49 +0000920 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
921 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
922 (__v4df) __B,
923 -(__v4df) __C),
924 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000925}
926
Michael Kupersteine45af542015-06-30 13:36:19 +0000927static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000928_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
929{
Gabor Buella70d8d512018-05-30 15:27:49 +0000930 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
931 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
932 (__v4df) __B,
933 -(__v4df) __C),
934 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000935}
936
Michael Kupersteine45af542015-06-30 13:36:19 +0000937static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000938_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
939{
Gabor Buella70d8d512018-05-30 15:27:49 +0000940 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
941 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
942 (__v4df) __B,
943 (__v4df) __C),
944 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000945}
946
Michael Kupersteine45af542015-06-30 13:36:19 +0000947static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000948_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
949{
Gabor Buella70d8d512018-05-30 15:27:49 +0000950 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
951 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
952 (__v4df) __B,
953 (__v4df) __C),
954 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000955}
956
Michael Kupersteine45af542015-06-30 13:36:19 +0000957static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000958_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
959{
Gabor Buella70d8d512018-05-30 15:27:49 +0000960 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
961 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
962 (__v4df) __B,
963 -(__v4df) __C),
964 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000965}
966
Michael Kupersteine45af542015-06-30 13:36:19 +0000967static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000968_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
969{
Gabor Buella70d8d512018-05-30 15:27:49 +0000970 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
971 __builtin_ia32_vfmaddps ((__v4sf) __A,
972 (__v4sf) __B,
973 (__v4sf) __C),
974 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000975}
976
Michael Kupersteine45af542015-06-30 13:36:19 +0000977static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000978_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
979{
Gabor Buella70d8d512018-05-30 15:27:49 +0000980 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
981 __builtin_ia32_vfmaddps ((__v4sf) __A,
982 (__v4sf) __B,
983 (__v4sf) __C),
984 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000985}
986
Michael Kupersteine45af542015-06-30 13:36:19 +0000987static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000988_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
989{
Gabor Buella70d8d512018-05-30 15:27:49 +0000990 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
991 __builtin_ia32_vfmaddps ((__v4sf) __A,
992 (__v4sf) __B,
993 (__v4sf) __C),
994 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000995}
996
Michael Kupersteine45af542015-06-30 13:36:19 +0000997static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000998_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
999{
Gabor Buella70d8d512018-05-30 15:27:49 +00001000 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1001 __builtin_ia32_vfmaddps ((__v4sf) __A,
1002 (__v4sf) __B,
1003 -(__v4sf) __C),
1004 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001005}
1006
Michael Kupersteine45af542015-06-30 13:36:19 +00001007static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001008_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1009{
Gabor Buella70d8d512018-05-30 15:27:49 +00001010 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1011 __builtin_ia32_vfmaddps ((__v4sf) __A,
1012 (__v4sf) __B,
1013 -(__v4sf) __C),
1014 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001015}
1016
Michael Kupersteine45af542015-06-30 13:36:19 +00001017static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001018_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1019{
Gabor Buella70d8d512018-05-30 15:27:49 +00001020 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1021 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1022 (__v4sf) __B,
1023 (__v4sf) __C),
1024 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001025}
1026
Michael Kupersteine45af542015-06-30 13:36:19 +00001027static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001028_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1029{
Gabor Buella70d8d512018-05-30 15:27:49 +00001030 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1031 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1032 (__v4sf) __B,
1033 (__v4sf) __C),
1034 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001038_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1039{
Gabor Buella70d8d512018-05-30 15:27:49 +00001040 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1041 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1042 (__v4sf) __B,
1043 -(__v4sf) __C),
1044 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001045}
1046
Michael Kupersteine45af542015-06-30 13:36:19 +00001047static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001048_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1049{
Gabor Buella70d8d512018-05-30 15:27:49 +00001050 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1051 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1052 (__v8sf) __B,
1053 (__v8sf) __C),
1054 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001055}
1056
Michael Kupersteine45af542015-06-30 13:36:19 +00001057static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001058_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1059{
Gabor Buella70d8d512018-05-30 15:27:49 +00001060 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1061 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1062 (__v8sf) __B,
1063 (__v8sf) __C),
1064 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001065}
1066
Michael Kupersteine45af542015-06-30 13:36:19 +00001067static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001068_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1069{
Gabor Buella70d8d512018-05-30 15:27:49 +00001070 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1071 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1072 (__v8sf) __B,
1073 (__v8sf) __C),
1074 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001075}
1076
Michael Kupersteine45af542015-06-30 13:36:19 +00001077static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001078_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1079{
Gabor Buella70d8d512018-05-30 15:27:49 +00001080 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1081 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1082 (__v8sf) __B,
1083 -(__v8sf) __C),
1084 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001085}
1086
Michael Kupersteine45af542015-06-30 13:36:19 +00001087static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001088_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1089{
Gabor Buella70d8d512018-05-30 15:27:49 +00001090 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1091 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1092 (__v8sf) __B,
1093 -(__v8sf) __C),
1094 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001095}
1096
Michael Kupersteine45af542015-06-30 13:36:19 +00001097static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001098_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1099{
Gabor Buella70d8d512018-05-30 15:27:49 +00001100 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1101 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1102 (__v8sf) __B,
1103 (__v8sf) __C),
1104 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001105}
1106
Michael Kupersteine45af542015-06-30 13:36:19 +00001107static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001108_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1109{
Gabor Buella70d8d512018-05-30 15:27:49 +00001110 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1111 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1112 (__v8sf) __B,
1113 (__v8sf) __C),
1114 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001115}
1116
Michael Kupersteine45af542015-06-30 13:36:19 +00001117static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001118_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1119{
Gabor Buella70d8d512018-05-30 15:27:49 +00001120 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1121 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1122 (__v8sf) __B,
1123 -(__v8sf) __C),
1124 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001125}
1126
Michael Kupersteine45af542015-06-30 13:36:19 +00001127static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001128_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1129{
Gabor Buella70d8d512018-05-30 15:27:49 +00001130 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1131 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1132 (__v2df) __B,
1133 (__v2df) __C),
1134 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001135}
1136
Michael Kupersteine45af542015-06-30 13:36:19 +00001137static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001138_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1139{
Gabor Buella70d8d512018-05-30 15:27:49 +00001140 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1141 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1142 (__v2df) __B,
1143 (__v2df) __C),
1144 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001145}
1146
Michael Kupersteine45af542015-06-30 13:36:19 +00001147static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001148_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1149{
Gabor Buella70d8d512018-05-30 15:27:49 +00001150 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1151 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1152 (__v2df) __B,
1153 (__v2df) __C),
1154 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001155}
1156
Michael Kupersteine45af542015-06-30 13:36:19 +00001157static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001158_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1159{
Gabor Buella70d8d512018-05-30 15:27:49 +00001160 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1161 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1162 (__v2df) __B,
1163 -(__v2df) __C),
1164 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001165}
1166
Michael Kupersteine45af542015-06-30 13:36:19 +00001167static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001168_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1169{
Gabor Buella70d8d512018-05-30 15:27:49 +00001170 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1171 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1172 (__v2df) __B,
1173 -(__v2df) __C),
1174 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001175}
1176
Michael Kupersteine45af542015-06-30 13:36:19 +00001177static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001178_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1179{
Gabor Buella70d8d512018-05-30 15:27:49 +00001180 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1181 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1182 (__v4df) __B,
1183 (__v4df) __C),
1184 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001185}
1186
Michael Kupersteine45af542015-06-30 13:36:19 +00001187static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001188_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1189{
Gabor Buella70d8d512018-05-30 15:27:49 +00001190 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1191 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1192 (__v4df) __B,
1193 (__v4df) __C),
1194 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001195}
1196
Michael Kupersteine45af542015-06-30 13:36:19 +00001197static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001198_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1199{
Gabor Buella70d8d512018-05-30 15:27:49 +00001200 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1201 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1202 (__v4df) __B,
1203 (__v4df) __C),
1204 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001205}
1206
Michael Kupersteine45af542015-06-30 13:36:19 +00001207static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001208_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1209{
Gabor Buella70d8d512018-05-30 15:27:49 +00001210 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1211 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1212 (__v4df) __B,
1213 -(__v4df) __C),
1214 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001215}
1216
Michael Kupersteine45af542015-06-30 13:36:19 +00001217static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001218_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1219{
Gabor Buella70d8d512018-05-30 15:27:49 +00001220 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1221 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1222 (__v4df) __B,
1223 -(__v4df) __C),
1224 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001225}
1226
Michael Kupersteine45af542015-06-30 13:36:19 +00001227static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001228_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1229{
Gabor Buella70d8d512018-05-30 15:27:49 +00001230 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1231 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1232 (__v4sf) __B,
1233 (__v4sf) __C),
1234 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001235}
1236
Michael Kupersteine45af542015-06-30 13:36:19 +00001237static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001238_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1239{
Gabor Buella70d8d512018-05-30 15:27:49 +00001240 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1241 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1242 (__v4sf) __B,
1243 (__v4sf) __C),
1244 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001245}
1246
Michael Kupersteine45af542015-06-30 13:36:19 +00001247static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001248_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1249{
Gabor Buella70d8d512018-05-30 15:27:49 +00001250 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1251 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1252 (__v4sf) __B,
1253 (__v4sf) __C),
1254 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001255}
1256
Michael Kupersteine45af542015-06-30 13:36:19 +00001257static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001258_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1259{
Gabor Buella70d8d512018-05-30 15:27:49 +00001260 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1261 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1262 (__v4sf) __B,
1263 -(__v4sf) __C),
1264 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001265}
1266
Michael Kupersteine45af542015-06-30 13:36:19 +00001267static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001268_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1269{
Gabor Buella70d8d512018-05-30 15:27:49 +00001270 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1271 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1272 (__v4sf) __B,
1273 -(__v4sf) __C),
1274 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001275}
1276
Michael Kupersteine45af542015-06-30 13:36:19 +00001277static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001278_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B,
1279 __m256 __C)
1280{
Gabor Buella70d8d512018-05-30 15:27:49 +00001281 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1282 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1283 (__v8sf) __B,
1284 (__v8sf) __C),
1285 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001286}
1287
Michael Kupersteine45af542015-06-30 13:36:19 +00001288static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001289_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1290{
Gabor Buella70d8d512018-05-30 15:27:49 +00001291 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1292 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1293 (__v8sf) __B,
1294 (__v8sf) __C),
1295 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001296}
1297
Michael Kupersteine45af542015-06-30 13:36:19 +00001298static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001299_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1300{
Gabor Buella70d8d512018-05-30 15:27:49 +00001301 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1302 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1303 (__v8sf) __B,
1304 (__v8sf) __C),
1305 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001306}
1307
Michael Kupersteine45af542015-06-30 13:36:19 +00001308static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001309_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1310{
Gabor Buella70d8d512018-05-30 15:27:49 +00001311 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1312 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1313 (__v8sf) __B,
1314 -(__v8sf) __C),
1315 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001316}
1317
Michael Kupersteine45af542015-06-30 13:36:19 +00001318static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001319_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1320{
Gabor Buella70d8d512018-05-30 15:27:49 +00001321 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1322 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1323 (__v8sf) __B,
1324 -(__v8sf) __C),
1325 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001326}
1327
Michael Kupersteine45af542015-06-30 13:36:19 +00001328static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001329_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1330{
Gabor Buella70d8d512018-05-30 15:27:49 +00001331 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1332 __builtin_ia32_vfmaddpd ((__v2df) __A,
1333 (__v2df) __B,
1334 -(__v2df) __C),
1335 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001336}
1337
Michael Kupersteine45af542015-06-30 13:36:19 +00001338static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001339_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1340{
Gabor Buella70d8d512018-05-30 15:27:49 +00001341 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1342 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1343 (__v4df) __B,
1344 -(__v4df) __C),
1345 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001346}
1347
Michael Kupersteine45af542015-06-30 13:36:19 +00001348static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001349_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1350{
Gabor Buella70d8d512018-05-30 15:27:49 +00001351 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1352 __builtin_ia32_vfmaddps ((__v4sf) __A,
1353 (__v4sf) __B,
1354 -(__v4sf) __C),
1355 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001356}
1357
Michael Kupersteine45af542015-06-30 13:36:19 +00001358static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001359_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1360{
Gabor Buella70d8d512018-05-30 15:27:49 +00001361 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1362 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1363 (__v8sf) __B,
1364 -(__v8sf) __C),
1365 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001366}
1367
Michael Kupersteine45af542015-06-30 13:36:19 +00001368static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001369_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1370{
Gabor Buella70d8d512018-05-30 15:27:49 +00001371 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1372 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1373 (__v2df) __B,
1374 -(__v2df) __C),
1375 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001376}
1377
Michael Kupersteine45af542015-06-30 13:36:19 +00001378static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001379_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1380{
Gabor Buella70d8d512018-05-30 15:27:49 +00001381 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1382 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1383 (__v4df) __B,
1384 -(__v4df) __C),
1385 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001386}
1387
Michael Kupersteine45af542015-06-30 13:36:19 +00001388static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001389_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1390{
Gabor Buella70d8d512018-05-30 15:27:49 +00001391 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1392 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1393 (__v4sf) __B,
1394 -(__v4sf) __C),
1395 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001396}
1397
Michael Kupersteine45af542015-06-30 13:36:19 +00001398static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001399_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1400{
Gabor Buella70d8d512018-05-30 15:27:49 +00001401 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1402 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1403 (__v8sf) __B,
1404 -(__v8sf) __C),
1405 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001406}
1407
Michael Kupersteine45af542015-06-30 13:36:19 +00001408static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001409_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1410{
Gabor Buella70d8d512018-05-30 15:27:49 +00001411 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1412 __builtin_ia32_vfmaddpd ((__v2df) __A,
1413 -(__v2df) __B,
1414 (__v2df) __C),
1415 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001416}
1417
Michael Kupersteine45af542015-06-30 13:36:19 +00001418static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001419_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1420{
Gabor Buella70d8d512018-05-30 15:27:49 +00001421 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1422 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1423 -(__v4df) __B,
1424 (__v4df) __C),
1425 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001426}
1427
Michael Kupersteine45af542015-06-30 13:36:19 +00001428static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001429_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1430{
Gabor Buella70d8d512018-05-30 15:27:49 +00001431 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1432 __builtin_ia32_vfmaddps ((__v4sf) __A,
1433 -(__v4sf) __B,
1434 (__v4sf) __C),
1435 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001436}
1437
Michael Kupersteine45af542015-06-30 13:36:19 +00001438static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001439_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1440{
Gabor Buella70d8d512018-05-30 15:27:49 +00001441 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1442 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1443 -(__v8sf) __B,
1444 (__v8sf) __C),
1445 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001446}
1447
Michael Kupersteine45af542015-06-30 13:36:19 +00001448static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001449_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1450{
Gabor Buella70d8d512018-05-30 15:27:49 +00001451 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1452 __builtin_ia32_vfmaddpd ((__v2df) __A,
1453 -(__v2df) __B,
1454 -(__v2df) __C),
1455 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001456}
1457
Michael Kupersteine45af542015-06-30 13:36:19 +00001458static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001459_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1460{
Gabor Buella70d8d512018-05-30 15:27:49 +00001461 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1462 __builtin_ia32_vfmaddpd ((__v2df) __A,
1463 -(__v2df) __B,
1464 -(__v2df) __C),
1465 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001466}
1467
Michael Kupersteine45af542015-06-30 13:36:19 +00001468static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001469_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1470{
Gabor Buella70d8d512018-05-30 15:27:49 +00001471 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1472 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1473 -(__v4df) __B,
1474 -(__v4df) __C),
1475 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001476}
1477
Michael Kupersteine45af542015-06-30 13:36:19 +00001478static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001479_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1480{
Gabor Buella70d8d512018-05-30 15:27:49 +00001481 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1482 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1483 -(__v4df) __B,
1484 -(__v4df) __C),
1485 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001486}
1487
Michael Kupersteine45af542015-06-30 13:36:19 +00001488static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001489_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1490{
Gabor Buella70d8d512018-05-30 15:27:49 +00001491 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1492 __builtin_ia32_vfmaddps ((__v4sf) __A,
1493 -(__v4sf) __B,
1494 -(__v4sf) __C),
1495 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001496}
1497
Michael Kupersteine45af542015-06-30 13:36:19 +00001498static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001499_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1500{
Gabor Buella70d8d512018-05-30 15:27:49 +00001501 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1502 __builtin_ia32_vfmaddps ((__v4sf) __A,
1503 -(__v4sf) __B,
1504 -(__v4sf) __C),
1505 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001506}
1507
Michael Kupersteine45af542015-06-30 13:36:19 +00001508static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001509_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1510{
Gabor Buella70d8d512018-05-30 15:27:49 +00001511 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1512 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1513 -(__v8sf) __B,
1514 -(__v8sf) __C),
1515 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001516}
1517
Michael Kupersteine45af542015-06-30 13:36:19 +00001518static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001519_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1520{
Gabor Buella70d8d512018-05-30 15:27:49 +00001521 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1522 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1523 -(__v8sf) __B,
1524 -(__v8sf) __C),
1525 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001526}
1527
Asaf Badouh74da3872015-07-28 08:26:14 +00001528static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001529_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1530 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1531 (__v2df)_mm_add_pd(__A, __B),
1532 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001533}
1534
1535static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001536_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
1537 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1538 (__v2df)_mm_add_pd(__A, __B),
1539 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001540}
1541
1542static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001543_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
1544 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1545 (__v4df)_mm256_add_pd(__A, __B),
1546 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001547}
1548
1549static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001550_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
1551 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1552 (__v4df)_mm256_add_pd(__A, __B),
1553 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001554}
1555
1556static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001557_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1558 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1559 (__v4sf)_mm_add_ps(__A, __B),
1560 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001561}
1562
1563static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001564_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
1565 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1566 (__v4sf)_mm_add_ps(__A, __B),
1567 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001568}
1569
1570static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001571_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
1572 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1573 (__v8sf)_mm256_add_ps(__A, __B),
1574 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001575}
1576
1577static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001578_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
1579 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1580 (__v8sf)_mm256_add_ps(__A, __B),
1581 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001582}
1583
1584static __inline__ __m128i __DEFAULT_FN_ATTRS
1585_mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001586 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001587 (__v4si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001588 (__v4si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001589}
1590
1591static __inline__ __m256i __DEFAULT_FN_ATTRS
1592_mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001593 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001594 (__v8si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001595 (__v8si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001596}
1597
1598static __inline__ __m128d __DEFAULT_FN_ATTRS
1599_mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001600 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001601 (__v2df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001602 (__v2df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001603}
1604
1605static __inline__ __m256d __DEFAULT_FN_ATTRS
1606_mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001607 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001608 (__v4df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001609 (__v4df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001610}
1611
1612static __inline__ __m128 __DEFAULT_FN_ATTRS
1613_mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001614 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001615 (__v4sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001616 (__v4sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001617}
1618
1619static __inline__ __m256 __DEFAULT_FN_ATTRS
1620_mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001621 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001622 (__v8sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001623 (__v8sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001624}
1625
1626static __inline__ __m128i __DEFAULT_FN_ATTRS
1627_mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001628 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001629 (__v2di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001630 (__v2di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001631}
1632
1633static __inline__ __m256i __DEFAULT_FN_ATTRS
1634_mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001635 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001636 (__v4di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001637 (__v4di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001638}
1639
1640static __inline__ __m128d __DEFAULT_FN_ATTRS
1641_mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A) {
1642 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1643 (__v2df) __W,
1644 (__mmask8) __U);
1645}
1646
1647static __inline__ __m128d __DEFAULT_FN_ATTRS
1648_mm_maskz_compress_pd (__mmask8 __U, __m128d __A) {
1649 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1650 (__v2df)
1651 _mm_setzero_pd (),
1652 (__mmask8) __U);
1653}
1654
1655static __inline__ __m256d __DEFAULT_FN_ATTRS
1656_mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A) {
1657 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1658 (__v4df) __W,
1659 (__mmask8) __U);
1660}
1661
1662static __inline__ __m256d __DEFAULT_FN_ATTRS
1663_mm256_maskz_compress_pd (__mmask8 __U, __m256d __A) {
1664 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1665 (__v4df)
1666 _mm256_setzero_pd (),
1667 (__mmask8) __U);
1668}
1669
1670static __inline__ __m128i __DEFAULT_FN_ATTRS
1671_mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
1672 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1673 (__v2di) __W,
1674 (__mmask8) __U);
1675}
1676
1677static __inline__ __m128i __DEFAULT_FN_ATTRS
1678_mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A) {
1679 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1680 (__v2di)
1681 _mm_setzero_si128 (),
1682 (__mmask8) __U);
1683}
1684
1685static __inline__ __m256i __DEFAULT_FN_ATTRS
1686_mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
1687 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1688 (__v4di) __W,
1689 (__mmask8) __U);
1690}
1691
1692static __inline__ __m256i __DEFAULT_FN_ATTRS
1693_mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A) {
1694 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1695 (__v4di)
1696 _mm256_setzero_si256 (),
1697 (__mmask8) __U);
1698}
1699
1700static __inline__ __m128 __DEFAULT_FN_ATTRS
1701_mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A) {
1702 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1703 (__v4sf) __W,
1704 (__mmask8) __U);
1705}
1706
1707static __inline__ __m128 __DEFAULT_FN_ATTRS
1708_mm_maskz_compress_ps (__mmask8 __U, __m128 __A) {
1709 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1710 (__v4sf)
1711 _mm_setzero_ps (),
1712 (__mmask8) __U);
1713}
1714
1715static __inline__ __m256 __DEFAULT_FN_ATTRS
1716_mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A) {
1717 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1718 (__v8sf) __W,
1719 (__mmask8) __U);
1720}
1721
1722static __inline__ __m256 __DEFAULT_FN_ATTRS
1723_mm256_maskz_compress_ps (__mmask8 __U, __m256 __A) {
1724 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1725 (__v8sf)
1726 _mm256_setzero_ps (),
1727 (__mmask8) __U);
1728}
1729
1730static __inline__ __m128i __DEFAULT_FN_ATTRS
1731_mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
1732 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1733 (__v4si) __W,
1734 (__mmask8) __U);
1735}
1736
1737static __inline__ __m128i __DEFAULT_FN_ATTRS
1738_mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A) {
1739 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1740 (__v4si)
1741 _mm_setzero_si128 (),
1742 (__mmask8) __U);
1743}
1744
1745static __inline__ __m256i __DEFAULT_FN_ATTRS
1746_mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
1747 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1748 (__v8si) __W,
1749 (__mmask8) __U);
1750}
1751
1752static __inline__ __m256i __DEFAULT_FN_ATTRS
1753_mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A) {
1754 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1755 (__v8si)
1756 _mm256_setzero_si256 (),
1757 (__mmask8) __U);
1758}
1759
1760static __inline__ void __DEFAULT_FN_ATTRS
1761_mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A) {
1762 __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
1763 (__v2df) __A,
1764 (__mmask8) __U);
1765}
1766
1767static __inline__ void __DEFAULT_FN_ATTRS
1768_mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A) {
1769 __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
1770 (__v4df) __A,
1771 (__mmask8) __U);
1772}
1773
1774static __inline__ void __DEFAULT_FN_ATTRS
1775_mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A) {
1776 __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
1777 (__v2di) __A,
1778 (__mmask8) __U);
1779}
1780
1781static __inline__ void __DEFAULT_FN_ATTRS
1782_mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A) {
1783 __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
1784 (__v4di) __A,
1785 (__mmask8) __U);
1786}
1787
1788static __inline__ void __DEFAULT_FN_ATTRS
1789_mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A) {
1790 __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
1791 (__v4sf) __A,
1792 (__mmask8) __U);
1793}
1794
1795static __inline__ void __DEFAULT_FN_ATTRS
1796_mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A) {
1797 __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
1798 (__v8sf) __A,
1799 (__mmask8) __U);
1800}
1801
1802static __inline__ void __DEFAULT_FN_ATTRS
1803_mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A) {
1804 __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
1805 (__v4si) __A,
1806 (__mmask8) __U);
1807}
1808
1809static __inline__ void __DEFAULT_FN_ATTRS
1810_mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A) {
1811 __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
1812 (__v8si) __A,
1813 (__mmask8) __U);
1814}
1815
1816static __inline__ __m128d __DEFAULT_FN_ATTRS
1817_mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001818 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1819 (__v2df)_mm_cvtepi32_pd(__A),
1820 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001821}
1822
1823static __inline__ __m128d __DEFAULT_FN_ATTRS
1824_mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001825 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1826 (__v2df)_mm_cvtepi32_pd(__A),
1827 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001828}
1829
1830static __inline__ __m256d __DEFAULT_FN_ATTRS
1831_mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001832 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1833 (__v4df)_mm256_cvtepi32_pd(__A),
1834 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001835}
1836
1837static __inline__ __m256d __DEFAULT_FN_ATTRS
1838_mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001839 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1840 (__v4df)_mm256_cvtepi32_pd(__A),
1841 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001842}
1843
1844static __inline__ __m128 __DEFAULT_FN_ATTRS
1845_mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001846 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1847 (__v4sf)_mm_cvtepi32_ps(__A),
1848 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001849}
1850
1851static __inline__ __m128 __DEFAULT_FN_ATTRS
1852_mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001853 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1854 (__v4sf)_mm_cvtepi32_ps(__A),
1855 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001856}
1857
1858static __inline__ __m256 __DEFAULT_FN_ATTRS
1859_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001860 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1861 (__v8sf)_mm256_cvtepi32_ps(__A),
1862 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001863}
1864
1865static __inline__ __m256 __DEFAULT_FN_ATTRS
1866_mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001867 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1868 (__v8sf)_mm256_cvtepi32_ps(__A),
1869 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001870}
1871
1872static __inline__ __m128i __DEFAULT_FN_ATTRS
1873_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
1874 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1875 (__v4si) __W,
1876 (__mmask8) __U);
1877}
1878
1879static __inline__ __m128i __DEFAULT_FN_ATTRS
1880_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
1881 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1882 (__v4si)
1883 _mm_setzero_si128 (),
1884 (__mmask8) __U);
1885}
1886
1887static __inline__ __m128i __DEFAULT_FN_ATTRS
1888_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001889 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1890 (__v4si)_mm256_cvtpd_epi32(__A),
1891 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001892}
1893
1894static __inline__ __m128i __DEFAULT_FN_ATTRS
1895_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001896 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1897 (__v4si)_mm256_cvtpd_epi32(__A),
1898 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001899}
1900
1901static __inline__ __m128 __DEFAULT_FN_ATTRS
1902_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
1903 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1904 (__v4sf) __W,
1905 (__mmask8) __U);
1906}
1907
1908static __inline__ __m128 __DEFAULT_FN_ATTRS
1909_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
1910 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1911 (__v4sf)
1912 _mm_setzero_ps (),
1913 (__mmask8) __U);
1914}
1915
1916static __inline__ __m128 __DEFAULT_FN_ATTRS
1917_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001918 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1919 (__v4sf)_mm256_cvtpd_ps(__A),
1920 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001921}
1922
1923static __inline__ __m128 __DEFAULT_FN_ATTRS
1924_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001925 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1926 (__v4sf)_mm256_cvtpd_ps(__A),
1927 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001928}
1929
1930static __inline__ __m128i __DEFAULT_FN_ATTRS
1931_mm_cvtpd_epu32 (__m128d __A) {
1932 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1933 (__v4si)
1934 _mm_setzero_si128 (),
1935 (__mmask8) -1);
1936}
1937
1938static __inline__ __m128i __DEFAULT_FN_ATTRS
1939_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
1940 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1941 (__v4si) __W,
1942 (__mmask8) __U);
1943}
1944
1945static __inline__ __m128i __DEFAULT_FN_ATTRS
1946_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
1947 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1948 (__v4si)
1949 _mm_setzero_si128 (),
1950 (__mmask8) __U);
1951}
1952
1953static __inline__ __m128i __DEFAULT_FN_ATTRS
1954_mm256_cvtpd_epu32 (__m256d __A) {
1955 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1956 (__v4si)
1957 _mm_setzero_si128 (),
1958 (__mmask8) -1);
1959}
1960
1961static __inline__ __m128i __DEFAULT_FN_ATTRS
1962_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
1963 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1964 (__v4si) __W,
1965 (__mmask8) __U);
1966}
1967
1968static __inline__ __m128i __DEFAULT_FN_ATTRS
1969_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
1970 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1971 (__v4si)
1972 _mm_setzero_si128 (),
1973 (__mmask8) __U);
1974}
1975
1976static __inline__ __m128i __DEFAULT_FN_ATTRS
1977_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001978 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1979 (__v4si)_mm_cvtps_epi32(__A),
1980 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001981}
1982
1983static __inline__ __m128i __DEFAULT_FN_ATTRS
1984_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001985 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1986 (__v4si)_mm_cvtps_epi32(__A),
1987 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001988}
1989
1990static __inline__ __m256i __DEFAULT_FN_ATTRS
1991_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001992 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1993 (__v8si)_mm256_cvtps_epi32(__A),
1994 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001995}
1996
1997static __inline__ __m256i __DEFAULT_FN_ATTRS
1998_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001999 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2000 (__v8si)_mm256_cvtps_epi32(__A),
2001 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002002}
2003
2004static __inline__ __m128d __DEFAULT_FN_ATTRS
2005_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002006 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2007 (__v2df)_mm_cvtps_pd(__A),
2008 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002009}
2010
2011static __inline__ __m128d __DEFAULT_FN_ATTRS
2012_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002013 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2014 (__v2df)_mm_cvtps_pd(__A),
2015 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002016}
2017
2018static __inline__ __m256d __DEFAULT_FN_ATTRS
2019_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002020 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2021 (__v4df)_mm256_cvtps_pd(__A),
2022 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002023}
2024
2025static __inline__ __m256d __DEFAULT_FN_ATTRS
2026_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002027 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2028 (__v4df)_mm256_cvtps_pd(__A),
2029 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002030}
2031
2032static __inline__ __m128i __DEFAULT_FN_ATTRS
2033_mm_cvtps_epu32 (__m128 __A) {
2034 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2035 (__v4si)
2036 _mm_setzero_si128 (),
2037 (__mmask8) -1);
2038}
2039
2040static __inline__ __m128i __DEFAULT_FN_ATTRS
2041_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2042 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2043 (__v4si) __W,
2044 (__mmask8) __U);
2045}
2046
2047static __inline__ __m128i __DEFAULT_FN_ATTRS
2048_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
2049 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2050 (__v4si)
2051 _mm_setzero_si128 (),
2052 (__mmask8) __U);
2053}
2054
2055static __inline__ __m256i __DEFAULT_FN_ATTRS
2056_mm256_cvtps_epu32 (__m256 __A) {
2057 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2058 (__v8si)
2059 _mm256_setzero_si256 (),
2060 (__mmask8) -1);
2061}
2062
2063static __inline__ __m256i __DEFAULT_FN_ATTRS
2064_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2065 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2066 (__v8si) __W,
2067 (__mmask8) __U);
2068}
2069
2070static __inline__ __m256i __DEFAULT_FN_ATTRS
2071_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2072 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2073 (__v8si)
2074 _mm256_setzero_si256 (),
2075 (__mmask8) __U);
2076}
2077
2078static __inline__ __m128i __DEFAULT_FN_ATTRS
2079_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2080 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2081 (__v4si) __W,
2082 (__mmask8) __U);
2083}
2084
2085static __inline__ __m128i __DEFAULT_FN_ATTRS
2086_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2087 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2088 (__v4si)
2089 _mm_setzero_si128 (),
2090 (__mmask8) __U);
2091}
2092
2093static __inline__ __m128i __DEFAULT_FN_ATTRS
2094_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002095 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2096 (__v4si)_mm256_cvttpd_epi32(__A),
2097 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002098}
2099
2100static __inline__ __m128i __DEFAULT_FN_ATTRS
2101_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002102 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2103 (__v4si)_mm256_cvttpd_epi32(__A),
2104 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002105}
2106
2107static __inline__ __m128i __DEFAULT_FN_ATTRS
2108_mm_cvttpd_epu32 (__m128d __A) {
2109 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2110 (__v4si)
2111 _mm_setzero_si128 (),
2112 (__mmask8) -1);
2113}
2114
2115static __inline__ __m128i __DEFAULT_FN_ATTRS
2116_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2117 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2118 (__v4si) __W,
2119 (__mmask8) __U);
2120}
2121
2122static __inline__ __m128i __DEFAULT_FN_ATTRS
2123_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2124 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2125 (__v4si)
2126 _mm_setzero_si128 (),
2127 (__mmask8) __U);
2128}
2129
2130static __inline__ __m128i __DEFAULT_FN_ATTRS
2131_mm256_cvttpd_epu32 (__m256d __A) {
2132 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2133 (__v4si)
2134 _mm_setzero_si128 (),
2135 (__mmask8) -1);
2136}
2137
2138static __inline__ __m128i __DEFAULT_FN_ATTRS
2139_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2140 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2141 (__v4si) __W,
2142 (__mmask8) __U);
2143}
2144
2145static __inline__ __m128i __DEFAULT_FN_ATTRS
2146_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2147 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2148 (__v4si)
2149 _mm_setzero_si128 (),
2150 (__mmask8) __U);
2151}
2152
2153static __inline__ __m128i __DEFAULT_FN_ATTRS
2154_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002155 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2156 (__v4si)_mm_cvttps_epi32(__A),
2157 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002158}
2159
2160static __inline__ __m128i __DEFAULT_FN_ATTRS
2161_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002162 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2163 (__v4si)_mm_cvttps_epi32(__A),
2164 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002165}
2166
2167static __inline__ __m256i __DEFAULT_FN_ATTRS
2168_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002169 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2170 (__v8si)_mm256_cvttps_epi32(__A),
2171 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002172}
2173
2174static __inline__ __m256i __DEFAULT_FN_ATTRS
2175_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002176 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2177 (__v8si)_mm256_cvttps_epi32(__A),
2178 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002179}
2180
2181static __inline__ __m128i __DEFAULT_FN_ATTRS
2182_mm_cvttps_epu32 (__m128 __A) {
2183 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2184 (__v4si)
2185 _mm_setzero_si128 (),
2186 (__mmask8) -1);
2187}
2188
2189static __inline__ __m128i __DEFAULT_FN_ATTRS
2190_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2191 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2192 (__v4si) __W,
2193 (__mmask8) __U);
2194}
2195
2196static __inline__ __m128i __DEFAULT_FN_ATTRS
2197_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2198 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2199 (__v4si)
2200 _mm_setzero_si128 (),
2201 (__mmask8) __U);
2202}
2203
2204static __inline__ __m256i __DEFAULT_FN_ATTRS
2205_mm256_cvttps_epu32 (__m256 __A) {
2206 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2207 (__v8si)
2208 _mm256_setzero_si256 (),
2209 (__mmask8) -1);
2210}
2211
2212static __inline__ __m256i __DEFAULT_FN_ATTRS
2213_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2214 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2215 (__v8si) __W,
2216 (__mmask8) __U);
2217}
2218
2219static __inline__ __m256i __DEFAULT_FN_ATTRS
2220_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2221 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2222 (__v8si)
2223 _mm256_setzero_si256 (),
2224 (__mmask8) __U);
2225}
2226
2227static __inline__ __m128d __DEFAULT_FN_ATTRS
2228_mm_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002229 return (__m128d) __builtin_convertvector(
2230 __builtin_shufflevector((__v4su)__A, (__v4su)__A, 0, 1), __v2df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002231}
2232
2233static __inline__ __m128d __DEFAULT_FN_ATTRS
2234_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002235 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2236 (__v2df)_mm_cvtepu32_pd(__A),
2237 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002238}
2239
2240static __inline__ __m128d __DEFAULT_FN_ATTRS
2241_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002242 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2243 (__v2df)_mm_cvtepu32_pd(__A),
2244 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002245}
2246
2247static __inline__ __m256d __DEFAULT_FN_ATTRS
2248_mm256_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002249 return (__m256d)__builtin_convertvector((__v4su)__A, __v4df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002250}
2251
2252static __inline__ __m256d __DEFAULT_FN_ATTRS
2253_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002254 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2255 (__v4df)_mm256_cvtepu32_pd(__A),
2256 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002257}
2258
2259static __inline__ __m256d __DEFAULT_FN_ATTRS
2260_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002261 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2262 (__v4df)_mm256_cvtepu32_pd(__A),
2263 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002264}
2265
2266static __inline__ __m128 __DEFAULT_FN_ATTRS
2267_mm_cvtepu32_ps (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002268 return (__m128)__builtin_convertvector((__v4su)__A, __v4sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002269}
2270
2271static __inline__ __m128 __DEFAULT_FN_ATTRS
2272_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002273 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2274 (__v4sf)_mm_cvtepu32_ps(__A),
2275 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002276}
2277
2278static __inline__ __m128 __DEFAULT_FN_ATTRS
2279_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002280 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2281 (__v4sf)_mm_cvtepu32_ps(__A),
2282 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002283}
2284
2285static __inline__ __m256 __DEFAULT_FN_ATTRS
2286_mm256_cvtepu32_ps (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002287 return (__m256)__builtin_convertvector((__v8su)__A, __v8sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002288}
2289
2290static __inline__ __m256 __DEFAULT_FN_ATTRS
2291_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002292 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2293 (__v8sf)_mm256_cvtepu32_ps(__A),
2294 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002295}
2296
2297static __inline__ __m256 __DEFAULT_FN_ATTRS
2298_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002299 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2300 (__v8sf)_mm256_cvtepu32_ps(__A),
2301 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002302}
2303
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002304static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002305_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2306 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2307 (__v2df)_mm_div_pd(__A, __B),
2308 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002309}
2310
2311static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002312_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2313 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2314 (__v2df)_mm_div_pd(__A, __B),
2315 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002316}
2317
2318static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002319_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2320 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2321 (__v4df)_mm256_div_pd(__A, __B),
2322 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002323}
2324
2325static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002326_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2327 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2328 (__v4df)_mm256_div_pd(__A, __B),
2329 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002330}
2331
2332static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002333_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2334 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2335 (__v4sf)_mm_div_ps(__A, __B),
2336 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002337}
2338
2339static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002340_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2341 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2342 (__v4sf)_mm_div_ps(__A, __B),
2343 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002344}
2345
2346static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002347_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2348 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2349 (__v8sf)_mm256_div_ps(__A, __B),
2350 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002351}
2352
2353static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002354_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2355 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2356 (__v8sf)_mm256_div_ps(__A, __B),
2357 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002358}
2359
2360static __inline__ __m128d __DEFAULT_FN_ATTRS
2361_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2362 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2363 (__v2df) __W,
2364 (__mmask8) __U);
2365}
2366
2367static __inline__ __m128d __DEFAULT_FN_ATTRS
2368_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2369 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2370 (__v2df)
2371 _mm_setzero_pd (),
2372 (__mmask8) __U);
2373}
2374
2375static __inline__ __m256d __DEFAULT_FN_ATTRS
2376_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2377 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2378 (__v4df) __W,
2379 (__mmask8) __U);
2380}
2381
2382static __inline__ __m256d __DEFAULT_FN_ATTRS
2383_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2384 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2385 (__v4df)
2386 _mm256_setzero_pd (),
2387 (__mmask8) __U);
2388}
2389
2390static __inline__ __m128i __DEFAULT_FN_ATTRS
2391_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2392 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2393 (__v2di) __W,
2394 (__mmask8) __U);
2395}
2396
2397static __inline__ __m128i __DEFAULT_FN_ATTRS
2398_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2399 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2400 (__v2di)
2401 _mm_setzero_si128 (),
2402 (__mmask8) __U);
2403}
2404
2405static __inline__ __m256i __DEFAULT_FN_ATTRS
2406_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2407 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2408 (__v4di) __W,
2409 (__mmask8) __U);
2410}
2411
2412static __inline__ __m256i __DEFAULT_FN_ATTRS
2413_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2414 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2415 (__v4di)
2416 _mm256_setzero_si256 (),
2417 (__mmask8) __U);
2418}
2419
2420static __inline__ __m128d __DEFAULT_FN_ATTRS
2421_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2422 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2423 (__v2df) __W,
2424 (__mmask8)
2425 __U);
2426}
2427
2428static __inline__ __m128d __DEFAULT_FN_ATTRS
2429_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2430 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2431 (__v2df)
2432 _mm_setzero_pd (),
2433 (__mmask8)
2434 __U);
2435}
2436
2437static __inline__ __m256d __DEFAULT_FN_ATTRS
2438_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2439 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2440 (__v4df) __W,
2441 (__mmask8)
2442 __U);
2443}
2444
2445static __inline__ __m256d __DEFAULT_FN_ATTRS
2446_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2447 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2448 (__v4df)
2449 _mm256_setzero_pd (),
2450 (__mmask8)
2451 __U);
2452}
2453
2454static __inline__ __m128i __DEFAULT_FN_ATTRS
2455_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2456 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2457 (__v2di) __W,
2458 (__mmask8)
2459 __U);
2460}
2461
2462static __inline__ __m128i __DEFAULT_FN_ATTRS
2463_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2464 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2465 (__v2di)
2466 _mm_setzero_si128 (),
2467 (__mmask8)
2468 __U);
2469}
2470
2471static __inline__ __m256i __DEFAULT_FN_ATTRS
2472_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2473 void const *__P) {
2474 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2475 (__v4di) __W,
2476 (__mmask8)
2477 __U);
2478}
2479
2480static __inline__ __m256i __DEFAULT_FN_ATTRS
2481_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2482 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2483 (__v4di)
2484 _mm256_setzero_si256 (),
2485 (__mmask8)
2486 __U);
2487}
2488
2489static __inline__ __m128 __DEFAULT_FN_ATTRS
2490_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2491 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2492 (__v4sf) __W,
2493 (__mmask8) __U);
2494}
2495
2496static __inline__ __m128 __DEFAULT_FN_ATTRS
2497_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2498 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2499 (__v4sf)
2500 _mm_setzero_ps (),
2501 (__mmask8)
2502 __U);
2503}
2504
2505static __inline__ __m256 __DEFAULT_FN_ATTRS
2506_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2507 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2508 (__v8sf) __W,
2509 (__mmask8) __U);
2510}
2511
2512static __inline__ __m256 __DEFAULT_FN_ATTRS
2513_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2514 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2515 (__v8sf)
2516 _mm256_setzero_ps (),
2517 (__mmask8)
2518 __U);
2519}
2520
2521static __inline__ __m128i __DEFAULT_FN_ATTRS
2522_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2523 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2524 (__v4si) __W,
2525 (__mmask8)
2526 __U);
2527}
2528
2529static __inline__ __m128i __DEFAULT_FN_ATTRS
2530_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2531 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2532 (__v4si)
2533 _mm_setzero_si128 (),
2534 (__mmask8) __U);
2535}
2536
2537static __inline__ __m256i __DEFAULT_FN_ATTRS
2538_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2539 void const *__P) {
2540 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2541 (__v8si) __W,
2542 (__mmask8)
2543 __U);
2544}
2545
2546static __inline__ __m256i __DEFAULT_FN_ATTRS
2547_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2548 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2549 (__v8si)
2550 _mm256_setzero_si256 (),
2551 (__mmask8)
2552 __U);
2553}
2554
2555static __inline__ __m128 __DEFAULT_FN_ATTRS
2556_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2557 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2558 (__v4sf) __W,
2559 (__mmask8) __U);
2560}
2561
2562static __inline__ __m128 __DEFAULT_FN_ATTRS
2563_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2564 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2565 (__v4sf)
2566 _mm_setzero_ps (),
2567 (__mmask8) __U);
2568}
2569
2570static __inline__ __m256 __DEFAULT_FN_ATTRS
2571_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2572 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2573 (__v8sf) __W,
2574 (__mmask8) __U);
2575}
2576
2577static __inline__ __m256 __DEFAULT_FN_ATTRS
2578_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2579 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2580 (__v8sf)
2581 _mm256_setzero_ps (),
2582 (__mmask8) __U);
2583}
2584
2585static __inline__ __m128i __DEFAULT_FN_ATTRS
2586_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2587 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2588 (__v4si) __W,
2589 (__mmask8) __U);
2590}
2591
2592static __inline__ __m128i __DEFAULT_FN_ATTRS
2593_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2594 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2595 (__v4si)
2596 _mm_setzero_si128 (),
2597 (__mmask8) __U);
2598}
2599
2600static __inline__ __m256i __DEFAULT_FN_ATTRS
2601_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2602 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2603 (__v8si) __W,
2604 (__mmask8) __U);
2605}
2606
2607static __inline__ __m256i __DEFAULT_FN_ATTRS
2608_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2609 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2610 (__v8si)
2611 _mm256_setzero_si256 (),
2612 (__mmask8) __U);
2613}
2614
2615static __inline__ __m128d __DEFAULT_FN_ATTRS
2616_mm_getexp_pd (__m128d __A) {
2617 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2618 (__v2df)
2619 _mm_setzero_pd (),
2620 (__mmask8) -1);
2621}
2622
2623static __inline__ __m128d __DEFAULT_FN_ATTRS
2624_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2625 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2626 (__v2df) __W,
2627 (__mmask8) __U);
2628}
2629
2630static __inline__ __m128d __DEFAULT_FN_ATTRS
2631_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2632 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2633 (__v2df)
2634 _mm_setzero_pd (),
2635 (__mmask8) __U);
2636}
2637
2638static __inline__ __m256d __DEFAULT_FN_ATTRS
2639_mm256_getexp_pd (__m256d __A) {
2640 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2641 (__v4df)
2642 _mm256_setzero_pd (),
2643 (__mmask8) -1);
2644}
2645
2646static __inline__ __m256d __DEFAULT_FN_ATTRS
2647_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2648 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2649 (__v4df) __W,
2650 (__mmask8) __U);
2651}
2652
2653static __inline__ __m256d __DEFAULT_FN_ATTRS
2654_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2655 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2656 (__v4df)
2657 _mm256_setzero_pd (),
2658 (__mmask8) __U);
2659}
2660
2661static __inline__ __m128 __DEFAULT_FN_ATTRS
2662_mm_getexp_ps (__m128 __A) {
2663 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2664 (__v4sf)
2665 _mm_setzero_ps (),
2666 (__mmask8) -1);
2667}
2668
2669static __inline__ __m128 __DEFAULT_FN_ATTRS
2670_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2671 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2672 (__v4sf) __W,
2673 (__mmask8) __U);
2674}
2675
2676static __inline__ __m128 __DEFAULT_FN_ATTRS
2677_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
2678 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2679 (__v4sf)
2680 _mm_setzero_ps (),
2681 (__mmask8) __U);
2682}
2683
2684static __inline__ __m256 __DEFAULT_FN_ATTRS
2685_mm256_getexp_ps (__m256 __A) {
2686 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2687 (__v8sf)
2688 _mm256_setzero_ps (),
2689 (__mmask8) -1);
2690}
2691
2692static __inline__ __m256 __DEFAULT_FN_ATTRS
2693_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2694 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2695 (__v8sf) __W,
2696 (__mmask8) __U);
2697}
2698
2699static __inline__ __m256 __DEFAULT_FN_ATTRS
2700_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
2701 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2702 (__v8sf)
2703 _mm256_setzero_ps (),
2704 (__mmask8) __U);
2705}
2706
2707static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002708_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2709 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2710 (__v2df)_mm_max_pd(__A, __B),
2711 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002712}
2713
2714static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002715_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2716 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2717 (__v2df)_mm_max_pd(__A, __B),
2718 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002719}
2720
2721static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002722_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2723 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2724 (__v4df)_mm256_max_pd(__A, __B),
2725 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002726}
2727
2728static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002729_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2730 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2731 (__v4df)_mm256_max_pd(__A, __B),
2732 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002733}
2734
2735static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002736_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2737 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2738 (__v4sf)_mm_max_ps(__A, __B),
2739 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002740}
2741
2742static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002743_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2744 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2745 (__v4sf)_mm_max_ps(__A, __B),
2746 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002747}
2748
2749static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002750_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2751 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2752 (__v8sf)_mm256_max_ps(__A, __B),
2753 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002754}
2755
2756static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002757_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2758 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2759 (__v8sf)_mm256_max_ps(__A, __B),
2760 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002761}
2762
2763static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002764_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2765 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2766 (__v2df)_mm_min_pd(__A, __B),
2767 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002768}
2769
2770static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002771_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2772 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2773 (__v2df)_mm_min_pd(__A, __B),
2774 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002775}
2776
2777static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002778_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2779 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2780 (__v4df)_mm256_min_pd(__A, __B),
2781 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002782}
2783
2784static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002785_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2786 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2787 (__v4df)_mm256_min_pd(__A, __B),
2788 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002789}
2790
2791static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002792_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2793 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2794 (__v4sf)_mm_min_ps(__A, __B),
2795 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002796}
2797
2798static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002799_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2800 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2801 (__v4sf)_mm_min_ps(__A, __B),
2802 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002803}
2804
2805static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002806_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2807 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2808 (__v8sf)_mm256_min_ps(__A, __B),
2809 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002810}
2811
2812static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002813_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2814 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2815 (__v8sf)_mm256_min_ps(__A, __B),
2816 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002817}
2818
2819static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002820_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2821 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2822 (__v2df)_mm_mul_pd(__A, __B),
2823 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002824}
2825
2826static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002827_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2828 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2829 (__v2df)_mm_mul_pd(__A, __B),
2830 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002831}
2832
2833static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002834_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2835 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2836 (__v4df)_mm256_mul_pd(__A, __B),
2837 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002838}
2839
2840static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002841_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2842 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2843 (__v4df)_mm256_mul_pd(__A, __B),
2844 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002845}
2846
2847static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002848_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2849 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2850 (__v4sf)_mm_mul_ps(__A, __B),
2851 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002852}
2853
2854static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002855_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2856 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2857 (__v4sf)_mm_mul_ps(__A, __B),
2858 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002859}
2860
2861static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002862_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2863 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2864 (__v8sf)_mm256_mul_ps(__A, __B),
2865 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002866}
2867
2868static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002869_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2870 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2871 (__v8sf)_mm256_mul_ps(__A, __B),
2872 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002873}
2874
2875static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002876_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
2877 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2878 (__v4si)_mm_abs_epi32(__A),
2879 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002880}
2881
2882static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002883_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
2884 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2885 (__v4si)_mm_abs_epi32(__A),
2886 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002887}
2888
2889static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002890_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
2891 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2892 (__v8si)_mm256_abs_epi32(__A),
2893 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002894}
2895
2896static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002897_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
2898 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2899 (__v8si)_mm256_abs_epi32(__A),
2900 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002901}
2902
2903static __inline__ __m128i __DEFAULT_FN_ATTRS
2904_mm_abs_epi64 (__m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002905 return (__m128i)__builtin_ia32_pabsq128((__v2di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002906}
2907
2908static __inline__ __m128i __DEFAULT_FN_ATTRS
2909_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002910 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2911 (__v2di)_mm_abs_epi64(__A),
2912 (__v2di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002913}
2914
2915static __inline__ __m128i __DEFAULT_FN_ATTRS
2916_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002917 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2918 (__v2di)_mm_abs_epi64(__A),
2919 (__v2di)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002920}
2921
2922static __inline__ __m256i __DEFAULT_FN_ATTRS
2923_mm256_abs_epi64 (__m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002924 return (__m256i)__builtin_ia32_pabsq256 ((__v4di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002925}
2926
2927static __inline__ __m256i __DEFAULT_FN_ATTRS
2928_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002929 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2930 (__v4di)_mm256_abs_epi64(__A),
2931 (__v4di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002932}
2933
2934static __inline__ __m256i __DEFAULT_FN_ATTRS
2935_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002936 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2937 (__v4di)_mm256_abs_epi64(__A),
2938 (__v4di)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002939}
2940
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002941static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002942_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
2943 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2944 (__v4si)_mm_max_epi32(__A, __B),
2945 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002946}
2947
2948static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002949_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2950 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2951 (__v4si)_mm_max_epi32(__A, __B),
2952 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002953}
2954
2955static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002956_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
2957 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2958 (__v8si)_mm256_max_epi32(__A, __B),
2959 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002960}
2961
2962static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002963_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2964 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2965 (__v8si)_mm256_max_epi32(__A, __B),
2966 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002967}
2968
2969static __inline__ __m128i __DEFAULT_FN_ATTRS
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002970_mm_max_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002971 return (__m128i)__builtin_ia32_pmaxsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002972}
2973
Craig Topperf2043b02018-05-23 04:51:54 +00002974static __inline__ __m128i __DEFAULT_FN_ATTRS
2975_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
2976 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2977 (__v2di)_mm_max_epi64(__A, __B),
2978 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002979}
2980
Craig Topperf2043b02018-05-23 04:51:54 +00002981static __inline__ __m128i __DEFAULT_FN_ATTRS
2982_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2983 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2984 (__v2di)_mm_max_epi64(__A, __B),
2985 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002986}
2987
2988static __inline__ __m256i __DEFAULT_FN_ATTRS
2989_mm256_max_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002990 return (__m256i)__builtin_ia32_pmaxsq256((__v4di)__A, (__v4di)__B);
2991}
2992
2993static __inline__ __m256i __DEFAULT_FN_ATTRS
2994_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
2995 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
2996 (__v4di)_mm256_max_epi64(__A, __B),
2997 (__v4di)_mm256_setzero_si256());
2998}
2999
3000static __inline__ __m256i __DEFAULT_FN_ATTRS
3001_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3002 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3003 (__v4di)_mm256_max_epi64(__A, __B),
3004 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003005}
3006
3007static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003008_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3009 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3010 (__v4si)_mm_max_epu32(__A, __B),
3011 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003012}
3013
3014static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003015_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3016 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3017 (__v4si)_mm_max_epu32(__A, __B),
3018 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003019}
3020
3021static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003022_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3023 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3024 (__v8si)_mm256_max_epu32(__A, __B),
3025 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003026}
3027
3028static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003029_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3030 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3031 (__v8si)_mm256_max_epu32(__A, __B),
3032 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003033}
3034
3035static __inline__ __m128i __DEFAULT_FN_ATTRS
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003036_mm_max_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003037 return (__m128i)__builtin_ia32_pmaxuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003038}
3039
3040static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003041_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3042 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3043 (__v2di)_mm_max_epu64(__A, __B),
3044 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003045}
3046
Craig Topperf2043b02018-05-23 04:51:54 +00003047static __inline__ __m128i __DEFAULT_FN_ATTRS
3048_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3049 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3050 (__v2di)_mm_max_epu64(__A, __B),
3051 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003052}
3053
3054static __inline__ __m256i __DEFAULT_FN_ATTRS
3055_mm256_max_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003056 return (__m256i)__builtin_ia32_pmaxuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003057}
3058
3059static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003060_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3061 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3062 (__v4di)_mm256_max_epu64(__A, __B),
3063 (__v4di)_mm256_setzero_si256());
3064}
3065
3066static __inline__ __m256i __DEFAULT_FN_ATTRS
3067_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3068 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3069 (__v4di)_mm256_max_epu64(__A, __B),
3070 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003071}
3072
3073static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003074_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3075 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3076 (__v4si)_mm_min_epi32(__A, __B),
3077 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003078}
3079
3080static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003081_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3082 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3083 (__v4si)_mm_min_epi32(__A, __B),
3084 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003085}
3086
3087static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003088_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3089 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3090 (__v8si)_mm256_min_epi32(__A, __B),
3091 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003092}
3093
3094static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003095_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3096 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3097 (__v8si)_mm256_min_epi32(__A, __B),
3098 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003099}
3100
3101static __inline__ __m128i __DEFAULT_FN_ATTRS
3102_mm_min_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003103 return (__m128i)__builtin_ia32_pminsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003104}
3105
3106static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003107_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3108 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3109 (__v2di)_mm_min_epi64(__A, __B),
3110 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003111}
3112
3113static __inline__ __m128i __DEFAULT_FN_ATTRS
3114_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003115 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3116 (__v2di)_mm_min_epi64(__A, __B),
3117 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003118}
3119
3120static __inline__ __m256i __DEFAULT_FN_ATTRS
3121_mm256_min_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003122 return (__m256i)__builtin_ia32_pminsq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003123}
3124
3125static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003126_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3127 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3128 (__v4di)_mm256_min_epi64(__A, __B),
3129 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003130}
3131
3132static __inline__ __m256i __DEFAULT_FN_ATTRS
3133_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003134 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3135 (__v4di)_mm256_min_epi64(__A, __B),
3136 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003137}
3138
3139static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003140_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3141 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3142 (__v4si)_mm_min_epu32(__A, __B),
3143 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003144}
3145
3146static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003147_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3148 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3149 (__v4si)_mm_min_epu32(__A, __B),
3150 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003151}
3152
3153static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003154_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3155 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3156 (__v8si)_mm256_min_epu32(__A, __B),
3157 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003158}
3159
3160static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003161_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3162 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3163 (__v8si)_mm256_min_epu32(__A, __B),
3164 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003165}
3166
3167static __inline__ __m128i __DEFAULT_FN_ATTRS
3168_mm_min_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003169 return (__m128i)__builtin_ia32_pminuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003170}
3171
3172static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003173_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3174 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3175 (__v2di)_mm_min_epu64(__A, __B),
3176 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003177}
3178
3179static __inline__ __m128i __DEFAULT_FN_ATTRS
3180_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003181 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3182 (__v2di)_mm_min_epu64(__A, __B),
3183 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003184}
3185
3186static __inline__ __m256i __DEFAULT_FN_ATTRS
3187_mm256_min_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003188 return (__m256i)__builtin_ia32_pminuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003189}
3190
3191static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003192_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3193 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3194 (__v4di)_mm256_min_epu64(__A, __B),
3195 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003196}
3197
3198static __inline__ __m256i __DEFAULT_FN_ATTRS
3199_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003200 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3201 (__v4di)_mm256_min_epu64(__A, __B),
3202 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003203}
3204
Craig Topperd2661882016-05-17 04:41:48 +00003205#define _mm_roundscale_pd(A, imm) __extension__ ({ \
3206 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3207 (int)(imm), \
3208 (__v2df)_mm_setzero_pd(), \
3209 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003210
3211
Craig Topperd2661882016-05-17 04:41:48 +00003212#define _mm_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3213 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3214 (int)(imm), \
3215 (__v2df)(__m128d)(W), \
3216 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003217
3218
Craig Topperd2661882016-05-17 04:41:48 +00003219#define _mm_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3220 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3221 (int)(imm), \
3222 (__v2df)_mm_setzero_pd(), \
3223 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003224
3225
Craig Topperd2661882016-05-17 04:41:48 +00003226#define _mm256_roundscale_pd(A, imm) __extension__ ({ \
3227 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3228 (int)(imm), \
3229 (__v4df)_mm256_setzero_pd(), \
3230 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003231
3232
Craig Topperd2661882016-05-17 04:41:48 +00003233#define _mm256_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3234 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3235 (int)(imm), \
3236 (__v4df)(__m256d)(W), \
3237 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003238
3239
Craig Topperd2661882016-05-17 04:41:48 +00003240#define _mm256_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3241 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3242 (int)(imm), \
3243 (__v4df)_mm256_setzero_pd(), \
3244 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003245
Craig Topperd2661882016-05-17 04:41:48 +00003246#define _mm_roundscale_ps(A, imm) __extension__ ({ \
3247 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3248 (__v4sf)_mm_setzero_ps(), \
3249 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003250
3251
Craig Topperd2661882016-05-17 04:41:48 +00003252#define _mm_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3253 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3254 (__v4sf)(__m128)(W), \
3255 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003256
3257
Craig Topperd2661882016-05-17 04:41:48 +00003258#define _mm_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3259 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3260 (__v4sf)_mm_setzero_ps(), \
3261 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003262
Craig Topperd2661882016-05-17 04:41:48 +00003263#define _mm256_roundscale_ps(A, imm) __extension__ ({ \
3264 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3265 (__v8sf)_mm256_setzero_ps(), \
3266 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003267
Craig Topperd2661882016-05-17 04:41:48 +00003268#define _mm256_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3269 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3270 (__v8sf)(__m256)(W), \
3271 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003272
3273
Craig Topperd2661882016-05-17 04:41:48 +00003274#define _mm256_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3275 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3276 (__v8sf)_mm256_setzero_ps(), \
3277 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003278
3279static __inline__ __m128d __DEFAULT_FN_ATTRS
3280_mm_scalef_pd (__m128d __A, __m128d __B) {
3281 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3282 (__v2df) __B,
3283 (__v2df)
3284 _mm_setzero_pd (),
3285 (__mmask8) -1);
3286}
3287
3288static __inline__ __m128d __DEFAULT_FN_ATTRS
3289_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3290 __m128d __B) {
3291 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3292 (__v2df) __B,
3293 (__v2df) __W,
3294 (__mmask8) __U);
3295}
3296
3297static __inline__ __m128d __DEFAULT_FN_ATTRS
3298_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3299 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3300 (__v2df) __B,
3301 (__v2df)
3302 _mm_setzero_pd (),
3303 (__mmask8) __U);
3304}
3305
3306static __inline__ __m256d __DEFAULT_FN_ATTRS
3307_mm256_scalef_pd (__m256d __A, __m256d __B) {
3308 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3309 (__v4df) __B,
3310 (__v4df)
3311 _mm256_setzero_pd (),
3312 (__mmask8) -1);
3313}
3314
3315static __inline__ __m256d __DEFAULT_FN_ATTRS
3316_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3317 __m256d __B) {
3318 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3319 (__v4df) __B,
3320 (__v4df) __W,
3321 (__mmask8) __U);
3322}
3323
3324static __inline__ __m256d __DEFAULT_FN_ATTRS
3325_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3326 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3327 (__v4df) __B,
3328 (__v4df)
3329 _mm256_setzero_pd (),
3330 (__mmask8) __U);
3331}
3332
3333static __inline__ __m128 __DEFAULT_FN_ATTRS
3334_mm_scalef_ps (__m128 __A, __m128 __B) {
3335 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3336 (__v4sf) __B,
3337 (__v4sf)
3338 _mm_setzero_ps (),
3339 (__mmask8) -1);
3340}
3341
3342static __inline__ __m128 __DEFAULT_FN_ATTRS
3343_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3344 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3345 (__v4sf) __B,
3346 (__v4sf) __W,
3347 (__mmask8) __U);
3348}
3349
3350static __inline__ __m128 __DEFAULT_FN_ATTRS
3351_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3352 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3353 (__v4sf) __B,
3354 (__v4sf)
3355 _mm_setzero_ps (),
3356 (__mmask8) __U);
3357}
3358
3359static __inline__ __m256 __DEFAULT_FN_ATTRS
3360_mm256_scalef_ps (__m256 __A, __m256 __B) {
3361 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3362 (__v8sf) __B,
3363 (__v8sf)
3364 _mm256_setzero_ps (),
3365 (__mmask8) -1);
3366}
3367
3368static __inline__ __m256 __DEFAULT_FN_ATTRS
3369_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3370 __m256 __B) {
3371 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3372 (__v8sf) __B,
3373 (__v8sf) __W,
3374 (__mmask8) __U);
3375}
3376
3377static __inline__ __m256 __DEFAULT_FN_ATTRS
3378_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3379 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3380 (__v8sf) __B,
3381 (__v8sf)
3382 _mm256_setzero_ps (),
3383 (__mmask8) __U);
3384}
3385
Craig Topperd2661882016-05-17 04:41:48 +00003386#define _mm_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3387 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3388 (__v2di)(__m128i)(index), \
3389 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003390
Craig Topperd2661882016-05-17 04:41:48 +00003391#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3392 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3393 (__v2di)(__m128i)(index), \
3394 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003395
Craig Topperd2661882016-05-17 04:41:48 +00003396#define _mm_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3397 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3398 (__v2di)(__m128i)(index), \
3399 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003400
Craig Topperd2661882016-05-17 04:41:48 +00003401#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3402 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3403 (__v2di)(__m128i)(index), \
3404 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003405
Craig Topperd2661882016-05-17 04:41:48 +00003406#define _mm256_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3407 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3408 (__v4di)(__m256i)(index), \
3409 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003410
Craig Topperd2661882016-05-17 04:41:48 +00003411#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3412 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3413 (__v4di)(__m256i)(index), \
3414 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003415
Craig Topperd2661882016-05-17 04:41:48 +00003416#define _mm256_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3417 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3418 (__v4di)(__m256i)(index), \
3419 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003420
Craig Topperd2661882016-05-17 04:41:48 +00003421#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3422 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3423 (__v4di)(__m256i)(index), \
3424 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003425
Craig Topperd2661882016-05-17 04:41:48 +00003426#define _mm_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3427 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3428 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3429 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003430
Craig Topperd2661882016-05-17 04:41:48 +00003431#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3432 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3433 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3434 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003435
Craig Topperd2661882016-05-17 04:41:48 +00003436#define _mm_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3437 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3438 (__v2di)(__m128i)(index), \
3439 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003440
Craig Topperd2661882016-05-17 04:41:48 +00003441#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3442 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3443 (__v2di)(__m128i)(index), \
3444 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003445
Craig Topperd2661882016-05-17 04:41:48 +00003446#define _mm256_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3447 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3448 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3449 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003450
Craig Topperd2661882016-05-17 04:41:48 +00003451#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3452 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3453 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3454 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003455
Craig Topperd2661882016-05-17 04:41:48 +00003456#define _mm256_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3457 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3458 (__v4di)(__m256i)(index), \
3459 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003460
Craig Topperd2661882016-05-17 04:41:48 +00003461#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3462 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3463 (__v4di)(__m256i)(index), \
3464 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003465
Craig Topperd2661882016-05-17 04:41:48 +00003466#define _mm_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3467 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3468 (__v4si)(__m128i)(index), \
3469 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003470
Craig Topperd2661882016-05-17 04:41:48 +00003471#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3472 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3473 (__v4si)(__m128i)(index), \
3474 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003475
Craig Topperd2661882016-05-17 04:41:48 +00003476#define _mm_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3477 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
3478 (__v4si)(__m128i)(index), \
3479 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003480
Craig Topperd2661882016-05-17 04:41:48 +00003481#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3482 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3483 (__v4si)(__m128i)(index), \
3484 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003485
Craig Topperd2661882016-05-17 04:41:48 +00003486#define _mm256_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3487 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
3488 (__v4si)(__m128i)(index), \
3489 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003490
Craig Topperd2661882016-05-17 04:41:48 +00003491#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3492 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3493 (__v4si)(__m128i)(index), \
3494 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003495
Craig Topperd2661882016-05-17 04:41:48 +00003496#define _mm256_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3497 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
3498 (__v4si)(__m128i)(index), \
3499 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003500
Craig Topperd2661882016-05-17 04:41:48 +00003501#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3502 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3503 (__v4si)(__m128i)(index), \
3504 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003505
Craig Topperd2661882016-05-17 04:41:48 +00003506#define _mm_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3507 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
3508 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3509 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003510
Craig Topperd2661882016-05-17 04:41:48 +00003511#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3512 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3513 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3514 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003515
Craig Topperd2661882016-05-17 04:41:48 +00003516#define _mm_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3517 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
3518 (__v4si)(__m128i)(index), \
3519 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003520
Craig Topperd2661882016-05-17 04:41:48 +00003521#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3522 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3523 (__v4si)(__m128i)(index), \
3524 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003525
Craig Topperd2661882016-05-17 04:41:48 +00003526#define _mm256_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3527 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
3528 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3529 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003530
Craig Topperd2661882016-05-17 04:41:48 +00003531#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3532 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3533 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3534 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003535
Craig Topperd2661882016-05-17 04:41:48 +00003536#define _mm256_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3537 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
3538 (__v8si)(__m256i)(index), \
3539 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003540
Craig Topperd2661882016-05-17 04:41:48 +00003541#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3542 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3543 (__v8si)(__m256i)(index), \
3544 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003545
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003546static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003547_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3548 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3549 (__v2df)_mm_sqrt_pd(__A),
3550 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003551}
3552
3553static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003554_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3555 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3556 (__v2df)_mm_sqrt_pd(__A),
3557 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003558}
3559
3560static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003561_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3562 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3563 (__v4df)_mm256_sqrt_pd(__A),
3564 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003565}
3566
3567static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003568_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3569 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3570 (__v4df)_mm256_sqrt_pd(__A),
3571 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003572}
3573
3574static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003575_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3576 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3577 (__v4sf)_mm_sqrt_ps(__A),
3578 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003579}
3580
3581static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003582_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3583 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3584 (__v4sf)_mm_sqrt_ps(__A),
3585 (__v4sf)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003586}
3587
3588static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003589_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3590 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3591 (__v8sf)_mm256_sqrt_ps(__A),
3592 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003593}
3594
3595static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003596_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3597 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3598 (__v8sf)_mm256_sqrt_ps(__A),
3599 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003600}
3601
3602static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003603_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3604 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3605 (__v2df)_mm_sub_pd(__A, __B),
3606 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003607}
3608
3609static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003610_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3611 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3612 (__v2df)_mm_sub_pd(__A, __B),
3613 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003614}
3615
3616static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003617_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3618 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3619 (__v4df)_mm256_sub_pd(__A, __B),
3620 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003621}
3622
3623static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003624_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3625 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3626 (__v4df)_mm256_sub_pd(__A, __B),
3627 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003628}
3629
3630static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003631_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3632 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3633 (__v4sf)_mm_sub_ps(__A, __B),
3634 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003635}
3636
3637static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003638_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3639 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3640 (__v4sf)_mm_sub_ps(__A, __B),
3641 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003642}
3643
3644static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003645_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3646 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3647 (__v8sf)_mm256_sub_ps(__A, __B),
3648 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003649}
3650
3651static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003652_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3653 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3654 (__v8sf)_mm256_sub_ps(__A, __B),
3655 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003656}
3657
3658static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003659_mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
3660 return (__m128i)__builtin_ia32_vpermi2vard128((__v4si) __A, (__v4si)__I,
3661 (__v4si)__B);
3662}
3663
3664static __inline__ __m128i __DEFAULT_FN_ATTRS
3665_mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I,
3666 __m128i __B) {
3667 return (__m128i)__builtin_ia32_selectd_128(__U,
3668 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3669 (__v4si)__A);
3670}
3671
3672static __inline__ __m128i __DEFAULT_FN_ATTRS
3673_mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,
3674 __m128i __B) {
3675 return (__m128i)__builtin_ia32_selectd_128(__U,
3676 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3677 (__v4si)__I);
3678}
3679
3680static __inline__ __m128i __DEFAULT_FN_ATTRS
3681_mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,
3682 __m128i __B) {
3683 return (__m128i)__builtin_ia32_selectd_128(__U,
3684 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3685 (__v4si)_mm_setzero_si128());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003686}
3687
3688static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003689_mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
3690 return (__m256i)__builtin_ia32_vpermi2vard256((__v8si)__A, (__v8si) __I,
3691 (__v8si) __B);
3692}
3693
3694static __inline__ __m256i __DEFAULT_FN_ATTRS
3695_mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I,
3696 __m256i __B) {
3697 return (__m256i)__builtin_ia32_selectd_256(__U,
3698 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3699 (__v8si)__A);
3700}
3701
3702static __inline__ __m256i __DEFAULT_FN_ATTRS
3703_mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U,
3704 __m256i __B) {
3705 return (__m256i)__builtin_ia32_selectd_256(__U,
3706 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3707 (__v8si)__I);
3708}
3709
3710static __inline__ __m256i __DEFAULT_FN_ATTRS
3711_mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I,
3712 __m256i __B) {
3713 return (__m256i)__builtin_ia32_selectd_256(__U,
3714 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3715 (__v8si)_mm256_setzero_si256());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003716}
3717
3718static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003719_mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
3720 return (__m128d)__builtin_ia32_vpermi2varpd128((__v2df)__A, (__v2di)__I,
3721 (__v2df)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003722}
3723
3724static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003725_mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
3726 return (__m128d)__builtin_ia32_selectpd_128(__U,
3727 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3728 (__v2df)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003729}
3730
3731static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003732_mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
3733 return (__m128d)__builtin_ia32_selectpd_128(__U,
3734 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3735 (__v2df)(__m128d)__I);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003736}
3737
3738static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003739_mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
3740 return (__m128d)__builtin_ia32_selectpd_128(__U,
3741 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3742 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003743}
3744
3745static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003746_mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
3747 return (__m256d)__builtin_ia32_vpermi2varpd256((__v4df)__A, (__v4di)__I,
3748 (__v4df)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003749}
3750
3751static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003752_mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I,
3753 __m256d __B) {
3754 return (__m256d)__builtin_ia32_selectpd_256(__U,
3755 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3756 (__v4df)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003757}
3758
3759static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003760_mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,
3761 __m256d __B) {
3762 return (__m256d)__builtin_ia32_selectpd_256(__U,
3763 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3764 (__v4df)(__m256d)__I);
3765}
3766
3767static __inline__ __m256d __DEFAULT_FN_ATTRS
3768_mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,
3769 __m256d __B) {
3770 return (__m256d)__builtin_ia32_selectpd_256(__U,
3771 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3772 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003773}
3774
3775static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003776_mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
3777 return (__m128)__builtin_ia32_vpermi2varps128((__v4sf)__A, (__v4si)__I,
3778 (__v4sf)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003779}
3780
3781static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003782_mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
3783 return (__m128)__builtin_ia32_selectps_128(__U,
3784 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3785 (__v4sf)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003786}
3787
3788static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003789_mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
3790 return (__m128)__builtin_ia32_selectps_128(__U,
3791 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3792 (__v4sf)(__m128)__I);
3793}
3794
3795static __inline__ __m128 __DEFAULT_FN_ATTRS
3796_mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
3797 return (__m128)__builtin_ia32_selectps_128(__U,
3798 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3799 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003800}
3801
3802static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003803_mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
3804 return (__m256)__builtin_ia32_vpermi2varps256((__v8sf)__A, (__v8si)__I,
3805 (__v8sf) __B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003806}
3807
3808static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003809_mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
3810 return (__m256)__builtin_ia32_selectps_256(__U,
3811 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3812 (__v8sf)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003813}
3814
3815static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003816_mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,
3817 __m256 __B) {
3818 return (__m256)__builtin_ia32_selectps_256(__U,
3819 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3820 (__v8sf)(__m256)__I);
3821}
3822
3823static __inline__ __m256 __DEFAULT_FN_ATTRS
3824_mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I,
3825 __m256 __B) {
3826 return (__m256)__builtin_ia32_selectps_256(__U,
3827 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3828 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003829}
3830
3831static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003832_mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
3833 return (__m128i)__builtin_ia32_vpermi2varq128((__v2di)__A, (__v2di)__I,
3834 (__v2di)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003835}
3836
3837static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003838_mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I,
3839 __m128i __B) {
3840 return (__m128i)__builtin_ia32_selectq_128(__U,
3841 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3842 (__v2di)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003843}
3844
3845static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003846_mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,
3847 __m128i __B) {
3848 return (__m128i)__builtin_ia32_selectq_128(__U,
3849 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3850 (__v2di)__I);
3851}
3852
3853static __inline__ __m128i __DEFAULT_FN_ATTRS
3854_mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I,
3855 __m128i __B) {
3856 return (__m128i)__builtin_ia32_selectq_128(__U,
3857 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3858 (__v2di)_mm_setzero_si128());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003859}
3860
3861
3862static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003863_mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
3864 return (__m256i)__builtin_ia32_vpermi2varq256((__v4di)__A, (__v4di) __I,
3865 (__v4di) __B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003866}
3867
3868static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003869_mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I,
3870 __m256i __B) {
3871 return (__m256i)__builtin_ia32_selectq_256(__U,
3872 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3873 (__v4di)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003874}
3875
3876static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003877_mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U,
3878 __m256i __B) {
3879 return (__m256i)__builtin_ia32_selectq_256(__U,
3880 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3881 (__v4di)__I);
3882}
3883
3884static __inline__ __m256i __DEFAULT_FN_ATTRS
3885_mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I,
3886 __m256i __B) {
3887 return (__m256i)__builtin_ia32_selectq_256(__U,
3888 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3889 (__v4di)_mm256_setzero_si256());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003890}
3891
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003892static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003893_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003894{
Craig Topper11dda922016-10-22 21:24:48 +00003895 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3896 (__v4si)_mm_cvtepi8_epi32(__A),
3897 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003898}
3899
3900static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003901_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003902{
Craig Topper11dda922016-10-22 21:24:48 +00003903 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3904 (__v4si)_mm_cvtepi8_epi32(__A),
3905 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003906}
3907
3908static __inline__ __m256i __DEFAULT_FN_ATTRS
3909_mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
3910{
Craig Topper11dda922016-10-22 21:24:48 +00003911 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3912 (__v8si)_mm256_cvtepi8_epi32(__A),
3913 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003914}
3915
3916static __inline__ __m256i __DEFAULT_FN_ATTRS
3917_mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
3918{
Craig Topper11dda922016-10-22 21:24:48 +00003919 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3920 (__v8si)_mm256_cvtepi8_epi32(__A),
3921 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003922}
3923
3924static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003925_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003926{
Craig Topper11dda922016-10-22 21:24:48 +00003927 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3928 (__v2di)_mm_cvtepi8_epi64(__A),
3929 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003930}
3931
3932static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003933_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003934{
Craig Topper11dda922016-10-22 21:24:48 +00003935 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3936 (__v2di)_mm_cvtepi8_epi64(__A),
3937 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003938}
3939
3940static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003941_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003942{
Craig Topper11dda922016-10-22 21:24:48 +00003943 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3944 (__v4di)_mm256_cvtepi8_epi64(__A),
3945 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003946}
3947
3948static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003949_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003950{
Craig Topper11dda922016-10-22 21:24:48 +00003951 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3952 (__v4di)_mm256_cvtepi8_epi64(__A),
3953 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003954}
3955
3956static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003957_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003958{
Craig Topper11dda922016-10-22 21:24:48 +00003959 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3960 (__v2di)_mm_cvtepi32_epi64(__X),
3961 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003962}
3963
3964static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003965_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003966{
Craig Topper11dda922016-10-22 21:24:48 +00003967 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3968 (__v2di)_mm_cvtepi32_epi64(__X),
3969 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003970}
3971
3972static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003973_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003974{
Craig Topper11dda922016-10-22 21:24:48 +00003975 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3976 (__v4di)_mm256_cvtepi32_epi64(__X),
3977 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003978}
3979
3980static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003981_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003982{
Craig Topper11dda922016-10-22 21:24:48 +00003983 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3984 (__v4di)_mm256_cvtepi32_epi64(__X),
3985 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003986}
3987
3988static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003989_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003990{
Craig Topper11dda922016-10-22 21:24:48 +00003991 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3992 (__v4si)_mm_cvtepi16_epi32(__A),
3993 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003994}
3995
3996static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003997_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003998{
Craig Topper11dda922016-10-22 21:24:48 +00003999 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4000 (__v4si)_mm_cvtepi16_epi32(__A),
4001 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004002}
4003
4004static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004005_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004006{
Craig Topper11dda922016-10-22 21:24:48 +00004007 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4008 (__v8si)_mm256_cvtepi16_epi32(__A),
4009 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004010}
4011
4012static __inline__ __m256i __DEFAULT_FN_ATTRS
4013_mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4014{
Craig Topper11dda922016-10-22 21:24:48 +00004015 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4016 (__v8si)_mm256_cvtepi16_epi32(__A),
4017 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004018}
4019
4020static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004021_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004022{
Craig Topper11dda922016-10-22 21:24:48 +00004023 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4024 (__v2di)_mm_cvtepi16_epi64(__A),
4025 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004026}
4027
4028static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004029_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004030{
Craig Topper11dda922016-10-22 21:24:48 +00004031 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4032 (__v2di)_mm_cvtepi16_epi64(__A),
4033 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004034}
4035
4036static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004037_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004038{
Craig Topper11dda922016-10-22 21:24:48 +00004039 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4040 (__v4di)_mm256_cvtepi16_epi64(__A),
4041 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004042}
4043
4044static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004045_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004046{
Craig Topper11dda922016-10-22 21:24:48 +00004047 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4048 (__v4di)_mm256_cvtepi16_epi64(__A),
4049 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004050}
4051
4052
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004053static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004054_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004055{
Craig Topper11dda922016-10-22 21:24:48 +00004056 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4057 (__v4si)_mm_cvtepu8_epi32(__A),
4058 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004059}
4060
4061static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004062_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004063{
Craig Topper11dda922016-10-22 21:24:48 +00004064 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4065 (__v4si)_mm_cvtepu8_epi32(__A),
4066 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004067}
4068
4069static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004070_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004071{
Craig Topper11dda922016-10-22 21:24:48 +00004072 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4073 (__v8si)_mm256_cvtepu8_epi32(__A),
4074 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004075}
4076
4077static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004078_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004079{
Craig Topper11dda922016-10-22 21:24:48 +00004080 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4081 (__v8si)_mm256_cvtepu8_epi32(__A),
4082 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004083}
4084
4085static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004086_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004087{
Craig Topper11dda922016-10-22 21:24:48 +00004088 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4089 (__v2di)_mm_cvtepu8_epi64(__A),
4090 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004091}
4092
4093static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004094_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004095{
Craig Topper11dda922016-10-22 21:24:48 +00004096 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4097 (__v2di)_mm_cvtepu8_epi64(__A),
4098 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004099}
4100
4101static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004102_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004103{
Craig Topper11dda922016-10-22 21:24:48 +00004104 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4105 (__v4di)_mm256_cvtepu8_epi64(__A),
4106 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004107}
4108
4109static __inline__ __m256i __DEFAULT_FN_ATTRS
4110_mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4111{
Craig Topper11dda922016-10-22 21:24:48 +00004112 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4113 (__v4di)_mm256_cvtepu8_epi64(__A),
4114 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004115}
4116
4117static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004118_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004119{
Craig Topper11dda922016-10-22 21:24:48 +00004120 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4121 (__v2di)_mm_cvtepu32_epi64(__X),
4122 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004123}
4124
4125static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004126_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004127{
Craig Topper11dda922016-10-22 21:24:48 +00004128 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4129 (__v2di)_mm_cvtepu32_epi64(__X),
4130 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004131}
4132
4133static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004134_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004135{
Craig Topper11dda922016-10-22 21:24:48 +00004136 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4137 (__v4di)_mm256_cvtepu32_epi64(__X),
4138 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004139}
4140
4141static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004142_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004143{
Craig Topper11dda922016-10-22 21:24:48 +00004144 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4145 (__v4di)_mm256_cvtepu32_epi64(__X),
4146 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004147}
4148
4149static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004150_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004151{
Craig Topper11dda922016-10-22 21:24:48 +00004152 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4153 (__v4si)_mm_cvtepu16_epi32(__A),
4154 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004155}
4156
4157static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004158_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004159{
Craig Topper11dda922016-10-22 21:24:48 +00004160 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4161 (__v4si)_mm_cvtepu16_epi32(__A),
4162 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004163}
4164
4165static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004166_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004167{
Craig Topper11dda922016-10-22 21:24:48 +00004168 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4169 (__v8si)_mm256_cvtepu16_epi32(__A),
4170 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004171}
4172
4173static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004174_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004175{
Craig Topper11dda922016-10-22 21:24:48 +00004176 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4177 (__v8si)_mm256_cvtepu16_epi32(__A),
4178 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004179}
4180
4181static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004182_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004183{
Craig Topper11dda922016-10-22 21:24:48 +00004184 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4185 (__v2di)_mm_cvtepu16_epi64(__A),
4186 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004187}
4188
4189static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004190_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004191{
Craig Topper11dda922016-10-22 21:24:48 +00004192 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4193 (__v2di)_mm_cvtepu16_epi64(__A),
4194 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004195}
4196
4197static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004198_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004199{
Craig Topper11dda922016-10-22 21:24:48 +00004200 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4201 (__v4di)_mm256_cvtepu16_epi64(__A),
4202 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004203}
4204
4205static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004206_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004207{
Craig Topper11dda922016-10-22 21:24:48 +00004208 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4209 (__v4di)_mm256_cvtepu16_epi64(__A),
4210 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004211}
4212
4213
Michael Zuckerman38a27272016-02-22 09:05:41 +00004214#define _mm_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004215 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4216 (__v4si)_mm_setzero_si128(), \
4217 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004218
4219#define _mm_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004220 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4221 (__v4si)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004222
4223#define _mm_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004224 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4225 (__v4si)_mm_setzero_si128(), \
4226 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004227
4228#define _mm256_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004229 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4230 (__v8si)_mm256_setzero_si256(), \
4231 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004232
4233#define _mm256_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004234 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4235 (__v8si)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004236
4237#define _mm256_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004238 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4239 (__v8si)_mm256_setzero_si256(), \
4240 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004241
Michael Zuckerman477e0a32016-02-22 09:42:57 +00004242#define _mm_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004243 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
Craig Topperdff5b312018-05-30 18:02:11 +00004244 (__v2di)_mm_setzero_si128(), \
Craig Topperd2661882016-05-17 04:41:48 +00004245 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004246
4247#define _mm_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004248 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4249 (__v2di)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004250
4251#define _mm_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004252 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
Craig Topperdff5b312018-05-30 18:02:11 +00004253 (__v2di)_mm_setzero_si128(), \
Craig Topperd2661882016-05-17 04:41:48 +00004254 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004255
4256#define _mm256_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004257 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4258 (__v4di)_mm256_setzero_si256(), \
4259 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004260
4261#define _mm256_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004262 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4263 (__v4di)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004264
4265#define _mm256_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004266 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4267 (__v4di)_mm256_setzero_si256(), \
4268 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004269
Michael Zuckerman0231f162016-02-23 13:41:13 +00004270static __inline__ __m128i __DEFAULT_FN_ATTRS
4271_mm_rolv_epi32 (__m128i __A, __m128i __B)
4272{
4273 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4274 (__v4si) __B,
4275 (__v4si)
4276 _mm_setzero_si128 (),
4277 (__mmask8) -1);
4278}
4279
4280static __inline__ __m128i __DEFAULT_FN_ATTRS
4281_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4282 __m128i __B)
4283{
4284 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4285 (__v4si) __B,
4286 (__v4si) __W,
4287 (__mmask8) __U);
4288}
4289
4290static __inline__ __m128i __DEFAULT_FN_ATTRS
4291_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4292{
4293 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4294 (__v4si) __B,
4295 (__v4si)
4296 _mm_setzero_si128 (),
4297 (__mmask8) __U);
4298}
4299
4300static __inline__ __m256i __DEFAULT_FN_ATTRS
4301_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4302{
4303 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4304 (__v8si) __B,
4305 (__v8si)
4306 _mm256_setzero_si256 (),
4307 (__mmask8) -1);
4308}
4309
4310static __inline__ __m256i __DEFAULT_FN_ATTRS
4311_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4312 __m256i __B)
4313{
4314 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4315 (__v8si) __B,
4316 (__v8si) __W,
4317 (__mmask8) __U);
4318}
4319
4320static __inline__ __m256i __DEFAULT_FN_ATTRS
4321_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4322{
4323 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4324 (__v8si) __B,
4325 (__v8si)
4326 _mm256_setzero_si256 (),
4327 (__mmask8) __U);
4328}
4329
4330static __inline__ __m128i __DEFAULT_FN_ATTRS
4331_mm_rolv_epi64 (__m128i __A, __m128i __B)
4332{
4333 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4334 (__v2di) __B,
4335 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004336 _mm_setzero_si128 (),
Michael Zuckerman0231f162016-02-23 13:41:13 +00004337 (__mmask8) -1);
4338}
4339
4340static __inline__ __m128i __DEFAULT_FN_ATTRS
4341_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4342 __m128i __B)
4343{
4344 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4345 (__v2di) __B,
4346 (__v2di) __W,
4347 (__mmask8) __U);
4348}
4349
4350static __inline__ __m128i __DEFAULT_FN_ATTRS
4351_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4352{
4353 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4354 (__v2di) __B,
4355 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004356 _mm_setzero_si128 (),
Michael Zuckerman0231f162016-02-23 13:41:13 +00004357 (__mmask8) __U);
4358}
4359
4360static __inline__ __m256i __DEFAULT_FN_ATTRS
4361_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4362{
4363 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4364 (__v4di) __B,
4365 (__v4di)
4366 _mm256_setzero_si256 (),
4367 (__mmask8) -1);
4368}
4369
4370static __inline__ __m256i __DEFAULT_FN_ATTRS
4371_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4372 __m256i __B)
4373{
4374 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4375 (__v4di) __B,
4376 (__v4di) __W,
4377 (__mmask8) __U);
4378}
4379
4380static __inline__ __m256i __DEFAULT_FN_ATTRS
4381_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4382{
4383 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4384 (__v4di) __B,
4385 (__v4di)
4386 _mm256_setzero_si256 (),
4387 (__mmask8) __U);
4388}
4389
Craig Topperd2661882016-05-17 04:41:48 +00004390#define _mm_ror_epi32(A, B) __extension__ ({ \
4391 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4392 (__v4si)_mm_setzero_si128(), \
4393 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004394
Craig Topperd2661882016-05-17 04:41:48 +00004395#define _mm_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4396 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4397 (__v4si)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004398
Craig Topperd2661882016-05-17 04:41:48 +00004399#define _mm_maskz_ror_epi32(U, A, B) __extension__ ({ \
4400 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4401 (__v4si)_mm_setzero_si128(), \
4402 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004403
Craig Topperd2661882016-05-17 04:41:48 +00004404#define _mm256_ror_epi32(A, B) __extension__ ({ \
4405 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4406 (__v8si)_mm256_setzero_si256(), \
4407 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004408
Craig Topperd2661882016-05-17 04:41:48 +00004409#define _mm256_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4410 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4411 (__v8si)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004412
Craig Topperd2661882016-05-17 04:41:48 +00004413#define _mm256_maskz_ror_epi32(U, A, B) __extension__ ({ \
4414 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4415 (__v8si)_mm256_setzero_si256(), \
4416 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004417
Craig Topperd2661882016-05-17 04:41:48 +00004418#define _mm_ror_epi64(A, B) __extension__ ({ \
4419 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
Craig Topperdff5b312018-05-30 18:02:11 +00004420 (__v2di)_mm_setzero_si128(), \
Craig Topperd2661882016-05-17 04:41:48 +00004421 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004422
Craig Topperd2661882016-05-17 04:41:48 +00004423#define _mm_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4424 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4425 (__v2di)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004426
Craig Topperd2661882016-05-17 04:41:48 +00004427#define _mm_maskz_ror_epi64(U, A, B) __extension__ ({ \
4428 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
Craig Topperdff5b312018-05-30 18:02:11 +00004429 (__v2di)_mm_setzero_si128(), \
Craig Topperd2661882016-05-17 04:41:48 +00004430 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004431
Craig Topperd2661882016-05-17 04:41:48 +00004432#define _mm256_ror_epi64(A, B) __extension__ ({ \
4433 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4434 (__v4di)_mm256_setzero_si256(), \
4435 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004436
Craig Topperd2661882016-05-17 04:41:48 +00004437#define _mm256_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4438 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4439 (__v4di)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004440
Craig Topperd2661882016-05-17 04:41:48 +00004441#define _mm256_maskz_ror_epi64(U, A, B) __extension__ ({ \
4442 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4443 (__v4di)_mm256_setzero_si256(), \
4444 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004445
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004446static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004447_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004448{
Craig Topper66b2fd12016-10-31 04:30:51 +00004449 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4450 (__v4si)_mm_sll_epi32(__A, __B),
4451 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004452}
4453
4454static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004455_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004456{
Craig Topper66b2fd12016-10-31 04:30:51 +00004457 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4458 (__v4si)_mm_sll_epi32(__A, __B),
4459 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004460}
4461
4462static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004463_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004464{
Craig Topper66b2fd12016-10-31 04:30:51 +00004465 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4466 (__v8si)_mm256_sll_epi32(__A, __B),
4467 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004468}
4469
4470static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004471_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004472{
Craig Topper66b2fd12016-10-31 04:30:51 +00004473 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4474 (__v8si)_mm256_sll_epi32(__A, __B),
4475 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004476}
4477
4478static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004479_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004480{
Craig Topper66b2fd12016-10-31 04:30:51 +00004481 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4482 (__v4si)_mm_slli_epi32(__A, __B),
4483 (__v4si)__W);
4484}
4485
4486static __inline__ __m128i __DEFAULT_FN_ATTRS
4487_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4488{
4489 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4490 (__v4si)_mm_slli_epi32(__A, __B),
4491 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004492}
4493
4494static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004495_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004496{
Craig Topper66b2fd12016-10-31 04:30:51 +00004497 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4498 (__v8si)_mm256_slli_epi32(__A, __B),
4499 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004500}
4501
4502static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004503_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004504{
Craig Topper66b2fd12016-10-31 04:30:51 +00004505 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4506 (__v8si)_mm256_slli_epi32(__A, __B),
4507 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004508}
4509
Craig Topper66b2fd12016-10-31 04:30:51 +00004510static __inline__ __m128i __DEFAULT_FN_ATTRS
4511_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4512{
4513 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4514 (__v2di)_mm_sll_epi64(__A, __B),
4515 (__v2di)__W);
4516}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004517
Craig Topper66b2fd12016-10-31 04:30:51 +00004518static __inline__ __m128i __DEFAULT_FN_ATTRS
4519_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4520{
4521 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4522 (__v2di)_mm_sll_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004523 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004524}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004525
Craig Topper66b2fd12016-10-31 04:30:51 +00004526static __inline__ __m256i __DEFAULT_FN_ATTRS
4527_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4528{
4529 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4530 (__v4di)_mm256_sll_epi64(__A, __B),
4531 (__v4di)__W);
4532}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004533
Craig Topper66b2fd12016-10-31 04:30:51 +00004534static __inline__ __m256i __DEFAULT_FN_ATTRS
4535_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4536{
4537 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4538 (__v4di)_mm256_sll_epi64(__A, __B),
4539 (__v4di)_mm256_setzero_si256());
4540}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004541
Craig Topper66b2fd12016-10-31 04:30:51 +00004542static __inline__ __m128i __DEFAULT_FN_ATTRS
4543_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4544{
4545 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4546 (__v2di)_mm_slli_epi64(__A, __B),
4547 (__v2di)__W);
4548}
4549
4550static __inline__ __m128i __DEFAULT_FN_ATTRS
4551_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4552{
4553 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4554 (__v2di)_mm_slli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004555 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004556}
4557
4558static __inline__ __m256i __DEFAULT_FN_ATTRS
4559_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4560{
4561 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4562 (__v4di)_mm256_slli_epi64(__A, __B),
4563 (__v4di)__W);
4564}
4565
4566static __inline__ __m256i __DEFAULT_FN_ATTRS
4567_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4568{
4569 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4570 (__v4di)_mm256_slli_epi64(__A, __B),
4571 (__v4di)_mm256_setzero_si256());
4572}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004573
Michael Zuckermane98cc742016-02-23 15:59:47 +00004574static __inline__ __m128i __DEFAULT_FN_ATTRS
4575_mm_rorv_epi32 (__m128i __A, __m128i __B)
4576{
4577 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4578 (__v4si) __B,
4579 (__v4si)
4580 _mm_setzero_si128 (),
4581 (__mmask8) -1);
4582}
4583
4584static __inline__ __m128i __DEFAULT_FN_ATTRS
4585_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4586 __m128i __B)
4587{
4588 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4589 (__v4si) __B,
4590 (__v4si) __W,
4591 (__mmask8) __U);
4592}
4593
4594static __inline__ __m128i __DEFAULT_FN_ATTRS
4595_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4596{
4597 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4598 (__v4si) __B,
4599 (__v4si)
4600 _mm_setzero_si128 (),
4601 (__mmask8) __U);
4602}
4603
4604static __inline__ __m256i __DEFAULT_FN_ATTRS
4605_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4606{
4607 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4608 (__v8si) __B,
4609 (__v8si)
4610 _mm256_setzero_si256 (),
4611 (__mmask8) -1);
4612}
4613
4614static __inline__ __m256i __DEFAULT_FN_ATTRS
4615_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4616 __m256i __B)
4617{
4618 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4619 (__v8si) __B,
4620 (__v8si) __W,
4621 (__mmask8) __U);
4622}
4623
4624static __inline__ __m256i __DEFAULT_FN_ATTRS
4625_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4626{
4627 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4628 (__v8si) __B,
4629 (__v8si)
4630 _mm256_setzero_si256 (),
4631 (__mmask8) __U);
4632}
4633
4634static __inline__ __m128i __DEFAULT_FN_ATTRS
4635_mm_rorv_epi64 (__m128i __A, __m128i __B)
4636{
4637 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4638 (__v2di) __B,
4639 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004640 _mm_setzero_si128 (),
Michael Zuckermane98cc742016-02-23 15:59:47 +00004641 (__mmask8) -1);
4642}
4643
4644static __inline__ __m128i __DEFAULT_FN_ATTRS
4645_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4646 __m128i __B)
4647{
4648 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4649 (__v2di) __B,
4650 (__v2di) __W,
4651 (__mmask8) __U);
4652}
4653
4654static __inline__ __m128i __DEFAULT_FN_ATTRS
4655_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4656{
4657 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4658 (__v2di) __B,
4659 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004660 _mm_setzero_si128 (),
Michael Zuckermane98cc742016-02-23 15:59:47 +00004661 (__mmask8) __U);
4662}
4663
4664static __inline__ __m256i __DEFAULT_FN_ATTRS
4665_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4666{
4667 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4668 (__v4di) __B,
4669 (__v4di)
4670 _mm256_setzero_si256 (),
4671 (__mmask8) -1);
4672}
4673
4674static __inline__ __m256i __DEFAULT_FN_ATTRS
4675_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4676 __m256i __B)
4677{
4678 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4679 (__v4di) __B,
4680 (__v4di) __W,
4681 (__mmask8) __U);
4682}
4683
4684static __inline__ __m256i __DEFAULT_FN_ATTRS
4685_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4686{
4687 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4688 (__v4di) __B,
4689 (__v4di)
4690 _mm256_setzero_si256 (),
4691 (__mmask8) __U);
4692}
4693
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004694static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004695_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004696{
Craig Topper66b2fd12016-10-31 04:30:51 +00004697 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4698 (__v2di)_mm_sllv_epi64(__X, __Y),
4699 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004700}
4701
4702static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004703_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004704{
Craig Topper66b2fd12016-10-31 04:30:51 +00004705 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4706 (__v2di)_mm_sllv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004707 (__v2di)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004708}
4709
4710static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004711_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004712{
Craig Topper66b2fd12016-10-31 04:30:51 +00004713 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4714 (__v4di)_mm256_sllv_epi64(__X, __Y),
4715 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004716}
4717
4718static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004719_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004720{
Craig Topper66b2fd12016-10-31 04:30:51 +00004721 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4722 (__v4di)_mm256_sllv_epi64(__X, __Y),
4723 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004724}
4725
4726static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004727_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004728{
Craig Topper66b2fd12016-10-31 04:30:51 +00004729 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4730 (__v4si)_mm_sllv_epi32(__X, __Y),
4731 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004732}
4733
4734static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004735_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004736{
Craig Topper66b2fd12016-10-31 04:30:51 +00004737 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4738 (__v4si)_mm_sllv_epi32(__X, __Y),
4739 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004740}
4741
4742static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004743_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004744{
Craig Topper66b2fd12016-10-31 04:30:51 +00004745 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4746 (__v8si)_mm256_sllv_epi32(__X, __Y),
4747 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004748}
4749
4750static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004751_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004752{
Craig Topper66b2fd12016-10-31 04:30:51 +00004753 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4754 (__v8si)_mm256_sllv_epi32(__X, __Y),
4755 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004756}
4757
4758static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004759_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004760{
Craig Topper66b2fd12016-10-31 04:30:51 +00004761 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4762 (__v2di)_mm_srlv_epi64(__X, __Y),
4763 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004764}
4765
4766static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004767_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004768{
Craig Topper66b2fd12016-10-31 04:30:51 +00004769 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4770 (__v2di)_mm_srlv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004771 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004772}
4773
4774static __inline__ __m256i __DEFAULT_FN_ATTRS
4775_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4776{
4777 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4778 (__v4di)_mm256_srlv_epi64(__X, __Y),
4779 (__v4di)__W);
4780}
4781
4782static __inline__ __m256i __DEFAULT_FN_ATTRS
4783_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4784{
4785 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4786 (__v4di)_mm256_srlv_epi64(__X, __Y),
4787 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004788}
4789
4790static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004791_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004792{
Craig Topper66b2fd12016-10-31 04:30:51 +00004793 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4794 (__v4si)_mm_srlv_epi32(__X, __Y),
4795 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004796}
4797
4798static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004799_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004800{
Craig Topper66b2fd12016-10-31 04:30:51 +00004801 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4802 (__v4si)_mm_srlv_epi32(__X, __Y),
4803 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004804}
4805
4806static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004807_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004808{
Craig Topper66b2fd12016-10-31 04:30:51 +00004809 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4810 (__v8si)_mm256_srlv_epi32(__X, __Y),
4811 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004812}
4813
4814static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004815_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004816{
Craig Topper66b2fd12016-10-31 04:30:51 +00004817 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4818 (__v8si)_mm256_srlv_epi32(__X, __Y),
4819 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004820}
4821
4822static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004823_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004824{
Craig Topper66b2fd12016-10-31 04:30:51 +00004825 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4826 (__v4si)_mm_srl_epi32(__A, __B),
4827 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004828}
4829
4830static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004831_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004832{
Craig Topper66b2fd12016-10-31 04:30:51 +00004833 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4834 (__v4si)_mm_srl_epi32(__A, __B),
4835 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004836}
4837
4838static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004839_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004840{
Craig Topper66b2fd12016-10-31 04:30:51 +00004841 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4842 (__v8si)_mm256_srl_epi32(__A, __B),
4843 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004844}
4845
4846static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004847_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004848{
Craig Topper66b2fd12016-10-31 04:30:51 +00004849 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4850 (__v8si)_mm256_srl_epi32(__A, __B),
4851 (__v8si)_mm256_setzero_si256());
4852}
4853
4854static __inline__ __m128i __DEFAULT_FN_ATTRS
4855_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4856{
4857 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4858 (__v4si)_mm_srli_epi32(__A, __B),
4859 (__v4si)__W);
4860}
4861
4862static __inline__ __m128i __DEFAULT_FN_ATTRS
4863_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4864{
4865 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4866 (__v4si)_mm_srli_epi32(__A, __B),
4867 (__v4si)_mm_setzero_si128());
4868}
4869
4870static __inline__ __m256i __DEFAULT_FN_ATTRS
4871_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4872{
4873 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4874 (__v8si)_mm256_srli_epi32(__A, __B),
4875 (__v8si)__W);
4876}
4877
4878static __inline__ __m256i __DEFAULT_FN_ATTRS
4879_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4880{
4881 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4882 (__v8si)_mm256_srli_epi32(__A, __B),
4883 (__v8si)_mm256_setzero_si256());
4884}
4885
4886static __inline__ __m128i __DEFAULT_FN_ATTRS
4887_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4888{
4889 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4890 (__v2di)_mm_srl_epi64(__A, __B),
4891 (__v2di)__W);
4892}
4893
4894static __inline__ __m128i __DEFAULT_FN_ATTRS
4895_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4896{
4897 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4898 (__v2di)_mm_srl_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004899 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004900}
4901
4902static __inline__ __m256i __DEFAULT_FN_ATTRS
4903_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4904{
4905 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4906 (__v4di)_mm256_srl_epi64(__A, __B),
4907 (__v4di)__W);
4908}
4909
4910static __inline__ __m256i __DEFAULT_FN_ATTRS
4911_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4912{
4913 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4914 (__v4di)_mm256_srl_epi64(__A, __B),
4915 (__v4di)_mm256_setzero_si256());
4916}
4917
4918static __inline__ __m128i __DEFAULT_FN_ATTRS
4919_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4920{
4921 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4922 (__v2di)_mm_srli_epi64(__A, __B),
4923 (__v2di)__W);
4924}
4925
4926static __inline__ __m128i __DEFAULT_FN_ATTRS
4927_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
4928{
4929 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4930 (__v2di)_mm_srli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004931 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004932}
4933
4934static __inline__ __m256i __DEFAULT_FN_ATTRS
4935_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4936{
4937 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4938 (__v4di)_mm256_srli_epi64(__A, __B),
4939 (__v4di)__W);
4940}
4941
4942static __inline__ __m256i __DEFAULT_FN_ATTRS
4943_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
4944{
4945 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4946 (__v4di)_mm256_srli_epi64(__A, __B),
4947 (__v4di)_mm256_setzero_si256());
4948}
4949
4950static __inline__ __m128i __DEFAULT_FN_ATTRS
4951_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
4952{
4953 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4954 (__v4si)_mm_srav_epi32(__X, __Y),
4955 (__v4si)__W);
4956}
4957
4958static __inline__ __m128i __DEFAULT_FN_ATTRS
4959_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
4960{
4961 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4962 (__v4si)_mm_srav_epi32(__X, __Y),
4963 (__v4si)_mm_setzero_si128());
4964}
4965
4966static __inline__ __m256i __DEFAULT_FN_ATTRS
4967_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4968{
4969 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4970 (__v8si)_mm256_srav_epi32(__X, __Y),
4971 (__v8si)__W);
4972}
4973
4974static __inline__ __m256i __DEFAULT_FN_ATTRS
4975_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
4976{
4977 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4978 (__v8si)_mm256_srav_epi32(__X, __Y),
4979 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004980}
4981
4982static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004983_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004984{
Craig Topper5e0709d2016-11-13 07:26:34 +00004985 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004986}
4987
4988static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004989_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004990{
Craig Topper5e0709d2016-11-13 07:26:34 +00004991 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4992 (__v2di)_mm_srav_epi64(__X, __Y),
4993 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004994}
4995
4996static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004997_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004998{
Craig Topper5e0709d2016-11-13 07:26:34 +00004999 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5000 (__v2di)_mm_srav_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00005001 (__v2di)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005002}
5003
5004static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005005_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005006{
Craig Topper5e0709d2016-11-13 07:26:34 +00005007 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005008}
5009
5010static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005011_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005012{
Craig Topper5e0709d2016-11-13 07:26:34 +00005013 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5014 (__v4di)_mm256_srav_epi64(__X, __Y),
5015 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005016}
5017
5018static __inline__ __m256i __DEFAULT_FN_ATTRS
5019_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5020{
Craig Topper5e0709d2016-11-13 07:26:34 +00005021 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5022 (__v4di)_mm256_srav_epi64(__X, __Y),
5023 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005024}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005025
Michael Zuckermane6542002016-05-23 08:01:48 +00005026static __inline__ __m128i __DEFAULT_FN_ATTRS
5027_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
5028{
Igor Bregeraadb8762016-06-08 13:59:20 +00005029 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5030 (__v4si) __A,
5031 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005032}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005033
Michael Zuckermane6542002016-05-23 08:01:48 +00005034static __inline__ __m128i __DEFAULT_FN_ATTRS
5035_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
5036{
Igor Bregeraadb8762016-06-08 13:59:20 +00005037 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5038 (__v4si) __A,
5039 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005040}
5041
5042
5043static __inline__ __m256i __DEFAULT_FN_ATTRS
5044_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
5045{
Igor Bregeraadb8762016-06-08 13:59:20 +00005046 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5047 (__v8si) __A,
5048 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005049}
5050
5051static __inline__ __m256i __DEFAULT_FN_ATTRS
5052_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
5053{
Igor Bregeraadb8762016-06-08 13:59:20 +00005054 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5055 (__v8si) __A,
5056 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005057}
5058
5059static __inline__ __m128i __DEFAULT_FN_ATTRS
5060_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5061{
5062 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5063 (__v4si) __W,
5064 (__mmask8)
5065 __U);
5066}
5067
5068static __inline__ __m128i __DEFAULT_FN_ATTRS
5069_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5070{
5071 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5072 (__v4si)
5073 _mm_setzero_si128 (),
5074 (__mmask8)
5075 __U);
5076}
5077
5078static __inline__ __m256i __DEFAULT_FN_ATTRS
5079_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5080{
5081 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5082 (__v8si) __W,
5083 (__mmask8)
5084 __U);
5085}
5086
5087static __inline__ __m256i __DEFAULT_FN_ATTRS
5088_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5089{
5090 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5091 (__v8si)
5092 _mm256_setzero_si256 (),
5093 (__mmask8)
5094 __U);
5095}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005096
5097static __inline__ void __DEFAULT_FN_ATTRS
5098_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5099{
5100 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5101 (__v4si) __A,
5102 (__mmask8) __U);
5103}
5104
5105static __inline__ void __DEFAULT_FN_ATTRS
5106_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5107{
5108 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5109 (__v8si) __A,
5110 (__mmask8) __U);
5111}
5112
5113static __inline__ __m128i __DEFAULT_FN_ATTRS
5114_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5115{
Igor Bregeraadb8762016-06-08 13:59:20 +00005116 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5117 (__v2di) __A,
5118 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005119}
5120
5121static __inline__ __m128i __DEFAULT_FN_ATTRS
5122_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5123{
Igor Bregeraadb8762016-06-08 13:59:20 +00005124 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5125 (__v2di) __A,
Craig Topperdff5b312018-05-30 18:02:11 +00005126 (__v2di) _mm_setzero_si128 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005127}
5128
5129static __inline__ __m256i __DEFAULT_FN_ATTRS
5130_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5131{
Igor Bregeraadb8762016-06-08 13:59:20 +00005132 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5133 (__v4di) __A,
5134 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005135}
5136
5137static __inline__ __m256i __DEFAULT_FN_ATTRS
5138_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5139{
Igor Bregeraadb8762016-06-08 13:59:20 +00005140 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5141 (__v4di) __A,
5142 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005143}
5144
5145static __inline__ __m128i __DEFAULT_FN_ATTRS
5146_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5147{
5148 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5149 (__v2di) __W,
5150 (__mmask8)
5151 __U);
5152}
5153
5154static __inline__ __m128i __DEFAULT_FN_ATTRS
5155_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5156{
5157 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5158 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00005159 _mm_setzero_si128 (),
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005160 (__mmask8)
5161 __U);
5162}
5163
5164static __inline__ __m256i __DEFAULT_FN_ATTRS
5165_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5166{
5167 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5168 (__v4di) __W,
5169 (__mmask8)
5170 __U);
5171}
5172
5173static __inline__ __m256i __DEFAULT_FN_ATTRS
5174_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5175{
5176 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5177 (__v4di)
5178 _mm256_setzero_si256 (),
5179 (__mmask8)
5180 __U);
5181}
5182
5183static __inline__ void __DEFAULT_FN_ATTRS
5184_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5185{
5186 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5187 (__v2di) __A,
5188 (__mmask8) __U);
5189}
5190
5191static __inline__ void __DEFAULT_FN_ATTRS
5192_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5193{
5194 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5195 (__v4di) __A,
5196 (__mmask8) __U);
5197}
5198
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005199static __inline__ __m128d __DEFAULT_FN_ATTRS
5200_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5201{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005202 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5203 (__v2df)_mm_movedup_pd(__A),
5204 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005205}
5206
5207static __inline__ __m128d __DEFAULT_FN_ATTRS
5208_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5209{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005210 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5211 (__v2df)_mm_movedup_pd(__A),
5212 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005213}
5214
5215static __inline__ __m256d __DEFAULT_FN_ATTRS
5216_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5217{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005218 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5219 (__v4df)_mm256_movedup_pd(__A),
5220 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005221}
5222
5223static __inline__ __m256d __DEFAULT_FN_ATTRS
5224_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5225{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005226 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5227 (__v4df)_mm256_movedup_pd(__A),
5228 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005229}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005230
Jina Nahias3ad702a2017-09-19 11:00:27 +00005231static __inline__ __m128i __DEFAULT_FN_ATTRS
5232_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5233{
5234 return (__m128i)__builtin_ia32_selectd_128(__M,
5235 (__v4si) _mm_set1_epi32(__A),
5236 (__v4si)__O);
5237}
Michael Zuckerman912be162016-03-07 08:29:10 +00005238
Jina Nahias3ad702a2017-09-19 11:00:27 +00005239static __inline__ __m128i __DEFAULT_FN_ATTRS
5240_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5241{
5242 return (__m128i)__builtin_ia32_selectd_128(__M,
5243 (__v4si) _mm_set1_epi32(__A),
5244 (__v4si)_mm_setzero_si128());
5245}
Michael Zuckerman912be162016-03-07 08:29:10 +00005246
Jina Nahias3ad702a2017-09-19 11:00:27 +00005247static __inline__ __m256i __DEFAULT_FN_ATTRS
5248_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5249{
5250 return (__m256i)__builtin_ia32_selectd_256(__M,
5251 (__v8si) _mm256_set1_epi32(__A),
5252 (__v8si)__O);
5253}
Michael Zuckerman912be162016-03-07 08:29:10 +00005254
Jina Nahias3ad702a2017-09-19 11:00:27 +00005255static __inline__ __m256i __DEFAULT_FN_ATTRS
5256_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5257{
5258 return (__m256i)__builtin_ia32_selectd_256(__M,
5259 (__v8si) _mm256_set1_epi32(__A),
5260 (__v8si)_mm256_setzero_si256());
5261}
Michael Zuckerman912be162016-03-07 08:29:10 +00005262
Michael Zuckerman912be162016-03-07 08:29:10 +00005263
5264static __inline__ __m128i __DEFAULT_FN_ATTRS
5265_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5266{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005267 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005268 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005269 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005270}
5271
5272static __inline__ __m128i __DEFAULT_FN_ATTRS
5273_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5274{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005275 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005276 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005277 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005278}
5279
5280static __inline__ __m256i __DEFAULT_FN_ATTRS
5281_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5282{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005283 return (__m256i) __builtin_ia32_selectq_256(__M,
5284 (__v4di) _mm256_set1_epi64x(__A),
5285 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005286}
5287
5288static __inline__ __m256i __DEFAULT_FN_ATTRS
5289_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5290{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005291 return (__m256i) __builtin_ia32_selectq_256(__M,
5292 (__v4di) _mm256_set1_epi64x(__A),
5293 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005294}
Michael Zuckermandef78752016-03-28 12:23:09 +00005295
Craig Topperd2661882016-05-17 04:41:48 +00005296#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5297 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5298 (__v2df)(__m128d)(B), \
5299 (__v2di)(__m128i)(C), (int)(imm), \
5300 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005301
Craig Topperd2661882016-05-17 04:41:48 +00005302#define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5303 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5304 (__v2df)(__m128d)(B), \
5305 (__v2di)(__m128i)(C), (int)(imm), \
5306 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005307
Craig Topperd2661882016-05-17 04:41:48 +00005308#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5309 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5310 (__v2df)(__m128d)(B), \
5311 (__v2di)(__m128i)(C), \
5312 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005313
Craig Topperd2661882016-05-17 04:41:48 +00005314#define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5315 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5316 (__v4df)(__m256d)(B), \
5317 (__v4di)(__m256i)(C), (int)(imm), \
5318 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005319
Craig Topperd2661882016-05-17 04:41:48 +00005320#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5321 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5322 (__v4df)(__m256d)(B), \
5323 (__v4di)(__m256i)(C), (int)(imm), \
5324 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005325
Craig Topperd2661882016-05-17 04:41:48 +00005326#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5327 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5328 (__v4df)(__m256d)(B), \
5329 (__v4di)(__m256i)(C), \
5330 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005331
Craig Topperd2661882016-05-17 04:41:48 +00005332#define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5333 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5334 (__v4sf)(__m128)(B), \
5335 (__v4si)(__m128i)(C), (int)(imm), \
5336 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005337
Craig Topperd2661882016-05-17 04:41:48 +00005338#define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5339 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5340 (__v4sf)(__m128)(B), \
5341 (__v4si)(__m128i)(C), (int)(imm), \
5342 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005343
Craig Topperd2661882016-05-17 04:41:48 +00005344#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5345 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5346 (__v4sf)(__m128)(B), \
5347 (__v4si)(__m128i)(C), (int)(imm), \
5348 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005349
Craig Topperd2661882016-05-17 04:41:48 +00005350#define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5351 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5352 (__v8sf)(__m256)(B), \
5353 (__v8si)(__m256i)(C), (int)(imm), \
5354 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005355
Craig Topperd2661882016-05-17 04:41:48 +00005356#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5357 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5358 (__v8sf)(__m256)(B), \
5359 (__v8si)(__m256i)(C), (int)(imm), \
5360 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005361
Craig Topperd2661882016-05-17 04:41:48 +00005362#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5363 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5364 (__v8sf)(__m256)(B), \
5365 (__v8si)(__m256i)(C), (int)(imm), \
5366 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005367
5368static __inline__ __m128d __DEFAULT_FN_ATTRS
5369_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5370{
5371 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5372 (__v2df) __W,
5373 (__mmask8) __U);
5374}
5375
5376static __inline__ __m128d __DEFAULT_FN_ATTRS
5377_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5378{
5379 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5380 (__v2df)
5381 _mm_setzero_pd (),
5382 (__mmask8) __U);
5383}
5384
5385static __inline__ __m256d __DEFAULT_FN_ATTRS
5386_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5387{
5388 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5389 (__v4df) __W,
5390 (__mmask8) __U);
5391}
5392
5393static __inline__ __m256d __DEFAULT_FN_ATTRS
5394_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5395{
5396 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5397 (__v4df)
5398 _mm256_setzero_pd (),
5399 (__mmask8) __U);
5400}
5401
5402static __inline__ __m128 __DEFAULT_FN_ATTRS
5403_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5404{
5405 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5406 (__v4sf) __W,
5407 (__mmask8) __U);
5408}
5409
5410static __inline__ __m128 __DEFAULT_FN_ATTRS
5411_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5412{
5413 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5414 (__v4sf)
5415 _mm_setzero_ps (),
5416 (__mmask8) __U);
5417}
5418
5419static __inline__ __m256 __DEFAULT_FN_ATTRS
5420_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5421{
5422 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5423 (__v8sf) __W,
5424 (__mmask8) __U);
5425}
5426
5427static __inline__ __m256 __DEFAULT_FN_ATTRS
5428_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5429{
5430 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5431 (__v8sf)
5432 _mm256_setzero_ps (),
5433 (__mmask8) __U);
5434}
5435
5436static __inline__ __m128i __DEFAULT_FN_ATTRS
5437_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5438{
5439 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5440 (__v2di) __W,
5441 (__mmask8) __U);
5442}
5443
5444static __inline__ __m128i __DEFAULT_FN_ATTRS
5445_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5446{
5447 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5448 (__v2di)
5449 _mm_setzero_si128 (),
5450 (__mmask8) __U);
5451}
5452
5453static __inline__ __m256i __DEFAULT_FN_ATTRS
5454_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5455{
5456 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5457 (__v4di) __W,
5458 (__mmask8) __U);
5459}
5460
5461static __inline__ __m256i __DEFAULT_FN_ATTRS
5462_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5463{
5464 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5465 (__v4di)
5466 _mm256_setzero_si256 (),
5467 (__mmask8) __U);
5468}
5469
5470static __inline__ __m128i __DEFAULT_FN_ATTRS
5471_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5472{
5473 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5474 (__v4si) __W,
5475 (__mmask8) __U);
5476}
5477
5478static __inline__ __m128i __DEFAULT_FN_ATTRS
5479_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5480{
5481 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5482 (__v4si)
5483 _mm_setzero_si128 (),
5484 (__mmask8) __U);
5485}
5486
5487static __inline__ __m256i __DEFAULT_FN_ATTRS
5488_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5489{
5490 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5491 (__v8si) __W,
5492 (__mmask8) __U);
5493}
5494
5495static __inline__ __m256i __DEFAULT_FN_ATTRS
5496_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5497{
5498 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5499 (__v8si)
5500 _mm256_setzero_si256 (),
5501 (__mmask8) __U);
5502}
5503
5504static __inline__ __m128d __DEFAULT_FN_ATTRS
5505_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5506{
5507 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5508 (__v2df) __W,
5509 (__mmask8) __U);
5510}
5511
5512static __inline__ __m128d __DEFAULT_FN_ATTRS
5513_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5514{
5515 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5516 (__v2df)
5517 _mm_setzero_pd (),
5518 (__mmask8) __U);
5519}
5520
5521static __inline__ __m256d __DEFAULT_FN_ATTRS
5522_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5523{
5524 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5525 (__v4df) __W,
5526 (__mmask8) __U);
5527}
5528
5529static __inline__ __m256d __DEFAULT_FN_ATTRS
5530_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5531{
5532 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5533 (__v4df)
5534 _mm256_setzero_pd (),
5535 (__mmask8) __U);
5536}
5537
5538static __inline__ __m128 __DEFAULT_FN_ATTRS
5539_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5540{
5541 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5542 (__v4sf) __W,
5543 (__mmask8) __U);
5544}
5545
5546static __inline__ __m128 __DEFAULT_FN_ATTRS
5547_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5548{
5549 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5550 (__v4sf)
5551 _mm_setzero_ps (),
5552 (__mmask8) __U);
5553}
5554
5555static __inline__ __m256 __DEFAULT_FN_ATTRS
5556_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5557{
5558 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5559 (__v8sf) __W,
5560 (__mmask8) __U);
5561}
5562
5563static __inline__ __m256 __DEFAULT_FN_ATTRS
5564_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5565{
5566 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5567 (__v8sf)
5568 _mm256_setzero_ps (),
5569 (__mmask8) __U);
5570}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005571
5572static __inline__ void __DEFAULT_FN_ATTRS
5573_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5574{
5575 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5576 (__v2df) __A,
5577 (__mmask8) __U);
5578}
5579
5580static __inline__ void __DEFAULT_FN_ATTRS
5581_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5582{
5583 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5584 (__v4df) __A,
5585 (__mmask8) __U);
5586}
5587
5588static __inline__ void __DEFAULT_FN_ATTRS
5589_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5590{
5591 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5592 (__v4sf) __A,
5593 (__mmask8) __U);
5594}
5595
5596static __inline__ void __DEFAULT_FN_ATTRS
5597_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5598{
5599 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5600 (__v8sf) __A,
5601 (__mmask8) __U);
5602}
5603
5604static __inline__ void __DEFAULT_FN_ATTRS
5605_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5606{
5607 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5608 (__v2di) __A,
5609 (__mmask8) __U);
5610}
5611
5612static __inline__ void __DEFAULT_FN_ATTRS
5613_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5614{
5615 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5616 (__v4di) __A,
5617 (__mmask8) __U);
5618}
5619
5620static __inline__ void __DEFAULT_FN_ATTRS
5621_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5622{
5623 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5624 (__v4si) __A,
5625 (__mmask8) __U);
5626}
5627
5628static __inline__ void __DEFAULT_FN_ATTRS
5629_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5630{
5631 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5632 (__v8si) __A,
5633 (__mmask8) __U);
5634}
5635
5636static __inline__ void __DEFAULT_FN_ATTRS
5637_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5638{
5639 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5640 (__v2df) __A,
5641 (__mmask8) __U);
5642}
5643
5644static __inline__ void __DEFAULT_FN_ATTRS
5645_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5646{
5647 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5648 (__v4df) __A,
5649 (__mmask8) __U);
5650}
5651
5652static __inline__ void __DEFAULT_FN_ATTRS
5653_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5654{
5655 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5656 (__v4sf) __A,
5657 (__mmask8) __U);
5658}
5659
5660static __inline__ void __DEFAULT_FN_ATTRS
5661_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5662{
5663 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5664 (__v8sf) __A,
5665 (__mmask8) __U);
5666}
5667
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005668
5669static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005670_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005671{
Craig Topper79f53ca2016-06-23 06:36:42 +00005672 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5673 (__v2df)_mm_unpackhi_pd(__A, __B),
5674 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005675}
5676
5677static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005678_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005679{
Craig Topper79f53ca2016-06-23 06:36:42 +00005680 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5681 (__v2df)_mm_unpackhi_pd(__A, __B),
5682 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005683}
5684
5685static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005686_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005687{
Craig Topper79f53ca2016-06-23 06:36:42 +00005688 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5689 (__v4df)_mm256_unpackhi_pd(__A, __B),
5690 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005691}
5692
5693static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005694_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005695{
Craig Topper79f53ca2016-06-23 06:36:42 +00005696 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5697 (__v4df)_mm256_unpackhi_pd(__A, __B),
5698 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005699}
5700
5701static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005702_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005703{
Craig Topper79f53ca2016-06-23 06:36:42 +00005704 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5705 (__v4sf)_mm_unpackhi_ps(__A, __B),
5706 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005707}
5708
5709static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005710_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005711{
Craig Topper79f53ca2016-06-23 06:36:42 +00005712 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5713 (__v4sf)_mm_unpackhi_ps(__A, __B),
5714 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005715}
5716
5717static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005718_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005719{
Craig Topper79f53ca2016-06-23 06:36:42 +00005720 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5721 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5722 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005723}
5724
5725static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005726_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005727{
Craig Topper79f53ca2016-06-23 06:36:42 +00005728 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5729 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5730 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005731}
5732
5733static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005734_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005735{
Craig Topper79f53ca2016-06-23 06:36:42 +00005736 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5737 (__v2df)_mm_unpacklo_pd(__A, __B),
5738 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005739}
5740
5741static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005742_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005743{
Craig Topper79f53ca2016-06-23 06:36:42 +00005744 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5745 (__v2df)_mm_unpacklo_pd(__A, __B),
5746 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005747}
5748
5749static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005750_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005751{
Craig Topper79f53ca2016-06-23 06:36:42 +00005752 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5753 (__v4df)_mm256_unpacklo_pd(__A, __B),
5754 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005755}
5756
5757static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005758_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005759{
Craig Topper79f53ca2016-06-23 06:36:42 +00005760 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5761 (__v4df)_mm256_unpacklo_pd(__A, __B),
5762 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005763}
5764
5765static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005766_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005767{
Craig Topper79f53ca2016-06-23 06:36:42 +00005768 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5769 (__v4sf)_mm_unpacklo_ps(__A, __B),
5770 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005771}
5772
5773static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005774_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005775{
Craig Topper79f53ca2016-06-23 06:36:42 +00005776 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5777 (__v4sf)_mm_unpacklo_ps(__A, __B),
5778 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005779}
5780
5781static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005782_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005783{
Craig Topper79f53ca2016-06-23 06:36:42 +00005784 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5785 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5786 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005787}
5788
5789static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005790_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005791{
Craig Topper79f53ca2016-06-23 06:36:42 +00005792 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5793 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5794 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005795}
5796
5797static __inline__ __m128d __DEFAULT_FN_ATTRS
5798_mm_rcp14_pd (__m128d __A)
5799{
5800 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5801 (__v2df)
5802 _mm_setzero_pd (),
5803 (__mmask8) -1);
5804}
5805
5806static __inline__ __m128d __DEFAULT_FN_ATTRS
5807_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5808{
5809 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5810 (__v2df) __W,
5811 (__mmask8) __U);
5812}
5813
5814static __inline__ __m128d __DEFAULT_FN_ATTRS
5815_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5816{
5817 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5818 (__v2df)
5819 _mm_setzero_pd (),
5820 (__mmask8) __U);
5821}
5822
5823static __inline__ __m256d __DEFAULT_FN_ATTRS
5824_mm256_rcp14_pd (__m256d __A)
5825{
5826 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5827 (__v4df)
5828 _mm256_setzero_pd (),
5829 (__mmask8) -1);
5830}
5831
5832static __inline__ __m256d __DEFAULT_FN_ATTRS
5833_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5834{
5835 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5836 (__v4df) __W,
5837 (__mmask8) __U);
5838}
5839
5840static __inline__ __m256d __DEFAULT_FN_ATTRS
5841_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5842{
5843 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5844 (__v4df)
5845 _mm256_setzero_pd (),
5846 (__mmask8) __U);
5847}
5848
5849static __inline__ __m128 __DEFAULT_FN_ATTRS
5850_mm_rcp14_ps (__m128 __A)
5851{
5852 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5853 (__v4sf)
5854 _mm_setzero_ps (),
5855 (__mmask8) -1);
5856}
5857
5858static __inline__ __m128 __DEFAULT_FN_ATTRS
5859_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5860{
5861 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5862 (__v4sf) __W,
5863 (__mmask8) __U);
5864}
5865
5866static __inline__ __m128 __DEFAULT_FN_ATTRS
5867_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5868{
5869 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5870 (__v4sf)
5871 _mm_setzero_ps (),
5872 (__mmask8) __U);
5873}
5874
5875static __inline__ __m256 __DEFAULT_FN_ATTRS
5876_mm256_rcp14_ps (__m256 __A)
5877{
5878 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5879 (__v8sf)
5880 _mm256_setzero_ps (),
5881 (__mmask8) -1);
5882}
5883
5884static __inline__ __m256 __DEFAULT_FN_ATTRS
5885_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5886{
5887 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5888 (__v8sf) __W,
5889 (__mmask8) __U);
5890}
5891
5892static __inline__ __m256 __DEFAULT_FN_ATTRS
5893_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
5894{
5895 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5896 (__v8sf)
5897 _mm256_setzero_ps (),
5898 (__mmask8) __U);
5899}
5900
Craig Topperd2661882016-05-17 04:41:48 +00005901#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005902 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5903 (__v2df)_mm_permute_pd((X), (C)), \
5904 (__v2df)(__m128d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005905
Craig Topperd2661882016-05-17 04:41:48 +00005906#define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005907 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5908 (__v2df)_mm_permute_pd((X), (C)), \
5909 (__v2df)_mm_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005910
Craig Topperd2661882016-05-17 04:41:48 +00005911#define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005912 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5913 (__v4df)_mm256_permute_pd((X), (C)), \
5914 (__v4df)(__m256d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005915
Craig Topperd2661882016-05-17 04:41:48 +00005916#define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005917 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5918 (__v4df)_mm256_permute_pd((X), (C)), \
5919 (__v4df)_mm256_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005920
Craig Topperd2661882016-05-17 04:41:48 +00005921#define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005922 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5923 (__v4sf)_mm_permute_ps((X), (C)), \
5924 (__v4sf)(__m128)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005925
Craig Topperd2661882016-05-17 04:41:48 +00005926#define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005927 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5928 (__v4sf)_mm_permute_ps((X), (C)), \
5929 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005930
Craig Topperd2661882016-05-17 04:41:48 +00005931#define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005932 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5933 (__v8sf)_mm256_permute_ps((X), (C)), \
5934 (__v8sf)(__m256)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005935
Craig Topperd2661882016-05-17 04:41:48 +00005936#define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005937 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5938 (__v8sf)_mm256_permute_ps((X), (C)), \
5939 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005940
5941static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005942_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005943{
Craig Topper5391c982016-12-10 20:27:39 +00005944 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5945 (__v2df)_mm_permutevar_pd(__A, __C),
5946 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005947}
5948
5949static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005950_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005951{
Craig Topper5391c982016-12-10 20:27:39 +00005952 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5953 (__v2df)_mm_permutevar_pd(__A, __C),
5954 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005955}
5956
5957static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005958_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005959{
Craig Topper5391c982016-12-10 20:27:39 +00005960 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5961 (__v4df)_mm256_permutevar_pd(__A, __C),
5962 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005963}
5964
5965static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005966_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005967{
Craig Topper5391c982016-12-10 20:27:39 +00005968 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5969 (__v4df)_mm256_permutevar_pd(__A, __C),
5970 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005971}
5972
5973static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005974_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005975{
Craig Topper5391c982016-12-10 20:27:39 +00005976 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5977 (__v4sf)_mm_permutevar_ps(__A, __C),
5978 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005979}
5980
5981static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005982_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005983{
Craig Topper5391c982016-12-10 20:27:39 +00005984 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5985 (__v4sf)_mm_permutevar_ps(__A, __C),
5986 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005987}
5988
5989static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005990_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005991{
Craig Topper5391c982016-12-10 20:27:39 +00005992 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5993 (__v8sf)_mm256_permutevar_ps(__A, __C),
5994 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005995}
5996
5997static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005998_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005999{
Craig Topper5391c982016-12-10 20:27:39 +00006000 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6001 (__v8sf)_mm256_permutevar_ps(__A, __C),
6002 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006003}
6004
Michael Zuckerman07525092016-04-11 10:22:07 +00006005static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6006_mm_test_epi32_mask (__m128i __A, __m128i __B)
6007{
Craig Topperdff5b312018-05-30 18:02:11 +00006008 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006009}
6010
6011static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6012_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6013{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006014 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006015 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006016}
6017
6018static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6019_mm256_test_epi32_mask (__m256i __A, __m256i __B)
6020{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006021 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
6022 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006023}
6024
6025static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6026_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6027{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006028 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6029 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006030}
6031
6032static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6033_mm_test_epi64_mask (__m128i __A, __m128i __B)
6034{
Craig Topperdff5b312018-05-30 18:02:11 +00006035 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006036}
6037
6038static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6039_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6040{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006041 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006042 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006043}
6044
6045static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6046_mm256_test_epi64_mask (__m256i __A, __m256i __B)
6047{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006048 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
6049 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006050}
6051
6052static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6053_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6054{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006055 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6056 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006057}
6058
6059static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6060_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6061{
Craig Topperdff5b312018-05-30 18:02:11 +00006062 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006063}
6064
6065static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6066_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6067{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006068 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006069 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006070}
6071
6072static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6073_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6074{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006075 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6076 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006077}
6078
6079static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6080_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6081{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006082 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6083 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006084}
6085
6086static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6087_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6088{
Craig Topperdff5b312018-05-30 18:02:11 +00006089 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006090}
6091
6092static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6093_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6094{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006095 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006096 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006097}
6098
6099static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6100_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6101{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006102 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6103 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006104}
6105
6106static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6107_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6108{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006109 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6110 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006111}
6112
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006113static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006114_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006115{
Craig Topper79f53ca2016-06-23 06:36:42 +00006116 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6117 (__v4si)_mm_unpackhi_epi32(__A, __B),
6118 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006119}
6120
6121static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006122_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006123{
Craig Topper79f53ca2016-06-23 06:36:42 +00006124 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6125 (__v4si)_mm_unpackhi_epi32(__A, __B),
6126 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006127}
6128
6129static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006130_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006131{
Craig Topper79f53ca2016-06-23 06:36:42 +00006132 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6133 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6134 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006135}
6136
6137static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006138_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006139{
Craig Topper79f53ca2016-06-23 06:36:42 +00006140 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6141 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6142 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006143}
6144
6145static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006146_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006147{
Craig Topper79f53ca2016-06-23 06:36:42 +00006148 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6149 (__v2di)_mm_unpackhi_epi64(__A, __B),
6150 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006151}
6152
6153static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006154_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006155{
Craig Topper79f53ca2016-06-23 06:36:42 +00006156 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6157 (__v2di)_mm_unpackhi_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006158 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006159}
6160
6161static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006162_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006163{
Craig Topper79f53ca2016-06-23 06:36:42 +00006164 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6165 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6166 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006167}
6168
6169static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006170_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006171{
Craig Topper79f53ca2016-06-23 06:36:42 +00006172 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6173 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6174 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006175}
6176
6177static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006178_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006179{
Craig Topper79f53ca2016-06-23 06:36:42 +00006180 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6181 (__v4si)_mm_unpacklo_epi32(__A, __B),
6182 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006183}
6184
6185static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006186_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006187{
Craig Topper79f53ca2016-06-23 06:36:42 +00006188 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6189 (__v4si)_mm_unpacklo_epi32(__A, __B),
6190 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006191}
6192
6193static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006194_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006195{
Craig Topper79f53ca2016-06-23 06:36:42 +00006196 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6197 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6198 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006199}
6200
6201static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006202_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006203{
Craig Topper79f53ca2016-06-23 06:36:42 +00006204 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6205 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6206 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006207}
6208
6209static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006210_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006211{
Craig Topper79f53ca2016-06-23 06:36:42 +00006212 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6213 (__v2di)_mm_unpacklo_epi64(__A, __B),
6214 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006215}
6216
6217static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006218_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006219{
Craig Topper79f53ca2016-06-23 06:36:42 +00006220 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6221 (__v2di)_mm_unpacklo_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006222 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006223}
6224
6225static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006226_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006227{
Craig Topper79f53ca2016-06-23 06:36:42 +00006228 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6229 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6230 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006231}
6232
6233static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006234_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006235{
Craig Topper79f53ca2016-06-23 06:36:42 +00006236 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6237 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6238 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006239}
6240
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006241static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006242_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006243{
Craig Topper66b2fd12016-10-31 04:30:51 +00006244 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6245 (__v4si)_mm_sra_epi32(__A, __B),
6246 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006247}
6248
6249static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006250_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006251{
Craig Topper66b2fd12016-10-31 04:30:51 +00006252 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6253 (__v4si)_mm_sra_epi32(__A, __B),
6254 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006255}
6256
6257static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006258_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006259{
Craig Topper66b2fd12016-10-31 04:30:51 +00006260 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6261 (__v8si)_mm256_sra_epi32(__A, __B),
6262 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006263}
6264
6265static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006266_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006267{
Craig Topper66b2fd12016-10-31 04:30:51 +00006268 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6269 (__v8si)_mm256_sra_epi32(__A, __B),
6270 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006271}
6272
Craig Topper66b2fd12016-10-31 04:30:51 +00006273static __inline__ __m128i __DEFAULT_FN_ATTRS
6274_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6275{
6276 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6277 (__v4si)_mm_srai_epi32(__A, __B),
6278 (__v4si)__W);
6279}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006280
Craig Topper66b2fd12016-10-31 04:30:51 +00006281static __inline__ __m128i __DEFAULT_FN_ATTRS
6282_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6283{
6284 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6285 (__v4si)_mm_srai_epi32(__A, __B),
6286 (__v4si)_mm_setzero_si128());
6287}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006288
Craig Topper66b2fd12016-10-31 04:30:51 +00006289static __inline__ __m256i __DEFAULT_FN_ATTRS
6290_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6291{
6292 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6293 (__v8si)_mm256_srai_epi32(__A, __B),
6294 (__v8si)__W);
6295}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006296
Craig Topper66b2fd12016-10-31 04:30:51 +00006297static __inline__ __m256i __DEFAULT_FN_ATTRS
6298_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6299{
6300 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6301 (__v8si)_mm256_srai_epi32(__A, __B),
6302 (__v8si)_mm256_setzero_si256());
6303}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006304
6305static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006306_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006307{
Craig Topper1a441932016-11-12 07:16:59 +00006308 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006309}
6310
6311static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006312_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006313{
Craig Topper1a441932016-11-12 07:16:59 +00006314 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6315 (__v2di)_mm_sra_epi64(__A, __B), \
6316 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006317}
6318
6319static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006320_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006321{
Craig Topper1a441932016-11-12 07:16:59 +00006322 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6323 (__v2di)_mm_sra_epi64(__A, __B), \
Craig Topperdff5b312018-05-30 18:02:11 +00006324 (__v2di)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006325}
6326
6327static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006328_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006329{
Craig Topper1a441932016-11-12 07:16:59 +00006330 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006331}
6332
6333static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006334_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006335{
Craig Topper1a441932016-11-12 07:16:59 +00006336 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6337 (__v4di)_mm256_sra_epi64(__A, __B), \
6338 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006339}
6340
6341static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006342_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006343{
Craig Topper1a441932016-11-12 07:16:59 +00006344 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6345 (__v4di)_mm256_sra_epi64(__A, __B), \
6346 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006347}
6348
Craig Topper1a441932016-11-12 07:16:59 +00006349static __inline__ __m128i __DEFAULT_FN_ATTRS
6350_mm_srai_epi64(__m128i __A, int __imm)
6351{
6352 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6353}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006354
Craig Topper1a441932016-11-12 07:16:59 +00006355static __inline__ __m128i __DEFAULT_FN_ATTRS
6356_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6357{
6358 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6359 (__v2di)_mm_srai_epi64(__A, __imm), \
6360 (__v2di)__W);
6361}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006362
Craig Topper1a441932016-11-12 07:16:59 +00006363static __inline__ __m128i __DEFAULT_FN_ATTRS
6364_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6365{
6366 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6367 (__v2di)_mm_srai_epi64(__A, __imm), \
Craig Topperdff5b312018-05-30 18:02:11 +00006368 (__v2di)_mm_setzero_si128());
Craig Topper1a441932016-11-12 07:16:59 +00006369}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006370
Craig Topper1a441932016-11-12 07:16:59 +00006371static __inline__ __m256i __DEFAULT_FN_ATTRS
6372_mm256_srai_epi64(__m256i __A, int __imm)
6373{
6374 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6375}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006376
Craig Topper1a441932016-11-12 07:16:59 +00006377static __inline__ __m256i __DEFAULT_FN_ATTRS
6378_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6379{
6380 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6381 (__v4di)_mm256_srai_epi64(__A, __imm), \
6382 (__v4di)__W);
6383}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006384
Craig Topper1a441932016-11-12 07:16:59 +00006385static __inline__ __m256i __DEFAULT_FN_ATTRS
6386_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6387{
6388 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6389 (__v4di)_mm256_srai_epi64(__A, __imm), \
6390 (__v4di)_mm256_setzero_si256());
6391}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006392
Craig Topperd2661882016-05-17 04:41:48 +00006393#define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6394 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6395 (__v4si)(__m128i)(B), \
6396 (__v4si)(__m128i)(C), (int)(imm), \
6397 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006398
Craig Topperd2661882016-05-17 04:41:48 +00006399#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6400 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6401 (__v4si)(__m128i)(B), \
6402 (__v4si)(__m128i)(C), (int)(imm), \
6403 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006404
Craig Topperd2661882016-05-17 04:41:48 +00006405#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6406 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6407 (__v4si)(__m128i)(B), \
6408 (__v4si)(__m128i)(C), (int)(imm), \
6409 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006410
Craig Topperd2661882016-05-17 04:41:48 +00006411#define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6412 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6413 (__v8si)(__m256i)(B), \
6414 (__v8si)(__m256i)(C), (int)(imm), \
6415 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006416
Craig Topperd2661882016-05-17 04:41:48 +00006417#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6418 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6419 (__v8si)(__m256i)(B), \
6420 (__v8si)(__m256i)(C), (int)(imm), \
6421 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006422
Craig Topperd2661882016-05-17 04:41:48 +00006423#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6424 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6425 (__v8si)(__m256i)(B), \
6426 (__v8si)(__m256i)(C), (int)(imm), \
6427 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006428
Craig Topperd2661882016-05-17 04:41:48 +00006429#define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6430 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6431 (__v2di)(__m128i)(B), \
6432 (__v2di)(__m128i)(C), (int)(imm), \
6433 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006434
Craig Topperd2661882016-05-17 04:41:48 +00006435#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6436 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6437 (__v2di)(__m128i)(B), \
6438 (__v2di)(__m128i)(C), (int)(imm), \
6439 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006440
Craig Topperd2661882016-05-17 04:41:48 +00006441#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6442 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6443 (__v2di)(__m128i)(B), \
6444 (__v2di)(__m128i)(C), (int)(imm), \
6445 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006446
Craig Topperd2661882016-05-17 04:41:48 +00006447#define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6448 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6449 (__v4di)(__m256i)(B), \
6450 (__v4di)(__m256i)(C), (int)(imm), \
6451 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006452
Craig Topperd2661882016-05-17 04:41:48 +00006453#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6454 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6455 (__v4di)(__m256i)(B), \
6456 (__v4di)(__m256i)(C), (int)(imm), \
6457 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006458
Craig Topperd2661882016-05-17 04:41:48 +00006459#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6460 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6461 (__v4di)(__m256i)(B), \
6462 (__v4di)(__m256i)(C), (int)(imm), \
6463 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006464
6465
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006466
Craig Topperd2661882016-05-17 04:41:48 +00006467#define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006468 (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \
6469 (__v8sf)(__m256)(B), \
6470 0 + ((((imm) >> 0) & 0x1) * 4), \
6471 1 + ((((imm) >> 0) & 0x1) * 4), \
6472 2 + ((((imm) >> 0) & 0x1) * 4), \
6473 3 + ((((imm) >> 0) & 0x1) * 4), \
6474 8 + ((((imm) >> 1) & 0x1) * 4), \
6475 9 + ((((imm) >> 1) & 0x1) * 4), \
6476 10 + ((((imm) >> 1) & 0x1) * 4), \
6477 11 + ((((imm) >> 1) & 0x1) * 4)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006478
Craig Topperd2661882016-05-17 04:41:48 +00006479#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006480 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6481 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6482 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006483
Craig Topperd2661882016-05-17 04:41:48 +00006484#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006485 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6486 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6487 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006488
Craig Topperd2661882016-05-17 04:41:48 +00006489#define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006490 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \
6491 (__v4df)(__m256d)(B), \
6492 0 + ((((imm) >> 0) & 0x1) * 2), \
6493 1 + ((((imm) >> 0) & 0x1) * 2), \
6494 4 + ((((imm) >> 1) & 0x1) * 2), \
6495 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006496
Craig Topperd2661882016-05-17 04:41:48 +00006497#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006498 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6499 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6500 (__v4df)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006501
Craig Topperd2661882016-05-17 04:41:48 +00006502#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006503 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6504 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6505 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006506
Craig Topperd2661882016-05-17 04:41:48 +00006507#define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006508 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6509 (__v4di)(__m256i)(B), \
6510 0 + ((((imm) >> 0) & 0x1) * 2), \
6511 1 + ((((imm) >> 0) & 0x1) * 2), \
6512 4 + ((((imm) >> 1) & 0x1) * 2), \
6513 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006514
Craig Topperd2661882016-05-17 04:41:48 +00006515#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006516 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6517 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6518 (__v8si)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006519
Craig Topperd2661882016-05-17 04:41:48 +00006520#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006521 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6522 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6523 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006524
Craig Topperd2661882016-05-17 04:41:48 +00006525#define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006526 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6527 (__v4di)(__m256i)(B), \
6528 0 + ((((imm) >> 0) & 0x1) * 2), \
6529 1 + ((((imm) >> 0) & 0x1) * 2), \
6530 4 + ((((imm) >> 1) & 0x1) * 2), \
6531 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006532
Craig Topperd2661882016-05-17 04:41:48 +00006533#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006534 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6535 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6536 (__v4di)(__m256)(W)); })
6537
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006538
Craig Topperd2661882016-05-17 04:41:48 +00006539#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006540 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6541 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6542 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006543
Simon Pilgrim427154d2016-07-04 21:30:47 +00006544#define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6545 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6546 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6547 (__v2df)(__m128d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006548
Simon Pilgrim427154d2016-07-04 21:30:47 +00006549#define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6550 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6551 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6552 (__v2df)_mm_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006553
Simon Pilgrim427154d2016-07-04 21:30:47 +00006554#define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6555 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6556 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6557 (__v4df)(__m256d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006558
Simon Pilgrim427154d2016-07-04 21:30:47 +00006559#define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6560 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6561 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6562 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006563
Simon Pilgrim427154d2016-07-04 21:30:47 +00006564#define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6565 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6566 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6567 (__v4sf)(__m128)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006568
Simon Pilgrim427154d2016-07-04 21:30:47 +00006569#define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6570 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6571 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6572 (__v4sf)_mm_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006573
Simon Pilgrim427154d2016-07-04 21:30:47 +00006574#define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6575 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6576 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6577 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006578
Simon Pilgrim427154d2016-07-04 21:30:47 +00006579#define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6580 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6581 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6582 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006583
6584static __inline__ __m128d __DEFAULT_FN_ATTRS
6585_mm_rsqrt14_pd (__m128d __A)
6586{
6587 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6588 (__v2df)
6589 _mm_setzero_pd (),
6590 (__mmask8) -1);
6591}
6592
6593static __inline__ __m128d __DEFAULT_FN_ATTRS
6594_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6595{
6596 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6597 (__v2df) __W,
6598 (__mmask8) __U);
6599}
6600
6601static __inline__ __m128d __DEFAULT_FN_ATTRS
6602_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6603{
6604 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6605 (__v2df)
6606 _mm_setzero_pd (),
6607 (__mmask8) __U);
6608}
6609
6610static __inline__ __m256d __DEFAULT_FN_ATTRS
6611_mm256_rsqrt14_pd (__m256d __A)
6612{
6613 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6614 (__v4df)
6615 _mm256_setzero_pd (),
6616 (__mmask8) -1);
6617}
6618
6619static __inline__ __m256d __DEFAULT_FN_ATTRS
6620_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6621{
6622 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6623 (__v4df) __W,
6624 (__mmask8) __U);
6625}
6626
6627static __inline__ __m256d __DEFAULT_FN_ATTRS
6628_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6629{
6630 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6631 (__v4df)
6632 _mm256_setzero_pd (),
6633 (__mmask8) __U);
6634}
6635
6636static __inline__ __m128 __DEFAULT_FN_ATTRS
6637_mm_rsqrt14_ps (__m128 __A)
6638{
6639 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6640 (__v4sf)
6641 _mm_setzero_ps (),
6642 (__mmask8) -1);
6643}
6644
6645static __inline__ __m128 __DEFAULT_FN_ATTRS
6646_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6647{
6648 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6649 (__v4sf) __W,
6650 (__mmask8) __U);
6651}
6652
6653static __inline__ __m128 __DEFAULT_FN_ATTRS
6654_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6655{
6656 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6657 (__v4sf)
6658 _mm_setzero_ps (),
6659 (__mmask8) __U);
6660}
6661
6662static __inline__ __m256 __DEFAULT_FN_ATTRS
6663_mm256_rsqrt14_ps (__m256 __A)
6664{
6665 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6666 (__v8sf)
6667 _mm256_setzero_ps (),
6668 (__mmask8) -1);
6669}
6670
6671static __inline__ __m256 __DEFAULT_FN_ATTRS
6672_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6673{
6674 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6675 (__v8sf) __W,
6676 (__mmask8) __U);
6677}
6678
6679static __inline__ __m256 __DEFAULT_FN_ATTRS
6680_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6681{
6682 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6683 (__v8sf)
6684 _mm256_setzero_ps (),
6685 (__mmask8) __U);
6686}
6687
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006688static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006689_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006690{
Craig Topper367c86d2017-01-18 02:17:10 +00006691 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6692 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006693}
6694
6695static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006696_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006697{
Craig Topper367c86d2017-01-18 02:17:10 +00006698 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6699 (__v8sf)_mm256_broadcast_f32x4(__A),
6700 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006701}
6702
6703static __inline__ __m256 __DEFAULT_FN_ATTRS
6704_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6705{
Craig Topper367c86d2017-01-18 02:17:10 +00006706 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6707 (__v8sf)_mm256_broadcast_f32x4(__A),
6708 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006709}
6710
6711static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006712_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006713{
Craig Topper367c86d2017-01-18 02:17:10 +00006714 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6715 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006716}
6717
6718static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006719_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006720{
Craig Topper367c86d2017-01-18 02:17:10 +00006721 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6722 (__v8si)_mm256_broadcast_i32x4(__A),
6723 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006724}
6725
6726static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006727_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006728{
Craig Topper367c86d2017-01-18 02:17:10 +00006729 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6730 (__v8si)_mm256_broadcast_i32x4(__A),
6731 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006732}
6733
6734static __inline__ __m256d __DEFAULT_FN_ATTRS
6735_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6736{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006737 return (__m256d)__builtin_ia32_selectpd_256(__M,
6738 (__v4df) _mm256_broadcastsd_pd(__A),
6739 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006740}
6741
6742static __inline__ __m256d __DEFAULT_FN_ATTRS
6743_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6744{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006745 return (__m256d)__builtin_ia32_selectpd_256(__M,
6746 (__v4df) _mm256_broadcastsd_pd(__A),
6747 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006748}
6749
6750static __inline__ __m128 __DEFAULT_FN_ATTRS
6751_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6752{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006753 return (__m128)__builtin_ia32_selectps_128(__M,
6754 (__v4sf) _mm_broadcastss_ps(__A),
6755 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006756}
6757
6758static __inline__ __m128 __DEFAULT_FN_ATTRS
6759_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6760{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006761 return (__m128)__builtin_ia32_selectps_128(__M,
6762 (__v4sf) _mm_broadcastss_ps(__A),
6763 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006764}
6765
6766static __inline__ __m256 __DEFAULT_FN_ATTRS
6767_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6768{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006769 return (__m256)__builtin_ia32_selectps_256(__M,
6770 (__v8sf) _mm256_broadcastss_ps(__A),
6771 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006772}
6773
6774static __inline__ __m256 __DEFAULT_FN_ATTRS
6775_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6776{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006777 return (__m256)__builtin_ia32_selectps_256(__M,
6778 (__v8sf) _mm256_broadcastss_ps(__A),
6779 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006780}
6781
6782static __inline__ __m128i __DEFAULT_FN_ATTRS
6783_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6784{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006785 return (__m128i)__builtin_ia32_selectd_128(__M,
6786 (__v4si) _mm_broadcastd_epi32(__A),
6787 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006788}
6789
6790static __inline__ __m128i __DEFAULT_FN_ATTRS
6791_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6792{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006793 return (__m128i)__builtin_ia32_selectd_128(__M,
6794 (__v4si) _mm_broadcastd_epi32(__A),
6795 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006796}
6797
6798static __inline__ __m256i __DEFAULT_FN_ATTRS
6799_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6800{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006801 return (__m256i)__builtin_ia32_selectd_256(__M,
6802 (__v8si) _mm256_broadcastd_epi32(__A),
6803 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006804}
6805
6806static __inline__ __m256i __DEFAULT_FN_ATTRS
6807_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6808{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006809 return (__m256i)__builtin_ia32_selectd_256(__M,
6810 (__v8si) _mm256_broadcastd_epi32(__A),
6811 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006812}
6813
6814static __inline__ __m128i __DEFAULT_FN_ATTRS
6815_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6816{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006817 return (__m128i)__builtin_ia32_selectq_128(__M,
6818 (__v2di) _mm_broadcastq_epi64(__A),
6819 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006820}
6821
6822static __inline__ __m128i __DEFAULT_FN_ATTRS
6823_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6824{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006825 return (__m128i)__builtin_ia32_selectq_128(__M,
6826 (__v2di) _mm_broadcastq_epi64(__A),
6827 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006828}
6829
6830static __inline__ __m256i __DEFAULT_FN_ATTRS
6831_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6832{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006833 return (__m256i)__builtin_ia32_selectq_256(__M,
6834 (__v4di) _mm256_broadcastq_epi64(__A),
6835 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006836}
6837
6838static __inline__ __m256i __DEFAULT_FN_ATTRS
6839_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6840{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006841 return (__m256i)__builtin_ia32_selectq_256(__M,
6842 (__v4di) _mm256_broadcastq_epi64(__A),
6843 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006844}
6845
Michael Zuckermane1680612016-04-13 15:02:04 +00006846static __inline__ __m128i __DEFAULT_FN_ATTRS
6847_mm_cvtsepi32_epi8 (__m128i __A)
6848{
6849 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6850 (__v16qi)_mm_undefined_si128(),
6851 (__mmask8) -1);
6852}
6853
6854static __inline__ __m128i __DEFAULT_FN_ATTRS
6855_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6856{
6857 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6858 (__v16qi) __O, __M);
6859}
6860
6861static __inline__ __m128i __DEFAULT_FN_ATTRS
6862_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6863{
6864 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6865 (__v16qi) _mm_setzero_si128 (),
6866 __M);
6867}
6868
6869static __inline__ void __DEFAULT_FN_ATTRS
6870_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6871{
6872 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6873}
6874
6875static __inline__ __m128i __DEFAULT_FN_ATTRS
6876_mm256_cvtsepi32_epi8 (__m256i __A)
6877{
6878 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6879 (__v16qi)_mm_undefined_si128(),
6880 (__mmask8) -1);
6881}
6882
6883static __inline__ __m128i __DEFAULT_FN_ATTRS
6884_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6885{
6886 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6887 (__v16qi) __O, __M);
6888}
6889
6890static __inline__ __m128i __DEFAULT_FN_ATTRS
6891_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
6892{
6893 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6894 (__v16qi) _mm_setzero_si128 (),
6895 __M);
6896}
6897
6898static __inline__ void __DEFAULT_FN_ATTRS
6899_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6900{
6901 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
6902}
6903
6904static __inline__ __m128i __DEFAULT_FN_ATTRS
6905_mm_cvtsepi32_epi16 (__m128i __A)
6906{
6907 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6908 (__v8hi)_mm_setzero_si128 (),
6909 (__mmask8) -1);
6910}
6911
6912static __inline__ __m128i __DEFAULT_FN_ATTRS
6913_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
6914{
6915 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6916 (__v8hi)__O,
6917 __M);
6918}
6919
6920static __inline__ __m128i __DEFAULT_FN_ATTRS
6921_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
6922{
6923 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6924 (__v8hi) _mm_setzero_si128 (),
6925 __M);
6926}
6927
6928static __inline__ void __DEFAULT_FN_ATTRS
6929_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
6930{
6931 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
6932}
6933
6934static __inline__ __m128i __DEFAULT_FN_ATTRS
6935_mm256_cvtsepi32_epi16 (__m256i __A)
6936{
6937 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6938 (__v8hi)_mm_undefined_si128(),
6939 (__mmask8) -1);
6940}
6941
6942static __inline__ __m128i __DEFAULT_FN_ATTRS
6943_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
6944{
6945 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6946 (__v8hi) __O, __M);
6947}
6948
6949static __inline__ __m128i __DEFAULT_FN_ATTRS
6950_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
6951{
6952 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6953 (__v8hi) _mm_setzero_si128 (),
6954 __M);
6955}
6956
6957static __inline__ void __DEFAULT_FN_ATTRS
6958_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
6959{
6960 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
6961}
6962
6963static __inline__ __m128i __DEFAULT_FN_ATTRS
6964_mm_cvtsepi64_epi8 (__m128i __A)
6965{
6966 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6967 (__v16qi)_mm_undefined_si128(),
6968 (__mmask8) -1);
6969}
6970
6971static __inline__ __m128i __DEFAULT_FN_ATTRS
6972_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6973{
6974 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6975 (__v16qi) __O, __M);
6976}
6977
6978static __inline__ __m128i __DEFAULT_FN_ATTRS
6979_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
6980{
6981 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6982 (__v16qi) _mm_setzero_si128 (),
6983 __M);
6984}
6985
6986static __inline__ void __DEFAULT_FN_ATTRS
6987_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6988{
6989 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
6990}
6991
6992static __inline__ __m128i __DEFAULT_FN_ATTRS
6993_mm256_cvtsepi64_epi8 (__m256i __A)
6994{
6995 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6996 (__v16qi)_mm_undefined_si128(),
6997 (__mmask8) -1);
6998}
6999
7000static __inline__ __m128i __DEFAULT_FN_ATTRS
7001_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7002{
7003 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7004 (__v16qi) __O, __M);
7005}
7006
7007static __inline__ __m128i __DEFAULT_FN_ATTRS
7008_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
7009{
7010 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7011 (__v16qi) _mm_setzero_si128 (),
7012 __M);
7013}
7014
7015static __inline__ void __DEFAULT_FN_ATTRS
7016_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7017{
7018 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7019}
7020
7021static __inline__ __m128i __DEFAULT_FN_ATTRS
7022_mm_cvtsepi64_epi32 (__m128i __A)
7023{
7024 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7025 (__v4si)_mm_undefined_si128(),
7026 (__mmask8) -1);
7027}
7028
7029static __inline__ __m128i __DEFAULT_FN_ATTRS
7030_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7031{
7032 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7033 (__v4si) __O, __M);
7034}
7035
7036static __inline__ __m128i __DEFAULT_FN_ATTRS
7037_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7038{
7039 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7040 (__v4si) _mm_setzero_si128 (),
7041 __M);
7042}
7043
7044static __inline__ void __DEFAULT_FN_ATTRS
7045_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7046{
7047 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7048}
7049
7050static __inline__ __m128i __DEFAULT_FN_ATTRS
7051_mm256_cvtsepi64_epi32 (__m256i __A)
7052{
7053 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7054 (__v4si)_mm_undefined_si128(),
7055 (__mmask8) -1);
7056}
7057
7058static __inline__ __m128i __DEFAULT_FN_ATTRS
7059_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7060{
7061 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7062 (__v4si)__O,
7063 __M);
7064}
7065
7066static __inline__ __m128i __DEFAULT_FN_ATTRS
7067_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7068{
7069 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7070 (__v4si) _mm_setzero_si128 (),
7071 __M);
7072}
7073
7074static __inline__ void __DEFAULT_FN_ATTRS
7075_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7076{
7077 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7078}
7079
7080static __inline__ __m128i __DEFAULT_FN_ATTRS
7081_mm_cvtsepi64_epi16 (__m128i __A)
7082{
7083 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7084 (__v8hi)_mm_undefined_si128(),
7085 (__mmask8) -1);
7086}
7087
7088static __inline__ __m128i __DEFAULT_FN_ATTRS
7089_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7090{
7091 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7092 (__v8hi) __O, __M);
7093}
7094
7095static __inline__ __m128i __DEFAULT_FN_ATTRS
7096_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7097{
7098 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7099 (__v8hi) _mm_setzero_si128 (),
7100 __M);
7101}
7102
7103static __inline__ void __DEFAULT_FN_ATTRS
7104_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7105{
7106 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7107}
7108
7109static __inline__ __m128i __DEFAULT_FN_ATTRS
7110_mm256_cvtsepi64_epi16 (__m256i __A)
7111{
7112 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7113 (__v8hi)_mm_undefined_si128(),
7114 (__mmask8) -1);
7115}
7116
7117static __inline__ __m128i __DEFAULT_FN_ATTRS
7118_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7119{
7120 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7121 (__v8hi) __O, __M);
7122}
7123
7124static __inline__ __m128i __DEFAULT_FN_ATTRS
7125_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7126{
7127 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7128 (__v8hi) _mm_setzero_si128 (),
7129 __M);
7130}
7131
7132static __inline__ void __DEFAULT_FN_ATTRS
7133_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7134{
7135 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7136}
7137
Michael Zuckermand8715312016-04-14 06:48:09 +00007138static __inline__ __m128i __DEFAULT_FN_ATTRS
7139_mm_cvtusepi32_epi8 (__m128i __A)
7140{
7141 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7142 (__v16qi)_mm_undefined_si128(),
7143 (__mmask8) -1);
7144}
7145
7146static __inline__ __m128i __DEFAULT_FN_ATTRS
7147_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7148{
7149 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7150 (__v16qi) __O,
7151 __M);
7152}
7153
7154static __inline__ __m128i __DEFAULT_FN_ATTRS
7155_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7156{
7157 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7158 (__v16qi) _mm_setzero_si128 (),
7159 __M);
7160}
7161
7162static __inline__ void __DEFAULT_FN_ATTRS
7163_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7164{
7165 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7166}
7167
7168static __inline__ __m128i __DEFAULT_FN_ATTRS
7169_mm256_cvtusepi32_epi8 (__m256i __A)
7170{
7171 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7172 (__v16qi)_mm_undefined_si128(),
7173 (__mmask8) -1);
7174}
7175
7176static __inline__ __m128i __DEFAULT_FN_ATTRS
7177_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7178{
7179 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7180 (__v16qi) __O,
7181 __M);
7182}
7183
7184static __inline__ __m128i __DEFAULT_FN_ATTRS
7185_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7186{
7187 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7188 (__v16qi) _mm_setzero_si128 (),
7189 __M);
7190}
7191
7192static __inline__ void __DEFAULT_FN_ATTRS
7193_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7194{
7195 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7196}
7197
7198static __inline__ __m128i __DEFAULT_FN_ATTRS
7199_mm_cvtusepi32_epi16 (__m128i __A)
7200{
7201 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7202 (__v8hi)_mm_undefined_si128(),
7203 (__mmask8) -1);
7204}
7205
7206static __inline__ __m128i __DEFAULT_FN_ATTRS
7207_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7208{
7209 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7210 (__v8hi) __O, __M);
7211}
7212
7213static __inline__ __m128i __DEFAULT_FN_ATTRS
7214_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7215{
7216 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7217 (__v8hi) _mm_setzero_si128 (),
7218 __M);
7219}
7220
7221static __inline__ void __DEFAULT_FN_ATTRS
7222_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7223{
7224 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7225}
7226
7227static __inline__ __m128i __DEFAULT_FN_ATTRS
7228_mm256_cvtusepi32_epi16 (__m256i __A)
7229{
7230 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7231 (__v8hi) _mm_undefined_si128(),
7232 (__mmask8) -1);
7233}
7234
7235static __inline__ __m128i __DEFAULT_FN_ATTRS
7236_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7237{
7238 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7239 (__v8hi) __O, __M);
7240}
7241
7242static __inline__ __m128i __DEFAULT_FN_ATTRS
7243_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7244{
7245 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7246 (__v8hi) _mm_setzero_si128 (),
7247 __M);
7248}
7249
7250static __inline__ void __DEFAULT_FN_ATTRS
7251_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7252{
7253 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7254}
7255
7256static __inline__ __m128i __DEFAULT_FN_ATTRS
7257_mm_cvtusepi64_epi8 (__m128i __A)
7258{
7259 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7260 (__v16qi)_mm_undefined_si128(),
7261 (__mmask8) -1);
7262}
7263
7264static __inline__ __m128i __DEFAULT_FN_ATTRS
7265_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7266{
7267 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7268 (__v16qi) __O,
7269 __M);
7270}
7271
7272static __inline__ __m128i __DEFAULT_FN_ATTRS
7273_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7274{
7275 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7276 (__v16qi) _mm_setzero_si128 (),
7277 __M);
7278}
7279
7280static __inline__ void __DEFAULT_FN_ATTRS
7281_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7282{
7283 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7284}
7285
7286static __inline__ __m128i __DEFAULT_FN_ATTRS
7287_mm256_cvtusepi64_epi8 (__m256i __A)
7288{
7289 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7290 (__v16qi)_mm_undefined_si128(),
7291 (__mmask8) -1);
7292}
7293
7294static __inline__ __m128i __DEFAULT_FN_ATTRS
7295_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7296{
7297 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7298 (__v16qi) __O,
7299 __M);
7300}
7301
7302static __inline__ __m128i __DEFAULT_FN_ATTRS
7303_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7304{
7305 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7306 (__v16qi) _mm_setzero_si128 (),
7307 __M);
7308}
7309
7310static __inline__ void __DEFAULT_FN_ATTRS
7311_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7312{
7313 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7314}
7315
7316static __inline__ __m128i __DEFAULT_FN_ATTRS
7317_mm_cvtusepi64_epi32 (__m128i __A)
7318{
7319 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7320 (__v4si)_mm_undefined_si128(),
7321 (__mmask8) -1);
7322}
7323
7324static __inline__ __m128i __DEFAULT_FN_ATTRS
7325_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7326{
7327 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7328 (__v4si) __O, __M);
7329}
7330
7331static __inline__ __m128i __DEFAULT_FN_ATTRS
7332_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7333{
7334 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7335 (__v4si) _mm_setzero_si128 (),
7336 __M);
7337}
7338
7339static __inline__ void __DEFAULT_FN_ATTRS
7340_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7341{
7342 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7343}
7344
7345static __inline__ __m128i __DEFAULT_FN_ATTRS
7346_mm256_cvtusepi64_epi32 (__m256i __A)
7347{
7348 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7349 (__v4si)_mm_undefined_si128(),
7350 (__mmask8) -1);
7351}
7352
7353static __inline__ __m128i __DEFAULT_FN_ATTRS
7354_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7355{
7356 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7357 (__v4si) __O, __M);
7358}
7359
7360static __inline__ __m128i __DEFAULT_FN_ATTRS
7361_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7362{
7363 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7364 (__v4si) _mm_setzero_si128 (),
7365 __M);
7366}
7367
7368static __inline__ void __DEFAULT_FN_ATTRS
7369_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7370{
7371 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7372}
7373
7374static __inline__ __m128i __DEFAULT_FN_ATTRS
7375_mm_cvtusepi64_epi16 (__m128i __A)
7376{
7377 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7378 (__v8hi)_mm_undefined_si128(),
7379 (__mmask8) -1);
7380}
7381
7382static __inline__ __m128i __DEFAULT_FN_ATTRS
7383_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7384{
7385 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7386 (__v8hi) __O, __M);
7387}
7388
7389static __inline__ __m128i __DEFAULT_FN_ATTRS
7390_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7391{
7392 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7393 (__v8hi) _mm_setzero_si128 (),
7394 __M);
7395}
7396
7397static __inline__ void __DEFAULT_FN_ATTRS
7398_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7399{
7400 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7401}
7402
7403static __inline__ __m128i __DEFAULT_FN_ATTRS
7404_mm256_cvtusepi64_epi16 (__m256i __A)
7405{
7406 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7407 (__v8hi)_mm_undefined_si128(),
7408 (__mmask8) -1);
7409}
7410
7411static __inline__ __m128i __DEFAULT_FN_ATTRS
7412_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7413{
7414 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7415 (__v8hi) __O, __M);
7416}
7417
7418static __inline__ __m128i __DEFAULT_FN_ATTRS
7419_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7420{
7421 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7422 (__v8hi) _mm_setzero_si128 (),
7423 __M);
7424}
7425
7426static __inline__ void __DEFAULT_FN_ATTRS
7427_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7428{
Craig Topper819f2a22018-05-30 17:23:45 +00007429 __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
Michael Zuckermand8715312016-04-14 06:48:09 +00007430}
7431
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007432static __inline__ __m128i __DEFAULT_FN_ATTRS
7433_mm_cvtepi32_epi8 (__m128i __A)
7434{
7435 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7436 (__v16qi)_mm_undefined_si128(),
7437 (__mmask8) -1);
7438}
7439
7440static __inline__ __m128i __DEFAULT_FN_ATTRS
7441_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7442{
7443 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7444 (__v16qi) __O, __M);
7445}
7446
7447static __inline__ __m128i __DEFAULT_FN_ATTRS
7448_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7449{
7450 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7451 (__v16qi)
7452 _mm_setzero_si128 (),
7453 __M);
7454}
7455
7456static __inline__ void __DEFAULT_FN_ATTRS
7457_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7458{
7459 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7460}
7461
7462static __inline__ __m128i __DEFAULT_FN_ATTRS
7463_mm256_cvtepi32_epi8 (__m256i __A)
7464{
7465 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7466 (__v16qi)_mm_undefined_si128(),
7467 (__mmask8) -1);
7468}
7469
7470static __inline__ __m128i __DEFAULT_FN_ATTRS
7471_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7472{
7473 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7474 (__v16qi) __O, __M);
7475}
7476
7477static __inline__ __m128i __DEFAULT_FN_ATTRS
7478_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7479{
7480 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7481 (__v16qi) _mm_setzero_si128 (),
7482 __M);
7483}
7484
7485static __inline__ void __DEFAULT_FN_ATTRS
7486_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7487{
7488 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7489}
7490
7491static __inline__ __m128i __DEFAULT_FN_ATTRS
7492_mm_cvtepi32_epi16 (__m128i __A)
7493{
7494 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7495 (__v8hi) _mm_setzero_si128 (),
7496 (__mmask8) -1);
7497}
7498
7499static __inline__ __m128i __DEFAULT_FN_ATTRS
7500_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7501{
7502 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7503 (__v8hi) __O, __M);
7504}
7505
7506static __inline__ __m128i __DEFAULT_FN_ATTRS
7507_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7508{
7509 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7510 (__v8hi) _mm_setzero_si128 (),
7511 __M);
7512}
7513
7514static __inline__ void __DEFAULT_FN_ATTRS
7515_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7516{
7517 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7518}
7519
7520static __inline__ __m128i __DEFAULT_FN_ATTRS
7521_mm256_cvtepi32_epi16 (__m256i __A)
7522{
Craig Topper25de41c2018-05-14 17:50:40 +00007523 return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007524}
7525
7526static __inline__ __m128i __DEFAULT_FN_ATTRS
7527_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7528{
Craig Topper9d146bb2018-05-15 03:17:52 +00007529 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7530 (__v8hi) __O, __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007531}
7532
7533static __inline__ __m128i __DEFAULT_FN_ATTRS
7534_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7535{
Craig Topper9d146bb2018-05-15 03:17:52 +00007536 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7537 (__v8hi) _mm_setzero_si128 (),
7538 __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007539}
7540
7541static __inline__ void __DEFAULT_FN_ATTRS
7542_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7543{
7544 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7545}
7546
7547static __inline__ __m128i __DEFAULT_FN_ATTRS
7548_mm_cvtepi64_epi8 (__m128i __A)
7549{
7550 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7551 (__v16qi) _mm_undefined_si128(),
7552 (__mmask8) -1);
7553}
7554
7555static __inline__ __m128i __DEFAULT_FN_ATTRS
7556_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7557{
7558 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7559 (__v16qi) __O, __M);
7560}
7561
7562static __inline__ __m128i __DEFAULT_FN_ATTRS
7563_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7564{
7565 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7566 (__v16qi) _mm_setzero_si128 (),
7567 __M);
7568}
7569
7570static __inline__ void __DEFAULT_FN_ATTRS
7571_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7572{
7573 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7574}
7575
7576static __inline__ __m128i __DEFAULT_FN_ATTRS
7577_mm256_cvtepi64_epi8 (__m256i __A)
7578{
7579 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7580 (__v16qi) _mm_undefined_si128(),
7581 (__mmask8) -1);
7582}
7583
7584static __inline__ __m128i __DEFAULT_FN_ATTRS
7585_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7586{
7587 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7588 (__v16qi) __O, __M);
7589}
7590
7591static __inline__ __m128i __DEFAULT_FN_ATTRS
7592_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7593{
7594 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7595 (__v16qi) _mm_setzero_si128 (),
7596 __M);
7597}
7598
7599static __inline__ void __DEFAULT_FN_ATTRS
7600_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7601{
7602 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7603}
7604
7605static __inline__ __m128i __DEFAULT_FN_ATTRS
7606_mm_cvtepi64_epi32 (__m128i __A)
7607{
7608 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7609 (__v4si)_mm_undefined_si128(),
7610 (__mmask8) -1);
7611}
7612
7613static __inline__ __m128i __DEFAULT_FN_ATTRS
7614_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7615{
7616 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7617 (__v4si) __O, __M);
7618}
7619
7620static __inline__ __m128i __DEFAULT_FN_ATTRS
7621_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7622{
7623 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7624 (__v4si) _mm_setzero_si128 (),
7625 __M);
7626}
7627
7628static __inline__ void __DEFAULT_FN_ATTRS
7629_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7630{
7631 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7632}
7633
7634static __inline__ __m128i __DEFAULT_FN_ATTRS
7635_mm256_cvtepi64_epi32 (__m256i __A)
7636{
Craig Topper25de41c2018-05-14 17:50:40 +00007637 return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007638}
7639
7640static __inline__ __m128i __DEFAULT_FN_ATTRS
7641_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7642{
Craig Topper25de41c2018-05-14 17:50:40 +00007643 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7644 (__v4si)_mm256_cvtepi64_epi32(__A),
7645 (__v4si)__O);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007646}
7647
7648static __inline__ __m128i __DEFAULT_FN_ATTRS
7649_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7650{
Craig Topper25de41c2018-05-14 17:50:40 +00007651 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7652 (__v4si)_mm256_cvtepi64_epi32(__A),
7653 (__v4si)_mm_setzero_si128());
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007654}
7655
7656static __inline__ void __DEFAULT_FN_ATTRS
7657_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7658{
7659 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7660}
7661
7662static __inline__ __m128i __DEFAULT_FN_ATTRS
7663_mm_cvtepi64_epi16 (__m128i __A)
7664{
7665 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7666 (__v8hi) _mm_undefined_si128(),
7667 (__mmask8) -1);
7668}
7669
7670static __inline__ __m128i __DEFAULT_FN_ATTRS
7671_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7672{
7673 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7674 (__v8hi)__O,
7675 __M);
7676}
7677
7678static __inline__ __m128i __DEFAULT_FN_ATTRS
7679_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7680{
7681 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7682 (__v8hi) _mm_setzero_si128 (),
7683 __M);
7684}
7685
7686static __inline__ void __DEFAULT_FN_ATTRS
7687_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7688{
7689 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7690}
7691
7692static __inline__ __m128i __DEFAULT_FN_ATTRS
7693_mm256_cvtepi64_epi16 (__m256i __A)
7694{
7695 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7696 (__v8hi)_mm_undefined_si128(),
7697 (__mmask8) -1);
7698}
7699
7700static __inline__ __m128i __DEFAULT_FN_ATTRS
7701_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7702{
7703 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7704 (__v8hi) __O, __M);
7705}
7706
7707static __inline__ __m128i __DEFAULT_FN_ATTRS
7708_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7709{
7710 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7711 (__v8hi) _mm_setzero_si128 (),
7712 __M);
7713}
7714
7715static __inline__ void __DEFAULT_FN_ATTRS
7716_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7717{
7718 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7719}
7720
Craig Topperd2661882016-05-17 04:41:48 +00007721#define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007722 (__m128)__builtin_shufflevector((__v8sf)(__m256)(A), \
7723 (__v8sf)_mm256_undefined_ps(), \
7724 ((imm) & 1) ? 4 : 0, \
7725 ((imm) & 1) ? 5 : 1, \
7726 ((imm) & 1) ? 6 : 2, \
7727 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007728
Craig Topperd2661882016-05-17 04:41:48 +00007729#define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007730 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7731 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7732 (__v4sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007733
Craig Topperd2661882016-05-17 04:41:48 +00007734#define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007735 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7736 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7737 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007738
Craig Topperd2661882016-05-17 04:41:48 +00007739#define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007740 (__m128i)__builtin_shufflevector((__v8si)(__m256)(A), \
7741 (__v8si)_mm256_undefined_si256(), \
7742 ((imm) & 1) ? 4 : 0, \
7743 ((imm) & 1) ? 5 : 1, \
7744 ((imm) & 1) ? 6 : 2, \
7745 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007746
Craig Topperd2661882016-05-17 04:41:48 +00007747#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007748 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007749 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7750 (__v4si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007751
Craig Topperd2661882016-05-17 04:41:48 +00007752#define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007753 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007754 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7755 (__v4si)_mm_setzero_si128()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007756
Craig Topperd2661882016-05-17 04:41:48 +00007757#define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007758 (__m256)__builtin_shufflevector((__v8sf)(A), \
7759 (__v8sf)_mm256_castps128_ps256((__m128)(B)), \
7760 ((imm) & 0x1) ? 0 : 8, \
7761 ((imm) & 0x1) ? 1 : 9, \
7762 ((imm) & 0x1) ? 2 : 10, \
7763 ((imm) & 0x1) ? 3 : 11, \
7764 ((imm) & 0x1) ? 8 : 4, \
7765 ((imm) & 0x1) ? 9 : 5, \
7766 ((imm) & 0x1) ? 10 : 6, \
7767 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007768
Craig Topperd2661882016-05-17 04:41:48 +00007769#define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007770 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7771 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7772 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007773
Craig Topperd2661882016-05-17 04:41:48 +00007774#define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007775 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7776 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7777 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007778
Craig Topperd2661882016-05-17 04:41:48 +00007779#define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007780 (__m256i)__builtin_shufflevector((__v8si)(A), \
7781 (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
7782 ((imm) & 0x1) ? 0 : 8, \
7783 ((imm) & 0x1) ? 1 : 9, \
7784 ((imm) & 0x1) ? 2 : 10, \
7785 ((imm) & 0x1) ? 3 : 11, \
7786 ((imm) & 0x1) ? 8 : 4, \
7787 ((imm) & 0x1) ? 9 : 5, \
7788 ((imm) & 0x1) ? 10 : 6, \
7789 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007790
Craig Topperd2661882016-05-17 04:41:48 +00007791#define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007792 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7793 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7794 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007795
Craig Topperd2661882016-05-17 04:41:48 +00007796#define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007797 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7798 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7799 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007800
Craig Topperd2661882016-05-17 04:41:48 +00007801#define _mm_getmant_pd(A, B, C) __extension__({\
7802 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7803 (int)(((C)<<2) | (B)), \
7804 (__v2df)_mm_setzero_pd(), \
7805 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007806
Craig Topperd2661882016-05-17 04:41:48 +00007807#define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
7808 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7809 (int)(((C)<<2) | (B)), \
7810 (__v2df)(__m128d)(W), \
7811 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007812
Craig Topperd2661882016-05-17 04:41:48 +00007813#define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
7814 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7815 (int)(((C)<<2) | (B)), \
7816 (__v2df)_mm_setzero_pd(), \
7817 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007818
Craig Topperd2661882016-05-17 04:41:48 +00007819#define _mm256_getmant_pd(A, B, C) __extension__ ({ \
7820 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7821 (int)(((C)<<2) | (B)), \
7822 (__v4df)_mm256_setzero_pd(), \
7823 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007824
Craig Topperd2661882016-05-17 04:41:48 +00007825#define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7826 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7827 (int)(((C)<<2) | (B)), \
7828 (__v4df)(__m256d)(W), \
7829 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007830
Craig Topperd2661882016-05-17 04:41:48 +00007831#define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7832 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7833 (int)(((C)<<2) | (B)), \
7834 (__v4df)_mm256_setzero_pd(), \
7835 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007836
Craig Topperd2661882016-05-17 04:41:48 +00007837#define _mm_getmant_ps(A, B, C) __extension__ ({ \
7838 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7839 (int)(((C)<<2) | (B)), \
7840 (__v4sf)_mm_setzero_ps(), \
7841 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007842
Craig Topperd2661882016-05-17 04:41:48 +00007843#define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7844 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7845 (int)(((C)<<2) | (B)), \
7846 (__v4sf)(__m128)(W), \
7847 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007848
Craig Topperd2661882016-05-17 04:41:48 +00007849#define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7850 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7851 (int)(((C)<<2) | (B)), \
7852 (__v4sf)_mm_setzero_ps(), \
7853 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007854
Craig Topperd2661882016-05-17 04:41:48 +00007855#define _mm256_getmant_ps(A, B, C) __extension__ ({ \
7856 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7857 (int)(((C)<<2) | (B)), \
7858 (__v8sf)_mm256_setzero_ps(), \
7859 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007860
Craig Topperd2661882016-05-17 04:41:48 +00007861#define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7862 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7863 (int)(((C)<<2) | (B)), \
7864 (__v8sf)(__m256)(W), \
7865 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007866
Craig Topperd2661882016-05-17 04:41:48 +00007867#define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7868 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7869 (int)(((C)<<2) | (B)), \
7870 (__v8sf)_mm256_setzero_ps(), \
7871 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007872
Craig Topperd2661882016-05-17 04:41:48 +00007873#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7874 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7875 (double const *)(addr), \
7876 (__v2di)(__m128i)(index), \
7877 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007878
Craig Topperd2661882016-05-17 04:41:48 +00007879#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7880 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7881 (long long const *)(addr), \
7882 (__v2di)(__m128i)(index), \
7883 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007884
Craig Topperd2661882016-05-17 04:41:48 +00007885#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7886 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
7887 (double const *)(addr), \
7888 (__v4di)(__m256i)(index), \
7889 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007890
Craig Topperd2661882016-05-17 04:41:48 +00007891#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7892 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
7893 (long long const *)(addr), \
7894 (__v4di)(__m256i)(index), \
7895 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007896
Craig Topperd2661882016-05-17 04:41:48 +00007897#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7898 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
7899 (float const *)(addr), \
7900 (__v2di)(__m128i)(index), \
7901 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007902
Craig Topperd2661882016-05-17 04:41:48 +00007903#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7904 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
7905 (int const *)(addr), \
7906 (__v2di)(__m128i)(index), \
7907 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007908
Craig Topperd2661882016-05-17 04:41:48 +00007909#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7910 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
7911 (float const *)(addr), \
7912 (__v4di)(__m256i)(index), \
7913 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007914
Craig Topperd2661882016-05-17 04:41:48 +00007915#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7916 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
7917 (int const *)(addr), \
7918 (__v4di)(__m256i)(index), \
7919 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007920
Craig Topperd2661882016-05-17 04:41:48 +00007921#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7922 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
7923 (double const *)(addr), \
7924 (__v4si)(__m128i)(index), \
7925 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007926
Craig Topperd2661882016-05-17 04:41:48 +00007927#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7928 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
7929 (long long const *)(addr), \
7930 (__v4si)(__m128i)(index), \
7931 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007932
Craig Topperd2661882016-05-17 04:41:48 +00007933#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7934 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
7935 (double const *)(addr), \
7936 (__v4si)(__m128i)(index), \
7937 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007938
Craig Topperd2661882016-05-17 04:41:48 +00007939#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7940 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
7941 (long long const *)(addr), \
7942 (__v4si)(__m128i)(index), \
7943 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007944
Craig Topperd2661882016-05-17 04:41:48 +00007945#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7946 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
7947 (float const *)(addr), \
7948 (__v4si)(__m128i)(index), \
7949 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007950
Craig Topperd2661882016-05-17 04:41:48 +00007951#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7952 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
7953 (int const *)(addr), \
7954 (__v4si)(__m128i)(index), \
7955 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007956
Craig Topperd2661882016-05-17 04:41:48 +00007957#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7958 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
7959 (float const *)(addr), \
7960 (__v8si)(__m256i)(index), \
7961 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007962
Craig Topperd2661882016-05-17 04:41:48 +00007963#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7964 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
7965 (int const *)(addr), \
7966 (__v8si)(__m256i)(index), \
7967 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007968
Simon Pilgrim30db8112016-07-04 13:34:44 +00007969#define _mm256_permutex_pd(X, C) __extension__ ({ \
7970 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
7971 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00007972 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
7973 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007974
Simon Pilgrim30db8112016-07-04 13:34:44 +00007975#define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
7976 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7977 (__v4df)_mm256_permutex_pd((X), (C)), \
7978 (__v4df)(__m256d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007979
Simon Pilgrim30db8112016-07-04 13:34:44 +00007980#define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
7981 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7982 (__v4df)_mm256_permutex_pd((X), (C)), \
7983 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007984
Simon Pilgrim30db8112016-07-04 13:34:44 +00007985#define _mm256_permutex_epi64(X, C) __extension__ ({ \
7986 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
7987 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00007988 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
7989 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007990
Simon Pilgrim30db8112016-07-04 13:34:44 +00007991#define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
7992 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7993 (__v4di)_mm256_permutex_epi64((X), (C)), \
7994 (__v4di)(__m256i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007995
Simon Pilgrim30db8112016-07-04 13:34:44 +00007996#define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
7997 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7998 (__v4di)_mm256_permutex_epi64((X), (C)), \
7999 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008000
8001static __inline__ __m256d __DEFAULT_FN_ATTRS
8002_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
8003{
Craig Topper55b40672018-05-20 23:34:10 +00008004 return (__m256d)__builtin_ia32_permvardf256((__v4df)__Y, (__v4di)__X);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008005}
8006
8007static __inline__ __m256d __DEFAULT_FN_ATTRS
8008_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
8009 __m256d __Y)
8010{
Craig Topper55b40672018-05-20 23:34:10 +00008011 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
8012 (__v4df)_mm256_permutexvar_pd(__X, __Y),
8013 (__v4df)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008014}
8015
8016static __inline__ __m256d __DEFAULT_FN_ATTRS
8017_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
8018{
Craig Topper55b40672018-05-20 23:34:10 +00008019 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
8020 (__v4df)_mm256_permutexvar_pd(__X, __Y),
8021 (__v4df)_mm256_setzero_pd());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008022}
8023
8024static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00008025_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008026{
Craig Topper55b40672018-05-20 23:34:10 +00008027 return (__m256i)__builtin_ia32_permvardi256((__v4di) __Y, (__v4di) __X);
8028}
8029
8030static __inline__ __m256i __DEFAULT_FN_ATTRS
8031_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
8032{
8033 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
8034 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
8035 (__v4di)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008036}
8037
8038static __inline__ __m256i __DEFAULT_FN_ATTRS
8039_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
8040 __m256i __Y)
8041{
Craig Topper55b40672018-05-20 23:34:10 +00008042 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
8043 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
8044 (__v4di)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008045}
8046
Craig Topper5dc6ca82018-02-24 06:46:42 +00008047#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
8048
Michael Zuckerman8938e832016-04-25 05:32:35 +00008049static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008050_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008051{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008052 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8053 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8054 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008055}
8056
8057static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008058_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008059{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008060 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8061 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8062 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008063}
8064
Craig Topper5dc6ca82018-02-24 06:46:42 +00008065#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
8066
8067static __inline__ __m256i __DEFAULT_FN_ATTRS
8068_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
8069 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008070{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008071 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8072 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8073 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008074}
8075
8076static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008077_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008078{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008079 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8080 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8081 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008082}
8083
Craig Topperd2661882016-05-17 04:41:48 +00008084#define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008085 (__m128i)__builtin_shufflevector((__v4si)(__m128i)(B), \
8086 (__v4si)(__m128i)(A), \
8087 ((int)(imm) & 0x3) + 0, \
8088 ((int)(imm) & 0x3) + 1, \
8089 ((int)(imm) & 0x3) + 2, \
8090 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008091
Craig Topperd2661882016-05-17 04:41:48 +00008092#define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008093 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8094 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8095 (__v4si)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008096
Craig Topperd2661882016-05-17 04:41:48 +00008097#define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008098 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8099 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8100 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008101
Craig Topperd2661882016-05-17 04:41:48 +00008102#define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008103 (__m256i)__builtin_shufflevector((__v8si)(__m256i)(B), \
8104 (__v8si)(__m256i)(A), \
8105 ((int)(imm) & 0x7) + 0, \
8106 ((int)(imm) & 0x7) + 1, \
8107 ((int)(imm) & 0x7) + 2, \
8108 ((int)(imm) & 0x7) + 3, \
8109 ((int)(imm) & 0x7) + 4, \
8110 ((int)(imm) & 0x7) + 5, \
8111 ((int)(imm) & 0x7) + 6, \
8112 ((int)(imm) & 0x7) + 7); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008113
Craig Topperd2661882016-05-17 04:41:48 +00008114#define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008115 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8116 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8117 (__v8si)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008118
Craig Topperd2661882016-05-17 04:41:48 +00008119#define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008120 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8121 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8122 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008123
Craig Topperd2661882016-05-17 04:41:48 +00008124#define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008125 (__m128i)__builtin_shufflevector((__v2di)(__m128i)(B), \
8126 (__v2di)(__m128i)(A), \
8127 ((int)(imm) & 0x1) + 0, \
8128 ((int)(imm) & 0x1) + 1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008129
Craig Topperd2661882016-05-17 04:41:48 +00008130#define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008131 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8132 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8133 (__v2di)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008134
Craig Topperd2661882016-05-17 04:41:48 +00008135#define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008136 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8137 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperdff5b312018-05-30 18:02:11 +00008138 (__v2di)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008139
Craig Topperd2661882016-05-17 04:41:48 +00008140#define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008141 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(B), \
8142 (__v4di)(__m256i)(A), \
8143 ((int)(imm) & 0x3) + 0, \
8144 ((int)(imm) & 0x3) + 1, \
8145 ((int)(imm) & 0x3) + 2, \
8146 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008147
Craig Topperd2661882016-05-17 04:41:48 +00008148#define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008149 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8150 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8151 (__v4di)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008152
Craig Topperd2661882016-05-17 04:41:48 +00008153#define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008154 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8155 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8156 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008157
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008158static __inline__ __m128 __DEFAULT_FN_ATTRS
8159_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8160{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008161 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8162 (__v4sf)_mm_movehdup_ps(__A),
8163 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008164}
8165
8166static __inline__ __m128 __DEFAULT_FN_ATTRS
8167_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8168{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008169 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8170 (__v4sf)_mm_movehdup_ps(__A),
8171 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008172}
8173
8174static __inline__ __m256 __DEFAULT_FN_ATTRS
8175_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8176{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008177 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8178 (__v8sf)_mm256_movehdup_ps(__A),
8179 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008180}
8181
8182static __inline__ __m256 __DEFAULT_FN_ATTRS
8183_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8184{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008185 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8186 (__v8sf)_mm256_movehdup_ps(__A),
8187 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008188}
8189
8190static __inline__ __m128 __DEFAULT_FN_ATTRS
8191_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8192{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008193 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8194 (__v4sf)_mm_moveldup_ps(__A),
8195 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008196}
8197
8198static __inline__ __m128 __DEFAULT_FN_ATTRS
8199_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8200{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008201 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8202 (__v4sf)_mm_moveldup_ps(__A),
8203 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008204}
8205
8206static __inline__ __m256 __DEFAULT_FN_ATTRS
8207_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8208{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008209 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8210 (__v8sf)_mm256_moveldup_ps(__A),
8211 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008212}
8213
8214static __inline__ __m256 __DEFAULT_FN_ATTRS
8215_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8216{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008217 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8218 (__v8sf)_mm256_moveldup_ps(__A),
8219 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008220}
8221
Craig Topperd2661882016-05-17 04:41:48 +00008222#define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008223 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8224 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8225 (__v8si)(__m256i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008226
Craig Topperd2661882016-05-17 04:41:48 +00008227#define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008228 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8229 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8230 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008231
Craig Topperd2661882016-05-17 04:41:48 +00008232#define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008233 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8234 (__v4si)_mm_shuffle_epi32((A), (I)), \
8235 (__v4si)(__m128i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008236
Craig Topperd2661882016-05-17 04:41:48 +00008237#define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008238 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8239 (__v4si)_mm_shuffle_epi32((A), (I)), \
8240 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008241
8242static __inline__ __m128d __DEFAULT_FN_ATTRS
8243_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8244{
Igor Bregeraadb8762016-06-08 13:59:20 +00008245 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8246 (__v2df) __A,
8247 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008248}
8249
8250static __inline__ __m128d __DEFAULT_FN_ATTRS
8251_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8252{
Igor Bregeraadb8762016-06-08 13:59:20 +00008253 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8254 (__v2df) __A,
8255 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008256}
8257
8258static __inline__ __m256d __DEFAULT_FN_ATTRS
8259_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8260{
Igor Bregeraadb8762016-06-08 13:59:20 +00008261 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8262 (__v4df) __A,
8263 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008264}
8265
8266static __inline__ __m256d __DEFAULT_FN_ATTRS
8267_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8268{
Igor Bregeraadb8762016-06-08 13:59:20 +00008269 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8270 (__v4df) __A,
8271 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008272}
8273
8274static __inline__ __m128 __DEFAULT_FN_ATTRS
8275_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8276{
Igor Bregeraadb8762016-06-08 13:59:20 +00008277 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8278 (__v4sf) __A,
8279 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008280}
8281
8282static __inline__ __m128 __DEFAULT_FN_ATTRS
8283_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8284{
Igor Bregeraadb8762016-06-08 13:59:20 +00008285 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8286 (__v4sf) __A,
8287 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008288}
8289
8290static __inline__ __m256 __DEFAULT_FN_ATTRS
8291_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8292{
Igor Bregeraadb8762016-06-08 13:59:20 +00008293 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8294 (__v8sf) __A,
8295 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008296}
8297
8298static __inline__ __m256 __DEFAULT_FN_ATTRS
8299_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8300{
Igor Bregeraadb8762016-06-08 13:59:20 +00008301 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8302 (__v8sf) __A,
8303 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008304}
8305
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008306static __inline__ __m128 __DEFAULT_FN_ATTRS
8307_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8308{
8309 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8310 (__v4sf) __W,
8311 (__mmask8) __U);
8312}
8313
8314static __inline__ __m128 __DEFAULT_FN_ATTRS
8315_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8316{
8317 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8318 (__v4sf)
8319 _mm_setzero_ps (),
8320 (__mmask8) __U);
8321}
8322
8323static __inline__ __m256 __DEFAULT_FN_ATTRS
8324_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8325{
8326 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8327 (__v8sf) __W,
8328 (__mmask8) __U);
8329}
8330
8331static __inline__ __m256 __DEFAULT_FN_ATTRS
8332_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8333{
8334 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8335 (__v8sf)
8336 _mm256_setzero_ps (),
8337 (__mmask8) __U);
8338}
8339
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008340static __inline __m128i __DEFAULT_FN_ATTRS
8341_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8342{
8343 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8344 (__v8hi) __W,
8345 (__mmask8) __U);
8346}
8347
8348static __inline __m128i __DEFAULT_FN_ATTRS
8349_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8350{
8351 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8352 (__v8hi) _mm_setzero_si128 (),
8353 (__mmask8) __U);
8354}
8355
8356#define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008357 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8358 (__v8hi)(__m128i)(W), \
8359 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008360
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008361#define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008362 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8363 (__v8hi)_mm_setzero_si128(), \
8364 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008365
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008366static __inline __m128i __DEFAULT_FN_ATTRS
8367_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8368{
8369 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8370 (__v8hi) __W,
8371 (__mmask8) __U);
8372}
8373
8374static __inline __m128i __DEFAULT_FN_ATTRS
8375_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8376{
8377 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8378 (__v8hi) _mm_setzero_si128(),
8379 (__mmask8) __U);
8380}
8381#define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008382 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8383 (__v8hi)(__m128i)(W), \
8384 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008385
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008386#define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008387 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8388 (__v8hi)_mm_setzero_si128(), \
8389 (__mmask8)(U)); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008390
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008391
Michael Kupersteine45af542015-06-30 13:36:19 +00008392#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008393
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008394#endif /* __AVX512VLINTRIN_H */