blob: 0638982ca75ab93cf2075556bcea28585c27a880 [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 Topperc6338672018-05-31 00:51:20 +0000687#define _mm_cmp_epi32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000688 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000689 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000690 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000691
Craig Topperc6338672018-05-31 00:51:20 +0000692#define _mm_mask_cmp_epi32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000693 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000694 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000695 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000696
Craig Topperc6338672018-05-31 00:51:20 +0000697#define _mm_cmp_epu32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000698 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000699 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000700 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000701
Craig Topperc6338672018-05-31 00:51:20 +0000702#define _mm_mask_cmp_epu32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000703 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000704 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000705 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000706
Craig Topperc6338672018-05-31 00:51:20 +0000707#define _mm256_cmp_epi32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000708 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000709 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000710 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000711
Craig Topperc6338672018-05-31 00:51:20 +0000712#define _mm256_mask_cmp_epi32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000713 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000714 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000715 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000716
Craig Topperc6338672018-05-31 00:51:20 +0000717#define _mm256_cmp_epu32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000718 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000719 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000720 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000721
Craig Topperc6338672018-05-31 00:51:20 +0000722#define _mm256_mask_cmp_epu32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000723 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000724 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000725 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000726
Craig Topperc6338672018-05-31 00:51:20 +0000727#define _mm_cmp_epi64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000728 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000729 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000730 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000731
Craig Topperc6338672018-05-31 00:51:20 +0000732#define _mm_mask_cmp_epi64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000733 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000734 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000735 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000736
Craig Topperc6338672018-05-31 00:51:20 +0000737#define _mm_cmp_epu64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000738 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000739 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000740 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000741
Craig Topperc6338672018-05-31 00:51:20 +0000742#define _mm_mask_cmp_epu64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000743 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000744 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000745 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000746
Craig Topperc6338672018-05-31 00:51:20 +0000747#define _mm256_cmp_epi64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000748 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000749 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000750 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000751
Craig Topperc6338672018-05-31 00:51:20 +0000752#define _mm256_mask_cmp_epi64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000753 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000754 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000755 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000756
Craig Topperc6338672018-05-31 00:51:20 +0000757#define _mm256_cmp_epu64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000758 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000759 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000760 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000761
Craig Topperc6338672018-05-31 00:51:20 +0000762#define _mm256_mask_cmp_epu64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000763 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000764 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000765 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000766
Craig Topperc6338672018-05-31 00:51:20 +0000767#define _mm256_cmp_ps_mask(a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000768 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000769 (__v8sf)(__m256)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000770 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000771
Craig Topperc6338672018-05-31 00:51:20 +0000772#define _mm256_mask_cmp_ps_mask(m, a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000773 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000774 (__v8sf)(__m256)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000775 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000776
Craig Topperc6338672018-05-31 00:51:20 +0000777#define _mm256_cmp_pd_mask(a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000778 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
779 (__v4df)(__m256d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000780 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000781
Craig Topperc6338672018-05-31 00:51:20 +0000782#define _mm256_mask_cmp_pd_mask(m, a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000783 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
784 (__v4df)(__m256d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000785 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000786
Craig Topperc6338672018-05-31 00:51:20 +0000787#define _mm_cmp_ps_mask(a, b, p) \
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), \
Craig Topperc6338672018-05-31 00:51:20 +0000790 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000791
Craig Topperc6338672018-05-31 00:51:20 +0000792#define _mm_mask_cmp_ps_mask(m, a, b, p) \
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), \
Craig Topperc6338672018-05-31 00:51:20 +0000795 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000796
Craig Topperc6338672018-05-31 00:51:20 +0000797#define _mm_cmp_pd_mask(a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000798 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
799 (__v2df)(__m128d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000800 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000801
Craig Topperc6338672018-05-31 00:51:20 +0000802#define _mm_mask_cmp_pd_mask(m, a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000803 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
804 (__v2df)(__m128d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000805 (__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 Topperc6338672018-05-31 00:51:20 +00003205#define _mm_roundscale_pd(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003206 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3207 (int)(imm), \
3208 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003209 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003210
3211
Craig Topperc6338672018-05-31 00:51:20 +00003212#define _mm_mask_roundscale_pd(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003213 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3214 (int)(imm), \
3215 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003216 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003217
3218
Craig Topperc6338672018-05-31 00:51:20 +00003219#define _mm_maskz_roundscale_pd(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003220 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3221 (int)(imm), \
3222 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003223 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003224
3225
Craig Topperc6338672018-05-31 00:51:20 +00003226#define _mm256_roundscale_pd(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003227 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3228 (int)(imm), \
3229 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003230 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003231
3232
Craig Topperc6338672018-05-31 00:51:20 +00003233#define _mm256_mask_roundscale_pd(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003234 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3235 (int)(imm), \
3236 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003237 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003238
3239
Craig Topperc6338672018-05-31 00:51:20 +00003240#define _mm256_maskz_roundscale_pd(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003241 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3242 (int)(imm), \
3243 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003244 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003245
Craig Topperc6338672018-05-31 00:51:20 +00003246#define _mm_roundscale_ps(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003247 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3248 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003249 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003250
3251
Craig Topperc6338672018-05-31 00:51:20 +00003252#define _mm_mask_roundscale_ps(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003253 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3254 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003255 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003256
3257
Craig Topperc6338672018-05-31 00:51:20 +00003258#define _mm_maskz_roundscale_ps(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003259 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3260 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003261 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003262
Craig Topperc6338672018-05-31 00:51:20 +00003263#define _mm256_roundscale_ps(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003264 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3265 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003266 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003267
Craig Topperc6338672018-05-31 00:51:20 +00003268#define _mm256_mask_roundscale_ps(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003269 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3270 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003271 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003272
3273
Craig Topperc6338672018-05-31 00:51:20 +00003274#define _mm256_maskz_roundscale_ps(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003275 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3276 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003277 (__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 Topperc6338672018-05-31 00:51:20 +00003386#define _mm_i64scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003387 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3388 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003389 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003390
Craig Topperc6338672018-05-31 00:51:20 +00003391#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003392 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3393 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003394 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003395
Craig Topperc6338672018-05-31 00:51:20 +00003396#define _mm_i64scatter_epi64(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003397 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3398 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003399 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003400
Craig Topperc6338672018-05-31 00:51:20 +00003401#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003402 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3403 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003404 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003405
Craig Topperc6338672018-05-31 00:51:20 +00003406#define _mm256_i64scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003407 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3408 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003409 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003410
Craig Topperc6338672018-05-31 00:51:20 +00003411#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003412 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3413 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003414 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003415
Craig Topperc6338672018-05-31 00:51:20 +00003416#define _mm256_i64scatter_epi64(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003417 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3418 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003419 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003420
Craig Topperc6338672018-05-31 00:51:20 +00003421#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003422 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3423 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003424 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003425
Craig Topperc6338672018-05-31 00:51:20 +00003426#define _mm_i64scatter_ps(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003427 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3428 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003429 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003430
Craig Topperc6338672018-05-31 00:51:20 +00003431#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003432 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3433 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003434 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003435
Craig Topperc6338672018-05-31 00:51:20 +00003436#define _mm_i64scatter_epi32(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003437 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3438 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003439 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003440
Craig Topperc6338672018-05-31 00:51:20 +00003441#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003442 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3443 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003444 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003445
Craig Topperc6338672018-05-31 00:51:20 +00003446#define _mm256_i64scatter_ps(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003447 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3448 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003449 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003450
Craig Topperc6338672018-05-31 00:51:20 +00003451#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003452 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3453 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003454 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003455
Craig Topperc6338672018-05-31 00:51:20 +00003456#define _mm256_i64scatter_epi32(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003457 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3458 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003459 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003460
Craig Topperc6338672018-05-31 00:51:20 +00003461#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003462 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3463 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003464 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003465
Craig Topperc6338672018-05-31 00:51:20 +00003466#define _mm_i32scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003467 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3468 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003469 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003470
Craig Topperc6338672018-05-31 00:51:20 +00003471#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003476#define _mm_i32scatter_epi64(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003481#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003486#define _mm256_i32scatter_pd(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003491#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003496#define _mm256_i32scatter_epi64(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003501#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003506#define _mm_i32scatter_ps(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003511#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003516#define _mm_i32scatter_epi32(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003521#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003526#define _mm256_i32scatter_ps(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003531#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003536#define _mm256_i32scatter_epi32(addr, index, v1, scale) \
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 Topperc6338672018-05-31 00:51:20 +00003541#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) \
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
Craig Topperc6338672018-05-31 00:51:20 +00003546 static __inline__ __m128d __DEFAULT_FN_ATTRS
3547 _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);
3551 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003552
Craig Topperc6338672018-05-31 00:51:20 +00003553 static __inline__ __m128d __DEFAULT_FN_ATTRS
3554 _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());
3558 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003559
Craig Topperc6338672018-05-31 00:51:20 +00003560 static __inline__ __m256d __DEFAULT_FN_ATTRS
3561 _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);
3565 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003566
Craig Topperc6338672018-05-31 00:51:20 +00003567 static __inline__ __m256d __DEFAULT_FN_ATTRS
3568 _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());
3572 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003573
Craig Topperc6338672018-05-31 00:51:20 +00003574 static __inline__ __m128 __DEFAULT_FN_ATTRS
3575 _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);
3579 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003580
Craig Topperc6338672018-05-31 00:51:20 +00003581 static __inline__ __m128 __DEFAULT_FN_ATTRS
3582 _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());
3586 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003587
Craig Topperc6338672018-05-31 00:51:20 +00003588 static __inline__ __m256 __DEFAULT_FN_ATTRS
3589 _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);
3593 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003594
Craig Topperc6338672018-05-31 00:51:20 +00003595 static __inline__ __m256 __DEFAULT_FN_ATTRS
3596 _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());
3600 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003601
Craig Topperc6338672018-05-31 00:51:20 +00003602 static __inline__ __m128d __DEFAULT_FN_ATTRS
3603 _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);
3607 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003608
Craig Topperc6338672018-05-31 00:51:20 +00003609 static __inline__ __m128d __DEFAULT_FN_ATTRS
3610 _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());
3614 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003615
Craig Topperc6338672018-05-31 00:51:20 +00003616 static __inline__ __m256d __DEFAULT_FN_ATTRS
3617 _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);
3621 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003622
Craig Topperc6338672018-05-31 00:51:20 +00003623 static __inline__ __m256d __DEFAULT_FN_ATTRS
3624 _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());
3628 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003629
Craig Topperc6338672018-05-31 00:51:20 +00003630 static __inline__ __m128 __DEFAULT_FN_ATTRS
3631 _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);
3635 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003636
Craig Topperc6338672018-05-31 00:51:20 +00003637 static __inline__ __m128 __DEFAULT_FN_ATTRS
3638 _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());
3642 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003643
Craig Topperc6338672018-05-31 00:51:20 +00003644 static __inline__ __m256 __DEFAULT_FN_ATTRS
3645 _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);
3649 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003650
Craig Topperc6338672018-05-31 00:51:20 +00003651 static __inline__ __m256 __DEFAULT_FN_ATTRS
3652 _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());
3656 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003657
Craig Topperc6338672018-05-31 00:51:20 +00003658 static __inline__ __m128i __DEFAULT_FN_ATTRS
3659 _mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
3660 return (__m128i)__builtin_ia32_vpermi2vard128((__v4si) __A, (__v4si)__I,
3661 (__v4si)__B);
3662 }
Craig Topper68a272d2018-05-29 03:26:38 +00003663
Craig Topperc6338672018-05-31 00:51:20 +00003664 static __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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003671
Craig Topperc6338672018-05-31 00:51:20 +00003672 static __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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003679
Craig Topperc6338672018-05-31 00:51:20 +00003680 static __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());
3686 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003687
Craig Topperc6338672018-05-31 00:51:20 +00003688 static __inline__ __m256i __DEFAULT_FN_ATTRS
3689 _mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
3690 return (__m256i)__builtin_ia32_vpermi2vard256((__v8si)__A, (__v8si) __I,
3691 (__v8si) __B);
3692 }
Craig Topper68a272d2018-05-29 03:26:38 +00003693
Craig Topperc6338672018-05-31 00:51:20 +00003694 static __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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003701
Craig Topperc6338672018-05-31 00:51:20 +00003702 static __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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003709
Craig Topperc6338672018-05-31 00:51:20 +00003710 static __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());
3716 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003717
Craig Topperc6338672018-05-31 00:51:20 +00003718 static __inline__ __m128d __DEFAULT_FN_ATTRS
3719 _mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
3720 return (__m128d)__builtin_ia32_vpermi2varpd128((__v2df)__A, (__v2di)__I,
3721 (__v2df)__B);
3722 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003723
Craig Topperc6338672018-05-31 00:51:20 +00003724 static __inline__ __m128d __DEFAULT_FN_ATTRS
3725 _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);
3729 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003730
Craig Topperc6338672018-05-31 00:51:20 +00003731 static __inline__ __m128d __DEFAULT_FN_ATTRS
3732 _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);
3736 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003737
Craig Topperc6338672018-05-31 00:51:20 +00003738 static __inline__ __m128d __DEFAULT_FN_ATTRS
3739 _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());
3743 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003744
Craig Topperc6338672018-05-31 00:51:20 +00003745 static __inline__ __m256d __DEFAULT_FN_ATTRS
3746 _mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
3747 return (__m256d)__builtin_ia32_vpermi2varpd256((__v4df)__A, (__v4di)__I,
3748 (__v4df)__B);
3749 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003750
Craig Topperc6338672018-05-31 00:51:20 +00003751 static __inline__ __m256d __DEFAULT_FN_ATTRS
3752 _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);
3757 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003758
Craig Topperc6338672018-05-31 00:51:20 +00003759 static __inline__ __m256d __DEFAULT_FN_ATTRS
3760 _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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003766
Craig Topperc6338672018-05-31 00:51:20 +00003767 static __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());
3773 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003774
Craig Topperc6338672018-05-31 00:51:20 +00003775 static __inline__ __m128 __DEFAULT_FN_ATTRS
3776 _mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
3777 return (__m128)__builtin_ia32_vpermi2varps128((__v4sf)__A, (__v4si)__I,
3778 (__v4sf)__B);
3779 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003780
Craig Topperc6338672018-05-31 00:51:20 +00003781 static __inline__ __m128 __DEFAULT_FN_ATTRS
3782 _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);
3786 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003787
Craig Topperc6338672018-05-31 00:51:20 +00003788 static __inline__ __m128 __DEFAULT_FN_ATTRS
3789 _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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003794
Craig Topperc6338672018-05-31 00:51:20 +00003795 static __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());
3800 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003801
Craig Topperc6338672018-05-31 00:51:20 +00003802 static __inline__ __m256 __DEFAULT_FN_ATTRS
3803 _mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
3804 return (__m256)__builtin_ia32_vpermi2varps256((__v8sf)__A, (__v8si)__I,
3805 (__v8sf) __B);
3806 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003807
Craig Topperc6338672018-05-31 00:51:20 +00003808 static __inline__ __m256 __DEFAULT_FN_ATTRS
3809 _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);
3813 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003814
Craig Topperc6338672018-05-31 00:51:20 +00003815 static __inline__ __m256 __DEFAULT_FN_ATTRS
3816 _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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003822
Craig Topperc6338672018-05-31 00:51:20 +00003823 static __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());
3829 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003830
Craig Topperc6338672018-05-31 00:51:20 +00003831 static __inline__ __m128i __DEFAULT_FN_ATTRS
3832 _mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
3833 return (__m128i)__builtin_ia32_vpermi2varq128((__v2di)__A, (__v2di)__I,
3834 (__v2di)__B);
3835 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003836
Craig Topperc6338672018-05-31 00:51:20 +00003837 static __inline__ __m128i __DEFAULT_FN_ATTRS
3838 _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);
3843 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003844
Craig Topperc6338672018-05-31 00:51:20 +00003845 static __inline__ __m128i __DEFAULT_FN_ATTRS
3846 _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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003852
Craig Topperc6338672018-05-31 00:51:20 +00003853 static __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());
3859 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003860
3861
Craig Topperc6338672018-05-31 00:51:20 +00003862 static __inline__ __m256i __DEFAULT_FN_ATTRS
3863 _mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
3864 return (__m256i)__builtin_ia32_vpermi2varq256((__v4di)__A, (__v4di) __I,
3865 (__v4di) __B);
3866 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003867
Craig Topperc6338672018-05-31 00:51:20 +00003868 static __inline__ __m256i __DEFAULT_FN_ATTRS
3869 _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);
3874 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003875
Craig Topperc6338672018-05-31 00:51:20 +00003876 static __inline__ __m256i __DEFAULT_FN_ATTRS
3877 _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 }
Craig Topper68a272d2018-05-29 03:26:38 +00003883
Craig Topperc6338672018-05-31 00:51:20 +00003884 static __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());
3890 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003891
Craig Topperc6338672018-05-31 00:51:20 +00003892 static __inline__ __m128i __DEFAULT_FN_ATTRS
3893 _mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
3894 {
3895 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3896 (__v4si)_mm_cvtepi8_epi32(__A),
3897 (__v4si)__W);
3898 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003899
Craig Topperc6338672018-05-31 00:51:20 +00003900 static __inline__ __m128i __DEFAULT_FN_ATTRS
3901 _mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
3902 {
3903 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3904 (__v4si)_mm_cvtepi8_epi32(__A),
3905 (__v4si)_mm_setzero_si128());
3906 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003907
Craig Topperc6338672018-05-31 00:51:20 +00003908 static __inline__ __m256i __DEFAULT_FN_ATTRS
3909 _mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
3910 {
3911 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3912 (__v8si)_mm256_cvtepi8_epi32(__A),
3913 (__v8si)__W);
3914 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003915
Craig Topperc6338672018-05-31 00:51:20 +00003916 static __inline__ __m256i __DEFAULT_FN_ATTRS
3917 _mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
3918 {
3919 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3920 (__v8si)_mm256_cvtepi8_epi32(__A),
3921 (__v8si)_mm256_setzero_si256());
3922 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003923
Craig Topperc6338672018-05-31 00:51:20 +00003924 static __inline__ __m128i __DEFAULT_FN_ATTRS
3925 _mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
3926 {
3927 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3928 (__v2di)_mm_cvtepi8_epi64(__A),
3929 (__v2di)__W);
3930 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003931
Craig Topperc6338672018-05-31 00:51:20 +00003932 static __inline__ __m128i __DEFAULT_FN_ATTRS
3933 _mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
3934 {
3935 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3936 (__v2di)_mm_cvtepi8_epi64(__A),
3937 (__v2di)_mm_setzero_si128());
3938 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003939
Craig Topperc6338672018-05-31 00:51:20 +00003940 static __inline__ __m256i __DEFAULT_FN_ATTRS
3941 _mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
3942 {
3943 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3944 (__v4di)_mm256_cvtepi8_epi64(__A),
3945 (__v4di)__W);
3946 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003947
Craig Topperc6338672018-05-31 00:51:20 +00003948 static __inline__ __m256i __DEFAULT_FN_ATTRS
3949 _mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
3950 {
3951 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3952 (__v4di)_mm256_cvtepi8_epi64(__A),
3953 (__v4di)_mm256_setzero_si256());
3954 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003955
Craig Topperc6338672018-05-31 00:51:20 +00003956 static __inline__ __m128i __DEFAULT_FN_ATTRS
3957 _mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
3958 {
3959 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3960 (__v2di)_mm_cvtepi32_epi64(__X),
3961 (__v2di)__W);
3962 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003963
Craig Topperc6338672018-05-31 00:51:20 +00003964 static __inline__ __m128i __DEFAULT_FN_ATTRS
3965 _mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
3966 {
3967 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3968 (__v2di)_mm_cvtepi32_epi64(__X),
3969 (__v2di)_mm_setzero_si128());
3970 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003971
Craig Topperc6338672018-05-31 00:51:20 +00003972 static __inline__ __m256i __DEFAULT_FN_ATTRS
3973 _mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
3974 {
3975 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3976 (__v4di)_mm256_cvtepi32_epi64(__X),
3977 (__v4di)__W);
3978 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003979
Craig Topperc6338672018-05-31 00:51:20 +00003980 static __inline__ __m256i __DEFAULT_FN_ATTRS
3981 _mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
3982 {
3983 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3984 (__v4di)_mm256_cvtepi32_epi64(__X),
3985 (__v4di)_mm256_setzero_si256());
3986 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003987
Craig Topperc6338672018-05-31 00:51:20 +00003988 static __inline__ __m128i __DEFAULT_FN_ATTRS
3989 _mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
3990 {
3991 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3992 (__v4si)_mm_cvtepi16_epi32(__A),
3993 (__v4si)__W);
3994 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003995
Craig Topperc6338672018-05-31 00:51:20 +00003996 static __inline__ __m128i __DEFAULT_FN_ATTRS
3997 _mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
3998 {
3999 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4000 (__v4si)_mm_cvtepi16_epi32(__A),
4001 (__v4si)_mm_setzero_si128());
4002 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004003
Craig Topperc6338672018-05-31 00:51:20 +00004004 static __inline__ __m256i __DEFAULT_FN_ATTRS
4005 _mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4006 {
4007 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4008 (__v8si)_mm256_cvtepi16_epi32(__A),
4009 (__v8si)__W);
4010 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004011
Craig Topperc6338672018-05-31 00:51:20 +00004012 static __inline__ __m256i __DEFAULT_FN_ATTRS
4013 _mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4014 {
4015 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4016 (__v8si)_mm256_cvtepi16_epi32(__A),
4017 (__v8si)_mm256_setzero_si256());
4018 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004019
Craig Topperc6338672018-05-31 00:51:20 +00004020 static __inline__ __m128i __DEFAULT_FN_ATTRS
4021 _mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4022 {
4023 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4024 (__v2di)_mm_cvtepi16_epi64(__A),
4025 (__v2di)__W);
4026 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004027
Craig Topperc6338672018-05-31 00:51:20 +00004028 static __inline__ __m128i __DEFAULT_FN_ATTRS
4029 _mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4030 {
4031 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4032 (__v2di)_mm_cvtepi16_epi64(__A),
4033 (__v2di)_mm_setzero_si128());
4034 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004035
Craig Topperc6338672018-05-31 00:51:20 +00004036 static __inline__ __m256i __DEFAULT_FN_ATTRS
4037 _mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4038 {
4039 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4040 (__v4di)_mm256_cvtepi16_epi64(__A),
4041 (__v4di)__W);
4042 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004043
Craig Topperc6338672018-05-31 00:51:20 +00004044 static __inline__ __m256i __DEFAULT_FN_ATTRS
4045 _mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4046 {
4047 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4048 (__v4di)_mm256_cvtepi16_epi64(__A),
4049 (__v4di)_mm256_setzero_si256());
4050 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004051
4052
Craig Topperc6338672018-05-31 00:51:20 +00004053 static __inline__ __m128i __DEFAULT_FN_ATTRS
4054 _mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
4055 {
4056 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4057 (__v4si)_mm_cvtepu8_epi32(__A),
4058 (__v4si)__W);
4059 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004060
Craig Topperc6338672018-05-31 00:51:20 +00004061 static __inline__ __m128i __DEFAULT_FN_ATTRS
4062 _mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
4063 {
4064 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4065 (__v4si)_mm_cvtepu8_epi32(__A),
4066 (__v4si)_mm_setzero_si128());
4067 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004068
Craig Topperc6338672018-05-31 00:51:20 +00004069 static __inline__ __m256i __DEFAULT_FN_ATTRS
4070 _mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4071 {
4072 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4073 (__v8si)_mm256_cvtepu8_epi32(__A),
4074 (__v8si)__W);
4075 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004076
Craig Topperc6338672018-05-31 00:51:20 +00004077 static __inline__ __m256i __DEFAULT_FN_ATTRS
4078 _mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
4079 {
4080 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4081 (__v8si)_mm256_cvtepu8_epi32(__A),
4082 (__v8si)_mm256_setzero_si256());
4083 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004084
Craig Topperc6338672018-05-31 00:51:20 +00004085 static __inline__ __m128i __DEFAULT_FN_ATTRS
4086 _mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4087 {
4088 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4089 (__v2di)_mm_cvtepu8_epi64(__A),
4090 (__v2di)__W);
4091 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004092
Craig Topperc6338672018-05-31 00:51:20 +00004093 static __inline__ __m128i __DEFAULT_FN_ATTRS
4094 _mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
4095 {
4096 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4097 (__v2di)_mm_cvtepu8_epi64(__A),
4098 (__v2di)_mm_setzero_si128());
4099 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004100
Craig Topperc6338672018-05-31 00:51:20 +00004101 static __inline__ __m256i __DEFAULT_FN_ATTRS
4102 _mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4103 {
4104 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4105 (__v4di)_mm256_cvtepu8_epi64(__A),
4106 (__v4di)__W);
4107 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004108
Craig Topperc6338672018-05-31 00:51:20 +00004109 static __inline__ __m256i __DEFAULT_FN_ATTRS
4110 _mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4111 {
4112 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4113 (__v4di)_mm256_cvtepu8_epi64(__A),
4114 (__v4di)_mm256_setzero_si256());
4115 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004116
Craig Topperc6338672018-05-31 00:51:20 +00004117 static __inline__ __m128i __DEFAULT_FN_ATTRS
4118 _mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
4119 {
4120 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4121 (__v2di)_mm_cvtepu32_epi64(__X),
4122 (__v2di)__W);
4123 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004124
Craig Topperc6338672018-05-31 00:51:20 +00004125 static __inline__ __m128i __DEFAULT_FN_ATTRS
4126 _mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
4127 {
4128 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4129 (__v2di)_mm_cvtepu32_epi64(__X),
4130 (__v2di)_mm_setzero_si128());
4131 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004132
Craig Topperc6338672018-05-31 00:51:20 +00004133 static __inline__ __m256i __DEFAULT_FN_ATTRS
4134 _mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
4135 {
4136 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4137 (__v4di)_mm256_cvtepu32_epi64(__X),
4138 (__v4di)__W);
4139 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004140
Craig Topperc6338672018-05-31 00:51:20 +00004141 static __inline__ __m256i __DEFAULT_FN_ATTRS
4142 _mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
4143 {
4144 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4145 (__v4di)_mm256_cvtepu32_epi64(__X),
4146 (__v4di)_mm256_setzero_si256());
4147 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004148
Craig Topperc6338672018-05-31 00:51:20 +00004149 static __inline__ __m128i __DEFAULT_FN_ATTRS
4150 _mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
4151 {
4152 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4153 (__v4si)_mm_cvtepu16_epi32(__A),
4154 (__v4si)__W);
4155 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004156
Craig Topperc6338672018-05-31 00:51:20 +00004157 static __inline__ __m128i __DEFAULT_FN_ATTRS
4158 _mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
4159 {
4160 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4161 (__v4si)_mm_cvtepu16_epi32(__A),
4162 (__v4si)_mm_setzero_si128());
4163 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004164
Craig Topperc6338672018-05-31 00:51:20 +00004165 static __inline__ __m256i __DEFAULT_FN_ATTRS
4166 _mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4167 {
4168 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4169 (__v8si)_mm256_cvtepu16_epi32(__A),
4170 (__v8si)__W);
4171 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004172
Craig Topperc6338672018-05-31 00:51:20 +00004173 static __inline__ __m256i __DEFAULT_FN_ATTRS
4174 _mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
4175 {
4176 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4177 (__v8si)_mm256_cvtepu16_epi32(__A),
4178 (__v8si)_mm256_setzero_si256());
4179 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004180
Craig Topperc6338672018-05-31 00:51:20 +00004181 static __inline__ __m128i __DEFAULT_FN_ATTRS
4182 _mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4183 {
4184 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4185 (__v2di)_mm_cvtepu16_epi64(__A),
4186 (__v2di)__W);
4187 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004188
Craig Topperc6338672018-05-31 00:51:20 +00004189 static __inline__ __m128i __DEFAULT_FN_ATTRS
4190 _mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4191 {
4192 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4193 (__v2di)_mm_cvtepu16_epi64(__A),
4194 (__v2di)_mm_setzero_si128());
4195 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004196
Craig Topperc6338672018-05-31 00:51:20 +00004197 static __inline__ __m256i __DEFAULT_FN_ATTRS
4198 _mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4199 {
4200 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4201 (__v4di)_mm256_cvtepu16_epi64(__A),
4202 (__v4di)__W);
4203 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004204
Craig Topperc6338672018-05-31 00:51:20 +00004205 static __inline__ __m256i __DEFAULT_FN_ATTRS
4206 _mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4207 {
4208 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4209 (__v4di)_mm256_cvtepu16_epi64(__A),
4210 (__v4di)_mm256_setzero_si256());
4211 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004212
4213
Craig Topperc6338672018-05-31 00:51:20 +00004214#define _mm_rol_epi32(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004215 (__m128i)__builtin_ia32_prold128((__v4si)(__m128i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004216
Craig Topperc6338672018-05-31 00:51:20 +00004217#define _mm_mask_rol_epi32(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004218 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4219 (__v4si)_mm_rol_epi32((a), (b)), \
4220 (__v4si)(__m128i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004221
Craig Topperc6338672018-05-31 00:51:20 +00004222#define _mm_maskz_rol_epi32(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004223 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4224 (__v4si)_mm_rol_epi32((a), (b)), \
4225 (__v4si)_mm_setzero_si128())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004226
Craig Topperc6338672018-05-31 00:51:20 +00004227#define _mm256_rol_epi32(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004228 (__m256i)__builtin_ia32_prold256((__v8si)(__m256i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004229
Craig Topperc6338672018-05-31 00:51:20 +00004230#define _mm256_mask_rol_epi32(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004231 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4232 (__v8si)_mm256_rol_epi32((a), (b)), \
4233 (__v8si)(__m256i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004234
Craig Topperc6338672018-05-31 00:51:20 +00004235#define _mm256_maskz_rol_epi32(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004236 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4237 (__v8si)_mm256_rol_epi32((a), (b)), \
4238 (__v8si)_mm256_setzero_si256())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004239
Craig Topperc6338672018-05-31 00:51:20 +00004240#define _mm_rol_epi64(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004241 (__m128i)__builtin_ia32_prolq128((__v2di)(__m128i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004242
Craig Topperc6338672018-05-31 00:51:20 +00004243#define _mm_mask_rol_epi64(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004244 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4245 (__v2di)_mm_rol_epi64((a), (b)), \
4246 (__v2di)(__m128i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004247
Craig Topperc6338672018-05-31 00:51:20 +00004248#define _mm_maskz_rol_epi64(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004249 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4250 (__v2di)_mm_rol_epi64((a), (b)), \
4251 (__v2di)_mm_setzero_si128())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004252
Craig Topperc6338672018-05-31 00:51:20 +00004253#define _mm256_rol_epi64(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004254 (__m256i)__builtin_ia32_prolq256((__v4di)(__m256i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004255
Craig Topperc6338672018-05-31 00:51:20 +00004256#define _mm256_mask_rol_epi64(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004257 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4258 (__v4di)_mm256_rol_epi64((a), (b)), \
4259 (__v4di)(__m256i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004260
Craig Topperc6338672018-05-31 00:51:20 +00004261#define _mm256_maskz_rol_epi64(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004262 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4263 (__v4di)_mm256_rol_epi64((a), (b)), \
4264 (__v4di)_mm256_setzero_si256())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004265
Michael Zuckerman0231f162016-02-23 13:41:13 +00004266static __inline__ __m128i __DEFAULT_FN_ATTRS
4267_mm_rolv_epi32 (__m128i __A, __m128i __B)
4268{
Craig Topper0e9de762018-06-30 01:32:14 +00004269 return (__m128i)__builtin_ia32_prolvd128((__v4si)__A, (__v4si)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004270}
4271
4272static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004273_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004274{
Craig Topper0e9de762018-06-30 01:32:14 +00004275 return (__m128i)__builtin_ia32_selectd_128(__U,
4276 (__v4si)_mm_rolv_epi32(__A, __B),
4277 (__v4si)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004278}
4279
4280static __inline__ __m128i __DEFAULT_FN_ATTRS
4281_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4282{
Craig Topper0e9de762018-06-30 01:32:14 +00004283 return (__m128i)__builtin_ia32_selectd_128(__U,
4284 (__v4si)_mm_rolv_epi32(__A, __B),
4285 (__v4si)_mm_setzero_si128());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004286}
4287
4288static __inline__ __m256i __DEFAULT_FN_ATTRS
4289_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4290{
Craig Topper0e9de762018-06-30 01:32:14 +00004291 return (__m256i)__builtin_ia32_prolvd256((__v8si)__A, (__v8si)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004292}
4293
4294static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004295_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004296{
Craig Topper0e9de762018-06-30 01:32:14 +00004297 return (__m256i)__builtin_ia32_selectd_256(__U,
4298 (__v8si)_mm256_rolv_epi32(__A, __B),
4299 (__v8si)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004300}
4301
4302static __inline__ __m256i __DEFAULT_FN_ATTRS
4303_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4304{
Craig Topper0e9de762018-06-30 01:32:14 +00004305 return (__m256i)__builtin_ia32_selectd_256(__U,
4306 (__v8si)_mm256_rolv_epi32(__A, __B),
4307 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004308}
4309
4310static __inline__ __m128i __DEFAULT_FN_ATTRS
4311_mm_rolv_epi64 (__m128i __A, __m128i __B)
4312{
Craig Topper0e9de762018-06-30 01:32:14 +00004313 return (__m128i)__builtin_ia32_prolvq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004314}
4315
4316static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004317_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004318{
Craig Topper0e9de762018-06-30 01:32:14 +00004319 return (__m128i)__builtin_ia32_selectq_128(__U,
4320 (__v2di)_mm_rolv_epi64(__A, __B),
4321 (__v2di)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004322}
4323
4324static __inline__ __m128i __DEFAULT_FN_ATTRS
4325_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4326{
Craig Topper0e9de762018-06-30 01:32:14 +00004327 return (__m128i)__builtin_ia32_selectq_128(__U,
4328 (__v2di)_mm_rolv_epi64(__A, __B),
4329 (__v2di)_mm_setzero_si128());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004330}
4331
4332static __inline__ __m256i __DEFAULT_FN_ATTRS
4333_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4334{
Craig Topper0e9de762018-06-30 01:32:14 +00004335 return (__m256i)__builtin_ia32_prolvq256((__v4di)__A, (__v4di)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004336}
4337
4338static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004339_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004340{
Craig Topper0e9de762018-06-30 01:32:14 +00004341 return (__m256i)__builtin_ia32_selectq_256(__U,
4342 (__v4di)_mm256_rolv_epi64(__A, __B),
4343 (__v4di)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004344}
4345
4346static __inline__ __m256i __DEFAULT_FN_ATTRS
4347_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4348{
Craig Topper0e9de762018-06-30 01:32:14 +00004349 return (__m256i)__builtin_ia32_selectq_256(__U,
4350 (__v4di)_mm256_rolv_epi64(__A, __B),
4351 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004352}
4353
Craig Topper0e9de762018-06-30 01:32:14 +00004354#define _mm_ror_epi32(a, b) \
4355 (__m128i)__builtin_ia32_prord128((__v4si)(__m128i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004356
Craig Topper0e9de762018-06-30 01:32:14 +00004357#define _mm_mask_ror_epi32(w, u, a, b) \
4358 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4359 (__v4si)_mm_ror_epi32((a), (b)), \
4360 (__v4si)(__m128i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004361
Craig Topper0e9de762018-06-30 01:32:14 +00004362#define _mm_maskz_ror_epi32(u, a, b) \
4363 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4364 (__v4si)_mm_ror_epi32((a), (b)), \
4365 (__v4si)_mm_setzero_si128())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004366
Craig Topper0e9de762018-06-30 01:32:14 +00004367#define _mm256_ror_epi32(a, b) \
4368 (__m256i)__builtin_ia32_prord256((__v8si)(__m256i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004369
Craig Topper0e9de762018-06-30 01:32:14 +00004370#define _mm256_mask_ror_epi32(w, u, a, b) \
4371 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4372 (__v8si)_mm256_ror_epi32((a), (b)), \
4373 (__v8si)(__m256i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004374
Craig Topper0e9de762018-06-30 01:32:14 +00004375#define _mm256_maskz_ror_epi32(u, a, b) \
4376 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4377 (__v8si)_mm256_ror_epi32((a), (b)), \
4378 (__v8si)_mm256_setzero_si256())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004379
Craig Topper0e9de762018-06-30 01:32:14 +00004380#define _mm_ror_epi64(a, b) \
4381 (__m128i)__builtin_ia32_prorq128((__v2di)(__m128i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004382
Craig Topper0e9de762018-06-30 01:32:14 +00004383#define _mm_mask_ror_epi64(w, u, a, b) \
4384 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4385 (__v2di)_mm_ror_epi64((a), (b)), \
4386 (__v2di)(__m128i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004387
Craig Topper0e9de762018-06-30 01:32:14 +00004388#define _mm_maskz_ror_epi64(u, a, b) \
4389 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4390 (__v2di)_mm_ror_epi64((a), (b)), \
4391 (__v2di)_mm_setzero_si128())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004392
Craig Topper0e9de762018-06-30 01:32:14 +00004393#define _mm256_ror_epi64(a, b) \
4394 (__m256i)__builtin_ia32_prorq256((__v4di)(__m256i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004395
Craig Topper0e9de762018-06-30 01:32:14 +00004396#define _mm256_mask_ror_epi64(w, u, a, b) \
4397 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4398 (__v4di)_mm256_ror_epi64((a), (b)), \
4399 (__v4di)(__m256i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004400
Craig Topper0e9de762018-06-30 01:32:14 +00004401#define _mm256_maskz_ror_epi64(u, a, b) \
4402 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4403 (__v4di)_mm256_ror_epi64((a), (b)), \
4404 (__v4di)_mm256_setzero_si256())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004405
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004406static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004407_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004408{
Craig Topper66b2fd12016-10-31 04:30:51 +00004409 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4410 (__v4si)_mm_sll_epi32(__A, __B),
4411 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004412}
4413
4414static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004415_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004416{
Craig Topper66b2fd12016-10-31 04:30:51 +00004417 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4418 (__v4si)_mm_sll_epi32(__A, __B),
4419 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004420}
4421
4422static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004423_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004424{
Craig Topper66b2fd12016-10-31 04:30:51 +00004425 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4426 (__v8si)_mm256_sll_epi32(__A, __B),
4427 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004428}
4429
4430static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004431_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004432{
Craig Topper66b2fd12016-10-31 04:30:51 +00004433 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4434 (__v8si)_mm256_sll_epi32(__A, __B),
4435 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004436}
4437
4438static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004439_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004440{
Craig Topper66b2fd12016-10-31 04:30:51 +00004441 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4442 (__v4si)_mm_slli_epi32(__A, __B),
4443 (__v4si)__W);
4444}
4445
4446static __inline__ __m128i __DEFAULT_FN_ATTRS
4447_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4448{
4449 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4450 (__v4si)_mm_slli_epi32(__A, __B),
4451 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004452}
4453
4454static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004455_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004456{
Craig Topper66b2fd12016-10-31 04:30:51 +00004457 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4458 (__v8si)_mm256_slli_epi32(__A, __B),
4459 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004460}
4461
4462static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004463_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __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_slli_epi32(__A, __B),
4467 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004468}
4469
Craig Topper66b2fd12016-10-31 04:30:51 +00004470static __inline__ __m128i __DEFAULT_FN_ATTRS
4471_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4472{
4473 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4474 (__v2di)_mm_sll_epi64(__A, __B),
4475 (__v2di)__W);
4476}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004477
Craig Topper66b2fd12016-10-31 04:30:51 +00004478static __inline__ __m128i __DEFAULT_FN_ATTRS
4479_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4480{
4481 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4482 (__v2di)_mm_sll_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004483 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004484}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004485
Craig Topper66b2fd12016-10-31 04:30:51 +00004486static __inline__ __m256i __DEFAULT_FN_ATTRS
4487_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4488{
4489 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4490 (__v4di)_mm256_sll_epi64(__A, __B),
4491 (__v4di)__W);
4492}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004493
Craig Topper66b2fd12016-10-31 04:30:51 +00004494static __inline__ __m256i __DEFAULT_FN_ATTRS
4495_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4496{
4497 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4498 (__v4di)_mm256_sll_epi64(__A, __B),
4499 (__v4di)_mm256_setzero_si256());
4500}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004501
Craig Topper66b2fd12016-10-31 04:30:51 +00004502static __inline__ __m128i __DEFAULT_FN_ATTRS
4503_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4504{
4505 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4506 (__v2di)_mm_slli_epi64(__A, __B),
4507 (__v2di)__W);
4508}
4509
4510static __inline__ __m128i __DEFAULT_FN_ATTRS
4511_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4512{
4513 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4514 (__v2di)_mm_slli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004515 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004516}
4517
4518static __inline__ __m256i __DEFAULT_FN_ATTRS
4519_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4520{
4521 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4522 (__v4di)_mm256_slli_epi64(__A, __B),
4523 (__v4di)__W);
4524}
4525
4526static __inline__ __m256i __DEFAULT_FN_ATTRS
4527_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4528{
4529 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4530 (__v4di)_mm256_slli_epi64(__A, __B),
4531 (__v4di)_mm256_setzero_si256());
4532}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004533
Michael Zuckermane98cc742016-02-23 15:59:47 +00004534static __inline__ __m128i __DEFAULT_FN_ATTRS
4535_mm_rorv_epi32 (__m128i __A, __m128i __B)
4536{
Craig Topper0e9de762018-06-30 01:32:14 +00004537 return (__m128i)__builtin_ia32_prorvd128((__v4si)__A, (__v4si)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004538}
4539
4540static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004541_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004542{
Craig Topper0e9de762018-06-30 01:32:14 +00004543 return (__m128i)__builtin_ia32_selectd_128(__U,
4544 (__v4si)_mm_rorv_epi32(__A, __B),
4545 (__v4si)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004546}
4547
4548static __inline__ __m128i __DEFAULT_FN_ATTRS
4549_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4550{
Craig Topper0e9de762018-06-30 01:32:14 +00004551 return (__m128i)__builtin_ia32_selectd_128(__U,
4552 (__v4si)_mm_rorv_epi32(__A, __B),
4553 (__v4si)_mm_setzero_si128());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004554}
4555
4556static __inline__ __m256i __DEFAULT_FN_ATTRS
4557_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4558{
Craig Topper0e9de762018-06-30 01:32:14 +00004559 return (__m256i)__builtin_ia32_prorvd256((__v8si)__A, (__v8si)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004560}
4561
4562static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004563_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004564{
Craig Topper0e9de762018-06-30 01:32:14 +00004565 return (__m256i)__builtin_ia32_selectd_256(__U,
4566 (__v8si)_mm256_rorv_epi32(__A, __B),
4567 (__v8si)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004568}
4569
4570static __inline__ __m256i __DEFAULT_FN_ATTRS
4571_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4572{
Craig Topper0e9de762018-06-30 01:32:14 +00004573 return (__m256i)__builtin_ia32_selectd_256(__U,
4574 (__v8si)_mm256_rorv_epi32(__A, __B),
4575 (__v8si)_mm256_setzero_si256());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004576}
4577
4578static __inline__ __m128i __DEFAULT_FN_ATTRS
4579_mm_rorv_epi64 (__m128i __A, __m128i __B)
4580{
Craig Topper0e9de762018-06-30 01:32:14 +00004581 return (__m128i)__builtin_ia32_prorvq128((__v2di)__A, (__v2di)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004582}
4583
4584static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004585_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004586{
Craig Topper0e9de762018-06-30 01:32:14 +00004587 return (__m128i)__builtin_ia32_selectq_128(__U,
4588 (__v2di)_mm_rorv_epi64(__A, __B),
4589 (__v2di)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004590}
4591
4592static __inline__ __m128i __DEFAULT_FN_ATTRS
4593_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4594{
Craig Topper0e9de762018-06-30 01:32:14 +00004595 return (__m128i)__builtin_ia32_selectq_128(__U,
4596 (__v2di)_mm_rorv_epi64(__A, __B),
4597 (__v2di)_mm_setzero_si128());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004598}
4599
4600static __inline__ __m256i __DEFAULT_FN_ATTRS
4601_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4602{
Craig Topper0e9de762018-06-30 01:32:14 +00004603 return (__m256i)__builtin_ia32_prorvq256((__v4di)__A, (__v4di)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004604}
4605
4606static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e9de762018-06-30 01:32:14 +00004607_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004608{
Craig Topper0e9de762018-06-30 01:32:14 +00004609 return (__m256i)__builtin_ia32_selectq_256(__U,
4610 (__v4di)_mm256_rorv_epi64(__A, __B),
4611 (__v4di)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004612}
4613
4614static __inline__ __m256i __DEFAULT_FN_ATTRS
4615_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4616{
Craig Topper0e9de762018-06-30 01:32:14 +00004617 return (__m256i)__builtin_ia32_selectq_256(__U,
4618 (__v4di)_mm256_rorv_epi64(__A, __B),
4619 (__v4di)_mm256_setzero_si256());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004620}
4621
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004622static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004623_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004624{
Craig Topper66b2fd12016-10-31 04:30:51 +00004625 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4626 (__v2di)_mm_sllv_epi64(__X, __Y),
4627 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004628}
4629
4630static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004631_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004632{
Craig Topper66b2fd12016-10-31 04:30:51 +00004633 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4634 (__v2di)_mm_sllv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004635 (__v2di)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004636}
4637
4638static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004639_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004640{
Craig Topper66b2fd12016-10-31 04:30:51 +00004641 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4642 (__v4di)_mm256_sllv_epi64(__X, __Y),
4643 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004644}
4645
4646static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004647_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004648{
Craig Topper66b2fd12016-10-31 04:30:51 +00004649 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4650 (__v4di)_mm256_sllv_epi64(__X, __Y),
4651 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004652}
4653
4654static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004655_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004656{
Craig Topper66b2fd12016-10-31 04:30:51 +00004657 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4658 (__v4si)_mm_sllv_epi32(__X, __Y),
4659 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004660}
4661
4662static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004663_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004664{
Craig Topper66b2fd12016-10-31 04:30:51 +00004665 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4666 (__v4si)_mm_sllv_epi32(__X, __Y),
4667 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004668}
4669
4670static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004671_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004672{
Craig Topper66b2fd12016-10-31 04:30:51 +00004673 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4674 (__v8si)_mm256_sllv_epi32(__X, __Y),
4675 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004676}
4677
4678static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004679_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004680{
Craig Topper66b2fd12016-10-31 04:30:51 +00004681 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4682 (__v8si)_mm256_sllv_epi32(__X, __Y),
4683 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004684}
4685
4686static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004687_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004688{
Craig Topper66b2fd12016-10-31 04:30:51 +00004689 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4690 (__v2di)_mm_srlv_epi64(__X, __Y),
4691 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004692}
4693
4694static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004695_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004696{
Craig Topper66b2fd12016-10-31 04:30:51 +00004697 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4698 (__v2di)_mm_srlv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004699 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004700}
4701
4702static __inline__ __m256i __DEFAULT_FN_ATTRS
4703_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4704{
4705 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4706 (__v4di)_mm256_srlv_epi64(__X, __Y),
4707 (__v4di)__W);
4708}
4709
4710static __inline__ __m256i __DEFAULT_FN_ATTRS
4711_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4712{
4713 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4714 (__v4di)_mm256_srlv_epi64(__X, __Y),
4715 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004716}
4717
4718static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004719_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004720{
Craig Topper66b2fd12016-10-31 04:30:51 +00004721 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4722 (__v4si)_mm_srlv_epi32(__X, __Y),
4723 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004724}
4725
4726static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004727_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004728{
Craig Topper66b2fd12016-10-31 04:30:51 +00004729 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4730 (__v4si)_mm_srlv_epi32(__X, __Y),
4731 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004732}
4733
4734static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004735_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004736{
Craig Topper66b2fd12016-10-31 04:30:51 +00004737 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4738 (__v8si)_mm256_srlv_epi32(__X, __Y),
4739 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004740}
4741
4742static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004743_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004744{
Craig Topper66b2fd12016-10-31 04:30:51 +00004745 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4746 (__v8si)_mm256_srlv_epi32(__X, __Y),
4747 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004748}
4749
4750static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004751_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004752{
Craig Topper66b2fd12016-10-31 04:30:51 +00004753 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4754 (__v4si)_mm_srl_epi32(__A, __B),
4755 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004756}
4757
4758static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004759_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004760{
Craig Topper66b2fd12016-10-31 04:30:51 +00004761 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4762 (__v4si)_mm_srl_epi32(__A, __B),
4763 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004764}
4765
4766static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004767_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004768{
Craig Topper66b2fd12016-10-31 04:30:51 +00004769 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4770 (__v8si)_mm256_srl_epi32(__A, __B),
4771 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004772}
4773
4774static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004775_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004776{
Craig Topper66b2fd12016-10-31 04:30:51 +00004777 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4778 (__v8si)_mm256_srl_epi32(__A, __B),
4779 (__v8si)_mm256_setzero_si256());
4780}
4781
4782static __inline__ __m128i __DEFAULT_FN_ATTRS
4783_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4784{
4785 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4786 (__v4si)_mm_srli_epi32(__A, __B),
4787 (__v4si)__W);
4788}
4789
4790static __inline__ __m128i __DEFAULT_FN_ATTRS
4791_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4792{
4793 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4794 (__v4si)_mm_srli_epi32(__A, __B),
4795 (__v4si)_mm_setzero_si128());
4796}
4797
4798static __inline__ __m256i __DEFAULT_FN_ATTRS
4799_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4800{
4801 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4802 (__v8si)_mm256_srli_epi32(__A, __B),
4803 (__v8si)__W);
4804}
4805
4806static __inline__ __m256i __DEFAULT_FN_ATTRS
4807_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4808{
4809 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4810 (__v8si)_mm256_srli_epi32(__A, __B),
4811 (__v8si)_mm256_setzero_si256());
4812}
4813
4814static __inline__ __m128i __DEFAULT_FN_ATTRS
4815_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4816{
4817 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4818 (__v2di)_mm_srl_epi64(__A, __B),
4819 (__v2di)__W);
4820}
4821
4822static __inline__ __m128i __DEFAULT_FN_ATTRS
4823_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4824{
4825 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4826 (__v2di)_mm_srl_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004827 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004828}
4829
4830static __inline__ __m256i __DEFAULT_FN_ATTRS
4831_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4832{
4833 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4834 (__v4di)_mm256_srl_epi64(__A, __B),
4835 (__v4di)__W);
4836}
4837
4838static __inline__ __m256i __DEFAULT_FN_ATTRS
4839_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4840{
4841 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4842 (__v4di)_mm256_srl_epi64(__A, __B),
4843 (__v4di)_mm256_setzero_si256());
4844}
4845
4846static __inline__ __m128i __DEFAULT_FN_ATTRS
4847_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4848{
4849 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4850 (__v2di)_mm_srli_epi64(__A, __B),
4851 (__v2di)__W);
4852}
4853
4854static __inline__ __m128i __DEFAULT_FN_ATTRS
4855_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
4856{
4857 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4858 (__v2di)_mm_srli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004859 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004860}
4861
4862static __inline__ __m256i __DEFAULT_FN_ATTRS
4863_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4864{
4865 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4866 (__v4di)_mm256_srli_epi64(__A, __B),
4867 (__v4di)__W);
4868}
4869
4870static __inline__ __m256i __DEFAULT_FN_ATTRS
4871_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
4872{
4873 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4874 (__v4di)_mm256_srli_epi64(__A, __B),
4875 (__v4di)_mm256_setzero_si256());
4876}
4877
4878static __inline__ __m128i __DEFAULT_FN_ATTRS
4879_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
4880{
4881 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4882 (__v4si)_mm_srav_epi32(__X, __Y),
4883 (__v4si)__W);
4884}
4885
4886static __inline__ __m128i __DEFAULT_FN_ATTRS
4887_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
4888{
4889 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4890 (__v4si)_mm_srav_epi32(__X, __Y),
4891 (__v4si)_mm_setzero_si128());
4892}
4893
4894static __inline__ __m256i __DEFAULT_FN_ATTRS
4895_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4896{
4897 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4898 (__v8si)_mm256_srav_epi32(__X, __Y),
4899 (__v8si)__W);
4900}
4901
4902static __inline__ __m256i __DEFAULT_FN_ATTRS
4903_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
4904{
4905 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4906 (__v8si)_mm256_srav_epi32(__X, __Y),
4907 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004908}
4909
4910static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004911_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004912{
Craig Topper5e0709d2016-11-13 07:26:34 +00004913 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004914}
4915
4916static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004917_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004918{
Craig Topper5e0709d2016-11-13 07:26:34 +00004919 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4920 (__v2di)_mm_srav_epi64(__X, __Y),
4921 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004922}
4923
4924static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004925_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004926{
Craig Topper5e0709d2016-11-13 07:26:34 +00004927 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4928 (__v2di)_mm_srav_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004929 (__v2di)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004930}
4931
4932static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004933_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004934{
Craig Topper5e0709d2016-11-13 07:26:34 +00004935 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004936}
4937
4938static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004939_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004940{
Craig Topper5e0709d2016-11-13 07:26:34 +00004941 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4942 (__v4di)_mm256_srav_epi64(__X, __Y),
4943 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004944}
4945
4946static __inline__ __m256i __DEFAULT_FN_ATTRS
4947_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
4948{
Craig Topper5e0709d2016-11-13 07:26:34 +00004949 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4950 (__v4di)_mm256_srav_epi64(__X, __Y),
4951 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004952}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004953
Michael Zuckermane6542002016-05-23 08:01:48 +00004954static __inline__ __m128i __DEFAULT_FN_ATTRS
4955_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4956{
Igor Bregeraadb8762016-06-08 13:59:20 +00004957 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
4958 (__v4si) __A,
4959 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00004960}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004961
Michael Zuckermane6542002016-05-23 08:01:48 +00004962static __inline__ __m128i __DEFAULT_FN_ATTRS
4963_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
4964{
Igor Bregeraadb8762016-06-08 13:59:20 +00004965 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
4966 (__v4si) __A,
4967 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00004968}
4969
4970
4971static __inline__ __m256i __DEFAULT_FN_ATTRS
4972_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
4973{
Igor Bregeraadb8762016-06-08 13:59:20 +00004974 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
4975 (__v8si) __A,
4976 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00004977}
4978
4979static __inline__ __m256i __DEFAULT_FN_ATTRS
4980_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
4981{
Igor Bregeraadb8762016-06-08 13:59:20 +00004982 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
4983 (__v8si) __A,
4984 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00004985}
4986
4987static __inline__ __m128i __DEFAULT_FN_ATTRS
4988_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
4989{
4990 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
4991 (__v4si) __W,
4992 (__mmask8)
4993 __U);
4994}
4995
4996static __inline__ __m128i __DEFAULT_FN_ATTRS
4997_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
4998{
4999 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5000 (__v4si)
5001 _mm_setzero_si128 (),
5002 (__mmask8)
5003 __U);
5004}
5005
5006static __inline__ __m256i __DEFAULT_FN_ATTRS
5007_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5008{
5009 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5010 (__v8si) __W,
5011 (__mmask8)
5012 __U);
5013}
5014
5015static __inline__ __m256i __DEFAULT_FN_ATTRS
5016_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5017{
5018 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5019 (__v8si)
5020 _mm256_setzero_si256 (),
5021 (__mmask8)
5022 __U);
5023}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005024
5025static __inline__ void __DEFAULT_FN_ATTRS
5026_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5027{
5028 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5029 (__v4si) __A,
5030 (__mmask8) __U);
5031}
5032
5033static __inline__ void __DEFAULT_FN_ATTRS
5034_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5035{
5036 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5037 (__v8si) __A,
5038 (__mmask8) __U);
5039}
5040
5041static __inline__ __m128i __DEFAULT_FN_ATTRS
5042_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5043{
Igor Bregeraadb8762016-06-08 13:59:20 +00005044 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5045 (__v2di) __A,
5046 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005047}
5048
5049static __inline__ __m128i __DEFAULT_FN_ATTRS
5050_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5051{
Igor Bregeraadb8762016-06-08 13:59:20 +00005052 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5053 (__v2di) __A,
Craig Topperdff5b312018-05-30 18:02:11 +00005054 (__v2di) _mm_setzero_si128 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005055}
5056
5057static __inline__ __m256i __DEFAULT_FN_ATTRS
5058_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5059{
Igor Bregeraadb8762016-06-08 13:59:20 +00005060 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5061 (__v4di) __A,
5062 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005063}
5064
5065static __inline__ __m256i __DEFAULT_FN_ATTRS
5066_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5067{
Igor Bregeraadb8762016-06-08 13:59:20 +00005068 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5069 (__v4di) __A,
5070 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005071}
5072
5073static __inline__ __m128i __DEFAULT_FN_ATTRS
5074_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5075{
5076 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5077 (__v2di) __W,
5078 (__mmask8)
5079 __U);
5080}
5081
5082static __inline__ __m128i __DEFAULT_FN_ATTRS
5083_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5084{
5085 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5086 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00005087 _mm_setzero_si128 (),
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005088 (__mmask8)
5089 __U);
5090}
5091
5092static __inline__ __m256i __DEFAULT_FN_ATTRS
5093_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5094{
5095 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5096 (__v4di) __W,
5097 (__mmask8)
5098 __U);
5099}
5100
5101static __inline__ __m256i __DEFAULT_FN_ATTRS
5102_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5103{
5104 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5105 (__v4di)
5106 _mm256_setzero_si256 (),
5107 (__mmask8)
5108 __U);
5109}
5110
5111static __inline__ void __DEFAULT_FN_ATTRS
5112_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5113{
5114 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5115 (__v2di) __A,
5116 (__mmask8) __U);
5117}
5118
5119static __inline__ void __DEFAULT_FN_ATTRS
5120_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5121{
5122 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5123 (__v4di) __A,
5124 (__mmask8) __U);
5125}
5126
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005127static __inline__ __m128d __DEFAULT_FN_ATTRS
5128_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5129{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005130 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5131 (__v2df)_mm_movedup_pd(__A),
5132 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005133}
5134
5135static __inline__ __m128d __DEFAULT_FN_ATTRS
5136_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5137{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005138 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5139 (__v2df)_mm_movedup_pd(__A),
5140 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005141}
5142
5143static __inline__ __m256d __DEFAULT_FN_ATTRS
5144_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5145{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005146 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5147 (__v4df)_mm256_movedup_pd(__A),
5148 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005149}
5150
5151static __inline__ __m256d __DEFAULT_FN_ATTRS
5152_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5153{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005154 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5155 (__v4df)_mm256_movedup_pd(__A),
5156 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005157}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005158
Jina Nahias3ad702a2017-09-19 11:00:27 +00005159static __inline__ __m128i __DEFAULT_FN_ATTRS
5160_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5161{
5162 return (__m128i)__builtin_ia32_selectd_128(__M,
5163 (__v4si) _mm_set1_epi32(__A),
5164 (__v4si)__O);
5165}
Michael Zuckerman912be162016-03-07 08:29:10 +00005166
Jina Nahias3ad702a2017-09-19 11:00:27 +00005167static __inline__ __m128i __DEFAULT_FN_ATTRS
5168_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5169{
5170 return (__m128i)__builtin_ia32_selectd_128(__M,
5171 (__v4si) _mm_set1_epi32(__A),
5172 (__v4si)_mm_setzero_si128());
5173}
Michael Zuckerman912be162016-03-07 08:29:10 +00005174
Jina Nahias3ad702a2017-09-19 11:00:27 +00005175static __inline__ __m256i __DEFAULT_FN_ATTRS
5176_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5177{
5178 return (__m256i)__builtin_ia32_selectd_256(__M,
5179 (__v8si) _mm256_set1_epi32(__A),
5180 (__v8si)__O);
5181}
Michael Zuckerman912be162016-03-07 08:29:10 +00005182
Jina Nahias3ad702a2017-09-19 11:00:27 +00005183static __inline__ __m256i __DEFAULT_FN_ATTRS
5184_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5185{
5186 return (__m256i)__builtin_ia32_selectd_256(__M,
5187 (__v8si) _mm256_set1_epi32(__A),
5188 (__v8si)_mm256_setzero_si256());
5189}
Michael Zuckerman912be162016-03-07 08:29:10 +00005190
Michael Zuckerman912be162016-03-07 08:29:10 +00005191
5192static __inline__ __m128i __DEFAULT_FN_ATTRS
5193_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5194{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005195 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005196 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005197 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005198}
5199
5200static __inline__ __m128i __DEFAULT_FN_ATTRS
5201_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5202{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005203 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005204 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005205 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005206}
5207
5208static __inline__ __m256i __DEFAULT_FN_ATTRS
5209_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5210{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005211 return (__m256i) __builtin_ia32_selectq_256(__M,
5212 (__v4di) _mm256_set1_epi64x(__A),
5213 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005214}
5215
5216static __inline__ __m256i __DEFAULT_FN_ATTRS
5217_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5218{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005219 return (__m256i) __builtin_ia32_selectq_256(__M,
5220 (__v4di) _mm256_set1_epi64x(__A),
5221 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005222}
Michael Zuckermandef78752016-03-28 12:23:09 +00005223
Craig Topperc6338672018-05-31 00:51:20 +00005224#define _mm_fixupimm_pd(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005225 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5226 (__v2df)(__m128d)(B), \
5227 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005228 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005229
Craig Topperc6338672018-05-31 00:51:20 +00005230#define _mm_mask_fixupimm_pd(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005231 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5232 (__v2df)(__m128d)(B), \
5233 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005234 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005235
Craig Topperc6338672018-05-31 00:51:20 +00005236#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005237 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5238 (__v2df)(__m128d)(B), \
5239 (__v2di)(__m128i)(C), \
Craig Topperc6338672018-05-31 00:51:20 +00005240 (int)(imm), (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005241
Craig Topperc6338672018-05-31 00:51:20 +00005242#define _mm256_fixupimm_pd(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005243 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5244 (__v4df)(__m256d)(B), \
5245 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005246 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005247
Craig Topperc6338672018-05-31 00:51:20 +00005248#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005249 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5250 (__v4df)(__m256d)(B), \
5251 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005252 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005253
Craig Topperc6338672018-05-31 00:51:20 +00005254#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005255 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5256 (__v4df)(__m256d)(B), \
5257 (__v4di)(__m256i)(C), \
Craig Topperc6338672018-05-31 00:51:20 +00005258 (int)(imm), (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005259
Craig Topperc6338672018-05-31 00:51:20 +00005260#define _mm_fixupimm_ps(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005261 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5262 (__v4sf)(__m128)(B), \
5263 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005264 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005265
Craig Topperc6338672018-05-31 00:51:20 +00005266#define _mm_mask_fixupimm_ps(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005267 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5268 (__v4sf)(__m128)(B), \
5269 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005270 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005271
Craig Topperc6338672018-05-31 00:51:20 +00005272#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005273 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5274 (__v4sf)(__m128)(B), \
5275 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005276 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005277
Craig Topperc6338672018-05-31 00:51:20 +00005278#define _mm256_fixupimm_ps(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005279 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5280 (__v8sf)(__m256)(B), \
5281 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005282 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005283
Craig Topperc6338672018-05-31 00:51:20 +00005284#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005285 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5286 (__v8sf)(__m256)(B), \
5287 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005288 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005289
Craig Topperc6338672018-05-31 00:51:20 +00005290#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005291 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5292 (__v8sf)(__m256)(B), \
5293 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005294 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005295
5296static __inline__ __m128d __DEFAULT_FN_ATTRS
5297_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5298{
5299 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5300 (__v2df) __W,
5301 (__mmask8) __U);
5302}
5303
5304static __inline__ __m128d __DEFAULT_FN_ATTRS
5305_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5306{
5307 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5308 (__v2df)
5309 _mm_setzero_pd (),
5310 (__mmask8) __U);
5311}
5312
5313static __inline__ __m256d __DEFAULT_FN_ATTRS
5314_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5315{
5316 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5317 (__v4df) __W,
5318 (__mmask8) __U);
5319}
5320
5321static __inline__ __m256d __DEFAULT_FN_ATTRS
5322_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5323{
5324 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5325 (__v4df)
5326 _mm256_setzero_pd (),
5327 (__mmask8) __U);
5328}
5329
5330static __inline__ __m128 __DEFAULT_FN_ATTRS
5331_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5332{
5333 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5334 (__v4sf) __W,
5335 (__mmask8) __U);
5336}
5337
5338static __inline__ __m128 __DEFAULT_FN_ATTRS
5339_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5340{
5341 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5342 (__v4sf)
5343 _mm_setzero_ps (),
5344 (__mmask8) __U);
5345}
5346
5347static __inline__ __m256 __DEFAULT_FN_ATTRS
5348_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5349{
5350 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5351 (__v8sf) __W,
5352 (__mmask8) __U);
5353}
5354
5355static __inline__ __m256 __DEFAULT_FN_ATTRS
5356_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5357{
5358 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5359 (__v8sf)
5360 _mm256_setzero_ps (),
5361 (__mmask8) __U);
5362}
5363
5364static __inline__ __m128i __DEFAULT_FN_ATTRS
5365_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5366{
5367 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5368 (__v2di) __W,
5369 (__mmask8) __U);
5370}
5371
5372static __inline__ __m128i __DEFAULT_FN_ATTRS
5373_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5374{
5375 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5376 (__v2di)
5377 _mm_setzero_si128 (),
5378 (__mmask8) __U);
5379}
5380
5381static __inline__ __m256i __DEFAULT_FN_ATTRS
5382_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5383{
5384 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5385 (__v4di) __W,
5386 (__mmask8) __U);
5387}
5388
5389static __inline__ __m256i __DEFAULT_FN_ATTRS
5390_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5391{
5392 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5393 (__v4di)
5394 _mm256_setzero_si256 (),
5395 (__mmask8) __U);
5396}
5397
5398static __inline__ __m128i __DEFAULT_FN_ATTRS
5399_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5400{
5401 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5402 (__v4si) __W,
5403 (__mmask8) __U);
5404}
5405
5406static __inline__ __m128i __DEFAULT_FN_ATTRS
5407_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5408{
5409 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5410 (__v4si)
5411 _mm_setzero_si128 (),
5412 (__mmask8) __U);
5413}
5414
5415static __inline__ __m256i __DEFAULT_FN_ATTRS
5416_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5417{
5418 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5419 (__v8si) __W,
5420 (__mmask8) __U);
5421}
5422
5423static __inline__ __m256i __DEFAULT_FN_ATTRS
5424_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5425{
5426 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5427 (__v8si)
5428 _mm256_setzero_si256 (),
5429 (__mmask8) __U);
5430}
5431
5432static __inline__ __m128d __DEFAULT_FN_ATTRS
5433_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5434{
5435 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5436 (__v2df) __W,
5437 (__mmask8) __U);
5438}
5439
5440static __inline__ __m128d __DEFAULT_FN_ATTRS
5441_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5442{
5443 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5444 (__v2df)
5445 _mm_setzero_pd (),
5446 (__mmask8) __U);
5447}
5448
5449static __inline__ __m256d __DEFAULT_FN_ATTRS
5450_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5451{
5452 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5453 (__v4df) __W,
5454 (__mmask8) __U);
5455}
5456
5457static __inline__ __m256d __DEFAULT_FN_ATTRS
5458_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5459{
5460 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5461 (__v4df)
5462 _mm256_setzero_pd (),
5463 (__mmask8) __U);
5464}
5465
5466static __inline__ __m128 __DEFAULT_FN_ATTRS
5467_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5468{
5469 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5470 (__v4sf) __W,
5471 (__mmask8) __U);
5472}
5473
5474static __inline__ __m128 __DEFAULT_FN_ATTRS
5475_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5476{
5477 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5478 (__v4sf)
5479 _mm_setzero_ps (),
5480 (__mmask8) __U);
5481}
5482
5483static __inline__ __m256 __DEFAULT_FN_ATTRS
5484_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5485{
5486 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5487 (__v8sf) __W,
5488 (__mmask8) __U);
5489}
5490
5491static __inline__ __m256 __DEFAULT_FN_ATTRS
5492_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5493{
5494 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5495 (__v8sf)
5496 _mm256_setzero_ps (),
5497 (__mmask8) __U);
5498}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005499
5500static __inline__ void __DEFAULT_FN_ATTRS
5501_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5502{
5503 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5504 (__v2df) __A,
5505 (__mmask8) __U);
5506}
5507
5508static __inline__ void __DEFAULT_FN_ATTRS
5509_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5510{
5511 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5512 (__v4df) __A,
5513 (__mmask8) __U);
5514}
5515
5516static __inline__ void __DEFAULT_FN_ATTRS
5517_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5518{
5519 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5520 (__v4sf) __A,
5521 (__mmask8) __U);
5522}
5523
5524static __inline__ void __DEFAULT_FN_ATTRS
5525_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5526{
5527 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5528 (__v8sf) __A,
5529 (__mmask8) __U);
5530}
5531
5532static __inline__ void __DEFAULT_FN_ATTRS
5533_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5534{
5535 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5536 (__v2di) __A,
5537 (__mmask8) __U);
5538}
5539
5540static __inline__ void __DEFAULT_FN_ATTRS
5541_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5542{
5543 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5544 (__v4di) __A,
5545 (__mmask8) __U);
5546}
5547
5548static __inline__ void __DEFAULT_FN_ATTRS
5549_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5550{
5551 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5552 (__v4si) __A,
5553 (__mmask8) __U);
5554}
5555
5556static __inline__ void __DEFAULT_FN_ATTRS
5557_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5558{
5559 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5560 (__v8si) __A,
5561 (__mmask8) __U);
5562}
5563
5564static __inline__ void __DEFAULT_FN_ATTRS
5565_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5566{
5567 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5568 (__v2df) __A,
5569 (__mmask8) __U);
5570}
5571
5572static __inline__ void __DEFAULT_FN_ATTRS
5573_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5574{
5575 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5576 (__v4df) __A,
5577 (__mmask8) __U);
5578}
5579
5580static __inline__ void __DEFAULT_FN_ATTRS
5581_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5582{
5583 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5584 (__v4sf) __A,
5585 (__mmask8) __U);
5586}
5587
5588static __inline__ void __DEFAULT_FN_ATTRS
5589_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5590{
5591 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5592 (__v8sf) __A,
5593 (__mmask8) __U);
5594}
5595
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005596
5597static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005598_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005599{
Craig Topper79f53ca2016-06-23 06:36:42 +00005600 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5601 (__v2df)_mm_unpackhi_pd(__A, __B),
5602 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005603}
5604
5605static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005606_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005607{
Craig Topper79f53ca2016-06-23 06:36:42 +00005608 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5609 (__v2df)_mm_unpackhi_pd(__A, __B),
5610 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005611}
5612
5613static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005614_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005615{
Craig Topper79f53ca2016-06-23 06:36:42 +00005616 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5617 (__v4df)_mm256_unpackhi_pd(__A, __B),
5618 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005619}
5620
5621static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005622_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005623{
Craig Topper79f53ca2016-06-23 06:36:42 +00005624 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5625 (__v4df)_mm256_unpackhi_pd(__A, __B),
5626 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005627}
5628
5629static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005630_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005631{
Craig Topper79f53ca2016-06-23 06:36:42 +00005632 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5633 (__v4sf)_mm_unpackhi_ps(__A, __B),
5634 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005635}
5636
5637static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005638_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005639{
Craig Topper79f53ca2016-06-23 06:36:42 +00005640 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5641 (__v4sf)_mm_unpackhi_ps(__A, __B),
5642 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005643}
5644
5645static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005646_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005647{
Craig Topper79f53ca2016-06-23 06:36:42 +00005648 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5649 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5650 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005651}
5652
5653static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005654_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005655{
Craig Topper79f53ca2016-06-23 06:36:42 +00005656 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5657 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5658 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005659}
5660
5661static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005662_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005663{
Craig Topper79f53ca2016-06-23 06:36:42 +00005664 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5665 (__v2df)_mm_unpacklo_pd(__A, __B),
5666 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005667}
5668
5669static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005670_mm_maskz_unpacklo_pd(__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_unpacklo_pd(__A, __B),
5674 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005675}
5676
5677static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005678_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005679{
Craig Topper79f53ca2016-06-23 06:36:42 +00005680 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5681 (__v4df)_mm256_unpacklo_pd(__A, __B),
5682 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005683}
5684
5685static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005686_mm256_maskz_unpacklo_pd(__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_unpacklo_pd(__A, __B),
5690 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005691}
5692
5693static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005694_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005695{
Craig Topper79f53ca2016-06-23 06:36:42 +00005696 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5697 (__v4sf)_mm_unpacklo_ps(__A, __B),
5698 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005699}
5700
5701static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005702_mm_maskz_unpacklo_ps(__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_unpacklo_ps(__A, __B),
5706 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005707}
5708
5709static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005710_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005711{
Craig Topper79f53ca2016-06-23 06:36:42 +00005712 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5713 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5714 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005715}
5716
5717static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005718_mm256_maskz_unpacklo_ps(__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_unpacklo_ps(__A, __B),
5722 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005723}
5724
5725static __inline__ __m128d __DEFAULT_FN_ATTRS
5726_mm_rcp14_pd (__m128d __A)
5727{
5728 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5729 (__v2df)
5730 _mm_setzero_pd (),
5731 (__mmask8) -1);
5732}
5733
5734static __inline__ __m128d __DEFAULT_FN_ATTRS
5735_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5736{
5737 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5738 (__v2df) __W,
5739 (__mmask8) __U);
5740}
5741
5742static __inline__ __m128d __DEFAULT_FN_ATTRS
5743_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5744{
5745 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5746 (__v2df)
5747 _mm_setzero_pd (),
5748 (__mmask8) __U);
5749}
5750
5751static __inline__ __m256d __DEFAULT_FN_ATTRS
5752_mm256_rcp14_pd (__m256d __A)
5753{
5754 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5755 (__v4df)
5756 _mm256_setzero_pd (),
5757 (__mmask8) -1);
5758}
5759
5760static __inline__ __m256d __DEFAULT_FN_ATTRS
5761_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5762{
5763 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5764 (__v4df) __W,
5765 (__mmask8) __U);
5766}
5767
5768static __inline__ __m256d __DEFAULT_FN_ATTRS
5769_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5770{
5771 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5772 (__v4df)
5773 _mm256_setzero_pd (),
5774 (__mmask8) __U);
5775}
5776
5777static __inline__ __m128 __DEFAULT_FN_ATTRS
5778_mm_rcp14_ps (__m128 __A)
5779{
5780 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5781 (__v4sf)
5782 _mm_setzero_ps (),
5783 (__mmask8) -1);
5784}
5785
5786static __inline__ __m128 __DEFAULT_FN_ATTRS
5787_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5788{
5789 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5790 (__v4sf) __W,
5791 (__mmask8) __U);
5792}
5793
5794static __inline__ __m128 __DEFAULT_FN_ATTRS
5795_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5796{
5797 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5798 (__v4sf)
5799 _mm_setzero_ps (),
5800 (__mmask8) __U);
5801}
5802
5803static __inline__ __m256 __DEFAULT_FN_ATTRS
5804_mm256_rcp14_ps (__m256 __A)
5805{
5806 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5807 (__v8sf)
5808 _mm256_setzero_ps (),
5809 (__mmask8) -1);
5810}
5811
5812static __inline__ __m256 __DEFAULT_FN_ATTRS
5813_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5814{
5815 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5816 (__v8sf) __W,
5817 (__mmask8) __U);
5818}
5819
5820static __inline__ __m256 __DEFAULT_FN_ATTRS
5821_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
5822{
5823 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5824 (__v8sf)
5825 _mm256_setzero_ps (),
5826 (__mmask8) __U);
5827}
5828
Craig Topperc6338672018-05-31 00:51:20 +00005829#define _mm_mask_permute_pd(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005830 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5831 (__v2df)_mm_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005832 (__v2df)(__m128d)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005833
Craig Topperc6338672018-05-31 00:51:20 +00005834#define _mm_maskz_permute_pd(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005835 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5836 (__v2df)_mm_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005837 (__v2df)_mm_setzero_pd())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005838
Craig Topperc6338672018-05-31 00:51:20 +00005839#define _mm256_mask_permute_pd(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005840 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5841 (__v4df)_mm256_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005842 (__v4df)(__m256d)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005843
Craig Topperc6338672018-05-31 00:51:20 +00005844#define _mm256_maskz_permute_pd(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005845 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5846 (__v4df)_mm256_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005847 (__v4df)_mm256_setzero_pd())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005848
Craig Topperc6338672018-05-31 00:51:20 +00005849#define _mm_mask_permute_ps(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005850 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5851 (__v4sf)_mm_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005852 (__v4sf)(__m128)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005853
Craig Topperc6338672018-05-31 00:51:20 +00005854#define _mm_maskz_permute_ps(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005855 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5856 (__v4sf)_mm_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005857 (__v4sf)_mm_setzero_ps())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005858
Craig Topperc6338672018-05-31 00:51:20 +00005859#define _mm256_mask_permute_ps(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005860 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5861 (__v8sf)_mm256_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005862 (__v8sf)(__m256)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005863
Craig Topperc6338672018-05-31 00:51:20 +00005864#define _mm256_maskz_permute_ps(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005865 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5866 (__v8sf)_mm256_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005867 (__v8sf)_mm256_setzero_ps())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005868
5869static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005870_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005871{
Craig Topper5391c982016-12-10 20:27:39 +00005872 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5873 (__v2df)_mm_permutevar_pd(__A, __C),
5874 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005875}
5876
5877static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005878_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005879{
Craig Topper5391c982016-12-10 20:27:39 +00005880 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5881 (__v2df)_mm_permutevar_pd(__A, __C),
5882 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005883}
5884
5885static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005886_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005887{
Craig Topper5391c982016-12-10 20:27:39 +00005888 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5889 (__v4df)_mm256_permutevar_pd(__A, __C),
5890 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005891}
5892
5893static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005894_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005895{
Craig Topper5391c982016-12-10 20:27:39 +00005896 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5897 (__v4df)_mm256_permutevar_pd(__A, __C),
5898 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005899}
5900
5901static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005902_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005903{
Craig Topper5391c982016-12-10 20:27:39 +00005904 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5905 (__v4sf)_mm_permutevar_ps(__A, __C),
5906 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005907}
5908
5909static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005910_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005911{
Craig Topper5391c982016-12-10 20:27:39 +00005912 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5913 (__v4sf)_mm_permutevar_ps(__A, __C),
5914 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005915}
5916
5917static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005918_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005919{
Craig Topper5391c982016-12-10 20:27:39 +00005920 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5921 (__v8sf)_mm256_permutevar_ps(__A, __C),
5922 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005923}
5924
5925static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005926_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005927{
Craig Topper5391c982016-12-10 20:27:39 +00005928 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5929 (__v8sf)_mm256_permutevar_ps(__A, __C),
5930 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005931}
5932
Michael Zuckerman07525092016-04-11 10:22:07 +00005933static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5934_mm_test_epi32_mask (__m128i __A, __m128i __B)
5935{
Craig Topperdff5b312018-05-30 18:02:11 +00005936 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005937}
5938
5939static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5940_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
5941{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005942 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00005943 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005944}
5945
5946static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5947_mm256_test_epi32_mask (__m256i __A, __m256i __B)
5948{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005949 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
5950 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005951}
5952
5953static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5954_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
5955{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005956 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
5957 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005958}
5959
5960static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5961_mm_test_epi64_mask (__m128i __A, __m128i __B)
5962{
Craig Topperdff5b312018-05-30 18:02:11 +00005963 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005964}
5965
5966static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5967_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
5968{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005969 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00005970 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005971}
5972
5973static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5974_mm256_test_epi64_mask (__m256i __A, __m256i __B)
5975{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005976 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
5977 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005978}
5979
5980static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5981_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
5982{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005983 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
5984 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005985}
5986
5987static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5988_mm_testn_epi32_mask (__m128i __A, __m128i __B)
5989{
Craig Topperdff5b312018-05-30 18:02:11 +00005990 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005991}
5992
5993static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5994_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
5995{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005996 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00005997 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005998}
5999
6000static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6001_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6002{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006003 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6004 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006005}
6006
6007static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6008_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6009{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006010 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6011 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006012}
6013
6014static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6015_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6016{
Craig Topperdff5b312018-05-30 18:02:11 +00006017 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006018}
6019
6020static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6021_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6022{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006023 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006024 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006025}
6026
6027static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6028_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6029{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006030 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6031 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006032}
6033
6034static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6035_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6036{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006037 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6038 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006039}
6040
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006041static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006042_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006043{
Craig Topper79f53ca2016-06-23 06:36:42 +00006044 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6045 (__v4si)_mm_unpackhi_epi32(__A, __B),
6046 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006047}
6048
6049static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006050_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006051{
Craig Topper79f53ca2016-06-23 06:36:42 +00006052 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6053 (__v4si)_mm_unpackhi_epi32(__A, __B),
6054 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006055}
6056
6057static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006058_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006059{
Craig Topper79f53ca2016-06-23 06:36:42 +00006060 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6061 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6062 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006063}
6064
6065static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006066_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006067{
Craig Topper79f53ca2016-06-23 06:36:42 +00006068 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6069 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6070 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006071}
6072
6073static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006074_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006075{
Craig Topper79f53ca2016-06-23 06:36:42 +00006076 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6077 (__v2di)_mm_unpackhi_epi64(__A, __B),
6078 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006079}
6080
6081static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006082_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006083{
Craig Topper79f53ca2016-06-23 06:36:42 +00006084 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6085 (__v2di)_mm_unpackhi_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006086 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006087}
6088
6089static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006090_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006091{
Craig Topper79f53ca2016-06-23 06:36:42 +00006092 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6093 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6094 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006095}
6096
6097static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006098_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006099{
Craig Topper79f53ca2016-06-23 06:36:42 +00006100 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6101 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6102 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006103}
6104
6105static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006106_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006107{
Craig Topper79f53ca2016-06-23 06:36:42 +00006108 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6109 (__v4si)_mm_unpacklo_epi32(__A, __B),
6110 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006111}
6112
6113static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006114_mm_maskz_unpacklo_epi32(__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_unpacklo_epi32(__A, __B),
6118 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006119}
6120
6121static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006122_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006123{
Craig Topper79f53ca2016-06-23 06:36:42 +00006124 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6125 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6126 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006127}
6128
6129static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006130_mm256_maskz_unpacklo_epi32(__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_unpacklo_epi32(__A, __B),
6134 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006135}
6136
6137static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006138_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006139{
Craig Topper79f53ca2016-06-23 06:36:42 +00006140 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6141 (__v2di)_mm_unpacklo_epi64(__A, __B),
6142 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006143}
6144
6145static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006146_mm_maskz_unpacklo_epi64(__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_unpacklo_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006150 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006151}
6152
6153static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006154_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006155{
Craig Topper79f53ca2016-06-23 06:36:42 +00006156 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6157 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6158 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006159}
6160
6161static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006162_mm256_maskz_unpacklo_epi64(__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_unpacklo_epi64(__A, __B),
6166 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006167}
6168
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006169static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006170_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006171{
Craig Topper66b2fd12016-10-31 04:30:51 +00006172 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6173 (__v4si)_mm_sra_epi32(__A, __B),
6174 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006175}
6176
6177static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006178_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006179{
Craig Topper66b2fd12016-10-31 04:30:51 +00006180 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6181 (__v4si)_mm_sra_epi32(__A, __B),
6182 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006183}
6184
6185static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006186_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006187{
Craig Topper66b2fd12016-10-31 04:30:51 +00006188 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6189 (__v8si)_mm256_sra_epi32(__A, __B),
6190 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006191}
6192
6193static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006194_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006195{
Craig Topper66b2fd12016-10-31 04:30:51 +00006196 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6197 (__v8si)_mm256_sra_epi32(__A, __B),
6198 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006199}
6200
Craig Topper66b2fd12016-10-31 04:30:51 +00006201static __inline__ __m128i __DEFAULT_FN_ATTRS
6202_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6203{
6204 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6205 (__v4si)_mm_srai_epi32(__A, __B),
6206 (__v4si)__W);
6207}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006208
Craig Topper66b2fd12016-10-31 04:30:51 +00006209static __inline__ __m128i __DEFAULT_FN_ATTRS
6210_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6211{
6212 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6213 (__v4si)_mm_srai_epi32(__A, __B),
6214 (__v4si)_mm_setzero_si128());
6215}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006216
Craig Topper66b2fd12016-10-31 04:30:51 +00006217static __inline__ __m256i __DEFAULT_FN_ATTRS
6218_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6219{
6220 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6221 (__v8si)_mm256_srai_epi32(__A, __B),
6222 (__v8si)__W);
6223}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006224
Craig Topper66b2fd12016-10-31 04:30:51 +00006225static __inline__ __m256i __DEFAULT_FN_ATTRS
6226_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6227{
6228 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6229 (__v8si)_mm256_srai_epi32(__A, __B),
6230 (__v8si)_mm256_setzero_si256());
6231}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006232
6233static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006234_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006235{
Craig Topper1a441932016-11-12 07:16:59 +00006236 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006237}
6238
6239static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006240_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006241{
Craig Topper1a441932016-11-12 07:16:59 +00006242 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6243 (__v2di)_mm_sra_epi64(__A, __B), \
6244 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006245}
6246
6247static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006248_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006249{
Craig Topper1a441932016-11-12 07:16:59 +00006250 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6251 (__v2di)_mm_sra_epi64(__A, __B), \
Craig Topperdff5b312018-05-30 18:02:11 +00006252 (__v2di)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006253}
6254
6255static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006256_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006257{
Craig Topper1a441932016-11-12 07:16:59 +00006258 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006259}
6260
6261static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006262_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006263{
Craig Topper1a441932016-11-12 07:16:59 +00006264 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6265 (__v4di)_mm256_sra_epi64(__A, __B), \
6266 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006267}
6268
6269static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006270_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006271{
Craig Topper1a441932016-11-12 07:16:59 +00006272 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6273 (__v4di)_mm256_sra_epi64(__A, __B), \
6274 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006275}
6276
Craig Topper1a441932016-11-12 07:16:59 +00006277static __inline__ __m128i __DEFAULT_FN_ATTRS
6278_mm_srai_epi64(__m128i __A, int __imm)
6279{
6280 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6281}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006282
Craig Topper1a441932016-11-12 07:16:59 +00006283static __inline__ __m128i __DEFAULT_FN_ATTRS
6284_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6285{
6286 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6287 (__v2di)_mm_srai_epi64(__A, __imm), \
6288 (__v2di)__W);
6289}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006290
Craig Topper1a441932016-11-12 07:16:59 +00006291static __inline__ __m128i __DEFAULT_FN_ATTRS
6292_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6293{
6294 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6295 (__v2di)_mm_srai_epi64(__A, __imm), \
Craig Topperdff5b312018-05-30 18:02:11 +00006296 (__v2di)_mm_setzero_si128());
Craig Topper1a441932016-11-12 07:16:59 +00006297}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006298
Craig Topper1a441932016-11-12 07:16:59 +00006299static __inline__ __m256i __DEFAULT_FN_ATTRS
6300_mm256_srai_epi64(__m256i __A, int __imm)
6301{
6302 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6303}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006304
Craig Topper1a441932016-11-12 07:16:59 +00006305static __inline__ __m256i __DEFAULT_FN_ATTRS
6306_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6307{
6308 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6309 (__v4di)_mm256_srai_epi64(__A, __imm), \
6310 (__v4di)__W);
6311}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006312
Craig Topper1a441932016-11-12 07:16:59 +00006313static __inline__ __m256i __DEFAULT_FN_ATTRS
6314_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6315{
6316 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6317 (__v4di)_mm256_srai_epi64(__A, __imm), \
6318 (__v4di)_mm256_setzero_si256());
6319}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006320
Craig Topperc6338672018-05-31 00:51:20 +00006321#define _mm_ternarylogic_epi32(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006322 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6323 (__v4si)(__m128i)(B), \
6324 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006325 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006326
Craig Topperc6338672018-05-31 00:51:20 +00006327#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006328 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6329 (__v4si)(__m128i)(B), \
6330 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006331 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006332
Craig Topperc6338672018-05-31 00:51:20 +00006333#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006334 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6335 (__v4si)(__m128i)(B), \
6336 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006337 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006338
Craig Topperc6338672018-05-31 00:51:20 +00006339#define _mm256_ternarylogic_epi32(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006340 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6341 (__v8si)(__m256i)(B), \
6342 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006343 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006344
Craig Topperc6338672018-05-31 00:51:20 +00006345#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006346 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6347 (__v8si)(__m256i)(B), \
6348 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006349 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006350
Craig Topperc6338672018-05-31 00:51:20 +00006351#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006352 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6353 (__v8si)(__m256i)(B), \
6354 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006355 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006356
Craig Topperc6338672018-05-31 00:51:20 +00006357#define _mm_ternarylogic_epi64(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006358 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6359 (__v2di)(__m128i)(B), \
6360 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006361 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006362
Craig Topperc6338672018-05-31 00:51:20 +00006363#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006364 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6365 (__v2di)(__m128i)(B), \
6366 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006367 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006368
Craig Topperc6338672018-05-31 00:51:20 +00006369#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006370 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6371 (__v2di)(__m128i)(B), \
6372 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006373 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006374
Craig Topperc6338672018-05-31 00:51:20 +00006375#define _mm256_ternarylogic_epi64(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006376 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6377 (__v4di)(__m256i)(B), \
6378 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006379 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006380
Craig Topperc6338672018-05-31 00:51:20 +00006381#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006382 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6383 (__v4di)(__m256i)(B), \
6384 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006385 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006386
Craig Topperc6338672018-05-31 00:51:20 +00006387#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006388 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6389 (__v4di)(__m256i)(B), \
6390 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006391 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006392
6393
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006394
Craig Topperc6338672018-05-31 00:51:20 +00006395#define _mm256_shuffle_f32x4(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006396 (__m256)__builtin_ia32_shuf_f32x4_256((__v8sf)(__m256)(A), \
6397 (__v8sf)(__m256)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006398
Craig Topperc6338672018-05-31 00:51:20 +00006399#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006400 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6401 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006402 (__v8sf)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006403
Craig Topperc6338672018-05-31 00:51:20 +00006404#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006405 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6406 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006407 (__v8sf)_mm256_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006408
Craig Topperc6338672018-05-31 00:51:20 +00006409#define _mm256_shuffle_f64x2(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006410 (__m256d)__builtin_ia32_shuf_f64x2_256((__v4df)(__m256d)(A), \
6411 (__v4df)(__m256d)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006412
Craig Topperc6338672018-05-31 00:51:20 +00006413#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006414 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6415 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006416 (__v4df)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006417
Craig Topperc6338672018-05-31 00:51:20 +00006418#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006419 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6420 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006421 (__v4df)_mm256_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006422
Craig Topperc6338672018-05-31 00:51:20 +00006423#define _mm256_shuffle_i32x4(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006424 (__m256i)__builtin_ia32_shuf_i32x4_256((__v8si)(__m256i)(A), \
6425 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006426
Craig Topperc6338672018-05-31 00:51:20 +00006427#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006428 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6429 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006430 (__v8si)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006431
Craig Topperc6338672018-05-31 00:51:20 +00006432#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006433 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6434 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006435 (__v8si)_mm256_setzero_si256())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006436
Craig Topperc6338672018-05-31 00:51:20 +00006437#define _mm256_shuffle_i64x2(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006438 (__m256i)__builtin_ia32_shuf_i64x2_256((__v4di)(__m256i)(A), \
6439 (__v4di)(__m256i)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006440
Craig Topperc6338672018-05-31 00:51:20 +00006441#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006442 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6443 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006444 (__v4di)(__m256)(W))
Jina Nahiasdca97912017-11-13 09:15:31 +00006445
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006446
Craig Topperc6338672018-05-31 00:51:20 +00006447#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006448 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6449 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006450 (__v4di)_mm256_setzero_si256())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006451
Craig Topperc6338672018-05-31 00:51:20 +00006452#define _mm_mask_shuffle_pd(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006453 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6454 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006455 (__v2df)(__m128d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006456
Craig Topperc6338672018-05-31 00:51:20 +00006457#define _mm_maskz_shuffle_pd(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006458 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6459 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006460 (__v2df)_mm_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006461
Craig Topperc6338672018-05-31 00:51:20 +00006462#define _mm256_mask_shuffle_pd(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006463 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6464 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006465 (__v4df)(__m256d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006466
Craig Topperc6338672018-05-31 00:51:20 +00006467#define _mm256_maskz_shuffle_pd(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006468 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6469 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006470 (__v4df)_mm256_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006471
Craig Topperc6338672018-05-31 00:51:20 +00006472#define _mm_mask_shuffle_ps(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006473 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6474 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006475 (__v4sf)(__m128)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006476
Craig Topperc6338672018-05-31 00:51:20 +00006477#define _mm_maskz_shuffle_ps(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006478 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6479 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006480 (__v4sf)_mm_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006481
Craig Topperc6338672018-05-31 00:51:20 +00006482#define _mm256_mask_shuffle_ps(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006483 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6484 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006485 (__v8sf)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006486
Craig Topperc6338672018-05-31 00:51:20 +00006487#define _mm256_maskz_shuffle_ps(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006488 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6489 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006490 (__v8sf)_mm256_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006491
6492static __inline__ __m128d __DEFAULT_FN_ATTRS
6493_mm_rsqrt14_pd (__m128d __A)
6494{
6495 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6496 (__v2df)
6497 _mm_setzero_pd (),
6498 (__mmask8) -1);
6499}
6500
6501static __inline__ __m128d __DEFAULT_FN_ATTRS
6502_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6503{
6504 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6505 (__v2df) __W,
6506 (__mmask8) __U);
6507}
6508
6509static __inline__ __m128d __DEFAULT_FN_ATTRS
6510_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6511{
6512 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6513 (__v2df)
6514 _mm_setzero_pd (),
6515 (__mmask8) __U);
6516}
6517
6518static __inline__ __m256d __DEFAULT_FN_ATTRS
6519_mm256_rsqrt14_pd (__m256d __A)
6520{
6521 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6522 (__v4df)
6523 _mm256_setzero_pd (),
6524 (__mmask8) -1);
6525}
6526
6527static __inline__ __m256d __DEFAULT_FN_ATTRS
6528_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6529{
6530 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6531 (__v4df) __W,
6532 (__mmask8) __U);
6533}
6534
6535static __inline__ __m256d __DEFAULT_FN_ATTRS
6536_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6537{
6538 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6539 (__v4df)
6540 _mm256_setzero_pd (),
6541 (__mmask8) __U);
6542}
6543
6544static __inline__ __m128 __DEFAULT_FN_ATTRS
6545_mm_rsqrt14_ps (__m128 __A)
6546{
6547 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6548 (__v4sf)
6549 _mm_setzero_ps (),
6550 (__mmask8) -1);
6551}
6552
6553static __inline__ __m128 __DEFAULT_FN_ATTRS
6554_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6555{
6556 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6557 (__v4sf) __W,
6558 (__mmask8) __U);
6559}
6560
6561static __inline__ __m128 __DEFAULT_FN_ATTRS
6562_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6563{
6564 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6565 (__v4sf)
6566 _mm_setzero_ps (),
6567 (__mmask8) __U);
6568}
6569
6570static __inline__ __m256 __DEFAULT_FN_ATTRS
6571_mm256_rsqrt14_ps (__m256 __A)
6572{
6573 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6574 (__v8sf)
6575 _mm256_setzero_ps (),
6576 (__mmask8) -1);
6577}
6578
6579static __inline__ __m256 __DEFAULT_FN_ATTRS
6580_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6581{
6582 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6583 (__v8sf) __W,
6584 (__mmask8) __U);
6585}
6586
6587static __inline__ __m256 __DEFAULT_FN_ATTRS
6588_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6589{
6590 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6591 (__v8sf)
6592 _mm256_setzero_ps (),
6593 (__mmask8) __U);
6594}
6595
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006596static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006597_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006598{
Craig Topper367c86d2017-01-18 02:17:10 +00006599 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6600 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006601}
6602
6603static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006604_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006605{
Craig Topper367c86d2017-01-18 02:17:10 +00006606 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6607 (__v8sf)_mm256_broadcast_f32x4(__A),
6608 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006609}
6610
6611static __inline__ __m256 __DEFAULT_FN_ATTRS
6612_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6613{
Craig Topper367c86d2017-01-18 02:17:10 +00006614 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6615 (__v8sf)_mm256_broadcast_f32x4(__A),
6616 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006617}
6618
6619static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006620_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006621{
Craig Topper367c86d2017-01-18 02:17:10 +00006622 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6623 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006624}
6625
6626static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006627_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006628{
Craig Topper367c86d2017-01-18 02:17:10 +00006629 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6630 (__v8si)_mm256_broadcast_i32x4(__A),
6631 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006632}
6633
6634static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006635_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006636{
Craig Topper367c86d2017-01-18 02:17:10 +00006637 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6638 (__v8si)_mm256_broadcast_i32x4(__A),
6639 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006640}
6641
6642static __inline__ __m256d __DEFAULT_FN_ATTRS
6643_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6644{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006645 return (__m256d)__builtin_ia32_selectpd_256(__M,
6646 (__v4df) _mm256_broadcastsd_pd(__A),
6647 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006648}
6649
6650static __inline__ __m256d __DEFAULT_FN_ATTRS
6651_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6652{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006653 return (__m256d)__builtin_ia32_selectpd_256(__M,
6654 (__v4df) _mm256_broadcastsd_pd(__A),
6655 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006656}
6657
6658static __inline__ __m128 __DEFAULT_FN_ATTRS
6659_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6660{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006661 return (__m128)__builtin_ia32_selectps_128(__M,
6662 (__v4sf) _mm_broadcastss_ps(__A),
6663 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006664}
6665
6666static __inline__ __m128 __DEFAULT_FN_ATTRS
6667_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6668{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006669 return (__m128)__builtin_ia32_selectps_128(__M,
6670 (__v4sf) _mm_broadcastss_ps(__A),
6671 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006672}
6673
6674static __inline__ __m256 __DEFAULT_FN_ATTRS
6675_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6676{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006677 return (__m256)__builtin_ia32_selectps_256(__M,
6678 (__v8sf) _mm256_broadcastss_ps(__A),
6679 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006680}
6681
6682static __inline__ __m256 __DEFAULT_FN_ATTRS
6683_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6684{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006685 return (__m256)__builtin_ia32_selectps_256(__M,
6686 (__v8sf) _mm256_broadcastss_ps(__A),
6687 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006688}
6689
6690static __inline__ __m128i __DEFAULT_FN_ATTRS
6691_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6692{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006693 return (__m128i)__builtin_ia32_selectd_128(__M,
6694 (__v4si) _mm_broadcastd_epi32(__A),
6695 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006696}
6697
6698static __inline__ __m128i __DEFAULT_FN_ATTRS
6699_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6700{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006701 return (__m128i)__builtin_ia32_selectd_128(__M,
6702 (__v4si) _mm_broadcastd_epi32(__A),
6703 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006704}
6705
6706static __inline__ __m256i __DEFAULT_FN_ATTRS
6707_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6708{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006709 return (__m256i)__builtin_ia32_selectd_256(__M,
6710 (__v8si) _mm256_broadcastd_epi32(__A),
6711 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006712}
6713
6714static __inline__ __m256i __DEFAULT_FN_ATTRS
6715_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6716{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006717 return (__m256i)__builtin_ia32_selectd_256(__M,
6718 (__v8si) _mm256_broadcastd_epi32(__A),
6719 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006720}
6721
6722static __inline__ __m128i __DEFAULT_FN_ATTRS
6723_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6724{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006725 return (__m128i)__builtin_ia32_selectq_128(__M,
6726 (__v2di) _mm_broadcastq_epi64(__A),
6727 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006728}
6729
6730static __inline__ __m128i __DEFAULT_FN_ATTRS
6731_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6732{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006733 return (__m128i)__builtin_ia32_selectq_128(__M,
6734 (__v2di) _mm_broadcastq_epi64(__A),
6735 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006736}
6737
6738static __inline__ __m256i __DEFAULT_FN_ATTRS
6739_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6740{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006741 return (__m256i)__builtin_ia32_selectq_256(__M,
6742 (__v4di) _mm256_broadcastq_epi64(__A),
6743 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006744}
6745
6746static __inline__ __m256i __DEFAULT_FN_ATTRS
6747_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6748{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006749 return (__m256i)__builtin_ia32_selectq_256(__M,
6750 (__v4di) _mm256_broadcastq_epi64(__A),
6751 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006752}
6753
Michael Zuckermane1680612016-04-13 15:02:04 +00006754static __inline__ __m128i __DEFAULT_FN_ATTRS
6755_mm_cvtsepi32_epi8 (__m128i __A)
6756{
6757 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6758 (__v16qi)_mm_undefined_si128(),
6759 (__mmask8) -1);
6760}
6761
6762static __inline__ __m128i __DEFAULT_FN_ATTRS
6763_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6764{
6765 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6766 (__v16qi) __O, __M);
6767}
6768
6769static __inline__ __m128i __DEFAULT_FN_ATTRS
6770_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6771{
6772 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6773 (__v16qi) _mm_setzero_si128 (),
6774 __M);
6775}
6776
6777static __inline__ void __DEFAULT_FN_ATTRS
6778_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6779{
6780 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6781}
6782
6783static __inline__ __m128i __DEFAULT_FN_ATTRS
6784_mm256_cvtsepi32_epi8 (__m256i __A)
6785{
6786 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6787 (__v16qi)_mm_undefined_si128(),
6788 (__mmask8) -1);
6789}
6790
6791static __inline__ __m128i __DEFAULT_FN_ATTRS
6792_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6793{
6794 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6795 (__v16qi) __O, __M);
6796}
6797
6798static __inline__ __m128i __DEFAULT_FN_ATTRS
6799_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
6800{
6801 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6802 (__v16qi) _mm_setzero_si128 (),
6803 __M);
6804}
6805
6806static __inline__ void __DEFAULT_FN_ATTRS
6807_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6808{
6809 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
6810}
6811
6812static __inline__ __m128i __DEFAULT_FN_ATTRS
6813_mm_cvtsepi32_epi16 (__m128i __A)
6814{
6815 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6816 (__v8hi)_mm_setzero_si128 (),
6817 (__mmask8) -1);
6818}
6819
6820static __inline__ __m128i __DEFAULT_FN_ATTRS
6821_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
6822{
6823 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6824 (__v8hi)__O,
6825 __M);
6826}
6827
6828static __inline__ __m128i __DEFAULT_FN_ATTRS
6829_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
6830{
6831 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6832 (__v8hi) _mm_setzero_si128 (),
6833 __M);
6834}
6835
6836static __inline__ void __DEFAULT_FN_ATTRS
6837_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
6838{
6839 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
6840}
6841
6842static __inline__ __m128i __DEFAULT_FN_ATTRS
6843_mm256_cvtsepi32_epi16 (__m256i __A)
6844{
6845 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6846 (__v8hi)_mm_undefined_si128(),
6847 (__mmask8) -1);
6848}
6849
6850static __inline__ __m128i __DEFAULT_FN_ATTRS
6851_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
6852{
6853 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6854 (__v8hi) __O, __M);
6855}
6856
6857static __inline__ __m128i __DEFAULT_FN_ATTRS
6858_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
6859{
6860 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6861 (__v8hi) _mm_setzero_si128 (),
6862 __M);
6863}
6864
6865static __inline__ void __DEFAULT_FN_ATTRS
6866_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
6867{
6868 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
6869}
6870
6871static __inline__ __m128i __DEFAULT_FN_ATTRS
6872_mm_cvtsepi64_epi8 (__m128i __A)
6873{
6874 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6875 (__v16qi)_mm_undefined_si128(),
6876 (__mmask8) -1);
6877}
6878
6879static __inline__ __m128i __DEFAULT_FN_ATTRS
6880_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6881{
6882 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6883 (__v16qi) __O, __M);
6884}
6885
6886static __inline__ __m128i __DEFAULT_FN_ATTRS
6887_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
6888{
6889 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6890 (__v16qi) _mm_setzero_si128 (),
6891 __M);
6892}
6893
6894static __inline__ void __DEFAULT_FN_ATTRS
6895_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6896{
6897 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
6898}
6899
6900static __inline__ __m128i __DEFAULT_FN_ATTRS
6901_mm256_cvtsepi64_epi8 (__m256i __A)
6902{
6903 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6904 (__v16qi)_mm_undefined_si128(),
6905 (__mmask8) -1);
6906}
6907
6908static __inline__ __m128i __DEFAULT_FN_ATTRS
6909_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6910{
6911 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6912 (__v16qi) __O, __M);
6913}
6914
6915static __inline__ __m128i __DEFAULT_FN_ATTRS
6916_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
6917{
6918 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6919 (__v16qi) _mm_setzero_si128 (),
6920 __M);
6921}
6922
6923static __inline__ void __DEFAULT_FN_ATTRS
6924_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6925{
6926 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
6927}
6928
6929static __inline__ __m128i __DEFAULT_FN_ATTRS
6930_mm_cvtsepi64_epi32 (__m128i __A)
6931{
6932 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6933 (__v4si)_mm_undefined_si128(),
6934 (__mmask8) -1);
6935}
6936
6937static __inline__ __m128i __DEFAULT_FN_ATTRS
6938_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6939{
6940 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6941 (__v4si) __O, __M);
6942}
6943
6944static __inline__ __m128i __DEFAULT_FN_ATTRS
6945_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
6946{
6947 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6948 (__v4si) _mm_setzero_si128 (),
6949 __M);
6950}
6951
6952static __inline__ void __DEFAULT_FN_ATTRS
6953_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
6954{
6955 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
6956}
6957
6958static __inline__ __m128i __DEFAULT_FN_ATTRS
6959_mm256_cvtsepi64_epi32 (__m256i __A)
6960{
6961 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6962 (__v4si)_mm_undefined_si128(),
6963 (__mmask8) -1);
6964}
6965
6966static __inline__ __m128i __DEFAULT_FN_ATTRS
6967_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
6968{
6969 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6970 (__v4si)__O,
6971 __M);
6972}
6973
6974static __inline__ __m128i __DEFAULT_FN_ATTRS
6975_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
6976{
6977 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6978 (__v4si) _mm_setzero_si128 (),
6979 __M);
6980}
6981
6982static __inline__ void __DEFAULT_FN_ATTRS
6983_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
6984{
6985 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
6986}
6987
6988static __inline__ __m128i __DEFAULT_FN_ATTRS
6989_mm_cvtsepi64_epi16 (__m128i __A)
6990{
6991 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
6992 (__v8hi)_mm_undefined_si128(),
6993 (__mmask8) -1);
6994}
6995
6996static __inline__ __m128i __DEFAULT_FN_ATTRS
6997_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
6998{
6999 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7000 (__v8hi) __O, __M);
7001}
7002
7003static __inline__ __m128i __DEFAULT_FN_ATTRS
7004_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7005{
7006 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7007 (__v8hi) _mm_setzero_si128 (),
7008 __M);
7009}
7010
7011static __inline__ void __DEFAULT_FN_ATTRS
7012_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7013{
7014 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7015}
7016
7017static __inline__ __m128i __DEFAULT_FN_ATTRS
7018_mm256_cvtsepi64_epi16 (__m256i __A)
7019{
7020 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7021 (__v8hi)_mm_undefined_si128(),
7022 (__mmask8) -1);
7023}
7024
7025static __inline__ __m128i __DEFAULT_FN_ATTRS
7026_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7027{
7028 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7029 (__v8hi) __O, __M);
7030}
7031
7032static __inline__ __m128i __DEFAULT_FN_ATTRS
7033_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7034{
7035 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7036 (__v8hi) _mm_setzero_si128 (),
7037 __M);
7038}
7039
7040static __inline__ void __DEFAULT_FN_ATTRS
7041_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7042{
7043 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7044}
7045
Michael Zuckermand8715312016-04-14 06:48:09 +00007046static __inline__ __m128i __DEFAULT_FN_ATTRS
7047_mm_cvtusepi32_epi8 (__m128i __A)
7048{
7049 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7050 (__v16qi)_mm_undefined_si128(),
7051 (__mmask8) -1);
7052}
7053
7054static __inline__ __m128i __DEFAULT_FN_ATTRS
7055_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7056{
7057 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7058 (__v16qi) __O,
7059 __M);
7060}
7061
7062static __inline__ __m128i __DEFAULT_FN_ATTRS
7063_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7064{
7065 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7066 (__v16qi) _mm_setzero_si128 (),
7067 __M);
7068}
7069
7070static __inline__ void __DEFAULT_FN_ATTRS
7071_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7072{
7073 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7074}
7075
7076static __inline__ __m128i __DEFAULT_FN_ATTRS
7077_mm256_cvtusepi32_epi8 (__m256i __A)
7078{
7079 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7080 (__v16qi)_mm_undefined_si128(),
7081 (__mmask8) -1);
7082}
7083
7084static __inline__ __m128i __DEFAULT_FN_ATTRS
7085_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7086{
7087 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7088 (__v16qi) __O,
7089 __M);
7090}
7091
7092static __inline__ __m128i __DEFAULT_FN_ATTRS
7093_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7094{
7095 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7096 (__v16qi) _mm_setzero_si128 (),
7097 __M);
7098}
7099
7100static __inline__ void __DEFAULT_FN_ATTRS
7101_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7102{
7103 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7104}
7105
7106static __inline__ __m128i __DEFAULT_FN_ATTRS
7107_mm_cvtusepi32_epi16 (__m128i __A)
7108{
7109 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7110 (__v8hi)_mm_undefined_si128(),
7111 (__mmask8) -1);
7112}
7113
7114static __inline__ __m128i __DEFAULT_FN_ATTRS
7115_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7116{
7117 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7118 (__v8hi) __O, __M);
7119}
7120
7121static __inline__ __m128i __DEFAULT_FN_ATTRS
7122_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7123{
7124 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7125 (__v8hi) _mm_setzero_si128 (),
7126 __M);
7127}
7128
7129static __inline__ void __DEFAULT_FN_ATTRS
7130_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7131{
7132 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7133}
7134
7135static __inline__ __m128i __DEFAULT_FN_ATTRS
7136_mm256_cvtusepi32_epi16 (__m256i __A)
7137{
7138 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7139 (__v8hi) _mm_undefined_si128(),
7140 (__mmask8) -1);
7141}
7142
7143static __inline__ __m128i __DEFAULT_FN_ATTRS
7144_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7145{
7146 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7147 (__v8hi) __O, __M);
7148}
7149
7150static __inline__ __m128i __DEFAULT_FN_ATTRS
7151_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7152{
7153 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7154 (__v8hi) _mm_setzero_si128 (),
7155 __M);
7156}
7157
7158static __inline__ void __DEFAULT_FN_ATTRS
7159_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7160{
7161 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7162}
7163
7164static __inline__ __m128i __DEFAULT_FN_ATTRS
7165_mm_cvtusepi64_epi8 (__m128i __A)
7166{
7167 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7168 (__v16qi)_mm_undefined_si128(),
7169 (__mmask8) -1);
7170}
7171
7172static __inline__ __m128i __DEFAULT_FN_ATTRS
7173_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7174{
7175 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7176 (__v16qi) __O,
7177 __M);
7178}
7179
7180static __inline__ __m128i __DEFAULT_FN_ATTRS
7181_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7182{
7183 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7184 (__v16qi) _mm_setzero_si128 (),
7185 __M);
7186}
7187
7188static __inline__ void __DEFAULT_FN_ATTRS
7189_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7190{
7191 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7192}
7193
7194static __inline__ __m128i __DEFAULT_FN_ATTRS
7195_mm256_cvtusepi64_epi8 (__m256i __A)
7196{
7197 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7198 (__v16qi)_mm_undefined_si128(),
7199 (__mmask8) -1);
7200}
7201
7202static __inline__ __m128i __DEFAULT_FN_ATTRS
7203_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7204{
7205 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7206 (__v16qi) __O,
7207 __M);
7208}
7209
7210static __inline__ __m128i __DEFAULT_FN_ATTRS
7211_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7212{
7213 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7214 (__v16qi) _mm_setzero_si128 (),
7215 __M);
7216}
7217
7218static __inline__ void __DEFAULT_FN_ATTRS
7219_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7220{
7221 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7222}
7223
7224static __inline__ __m128i __DEFAULT_FN_ATTRS
7225_mm_cvtusepi64_epi32 (__m128i __A)
7226{
7227 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7228 (__v4si)_mm_undefined_si128(),
7229 (__mmask8) -1);
7230}
7231
7232static __inline__ __m128i __DEFAULT_FN_ATTRS
7233_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7234{
7235 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7236 (__v4si) __O, __M);
7237}
7238
7239static __inline__ __m128i __DEFAULT_FN_ATTRS
7240_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7241{
7242 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7243 (__v4si) _mm_setzero_si128 (),
7244 __M);
7245}
7246
7247static __inline__ void __DEFAULT_FN_ATTRS
7248_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7249{
7250 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7251}
7252
7253static __inline__ __m128i __DEFAULT_FN_ATTRS
7254_mm256_cvtusepi64_epi32 (__m256i __A)
7255{
7256 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7257 (__v4si)_mm_undefined_si128(),
7258 (__mmask8) -1);
7259}
7260
7261static __inline__ __m128i __DEFAULT_FN_ATTRS
7262_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7263{
7264 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7265 (__v4si) __O, __M);
7266}
7267
7268static __inline__ __m128i __DEFAULT_FN_ATTRS
7269_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7270{
7271 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7272 (__v4si) _mm_setzero_si128 (),
7273 __M);
7274}
7275
7276static __inline__ void __DEFAULT_FN_ATTRS
7277_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7278{
7279 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7280}
7281
7282static __inline__ __m128i __DEFAULT_FN_ATTRS
7283_mm_cvtusepi64_epi16 (__m128i __A)
7284{
7285 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7286 (__v8hi)_mm_undefined_si128(),
7287 (__mmask8) -1);
7288}
7289
7290static __inline__ __m128i __DEFAULT_FN_ATTRS
7291_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7292{
7293 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7294 (__v8hi) __O, __M);
7295}
7296
7297static __inline__ __m128i __DEFAULT_FN_ATTRS
7298_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7299{
7300 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7301 (__v8hi) _mm_setzero_si128 (),
7302 __M);
7303}
7304
7305static __inline__ void __DEFAULT_FN_ATTRS
7306_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7307{
7308 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7309}
7310
7311static __inline__ __m128i __DEFAULT_FN_ATTRS
7312_mm256_cvtusepi64_epi16 (__m256i __A)
7313{
7314 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7315 (__v8hi)_mm_undefined_si128(),
7316 (__mmask8) -1);
7317}
7318
7319static __inline__ __m128i __DEFAULT_FN_ATTRS
7320_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7321{
7322 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7323 (__v8hi) __O, __M);
7324}
7325
7326static __inline__ __m128i __DEFAULT_FN_ATTRS
7327_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7328{
7329 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7330 (__v8hi) _mm_setzero_si128 (),
7331 __M);
7332}
7333
7334static __inline__ void __DEFAULT_FN_ATTRS
7335_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7336{
Craig Topper819f2a22018-05-30 17:23:45 +00007337 __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
Michael Zuckermand8715312016-04-14 06:48:09 +00007338}
7339
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007340static __inline__ __m128i __DEFAULT_FN_ATTRS
7341_mm_cvtepi32_epi8 (__m128i __A)
7342{
7343 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7344 (__v16qi)_mm_undefined_si128(),
7345 (__mmask8) -1);
7346}
7347
7348static __inline__ __m128i __DEFAULT_FN_ATTRS
7349_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7350{
7351 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7352 (__v16qi) __O, __M);
7353}
7354
7355static __inline__ __m128i __DEFAULT_FN_ATTRS
7356_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7357{
7358 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7359 (__v16qi)
7360 _mm_setzero_si128 (),
7361 __M);
7362}
7363
7364static __inline__ void __DEFAULT_FN_ATTRS
7365_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7366{
7367 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7368}
7369
7370static __inline__ __m128i __DEFAULT_FN_ATTRS
7371_mm256_cvtepi32_epi8 (__m256i __A)
7372{
7373 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7374 (__v16qi)_mm_undefined_si128(),
7375 (__mmask8) -1);
7376}
7377
7378static __inline__ __m128i __DEFAULT_FN_ATTRS
7379_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7380{
7381 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7382 (__v16qi) __O, __M);
7383}
7384
7385static __inline__ __m128i __DEFAULT_FN_ATTRS
7386_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7387{
7388 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7389 (__v16qi) _mm_setzero_si128 (),
7390 __M);
7391}
7392
7393static __inline__ void __DEFAULT_FN_ATTRS
7394_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7395{
7396 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7397}
7398
7399static __inline__ __m128i __DEFAULT_FN_ATTRS
7400_mm_cvtepi32_epi16 (__m128i __A)
7401{
7402 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7403 (__v8hi) _mm_setzero_si128 (),
7404 (__mmask8) -1);
7405}
7406
7407static __inline__ __m128i __DEFAULT_FN_ATTRS
7408_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7409{
7410 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7411 (__v8hi) __O, __M);
7412}
7413
7414static __inline__ __m128i __DEFAULT_FN_ATTRS
7415_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7416{
7417 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7418 (__v8hi) _mm_setzero_si128 (),
7419 __M);
7420}
7421
7422static __inline__ void __DEFAULT_FN_ATTRS
7423_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7424{
7425 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7426}
7427
7428static __inline__ __m128i __DEFAULT_FN_ATTRS
7429_mm256_cvtepi32_epi16 (__m256i __A)
7430{
Craig Topper25de41c2018-05-14 17:50:40 +00007431 return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007432}
7433
7434static __inline__ __m128i __DEFAULT_FN_ATTRS
7435_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7436{
Craig Topper9d146bb2018-05-15 03:17:52 +00007437 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7438 (__v8hi) __O, __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007439}
7440
7441static __inline__ __m128i __DEFAULT_FN_ATTRS
7442_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7443{
Craig Topper9d146bb2018-05-15 03:17:52 +00007444 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7445 (__v8hi) _mm_setzero_si128 (),
7446 __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007447}
7448
7449static __inline__ void __DEFAULT_FN_ATTRS
7450_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7451{
7452 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7453}
7454
7455static __inline__ __m128i __DEFAULT_FN_ATTRS
7456_mm_cvtepi64_epi8 (__m128i __A)
7457{
7458 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7459 (__v16qi) _mm_undefined_si128(),
7460 (__mmask8) -1);
7461}
7462
7463static __inline__ __m128i __DEFAULT_FN_ATTRS
7464_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7465{
7466 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7467 (__v16qi) __O, __M);
7468}
7469
7470static __inline__ __m128i __DEFAULT_FN_ATTRS
7471_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7472{
7473 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7474 (__v16qi) _mm_setzero_si128 (),
7475 __M);
7476}
7477
7478static __inline__ void __DEFAULT_FN_ATTRS
7479_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7480{
7481 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7482}
7483
7484static __inline__ __m128i __DEFAULT_FN_ATTRS
7485_mm256_cvtepi64_epi8 (__m256i __A)
7486{
7487 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7488 (__v16qi) _mm_undefined_si128(),
7489 (__mmask8) -1);
7490}
7491
7492static __inline__ __m128i __DEFAULT_FN_ATTRS
7493_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7494{
7495 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7496 (__v16qi) __O, __M);
7497}
7498
7499static __inline__ __m128i __DEFAULT_FN_ATTRS
7500_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7501{
7502 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7503 (__v16qi) _mm_setzero_si128 (),
7504 __M);
7505}
7506
7507static __inline__ void __DEFAULT_FN_ATTRS
7508_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7509{
7510 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7511}
7512
7513static __inline__ __m128i __DEFAULT_FN_ATTRS
7514_mm_cvtepi64_epi32 (__m128i __A)
7515{
7516 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7517 (__v4si)_mm_undefined_si128(),
7518 (__mmask8) -1);
7519}
7520
7521static __inline__ __m128i __DEFAULT_FN_ATTRS
7522_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7523{
7524 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7525 (__v4si) __O, __M);
7526}
7527
7528static __inline__ __m128i __DEFAULT_FN_ATTRS
7529_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7530{
7531 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7532 (__v4si) _mm_setzero_si128 (),
7533 __M);
7534}
7535
7536static __inline__ void __DEFAULT_FN_ATTRS
7537_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7538{
7539 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7540}
7541
7542static __inline__ __m128i __DEFAULT_FN_ATTRS
7543_mm256_cvtepi64_epi32 (__m256i __A)
7544{
Craig Topper25de41c2018-05-14 17:50:40 +00007545 return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007546}
7547
7548static __inline__ __m128i __DEFAULT_FN_ATTRS
7549_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7550{
Craig Topper25de41c2018-05-14 17:50:40 +00007551 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7552 (__v4si)_mm256_cvtepi64_epi32(__A),
7553 (__v4si)__O);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007554}
7555
7556static __inline__ __m128i __DEFAULT_FN_ATTRS
7557_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7558{
Craig Topper25de41c2018-05-14 17:50:40 +00007559 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7560 (__v4si)_mm256_cvtepi64_epi32(__A),
7561 (__v4si)_mm_setzero_si128());
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007562}
7563
7564static __inline__ void __DEFAULT_FN_ATTRS
7565_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7566{
7567 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7568}
7569
7570static __inline__ __m128i __DEFAULT_FN_ATTRS
7571_mm_cvtepi64_epi16 (__m128i __A)
7572{
7573 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7574 (__v8hi) _mm_undefined_si128(),
7575 (__mmask8) -1);
7576}
7577
7578static __inline__ __m128i __DEFAULT_FN_ATTRS
7579_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7580{
7581 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7582 (__v8hi)__O,
7583 __M);
7584}
7585
7586static __inline__ __m128i __DEFAULT_FN_ATTRS
7587_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7588{
7589 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7590 (__v8hi) _mm_setzero_si128 (),
7591 __M);
7592}
7593
7594static __inline__ void __DEFAULT_FN_ATTRS
7595_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7596{
7597 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7598}
7599
7600static __inline__ __m128i __DEFAULT_FN_ATTRS
7601_mm256_cvtepi64_epi16 (__m256i __A)
7602{
7603 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7604 (__v8hi)_mm_undefined_si128(),
7605 (__mmask8) -1);
7606}
7607
7608static __inline__ __m128i __DEFAULT_FN_ATTRS
7609_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7610{
7611 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7612 (__v8hi) __O, __M);
7613}
7614
7615static __inline__ __m128i __DEFAULT_FN_ATTRS
7616_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7617{
7618 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7619 (__v8hi) _mm_setzero_si128 (),
7620 __M);
7621}
7622
7623static __inline__ void __DEFAULT_FN_ATTRS
7624_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7625{
7626 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7627}
7628
Craig Topperc6338672018-05-31 00:51:20 +00007629#define _mm256_extractf32x4_ps(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007630 (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
7631 (int)(imm), \
7632 (__v4sf)_mm_undefined_ps(), \
7633 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007634
Craig Topperc6338672018-05-31 00:51:20 +00007635#define _mm256_mask_extractf32x4_ps(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007636 (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
7637 (int)(imm), \
7638 (__v4sf)(__m128)(W), \
7639 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007640
Craig Topperc6338672018-05-31 00:51:20 +00007641#define _mm256_maskz_extractf32x4_ps(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007642 (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
7643 (int)(imm), \
7644 (__v4sf)_mm_setzero_ps(), \
7645 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007646
Craig Topperc6338672018-05-31 00:51:20 +00007647#define _mm256_extracti32x4_epi32(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007648 (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
7649 (int)(imm), \
7650 (__v4si)_mm_undefined_si128(), \
7651 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007652
Craig Topperc6338672018-05-31 00:51:20 +00007653#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007654 (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
7655 (int)(imm), \
7656 (__v4si)(__m128i)(W), \
7657 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007658
Craig Topperc6338672018-05-31 00:51:20 +00007659#define _mm256_maskz_extracti32x4_epi32(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007660 (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
7661 (int)(imm), \
7662 (__v4si)_mm_setzero_si128(), \
7663 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007664
Craig Topperc6338672018-05-31 00:51:20 +00007665#define _mm256_insertf32x4(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007666 (__m256)__builtin_ia32_insertf32x4_256((__v8sf)(__m256)(A), \
7667 (__v4sf)(__m128)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007668
Craig Topperc6338672018-05-31 00:51:20 +00007669#define _mm256_mask_insertf32x4(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007670 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7671 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007672 (__v8sf)(__m256)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007673
Craig Topperc6338672018-05-31 00:51:20 +00007674#define _mm256_maskz_insertf32x4(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007675 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7676 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007677 (__v8sf)_mm256_setzero_ps())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007678
Craig Topperc6338672018-05-31 00:51:20 +00007679#define _mm256_inserti32x4(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007680 (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
7681 (__v4si)(__m128i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007682
Craig Topperc6338672018-05-31 00:51:20 +00007683#define _mm256_mask_inserti32x4(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007684 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7685 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007686 (__v8si)(__m256i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007687
Craig Topperc6338672018-05-31 00:51:20 +00007688#define _mm256_maskz_inserti32x4(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007689 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7690 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007691 (__v8si)_mm256_setzero_si256())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007692
Craig Topperc6338672018-05-31 00:51:20 +00007693#define _mm_getmant_pd(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007694 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7695 (int)(((C)<<2) | (B)), \
7696 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007697 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007698
Craig Topperc6338672018-05-31 00:51:20 +00007699#define _mm_mask_getmant_pd(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007700 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7701 (int)(((C)<<2) | (B)), \
7702 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007703 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007704
Craig Topperc6338672018-05-31 00:51:20 +00007705#define _mm_maskz_getmant_pd(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007706 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7707 (int)(((C)<<2) | (B)), \
7708 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007709 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007710
Craig Topperc6338672018-05-31 00:51:20 +00007711#define _mm256_getmant_pd(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007712 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7713 (int)(((C)<<2) | (B)), \
7714 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007715 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007716
Craig Topperc6338672018-05-31 00:51:20 +00007717#define _mm256_mask_getmant_pd(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007718 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7719 (int)(((C)<<2) | (B)), \
7720 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007721 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007722
Craig Topperc6338672018-05-31 00:51:20 +00007723#define _mm256_maskz_getmant_pd(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007724 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7725 (int)(((C)<<2) | (B)), \
7726 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007727 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007728
Craig Topperc6338672018-05-31 00:51:20 +00007729#define _mm_getmant_ps(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007730 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7731 (int)(((C)<<2) | (B)), \
7732 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007733 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007734
Craig Topperc6338672018-05-31 00:51:20 +00007735#define _mm_mask_getmant_ps(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007736 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7737 (int)(((C)<<2) | (B)), \
7738 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007739 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007740
Craig Topperc6338672018-05-31 00:51:20 +00007741#define _mm_maskz_getmant_ps(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007742 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7743 (int)(((C)<<2) | (B)), \
7744 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007745 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007746
Craig Topperc6338672018-05-31 00:51:20 +00007747#define _mm256_getmant_ps(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007748 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7749 (int)(((C)<<2) | (B)), \
7750 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007751 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007752
Craig Topperc6338672018-05-31 00:51:20 +00007753#define _mm256_mask_getmant_ps(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007754 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7755 (int)(((C)<<2) | (B)), \
7756 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007757 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007758
Craig Topperc6338672018-05-31 00:51:20 +00007759#define _mm256_maskz_getmant_ps(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007760 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7761 (int)(((C)<<2) | (B)), \
7762 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007763 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007764
Craig Topperc6338672018-05-31 00:51:20 +00007765#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007766 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7767 (double const *)(addr), \
7768 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007769 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007770
Craig Topperc6338672018-05-31 00:51:20 +00007771#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007772 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7773 (long long const *)(addr), \
7774 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007775 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007776
Craig Topperc6338672018-05-31 00:51:20 +00007777#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007778 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
7779 (double const *)(addr), \
7780 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007781 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007782
Craig Topperc6338672018-05-31 00:51:20 +00007783#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007784 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
7785 (long long const *)(addr), \
7786 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007787 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007788
Craig Topperc6338672018-05-31 00:51:20 +00007789#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007790 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
7791 (float const *)(addr), \
7792 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007793 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007794
Craig Topperc6338672018-05-31 00:51:20 +00007795#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007796 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
7797 (int const *)(addr), \
7798 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007799 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007800
Craig Topperc6338672018-05-31 00:51:20 +00007801#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007802 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
7803 (float const *)(addr), \
7804 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007805 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007806
Craig Topperc6338672018-05-31 00:51:20 +00007807#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007808 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
7809 (int const *)(addr), \
7810 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007811 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007812
Craig Topperc6338672018-05-31 00:51:20 +00007813#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007814 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
7815 (double const *)(addr), \
7816 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007817 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007818
Craig Topperc6338672018-05-31 00:51:20 +00007819#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007820 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
7821 (long long const *)(addr), \
7822 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007823 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007824
Craig Topperc6338672018-05-31 00:51:20 +00007825#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007826 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
7827 (double const *)(addr), \
7828 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007829 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007830
Craig Topperc6338672018-05-31 00:51:20 +00007831#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007832 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
7833 (long long const *)(addr), \
7834 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007835 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007836
Craig Topperc6338672018-05-31 00:51:20 +00007837#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007838 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
7839 (float const *)(addr), \
7840 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007841 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007842
Craig Topperc6338672018-05-31 00:51:20 +00007843#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007844 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
7845 (int const *)(addr), \
7846 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007847 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007848
Craig Topperc6338672018-05-31 00:51:20 +00007849#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007850 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
7851 (float const *)(addr), \
7852 (__v8si)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007853 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007854
Craig Topperc6338672018-05-31 00:51:20 +00007855#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007856 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
7857 (int const *)(addr), \
7858 (__v8si)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007859 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007860
Craig Topperc6338672018-05-31 00:51:20 +00007861#define _mm256_permutex_pd(X, C) \
Craig Topper03f4f042018-06-08 18:00:25 +00007862 (__m256d)__builtin_ia32_permdf256((__v4df)(__m256d)(X), (int)(C))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007863
Craig Topperc6338672018-05-31 00:51:20 +00007864#define _mm256_mask_permutex_pd(W, U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007865 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7866 (__v4df)_mm256_permutex_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007867 (__v4df)(__m256d)(W))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007868
Craig Topperc6338672018-05-31 00:51:20 +00007869#define _mm256_maskz_permutex_pd(U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007870 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7871 (__v4df)_mm256_permutex_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007872 (__v4df)_mm256_setzero_pd())
Michael Zuckerman8938e832016-04-25 05:32:35 +00007873
Craig Topperc6338672018-05-31 00:51:20 +00007874#define _mm256_permutex_epi64(X, C) \
Craig Topper03f4f042018-06-08 18:00:25 +00007875 (__m256d)__builtin_ia32_permdi256((__v4di)(__m256i)(X), (int)(C))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007876
Craig Topperc6338672018-05-31 00:51:20 +00007877#define _mm256_mask_permutex_epi64(W, U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007878 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7879 (__v4di)_mm256_permutex_epi64((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007880 (__v4di)(__m256i)(W))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007881
Craig Topperc6338672018-05-31 00:51:20 +00007882#define _mm256_maskz_permutex_epi64(U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007883 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7884 (__v4di)_mm256_permutex_epi64((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007885 (__v4di)_mm256_setzero_si256())
Michael Zuckerman8938e832016-04-25 05:32:35 +00007886
7887static __inline__ __m256d __DEFAULT_FN_ATTRS
7888_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
7889{
Craig Topper55b40672018-05-20 23:34:10 +00007890 return (__m256d)__builtin_ia32_permvardf256((__v4df)__Y, (__v4di)__X);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007891}
7892
7893static __inline__ __m256d __DEFAULT_FN_ATTRS
7894_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
7895 __m256d __Y)
7896{
Craig Topper55b40672018-05-20 23:34:10 +00007897 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7898 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7899 (__v4df)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007900}
7901
7902static __inline__ __m256d __DEFAULT_FN_ATTRS
7903_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
7904{
Craig Topper55b40672018-05-20 23:34:10 +00007905 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7906 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7907 (__v4df)_mm256_setzero_pd());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007908}
7909
7910static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00007911_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007912{
Craig Topper55b40672018-05-20 23:34:10 +00007913 return (__m256i)__builtin_ia32_permvardi256((__v4di) __Y, (__v4di) __X);
7914}
7915
7916static __inline__ __m256i __DEFAULT_FN_ATTRS
7917_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
7918{
7919 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7920 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7921 (__v4di)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007922}
7923
7924static __inline__ __m256i __DEFAULT_FN_ATTRS
7925_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
7926 __m256i __Y)
7927{
Craig Topper55b40672018-05-20 23:34:10 +00007928 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7929 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7930 (__v4di)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007931}
7932
Craig Topper5dc6ca82018-02-24 06:46:42 +00007933#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
7934
Michael Zuckerman8938e832016-04-25 05:32:35 +00007935static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00007936_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007937{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007938 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
7939 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
7940 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007941}
7942
7943static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00007944_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007945{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007946 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
7947 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
7948 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007949}
7950
Craig Topper5dc6ca82018-02-24 06:46:42 +00007951#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
7952
7953static __inline__ __m256i __DEFAULT_FN_ATTRS
7954_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
7955 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007956{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007957 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
7958 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
7959 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007960}
7961
7962static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00007963_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007964{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007965 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
7966 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
7967 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007968}
7969
Craig Topperc6338672018-05-31 00:51:20 +00007970#define _mm_alignr_epi32(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00007971 (__m128i)__builtin_ia32_alignd128((__v4si)(__m128i)(A), \
7972 (__v4si)(__m128i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007973
Craig Topperc6338672018-05-31 00:51:20 +00007974#define _mm_mask_alignr_epi32(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007975 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
7976 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007977 (__v4si)(__m128i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007978
Craig Topperc6338672018-05-31 00:51:20 +00007979#define _mm_maskz_alignr_epi32(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007980 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
7981 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007982 (__v4si)_mm_setzero_si128())
Michael Zuckerman533e0652016-04-28 12:47:30 +00007983
Craig Topperc6338672018-05-31 00:51:20 +00007984#define _mm256_alignr_epi32(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00007985 (__m256i)__builtin_ia32_alignd256((__v8si)(__m256i)(A), \
7986 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007987
Craig Topperc6338672018-05-31 00:51:20 +00007988#define _mm256_mask_alignr_epi32(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007989 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7990 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007991 (__v8si)(__m256i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007992
Craig Topperc6338672018-05-31 00:51:20 +00007993#define _mm256_maskz_alignr_epi32(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007994 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7995 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007996 (__v8si)_mm256_setzero_si256())
Michael Zuckerman533e0652016-04-28 12:47:30 +00007997
Craig Topperc6338672018-05-31 00:51:20 +00007998#define _mm_alignr_epi64(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00007999 (__m128i)__builtin_ia32_alignq128((__v2di)(__m128i)(A), \
8000 (__v2di)(__m128i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008001
Craig Topperc6338672018-05-31 00:51:20 +00008002#define _mm_mask_alignr_epi64(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008003 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8004 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008005 (__v2di)(__m128i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008006
Craig Topperc6338672018-05-31 00:51:20 +00008007#define _mm_maskz_alignr_epi64(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008008 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8009 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008010 (__v2di)_mm_setzero_si128())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008011
Craig Topperc6338672018-05-31 00:51:20 +00008012#define _mm256_alignr_epi64(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008013 (__m256i)__builtin_ia32_alignq256((__v4di)(__m256i)(A), \
8014 (__v4di)(__m256i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008015
Craig Topperc6338672018-05-31 00:51:20 +00008016#define _mm256_mask_alignr_epi64(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008017 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8018 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008019 (__v4di)(__m256i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008020
Craig Topperc6338672018-05-31 00:51:20 +00008021#define _mm256_maskz_alignr_epi64(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008022 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8023 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008024 (__v4di)_mm256_setzero_si256())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008025
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008026static __inline__ __m128 __DEFAULT_FN_ATTRS
8027_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8028{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008029 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8030 (__v4sf)_mm_movehdup_ps(__A),
8031 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008032}
8033
8034static __inline__ __m128 __DEFAULT_FN_ATTRS
8035_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8036{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008037 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8038 (__v4sf)_mm_movehdup_ps(__A),
8039 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008040}
8041
8042static __inline__ __m256 __DEFAULT_FN_ATTRS
8043_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8044{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008045 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8046 (__v8sf)_mm256_movehdup_ps(__A),
8047 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008048}
8049
8050static __inline__ __m256 __DEFAULT_FN_ATTRS
8051_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8052{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008053 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8054 (__v8sf)_mm256_movehdup_ps(__A),
8055 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008056}
8057
8058static __inline__ __m128 __DEFAULT_FN_ATTRS
8059_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8060{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008061 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8062 (__v4sf)_mm_moveldup_ps(__A),
8063 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008064}
8065
8066static __inline__ __m128 __DEFAULT_FN_ATTRS
8067_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8068{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008069 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8070 (__v4sf)_mm_moveldup_ps(__A),
8071 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008072}
8073
8074static __inline__ __m256 __DEFAULT_FN_ATTRS
8075_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8076{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008077 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8078 (__v8sf)_mm256_moveldup_ps(__A),
8079 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008080}
8081
8082static __inline__ __m256 __DEFAULT_FN_ATTRS
8083_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8084{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008085 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8086 (__v8sf)_mm256_moveldup_ps(__A),
8087 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008088}
8089
Craig Topperc6338672018-05-31 00:51:20 +00008090#define _mm256_mask_shuffle_epi32(W, U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008091 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8092 (__v8si)_mm256_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008093 (__v8si)(__m256i)(W))
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008094
Craig Topperc6338672018-05-31 00:51:20 +00008095#define _mm256_maskz_shuffle_epi32(U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008096 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8097 (__v8si)_mm256_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008098 (__v8si)_mm256_setzero_si256())
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008099
Craig Topperc6338672018-05-31 00:51:20 +00008100#define _mm_mask_shuffle_epi32(W, U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008101 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8102 (__v4si)_mm_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008103 (__v4si)(__m128i)(W))
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008104
Craig Topperc6338672018-05-31 00:51:20 +00008105#define _mm_maskz_shuffle_epi32(U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008106 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8107 (__v4si)_mm_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008108 (__v4si)_mm_setzero_si128())
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008109
8110static __inline__ __m128d __DEFAULT_FN_ATTRS
8111_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8112{
Igor Bregeraadb8762016-06-08 13:59:20 +00008113 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8114 (__v2df) __A,
8115 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008116}
8117
8118static __inline__ __m128d __DEFAULT_FN_ATTRS
8119_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8120{
Igor Bregeraadb8762016-06-08 13:59:20 +00008121 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8122 (__v2df) __A,
8123 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008124}
8125
8126static __inline__ __m256d __DEFAULT_FN_ATTRS
8127_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8128{
Igor Bregeraadb8762016-06-08 13:59:20 +00008129 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8130 (__v4df) __A,
8131 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008132}
8133
8134static __inline__ __m256d __DEFAULT_FN_ATTRS
8135_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8136{
Igor Bregeraadb8762016-06-08 13:59:20 +00008137 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8138 (__v4df) __A,
8139 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008140}
8141
8142static __inline__ __m128 __DEFAULT_FN_ATTRS
8143_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8144{
Igor Bregeraadb8762016-06-08 13:59:20 +00008145 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8146 (__v4sf) __A,
8147 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008148}
8149
8150static __inline__ __m128 __DEFAULT_FN_ATTRS
8151_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8152{
Igor Bregeraadb8762016-06-08 13:59:20 +00008153 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8154 (__v4sf) __A,
8155 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008156}
8157
8158static __inline__ __m256 __DEFAULT_FN_ATTRS
8159_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8160{
Igor Bregeraadb8762016-06-08 13:59:20 +00008161 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8162 (__v8sf) __A,
8163 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008164}
8165
8166static __inline__ __m256 __DEFAULT_FN_ATTRS
8167_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8168{
Igor Bregeraadb8762016-06-08 13:59:20 +00008169 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8170 (__v8sf) __A,
8171 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008172}
8173
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008174static __inline__ __m128 __DEFAULT_FN_ATTRS
8175_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8176{
8177 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8178 (__v4sf) __W,
8179 (__mmask8) __U);
8180}
8181
8182static __inline__ __m128 __DEFAULT_FN_ATTRS
8183_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8184{
8185 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8186 (__v4sf)
8187 _mm_setzero_ps (),
8188 (__mmask8) __U);
8189}
8190
8191static __inline__ __m256 __DEFAULT_FN_ATTRS
8192_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8193{
8194 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8195 (__v8sf) __W,
8196 (__mmask8) __U);
8197}
8198
8199static __inline__ __m256 __DEFAULT_FN_ATTRS
8200_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8201{
8202 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8203 (__v8sf)
8204 _mm256_setzero_ps (),
8205 (__mmask8) __U);
8206}
8207
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008208static __inline __m128i __DEFAULT_FN_ATTRS
8209_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8210{
8211 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8212 (__v8hi) __W,
8213 (__mmask8) __U);
8214}
8215
8216static __inline __m128i __DEFAULT_FN_ATTRS
8217_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8218{
8219 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8220 (__v8hi) _mm_setzero_si128 (),
8221 (__mmask8) __U);
8222}
8223
Craig Topperc6338672018-05-31 00:51:20 +00008224#define _mm_mask_cvt_roundps_ph(W, U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008225 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8226 (__v8hi)(__m128i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00008227 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008228
Craig Topperc6338672018-05-31 00:51:20 +00008229#define _mm_maskz_cvt_roundps_ph(U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008230 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8231 (__v8hi)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00008232 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008233
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008234static __inline __m128i __DEFAULT_FN_ATTRS
8235_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8236{
8237 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8238 (__v8hi) __W,
8239 (__mmask8) __U);
8240}
8241
8242static __inline __m128i __DEFAULT_FN_ATTRS
8243_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8244{
8245 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8246 (__v8hi) _mm_setzero_si128(),
8247 (__mmask8) __U);
8248}
Craig Topperc6338672018-05-31 00:51:20 +00008249#define _mm256_mask_cvt_roundps_ph(W, U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008250 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8251 (__v8hi)(__m128i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00008252 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008253
Craig Topperc6338672018-05-31 00:51:20 +00008254#define _mm256_maskz_cvt_roundps_ph(U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008255 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8256 (__v8hi)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00008257 (__mmask8)(U))
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008258
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008259
Michael Kupersteine45af542015-06-30 13:36:19 +00008260#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008261
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008262#endif /* __AVX512VLINTRIN_H */