blob: de89cfdfacbe87c550d5d3a965cbce2b6f49372b [file] [log] [blame]
Robert Khasanovb9f3a912014-10-08 17:18:13 +00001/*===---- avx512vlintrin.h - AVX512VL intrinsics ---------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512vlintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLINTRIN_H
29#define __AVX512VLINTRIN_H
30
Michael Kupersteine45af542015-06-30 13:36:19 +000031#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl")))
Eric Christopher4d1851682015-06-17 07:09:20 +000032
Craig Topper08181f72016-06-22 06:36:21 +000033/* Doesn't require avx512vl, used in avx512dqintrin.h */
34static __inline __m128i __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
Michael Zuckerman38a27272016-02-22 09:05:41 +000035_mm_setzero_di(void) {
Craig Topper08181f72016-06-22 06:36:21 +000036 return (__m128i)(__v2di){ 0LL, 0LL};
Michael Zuckerman38a27272016-02-22 09:05:41 +000037}
38
Robert Khasanovb9f3a912014-10-08 17:18:13 +000039/* Integer compare */
40
Craig Topper57f96ac2017-11-06 21:00:49 +000041#define _mm_cmpeq_epi32_mask(A, B) \
42 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
43#define _mm_mask_cmpeq_epi32_mask(k, A, B) \
44 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
45#define _mm_cmpge_epi32_mask(A, B) \
46 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
47#define _mm_mask_cmpge_epi32_mask(k, A, B) \
48 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
49#define _mm_cmpgt_epi32_mask(A, B) \
50 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
51#define _mm_mask_cmpgt_epi32_mask(k, A, B) \
52 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
53#define _mm_cmple_epi32_mask(A, B) \
54 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
55#define _mm_mask_cmple_epi32_mask(k, A, B) \
56 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
57#define _mm_cmplt_epi32_mask(A, B) \
58 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
59#define _mm_mask_cmplt_epi32_mask(k, A, B) \
60 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
61#define _mm_cmpneq_epi32_mask(A, B) \
62 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
63#define _mm_mask_cmpneq_epi32_mask(k, A, B) \
64 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000065
Craig Topper57f96ac2017-11-06 21:00:49 +000066#define _mm256_cmpeq_epi32_mask(A, B) \
67 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
68#define _mm256_mask_cmpeq_epi32_mask(k, A, B) \
69 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
70#define _mm256_cmpge_epi32_mask(A, B) \
71 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
72#define _mm256_mask_cmpge_epi32_mask(k, A, B) \
73 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
74#define _mm256_cmpgt_epi32_mask(A, B) \
75 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
76#define _mm256_mask_cmpgt_epi32_mask(k, A, B) \
77 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
78#define _mm256_cmple_epi32_mask(A, B) \
79 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
80#define _mm256_mask_cmple_epi32_mask(k, A, B) \
81 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
82#define _mm256_cmplt_epi32_mask(A, B) \
83 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
84#define _mm256_mask_cmplt_epi32_mask(k, A, B) \
85 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
86#define _mm256_cmpneq_epi32_mask(A, B) \
87 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
88#define _mm256_mask_cmpneq_epi32_mask(k, A, B) \
89 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000090
Craig Topper57f96ac2017-11-06 21:00:49 +000091#define _mm_cmpeq_epu32_mask(A, B) \
92 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
93#define _mm_mask_cmpeq_epu32_mask(k, A, B) \
94 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
95#define _mm_cmpge_epu32_mask(A, B) \
96 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
97#define _mm_mask_cmpge_epu32_mask(k, A, B) \
98 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
99#define _mm_cmpgt_epu32_mask(A, B) \
100 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
101#define _mm_mask_cmpgt_epu32_mask(k, A, B) \
102 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
103#define _mm_cmple_epu32_mask(A, B) \
104 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
105#define _mm_mask_cmple_epu32_mask(k, A, B) \
106 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
107#define _mm_cmplt_epu32_mask(A, B) \
108 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
109#define _mm_mask_cmplt_epu32_mask(k, A, B) \
110 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
111#define _mm_cmpneq_epu32_mask(A, B) \
112 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
113#define _mm_mask_cmpneq_epu32_mask(k, A, B) \
114 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000115
Craig Topper57f96ac2017-11-06 21:00:49 +0000116#define _mm256_cmpeq_epu32_mask(A, B) \
117 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
118#define _mm256_mask_cmpeq_epu32_mask(k, A, B) \
119 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
120#define _mm256_cmpge_epu32_mask(A, B) \
121 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
122#define _mm256_mask_cmpge_epu32_mask(k, A, B) \
123 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
124#define _mm256_cmpgt_epu32_mask(A, B) \
125 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
126#define _mm256_mask_cmpgt_epu32_mask(k, A, B) \
127 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
128#define _mm256_cmple_epu32_mask(A, B) \
129 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
130#define _mm256_mask_cmple_epu32_mask(k, A, B) \
131 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
132#define _mm256_cmplt_epu32_mask(A, B) \
133 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
134#define _mm256_mask_cmplt_epu32_mask(k, A, B) \
135 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
136#define _mm256_cmpneq_epu32_mask(A, B) \
137 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
138#define _mm256_mask_cmpneq_epu32_mask(k, A, B) \
139 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000140
Craig Topper57f96ac2017-11-06 21:00:49 +0000141#define _mm_cmpeq_epi64_mask(A, B) \
142 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
143#define _mm_mask_cmpeq_epi64_mask(k, A, B) \
144 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
145#define _mm_cmpge_epi64_mask(A, B) \
146 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
147#define _mm_mask_cmpge_epi64_mask(k, A, B) \
148 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
149#define _mm_cmpgt_epi64_mask(A, B) \
150 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
151#define _mm_mask_cmpgt_epi64_mask(k, A, B) \
152 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
153#define _mm_cmple_epi64_mask(A, B) \
154 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
155#define _mm_mask_cmple_epi64_mask(k, A, B) \
156 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
157#define _mm_cmplt_epi64_mask(A, B) \
158 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
159#define _mm_mask_cmplt_epi64_mask(k, A, B) \
160 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
161#define _mm_cmpneq_epi64_mask(A, B) \
162 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
163#define _mm_mask_cmpneq_epi64_mask(k, A, B) \
164 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000165
Craig Topper57f96ac2017-11-06 21:00:49 +0000166#define _mm256_cmpeq_epi64_mask(A, B) \
167 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
168#define _mm256_mask_cmpeq_epi64_mask(k, A, B) \
169 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
170#define _mm256_cmpge_epi64_mask(A, B) \
171 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
172#define _mm256_mask_cmpge_epi64_mask(k, A, B) \
173 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
174#define _mm256_cmpgt_epi64_mask(A, B) \
175 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
176#define _mm256_mask_cmpgt_epi64_mask(k, A, B) \
177 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
178#define _mm256_cmple_epi64_mask(A, B) \
179 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
180#define _mm256_mask_cmple_epi64_mask(k, A, B) \
181 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
182#define _mm256_cmplt_epi64_mask(A, B) \
183 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
184#define _mm256_mask_cmplt_epi64_mask(k, A, B) \
185 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
186#define _mm256_cmpneq_epi64_mask(A, B) \
187 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
188#define _mm256_mask_cmpneq_epi64_mask(k, A, B) \
189 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000190
Craig Topper57f96ac2017-11-06 21:00:49 +0000191#define _mm_cmpeq_epu64_mask(A, B) \
192 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
193#define _mm_mask_cmpeq_epu64_mask(k, A, B) \
194 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
195#define _mm_cmpge_epu64_mask(A, B) \
196 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
197#define _mm_mask_cmpge_epu64_mask(k, A, B) \
198 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
199#define _mm_cmpgt_epu64_mask(A, B) \
200 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
201#define _mm_mask_cmpgt_epu64_mask(k, A, B) \
202 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
203#define _mm_cmple_epu64_mask(A, B) \
204 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
205#define _mm_mask_cmple_epu64_mask(k, A, B) \
206 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
207#define _mm_cmplt_epu64_mask(A, B) \
208 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
209#define _mm_mask_cmplt_epu64_mask(k, A, B) \
210 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
211#define _mm_cmpneq_epu64_mask(A, B) \
212 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
213#define _mm_mask_cmpneq_epu64_mask(k, A, B) \
214 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000215
Craig Topper57f96ac2017-11-06 21:00:49 +0000216#define _mm256_cmpeq_epu64_mask(A, B) \
217 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
218#define _mm256_mask_cmpeq_epu64_mask(k, A, B) \
219 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
220#define _mm256_cmpge_epu64_mask(A, B) \
221 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
222#define _mm256_mask_cmpge_epu64_mask(k, A, B) \
223 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
224#define _mm256_cmpgt_epu64_mask(A, B) \
225 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
226#define _mm256_mask_cmpgt_epu64_mask(k, A, B) \
227 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
228#define _mm256_cmple_epu64_mask(A, B) \
229 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
230#define _mm256_mask_cmple_epu64_mask(k, A, B) \
231 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
232#define _mm256_cmplt_epu64_mask(A, B) \
233 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
234#define _mm256_mask_cmplt_epu64_mask(k, A, B) \
235 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
236#define _mm256_cmpneq_epu64_mask(A, B) \
237 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
238#define _mm256_mask_cmpneq_epu64_mask(k, A, B) \
239 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000240
Michael Kupersteine45af542015-06-30 13:36:19 +0000241static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000242_mm256_mask_add_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000243{
Craig Topper0e189762016-09-03 18:29:35 +0000244 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
245 (__v8si)_mm256_add_epi32(__A, __B),
246 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000247}
248
Michael Kupersteine45af542015-06-30 13:36:19 +0000249static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000250_mm256_maskz_add_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000251{
Craig Topper0e189762016-09-03 18:29:35 +0000252 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
253 (__v8si)_mm256_add_epi32(__A, __B),
254 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000255}
256
Michael Kupersteine45af542015-06-30 13:36:19 +0000257static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000258_mm256_mask_add_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000259{
Craig Topper0e189762016-09-03 18:29:35 +0000260 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
261 (__v4di)_mm256_add_epi64(__A, __B),
262 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000263}
264
Michael Kupersteine45af542015-06-30 13:36:19 +0000265static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000266_mm256_maskz_add_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000267{
Craig Topper0e189762016-09-03 18:29:35 +0000268 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
269 (__v4di)_mm256_add_epi64(__A, __B),
270 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000271}
272
Michael Kupersteine45af542015-06-30 13:36:19 +0000273static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000274_mm256_mask_sub_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000275{
Craig Topper0e189762016-09-03 18:29:35 +0000276 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
277 (__v8si)_mm256_sub_epi32(__A, __B),
278 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000279}
280
Michael Kupersteine45af542015-06-30 13:36:19 +0000281static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000282_mm256_maskz_sub_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000283{
Craig Topper0e189762016-09-03 18:29:35 +0000284 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
285 (__v8si)_mm256_sub_epi32(__A, __B),
286 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000287}
288
Michael Kupersteine45af542015-06-30 13:36:19 +0000289static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000290_mm256_mask_sub_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000291{
Craig Topper0e189762016-09-03 18:29:35 +0000292 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
293 (__v4di)_mm256_sub_epi64(__A, __B),
294 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000295}
296
Michael Kupersteine45af542015-06-30 13:36:19 +0000297static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000298_mm256_maskz_sub_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000299{
Craig Topper0e189762016-09-03 18:29:35 +0000300 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
301 (__v4di)_mm256_sub_epi64(__A, __B),
302 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000303}
304
Michael Kupersteine45af542015-06-30 13:36:19 +0000305static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000306_mm_mask_add_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000307{
Craig Topper0e189762016-09-03 18:29:35 +0000308 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
309 (__v4si)_mm_add_epi32(__A, __B),
310 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000311}
312
Michael Kupersteine45af542015-06-30 13:36:19 +0000313static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000314_mm_maskz_add_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000315{
Craig Topper0e189762016-09-03 18:29:35 +0000316 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
317 (__v4si)_mm_add_epi32(__A, __B),
318 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000319}
320
Michael Kupersteine45af542015-06-30 13:36:19 +0000321static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000322_mm_mask_add_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000323{
Craig Topper0e189762016-09-03 18:29:35 +0000324 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
325 (__v2di)_mm_add_epi64(__A, __B),
326 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000327}
328
Michael Kupersteine45af542015-06-30 13:36:19 +0000329static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000330_mm_maskz_add_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000331{
Craig Topper0e189762016-09-03 18:29:35 +0000332 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
333 (__v2di)_mm_add_epi64(__A, __B),
334 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000335}
336
Michael Kupersteine45af542015-06-30 13:36:19 +0000337static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000338_mm_mask_sub_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000339{
Craig Topper0e189762016-09-03 18:29:35 +0000340 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
341 (__v4si)_mm_sub_epi32(__A, __B),
342 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000343}
344
Michael Kupersteine45af542015-06-30 13:36:19 +0000345static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000346_mm_maskz_sub_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000347{
Craig Topper0e189762016-09-03 18:29:35 +0000348 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
349 (__v4si)_mm_sub_epi32(__A, __B),
350 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000351}
352
Michael Kupersteine45af542015-06-30 13:36:19 +0000353static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000354_mm_mask_sub_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000355{
Craig Topper0e189762016-09-03 18:29:35 +0000356 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
357 (__v2di)_mm_sub_epi64(__A, __B),
358 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000359}
360
Michael Kupersteine45af542015-06-30 13:36:19 +0000361static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000362_mm_maskz_sub_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000363{
Craig Topper0e189762016-09-03 18:29:35 +0000364 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
365 (__v2di)_mm_sub_epi64(__A, __B),
366 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000367}
368
Michael Kupersteine45af542015-06-30 13:36:19 +0000369static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000370_mm256_mask_mul_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000371{
Craig Topper09e94002016-10-29 19:02:07 +0000372 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
373 (__v4di)_mm256_mul_epi32(__X, __Y),
374 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000375}
376
Michael Kupersteine45af542015-06-30 13:36:19 +0000377static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000378_mm256_maskz_mul_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000379{
Craig Topper09e94002016-10-29 19:02:07 +0000380 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
381 (__v4di)_mm256_mul_epi32(__X, __Y),
382 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000383}
384
Michael Kupersteine45af542015-06-30 13:36:19 +0000385static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000386_mm_mask_mul_epi32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000387{
Craig Topper09e94002016-10-29 19:02:07 +0000388 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
389 (__v2di)_mm_mul_epi32(__X, __Y),
390 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000391}
392
Michael Kupersteine45af542015-06-30 13:36:19 +0000393static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000394_mm_maskz_mul_epi32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000395{
Craig Topper09e94002016-10-29 19:02:07 +0000396 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
397 (__v2di)_mm_mul_epi32(__X, __Y),
398 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000399}
400
Michael Kupersteine45af542015-06-30 13:36:19 +0000401static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000402_mm256_mask_mul_epu32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000403{
Craig Topper09e94002016-10-29 19:02:07 +0000404 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
405 (__v4di)_mm256_mul_epu32(__X, __Y),
406 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000407}
408
Michael Kupersteine45af542015-06-30 13:36:19 +0000409static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000410_mm256_maskz_mul_epu32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000411{
Craig Topper09e94002016-10-29 19:02:07 +0000412 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
413 (__v4di)_mm256_mul_epu32(__X, __Y),
414 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000415}
416
Michael Kupersteine45af542015-06-30 13:36:19 +0000417static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000418_mm_mask_mul_epu32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000419{
Craig Topper09e94002016-10-29 19:02:07 +0000420 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
421 (__v2di)_mm_mul_epu32(__X, __Y),
422 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000423}
424
Michael Kupersteine45af542015-06-30 13:36:19 +0000425static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000426_mm_maskz_mul_epu32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000427{
Craig Topper09e94002016-10-29 19:02:07 +0000428 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
429 (__v2di)_mm_mul_epu32(__X, __Y),
430 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000431}
432
Michael Kupersteine45af542015-06-30 13:36:19 +0000433static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000434_mm256_maskz_mullo_epi32(__mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000435{
Craig Topperf43e4a12016-09-03 19:19:49 +0000436 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
437 (__v8si)_mm256_mullo_epi32(__A, __B),
438 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000439}
440
Michael Kupersteine45af542015-06-30 13:36:19 +0000441static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000442_mm256_mask_mullo_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000443{
Craig Topperf43e4a12016-09-03 19:19:49 +0000444 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
445 (__v8si)_mm256_mullo_epi32(__A, __B),
446 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000447}
448
Michael Kupersteine45af542015-06-30 13:36:19 +0000449static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000450_mm_maskz_mullo_epi32(__mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000451{
Craig Topperf43e4a12016-09-03 19:19:49 +0000452 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
453 (__v4si)_mm_mullo_epi32(__A, __B),
454 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000455}
456
Michael Kupersteine45af542015-06-30 13:36:19 +0000457static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000458_mm_mask_mullo_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000459{
Craig Topperf43e4a12016-09-03 19:19:49 +0000460 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
461 (__v4si)_mm_mullo_epi32(__A, __B),
462 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000463}
464
Michael Kupersteine45af542015-06-30 13:36:19 +0000465static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000466_mm256_mask_and_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000467{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000468 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
469 (__v8si)_mm256_and_si256(__A, __B),
470 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000474_mm256_maskz_and_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000475{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000476 return (__m256i)_mm256_mask_and_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000477}
478
Michael Kupersteine45af542015-06-30 13:36:19 +0000479static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000480_mm_mask_and_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000481{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000482 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
483 (__v4si)_mm_and_si128(__A, __B),
484 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000485}
486
Michael Kupersteine45af542015-06-30 13:36:19 +0000487static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000488_mm_maskz_and_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000489{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000490 return (__m128i)_mm_mask_and_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000491}
492
Michael Kupersteine45af542015-06-30 13:36:19 +0000493static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000494_mm256_mask_andnot_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000495{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000496 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
497 (__v8si)_mm256_andnot_si256(__A, __B),
498 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000499}
500
Michael Kupersteine45af542015-06-30 13:36:19 +0000501static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000502_mm256_maskz_andnot_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000503{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000504 return (__m256i)_mm256_mask_andnot_epi32(_mm256_setzero_si256(),
505 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000506}
507
Michael Kupersteine45af542015-06-30 13:36:19 +0000508static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000509_mm_mask_andnot_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000510{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000511 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
512 (__v4si)_mm_andnot_si128(__A, __B),
513 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000514}
515
Michael Kupersteine45af542015-06-30 13:36:19 +0000516static __inline__ __m128i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000517_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
518{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000519 return (__m128i)_mm_mask_andnot_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000520}
521
Michael Kupersteine45af542015-06-30 13:36:19 +0000522static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000523_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000524{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000525 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
526 (__v8si)_mm256_or_si256(__A, __B),
527 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000531_mm256_maskz_or_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000532{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000533 return (__m256i)_mm256_mask_or_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000534}
535
Michael Kupersteine45af542015-06-30 13:36:19 +0000536static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000537_mm_mask_or_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000538{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000539 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
540 (__v4si)_mm_or_si128(__A, __B),
541 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000542}
543
Michael Kupersteine45af542015-06-30 13:36:19 +0000544static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000545_mm_maskz_or_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000546{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000547 return (__m128i)_mm_mask_or_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000548}
549
Michael Kupersteine45af542015-06-30 13:36:19 +0000550static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000551_mm256_mask_xor_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000552{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000553 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
554 (__v8si)_mm256_xor_si256(__A, __B),
555 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000556}
557
Michael Kupersteine45af542015-06-30 13:36:19 +0000558static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000559_mm256_maskz_xor_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000560{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000561 return (__m256i)_mm256_mask_xor_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000562}
563
Michael Kupersteine45af542015-06-30 13:36:19 +0000564static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000565_mm_mask_xor_epi32(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000566 __m128i __B)
567{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000568 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
569 (__v4si)_mm_xor_si128(__A, __B),
570 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000571}
572
Michael Kupersteine45af542015-06-30 13:36:19 +0000573static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000574_mm_maskz_xor_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000575{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000576 return (__m128i)_mm_mask_xor_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000577}
578
Michael Kupersteine45af542015-06-30 13:36:19 +0000579static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000580_mm256_mask_and_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000581{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000582 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
583 (__v4di)_mm256_and_si256(__A, __B),
584 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000585}
586
Michael Kupersteine45af542015-06-30 13:36:19 +0000587static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000588_mm256_maskz_and_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000589{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000590 return (__m256i)_mm256_mask_and_epi64(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000591}
592
Michael Kupersteine45af542015-06-30 13:36:19 +0000593static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000594_mm_mask_and_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
595{
596 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
597 (__v2di)_mm_and_si128(__A, __B),
598 (__v2di)__W);
599}
600
601static __inline__ __m128i __DEFAULT_FN_ATTRS
602_mm_maskz_and_epi64(__mmask8 __U, __m128i __A, __m128i __B)
603{
604 return (__m128i)_mm_mask_and_epi64(_mm_setzero_si128(), __U, __A, __B);
605}
606
607static __inline__ __m256i __DEFAULT_FN_ATTRS
608_mm256_mask_andnot_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
609{
610 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
611 (__v4di)_mm256_andnot_si256(__A, __B),
612 (__v4di)__W);
613}
614
615static __inline__ __m256i __DEFAULT_FN_ATTRS
616_mm256_maskz_andnot_epi64(__mmask8 __U, __m256i __A, __m256i __B)
617{
618 return (__m256i)_mm256_mask_andnot_epi64(_mm256_setzero_si256(),
619 __U, __A, __B);
620}
621
622static __inline__ __m128i __DEFAULT_FN_ATTRS
623_mm_mask_andnot_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
624{
625 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
626 (__v2di)_mm_andnot_si128(__A, __B),
627 (__v2di)__W);
628}
629
630static __inline__ __m128i __DEFAULT_FN_ATTRS
631_mm_maskz_andnot_epi64(__mmask8 __U, __m128i __A, __m128i __B)
632{
633 return (__m128i)_mm_mask_andnot_epi64(_mm_setzero_si128(), __U, __A, __B);
634}
635
636static __inline__ __m256i __DEFAULT_FN_ATTRS
637_mm256_mask_or_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
638{
639 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
640 (__v4di)_mm256_or_si256(__A, __B),
641 (__v4di)__W);
642}
643
644static __inline__ __m256i __DEFAULT_FN_ATTRS
645_mm256_maskz_or_epi64(__mmask8 __U, __m256i __A, __m256i __B)
646{
647 return (__m256i)_mm256_mask_or_epi64(_mm256_setzero_si256(), __U, __A, __B);
648}
649
650static __inline__ __m128i __DEFAULT_FN_ATTRS
651_mm_mask_or_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
652{
653 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
654 (__v2di)_mm_or_si128(__A, __B),
655 (__v2di)__W);
656}
657
658static __inline__ __m128i __DEFAULT_FN_ATTRS
659_mm_maskz_or_epi64(__mmask8 __U, __m128i __A, __m128i __B)
660{
661 return (__m128i)_mm_mask_or_epi64(_mm_setzero_si128(), __U, __A, __B);
662}
663
664static __inline__ __m256i __DEFAULT_FN_ATTRS
665_mm256_mask_xor_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
666{
667 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
668 (__v4di)_mm256_xor_si256(__A, __B),
669 (__v4di)__W);
670}
671
672static __inline__ __m256i __DEFAULT_FN_ATTRS
673_mm256_maskz_xor_epi64(__mmask8 __U, __m256i __A, __m256i __B)
674{
675 return (__m256i)_mm256_mask_xor_epi64(_mm256_setzero_si256(), __U, __A, __B);
676}
677
678static __inline__ __m128i __DEFAULT_FN_ATTRS
679_mm_mask_xor_epi64(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000680 __m128i __B)
681{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000682 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
683 (__v2di)_mm_xor_si128(__A, __B),
684 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000685}
686
Michael Kupersteine45af542015-06-30 13:36:19 +0000687static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000688_mm_maskz_xor_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000689{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000690 return (__m128i)_mm_mask_xor_epi64(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000691}
692
Craig Topper2f25a5a2015-01-26 08:11:49 +0000693#define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
694 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000695 (__v4si)(__m128i)(b), (int)(p), \
696 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000697
698#define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
699 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000700 (__v4si)(__m128i)(b), (int)(p), \
701 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000702
703#define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \
704 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000705 (__v4si)(__m128i)(b), (int)(p), \
706 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000707
708#define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
709 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000710 (__v4si)(__m128i)(b), (int)(p), \
711 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000712
713#define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \
714 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000715 (__v8si)(__m256i)(b), (int)(p), \
716 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000717
718#define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
719 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000720 (__v8si)(__m256i)(b), (int)(p), \
721 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000722
723#define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \
724 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000725 (__v8si)(__m256i)(b), (int)(p), \
726 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000727
728#define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
729 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000730 (__v8si)(__m256i)(b), (int)(p), \
731 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000732
733#define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \
734 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000735 (__v2di)(__m128i)(b), (int)(p), \
736 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000737
738#define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
739 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000740 (__v2di)(__m128i)(b), (int)(p), \
741 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000742
743#define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \
744 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000745 (__v2di)(__m128i)(b), (int)(p), \
746 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000747
748#define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
749 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000750 (__v2di)(__m128i)(b), (int)(p), \
751 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000752
753#define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \
754 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000755 (__v4di)(__m256i)(b), (int)(p), \
756 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000757
758#define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
759 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000760 (__v4di)(__m256i)(b), (int)(p), \
761 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000762
763#define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \
764 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000765 (__v4di)(__m256i)(b), (int)(p), \
766 (__mmask8)-1); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000767
768#define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
769 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000770 (__v4di)(__m256i)(b), (int)(p), \
771 (__mmask8)(m)); })
Craig Topper2f25a5a2015-01-26 08:11:49 +0000772
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000773#define _mm256_cmp_ps_mask(a, b, p) __extension__ ({ \
774 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000775 (__v8sf)(__m256)(b), (int)(p), \
776 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000777
778#define _mm256_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
779 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000780 (__v8sf)(__m256)(b), (int)(p), \
781 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000782
783#define _mm256_cmp_pd_mask(a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000784 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
785 (__v4df)(__m256d)(b), (int)(p), \
786 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000787
788#define _mm256_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000789 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
790 (__v4df)(__m256d)(b), (int)(p), \
791 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000792
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000793#define _mm_cmp_ps_mask(a, b, p) __extension__ ({ \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000794 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000795 (__v4sf)(__m128)(b), (int)(p), \
796 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000797
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000798#define _mm_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000799 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000800 (__v4sf)(__m128)(b), (int)(p), \
801 (__mmask8)(m)); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000802
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000803#define _mm_cmp_pd_mask(a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000804 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
805 (__v2df)(__m128d)(b), (int)(p), \
806 (__mmask8)-1); })
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000807
Michael Zuckermaneb5f1782016-05-26 08:10:12 +0000808#define _mm_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +0000809 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
810 (__v2df)(__m128d)(b), (int)(p), \
811 (__mmask8)(m)); })
Eric Christopher4d1851682015-06-17 07:09:20 +0000812
Michael Kupersteine45af542015-06-30 13:36:19 +0000813static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000814_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
815{
816 return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
817 (__v2df) __B,
818 (__v2df) __C,
819 (__mmask8) __U);
820}
821
Michael Kupersteine45af542015-06-30 13:36:19 +0000822static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000823_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
824{
825 return (__m128d) __builtin_ia32_vfmaddpd128_mask3 ((__v2df) __A,
826 (__v2df) __B,
827 (__v2df) __C,
828 (__mmask8) __U);
829}
830
Michael Kupersteine45af542015-06-30 13:36:19 +0000831static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000832_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
833{
834 return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
835 (__v2df) __B,
836 (__v2df) __C,
837 (__mmask8) __U);
838}
839
Michael Kupersteine45af542015-06-30 13:36:19 +0000840static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000841_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
842{
843 return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
844 (__v2df) __B,
845 -(__v2df) __C,
846 (__mmask8) __U);
847}
848
Michael Kupersteine45af542015-06-30 13:36:19 +0000849static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000850_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
851{
852 return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
853 (__v2df) __B,
854 -(__v2df) __C,
855 (__mmask8) __U);
856}
857
Michael Kupersteine45af542015-06-30 13:36:19 +0000858static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000859_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
860{
861 return (__m128d) __builtin_ia32_vfmaddpd128_mask3 (-(__v2df) __A,
862 (__v2df) __B,
863 (__v2df) __C,
864 (__mmask8) __U);
865}
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{
870 return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
871 (__v2df) __B,
872 (__v2df) __C,
873 (__mmask8) __U);
874}
875
Michael Kupersteine45af542015-06-30 13:36:19 +0000876static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000877_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
878{
879 return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
880 (__v2df) __B,
881 -(__v2df) __C,
882 (__mmask8) __U);
883}
884
Michael Kupersteine45af542015-06-30 13:36:19 +0000885static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000886_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
887{
888 return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
889 (__v4df) __B,
890 (__v4df) __C,
891 (__mmask8) __U);
892}
893
Michael Kupersteine45af542015-06-30 13:36:19 +0000894static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000895_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
896{
897 return (__m256d) __builtin_ia32_vfmaddpd256_mask3 ((__v4df) __A,
898 (__v4df) __B,
899 (__v4df) __C,
900 (__mmask8) __U);
901}
902
Michael Kupersteine45af542015-06-30 13:36:19 +0000903static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000904_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
905{
906 return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
907 (__v4df) __B,
908 (__v4df) __C,
909 (__mmask8) __U);
910}
911
Michael Kupersteine45af542015-06-30 13:36:19 +0000912static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000913_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
914{
915 return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
916 (__v4df) __B,
917 -(__v4df) __C,
918 (__mmask8) __U);
919}
920
Michael Kupersteine45af542015-06-30 13:36:19 +0000921static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000922_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
923{
924 return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
925 (__v4df) __B,
926 -(__v4df) __C,
927 (__mmask8) __U);
928}
929
Michael Kupersteine45af542015-06-30 13:36:19 +0000930static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000931_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
932{
933 return (__m256d) __builtin_ia32_vfmaddpd256_mask3 (-(__v4df) __A,
934 (__v4df) __B,
935 (__v4df) __C,
936 (__mmask8) __U);
937}
938
Michael Kupersteine45af542015-06-30 13:36:19 +0000939static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000940_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
941{
942 return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
943 (__v4df) __B,
944 (__v4df) __C,
945 (__mmask8) __U);
946}
947
Michael Kupersteine45af542015-06-30 13:36:19 +0000948static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000949_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
950{
951 return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
952 (__v4df) __B,
953 -(__v4df) __C,
954 (__mmask8) __U);
955}
956
Michael Kupersteine45af542015-06-30 13:36:19 +0000957static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000958_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
959{
960 return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
961 (__v4sf) __B,
962 (__v4sf) __C,
963 (__mmask8) __U);
964}
965
Michael Kupersteine45af542015-06-30 13:36:19 +0000966static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000967_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
968{
969 return (__m128) __builtin_ia32_vfmaddps128_mask3 ((__v4sf) __A,
970 (__v4sf) __B,
971 (__v4sf) __C,
972 (__mmask8) __U);
973}
974
Michael Kupersteine45af542015-06-30 13:36:19 +0000975static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000976_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
977{
978 return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
979 (__v4sf) __B,
980 (__v4sf) __C,
981 (__mmask8) __U);
982}
983
Michael Kupersteine45af542015-06-30 13:36:19 +0000984static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000985_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
986{
987 return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
988 (__v4sf) __B,
989 -(__v4sf) __C,
990 (__mmask8) __U);
991}
992
Michael Kupersteine45af542015-06-30 13:36:19 +0000993static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000994_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
995{
996 return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
997 (__v4sf) __B,
998 -(__v4sf) __C,
999 (__mmask8) __U);
1000}
1001
Michael Kupersteine45af542015-06-30 13:36:19 +00001002static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001003_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1004{
1005 return (__m128) __builtin_ia32_vfmaddps128_mask3 (-(__v4sf) __A,
1006 (__v4sf) __B,
1007 (__v4sf) __C,
1008 (__mmask8) __U);
1009}
1010
Michael Kupersteine45af542015-06-30 13:36:19 +00001011static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001012_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1013{
1014 return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
1015 (__v4sf) __B,
1016 (__v4sf) __C,
1017 (__mmask8) __U);
1018}
1019
Michael Kupersteine45af542015-06-30 13:36:19 +00001020static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001021_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1022{
1023 return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
1024 (__v4sf) __B,
1025 -(__v4sf) __C,
1026 (__mmask8) __U);
1027}
1028
Michael Kupersteine45af542015-06-30 13:36:19 +00001029static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001030_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1031{
1032 return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
1033 (__v8sf) __B,
1034 (__v8sf) __C,
1035 (__mmask8) __U);
1036}
1037
Michael Kupersteine45af542015-06-30 13:36:19 +00001038static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001039_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1040{
1041 return (__m256) __builtin_ia32_vfmaddps256_mask3 ((__v8sf) __A,
1042 (__v8sf) __B,
1043 (__v8sf) __C,
1044 (__mmask8) __U);
1045}
1046
Michael Kupersteine45af542015-06-30 13:36:19 +00001047static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001048_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1049{
1050 return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
1051 (__v8sf) __B,
1052 (__v8sf) __C,
1053 (__mmask8) __U);
1054}
1055
Michael Kupersteine45af542015-06-30 13:36:19 +00001056static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001057_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1058{
1059 return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
1060 (__v8sf) __B,
1061 -(__v8sf) __C,
1062 (__mmask8) __U);
1063}
1064
Michael Kupersteine45af542015-06-30 13:36:19 +00001065static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001066_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1067{
1068 return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
1069 (__v8sf) __B,
1070 -(__v8sf) __C,
1071 (__mmask8) __U);
1072}
1073
Michael Kupersteine45af542015-06-30 13:36:19 +00001074static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001075_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1076{
1077 return (__m256) __builtin_ia32_vfmaddps256_mask3 (-(__v8sf) __A,
1078 (__v8sf) __B,
1079 (__v8sf) __C,
1080 (__mmask8) __U);
1081}
1082
Michael Kupersteine45af542015-06-30 13:36:19 +00001083static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001084_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1085{
1086 return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
1087 (__v8sf) __B,
1088 (__v8sf) __C,
1089 (__mmask8) __U);
1090}
1091
Michael Kupersteine45af542015-06-30 13:36:19 +00001092static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001093_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1094{
1095 return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
1096 (__v8sf) __B,
1097 -(__v8sf) __C,
1098 (__mmask8) __U);
1099}
1100
Michael Kupersteine45af542015-06-30 13:36:19 +00001101static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001102_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1103{
1104 return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
1105 (__v2df) __B,
1106 (__v2df) __C,
1107 (__mmask8) __U);
1108}
1109
Michael Kupersteine45af542015-06-30 13:36:19 +00001110static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001111_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1112{
1113 return (__m128d) __builtin_ia32_vfmaddsubpd128_mask3 ((__v2df) __A,
1114 (__v2df) __B,
1115 (__v2df) __C,
1116 (__mmask8)
1117 __U);
1118}
1119
Michael Kupersteine45af542015-06-30 13:36:19 +00001120static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001121_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1122{
1123 return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
1124 (__v2df) __B,
1125 (__v2df) __C,
1126 (__mmask8)
1127 __U);
1128}
1129
Michael Kupersteine45af542015-06-30 13:36:19 +00001130static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001131_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1132{
1133 return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
1134 (__v2df) __B,
1135 -(__v2df) __C,
1136 (__mmask8) __U);
1137}
1138
Michael Kupersteine45af542015-06-30 13:36:19 +00001139static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001140_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1141{
1142 return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
1143 (__v2df) __B,
1144 -(__v2df) __C,
1145 (__mmask8)
1146 __U);
1147}
1148
Michael Kupersteine45af542015-06-30 13:36:19 +00001149static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001150_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1151{
1152 return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
1153 (__v4df) __B,
1154 (__v4df) __C,
1155 (__mmask8) __U);
1156}
1157
Michael Kupersteine45af542015-06-30 13:36:19 +00001158static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001159_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1160{
1161 return (__m256d) __builtin_ia32_vfmaddsubpd256_mask3 ((__v4df) __A,
1162 (__v4df) __B,
1163 (__v4df) __C,
1164 (__mmask8)
1165 __U);
1166}
1167
Michael Kupersteine45af542015-06-30 13:36:19 +00001168static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001169_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1170{
1171 return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
1172 (__v4df) __B,
1173 (__v4df) __C,
1174 (__mmask8)
1175 __U);
1176}
1177
Michael Kupersteine45af542015-06-30 13:36:19 +00001178static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001179_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1180{
1181 return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
1182 (__v4df) __B,
1183 -(__v4df) __C,
1184 (__mmask8) __U);
1185}
1186
Michael Kupersteine45af542015-06-30 13:36:19 +00001187static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001188_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1189{
1190 return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
1191 (__v4df) __B,
1192 -(__v4df) __C,
1193 (__mmask8)
1194 __U);
1195}
1196
Michael Kupersteine45af542015-06-30 13:36:19 +00001197static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001198_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1199{
1200 return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
1201 (__v4sf) __B,
1202 (__v4sf) __C,
1203 (__mmask8) __U);
1204}
1205
Michael Kupersteine45af542015-06-30 13:36:19 +00001206static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001207_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1208{
1209 return (__m128) __builtin_ia32_vfmaddsubps128_mask3 ((__v4sf) __A,
1210 (__v4sf) __B,
1211 (__v4sf) __C,
1212 (__mmask8) __U);
1213}
1214
Michael Kupersteine45af542015-06-30 13:36:19 +00001215static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001216_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1217{
1218 return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
1219 (__v4sf) __B,
1220 (__v4sf) __C,
1221 (__mmask8) __U);
1222}
1223
Michael Kupersteine45af542015-06-30 13:36:19 +00001224static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001225_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1226{
1227 return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
1228 (__v4sf) __B,
1229 -(__v4sf) __C,
1230 (__mmask8) __U);
1231}
1232
Michael Kupersteine45af542015-06-30 13:36:19 +00001233static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001234_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1235{
1236 return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
1237 (__v4sf) __B,
1238 -(__v4sf) __C,
1239 (__mmask8) __U);
1240}
1241
Michael Kupersteine45af542015-06-30 13:36:19 +00001242static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001243_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B,
1244 __m256 __C)
1245{
1246 return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
1247 (__v8sf) __B,
1248 (__v8sf) __C,
1249 (__mmask8) __U);
1250}
1251
Michael Kupersteine45af542015-06-30 13:36:19 +00001252static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001253_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1254{
1255 return (__m256) __builtin_ia32_vfmaddsubps256_mask3 ((__v8sf) __A,
1256 (__v8sf) __B,
1257 (__v8sf) __C,
1258 (__mmask8) __U);
1259}
1260
Michael Kupersteine45af542015-06-30 13:36:19 +00001261static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001262_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1263{
1264 return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
1265 (__v8sf) __B,
1266 (__v8sf) __C,
1267 (__mmask8) __U);
1268}
1269
Michael Kupersteine45af542015-06-30 13:36:19 +00001270static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001271_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1272{
1273 return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
1274 (__v8sf) __B,
1275 -(__v8sf) __C,
1276 (__mmask8) __U);
1277}
1278
Michael Kupersteine45af542015-06-30 13:36:19 +00001279static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001280_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1281{
1282 return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
1283 (__v8sf) __B,
1284 -(__v8sf) __C,
1285 (__mmask8) __U);
1286}
1287
Michael Kupersteine45af542015-06-30 13:36:19 +00001288static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001289_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1290{
1291 return (__m128d) __builtin_ia32_vfmsubpd128_mask3 ((__v2df) __A,
1292 (__v2df) __B,
1293 (__v2df) __C,
1294 (__mmask8) __U);
1295}
1296
Michael Kupersteine45af542015-06-30 13:36:19 +00001297static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001298_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1299{
1300 return (__m256d) __builtin_ia32_vfmsubpd256_mask3 ((__v4df) __A,
1301 (__v4df) __B,
1302 (__v4df) __C,
1303 (__mmask8) __U);
1304}
1305
Michael Kupersteine45af542015-06-30 13:36:19 +00001306static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001307_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1308{
1309 return (__m128) __builtin_ia32_vfmsubps128_mask3 ((__v4sf) __A,
1310 (__v4sf) __B,
1311 (__v4sf) __C,
1312 (__mmask8) __U);
1313}
1314
Michael Kupersteine45af542015-06-30 13:36:19 +00001315static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001316_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1317{
1318 return (__m256) __builtin_ia32_vfmsubps256_mask3 ((__v8sf) __A,
1319 (__v8sf) __B,
1320 (__v8sf) __C,
1321 (__mmask8) __U);
1322}
1323
Michael Kupersteine45af542015-06-30 13:36:19 +00001324static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001325_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1326{
1327 return (__m128d) __builtin_ia32_vfmsubaddpd128_mask3 ((__v2df) __A,
1328 (__v2df) __B,
1329 (__v2df) __C,
1330 (__mmask8)
1331 __U);
1332}
1333
Michael Kupersteine45af542015-06-30 13:36:19 +00001334static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001335_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1336{
1337 return (__m256d) __builtin_ia32_vfmsubaddpd256_mask3 ((__v4df) __A,
1338 (__v4df) __B,
1339 (__v4df) __C,
1340 (__mmask8)
1341 __U);
1342}
1343
Michael Kupersteine45af542015-06-30 13:36:19 +00001344static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001345_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1346{
1347 return (__m128) __builtin_ia32_vfmsubaddps128_mask3 ((__v4sf) __A,
1348 (__v4sf) __B,
1349 (__v4sf) __C,
1350 (__mmask8) __U);
1351}
1352
Michael Kupersteine45af542015-06-30 13:36:19 +00001353static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001354_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1355{
1356 return (__m256) __builtin_ia32_vfmsubaddps256_mask3 ((__v8sf) __A,
1357 (__v8sf) __B,
1358 (__v8sf) __C,
1359 (__mmask8) __U);
1360}
1361
Michael Kupersteine45af542015-06-30 13:36:19 +00001362static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001363_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1364{
1365 return (__m128d) __builtin_ia32_vfnmaddpd128_mask ((__v2df) __A,
1366 (__v2df) __B,
1367 (__v2df) __C,
1368 (__mmask8) __U);
1369}
1370
Michael Kupersteine45af542015-06-30 13:36:19 +00001371static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001372_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1373{
1374 return (__m256d) __builtin_ia32_vfnmaddpd256_mask ((__v4df) __A,
1375 (__v4df) __B,
1376 (__v4df) __C,
1377 (__mmask8) __U);
1378}
1379
Michael Kupersteine45af542015-06-30 13:36:19 +00001380static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001381_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1382{
1383 return (__m128) __builtin_ia32_vfnmaddps128_mask ((__v4sf) __A,
1384 (__v4sf) __B,
1385 (__v4sf) __C,
1386 (__mmask8) __U);
1387}
1388
Michael Kupersteine45af542015-06-30 13:36:19 +00001389static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001390_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1391{
1392 return (__m256) __builtin_ia32_vfnmaddps256_mask ((__v8sf) __A,
1393 (__v8sf) __B,
1394 (__v8sf) __C,
1395 (__mmask8) __U);
1396}
1397
Michael Kupersteine45af542015-06-30 13:36:19 +00001398static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001399_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1400{
1401 return (__m128d) __builtin_ia32_vfnmsubpd128_mask ((__v2df) __A,
1402 (__v2df) __B,
1403 (__v2df) __C,
1404 (__mmask8) __U);
1405}
1406
Michael Kupersteine45af542015-06-30 13:36:19 +00001407static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001408_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1409{
1410 return (__m128d) __builtin_ia32_vfnmsubpd128_mask3 ((__v2df) __A,
1411 (__v2df) __B,
1412 (__v2df) __C,
1413 (__mmask8) __U);
1414}
1415
Michael Kupersteine45af542015-06-30 13:36:19 +00001416static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001417_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1418{
1419 return (__m256d) __builtin_ia32_vfnmsubpd256_mask ((__v4df) __A,
1420 (__v4df) __B,
1421 (__v4df) __C,
1422 (__mmask8) __U);
1423}
1424
Michael Kupersteine45af542015-06-30 13:36:19 +00001425static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001426_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1427{
1428 return (__m256d) __builtin_ia32_vfnmsubpd256_mask3 ((__v4df) __A,
1429 (__v4df) __B,
1430 (__v4df) __C,
1431 (__mmask8) __U);
1432}
1433
Michael Kupersteine45af542015-06-30 13:36:19 +00001434static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001435_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1436{
1437 return (__m128) __builtin_ia32_vfnmsubps128_mask ((__v4sf) __A,
1438 (__v4sf) __B,
1439 (__v4sf) __C,
1440 (__mmask8) __U);
1441}
1442
Michael Kupersteine45af542015-06-30 13:36:19 +00001443static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001444_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1445{
1446 return (__m128) __builtin_ia32_vfnmsubps128_mask3 ((__v4sf) __A,
1447 (__v4sf) __B,
1448 (__v4sf) __C,
1449 (__mmask8) __U);
1450}
1451
Michael Kupersteine45af542015-06-30 13:36:19 +00001452static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001453_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1454{
1455 return (__m256) __builtin_ia32_vfnmsubps256_mask ((__v8sf) __A,
1456 (__v8sf) __B,
1457 (__v8sf) __C,
1458 (__mmask8) __U);
1459}
1460
Michael Kupersteine45af542015-06-30 13:36:19 +00001461static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001462_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1463{
1464 return (__m256) __builtin_ia32_vfnmsubps256_mask3 ((__v8sf) __A,
1465 (__v8sf) __B,
1466 (__v8sf) __C,
1467 (__mmask8) __U);
1468}
1469
Asaf Badouh74da3872015-07-28 08:26:14 +00001470static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001471_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1472 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1473 (__v2df)_mm_add_pd(__A, __B),
1474 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001475}
1476
1477static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001478_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
1479 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1480 (__v2df)_mm_add_pd(__A, __B),
1481 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001482}
1483
1484static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001485_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
1486 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1487 (__v4df)_mm256_add_pd(__A, __B),
1488 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001489}
1490
1491static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001492_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
1493 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1494 (__v4df)_mm256_add_pd(__A, __B),
1495 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001496}
1497
1498static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001499_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1500 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1501 (__v4sf)_mm_add_ps(__A, __B),
1502 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001503}
1504
1505static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001506_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
1507 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1508 (__v4sf)_mm_add_ps(__A, __B),
1509 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001510}
1511
1512static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001513_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
1514 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1515 (__v8sf)_mm256_add_ps(__A, __B),
1516 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001517}
1518
1519static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001520_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
1521 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1522 (__v8sf)_mm256_add_ps(__A, __B),
1523 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001524}
1525
1526static __inline__ __m128i __DEFAULT_FN_ATTRS
1527_mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001528 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001529 (__v4si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001530 (__v4si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001531}
1532
1533static __inline__ __m256i __DEFAULT_FN_ATTRS
1534_mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001535 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001536 (__v8si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001537 (__v8si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001538}
1539
1540static __inline__ __m128d __DEFAULT_FN_ATTRS
1541_mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001542 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001543 (__v2df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001544 (__v2df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001545}
1546
1547static __inline__ __m256d __DEFAULT_FN_ATTRS
1548_mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001549 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001550 (__v4df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001551 (__v4df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001552}
1553
1554static __inline__ __m128 __DEFAULT_FN_ATTRS
1555_mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001556 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001557 (__v4sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001558 (__v4sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001559}
1560
1561static __inline__ __m256 __DEFAULT_FN_ATTRS
1562_mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001563 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001564 (__v8sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001565 (__v8sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001566}
1567
1568static __inline__ __m128i __DEFAULT_FN_ATTRS
1569_mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001570 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001571 (__v2di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001572 (__v2di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001573}
1574
1575static __inline__ __m256i __DEFAULT_FN_ATTRS
1576_mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001577 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001578 (__v4di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001579 (__v4di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001580}
1581
1582static __inline__ __m128d __DEFAULT_FN_ATTRS
1583_mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A) {
1584 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1585 (__v2df) __W,
1586 (__mmask8) __U);
1587}
1588
1589static __inline__ __m128d __DEFAULT_FN_ATTRS
1590_mm_maskz_compress_pd (__mmask8 __U, __m128d __A) {
1591 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1592 (__v2df)
1593 _mm_setzero_pd (),
1594 (__mmask8) __U);
1595}
1596
1597static __inline__ __m256d __DEFAULT_FN_ATTRS
1598_mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A) {
1599 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1600 (__v4df) __W,
1601 (__mmask8) __U);
1602}
1603
1604static __inline__ __m256d __DEFAULT_FN_ATTRS
1605_mm256_maskz_compress_pd (__mmask8 __U, __m256d __A) {
1606 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1607 (__v4df)
1608 _mm256_setzero_pd (),
1609 (__mmask8) __U);
1610}
1611
1612static __inline__ __m128i __DEFAULT_FN_ATTRS
1613_mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
1614 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1615 (__v2di) __W,
1616 (__mmask8) __U);
1617}
1618
1619static __inline__ __m128i __DEFAULT_FN_ATTRS
1620_mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A) {
1621 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1622 (__v2di)
1623 _mm_setzero_si128 (),
1624 (__mmask8) __U);
1625}
1626
1627static __inline__ __m256i __DEFAULT_FN_ATTRS
1628_mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
1629 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1630 (__v4di) __W,
1631 (__mmask8) __U);
1632}
1633
1634static __inline__ __m256i __DEFAULT_FN_ATTRS
1635_mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A) {
1636 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1637 (__v4di)
1638 _mm256_setzero_si256 (),
1639 (__mmask8) __U);
1640}
1641
1642static __inline__ __m128 __DEFAULT_FN_ATTRS
1643_mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A) {
1644 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1645 (__v4sf) __W,
1646 (__mmask8) __U);
1647}
1648
1649static __inline__ __m128 __DEFAULT_FN_ATTRS
1650_mm_maskz_compress_ps (__mmask8 __U, __m128 __A) {
1651 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1652 (__v4sf)
1653 _mm_setzero_ps (),
1654 (__mmask8) __U);
1655}
1656
1657static __inline__ __m256 __DEFAULT_FN_ATTRS
1658_mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A) {
1659 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1660 (__v8sf) __W,
1661 (__mmask8) __U);
1662}
1663
1664static __inline__ __m256 __DEFAULT_FN_ATTRS
1665_mm256_maskz_compress_ps (__mmask8 __U, __m256 __A) {
1666 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1667 (__v8sf)
1668 _mm256_setzero_ps (),
1669 (__mmask8) __U);
1670}
1671
1672static __inline__ __m128i __DEFAULT_FN_ATTRS
1673_mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
1674 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1675 (__v4si) __W,
1676 (__mmask8) __U);
1677}
1678
1679static __inline__ __m128i __DEFAULT_FN_ATTRS
1680_mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A) {
1681 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1682 (__v4si)
1683 _mm_setzero_si128 (),
1684 (__mmask8) __U);
1685}
1686
1687static __inline__ __m256i __DEFAULT_FN_ATTRS
1688_mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
1689 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1690 (__v8si) __W,
1691 (__mmask8) __U);
1692}
1693
1694static __inline__ __m256i __DEFAULT_FN_ATTRS
1695_mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A) {
1696 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1697 (__v8si)
1698 _mm256_setzero_si256 (),
1699 (__mmask8) __U);
1700}
1701
1702static __inline__ void __DEFAULT_FN_ATTRS
1703_mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A) {
1704 __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
1705 (__v2df) __A,
1706 (__mmask8) __U);
1707}
1708
1709static __inline__ void __DEFAULT_FN_ATTRS
1710_mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A) {
1711 __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
1712 (__v4df) __A,
1713 (__mmask8) __U);
1714}
1715
1716static __inline__ void __DEFAULT_FN_ATTRS
1717_mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A) {
1718 __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
1719 (__v2di) __A,
1720 (__mmask8) __U);
1721}
1722
1723static __inline__ void __DEFAULT_FN_ATTRS
1724_mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A) {
1725 __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
1726 (__v4di) __A,
1727 (__mmask8) __U);
1728}
1729
1730static __inline__ void __DEFAULT_FN_ATTRS
1731_mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A) {
1732 __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
1733 (__v4sf) __A,
1734 (__mmask8) __U);
1735}
1736
1737static __inline__ void __DEFAULT_FN_ATTRS
1738_mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A) {
1739 __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
1740 (__v8sf) __A,
1741 (__mmask8) __U);
1742}
1743
1744static __inline__ void __DEFAULT_FN_ATTRS
1745_mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A) {
1746 __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
1747 (__v4si) __A,
1748 (__mmask8) __U);
1749}
1750
1751static __inline__ void __DEFAULT_FN_ATTRS
1752_mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A) {
1753 __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
1754 (__v8si) __A,
1755 (__mmask8) __U);
1756}
1757
1758static __inline__ __m128d __DEFAULT_FN_ATTRS
1759_mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001760 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1761 (__v2df)_mm_cvtepi32_pd(__A),
1762 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001763}
1764
1765static __inline__ __m128d __DEFAULT_FN_ATTRS
1766_mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001767 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1768 (__v2df)_mm_cvtepi32_pd(__A),
1769 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001770}
1771
1772static __inline__ __m256d __DEFAULT_FN_ATTRS
1773_mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001774 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1775 (__v4df)_mm256_cvtepi32_pd(__A),
1776 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001777}
1778
1779static __inline__ __m256d __DEFAULT_FN_ATTRS
1780_mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001781 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1782 (__v4df)_mm256_cvtepi32_pd(__A),
1783 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001784}
1785
1786static __inline__ __m128 __DEFAULT_FN_ATTRS
1787_mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001788 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1789 (__v4sf)_mm_cvtepi32_ps(__A),
1790 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001791}
1792
1793static __inline__ __m128 __DEFAULT_FN_ATTRS
1794_mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001795 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1796 (__v4sf)_mm_cvtepi32_ps(__A),
1797 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001798}
1799
1800static __inline__ __m256 __DEFAULT_FN_ATTRS
1801_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001802 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1803 (__v8sf)_mm256_cvtepi32_ps(__A),
1804 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001805}
1806
1807static __inline__ __m256 __DEFAULT_FN_ATTRS
1808_mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001809 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1810 (__v8sf)_mm256_cvtepi32_ps(__A),
1811 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001812}
1813
1814static __inline__ __m128i __DEFAULT_FN_ATTRS
1815_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
1816 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1817 (__v4si) __W,
1818 (__mmask8) __U);
1819}
1820
1821static __inline__ __m128i __DEFAULT_FN_ATTRS
1822_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
1823 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1824 (__v4si)
1825 _mm_setzero_si128 (),
1826 (__mmask8) __U);
1827}
1828
1829static __inline__ __m128i __DEFAULT_FN_ATTRS
1830_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001831 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1832 (__v4si)_mm256_cvtpd_epi32(__A),
1833 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001834}
1835
1836static __inline__ __m128i __DEFAULT_FN_ATTRS
1837_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001838 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1839 (__v4si)_mm256_cvtpd_epi32(__A),
1840 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001841}
1842
1843static __inline__ __m128 __DEFAULT_FN_ATTRS
1844_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
1845 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1846 (__v4sf) __W,
1847 (__mmask8) __U);
1848}
1849
1850static __inline__ __m128 __DEFAULT_FN_ATTRS
1851_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
1852 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1853 (__v4sf)
1854 _mm_setzero_ps (),
1855 (__mmask8) __U);
1856}
1857
1858static __inline__ __m128 __DEFAULT_FN_ATTRS
1859_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001860 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1861 (__v4sf)_mm256_cvtpd_ps(__A),
1862 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001863}
1864
1865static __inline__ __m128 __DEFAULT_FN_ATTRS
1866_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001867 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1868 (__v4sf)_mm256_cvtpd_ps(__A),
1869 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001870}
1871
1872static __inline__ __m128i __DEFAULT_FN_ATTRS
1873_mm_cvtpd_epu32 (__m128d __A) {
1874 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1875 (__v4si)
1876 _mm_setzero_si128 (),
1877 (__mmask8) -1);
1878}
1879
1880static __inline__ __m128i __DEFAULT_FN_ATTRS
1881_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
1882 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1883 (__v4si) __W,
1884 (__mmask8) __U);
1885}
1886
1887static __inline__ __m128i __DEFAULT_FN_ATTRS
1888_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
1889 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1890 (__v4si)
1891 _mm_setzero_si128 (),
1892 (__mmask8) __U);
1893}
1894
1895static __inline__ __m128i __DEFAULT_FN_ATTRS
1896_mm256_cvtpd_epu32 (__m256d __A) {
1897 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1898 (__v4si)
1899 _mm_setzero_si128 (),
1900 (__mmask8) -1);
1901}
1902
1903static __inline__ __m128i __DEFAULT_FN_ATTRS
1904_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
1905 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1906 (__v4si) __W,
1907 (__mmask8) __U);
1908}
1909
1910static __inline__ __m128i __DEFAULT_FN_ATTRS
1911_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
1912 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1913 (__v4si)
1914 _mm_setzero_si128 (),
1915 (__mmask8) __U);
1916}
1917
1918static __inline__ __m128i __DEFAULT_FN_ATTRS
1919_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001920 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1921 (__v4si)_mm_cvtps_epi32(__A),
1922 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001923}
1924
1925static __inline__ __m128i __DEFAULT_FN_ATTRS
1926_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001927 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1928 (__v4si)_mm_cvtps_epi32(__A),
1929 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001930}
1931
1932static __inline__ __m256i __DEFAULT_FN_ATTRS
1933_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001934 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1935 (__v8si)_mm256_cvtps_epi32(__A),
1936 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001937}
1938
1939static __inline__ __m256i __DEFAULT_FN_ATTRS
1940_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001941 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1942 (__v8si)_mm256_cvtps_epi32(__A),
1943 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00001944}
1945
1946static __inline__ __m128d __DEFAULT_FN_ATTRS
1947_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001948 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1949 (__v2df)_mm_cvtps_pd(__A),
1950 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001951}
1952
1953static __inline__ __m128d __DEFAULT_FN_ATTRS
1954_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001955 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1956 (__v2df)_mm_cvtps_pd(__A),
1957 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001958}
1959
1960static __inline__ __m256d __DEFAULT_FN_ATTRS
1961_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001962 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1963 (__v4df)_mm256_cvtps_pd(__A),
1964 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001965}
1966
1967static __inline__ __m256d __DEFAULT_FN_ATTRS
1968_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001969 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1970 (__v4df)_mm256_cvtps_pd(__A),
1971 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001972}
1973
1974static __inline__ __m128i __DEFAULT_FN_ATTRS
1975_mm_cvtps_epu32 (__m128 __A) {
1976 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
1977 (__v4si)
1978 _mm_setzero_si128 (),
1979 (__mmask8) -1);
1980}
1981
1982static __inline__ __m128i __DEFAULT_FN_ATTRS
1983_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
1984 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
1985 (__v4si) __W,
1986 (__mmask8) __U);
1987}
1988
1989static __inline__ __m128i __DEFAULT_FN_ATTRS
1990_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
1991 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
1992 (__v4si)
1993 _mm_setzero_si128 (),
1994 (__mmask8) __U);
1995}
1996
1997static __inline__ __m256i __DEFAULT_FN_ATTRS
1998_mm256_cvtps_epu32 (__m256 __A) {
1999 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2000 (__v8si)
2001 _mm256_setzero_si256 (),
2002 (__mmask8) -1);
2003}
2004
2005static __inline__ __m256i __DEFAULT_FN_ATTRS
2006_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2007 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2008 (__v8si) __W,
2009 (__mmask8) __U);
2010}
2011
2012static __inline__ __m256i __DEFAULT_FN_ATTRS
2013_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2014 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2015 (__v8si)
2016 _mm256_setzero_si256 (),
2017 (__mmask8) __U);
2018}
2019
2020static __inline__ __m128i __DEFAULT_FN_ATTRS
2021_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2022 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2023 (__v4si) __W,
2024 (__mmask8) __U);
2025}
2026
2027static __inline__ __m128i __DEFAULT_FN_ATTRS
2028_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2029 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2030 (__v4si)
2031 _mm_setzero_si128 (),
2032 (__mmask8) __U);
2033}
2034
2035static __inline__ __m128i __DEFAULT_FN_ATTRS
2036_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002037 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2038 (__v4si)_mm256_cvttpd_epi32(__A),
2039 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002040}
2041
2042static __inline__ __m128i __DEFAULT_FN_ATTRS
2043_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002044 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2045 (__v4si)_mm256_cvttpd_epi32(__A),
2046 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002047}
2048
2049static __inline__ __m128i __DEFAULT_FN_ATTRS
2050_mm_cvttpd_epu32 (__m128d __A) {
2051 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2052 (__v4si)
2053 _mm_setzero_si128 (),
2054 (__mmask8) -1);
2055}
2056
2057static __inline__ __m128i __DEFAULT_FN_ATTRS
2058_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2059 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2060 (__v4si) __W,
2061 (__mmask8) __U);
2062}
2063
2064static __inline__ __m128i __DEFAULT_FN_ATTRS
2065_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2066 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2067 (__v4si)
2068 _mm_setzero_si128 (),
2069 (__mmask8) __U);
2070}
2071
2072static __inline__ __m128i __DEFAULT_FN_ATTRS
2073_mm256_cvttpd_epu32 (__m256d __A) {
2074 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2075 (__v4si)
2076 _mm_setzero_si128 (),
2077 (__mmask8) -1);
2078}
2079
2080static __inline__ __m128i __DEFAULT_FN_ATTRS
2081_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2082 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2083 (__v4si) __W,
2084 (__mmask8) __U);
2085}
2086
2087static __inline__ __m128i __DEFAULT_FN_ATTRS
2088_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2089 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2090 (__v4si)
2091 _mm_setzero_si128 (),
2092 (__mmask8) __U);
2093}
2094
2095static __inline__ __m128i __DEFAULT_FN_ATTRS
2096_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002097 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2098 (__v4si)_mm_cvttps_epi32(__A),
2099 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002100}
2101
2102static __inline__ __m128i __DEFAULT_FN_ATTRS
2103_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002104 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2105 (__v4si)_mm_cvttps_epi32(__A),
2106 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002107}
2108
2109static __inline__ __m256i __DEFAULT_FN_ATTRS
2110_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002111 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2112 (__v8si)_mm256_cvttps_epi32(__A),
2113 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002114}
2115
2116static __inline__ __m256i __DEFAULT_FN_ATTRS
2117_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002118 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2119 (__v8si)_mm256_cvttps_epi32(__A),
2120 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002121}
2122
2123static __inline__ __m128i __DEFAULT_FN_ATTRS
2124_mm_cvttps_epu32 (__m128 __A) {
2125 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2126 (__v4si)
2127 _mm_setzero_si128 (),
2128 (__mmask8) -1);
2129}
2130
2131static __inline__ __m128i __DEFAULT_FN_ATTRS
2132_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2133 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2134 (__v4si) __W,
2135 (__mmask8) __U);
2136}
2137
2138static __inline__ __m128i __DEFAULT_FN_ATTRS
2139_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2140 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2141 (__v4si)
2142 _mm_setzero_si128 (),
2143 (__mmask8) __U);
2144}
2145
2146static __inline__ __m256i __DEFAULT_FN_ATTRS
2147_mm256_cvttps_epu32 (__m256 __A) {
2148 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2149 (__v8si)
2150 _mm256_setzero_si256 (),
2151 (__mmask8) -1);
2152}
2153
2154static __inline__ __m256i __DEFAULT_FN_ATTRS
2155_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2156 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2157 (__v8si) __W,
2158 (__mmask8) __U);
2159}
2160
2161static __inline__ __m256i __DEFAULT_FN_ATTRS
2162_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2163 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2164 (__v8si)
2165 _mm256_setzero_si256 (),
2166 (__mmask8) __U);
2167}
2168
2169static __inline__ __m128d __DEFAULT_FN_ATTRS
2170_mm_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002171 return (__m128d) __builtin_convertvector(
2172 __builtin_shufflevector((__v4su)__A, (__v4su)__A, 0, 1), __v2df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002173}
2174
2175static __inline__ __m128d __DEFAULT_FN_ATTRS
2176_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002177 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2178 (__v2df)_mm_cvtepu32_pd(__A),
2179 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002180}
2181
2182static __inline__ __m128d __DEFAULT_FN_ATTRS
2183_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002184 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2185 (__v2df)_mm_cvtepu32_pd(__A),
2186 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002187}
2188
2189static __inline__ __m256d __DEFAULT_FN_ATTRS
2190_mm256_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002191 return (__m256d)__builtin_convertvector((__v4su)__A, __v4df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002192}
2193
2194static __inline__ __m256d __DEFAULT_FN_ATTRS
2195_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002196 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2197 (__v4df)_mm256_cvtepu32_pd(__A),
2198 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002199}
2200
2201static __inline__ __m256d __DEFAULT_FN_ATTRS
2202_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002203 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2204 (__v4df)_mm256_cvtepu32_pd(__A),
2205 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002206}
2207
2208static __inline__ __m128 __DEFAULT_FN_ATTRS
2209_mm_cvtepu32_ps (__m128i __A) {
2210 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2211 (__v4sf)
2212 _mm_setzero_ps (),
2213 (__mmask8) -1);
2214}
2215
2216static __inline__ __m128 __DEFAULT_FN_ATTRS
2217_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
2218 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2219 (__v4sf) __W,
2220 (__mmask8) __U);
2221}
2222
2223static __inline__ __m128 __DEFAULT_FN_ATTRS
2224_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
2225 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2226 (__v4sf)
2227 _mm_setzero_ps (),
2228 (__mmask8) __U);
2229}
2230
2231static __inline__ __m256 __DEFAULT_FN_ATTRS
2232_mm256_cvtepu32_ps (__m256i __A) {
2233 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2234 (__v8sf)
2235 _mm256_setzero_ps (),
2236 (__mmask8) -1);
2237}
2238
2239static __inline__ __m256 __DEFAULT_FN_ATTRS
2240_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
2241 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2242 (__v8sf) __W,
2243 (__mmask8) __U);
2244}
2245
2246static __inline__ __m256 __DEFAULT_FN_ATTRS
2247_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
2248 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2249 (__v8sf)
2250 _mm256_setzero_ps (),
2251 (__mmask8) __U);
2252}
2253
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002254static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002255_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2256 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2257 (__v2df)_mm_div_pd(__A, __B),
2258 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002259}
2260
2261static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002262_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2263 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2264 (__v2df)_mm_div_pd(__A, __B),
2265 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002266}
2267
2268static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002269_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2270 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2271 (__v4df)_mm256_div_pd(__A, __B),
2272 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002273}
2274
2275static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002276_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2277 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2278 (__v4df)_mm256_div_pd(__A, __B),
2279 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002280}
2281
2282static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002283_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2284 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2285 (__v4sf)_mm_div_ps(__A, __B),
2286 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002287}
2288
2289static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002290_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2291 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2292 (__v4sf)_mm_div_ps(__A, __B),
2293 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002294}
2295
2296static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002297_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2298 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2299 (__v8sf)_mm256_div_ps(__A, __B),
2300 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002301}
2302
2303static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002304_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2305 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2306 (__v8sf)_mm256_div_ps(__A, __B),
2307 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002308}
2309
2310static __inline__ __m128d __DEFAULT_FN_ATTRS
2311_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2312 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2313 (__v2df) __W,
2314 (__mmask8) __U);
2315}
2316
2317static __inline__ __m128d __DEFAULT_FN_ATTRS
2318_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2319 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2320 (__v2df)
2321 _mm_setzero_pd (),
2322 (__mmask8) __U);
2323}
2324
2325static __inline__ __m256d __DEFAULT_FN_ATTRS
2326_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2327 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2328 (__v4df) __W,
2329 (__mmask8) __U);
2330}
2331
2332static __inline__ __m256d __DEFAULT_FN_ATTRS
2333_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2334 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2335 (__v4df)
2336 _mm256_setzero_pd (),
2337 (__mmask8) __U);
2338}
2339
2340static __inline__ __m128i __DEFAULT_FN_ATTRS
2341_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2342 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2343 (__v2di) __W,
2344 (__mmask8) __U);
2345}
2346
2347static __inline__ __m128i __DEFAULT_FN_ATTRS
2348_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2349 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2350 (__v2di)
2351 _mm_setzero_si128 (),
2352 (__mmask8) __U);
2353}
2354
2355static __inline__ __m256i __DEFAULT_FN_ATTRS
2356_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2357 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2358 (__v4di) __W,
2359 (__mmask8) __U);
2360}
2361
2362static __inline__ __m256i __DEFAULT_FN_ATTRS
2363_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2364 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2365 (__v4di)
2366 _mm256_setzero_si256 (),
2367 (__mmask8) __U);
2368}
2369
2370static __inline__ __m128d __DEFAULT_FN_ATTRS
2371_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2372 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2373 (__v2df) __W,
2374 (__mmask8)
2375 __U);
2376}
2377
2378static __inline__ __m128d __DEFAULT_FN_ATTRS
2379_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2380 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2381 (__v2df)
2382 _mm_setzero_pd (),
2383 (__mmask8)
2384 __U);
2385}
2386
2387static __inline__ __m256d __DEFAULT_FN_ATTRS
2388_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2389 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2390 (__v4df) __W,
2391 (__mmask8)
2392 __U);
2393}
2394
2395static __inline__ __m256d __DEFAULT_FN_ATTRS
2396_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2397 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2398 (__v4df)
2399 _mm256_setzero_pd (),
2400 (__mmask8)
2401 __U);
2402}
2403
2404static __inline__ __m128i __DEFAULT_FN_ATTRS
2405_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2406 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2407 (__v2di) __W,
2408 (__mmask8)
2409 __U);
2410}
2411
2412static __inline__ __m128i __DEFAULT_FN_ATTRS
2413_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2414 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2415 (__v2di)
2416 _mm_setzero_si128 (),
2417 (__mmask8)
2418 __U);
2419}
2420
2421static __inline__ __m256i __DEFAULT_FN_ATTRS
2422_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2423 void const *__P) {
2424 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2425 (__v4di) __W,
2426 (__mmask8)
2427 __U);
2428}
2429
2430static __inline__ __m256i __DEFAULT_FN_ATTRS
2431_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2432 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2433 (__v4di)
2434 _mm256_setzero_si256 (),
2435 (__mmask8)
2436 __U);
2437}
2438
2439static __inline__ __m128 __DEFAULT_FN_ATTRS
2440_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2441 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2442 (__v4sf) __W,
2443 (__mmask8) __U);
2444}
2445
2446static __inline__ __m128 __DEFAULT_FN_ATTRS
2447_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2448 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2449 (__v4sf)
2450 _mm_setzero_ps (),
2451 (__mmask8)
2452 __U);
2453}
2454
2455static __inline__ __m256 __DEFAULT_FN_ATTRS
2456_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2457 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2458 (__v8sf) __W,
2459 (__mmask8) __U);
2460}
2461
2462static __inline__ __m256 __DEFAULT_FN_ATTRS
2463_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2464 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2465 (__v8sf)
2466 _mm256_setzero_ps (),
2467 (__mmask8)
2468 __U);
2469}
2470
2471static __inline__ __m128i __DEFAULT_FN_ATTRS
2472_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2473 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2474 (__v4si) __W,
2475 (__mmask8)
2476 __U);
2477}
2478
2479static __inline__ __m128i __DEFAULT_FN_ATTRS
2480_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2481 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2482 (__v4si)
2483 _mm_setzero_si128 (),
2484 (__mmask8) __U);
2485}
2486
2487static __inline__ __m256i __DEFAULT_FN_ATTRS
2488_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2489 void const *__P) {
2490 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2491 (__v8si) __W,
2492 (__mmask8)
2493 __U);
2494}
2495
2496static __inline__ __m256i __DEFAULT_FN_ATTRS
2497_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2498 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2499 (__v8si)
2500 _mm256_setzero_si256 (),
2501 (__mmask8)
2502 __U);
2503}
2504
2505static __inline__ __m128 __DEFAULT_FN_ATTRS
2506_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2507 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2508 (__v4sf) __W,
2509 (__mmask8) __U);
2510}
2511
2512static __inline__ __m128 __DEFAULT_FN_ATTRS
2513_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2514 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2515 (__v4sf)
2516 _mm_setzero_ps (),
2517 (__mmask8) __U);
2518}
2519
2520static __inline__ __m256 __DEFAULT_FN_ATTRS
2521_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2522 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2523 (__v8sf) __W,
2524 (__mmask8) __U);
2525}
2526
2527static __inline__ __m256 __DEFAULT_FN_ATTRS
2528_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2529 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2530 (__v8sf)
2531 _mm256_setzero_ps (),
2532 (__mmask8) __U);
2533}
2534
2535static __inline__ __m128i __DEFAULT_FN_ATTRS
2536_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2537 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2538 (__v4si) __W,
2539 (__mmask8) __U);
2540}
2541
2542static __inline__ __m128i __DEFAULT_FN_ATTRS
2543_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2544 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2545 (__v4si)
2546 _mm_setzero_si128 (),
2547 (__mmask8) __U);
2548}
2549
2550static __inline__ __m256i __DEFAULT_FN_ATTRS
2551_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2552 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2553 (__v8si) __W,
2554 (__mmask8) __U);
2555}
2556
2557static __inline__ __m256i __DEFAULT_FN_ATTRS
2558_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2559 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2560 (__v8si)
2561 _mm256_setzero_si256 (),
2562 (__mmask8) __U);
2563}
2564
2565static __inline__ __m128d __DEFAULT_FN_ATTRS
2566_mm_getexp_pd (__m128d __A) {
2567 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2568 (__v2df)
2569 _mm_setzero_pd (),
2570 (__mmask8) -1);
2571}
2572
2573static __inline__ __m128d __DEFAULT_FN_ATTRS
2574_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2575 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2576 (__v2df) __W,
2577 (__mmask8) __U);
2578}
2579
2580static __inline__ __m128d __DEFAULT_FN_ATTRS
2581_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2582 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2583 (__v2df)
2584 _mm_setzero_pd (),
2585 (__mmask8) __U);
2586}
2587
2588static __inline__ __m256d __DEFAULT_FN_ATTRS
2589_mm256_getexp_pd (__m256d __A) {
2590 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2591 (__v4df)
2592 _mm256_setzero_pd (),
2593 (__mmask8) -1);
2594}
2595
2596static __inline__ __m256d __DEFAULT_FN_ATTRS
2597_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2598 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2599 (__v4df) __W,
2600 (__mmask8) __U);
2601}
2602
2603static __inline__ __m256d __DEFAULT_FN_ATTRS
2604_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2605 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2606 (__v4df)
2607 _mm256_setzero_pd (),
2608 (__mmask8) __U);
2609}
2610
2611static __inline__ __m128 __DEFAULT_FN_ATTRS
2612_mm_getexp_ps (__m128 __A) {
2613 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2614 (__v4sf)
2615 _mm_setzero_ps (),
2616 (__mmask8) -1);
2617}
2618
2619static __inline__ __m128 __DEFAULT_FN_ATTRS
2620_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2621 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2622 (__v4sf) __W,
2623 (__mmask8) __U);
2624}
2625
2626static __inline__ __m128 __DEFAULT_FN_ATTRS
2627_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
2628 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2629 (__v4sf)
2630 _mm_setzero_ps (),
2631 (__mmask8) __U);
2632}
2633
2634static __inline__ __m256 __DEFAULT_FN_ATTRS
2635_mm256_getexp_ps (__m256 __A) {
2636 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2637 (__v8sf)
2638 _mm256_setzero_ps (),
2639 (__mmask8) -1);
2640}
2641
2642static __inline__ __m256 __DEFAULT_FN_ATTRS
2643_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2644 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2645 (__v8sf) __W,
2646 (__mmask8) __U);
2647}
2648
2649static __inline__ __m256 __DEFAULT_FN_ATTRS
2650_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
2651 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2652 (__v8sf)
2653 _mm256_setzero_ps (),
2654 (__mmask8) __U);
2655}
2656
2657static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002658_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2659 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2660 (__v2df)_mm_max_pd(__A, __B),
2661 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002662}
2663
2664static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002665_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2666 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2667 (__v2df)_mm_max_pd(__A, __B),
2668 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002669}
2670
2671static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002672_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2673 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2674 (__v4df)_mm256_max_pd(__A, __B),
2675 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002676}
2677
2678static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002679_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2680 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2681 (__v4df)_mm256_max_pd(__A, __B),
2682 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002683}
2684
2685static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002686_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2687 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2688 (__v4sf)_mm_max_ps(__A, __B),
2689 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002690}
2691
2692static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002693_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2694 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2695 (__v4sf)_mm_max_ps(__A, __B),
2696 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002697}
2698
2699static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002700_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2701 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2702 (__v8sf)_mm256_max_ps(__A, __B),
2703 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002704}
2705
2706static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002707_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2708 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2709 (__v8sf)_mm256_max_ps(__A, __B),
2710 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002711}
2712
2713static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002714_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2715 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2716 (__v2df)_mm_min_pd(__A, __B),
2717 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002718}
2719
2720static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002721_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2722 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2723 (__v2df)_mm_min_pd(__A, __B),
2724 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002725}
2726
2727static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002728_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2729 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2730 (__v4df)_mm256_min_pd(__A, __B),
2731 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002732}
2733
2734static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002735_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2736 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2737 (__v4df)_mm256_min_pd(__A, __B),
2738 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002739}
2740
2741static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002742_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2743 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2744 (__v4sf)_mm_min_ps(__A, __B),
2745 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002746}
2747
2748static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002749_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2750 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2751 (__v4sf)_mm_min_ps(__A, __B),
2752 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002753}
2754
2755static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002756_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2757 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2758 (__v8sf)_mm256_min_ps(__A, __B),
2759 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002760}
2761
2762static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002763_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2764 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2765 (__v8sf)_mm256_min_ps(__A, __B),
2766 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002767}
2768
2769static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002770_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2771 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2772 (__v2df)_mm_mul_pd(__A, __B),
2773 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002774}
2775
2776static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002777_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2778 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2779 (__v2df)_mm_mul_pd(__A, __B),
2780 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002781}
2782
2783static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002784_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2785 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2786 (__v4df)_mm256_mul_pd(__A, __B),
2787 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002788}
2789
2790static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002791_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2792 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2793 (__v4df)_mm256_mul_pd(__A, __B),
2794 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002795}
2796
2797static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002798_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2799 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2800 (__v4sf)_mm_mul_ps(__A, __B),
2801 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002802}
2803
2804static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002805_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2806 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2807 (__v4sf)_mm_mul_ps(__A, __B),
2808 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002809}
2810
2811static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002812_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2813 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2814 (__v8sf)_mm256_mul_ps(__A, __B),
2815 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002816}
2817
2818static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002819_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2820 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2821 (__v8sf)_mm256_mul_ps(__A, __B),
2822 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002823}
2824
2825static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002826_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
2827 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2828 (__v4si)_mm_abs_epi32(__A),
2829 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002830}
2831
2832static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002833_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
2834 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2835 (__v4si)_mm_abs_epi32(__A),
2836 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002837}
2838
2839static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002840_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
2841 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2842 (__v8si)_mm256_abs_epi32(__A),
2843 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002844}
2845
2846static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002847_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
2848 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2849 (__v8si)_mm256_abs_epi32(__A),
2850 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002851}
2852
2853static __inline__ __m128i __DEFAULT_FN_ATTRS
2854_mm_abs_epi64 (__m128i __A) {
2855 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
2856 (__v2di)
2857 _mm_setzero_si128 (),
2858 (__mmask8) -1);
2859}
2860
2861static __inline__ __m128i __DEFAULT_FN_ATTRS
2862_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2863 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
2864 (__v2di) __W,
2865 (__mmask8) __U);
2866}
2867
2868static __inline__ __m128i __DEFAULT_FN_ATTRS
2869_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
2870 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
2871 (__v2di)
2872 _mm_setzero_si128 (),
2873 (__mmask8) __U);
2874}
2875
2876static __inline__ __m256i __DEFAULT_FN_ATTRS
2877_mm256_abs_epi64 (__m256i __A) {
2878 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
2879 (__v4di)
2880 _mm256_setzero_si256 (),
2881 (__mmask8) -1);
2882}
2883
2884static __inline__ __m256i __DEFAULT_FN_ATTRS
2885_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2886 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
2887 (__v4di) __W,
2888 (__mmask8) __U);
2889}
2890
2891static __inline__ __m256i __DEFAULT_FN_ATTRS
2892_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
2893 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
2894 (__v4di)
2895 _mm256_setzero_si256 (),
2896 (__mmask8) __U);
2897}
2898
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002899static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002900_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
2901 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2902 (__v4si)_mm_max_epi32(__A, __B),
2903 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002904}
2905
2906static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002907_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2908 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2909 (__v4si)_mm_max_epi32(__A, __B),
2910 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002911}
2912
2913static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002914_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
2915 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2916 (__v8si)_mm256_max_epi32(__A, __B),
2917 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002918}
2919
2920static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002921_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2922 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2923 (__v8si)_mm256_max_epi32(__A, __B),
2924 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002925}
2926
2927static __inline__ __m128i __DEFAULT_FN_ATTRS
2928_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
2929 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
2930 (__v2di) __B,
2931 (__v2di)
2932 _mm_setzero_si128 (),
2933 __M);
2934}
2935
2936static __inline__ __m128i __DEFAULT_FN_ATTRS
2937_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
2938 __m128i __B) {
2939 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
2940 (__v2di) __B,
2941 (__v2di) __W, __M);
2942}
2943
2944static __inline__ __m128i __DEFAULT_FN_ATTRS
2945_mm_max_epi64 (__m128i __A, __m128i __B) {
2946 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
2947 (__v2di) __B,
2948 (__v2di)
2949 _mm_setzero_si128 (),
2950 (__mmask8) -1);
2951}
2952
2953static __inline__ __m256i __DEFAULT_FN_ATTRS
2954_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
2955 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
2956 (__v4di) __B,
2957 (__v4di)
2958 _mm256_setzero_si256 (),
2959 __M);
2960}
2961
2962static __inline__ __m256i __DEFAULT_FN_ATTRS
2963_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
2964 __m256i __B) {
2965 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
2966 (__v4di) __B,
2967 (__v4di) __W, __M);
2968}
2969
2970static __inline__ __m256i __DEFAULT_FN_ATTRS
2971_mm256_max_epi64 (__m256i __A, __m256i __B) {
2972 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
2973 (__v4di) __B,
2974 (__v4di)
2975 _mm256_setzero_si256 (),
2976 (__mmask8) -1);
2977}
2978
2979static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002980_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
2981 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2982 (__v4si)_mm_max_epu32(__A, __B),
2983 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002984}
2985
2986static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002987_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2988 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2989 (__v4si)_mm_max_epu32(__A, __B),
2990 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002991}
2992
2993static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002994_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
2995 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2996 (__v8si)_mm256_max_epu32(__A, __B),
2997 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002998}
2999
3000static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003001_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3002 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3003 (__v8si)_mm256_max_epu32(__A, __B),
3004 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003005}
3006
3007static __inline__ __m128i __DEFAULT_FN_ATTRS
3008_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3009 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3010 (__v2di) __B,
3011 (__v2di)
3012 _mm_setzero_si128 (),
3013 __M);
3014}
3015
3016static __inline__ __m128i __DEFAULT_FN_ATTRS
3017_mm_max_epu64 (__m128i __A, __m128i __B) {
3018 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3019 (__v2di) __B,
3020 (__v2di)
3021 _mm_setzero_si128 (),
3022 (__mmask8) -1);
3023}
3024
3025static __inline__ __m128i __DEFAULT_FN_ATTRS
3026_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3027 __m128i __B) {
3028 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3029 (__v2di) __B,
3030 (__v2di) __W, __M);
3031}
3032
3033static __inline__ __m256i __DEFAULT_FN_ATTRS
3034_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3035 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3036 (__v4di) __B,
3037 (__v4di)
3038 _mm256_setzero_si256 (),
3039 __M);
3040}
3041
3042static __inline__ __m256i __DEFAULT_FN_ATTRS
3043_mm256_max_epu64 (__m256i __A, __m256i __B) {
3044 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3045 (__v4di) __B,
3046 (__v4di)
3047 _mm256_setzero_si256 (),
3048 (__mmask8) -1);
3049}
3050
3051static __inline__ __m256i __DEFAULT_FN_ATTRS
3052_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3053 __m256i __B) {
3054 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3055 (__v4di) __B,
3056 (__v4di) __W, __M);
3057}
3058
3059static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003060_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3061 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3062 (__v4si)_mm_min_epi32(__A, __B),
3063 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003064}
3065
3066static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003067_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3068 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3069 (__v4si)_mm_min_epi32(__A, __B),
3070 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003071}
3072
3073static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003074_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3075 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3076 (__v8si)_mm256_min_epi32(__A, __B),
3077 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003078}
3079
3080static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003081_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3082 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3083 (__v8si)_mm256_min_epi32(__A, __B),
3084 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003085}
3086
3087static __inline__ __m128i __DEFAULT_FN_ATTRS
3088_mm_min_epi64 (__m128i __A, __m128i __B) {
3089 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3090 (__v2di) __B,
3091 (__v2di)
3092 _mm_setzero_si128 (),
3093 (__mmask8) -1);
3094}
3095
3096static __inline__ __m128i __DEFAULT_FN_ATTRS
3097_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
3098 __m128i __B) {
3099 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3100 (__v2di) __B,
3101 (__v2di) __W, __M);
3102}
3103
3104static __inline__ __m128i __DEFAULT_FN_ATTRS
3105_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
3106 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3107 (__v2di) __B,
3108 (__v2di)
3109 _mm_setzero_si128 (),
3110 __M);
3111}
3112
3113static __inline__ __m256i __DEFAULT_FN_ATTRS
3114_mm256_min_epi64 (__m256i __A, __m256i __B) {
3115 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3116 (__v4di) __B,
3117 (__v4di)
3118 _mm256_setzero_si256 (),
3119 (__mmask8) -1);
3120}
3121
3122static __inline__ __m256i __DEFAULT_FN_ATTRS
3123_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
3124 __m256i __B) {
3125 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3126 (__v4di) __B,
3127 (__v4di) __W, __M);
3128}
3129
3130static __inline__ __m256i __DEFAULT_FN_ATTRS
3131_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3132 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3133 (__v4di) __B,
3134 (__v4di)
3135 _mm256_setzero_si256 (),
3136 __M);
3137}
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) {
3169 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3170 (__v2di) __B,
3171 (__v2di)
3172 _mm_setzero_si128 (),
3173 (__mmask8) -1);
3174}
3175
3176static __inline__ __m128i __DEFAULT_FN_ATTRS
3177_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3178 __m128i __B) {
3179 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3180 (__v2di) __B,
3181 (__v2di) __W, __M);
3182}
3183
3184static __inline__ __m128i __DEFAULT_FN_ATTRS
3185_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3186 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3187 (__v2di) __B,
3188 (__v2di)
3189 _mm_setzero_si128 (),
3190 __M);
3191}
3192
3193static __inline__ __m256i __DEFAULT_FN_ATTRS
3194_mm256_min_epu64 (__m256i __A, __m256i __B) {
3195 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3196 (__v4di) __B,
3197 (__v4di)
3198 _mm256_setzero_si256 (),
3199 (__mmask8) -1);
3200}
3201
3202static __inline__ __m256i __DEFAULT_FN_ATTRS
3203_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3204 __m256i __B) {
3205 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3206 (__v4di) __B,
3207 (__v4di) __W, __M);
3208}
3209
3210static __inline__ __m256i __DEFAULT_FN_ATTRS
3211_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3212 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3213 (__v4di) __B,
3214 (__v4di)
3215 _mm256_setzero_si256 (),
3216 __M);
3217}
3218
Craig Topperd2661882016-05-17 04:41:48 +00003219#define _mm_roundscale_pd(A, imm) __extension__ ({ \
3220 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3221 (int)(imm), \
3222 (__v2df)_mm_setzero_pd(), \
3223 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003224
3225
Craig Topperd2661882016-05-17 04:41:48 +00003226#define _mm_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3227 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3228 (int)(imm), \
3229 (__v2df)(__m128d)(W), \
3230 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003231
3232
Craig Topperd2661882016-05-17 04:41:48 +00003233#define _mm_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3234 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3235 (int)(imm), \
3236 (__v2df)_mm_setzero_pd(), \
3237 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003238
3239
Craig Topperd2661882016-05-17 04:41:48 +00003240#define _mm256_roundscale_pd(A, imm) __extension__ ({ \
3241 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3242 (int)(imm), \
3243 (__v4df)_mm256_setzero_pd(), \
3244 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003245
3246
Craig Topperd2661882016-05-17 04:41:48 +00003247#define _mm256_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3248 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3249 (int)(imm), \
3250 (__v4df)(__m256d)(W), \
3251 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003252
3253
Craig Topperd2661882016-05-17 04:41:48 +00003254#define _mm256_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3255 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3256 (int)(imm), \
3257 (__v4df)_mm256_setzero_pd(), \
3258 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003259
Craig Topperd2661882016-05-17 04:41:48 +00003260#define _mm_roundscale_ps(A, imm) __extension__ ({ \
3261 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3262 (__v4sf)_mm_setzero_ps(), \
3263 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003264
3265
Craig Topperd2661882016-05-17 04:41:48 +00003266#define _mm_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3267 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3268 (__v4sf)(__m128)(W), \
3269 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003270
3271
Craig Topperd2661882016-05-17 04:41:48 +00003272#define _mm_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3273 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3274 (__v4sf)_mm_setzero_ps(), \
3275 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003276
Craig Topperd2661882016-05-17 04:41:48 +00003277#define _mm256_roundscale_ps(A, imm) __extension__ ({ \
3278 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3279 (__v8sf)_mm256_setzero_ps(), \
3280 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003281
Craig Topperd2661882016-05-17 04:41:48 +00003282#define _mm256_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3283 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3284 (__v8sf)(__m256)(W), \
3285 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003286
3287
Craig Topperd2661882016-05-17 04:41:48 +00003288#define _mm256_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3289 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3290 (__v8sf)_mm256_setzero_ps(), \
3291 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003292
3293static __inline__ __m128d __DEFAULT_FN_ATTRS
3294_mm_scalef_pd (__m128d __A, __m128d __B) {
3295 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3296 (__v2df) __B,
3297 (__v2df)
3298 _mm_setzero_pd (),
3299 (__mmask8) -1);
3300}
3301
3302static __inline__ __m128d __DEFAULT_FN_ATTRS
3303_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3304 __m128d __B) {
3305 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3306 (__v2df) __B,
3307 (__v2df) __W,
3308 (__mmask8) __U);
3309}
3310
3311static __inline__ __m128d __DEFAULT_FN_ATTRS
3312_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3313 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3314 (__v2df) __B,
3315 (__v2df)
3316 _mm_setzero_pd (),
3317 (__mmask8) __U);
3318}
3319
3320static __inline__ __m256d __DEFAULT_FN_ATTRS
3321_mm256_scalef_pd (__m256d __A, __m256d __B) {
3322 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3323 (__v4df) __B,
3324 (__v4df)
3325 _mm256_setzero_pd (),
3326 (__mmask8) -1);
3327}
3328
3329static __inline__ __m256d __DEFAULT_FN_ATTRS
3330_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3331 __m256d __B) {
3332 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3333 (__v4df) __B,
3334 (__v4df) __W,
3335 (__mmask8) __U);
3336}
3337
3338static __inline__ __m256d __DEFAULT_FN_ATTRS
3339_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3340 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3341 (__v4df) __B,
3342 (__v4df)
3343 _mm256_setzero_pd (),
3344 (__mmask8) __U);
3345}
3346
3347static __inline__ __m128 __DEFAULT_FN_ATTRS
3348_mm_scalef_ps (__m128 __A, __m128 __B) {
3349 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3350 (__v4sf) __B,
3351 (__v4sf)
3352 _mm_setzero_ps (),
3353 (__mmask8) -1);
3354}
3355
3356static __inline__ __m128 __DEFAULT_FN_ATTRS
3357_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3358 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3359 (__v4sf) __B,
3360 (__v4sf) __W,
3361 (__mmask8) __U);
3362}
3363
3364static __inline__ __m128 __DEFAULT_FN_ATTRS
3365_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3366 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3367 (__v4sf) __B,
3368 (__v4sf)
3369 _mm_setzero_ps (),
3370 (__mmask8) __U);
3371}
3372
3373static __inline__ __m256 __DEFAULT_FN_ATTRS
3374_mm256_scalef_ps (__m256 __A, __m256 __B) {
3375 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3376 (__v8sf) __B,
3377 (__v8sf)
3378 _mm256_setzero_ps (),
3379 (__mmask8) -1);
3380}
3381
3382static __inline__ __m256 __DEFAULT_FN_ATTRS
3383_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3384 __m256 __B) {
3385 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3386 (__v8sf) __B,
3387 (__v8sf) __W,
3388 (__mmask8) __U);
3389}
3390
3391static __inline__ __m256 __DEFAULT_FN_ATTRS
3392_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3393 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3394 (__v8sf) __B,
3395 (__v8sf)
3396 _mm256_setzero_ps (),
3397 (__mmask8) __U);
3398}
3399
Craig Topperd2661882016-05-17 04:41:48 +00003400#define _mm_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3401 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3402 (__v2di)(__m128i)(index), \
3403 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003404
Craig Topperd2661882016-05-17 04:41:48 +00003405#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3406 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3407 (__v2di)(__m128i)(index), \
3408 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003409
Craig Topperd2661882016-05-17 04:41:48 +00003410#define _mm_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3411 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3412 (__v2di)(__m128i)(index), \
3413 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003414
Craig Topperd2661882016-05-17 04:41:48 +00003415#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3416 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3417 (__v2di)(__m128i)(index), \
3418 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003419
Craig Topperd2661882016-05-17 04:41:48 +00003420#define _mm256_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3421 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3422 (__v4di)(__m256i)(index), \
3423 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003424
Craig Topperd2661882016-05-17 04:41:48 +00003425#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3426 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3427 (__v4di)(__m256i)(index), \
3428 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003429
Craig Topperd2661882016-05-17 04:41:48 +00003430#define _mm256_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3431 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3432 (__v4di)(__m256i)(index), \
3433 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003434
Craig Topperd2661882016-05-17 04:41:48 +00003435#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3436 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3437 (__v4di)(__m256i)(index), \
3438 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003439
Craig Topperd2661882016-05-17 04:41:48 +00003440#define _mm_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3441 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3442 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3443 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003444
Craig Topperd2661882016-05-17 04:41:48 +00003445#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3446 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3447 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3448 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003449
Craig Topperd2661882016-05-17 04:41:48 +00003450#define _mm_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3451 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3452 (__v2di)(__m128i)(index), \
3453 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003454
Craig Topperd2661882016-05-17 04:41:48 +00003455#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3456 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3457 (__v2di)(__m128i)(index), \
3458 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003459
Craig Topperd2661882016-05-17 04:41:48 +00003460#define _mm256_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3461 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3462 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3463 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003464
Craig Topperd2661882016-05-17 04:41:48 +00003465#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3466 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3467 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3468 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003469
Craig Topperd2661882016-05-17 04:41:48 +00003470#define _mm256_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3471 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3472 (__v4di)(__m256i)(index), \
3473 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003474
Craig Topperd2661882016-05-17 04:41:48 +00003475#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3476 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3477 (__v4di)(__m256i)(index), \
3478 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003479
Craig Topperd2661882016-05-17 04:41:48 +00003480#define _mm_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3481 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3482 (__v4si)(__m128i)(index), \
3483 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003484
Craig Topperd2661882016-05-17 04:41:48 +00003485#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3486 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3487 (__v4si)(__m128i)(index), \
3488 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003489
Craig Topperd2661882016-05-17 04:41:48 +00003490#define _mm_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3491 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
3492 (__v4si)(__m128i)(index), \
3493 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003494
Craig Topperd2661882016-05-17 04:41:48 +00003495#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3496 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3497 (__v4si)(__m128i)(index), \
3498 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003499
Craig Topperd2661882016-05-17 04:41:48 +00003500#define _mm256_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3501 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
3502 (__v4si)(__m128i)(index), \
3503 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003504
Craig Topperd2661882016-05-17 04:41:48 +00003505#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3506 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3507 (__v4si)(__m128i)(index), \
3508 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003509
Craig Topperd2661882016-05-17 04:41:48 +00003510#define _mm256_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3511 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
3512 (__v4si)(__m128i)(index), \
3513 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003514
Craig Topperd2661882016-05-17 04:41:48 +00003515#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3516 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3517 (__v4si)(__m128i)(index), \
3518 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003519
Craig Topperd2661882016-05-17 04:41:48 +00003520#define _mm_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3521 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
3522 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3523 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003524
Craig Topperd2661882016-05-17 04:41:48 +00003525#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3526 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3527 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3528 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003529
Craig Topperd2661882016-05-17 04:41:48 +00003530#define _mm_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3531 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
3532 (__v4si)(__m128i)(index), \
3533 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003534
Craig Topperd2661882016-05-17 04:41:48 +00003535#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3536 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3537 (__v4si)(__m128i)(index), \
3538 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003539
Craig Topperd2661882016-05-17 04:41:48 +00003540#define _mm256_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3541 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
3542 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3543 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003544
Craig Topperd2661882016-05-17 04:41:48 +00003545#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3546 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3547 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3548 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003549
Craig Topperd2661882016-05-17 04:41:48 +00003550#define _mm256_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3551 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
3552 (__v8si)(__m256i)(index), \
3553 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003554
Craig Topperd2661882016-05-17 04:41:48 +00003555#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3556 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3557 (__v8si)(__m256i)(index), \
3558 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003559
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003560static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003561_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3562 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3563 (__v2df)_mm_sqrt_pd(__A),
3564 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003565}
3566
3567static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003568_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3569 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3570 (__v2df)_mm_sqrt_pd(__A),
3571 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003572}
3573
3574static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003575_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3576 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3577 (__v4df)_mm256_sqrt_pd(__A),
3578 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003579}
3580
3581static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003582_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3583 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3584 (__v4df)_mm256_sqrt_pd(__A),
3585 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003586}
3587
3588static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003589_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3590 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3591 (__v4sf)_mm_sqrt_ps(__A),
3592 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003593}
3594
3595static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003596_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3597 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3598 (__v4sf)_mm_sqrt_ps(__A),
3599 (__v4sf)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003600}
3601
3602static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003603_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3604 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3605 (__v8sf)_mm256_sqrt_ps(__A),
3606 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003607}
3608
3609static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003610_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3611 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3612 (__v8sf)_mm256_sqrt_ps(__A),
3613 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003614}
3615
3616static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003617_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3618 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3619 (__v2df)_mm_sub_pd(__A, __B),
3620 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003621}
3622
3623static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003624_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3625 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3626 (__v2df)_mm_sub_pd(__A, __B),
3627 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003628}
3629
3630static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003631_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3632 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3633 (__v4df)_mm256_sub_pd(__A, __B),
3634 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003635}
3636
3637static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003638_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3639 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3640 (__v4df)_mm256_sub_pd(__A, __B),
3641 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003642}
3643
3644static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003645_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3646 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3647 (__v4sf)_mm_sub_ps(__A, __B),
3648 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003649}
3650
3651static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003652_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3653 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3654 (__v4sf)_mm_sub_ps(__A, __B),
3655 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003656}
3657
3658static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003659_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3660 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3661 (__v8sf)_mm256_sub_ps(__A, __B),
3662 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003663}
3664
3665static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003666_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3667 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3668 (__v8sf)_mm256_sub_ps(__A, __B),
3669 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003670}
3671
3672static __inline__ __m128i __DEFAULT_FN_ATTRS
3673_mm_mask2_permutex2var_epi32 (__m128i __A, __m128i __I, __mmask8 __U,
3674 __m128i __B) {
3675 return (__m128i) __builtin_ia32_vpermi2vard128_mask ((__v4si) __A,
3676 (__v4si) __I
3677 /* idx */ ,
3678 (__v4si) __B,
3679 (__mmask8) __U);
3680}
3681
3682static __inline__ __m256i __DEFAULT_FN_ATTRS
3683_mm256_mask2_permutex2var_epi32 (__m256i __A, __m256i __I,
3684 __mmask8 __U, __m256i __B) {
3685 return (__m256i) __builtin_ia32_vpermi2vard256_mask ((__v8si) __A,
3686 (__v8si) __I
3687 /* idx */ ,
3688 (__v8si) __B,
3689 (__mmask8) __U);
3690}
3691
3692static __inline__ __m128d __DEFAULT_FN_ATTRS
3693_mm_mask2_permutex2var_pd (__m128d __A, __m128i __I, __mmask8 __U,
3694 __m128d __B) {
3695 return (__m128d) __builtin_ia32_vpermi2varpd128_mask ((__v2df) __A,
3696 (__v2di) __I
3697 /* idx */ ,
3698 (__v2df) __B,
3699 (__mmask8)
3700 __U);
3701}
3702
3703static __inline__ __m256d __DEFAULT_FN_ATTRS
3704_mm256_mask2_permutex2var_pd (__m256d __A, __m256i __I, __mmask8 __U,
3705 __m256d __B) {
3706 return (__m256d) __builtin_ia32_vpermi2varpd256_mask ((__v4df) __A,
3707 (__v4di) __I
3708 /* idx */ ,
3709 (__v4df) __B,
3710 (__mmask8)
3711 __U);
3712}
3713
3714static __inline__ __m128 __DEFAULT_FN_ATTRS
3715_mm_mask2_permutex2var_ps (__m128 __A, __m128i __I, __mmask8 __U,
3716 __m128 __B) {
3717 return (__m128) __builtin_ia32_vpermi2varps128_mask ((__v4sf) __A,
3718 (__v4si) __I
3719 /* idx */ ,
3720 (__v4sf) __B,
3721 (__mmask8) __U);
3722}
3723
3724static __inline__ __m256 __DEFAULT_FN_ATTRS
3725_mm256_mask2_permutex2var_ps (__m256 __A, __m256i __I, __mmask8 __U,
3726 __m256 __B) {
3727 return (__m256) __builtin_ia32_vpermi2varps256_mask ((__v8sf) __A,
3728 (__v8si) __I
3729 /* idx */ ,
3730 (__v8sf) __B,
3731 (__mmask8) __U);
3732}
3733
3734static __inline__ __m128i __DEFAULT_FN_ATTRS
3735_mm_mask2_permutex2var_epi64 (__m128i __A, __m128i __I, __mmask8 __U,
3736 __m128i __B) {
3737 return (__m128i) __builtin_ia32_vpermi2varq128_mask ((__v2di) __A,
3738 (__v2di) __I
3739 /* idx */ ,
3740 (__v2di) __B,
3741 (__mmask8) __U);
3742}
3743
3744static __inline__ __m256i __DEFAULT_FN_ATTRS
3745_mm256_mask2_permutex2var_epi64 (__m256i __A, __m256i __I,
3746 __mmask8 __U, __m256i __B) {
3747 return (__m256i) __builtin_ia32_vpermi2varq256_mask ((__v4di) __A,
3748 (__v4di) __I
3749 /* idx */ ,
3750 (__v4di) __B,
3751 (__mmask8) __U);
3752}
3753
3754static __inline__ __m128i __DEFAULT_FN_ATTRS
3755_mm_permutex2var_epi32 (__m128i __A, __m128i __I, __m128i __B) {
3756 return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
3757 /* idx */ ,
3758 (__v4si) __A,
3759 (__v4si) __B,
3760 (__mmask8) -1);
3761}
3762
3763static __inline__ __m128i __DEFAULT_FN_ATTRS
3764_mm_mask_permutex2var_epi32 (__m128i __A, __mmask8 __U, __m128i __I,
3765 __m128i __B) {
3766 return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
3767 /* idx */ ,
3768 (__v4si) __A,
3769 (__v4si) __B,
3770 (__mmask8) __U);
3771}
3772
3773static __inline__ __m128i __DEFAULT_FN_ATTRS
3774_mm_maskz_permutex2var_epi32 (__mmask8 __U, __m128i __A, __m128i __I,
3775 __m128i __B) {
3776 return (__m128i) __builtin_ia32_vpermt2vard128_maskz ((__v4si) __I
3777 /* idx */ ,
3778 (__v4si) __A,
3779 (__v4si) __B,
3780 (__mmask8)
3781 __U);
3782}
3783
3784static __inline__ __m256i __DEFAULT_FN_ATTRS
3785_mm256_permutex2var_epi32 (__m256i __A, __m256i __I, __m256i __B) {
3786 return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
3787 /* idx */ ,
3788 (__v8si) __A,
3789 (__v8si) __B,
3790 (__mmask8) -1);
3791}
3792
3793static __inline__ __m256i __DEFAULT_FN_ATTRS
3794_mm256_mask_permutex2var_epi32 (__m256i __A, __mmask8 __U, __m256i __I,
3795 __m256i __B) {
3796 return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
3797 /* idx */ ,
3798 (__v8si) __A,
3799 (__v8si) __B,
3800 (__mmask8) __U);
3801}
3802
3803static __inline__ __m256i __DEFAULT_FN_ATTRS
3804_mm256_maskz_permutex2var_epi32 (__mmask8 __U, __m256i __A,
3805 __m256i __I, __m256i __B) {
3806 return (__m256i) __builtin_ia32_vpermt2vard256_maskz ((__v8si) __I
3807 /* idx */ ,
3808 (__v8si) __A,
3809 (__v8si) __B,
3810 (__mmask8)
3811 __U);
3812}
3813
3814static __inline__ __m128d __DEFAULT_FN_ATTRS
3815_mm_permutex2var_pd (__m128d __A, __m128i __I, __m128d __B) {
3816 return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
3817 /* idx */ ,
3818 (__v2df) __A,
3819 (__v2df) __B,
3820 (__mmask8) -
3821 1);
3822}
3823
3824static __inline__ __m128d __DEFAULT_FN_ATTRS
3825_mm_mask_permutex2var_pd (__m128d __A, __mmask8 __U, __m128i __I,
3826 __m128d __B) {
3827 return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
3828 /* idx */ ,
3829 (__v2df) __A,
3830 (__v2df) __B,
3831 (__mmask8)
3832 __U);
3833}
3834
3835static __inline__ __m128d __DEFAULT_FN_ATTRS
3836_mm_maskz_permutex2var_pd (__mmask8 __U, __m128d __A, __m128i __I,
3837 __m128d __B) {
3838 return (__m128d) __builtin_ia32_vpermt2varpd128_maskz ((__v2di) __I
3839 /* idx */ ,
3840 (__v2df) __A,
3841 (__v2df) __B,
3842 (__mmask8)
3843 __U);
3844}
3845
3846static __inline__ __m256d __DEFAULT_FN_ATTRS
3847_mm256_permutex2var_pd (__m256d __A, __m256i __I, __m256d __B) {
3848 return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
3849 /* idx */ ,
3850 (__v4df) __A,
3851 (__v4df) __B,
3852 (__mmask8) -
3853 1);
3854}
3855
3856static __inline__ __m256d __DEFAULT_FN_ATTRS
3857_mm256_mask_permutex2var_pd (__m256d __A, __mmask8 __U, __m256i __I,
3858 __m256d __B) {
3859 return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
3860 /* idx */ ,
3861 (__v4df) __A,
3862 (__v4df) __B,
3863 (__mmask8)
3864 __U);
3865}
3866
3867static __inline__ __m256d __DEFAULT_FN_ATTRS
3868_mm256_maskz_permutex2var_pd (__mmask8 __U, __m256d __A, __m256i __I,
3869 __m256d __B) {
3870 return (__m256d) __builtin_ia32_vpermt2varpd256_maskz ((__v4di) __I
3871 /* idx */ ,
3872 (__v4df) __A,
3873 (__v4df) __B,
3874 (__mmask8)
3875 __U);
3876}
3877
3878static __inline__ __m128 __DEFAULT_FN_ATTRS
3879_mm_permutex2var_ps (__m128 __A, __m128i __I, __m128 __B) {
3880 return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
3881 /* idx */ ,
3882 (__v4sf) __A,
3883 (__v4sf) __B,
3884 (__mmask8) -1);
3885}
3886
3887static __inline__ __m128 __DEFAULT_FN_ATTRS
3888_mm_mask_permutex2var_ps (__m128 __A, __mmask8 __U, __m128i __I,
3889 __m128 __B) {
3890 return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
3891 /* idx */ ,
3892 (__v4sf) __A,
3893 (__v4sf) __B,
3894 (__mmask8) __U);
3895}
3896
3897static __inline__ __m128 __DEFAULT_FN_ATTRS
3898_mm_maskz_permutex2var_ps (__mmask8 __U, __m128 __A, __m128i __I,
3899 __m128 __B) {
3900 return (__m128) __builtin_ia32_vpermt2varps128_maskz ((__v4si) __I
3901 /* idx */ ,
3902 (__v4sf) __A,
3903 (__v4sf) __B,
3904 (__mmask8)
3905 __U);
3906}
3907
3908static __inline__ __m256 __DEFAULT_FN_ATTRS
3909_mm256_permutex2var_ps (__m256 __A, __m256i __I, __m256 __B) {
3910 return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
3911 /* idx */ ,
3912 (__v8sf) __A,
3913 (__v8sf) __B,
3914 (__mmask8) -1);
3915}
3916
3917static __inline__ __m256 __DEFAULT_FN_ATTRS
3918_mm256_mask_permutex2var_ps (__m256 __A, __mmask8 __U, __m256i __I,
3919 __m256 __B) {
3920 return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
3921 /* idx */ ,
3922 (__v8sf) __A,
3923 (__v8sf) __B,
3924 (__mmask8) __U);
3925}
3926
3927static __inline__ __m256 __DEFAULT_FN_ATTRS
3928_mm256_maskz_permutex2var_ps (__mmask8 __U, __m256 __A, __m256i __I,
3929 __m256 __B) {
3930 return (__m256) __builtin_ia32_vpermt2varps256_maskz ((__v8si) __I
3931 /* idx */ ,
3932 (__v8sf) __A,
3933 (__v8sf) __B,
3934 (__mmask8)
3935 __U);
3936}
3937
3938static __inline__ __m128i __DEFAULT_FN_ATTRS
3939_mm_permutex2var_epi64 (__m128i __A, __m128i __I, __m128i __B) {
3940 return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
3941 /* idx */ ,
3942 (__v2di) __A,
3943 (__v2di) __B,
3944 (__mmask8) -1);
3945}
3946
3947static __inline__ __m128i __DEFAULT_FN_ATTRS
3948_mm_mask_permutex2var_epi64 (__m128i __A, __mmask8 __U, __m128i __I,
3949 __m128i __B) {
3950 return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
3951 /* idx */ ,
3952 (__v2di) __A,
3953 (__v2di) __B,
3954 (__mmask8) __U);
3955}
3956
3957static __inline__ __m128i __DEFAULT_FN_ATTRS
3958_mm_maskz_permutex2var_epi64 (__mmask8 __U, __m128i __A, __m128i __I,
3959 __m128i __B) {
3960 return (__m128i) __builtin_ia32_vpermt2varq128_maskz ((__v2di) __I
3961 /* idx */ ,
3962 (__v2di) __A,
3963 (__v2di) __B,
3964 (__mmask8)
3965 __U);
3966}
3967
3968
3969static __inline__ __m256i __DEFAULT_FN_ATTRS
3970_mm256_permutex2var_epi64 (__m256i __A, __m256i __I, __m256i __B) {
3971 return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
3972 /* idx */ ,
3973 (__v4di) __A,
3974 (__v4di) __B,
3975 (__mmask8) -1);
3976}
3977
3978static __inline__ __m256i __DEFAULT_FN_ATTRS
3979_mm256_mask_permutex2var_epi64 (__m256i __A, __mmask8 __U, __m256i __I,
3980 __m256i __B) {
3981 return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
3982 /* idx */ ,
3983 (__v4di) __A,
3984 (__v4di) __B,
3985 (__mmask8) __U);
3986}
3987
3988static __inline__ __m256i __DEFAULT_FN_ATTRS
3989_mm256_maskz_permutex2var_epi64 (__mmask8 __U, __m256i __A,
3990 __m256i __I, __m256i __B) {
3991 return (__m256i) __builtin_ia32_vpermt2varq256_maskz ((__v4di) __I
3992 /* idx */ ,
3993 (__v4di) __A,
3994 (__v4di) __B,
3995 (__mmask8)
3996 __U);
3997}
3998
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003999static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004000_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004001{
Craig Topper11dda922016-10-22 21:24:48 +00004002 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4003 (__v4si)_mm_cvtepi8_epi32(__A),
4004 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004005}
4006
4007static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004008_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004009{
Craig Topper11dda922016-10-22 21:24:48 +00004010 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4011 (__v4si)_mm_cvtepi8_epi32(__A),
4012 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004013}
4014
4015static __inline__ __m256i __DEFAULT_FN_ATTRS
4016_mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4017{
Craig Topper11dda922016-10-22 21:24:48 +00004018 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4019 (__v8si)_mm256_cvtepi8_epi32(__A),
4020 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004021}
4022
4023static __inline__ __m256i __DEFAULT_FN_ATTRS
4024_mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
4025{
Craig Topper11dda922016-10-22 21:24:48 +00004026 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4027 (__v8si)_mm256_cvtepi8_epi32(__A),
4028 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004029}
4030
4031static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004032_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004033{
Craig Topper11dda922016-10-22 21:24:48 +00004034 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4035 (__v2di)_mm_cvtepi8_epi64(__A),
4036 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004037}
4038
4039static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004040_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004041{
Craig Topper11dda922016-10-22 21:24:48 +00004042 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4043 (__v2di)_mm_cvtepi8_epi64(__A),
4044 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004045}
4046
4047static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004048_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004049{
Craig Topper11dda922016-10-22 21:24:48 +00004050 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4051 (__v4di)_mm256_cvtepi8_epi64(__A),
4052 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004053}
4054
4055static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004056_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004057{
Craig Topper11dda922016-10-22 21:24:48 +00004058 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4059 (__v4di)_mm256_cvtepi8_epi64(__A),
4060 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004061}
4062
4063static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004064_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004065{
Craig Topper11dda922016-10-22 21:24:48 +00004066 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4067 (__v2di)_mm_cvtepi32_epi64(__X),
4068 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004069}
4070
4071static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004072_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004073{
Craig Topper11dda922016-10-22 21:24:48 +00004074 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4075 (__v2di)_mm_cvtepi32_epi64(__X),
4076 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004077}
4078
4079static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004080_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004081{
Craig Topper11dda922016-10-22 21:24:48 +00004082 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4083 (__v4di)_mm256_cvtepi32_epi64(__X),
4084 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004085}
4086
4087static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004088_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004089{
Craig Topper11dda922016-10-22 21:24:48 +00004090 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4091 (__v4di)_mm256_cvtepi32_epi64(__X),
4092 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004093}
4094
4095static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004096_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004097{
Craig Topper11dda922016-10-22 21:24:48 +00004098 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4099 (__v4si)_mm_cvtepi16_epi32(__A),
4100 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004101}
4102
4103static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004104_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004105{
Craig Topper11dda922016-10-22 21:24:48 +00004106 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4107 (__v4si)_mm_cvtepi16_epi32(__A),
4108 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004109}
4110
4111static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004112_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004113{
Craig Topper11dda922016-10-22 21:24:48 +00004114 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4115 (__v8si)_mm256_cvtepi16_epi32(__A),
4116 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004117}
4118
4119static __inline__ __m256i __DEFAULT_FN_ATTRS
4120_mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4121{
Craig Topper11dda922016-10-22 21:24:48 +00004122 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4123 (__v8si)_mm256_cvtepi16_epi32(__A),
4124 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004125}
4126
4127static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004128_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004129{
Craig Topper11dda922016-10-22 21:24:48 +00004130 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4131 (__v2di)_mm_cvtepi16_epi64(__A),
4132 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004133}
4134
4135static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004136_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004137{
Craig Topper11dda922016-10-22 21:24:48 +00004138 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4139 (__v2di)_mm_cvtepi16_epi64(__A),
4140 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004141}
4142
4143static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004144_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004145{
Craig Topper11dda922016-10-22 21:24:48 +00004146 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4147 (__v4di)_mm256_cvtepi16_epi64(__A),
4148 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004149}
4150
4151static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004152_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004153{
Craig Topper11dda922016-10-22 21:24:48 +00004154 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4155 (__v4di)_mm256_cvtepi16_epi64(__A),
4156 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004157}
4158
4159
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004160static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004161_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004162{
Craig Topper11dda922016-10-22 21:24:48 +00004163 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4164 (__v4si)_mm_cvtepu8_epi32(__A),
4165 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004166}
4167
4168static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004169_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004170{
Craig Topper11dda922016-10-22 21:24:48 +00004171 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4172 (__v4si)_mm_cvtepu8_epi32(__A),
4173 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004174}
4175
4176static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004177_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004178{
Craig Topper11dda922016-10-22 21:24:48 +00004179 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4180 (__v8si)_mm256_cvtepu8_epi32(__A),
4181 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004182}
4183
4184static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004185_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004186{
Craig Topper11dda922016-10-22 21:24:48 +00004187 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4188 (__v8si)_mm256_cvtepu8_epi32(__A),
4189 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004190}
4191
4192static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004193_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004194{
Craig Topper11dda922016-10-22 21:24:48 +00004195 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4196 (__v2di)_mm_cvtepu8_epi64(__A),
4197 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004198}
4199
4200static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004201_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004202{
Craig Topper11dda922016-10-22 21:24:48 +00004203 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4204 (__v2di)_mm_cvtepu8_epi64(__A),
4205 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004206}
4207
4208static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004209_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004210{
Craig Topper11dda922016-10-22 21:24:48 +00004211 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4212 (__v4di)_mm256_cvtepu8_epi64(__A),
4213 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004214}
4215
4216static __inline__ __m256i __DEFAULT_FN_ATTRS
4217_mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4218{
Craig Topper11dda922016-10-22 21:24:48 +00004219 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4220 (__v4di)_mm256_cvtepu8_epi64(__A),
4221 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004222}
4223
4224static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004225_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004226{
Craig Topper11dda922016-10-22 21:24:48 +00004227 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4228 (__v2di)_mm_cvtepu32_epi64(__X),
4229 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004230}
4231
4232static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004233_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004234{
Craig Topper11dda922016-10-22 21:24:48 +00004235 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4236 (__v2di)_mm_cvtepu32_epi64(__X),
4237 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004238}
4239
4240static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004241_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004242{
Craig Topper11dda922016-10-22 21:24:48 +00004243 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4244 (__v4di)_mm256_cvtepu32_epi64(__X),
4245 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004246}
4247
4248static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004249_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004250{
Craig Topper11dda922016-10-22 21:24:48 +00004251 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4252 (__v4di)_mm256_cvtepu32_epi64(__X),
4253 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004254}
4255
4256static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004257_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004258{
Craig Topper11dda922016-10-22 21:24:48 +00004259 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4260 (__v4si)_mm_cvtepu16_epi32(__A),
4261 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004262}
4263
4264static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004265_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004266{
Craig Topper11dda922016-10-22 21:24:48 +00004267 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4268 (__v4si)_mm_cvtepu16_epi32(__A),
4269 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004270}
4271
4272static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004273_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004274{
Craig Topper11dda922016-10-22 21:24:48 +00004275 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4276 (__v8si)_mm256_cvtepu16_epi32(__A),
4277 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004278}
4279
4280static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004281_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004282{
Craig Topper11dda922016-10-22 21:24:48 +00004283 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4284 (__v8si)_mm256_cvtepu16_epi32(__A),
4285 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004286}
4287
4288static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004289_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004290{
Craig Topper11dda922016-10-22 21:24:48 +00004291 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4292 (__v2di)_mm_cvtepu16_epi64(__A),
4293 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004294}
4295
4296static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004297_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004298{
Craig Topper11dda922016-10-22 21:24:48 +00004299 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4300 (__v2di)_mm_cvtepu16_epi64(__A),
4301 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004302}
4303
4304static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004305_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004306{
Craig Topper11dda922016-10-22 21:24:48 +00004307 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4308 (__v4di)_mm256_cvtepu16_epi64(__A),
4309 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004310}
4311
4312static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004313_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004314{
Craig Topper11dda922016-10-22 21:24:48 +00004315 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4316 (__v4di)_mm256_cvtepu16_epi64(__A),
4317 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004318}
4319
4320
Michael Zuckerman38a27272016-02-22 09:05:41 +00004321#define _mm_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004322 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4323 (__v4si)_mm_setzero_si128(), \
4324 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004325
4326#define _mm_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004327 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4328 (__v4si)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004329
4330#define _mm_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004331 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4332 (__v4si)_mm_setzero_si128(), \
4333 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004334
4335#define _mm256_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004336 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4337 (__v8si)_mm256_setzero_si256(), \
4338 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004339
4340#define _mm256_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004341 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4342 (__v8si)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004343
4344#define _mm256_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004345 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4346 (__v8si)_mm256_setzero_si256(), \
4347 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004348
Michael Zuckerman477e0a32016-02-22 09:42:57 +00004349#define _mm_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004350 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4351 (__v2di)_mm_setzero_di(), \
4352 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004353
4354#define _mm_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004355 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4356 (__v2di)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004357
4358#define _mm_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004359 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4360 (__v2di)_mm_setzero_di(), \
4361 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004362
4363#define _mm256_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004364 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4365 (__v4di)_mm256_setzero_si256(), \
4366 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004367
4368#define _mm256_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004369 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4370 (__v4di)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004371
4372#define _mm256_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004373 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4374 (__v4di)_mm256_setzero_si256(), \
4375 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004376
Michael Zuckerman0231f162016-02-23 13:41:13 +00004377static __inline__ __m128i __DEFAULT_FN_ATTRS
4378_mm_rolv_epi32 (__m128i __A, __m128i __B)
4379{
4380 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4381 (__v4si) __B,
4382 (__v4si)
4383 _mm_setzero_si128 (),
4384 (__mmask8) -1);
4385}
4386
4387static __inline__ __m128i __DEFAULT_FN_ATTRS
4388_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4389 __m128i __B)
4390{
4391 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4392 (__v4si) __B,
4393 (__v4si) __W,
4394 (__mmask8) __U);
4395}
4396
4397static __inline__ __m128i __DEFAULT_FN_ATTRS
4398_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4399{
4400 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4401 (__v4si) __B,
4402 (__v4si)
4403 _mm_setzero_si128 (),
4404 (__mmask8) __U);
4405}
4406
4407static __inline__ __m256i __DEFAULT_FN_ATTRS
4408_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4409{
4410 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4411 (__v8si) __B,
4412 (__v8si)
4413 _mm256_setzero_si256 (),
4414 (__mmask8) -1);
4415}
4416
4417static __inline__ __m256i __DEFAULT_FN_ATTRS
4418_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4419 __m256i __B)
4420{
4421 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4422 (__v8si) __B,
4423 (__v8si) __W,
4424 (__mmask8) __U);
4425}
4426
4427static __inline__ __m256i __DEFAULT_FN_ATTRS
4428_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4429{
4430 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4431 (__v8si) __B,
4432 (__v8si)
4433 _mm256_setzero_si256 (),
4434 (__mmask8) __U);
4435}
4436
4437static __inline__ __m128i __DEFAULT_FN_ATTRS
4438_mm_rolv_epi64 (__m128i __A, __m128i __B)
4439{
4440 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4441 (__v2di) __B,
4442 (__v2di)
4443 _mm_setzero_di (),
4444 (__mmask8) -1);
4445}
4446
4447static __inline__ __m128i __DEFAULT_FN_ATTRS
4448_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4449 __m128i __B)
4450{
4451 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4452 (__v2di) __B,
4453 (__v2di) __W,
4454 (__mmask8) __U);
4455}
4456
4457static __inline__ __m128i __DEFAULT_FN_ATTRS
4458_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4459{
4460 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4461 (__v2di) __B,
4462 (__v2di)
4463 _mm_setzero_di (),
4464 (__mmask8) __U);
4465}
4466
4467static __inline__ __m256i __DEFAULT_FN_ATTRS
4468_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4469{
4470 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4471 (__v4di) __B,
4472 (__v4di)
4473 _mm256_setzero_si256 (),
4474 (__mmask8) -1);
4475}
4476
4477static __inline__ __m256i __DEFAULT_FN_ATTRS
4478_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4479 __m256i __B)
4480{
4481 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4482 (__v4di) __B,
4483 (__v4di) __W,
4484 (__mmask8) __U);
4485}
4486
4487static __inline__ __m256i __DEFAULT_FN_ATTRS
4488_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4489{
4490 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4491 (__v4di) __B,
4492 (__v4di)
4493 _mm256_setzero_si256 (),
4494 (__mmask8) __U);
4495}
4496
Craig Topperd2661882016-05-17 04:41:48 +00004497#define _mm_ror_epi32(A, B) __extension__ ({ \
4498 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4499 (__v4si)_mm_setzero_si128(), \
4500 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004501
Craig Topperd2661882016-05-17 04:41:48 +00004502#define _mm_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4503 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4504 (__v4si)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004505
Craig Topperd2661882016-05-17 04:41:48 +00004506#define _mm_maskz_ror_epi32(U, A, B) __extension__ ({ \
4507 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4508 (__v4si)_mm_setzero_si128(), \
4509 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004510
Craig Topperd2661882016-05-17 04:41:48 +00004511#define _mm256_ror_epi32(A, B) __extension__ ({ \
4512 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4513 (__v8si)_mm256_setzero_si256(), \
4514 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004515
Craig Topperd2661882016-05-17 04:41:48 +00004516#define _mm256_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4517 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4518 (__v8si)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004519
Craig Topperd2661882016-05-17 04:41:48 +00004520#define _mm256_maskz_ror_epi32(U, A, B) __extension__ ({ \
4521 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4522 (__v8si)_mm256_setzero_si256(), \
4523 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004524
Craig Topperd2661882016-05-17 04:41:48 +00004525#define _mm_ror_epi64(A, B) __extension__ ({ \
4526 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4527 (__v2di)_mm_setzero_di(), \
4528 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004529
Craig Topperd2661882016-05-17 04:41:48 +00004530#define _mm_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4531 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4532 (__v2di)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004533
Craig Topperd2661882016-05-17 04:41:48 +00004534#define _mm_maskz_ror_epi64(U, A, B) __extension__ ({ \
4535 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4536 (__v2di)_mm_setzero_di(), \
4537 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004538
Craig Topperd2661882016-05-17 04:41:48 +00004539#define _mm256_ror_epi64(A, B) __extension__ ({ \
4540 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4541 (__v4di)_mm256_setzero_si256(), \
4542 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004543
Craig Topperd2661882016-05-17 04:41:48 +00004544#define _mm256_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4545 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4546 (__v4di)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004547
Craig Topperd2661882016-05-17 04:41:48 +00004548#define _mm256_maskz_ror_epi64(U, A, B) __extension__ ({ \
4549 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4550 (__v4di)_mm256_setzero_si256(), \
4551 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004552
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004553static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004554_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004555{
Craig Topper66b2fd12016-10-31 04:30:51 +00004556 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4557 (__v4si)_mm_sll_epi32(__A, __B),
4558 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004559}
4560
4561static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004562_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004563{
Craig Topper66b2fd12016-10-31 04:30:51 +00004564 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4565 (__v4si)_mm_sll_epi32(__A, __B),
4566 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004567}
4568
4569static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004570_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004571{
Craig Topper66b2fd12016-10-31 04:30:51 +00004572 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4573 (__v8si)_mm256_sll_epi32(__A, __B),
4574 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004575}
4576
4577static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004578_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004579{
Craig Topper66b2fd12016-10-31 04:30:51 +00004580 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4581 (__v8si)_mm256_sll_epi32(__A, __B),
4582 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004583}
4584
4585static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004586_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004587{
Craig Topper66b2fd12016-10-31 04:30:51 +00004588 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4589 (__v4si)_mm_slli_epi32(__A, __B),
4590 (__v4si)__W);
4591}
4592
4593static __inline__ __m128i __DEFAULT_FN_ATTRS
4594_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4595{
4596 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4597 (__v4si)_mm_slli_epi32(__A, __B),
4598 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004599}
4600
4601static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004602_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004603{
Craig Topper66b2fd12016-10-31 04:30:51 +00004604 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4605 (__v8si)_mm256_slli_epi32(__A, __B),
4606 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004607}
4608
4609static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004610_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004611{
Craig Topper66b2fd12016-10-31 04:30:51 +00004612 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4613 (__v8si)_mm256_slli_epi32(__A, __B),
4614 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004615}
4616
Craig Topper66b2fd12016-10-31 04:30:51 +00004617static __inline__ __m128i __DEFAULT_FN_ATTRS
4618_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4619{
4620 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4621 (__v2di)_mm_sll_epi64(__A, __B),
4622 (__v2di)__W);
4623}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004624
Craig Topper66b2fd12016-10-31 04:30:51 +00004625static __inline__ __m128i __DEFAULT_FN_ATTRS
4626_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4627{
4628 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4629 (__v2di)_mm_sll_epi64(__A, __B),
4630 (__v2di)_mm_setzero_di());
4631}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004632
Craig Topper66b2fd12016-10-31 04:30:51 +00004633static __inline__ __m256i __DEFAULT_FN_ATTRS
4634_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4635{
4636 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4637 (__v4di)_mm256_sll_epi64(__A, __B),
4638 (__v4di)__W);
4639}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004640
Craig Topper66b2fd12016-10-31 04:30:51 +00004641static __inline__ __m256i __DEFAULT_FN_ATTRS
4642_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4643{
4644 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4645 (__v4di)_mm256_sll_epi64(__A, __B),
4646 (__v4di)_mm256_setzero_si256());
4647}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004648
Craig Topper66b2fd12016-10-31 04:30:51 +00004649static __inline__ __m128i __DEFAULT_FN_ATTRS
4650_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4651{
4652 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4653 (__v2di)_mm_slli_epi64(__A, __B),
4654 (__v2di)__W);
4655}
4656
4657static __inline__ __m128i __DEFAULT_FN_ATTRS
4658_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4659{
4660 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4661 (__v2di)_mm_slli_epi64(__A, __B),
4662 (__v2di)_mm_setzero_di());
4663}
4664
4665static __inline__ __m256i __DEFAULT_FN_ATTRS
4666_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4667{
4668 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4669 (__v4di)_mm256_slli_epi64(__A, __B),
4670 (__v4di)__W);
4671}
4672
4673static __inline__ __m256i __DEFAULT_FN_ATTRS
4674_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4675{
4676 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4677 (__v4di)_mm256_slli_epi64(__A, __B),
4678 (__v4di)_mm256_setzero_si256());
4679}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004680
Michael Zuckermane98cc742016-02-23 15:59:47 +00004681static __inline__ __m128i __DEFAULT_FN_ATTRS
4682_mm_rorv_epi32 (__m128i __A, __m128i __B)
4683{
4684 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4685 (__v4si) __B,
4686 (__v4si)
4687 _mm_setzero_si128 (),
4688 (__mmask8) -1);
4689}
4690
4691static __inline__ __m128i __DEFAULT_FN_ATTRS
4692_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4693 __m128i __B)
4694{
4695 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4696 (__v4si) __B,
4697 (__v4si) __W,
4698 (__mmask8) __U);
4699}
4700
4701static __inline__ __m128i __DEFAULT_FN_ATTRS
4702_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4703{
4704 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4705 (__v4si) __B,
4706 (__v4si)
4707 _mm_setzero_si128 (),
4708 (__mmask8) __U);
4709}
4710
4711static __inline__ __m256i __DEFAULT_FN_ATTRS
4712_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4713{
4714 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4715 (__v8si) __B,
4716 (__v8si)
4717 _mm256_setzero_si256 (),
4718 (__mmask8) -1);
4719}
4720
4721static __inline__ __m256i __DEFAULT_FN_ATTRS
4722_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4723 __m256i __B)
4724{
4725 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4726 (__v8si) __B,
4727 (__v8si) __W,
4728 (__mmask8) __U);
4729}
4730
4731static __inline__ __m256i __DEFAULT_FN_ATTRS
4732_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4733{
4734 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4735 (__v8si) __B,
4736 (__v8si)
4737 _mm256_setzero_si256 (),
4738 (__mmask8) __U);
4739}
4740
4741static __inline__ __m128i __DEFAULT_FN_ATTRS
4742_mm_rorv_epi64 (__m128i __A, __m128i __B)
4743{
4744 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4745 (__v2di) __B,
4746 (__v2di)
4747 _mm_setzero_di (),
4748 (__mmask8) -1);
4749}
4750
4751static __inline__ __m128i __DEFAULT_FN_ATTRS
4752_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4753 __m128i __B)
4754{
4755 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4756 (__v2di) __B,
4757 (__v2di) __W,
4758 (__mmask8) __U);
4759}
4760
4761static __inline__ __m128i __DEFAULT_FN_ATTRS
4762_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4763{
4764 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4765 (__v2di) __B,
4766 (__v2di)
4767 _mm_setzero_di (),
4768 (__mmask8) __U);
4769}
4770
4771static __inline__ __m256i __DEFAULT_FN_ATTRS
4772_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4773{
4774 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4775 (__v4di) __B,
4776 (__v4di)
4777 _mm256_setzero_si256 (),
4778 (__mmask8) -1);
4779}
4780
4781static __inline__ __m256i __DEFAULT_FN_ATTRS
4782_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4783 __m256i __B)
4784{
4785 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4786 (__v4di) __B,
4787 (__v4di) __W,
4788 (__mmask8) __U);
4789}
4790
4791static __inline__ __m256i __DEFAULT_FN_ATTRS
4792_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4793{
4794 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4795 (__v4di) __B,
4796 (__v4di)
4797 _mm256_setzero_si256 (),
4798 (__mmask8) __U);
4799}
4800
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004801static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004802_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004803{
Craig Topper66b2fd12016-10-31 04:30:51 +00004804 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4805 (__v2di)_mm_sllv_epi64(__X, __Y),
4806 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004807}
4808
4809static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004810_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004811{
Craig Topper66b2fd12016-10-31 04:30:51 +00004812 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4813 (__v2di)_mm_sllv_epi64(__X, __Y),
4814 (__v2di)_mm_setzero_di());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004815}
4816
4817static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004818_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004819{
Craig Topper66b2fd12016-10-31 04:30:51 +00004820 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4821 (__v4di)_mm256_sllv_epi64(__X, __Y),
4822 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004823}
4824
4825static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004826_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004827{
Craig Topper66b2fd12016-10-31 04:30:51 +00004828 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4829 (__v4di)_mm256_sllv_epi64(__X, __Y),
4830 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004831}
4832
4833static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004834_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004835{
Craig Topper66b2fd12016-10-31 04:30:51 +00004836 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4837 (__v4si)_mm_sllv_epi32(__X, __Y),
4838 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004839}
4840
4841static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004842_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004843{
Craig Topper66b2fd12016-10-31 04:30:51 +00004844 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4845 (__v4si)_mm_sllv_epi32(__X, __Y),
4846 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004847}
4848
4849static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004850_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004851{
Craig Topper66b2fd12016-10-31 04:30:51 +00004852 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4853 (__v8si)_mm256_sllv_epi32(__X, __Y),
4854 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004855}
4856
4857static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004858_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004859{
Craig Topper66b2fd12016-10-31 04:30:51 +00004860 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4861 (__v8si)_mm256_sllv_epi32(__X, __Y),
4862 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004863}
4864
4865static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004866_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004867{
Craig Topper66b2fd12016-10-31 04:30:51 +00004868 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4869 (__v2di)_mm_srlv_epi64(__X, __Y),
4870 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004871}
4872
4873static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004874_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004875{
Craig Topper66b2fd12016-10-31 04:30:51 +00004876 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4877 (__v2di)_mm_srlv_epi64(__X, __Y),
4878 (__v2di)_mm_setzero_di());
4879}
4880
4881static __inline__ __m256i __DEFAULT_FN_ATTRS
4882_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4883{
4884 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4885 (__v4di)_mm256_srlv_epi64(__X, __Y),
4886 (__v4di)__W);
4887}
4888
4889static __inline__ __m256i __DEFAULT_FN_ATTRS
4890_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4891{
4892 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4893 (__v4di)_mm256_srlv_epi64(__X, __Y),
4894 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004895}
4896
4897static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004898_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004899{
Craig Topper66b2fd12016-10-31 04:30:51 +00004900 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4901 (__v4si)_mm_srlv_epi32(__X, __Y),
4902 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004903}
4904
4905static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004906_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004907{
Craig Topper66b2fd12016-10-31 04:30:51 +00004908 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4909 (__v4si)_mm_srlv_epi32(__X, __Y),
4910 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004911}
4912
4913static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004914_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004915{
Craig Topper66b2fd12016-10-31 04:30:51 +00004916 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4917 (__v8si)_mm256_srlv_epi32(__X, __Y),
4918 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004919}
4920
4921static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004922_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004923{
Craig Topper66b2fd12016-10-31 04:30:51 +00004924 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4925 (__v8si)_mm256_srlv_epi32(__X, __Y),
4926 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004927}
4928
4929static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004930_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004931{
Craig Topper66b2fd12016-10-31 04:30:51 +00004932 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4933 (__v4si)_mm_srl_epi32(__A, __B),
4934 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004935}
4936
4937static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004938_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004939{
Craig Topper66b2fd12016-10-31 04:30:51 +00004940 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4941 (__v4si)_mm_srl_epi32(__A, __B),
4942 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004943}
4944
4945static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004946_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004947{
Craig Topper66b2fd12016-10-31 04:30:51 +00004948 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4949 (__v8si)_mm256_srl_epi32(__A, __B),
4950 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004951}
4952
4953static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004954_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004955{
Craig Topper66b2fd12016-10-31 04:30:51 +00004956 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4957 (__v8si)_mm256_srl_epi32(__A, __B),
4958 (__v8si)_mm256_setzero_si256());
4959}
4960
4961static __inline__ __m128i __DEFAULT_FN_ATTRS
4962_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4963{
4964 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4965 (__v4si)_mm_srli_epi32(__A, __B),
4966 (__v4si)__W);
4967}
4968
4969static __inline__ __m128i __DEFAULT_FN_ATTRS
4970_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4971{
4972 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4973 (__v4si)_mm_srli_epi32(__A, __B),
4974 (__v4si)_mm_setzero_si128());
4975}
4976
4977static __inline__ __m256i __DEFAULT_FN_ATTRS
4978_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4979{
4980 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4981 (__v8si)_mm256_srli_epi32(__A, __B),
4982 (__v8si)__W);
4983}
4984
4985static __inline__ __m256i __DEFAULT_FN_ATTRS
4986_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4987{
4988 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4989 (__v8si)_mm256_srli_epi32(__A, __B),
4990 (__v8si)_mm256_setzero_si256());
4991}
4992
4993static __inline__ __m128i __DEFAULT_FN_ATTRS
4994_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4995{
4996 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4997 (__v2di)_mm_srl_epi64(__A, __B),
4998 (__v2di)__W);
4999}
5000
5001static __inline__ __m128i __DEFAULT_FN_ATTRS
5002_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
5003{
5004 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5005 (__v2di)_mm_srl_epi64(__A, __B),
5006 (__v2di)_mm_setzero_di());
5007}
5008
5009static __inline__ __m256i __DEFAULT_FN_ATTRS
5010_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
5011{
5012 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5013 (__v4di)_mm256_srl_epi64(__A, __B),
5014 (__v4di)__W);
5015}
5016
5017static __inline__ __m256i __DEFAULT_FN_ATTRS
5018_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
5019{
5020 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5021 (__v4di)_mm256_srl_epi64(__A, __B),
5022 (__v4di)_mm256_setzero_si256());
5023}
5024
5025static __inline__ __m128i __DEFAULT_FN_ATTRS
5026_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
5027{
5028 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5029 (__v2di)_mm_srli_epi64(__A, __B),
5030 (__v2di)__W);
5031}
5032
5033static __inline__ __m128i __DEFAULT_FN_ATTRS
5034_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
5035{
5036 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5037 (__v2di)_mm_srli_epi64(__A, __B),
5038 (__v2di)_mm_setzero_di());
5039}
5040
5041static __inline__ __m256i __DEFAULT_FN_ATTRS
5042_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
5043{
5044 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5045 (__v4di)_mm256_srli_epi64(__A, __B),
5046 (__v4di)__W);
5047}
5048
5049static __inline__ __m256i __DEFAULT_FN_ATTRS
5050_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
5051{
5052 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5053 (__v4di)_mm256_srli_epi64(__A, __B),
5054 (__v4di)_mm256_setzero_si256());
5055}
5056
5057static __inline__ __m128i __DEFAULT_FN_ATTRS
5058_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
5059{
5060 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5061 (__v4si)_mm_srav_epi32(__X, __Y),
5062 (__v4si)__W);
5063}
5064
5065static __inline__ __m128i __DEFAULT_FN_ATTRS
5066_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
5067{
5068 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5069 (__v4si)_mm_srav_epi32(__X, __Y),
5070 (__v4si)_mm_setzero_si128());
5071}
5072
5073static __inline__ __m256i __DEFAULT_FN_ATTRS
5074_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
5075{
5076 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5077 (__v8si)_mm256_srav_epi32(__X, __Y),
5078 (__v8si)__W);
5079}
5080
5081static __inline__ __m256i __DEFAULT_FN_ATTRS
5082_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
5083{
5084 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5085 (__v8si)_mm256_srav_epi32(__X, __Y),
5086 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005087}
5088
5089static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005090_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005091{
Craig Topper5e0709d2016-11-13 07:26:34 +00005092 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005093}
5094
5095static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005096_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005097{
Craig Topper5e0709d2016-11-13 07:26:34 +00005098 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5099 (__v2di)_mm_srav_epi64(__X, __Y),
5100 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005101}
5102
5103static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005104_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005105{
Craig Topper5e0709d2016-11-13 07:26:34 +00005106 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5107 (__v2di)_mm_srav_epi64(__X, __Y),
5108 (__v2di)_mm_setzero_di());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005109}
5110
5111static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005112_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005113{
Craig Topper5e0709d2016-11-13 07:26:34 +00005114 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005115}
5116
5117static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005118_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005119{
Craig Topper5e0709d2016-11-13 07:26:34 +00005120 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5121 (__v4di)_mm256_srav_epi64(__X, __Y),
5122 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005123}
5124
5125static __inline__ __m256i __DEFAULT_FN_ATTRS
5126_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5127{
Craig Topper5e0709d2016-11-13 07:26:34 +00005128 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5129 (__v4di)_mm256_srav_epi64(__X, __Y),
5130 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005131}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005132
Michael Zuckermane6542002016-05-23 08:01:48 +00005133static __inline__ __m128i __DEFAULT_FN_ATTRS
5134_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
5135{
Igor Bregeraadb8762016-06-08 13:59:20 +00005136 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5137 (__v4si) __A,
5138 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005139}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005140
Michael Zuckermane6542002016-05-23 08:01:48 +00005141static __inline__ __m128i __DEFAULT_FN_ATTRS
5142_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
5143{
Igor Bregeraadb8762016-06-08 13:59:20 +00005144 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5145 (__v4si) __A,
5146 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005147}
5148
5149
5150static __inline__ __m256i __DEFAULT_FN_ATTRS
5151_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
5152{
Igor Bregeraadb8762016-06-08 13:59:20 +00005153 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5154 (__v8si) __A,
5155 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005156}
5157
5158static __inline__ __m256i __DEFAULT_FN_ATTRS
5159_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
5160{
Igor Bregeraadb8762016-06-08 13:59:20 +00005161 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5162 (__v8si) __A,
5163 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005164}
5165
5166static __inline__ __m128i __DEFAULT_FN_ATTRS
5167_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5168{
5169 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5170 (__v4si) __W,
5171 (__mmask8)
5172 __U);
5173}
5174
5175static __inline__ __m128i __DEFAULT_FN_ATTRS
5176_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5177{
5178 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5179 (__v4si)
5180 _mm_setzero_si128 (),
5181 (__mmask8)
5182 __U);
5183}
5184
5185static __inline__ __m256i __DEFAULT_FN_ATTRS
5186_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5187{
5188 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5189 (__v8si) __W,
5190 (__mmask8)
5191 __U);
5192}
5193
5194static __inline__ __m256i __DEFAULT_FN_ATTRS
5195_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5196{
5197 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5198 (__v8si)
5199 _mm256_setzero_si256 (),
5200 (__mmask8)
5201 __U);
5202}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005203
5204static __inline__ void __DEFAULT_FN_ATTRS
5205_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5206{
5207 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5208 (__v4si) __A,
5209 (__mmask8) __U);
5210}
5211
5212static __inline__ void __DEFAULT_FN_ATTRS
5213_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5214{
5215 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5216 (__v8si) __A,
5217 (__mmask8) __U);
5218}
5219
5220static __inline__ __m128i __DEFAULT_FN_ATTRS
5221_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5222{
Igor Bregeraadb8762016-06-08 13:59:20 +00005223 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5224 (__v2di) __A,
5225 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005226}
5227
5228static __inline__ __m128i __DEFAULT_FN_ATTRS
5229_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5230{
Igor Bregeraadb8762016-06-08 13:59:20 +00005231 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5232 (__v2di) __A,
5233 (__v2di) _mm_setzero_di ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005234}
5235
5236static __inline__ __m256i __DEFAULT_FN_ATTRS
5237_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5238{
Igor Bregeraadb8762016-06-08 13:59:20 +00005239 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5240 (__v4di) __A,
5241 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005242}
5243
5244static __inline__ __m256i __DEFAULT_FN_ATTRS
5245_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5246{
Igor Bregeraadb8762016-06-08 13:59:20 +00005247 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5248 (__v4di) __A,
5249 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005250}
5251
5252static __inline__ __m128i __DEFAULT_FN_ATTRS
5253_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5254{
5255 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5256 (__v2di) __W,
5257 (__mmask8)
5258 __U);
5259}
5260
5261static __inline__ __m128i __DEFAULT_FN_ATTRS
5262_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5263{
5264 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5265 (__v2di)
5266 _mm_setzero_di (),
5267 (__mmask8)
5268 __U);
5269}
5270
5271static __inline__ __m256i __DEFAULT_FN_ATTRS
5272_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5273{
5274 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5275 (__v4di) __W,
5276 (__mmask8)
5277 __U);
5278}
5279
5280static __inline__ __m256i __DEFAULT_FN_ATTRS
5281_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5282{
5283 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5284 (__v4di)
5285 _mm256_setzero_si256 (),
5286 (__mmask8)
5287 __U);
5288}
5289
5290static __inline__ void __DEFAULT_FN_ATTRS
5291_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5292{
5293 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5294 (__v2di) __A,
5295 (__mmask8) __U);
5296}
5297
5298static __inline__ void __DEFAULT_FN_ATTRS
5299_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5300{
5301 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5302 (__v4di) __A,
5303 (__mmask8) __U);
5304}
5305
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005306static __inline__ __m128d __DEFAULT_FN_ATTRS
5307_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5308{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005309 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5310 (__v2df)_mm_movedup_pd(__A),
5311 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005312}
5313
5314static __inline__ __m128d __DEFAULT_FN_ATTRS
5315_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5316{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005317 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5318 (__v2df)_mm_movedup_pd(__A),
5319 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005320}
5321
5322static __inline__ __m256d __DEFAULT_FN_ATTRS
5323_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5324{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005325 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5326 (__v4df)_mm256_movedup_pd(__A),
5327 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005328}
5329
5330static __inline__ __m256d __DEFAULT_FN_ATTRS
5331_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5332{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005333 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5334 (__v4df)_mm256_movedup_pd(__A),
5335 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005336}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005337
Jina Nahias3ad702a2017-09-19 11:00:27 +00005338static __inline__ __m128i __DEFAULT_FN_ATTRS
5339_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5340{
5341 return (__m128i)__builtin_ia32_selectd_128(__M,
5342 (__v4si) _mm_set1_epi32(__A),
5343 (__v4si)__O);
5344}
Michael Zuckerman912be162016-03-07 08:29:10 +00005345
Jina Nahias3ad702a2017-09-19 11:00:27 +00005346static __inline__ __m128i __DEFAULT_FN_ATTRS
5347_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5348{
5349 return (__m128i)__builtin_ia32_selectd_128(__M,
5350 (__v4si) _mm_set1_epi32(__A),
5351 (__v4si)_mm_setzero_si128());
5352}
Michael Zuckerman912be162016-03-07 08:29:10 +00005353
Jina Nahias3ad702a2017-09-19 11:00:27 +00005354static __inline__ __m256i __DEFAULT_FN_ATTRS
5355_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5356{
5357 return (__m256i)__builtin_ia32_selectd_256(__M,
5358 (__v8si) _mm256_set1_epi32(__A),
5359 (__v8si)__O);
5360}
Michael Zuckerman912be162016-03-07 08:29:10 +00005361
Jina Nahias3ad702a2017-09-19 11:00:27 +00005362static __inline__ __m256i __DEFAULT_FN_ATTRS
5363_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5364{
5365 return (__m256i)__builtin_ia32_selectd_256(__M,
5366 (__v8si) _mm256_set1_epi32(__A),
5367 (__v8si)_mm256_setzero_si256());
5368}
Michael Zuckerman912be162016-03-07 08:29:10 +00005369
Michael Zuckerman912be162016-03-07 08:29:10 +00005370
5371static __inline__ __m128i __DEFAULT_FN_ATTRS
5372_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5373{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005374 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005375 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005376 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005377}
5378
5379static __inline__ __m128i __DEFAULT_FN_ATTRS
5380_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5381{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005382 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005383 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005384 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005385}
5386
5387static __inline__ __m256i __DEFAULT_FN_ATTRS
5388_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5389{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005390 return (__m256i) __builtin_ia32_selectq_256(__M,
5391 (__v4di) _mm256_set1_epi64x(__A),
5392 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005393}
5394
5395static __inline__ __m256i __DEFAULT_FN_ATTRS
5396_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5397{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005398 return (__m256i) __builtin_ia32_selectq_256(__M,
5399 (__v4di) _mm256_set1_epi64x(__A),
5400 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005401}
Michael Zuckermandef78752016-03-28 12:23:09 +00005402
Craig Topperd2661882016-05-17 04:41:48 +00005403#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5404 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5405 (__v2df)(__m128d)(B), \
5406 (__v2di)(__m128i)(C), (int)(imm), \
5407 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005408
Craig Topperd2661882016-05-17 04:41:48 +00005409#define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5410 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5411 (__v2df)(__m128d)(B), \
5412 (__v2di)(__m128i)(C), (int)(imm), \
5413 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005414
Craig Topperd2661882016-05-17 04:41:48 +00005415#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5416 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5417 (__v2df)(__m128d)(B), \
5418 (__v2di)(__m128i)(C), \
5419 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005420
Craig Topperd2661882016-05-17 04:41:48 +00005421#define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5422 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5423 (__v4df)(__m256d)(B), \
5424 (__v4di)(__m256i)(C), (int)(imm), \
5425 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005426
Craig Topperd2661882016-05-17 04:41:48 +00005427#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5428 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5429 (__v4df)(__m256d)(B), \
5430 (__v4di)(__m256i)(C), (int)(imm), \
5431 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005432
Craig Topperd2661882016-05-17 04:41:48 +00005433#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5434 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5435 (__v4df)(__m256d)(B), \
5436 (__v4di)(__m256i)(C), \
5437 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005438
Craig Topperd2661882016-05-17 04:41:48 +00005439#define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5440 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5441 (__v4sf)(__m128)(B), \
5442 (__v4si)(__m128i)(C), (int)(imm), \
5443 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005444
Craig Topperd2661882016-05-17 04:41:48 +00005445#define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5446 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5447 (__v4sf)(__m128)(B), \
5448 (__v4si)(__m128i)(C), (int)(imm), \
5449 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005450
Craig Topperd2661882016-05-17 04:41:48 +00005451#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5452 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5453 (__v4sf)(__m128)(B), \
5454 (__v4si)(__m128i)(C), (int)(imm), \
5455 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005456
Craig Topperd2661882016-05-17 04:41:48 +00005457#define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5458 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5459 (__v8sf)(__m256)(B), \
5460 (__v8si)(__m256i)(C), (int)(imm), \
5461 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005462
Craig Topperd2661882016-05-17 04:41:48 +00005463#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5464 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5465 (__v8sf)(__m256)(B), \
5466 (__v8si)(__m256i)(C), (int)(imm), \
5467 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005468
Craig Topperd2661882016-05-17 04:41:48 +00005469#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5470 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5471 (__v8sf)(__m256)(B), \
5472 (__v8si)(__m256i)(C), (int)(imm), \
5473 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005474
5475static __inline__ __m128d __DEFAULT_FN_ATTRS
5476_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5477{
5478 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5479 (__v2df) __W,
5480 (__mmask8) __U);
5481}
5482
5483static __inline__ __m128d __DEFAULT_FN_ATTRS
5484_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5485{
5486 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5487 (__v2df)
5488 _mm_setzero_pd (),
5489 (__mmask8) __U);
5490}
5491
5492static __inline__ __m256d __DEFAULT_FN_ATTRS
5493_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5494{
5495 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5496 (__v4df) __W,
5497 (__mmask8) __U);
5498}
5499
5500static __inline__ __m256d __DEFAULT_FN_ATTRS
5501_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5502{
5503 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5504 (__v4df)
5505 _mm256_setzero_pd (),
5506 (__mmask8) __U);
5507}
5508
5509static __inline__ __m128 __DEFAULT_FN_ATTRS
5510_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5511{
5512 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5513 (__v4sf) __W,
5514 (__mmask8) __U);
5515}
5516
5517static __inline__ __m128 __DEFAULT_FN_ATTRS
5518_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5519{
5520 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5521 (__v4sf)
5522 _mm_setzero_ps (),
5523 (__mmask8) __U);
5524}
5525
5526static __inline__ __m256 __DEFAULT_FN_ATTRS
5527_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5528{
5529 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5530 (__v8sf) __W,
5531 (__mmask8) __U);
5532}
5533
5534static __inline__ __m256 __DEFAULT_FN_ATTRS
5535_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5536{
5537 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5538 (__v8sf)
5539 _mm256_setzero_ps (),
5540 (__mmask8) __U);
5541}
5542
5543static __inline__ __m128i __DEFAULT_FN_ATTRS
5544_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5545{
5546 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5547 (__v2di) __W,
5548 (__mmask8) __U);
5549}
5550
5551static __inline__ __m128i __DEFAULT_FN_ATTRS
5552_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5553{
5554 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5555 (__v2di)
5556 _mm_setzero_si128 (),
5557 (__mmask8) __U);
5558}
5559
5560static __inline__ __m256i __DEFAULT_FN_ATTRS
5561_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5562{
5563 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5564 (__v4di) __W,
5565 (__mmask8) __U);
5566}
5567
5568static __inline__ __m256i __DEFAULT_FN_ATTRS
5569_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5570{
5571 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5572 (__v4di)
5573 _mm256_setzero_si256 (),
5574 (__mmask8) __U);
5575}
5576
5577static __inline__ __m128i __DEFAULT_FN_ATTRS
5578_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5579{
5580 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5581 (__v4si) __W,
5582 (__mmask8) __U);
5583}
5584
5585static __inline__ __m128i __DEFAULT_FN_ATTRS
5586_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5587{
5588 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5589 (__v4si)
5590 _mm_setzero_si128 (),
5591 (__mmask8) __U);
5592}
5593
5594static __inline__ __m256i __DEFAULT_FN_ATTRS
5595_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5596{
5597 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5598 (__v8si) __W,
5599 (__mmask8) __U);
5600}
5601
5602static __inline__ __m256i __DEFAULT_FN_ATTRS
5603_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5604{
5605 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5606 (__v8si)
5607 _mm256_setzero_si256 (),
5608 (__mmask8) __U);
5609}
5610
5611static __inline__ __m128d __DEFAULT_FN_ATTRS
5612_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5613{
5614 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5615 (__v2df) __W,
5616 (__mmask8) __U);
5617}
5618
5619static __inline__ __m128d __DEFAULT_FN_ATTRS
5620_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5621{
5622 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5623 (__v2df)
5624 _mm_setzero_pd (),
5625 (__mmask8) __U);
5626}
5627
5628static __inline__ __m256d __DEFAULT_FN_ATTRS
5629_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5630{
5631 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5632 (__v4df) __W,
5633 (__mmask8) __U);
5634}
5635
5636static __inline__ __m256d __DEFAULT_FN_ATTRS
5637_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5638{
5639 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5640 (__v4df)
5641 _mm256_setzero_pd (),
5642 (__mmask8) __U);
5643}
5644
5645static __inline__ __m128 __DEFAULT_FN_ATTRS
5646_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5647{
5648 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5649 (__v4sf) __W,
5650 (__mmask8) __U);
5651}
5652
5653static __inline__ __m128 __DEFAULT_FN_ATTRS
5654_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5655{
5656 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5657 (__v4sf)
5658 _mm_setzero_ps (),
5659 (__mmask8) __U);
5660}
5661
5662static __inline__ __m256 __DEFAULT_FN_ATTRS
5663_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5664{
5665 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5666 (__v8sf) __W,
5667 (__mmask8) __U);
5668}
5669
5670static __inline__ __m256 __DEFAULT_FN_ATTRS
5671_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5672{
5673 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5674 (__v8sf)
5675 _mm256_setzero_ps (),
5676 (__mmask8) __U);
5677}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005678
5679static __inline__ void __DEFAULT_FN_ATTRS
5680_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5681{
5682 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5683 (__v2df) __A,
5684 (__mmask8) __U);
5685}
5686
5687static __inline__ void __DEFAULT_FN_ATTRS
5688_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5689{
5690 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5691 (__v4df) __A,
5692 (__mmask8) __U);
5693}
5694
5695static __inline__ void __DEFAULT_FN_ATTRS
5696_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5697{
5698 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5699 (__v4sf) __A,
5700 (__mmask8) __U);
5701}
5702
5703static __inline__ void __DEFAULT_FN_ATTRS
5704_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5705{
5706 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5707 (__v8sf) __A,
5708 (__mmask8) __U);
5709}
5710
5711static __inline__ void __DEFAULT_FN_ATTRS
5712_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5713{
5714 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5715 (__v2di) __A,
5716 (__mmask8) __U);
5717}
5718
5719static __inline__ void __DEFAULT_FN_ATTRS
5720_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5721{
5722 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5723 (__v4di) __A,
5724 (__mmask8) __U);
5725}
5726
5727static __inline__ void __DEFAULT_FN_ATTRS
5728_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5729{
5730 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5731 (__v4si) __A,
5732 (__mmask8) __U);
5733}
5734
5735static __inline__ void __DEFAULT_FN_ATTRS
5736_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5737{
5738 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5739 (__v8si) __A,
5740 (__mmask8) __U);
5741}
5742
5743static __inline__ void __DEFAULT_FN_ATTRS
5744_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5745{
5746 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5747 (__v2df) __A,
5748 (__mmask8) __U);
5749}
5750
5751static __inline__ void __DEFAULT_FN_ATTRS
5752_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5753{
5754 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5755 (__v4df) __A,
5756 (__mmask8) __U);
5757}
5758
5759static __inline__ void __DEFAULT_FN_ATTRS
5760_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5761{
5762 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5763 (__v4sf) __A,
5764 (__mmask8) __U);
5765}
5766
5767static __inline__ void __DEFAULT_FN_ATTRS
5768_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5769{
5770 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5771 (__v8sf) __A,
5772 (__mmask8) __U);
5773}
5774
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005775
5776static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005777_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005778{
Craig Topper79f53ca2016-06-23 06:36:42 +00005779 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5780 (__v2df)_mm_unpackhi_pd(__A, __B),
5781 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005782}
5783
5784static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005785_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005786{
Craig Topper79f53ca2016-06-23 06:36:42 +00005787 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5788 (__v2df)_mm_unpackhi_pd(__A, __B),
5789 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005790}
5791
5792static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005793_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005794{
Craig Topper79f53ca2016-06-23 06:36:42 +00005795 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5796 (__v4df)_mm256_unpackhi_pd(__A, __B),
5797 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005798}
5799
5800static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005801_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005802{
Craig Topper79f53ca2016-06-23 06:36:42 +00005803 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5804 (__v4df)_mm256_unpackhi_pd(__A, __B),
5805 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005806}
5807
5808static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005809_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005810{
Craig Topper79f53ca2016-06-23 06:36:42 +00005811 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5812 (__v4sf)_mm_unpackhi_ps(__A, __B),
5813 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005814}
5815
5816static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005817_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005818{
Craig Topper79f53ca2016-06-23 06:36:42 +00005819 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5820 (__v4sf)_mm_unpackhi_ps(__A, __B),
5821 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005822}
5823
5824static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005825_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005826{
Craig Topper79f53ca2016-06-23 06:36:42 +00005827 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5828 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5829 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005830}
5831
5832static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005833_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005834{
Craig Topper79f53ca2016-06-23 06:36:42 +00005835 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5836 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5837 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005838}
5839
5840static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005841_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005842{
Craig Topper79f53ca2016-06-23 06:36:42 +00005843 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5844 (__v2df)_mm_unpacklo_pd(__A, __B),
5845 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005846}
5847
5848static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005849_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005850{
Craig Topper79f53ca2016-06-23 06:36:42 +00005851 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5852 (__v2df)_mm_unpacklo_pd(__A, __B),
5853 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005854}
5855
5856static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005857_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005858{
Craig Topper79f53ca2016-06-23 06:36:42 +00005859 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5860 (__v4df)_mm256_unpacklo_pd(__A, __B),
5861 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005862}
5863
5864static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005865_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005866{
Craig Topper79f53ca2016-06-23 06:36:42 +00005867 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5868 (__v4df)_mm256_unpacklo_pd(__A, __B),
5869 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005870}
5871
5872static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005873_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005874{
Craig Topper79f53ca2016-06-23 06:36:42 +00005875 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5876 (__v4sf)_mm_unpacklo_ps(__A, __B),
5877 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005878}
5879
5880static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005881_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005882{
Craig Topper79f53ca2016-06-23 06:36:42 +00005883 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5884 (__v4sf)_mm_unpacklo_ps(__A, __B),
5885 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005886}
5887
5888static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005889_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005890{
Craig Topper79f53ca2016-06-23 06:36:42 +00005891 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5892 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5893 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005894}
5895
5896static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005897_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005898{
Craig Topper79f53ca2016-06-23 06:36:42 +00005899 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5900 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5901 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005902}
5903
5904static __inline__ __m128d __DEFAULT_FN_ATTRS
5905_mm_rcp14_pd (__m128d __A)
5906{
5907 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5908 (__v2df)
5909 _mm_setzero_pd (),
5910 (__mmask8) -1);
5911}
5912
5913static __inline__ __m128d __DEFAULT_FN_ATTRS
5914_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5915{
5916 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5917 (__v2df) __W,
5918 (__mmask8) __U);
5919}
5920
5921static __inline__ __m128d __DEFAULT_FN_ATTRS
5922_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5923{
5924 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5925 (__v2df)
5926 _mm_setzero_pd (),
5927 (__mmask8) __U);
5928}
5929
5930static __inline__ __m256d __DEFAULT_FN_ATTRS
5931_mm256_rcp14_pd (__m256d __A)
5932{
5933 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5934 (__v4df)
5935 _mm256_setzero_pd (),
5936 (__mmask8) -1);
5937}
5938
5939static __inline__ __m256d __DEFAULT_FN_ATTRS
5940_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5941{
5942 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5943 (__v4df) __W,
5944 (__mmask8) __U);
5945}
5946
5947static __inline__ __m256d __DEFAULT_FN_ATTRS
5948_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5949{
5950 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5951 (__v4df)
5952 _mm256_setzero_pd (),
5953 (__mmask8) __U);
5954}
5955
5956static __inline__ __m128 __DEFAULT_FN_ATTRS
5957_mm_rcp14_ps (__m128 __A)
5958{
5959 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5960 (__v4sf)
5961 _mm_setzero_ps (),
5962 (__mmask8) -1);
5963}
5964
5965static __inline__ __m128 __DEFAULT_FN_ATTRS
5966_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5967{
5968 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5969 (__v4sf) __W,
5970 (__mmask8) __U);
5971}
5972
5973static __inline__ __m128 __DEFAULT_FN_ATTRS
5974_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5975{
5976 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5977 (__v4sf)
5978 _mm_setzero_ps (),
5979 (__mmask8) __U);
5980}
5981
5982static __inline__ __m256 __DEFAULT_FN_ATTRS
5983_mm256_rcp14_ps (__m256 __A)
5984{
5985 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5986 (__v8sf)
5987 _mm256_setzero_ps (),
5988 (__mmask8) -1);
5989}
5990
5991static __inline__ __m256 __DEFAULT_FN_ATTRS
5992_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5993{
5994 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5995 (__v8sf) __W,
5996 (__mmask8) __U);
5997}
5998
5999static __inline__ __m256 __DEFAULT_FN_ATTRS
6000_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
6001{
6002 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6003 (__v8sf)
6004 _mm256_setzero_ps (),
6005 (__mmask8) __U);
6006}
6007
Craig Topperd2661882016-05-17 04:41:48 +00006008#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006009 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6010 (__v2df)_mm_permute_pd((X), (C)), \
6011 (__v2df)(__m128d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006012
Craig Topperd2661882016-05-17 04:41:48 +00006013#define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006014 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6015 (__v2df)_mm_permute_pd((X), (C)), \
6016 (__v2df)_mm_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006017
Craig Topperd2661882016-05-17 04:41:48 +00006018#define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006019 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6020 (__v4df)_mm256_permute_pd((X), (C)), \
6021 (__v4df)(__m256d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006022
Craig Topperd2661882016-05-17 04:41:48 +00006023#define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006024 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6025 (__v4df)_mm256_permute_pd((X), (C)), \
6026 (__v4df)_mm256_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006027
Craig Topperd2661882016-05-17 04:41:48 +00006028#define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006029 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6030 (__v4sf)_mm_permute_ps((X), (C)), \
6031 (__v4sf)(__m128)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006032
Craig Topperd2661882016-05-17 04:41:48 +00006033#define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006034 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6035 (__v4sf)_mm_permute_ps((X), (C)), \
6036 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006037
Craig Topperd2661882016-05-17 04:41:48 +00006038#define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006039 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6040 (__v8sf)_mm256_permute_ps((X), (C)), \
6041 (__v8sf)(__m256)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006042
Craig Topperd2661882016-05-17 04:41:48 +00006043#define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006044 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6045 (__v8sf)_mm256_permute_ps((X), (C)), \
6046 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006047
6048static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006049_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006050{
Craig Topper5391c982016-12-10 20:27:39 +00006051 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6052 (__v2df)_mm_permutevar_pd(__A, __C),
6053 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006054}
6055
6056static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006057_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006058{
Craig Topper5391c982016-12-10 20:27:39 +00006059 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6060 (__v2df)_mm_permutevar_pd(__A, __C),
6061 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006062}
6063
6064static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006065_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006066{
Craig Topper5391c982016-12-10 20:27:39 +00006067 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6068 (__v4df)_mm256_permutevar_pd(__A, __C),
6069 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006070}
6071
6072static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006073_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006074{
Craig Topper5391c982016-12-10 20:27:39 +00006075 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6076 (__v4df)_mm256_permutevar_pd(__A, __C),
6077 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006078}
6079
6080static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006081_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006082{
Craig Topper5391c982016-12-10 20:27:39 +00006083 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6084 (__v4sf)_mm_permutevar_ps(__A, __C),
6085 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006086}
6087
6088static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006089_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006090{
Craig Topper5391c982016-12-10 20:27:39 +00006091 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6092 (__v4sf)_mm_permutevar_ps(__A, __C),
6093 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006094}
6095
6096static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006097_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006098{
Craig Topper5391c982016-12-10 20:27:39 +00006099 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6100 (__v8sf)_mm256_permutevar_ps(__A, __C),
6101 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006102}
6103
6104static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006105_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006106{
Craig Topper5391c982016-12-10 20:27:39 +00006107 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6108 (__v8sf)_mm256_permutevar_ps(__A, __C),
6109 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006110}
6111
Michael Zuckerman07525092016-04-11 10:22:07 +00006112static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6113_mm_test_epi32_mask (__m128i __A, __m128i __B)
6114{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006115 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006116}
6117
6118static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6119_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6120{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006121 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6122 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006123}
6124
6125static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6126_mm256_test_epi32_mask (__m256i __A, __m256i __B)
6127{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006128 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
6129 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006130}
6131
6132static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6133_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6134{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006135 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6136 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006137}
6138
6139static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6140_mm_test_epi64_mask (__m128i __A, __m128i __B)
6141{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006142 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006143}
6144
6145static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6146_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6147{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006148 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6149 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006150}
6151
6152static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6153_mm256_test_epi64_mask (__m256i __A, __m256i __B)
6154{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006155 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
6156 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006157}
6158
6159static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6160_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6161{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006162 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6163 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006164}
6165
6166static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6167_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6168{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006169 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006170}
6171
6172static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6173_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6174{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006175 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6176 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006177}
6178
6179static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6180_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6181{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006182 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6183 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006184}
6185
6186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6187_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6188{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006189 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6190 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006191}
6192
6193static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6194_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6195{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006196 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006197}
6198
6199static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6200_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6201{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006202 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6203 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006204}
6205
6206static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6207_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6208{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006209 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6210 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006211}
6212
6213static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6214_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6215{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006216 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6217 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006218}
6219
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006220static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006221_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006222{
Craig Topper79f53ca2016-06-23 06:36:42 +00006223 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6224 (__v4si)_mm_unpackhi_epi32(__A, __B),
6225 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006226}
6227
6228static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006229_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006230{
Craig Topper79f53ca2016-06-23 06:36:42 +00006231 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6232 (__v4si)_mm_unpackhi_epi32(__A, __B),
6233 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006234}
6235
6236static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006237_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006238{
Craig Topper79f53ca2016-06-23 06:36:42 +00006239 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6240 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6241 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006242}
6243
6244static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006245_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006246{
Craig Topper79f53ca2016-06-23 06:36:42 +00006247 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6248 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6249 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006250}
6251
6252static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006253_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006254{
Craig Topper79f53ca2016-06-23 06:36:42 +00006255 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6256 (__v2di)_mm_unpackhi_epi64(__A, __B),
6257 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006258}
6259
6260static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006261_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006262{
Craig Topper79f53ca2016-06-23 06:36:42 +00006263 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6264 (__v2di)_mm_unpackhi_epi64(__A, __B),
6265 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006266}
6267
6268static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006269_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006270{
Craig Topper79f53ca2016-06-23 06:36:42 +00006271 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6272 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6273 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006274}
6275
6276static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006277_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006278{
Craig Topper79f53ca2016-06-23 06:36:42 +00006279 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6280 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6281 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006282}
6283
6284static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006285_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006286{
Craig Topper79f53ca2016-06-23 06:36:42 +00006287 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6288 (__v4si)_mm_unpacklo_epi32(__A, __B),
6289 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006290}
6291
6292static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006293_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006294{
Craig Topper79f53ca2016-06-23 06:36:42 +00006295 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6296 (__v4si)_mm_unpacklo_epi32(__A, __B),
6297 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006298}
6299
6300static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006301_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006302{
Craig Topper79f53ca2016-06-23 06:36:42 +00006303 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6304 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6305 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006306}
6307
6308static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006309_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006310{
Craig Topper79f53ca2016-06-23 06:36:42 +00006311 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6312 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6313 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006314}
6315
6316static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006317_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006318{
Craig Topper79f53ca2016-06-23 06:36:42 +00006319 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6320 (__v2di)_mm_unpacklo_epi64(__A, __B),
6321 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006322}
6323
6324static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006325_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006326{
Craig Topper79f53ca2016-06-23 06:36:42 +00006327 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6328 (__v2di)_mm_unpacklo_epi64(__A, __B),
6329 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006330}
6331
6332static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006333_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006334{
Craig Topper79f53ca2016-06-23 06:36:42 +00006335 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6336 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6337 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006338}
6339
6340static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006341_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006342{
Craig Topper79f53ca2016-06-23 06:36:42 +00006343 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6344 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6345 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006346}
6347
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006348static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006349_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006350{
Craig Topper66b2fd12016-10-31 04:30:51 +00006351 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6352 (__v4si)_mm_sra_epi32(__A, __B),
6353 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006354}
6355
6356static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006357_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006358{
Craig Topper66b2fd12016-10-31 04:30:51 +00006359 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6360 (__v4si)_mm_sra_epi32(__A, __B),
6361 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006362}
6363
6364static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006365_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006366{
Craig Topper66b2fd12016-10-31 04:30:51 +00006367 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6368 (__v8si)_mm256_sra_epi32(__A, __B),
6369 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006370}
6371
6372static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006373_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006374{
Craig Topper66b2fd12016-10-31 04:30:51 +00006375 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6376 (__v8si)_mm256_sra_epi32(__A, __B),
6377 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006378}
6379
Craig Topper66b2fd12016-10-31 04:30:51 +00006380static __inline__ __m128i __DEFAULT_FN_ATTRS
6381_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6382{
6383 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6384 (__v4si)_mm_srai_epi32(__A, __B),
6385 (__v4si)__W);
6386}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006387
Craig Topper66b2fd12016-10-31 04:30:51 +00006388static __inline__ __m128i __DEFAULT_FN_ATTRS
6389_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6390{
6391 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6392 (__v4si)_mm_srai_epi32(__A, __B),
6393 (__v4si)_mm_setzero_si128());
6394}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006395
Craig Topper66b2fd12016-10-31 04:30:51 +00006396static __inline__ __m256i __DEFAULT_FN_ATTRS
6397_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6398{
6399 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6400 (__v8si)_mm256_srai_epi32(__A, __B),
6401 (__v8si)__W);
6402}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006403
Craig Topper66b2fd12016-10-31 04:30:51 +00006404static __inline__ __m256i __DEFAULT_FN_ATTRS
6405_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6406{
6407 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6408 (__v8si)_mm256_srai_epi32(__A, __B),
6409 (__v8si)_mm256_setzero_si256());
6410}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006411
6412static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006413_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006414{
Craig Topper1a441932016-11-12 07:16:59 +00006415 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006416}
6417
6418static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006419_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006420{
Craig Topper1a441932016-11-12 07:16:59 +00006421 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6422 (__v2di)_mm_sra_epi64(__A, __B), \
6423 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006424}
6425
6426static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006427_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006428{
Craig Topper1a441932016-11-12 07:16:59 +00006429 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6430 (__v2di)_mm_sra_epi64(__A, __B), \
6431 (__v2di)_mm_setzero_di());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006432}
6433
6434static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006435_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006436{
Craig Topper1a441932016-11-12 07:16:59 +00006437 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006438}
6439
6440static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006441_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006442{
Craig Topper1a441932016-11-12 07:16:59 +00006443 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6444 (__v4di)_mm256_sra_epi64(__A, __B), \
6445 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006446}
6447
6448static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006449_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006450{
Craig Topper1a441932016-11-12 07:16:59 +00006451 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6452 (__v4di)_mm256_sra_epi64(__A, __B), \
6453 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006454}
6455
Craig Topper1a441932016-11-12 07:16:59 +00006456static __inline__ __m128i __DEFAULT_FN_ATTRS
6457_mm_srai_epi64(__m128i __A, int __imm)
6458{
6459 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6460}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006461
Craig Topper1a441932016-11-12 07:16:59 +00006462static __inline__ __m128i __DEFAULT_FN_ATTRS
6463_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6464{
6465 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6466 (__v2di)_mm_srai_epi64(__A, __imm), \
6467 (__v2di)__W);
6468}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006469
Craig Topper1a441932016-11-12 07:16:59 +00006470static __inline__ __m128i __DEFAULT_FN_ATTRS
6471_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6472{
6473 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6474 (__v2di)_mm_srai_epi64(__A, __imm), \
6475 (__v2di)_mm_setzero_di());
6476}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006477
Craig Topper1a441932016-11-12 07:16:59 +00006478static __inline__ __m256i __DEFAULT_FN_ATTRS
6479_mm256_srai_epi64(__m256i __A, int __imm)
6480{
6481 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6482}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006483
Craig Topper1a441932016-11-12 07:16:59 +00006484static __inline__ __m256i __DEFAULT_FN_ATTRS
6485_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6486{
6487 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6488 (__v4di)_mm256_srai_epi64(__A, __imm), \
6489 (__v4di)__W);
6490}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006491
Craig Topper1a441932016-11-12 07:16:59 +00006492static __inline__ __m256i __DEFAULT_FN_ATTRS
6493_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6494{
6495 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6496 (__v4di)_mm256_srai_epi64(__A, __imm), \
6497 (__v4di)_mm256_setzero_si256());
6498}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006499
Craig Topperd2661882016-05-17 04:41:48 +00006500#define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6501 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6502 (__v4si)(__m128i)(B), \
6503 (__v4si)(__m128i)(C), (int)(imm), \
6504 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006505
Craig Topperd2661882016-05-17 04:41:48 +00006506#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6507 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6508 (__v4si)(__m128i)(B), \
6509 (__v4si)(__m128i)(C), (int)(imm), \
6510 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006511
Craig Topperd2661882016-05-17 04:41:48 +00006512#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6513 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6514 (__v4si)(__m128i)(B), \
6515 (__v4si)(__m128i)(C), (int)(imm), \
6516 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006517
Craig Topperd2661882016-05-17 04:41:48 +00006518#define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6519 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6520 (__v8si)(__m256i)(B), \
6521 (__v8si)(__m256i)(C), (int)(imm), \
6522 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006523
Craig Topperd2661882016-05-17 04:41:48 +00006524#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6525 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6526 (__v8si)(__m256i)(B), \
6527 (__v8si)(__m256i)(C), (int)(imm), \
6528 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006529
Craig Topperd2661882016-05-17 04:41:48 +00006530#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6531 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6532 (__v8si)(__m256i)(B), \
6533 (__v8si)(__m256i)(C), (int)(imm), \
6534 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006535
Craig Topperd2661882016-05-17 04:41:48 +00006536#define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6537 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6538 (__v2di)(__m128i)(B), \
6539 (__v2di)(__m128i)(C), (int)(imm), \
6540 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006541
Craig Topperd2661882016-05-17 04:41:48 +00006542#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6543 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6544 (__v2di)(__m128i)(B), \
6545 (__v2di)(__m128i)(C), (int)(imm), \
6546 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006547
Craig Topperd2661882016-05-17 04:41:48 +00006548#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6549 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6550 (__v2di)(__m128i)(B), \
6551 (__v2di)(__m128i)(C), (int)(imm), \
6552 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006553
Craig Topperd2661882016-05-17 04:41:48 +00006554#define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6555 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6556 (__v4di)(__m256i)(B), \
6557 (__v4di)(__m256i)(C), (int)(imm), \
6558 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006559
Craig Topperd2661882016-05-17 04:41:48 +00006560#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6561 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6562 (__v4di)(__m256i)(B), \
6563 (__v4di)(__m256i)(C), (int)(imm), \
6564 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006565
Craig Topperd2661882016-05-17 04:41:48 +00006566#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6567 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6568 (__v4di)(__m256i)(B), \
6569 (__v4di)(__m256i)(C), (int)(imm), \
6570 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006571
6572
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006573
Craig Topperd2661882016-05-17 04:41:48 +00006574#define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006575 (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \
6576 (__v8sf)(__m256)(B), \
6577 0 + ((((imm) >> 0) & 0x1) * 4), \
6578 1 + ((((imm) >> 0) & 0x1) * 4), \
6579 2 + ((((imm) >> 0) & 0x1) * 4), \
6580 3 + ((((imm) >> 0) & 0x1) * 4), \
6581 8 + ((((imm) >> 1) & 0x1) * 4), \
6582 9 + ((((imm) >> 1) & 0x1) * 4), \
6583 10 + ((((imm) >> 1) & 0x1) * 4), \
6584 11 + ((((imm) >> 1) & 0x1) * 4)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006585
Craig Topperd2661882016-05-17 04:41:48 +00006586#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006587 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6588 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6589 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006590
Craig Topperd2661882016-05-17 04:41:48 +00006591#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006592 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6593 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6594 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006595
Craig Topperd2661882016-05-17 04:41:48 +00006596#define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006597 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \
6598 (__v4df)(__m256d)(B), \
6599 0 + ((((imm) >> 0) & 0x1) * 2), \
6600 1 + ((((imm) >> 0) & 0x1) * 2), \
6601 4 + ((((imm) >> 1) & 0x1) * 2), \
6602 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006603
Craig Topperd2661882016-05-17 04:41:48 +00006604#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006605 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6606 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6607 (__v4df)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006608
Craig Topperd2661882016-05-17 04:41:48 +00006609#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006610 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6611 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6612 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006613
Craig Topperd2661882016-05-17 04:41:48 +00006614#define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006615 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6616 (__v4di)(__m256i)(B), \
6617 0 + ((((imm) >> 0) & 0x1) * 2), \
6618 1 + ((((imm) >> 0) & 0x1) * 2), \
6619 4 + ((((imm) >> 1) & 0x1) * 2), \
6620 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006621
Craig Topperd2661882016-05-17 04:41:48 +00006622#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006623 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6624 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6625 (__v8si)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006626
Craig Topperd2661882016-05-17 04:41:48 +00006627#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006628 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6629 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6630 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006631
Craig Topperd2661882016-05-17 04:41:48 +00006632#define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006633 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6634 (__v4di)(__m256i)(B), \
6635 0 + ((((imm) >> 0) & 0x1) * 2), \
6636 1 + ((((imm) >> 0) & 0x1) * 2), \
6637 4 + ((((imm) >> 1) & 0x1) * 2), \
6638 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006639
Craig Topperd2661882016-05-17 04:41:48 +00006640#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006641 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6642 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6643 (__v4di)(__m256)(W)); })
6644
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006645
Craig Topperd2661882016-05-17 04:41:48 +00006646#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006647 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6648 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6649 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006650
Simon Pilgrim427154d2016-07-04 21:30:47 +00006651#define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6652 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6653 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6654 (__v2df)(__m128d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006655
Simon Pilgrim427154d2016-07-04 21:30:47 +00006656#define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6657 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6658 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6659 (__v2df)_mm_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006660
Simon Pilgrim427154d2016-07-04 21:30:47 +00006661#define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6662 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6663 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6664 (__v4df)(__m256d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006665
Simon Pilgrim427154d2016-07-04 21:30:47 +00006666#define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6667 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6668 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6669 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006670
Simon Pilgrim427154d2016-07-04 21:30:47 +00006671#define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6672 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6673 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6674 (__v4sf)(__m128)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006675
Simon Pilgrim427154d2016-07-04 21:30:47 +00006676#define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6677 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6678 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6679 (__v4sf)_mm_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006680
Simon Pilgrim427154d2016-07-04 21:30:47 +00006681#define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6682 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6683 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6684 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006685
Simon Pilgrim427154d2016-07-04 21:30:47 +00006686#define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6687 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6688 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6689 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006690
6691static __inline__ __m128d __DEFAULT_FN_ATTRS
6692_mm_rsqrt14_pd (__m128d __A)
6693{
6694 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6695 (__v2df)
6696 _mm_setzero_pd (),
6697 (__mmask8) -1);
6698}
6699
6700static __inline__ __m128d __DEFAULT_FN_ATTRS
6701_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6702{
6703 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6704 (__v2df) __W,
6705 (__mmask8) __U);
6706}
6707
6708static __inline__ __m128d __DEFAULT_FN_ATTRS
6709_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6710{
6711 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6712 (__v2df)
6713 _mm_setzero_pd (),
6714 (__mmask8) __U);
6715}
6716
6717static __inline__ __m256d __DEFAULT_FN_ATTRS
6718_mm256_rsqrt14_pd (__m256d __A)
6719{
6720 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6721 (__v4df)
6722 _mm256_setzero_pd (),
6723 (__mmask8) -1);
6724}
6725
6726static __inline__ __m256d __DEFAULT_FN_ATTRS
6727_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6728{
6729 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6730 (__v4df) __W,
6731 (__mmask8) __U);
6732}
6733
6734static __inline__ __m256d __DEFAULT_FN_ATTRS
6735_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6736{
6737 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6738 (__v4df)
6739 _mm256_setzero_pd (),
6740 (__mmask8) __U);
6741}
6742
6743static __inline__ __m128 __DEFAULT_FN_ATTRS
6744_mm_rsqrt14_ps (__m128 __A)
6745{
6746 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6747 (__v4sf)
6748 _mm_setzero_ps (),
6749 (__mmask8) -1);
6750}
6751
6752static __inline__ __m128 __DEFAULT_FN_ATTRS
6753_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6754{
6755 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6756 (__v4sf) __W,
6757 (__mmask8) __U);
6758}
6759
6760static __inline__ __m128 __DEFAULT_FN_ATTRS
6761_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6762{
6763 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6764 (__v4sf)
6765 _mm_setzero_ps (),
6766 (__mmask8) __U);
6767}
6768
6769static __inline__ __m256 __DEFAULT_FN_ATTRS
6770_mm256_rsqrt14_ps (__m256 __A)
6771{
6772 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6773 (__v8sf)
6774 _mm256_setzero_ps (),
6775 (__mmask8) -1);
6776}
6777
6778static __inline__ __m256 __DEFAULT_FN_ATTRS
6779_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6780{
6781 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6782 (__v8sf) __W,
6783 (__mmask8) __U);
6784}
6785
6786static __inline__ __m256 __DEFAULT_FN_ATTRS
6787_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6788{
6789 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6790 (__v8sf)
6791 _mm256_setzero_ps (),
6792 (__mmask8) __U);
6793}
6794
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006795static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006796_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006797{
Craig Topper367c86d2017-01-18 02:17:10 +00006798 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6799 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006800}
6801
6802static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006803_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006804{
Craig Topper367c86d2017-01-18 02:17:10 +00006805 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6806 (__v8sf)_mm256_broadcast_f32x4(__A),
6807 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006808}
6809
6810static __inline__ __m256 __DEFAULT_FN_ATTRS
6811_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6812{
Craig Topper367c86d2017-01-18 02:17:10 +00006813 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6814 (__v8sf)_mm256_broadcast_f32x4(__A),
6815 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006816}
6817
6818static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006819_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006820{
Craig Topper367c86d2017-01-18 02:17:10 +00006821 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6822 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006823}
6824
6825static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006826_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006827{
Craig Topper367c86d2017-01-18 02:17:10 +00006828 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6829 (__v8si)_mm256_broadcast_i32x4(__A),
6830 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006831}
6832
6833static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006834_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006835{
Craig Topper367c86d2017-01-18 02:17:10 +00006836 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6837 (__v8si)_mm256_broadcast_i32x4(__A),
6838 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006839}
6840
6841static __inline__ __m256d __DEFAULT_FN_ATTRS
6842_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6843{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006844 return (__m256d)__builtin_ia32_selectpd_256(__M,
6845 (__v4df) _mm256_broadcastsd_pd(__A),
6846 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006847}
6848
6849static __inline__ __m256d __DEFAULT_FN_ATTRS
6850_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6851{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006852 return (__m256d)__builtin_ia32_selectpd_256(__M,
6853 (__v4df) _mm256_broadcastsd_pd(__A),
6854 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006855}
6856
6857static __inline__ __m128 __DEFAULT_FN_ATTRS
6858_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6859{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006860 return (__m128)__builtin_ia32_selectps_128(__M,
6861 (__v4sf) _mm_broadcastss_ps(__A),
6862 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006863}
6864
6865static __inline__ __m128 __DEFAULT_FN_ATTRS
6866_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6867{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006868 return (__m128)__builtin_ia32_selectps_128(__M,
6869 (__v4sf) _mm_broadcastss_ps(__A),
6870 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006871}
6872
6873static __inline__ __m256 __DEFAULT_FN_ATTRS
6874_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6875{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006876 return (__m256)__builtin_ia32_selectps_256(__M,
6877 (__v8sf) _mm256_broadcastss_ps(__A),
6878 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006879}
6880
6881static __inline__ __m256 __DEFAULT_FN_ATTRS
6882_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6883{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006884 return (__m256)__builtin_ia32_selectps_256(__M,
6885 (__v8sf) _mm256_broadcastss_ps(__A),
6886 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006887}
6888
6889static __inline__ __m128i __DEFAULT_FN_ATTRS
6890_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6891{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006892 return (__m128i)__builtin_ia32_selectd_128(__M,
6893 (__v4si) _mm_broadcastd_epi32(__A),
6894 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006895}
6896
6897static __inline__ __m128i __DEFAULT_FN_ATTRS
6898_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6899{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006900 return (__m128i)__builtin_ia32_selectd_128(__M,
6901 (__v4si) _mm_broadcastd_epi32(__A),
6902 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006903}
6904
6905static __inline__ __m256i __DEFAULT_FN_ATTRS
6906_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6907{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006908 return (__m256i)__builtin_ia32_selectd_256(__M,
6909 (__v8si) _mm256_broadcastd_epi32(__A),
6910 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006911}
6912
6913static __inline__ __m256i __DEFAULT_FN_ATTRS
6914_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6915{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006916 return (__m256i)__builtin_ia32_selectd_256(__M,
6917 (__v8si) _mm256_broadcastd_epi32(__A),
6918 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006919}
6920
6921static __inline__ __m128i __DEFAULT_FN_ATTRS
6922_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6923{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006924 return (__m128i)__builtin_ia32_selectq_128(__M,
6925 (__v2di) _mm_broadcastq_epi64(__A),
6926 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006927}
6928
6929static __inline__ __m128i __DEFAULT_FN_ATTRS
6930_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6931{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006932 return (__m128i)__builtin_ia32_selectq_128(__M,
6933 (__v2di) _mm_broadcastq_epi64(__A),
6934 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006935}
6936
6937static __inline__ __m256i __DEFAULT_FN_ATTRS
6938_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6939{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006940 return (__m256i)__builtin_ia32_selectq_256(__M,
6941 (__v4di) _mm256_broadcastq_epi64(__A),
6942 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006943}
6944
6945static __inline__ __m256i __DEFAULT_FN_ATTRS
6946_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6947{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006948 return (__m256i)__builtin_ia32_selectq_256(__M,
6949 (__v4di) _mm256_broadcastq_epi64(__A),
6950 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006951}
6952
Michael Zuckermane1680612016-04-13 15:02:04 +00006953static __inline__ __m128i __DEFAULT_FN_ATTRS
6954_mm_cvtsepi32_epi8 (__m128i __A)
6955{
6956 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6957 (__v16qi)_mm_undefined_si128(),
6958 (__mmask8) -1);
6959}
6960
6961static __inline__ __m128i __DEFAULT_FN_ATTRS
6962_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6963{
6964 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6965 (__v16qi) __O, __M);
6966}
6967
6968static __inline__ __m128i __DEFAULT_FN_ATTRS
6969_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6970{
6971 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6972 (__v16qi) _mm_setzero_si128 (),
6973 __M);
6974}
6975
6976static __inline__ void __DEFAULT_FN_ATTRS
6977_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6978{
6979 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6980}
6981
6982static __inline__ __m128i __DEFAULT_FN_ATTRS
6983_mm256_cvtsepi32_epi8 (__m256i __A)
6984{
6985 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6986 (__v16qi)_mm_undefined_si128(),
6987 (__mmask8) -1);
6988}
6989
6990static __inline__ __m128i __DEFAULT_FN_ATTRS
6991_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6992{
6993 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6994 (__v16qi) __O, __M);
6995}
6996
6997static __inline__ __m128i __DEFAULT_FN_ATTRS
6998_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
6999{
7000 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7001 (__v16qi) _mm_setzero_si128 (),
7002 __M);
7003}
7004
7005static __inline__ void __DEFAULT_FN_ATTRS
7006_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7007{
7008 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7009}
7010
7011static __inline__ __m128i __DEFAULT_FN_ATTRS
7012_mm_cvtsepi32_epi16 (__m128i __A)
7013{
7014 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7015 (__v8hi)_mm_setzero_si128 (),
7016 (__mmask8) -1);
7017}
7018
7019static __inline__ __m128i __DEFAULT_FN_ATTRS
7020_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7021{
7022 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7023 (__v8hi)__O,
7024 __M);
7025}
7026
7027static __inline__ __m128i __DEFAULT_FN_ATTRS
7028_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
7029{
7030 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7031 (__v8hi) _mm_setzero_si128 (),
7032 __M);
7033}
7034
7035static __inline__ void __DEFAULT_FN_ATTRS
7036_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7037{
7038 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7039}
7040
7041static __inline__ __m128i __DEFAULT_FN_ATTRS
7042_mm256_cvtsepi32_epi16 (__m256i __A)
7043{
7044 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7045 (__v8hi)_mm_undefined_si128(),
7046 (__mmask8) -1);
7047}
7048
7049static __inline__ __m128i __DEFAULT_FN_ATTRS
7050_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7051{
7052 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7053 (__v8hi) __O, __M);
7054}
7055
7056static __inline__ __m128i __DEFAULT_FN_ATTRS
7057_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
7058{
7059 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7060 (__v8hi) _mm_setzero_si128 (),
7061 __M);
7062}
7063
7064static __inline__ void __DEFAULT_FN_ATTRS
7065_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7066{
7067 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7068}
7069
7070static __inline__ __m128i __DEFAULT_FN_ATTRS
7071_mm_cvtsepi64_epi8 (__m128i __A)
7072{
7073 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7074 (__v16qi)_mm_undefined_si128(),
7075 (__mmask8) -1);
7076}
7077
7078static __inline__ __m128i __DEFAULT_FN_ATTRS
7079_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7080{
7081 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7082 (__v16qi) __O, __M);
7083}
7084
7085static __inline__ __m128i __DEFAULT_FN_ATTRS
7086_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
7087{
7088 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7089 (__v16qi) _mm_setzero_si128 (),
7090 __M);
7091}
7092
7093static __inline__ void __DEFAULT_FN_ATTRS
7094_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7095{
7096 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7097}
7098
7099static __inline__ __m128i __DEFAULT_FN_ATTRS
7100_mm256_cvtsepi64_epi8 (__m256i __A)
7101{
7102 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7103 (__v16qi)_mm_undefined_si128(),
7104 (__mmask8) -1);
7105}
7106
7107static __inline__ __m128i __DEFAULT_FN_ATTRS
7108_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7109{
7110 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7111 (__v16qi) __O, __M);
7112}
7113
7114static __inline__ __m128i __DEFAULT_FN_ATTRS
7115_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
7116{
7117 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7118 (__v16qi) _mm_setzero_si128 (),
7119 __M);
7120}
7121
7122static __inline__ void __DEFAULT_FN_ATTRS
7123_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7124{
7125 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7126}
7127
7128static __inline__ __m128i __DEFAULT_FN_ATTRS
7129_mm_cvtsepi64_epi32 (__m128i __A)
7130{
7131 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7132 (__v4si)_mm_undefined_si128(),
7133 (__mmask8) -1);
7134}
7135
7136static __inline__ __m128i __DEFAULT_FN_ATTRS
7137_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7138{
7139 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7140 (__v4si) __O, __M);
7141}
7142
7143static __inline__ __m128i __DEFAULT_FN_ATTRS
7144_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7145{
7146 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7147 (__v4si) _mm_setzero_si128 (),
7148 __M);
7149}
7150
7151static __inline__ void __DEFAULT_FN_ATTRS
7152_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7153{
7154 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7155}
7156
7157static __inline__ __m128i __DEFAULT_FN_ATTRS
7158_mm256_cvtsepi64_epi32 (__m256i __A)
7159{
7160 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7161 (__v4si)_mm_undefined_si128(),
7162 (__mmask8) -1);
7163}
7164
7165static __inline__ __m128i __DEFAULT_FN_ATTRS
7166_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7167{
7168 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7169 (__v4si)__O,
7170 __M);
7171}
7172
7173static __inline__ __m128i __DEFAULT_FN_ATTRS
7174_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7175{
7176 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7177 (__v4si) _mm_setzero_si128 (),
7178 __M);
7179}
7180
7181static __inline__ void __DEFAULT_FN_ATTRS
7182_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7183{
7184 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7185}
7186
7187static __inline__ __m128i __DEFAULT_FN_ATTRS
7188_mm_cvtsepi64_epi16 (__m128i __A)
7189{
7190 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7191 (__v8hi)_mm_undefined_si128(),
7192 (__mmask8) -1);
7193}
7194
7195static __inline__ __m128i __DEFAULT_FN_ATTRS
7196_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7197{
7198 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7199 (__v8hi) __O, __M);
7200}
7201
7202static __inline__ __m128i __DEFAULT_FN_ATTRS
7203_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7204{
7205 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7206 (__v8hi) _mm_setzero_si128 (),
7207 __M);
7208}
7209
7210static __inline__ void __DEFAULT_FN_ATTRS
7211_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7212{
7213 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7214}
7215
7216static __inline__ __m128i __DEFAULT_FN_ATTRS
7217_mm256_cvtsepi64_epi16 (__m256i __A)
7218{
7219 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7220 (__v8hi)_mm_undefined_si128(),
7221 (__mmask8) -1);
7222}
7223
7224static __inline__ __m128i __DEFAULT_FN_ATTRS
7225_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7226{
7227 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7228 (__v8hi) __O, __M);
7229}
7230
7231static __inline__ __m128i __DEFAULT_FN_ATTRS
7232_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7233{
7234 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7235 (__v8hi) _mm_setzero_si128 (),
7236 __M);
7237}
7238
7239static __inline__ void __DEFAULT_FN_ATTRS
7240_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7241{
7242 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7243}
7244
Michael Zuckermand8715312016-04-14 06:48:09 +00007245static __inline__ __m128i __DEFAULT_FN_ATTRS
7246_mm_cvtusepi32_epi8 (__m128i __A)
7247{
7248 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7249 (__v16qi)_mm_undefined_si128(),
7250 (__mmask8) -1);
7251}
7252
7253static __inline__ __m128i __DEFAULT_FN_ATTRS
7254_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7255{
7256 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7257 (__v16qi) __O,
7258 __M);
7259}
7260
7261static __inline__ __m128i __DEFAULT_FN_ATTRS
7262_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7263{
7264 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7265 (__v16qi) _mm_setzero_si128 (),
7266 __M);
7267}
7268
7269static __inline__ void __DEFAULT_FN_ATTRS
7270_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7271{
7272 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7273}
7274
7275static __inline__ __m128i __DEFAULT_FN_ATTRS
7276_mm256_cvtusepi32_epi8 (__m256i __A)
7277{
7278 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7279 (__v16qi)_mm_undefined_si128(),
7280 (__mmask8) -1);
7281}
7282
7283static __inline__ __m128i __DEFAULT_FN_ATTRS
7284_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7285{
7286 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7287 (__v16qi) __O,
7288 __M);
7289}
7290
7291static __inline__ __m128i __DEFAULT_FN_ATTRS
7292_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7293{
7294 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7295 (__v16qi) _mm_setzero_si128 (),
7296 __M);
7297}
7298
7299static __inline__ void __DEFAULT_FN_ATTRS
7300_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7301{
7302 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7303}
7304
7305static __inline__ __m128i __DEFAULT_FN_ATTRS
7306_mm_cvtusepi32_epi16 (__m128i __A)
7307{
7308 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7309 (__v8hi)_mm_undefined_si128(),
7310 (__mmask8) -1);
7311}
7312
7313static __inline__ __m128i __DEFAULT_FN_ATTRS
7314_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7315{
7316 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7317 (__v8hi) __O, __M);
7318}
7319
7320static __inline__ __m128i __DEFAULT_FN_ATTRS
7321_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7322{
7323 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7324 (__v8hi) _mm_setzero_si128 (),
7325 __M);
7326}
7327
7328static __inline__ void __DEFAULT_FN_ATTRS
7329_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7330{
7331 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7332}
7333
7334static __inline__ __m128i __DEFAULT_FN_ATTRS
7335_mm256_cvtusepi32_epi16 (__m256i __A)
7336{
7337 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7338 (__v8hi) _mm_undefined_si128(),
7339 (__mmask8) -1);
7340}
7341
7342static __inline__ __m128i __DEFAULT_FN_ATTRS
7343_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7344{
7345 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7346 (__v8hi) __O, __M);
7347}
7348
7349static __inline__ __m128i __DEFAULT_FN_ATTRS
7350_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7351{
7352 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7353 (__v8hi) _mm_setzero_si128 (),
7354 __M);
7355}
7356
7357static __inline__ void __DEFAULT_FN_ATTRS
7358_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7359{
7360 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7361}
7362
7363static __inline__ __m128i __DEFAULT_FN_ATTRS
7364_mm_cvtusepi64_epi8 (__m128i __A)
7365{
7366 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7367 (__v16qi)_mm_undefined_si128(),
7368 (__mmask8) -1);
7369}
7370
7371static __inline__ __m128i __DEFAULT_FN_ATTRS
7372_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7373{
7374 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7375 (__v16qi) __O,
7376 __M);
7377}
7378
7379static __inline__ __m128i __DEFAULT_FN_ATTRS
7380_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7381{
7382 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7383 (__v16qi) _mm_setzero_si128 (),
7384 __M);
7385}
7386
7387static __inline__ void __DEFAULT_FN_ATTRS
7388_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7389{
7390 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7391}
7392
7393static __inline__ __m128i __DEFAULT_FN_ATTRS
7394_mm256_cvtusepi64_epi8 (__m256i __A)
7395{
7396 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7397 (__v16qi)_mm_undefined_si128(),
7398 (__mmask8) -1);
7399}
7400
7401static __inline__ __m128i __DEFAULT_FN_ATTRS
7402_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7403{
7404 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7405 (__v16qi) __O,
7406 __M);
7407}
7408
7409static __inline__ __m128i __DEFAULT_FN_ATTRS
7410_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7411{
7412 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7413 (__v16qi) _mm_setzero_si128 (),
7414 __M);
7415}
7416
7417static __inline__ void __DEFAULT_FN_ATTRS
7418_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7419{
7420 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7421}
7422
7423static __inline__ __m128i __DEFAULT_FN_ATTRS
7424_mm_cvtusepi64_epi32 (__m128i __A)
7425{
7426 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7427 (__v4si)_mm_undefined_si128(),
7428 (__mmask8) -1);
7429}
7430
7431static __inline__ __m128i __DEFAULT_FN_ATTRS
7432_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7433{
7434 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7435 (__v4si) __O, __M);
7436}
7437
7438static __inline__ __m128i __DEFAULT_FN_ATTRS
7439_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7440{
7441 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7442 (__v4si) _mm_setzero_si128 (),
7443 __M);
7444}
7445
7446static __inline__ void __DEFAULT_FN_ATTRS
7447_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7448{
7449 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7450}
7451
7452static __inline__ __m128i __DEFAULT_FN_ATTRS
7453_mm256_cvtusepi64_epi32 (__m256i __A)
7454{
7455 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7456 (__v4si)_mm_undefined_si128(),
7457 (__mmask8) -1);
7458}
7459
7460static __inline__ __m128i __DEFAULT_FN_ATTRS
7461_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7462{
7463 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7464 (__v4si) __O, __M);
7465}
7466
7467static __inline__ __m128i __DEFAULT_FN_ATTRS
7468_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7469{
7470 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7471 (__v4si) _mm_setzero_si128 (),
7472 __M);
7473}
7474
7475static __inline__ void __DEFAULT_FN_ATTRS
7476_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7477{
7478 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7479}
7480
7481static __inline__ __m128i __DEFAULT_FN_ATTRS
7482_mm_cvtusepi64_epi16 (__m128i __A)
7483{
7484 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7485 (__v8hi)_mm_undefined_si128(),
7486 (__mmask8) -1);
7487}
7488
7489static __inline__ __m128i __DEFAULT_FN_ATTRS
7490_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7491{
7492 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7493 (__v8hi) __O, __M);
7494}
7495
7496static __inline__ __m128i __DEFAULT_FN_ATTRS
7497_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7498{
7499 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7500 (__v8hi) _mm_setzero_si128 (),
7501 __M);
7502}
7503
7504static __inline__ void __DEFAULT_FN_ATTRS
7505_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7506{
7507 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7508}
7509
7510static __inline__ __m128i __DEFAULT_FN_ATTRS
7511_mm256_cvtusepi64_epi16 (__m256i __A)
7512{
7513 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7514 (__v8hi)_mm_undefined_si128(),
7515 (__mmask8) -1);
7516}
7517
7518static __inline__ __m128i __DEFAULT_FN_ATTRS
7519_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7520{
7521 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7522 (__v8hi) __O, __M);
7523}
7524
7525static __inline__ __m128i __DEFAULT_FN_ATTRS
7526_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7527{
7528 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7529 (__v8hi) _mm_setzero_si128 (),
7530 __M);
7531}
7532
7533static __inline__ void __DEFAULT_FN_ATTRS
7534_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7535{
7536 return __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7537}
7538
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007539static __inline__ __m128i __DEFAULT_FN_ATTRS
7540_mm_cvtepi32_epi8 (__m128i __A)
7541{
7542 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7543 (__v16qi)_mm_undefined_si128(),
7544 (__mmask8) -1);
7545}
7546
7547static __inline__ __m128i __DEFAULT_FN_ATTRS
7548_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7549{
7550 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7551 (__v16qi) __O, __M);
7552}
7553
7554static __inline__ __m128i __DEFAULT_FN_ATTRS
7555_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7556{
7557 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7558 (__v16qi)
7559 _mm_setzero_si128 (),
7560 __M);
7561}
7562
7563static __inline__ void __DEFAULT_FN_ATTRS
7564_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7565{
7566 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7567}
7568
7569static __inline__ __m128i __DEFAULT_FN_ATTRS
7570_mm256_cvtepi32_epi8 (__m256i __A)
7571{
7572 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7573 (__v16qi)_mm_undefined_si128(),
7574 (__mmask8) -1);
7575}
7576
7577static __inline__ __m128i __DEFAULT_FN_ATTRS
7578_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7579{
7580 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7581 (__v16qi) __O, __M);
7582}
7583
7584static __inline__ __m128i __DEFAULT_FN_ATTRS
7585_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7586{
7587 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7588 (__v16qi) _mm_setzero_si128 (),
7589 __M);
7590}
7591
7592static __inline__ void __DEFAULT_FN_ATTRS
7593_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7594{
7595 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7596}
7597
7598static __inline__ __m128i __DEFAULT_FN_ATTRS
7599_mm_cvtepi32_epi16 (__m128i __A)
7600{
7601 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7602 (__v8hi) _mm_setzero_si128 (),
7603 (__mmask8) -1);
7604}
7605
7606static __inline__ __m128i __DEFAULT_FN_ATTRS
7607_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7608{
7609 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7610 (__v8hi) __O, __M);
7611}
7612
7613static __inline__ __m128i __DEFAULT_FN_ATTRS
7614_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7615{
7616 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7617 (__v8hi) _mm_setzero_si128 (),
7618 __M);
7619}
7620
7621static __inline__ void __DEFAULT_FN_ATTRS
7622_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7623{
7624 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7625}
7626
7627static __inline__ __m128i __DEFAULT_FN_ATTRS
7628_mm256_cvtepi32_epi16 (__m256i __A)
7629{
Craig Topper25de41c2018-05-14 17:50:40 +00007630 return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007631}
7632
7633static __inline__ __m128i __DEFAULT_FN_ATTRS
7634_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7635{
Craig Topper9d146bb2018-05-15 03:17:52 +00007636 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7637 (__v8hi) __O, __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007638}
7639
7640static __inline__ __m128i __DEFAULT_FN_ATTRS
7641_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7642{
Craig Topper9d146bb2018-05-15 03:17:52 +00007643 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7644 (__v8hi) _mm_setzero_si128 (),
7645 __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007646}
7647
7648static __inline__ void __DEFAULT_FN_ATTRS
7649_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7650{
7651 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7652}
7653
7654static __inline__ __m128i __DEFAULT_FN_ATTRS
7655_mm_cvtepi64_epi8 (__m128i __A)
7656{
7657 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7658 (__v16qi) _mm_undefined_si128(),
7659 (__mmask8) -1);
7660}
7661
7662static __inline__ __m128i __DEFAULT_FN_ATTRS
7663_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7664{
7665 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7666 (__v16qi) __O, __M);
7667}
7668
7669static __inline__ __m128i __DEFAULT_FN_ATTRS
7670_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7671{
7672 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7673 (__v16qi) _mm_setzero_si128 (),
7674 __M);
7675}
7676
7677static __inline__ void __DEFAULT_FN_ATTRS
7678_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7679{
7680 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7681}
7682
7683static __inline__ __m128i __DEFAULT_FN_ATTRS
7684_mm256_cvtepi64_epi8 (__m256i __A)
7685{
7686 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7687 (__v16qi) _mm_undefined_si128(),
7688 (__mmask8) -1);
7689}
7690
7691static __inline__ __m128i __DEFAULT_FN_ATTRS
7692_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7693{
7694 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7695 (__v16qi) __O, __M);
7696}
7697
7698static __inline__ __m128i __DEFAULT_FN_ATTRS
7699_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7700{
7701 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7702 (__v16qi) _mm_setzero_si128 (),
7703 __M);
7704}
7705
7706static __inline__ void __DEFAULT_FN_ATTRS
7707_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7708{
7709 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7710}
7711
7712static __inline__ __m128i __DEFAULT_FN_ATTRS
7713_mm_cvtepi64_epi32 (__m128i __A)
7714{
7715 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7716 (__v4si)_mm_undefined_si128(),
7717 (__mmask8) -1);
7718}
7719
7720static __inline__ __m128i __DEFAULT_FN_ATTRS
7721_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7722{
7723 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7724 (__v4si) __O, __M);
7725}
7726
7727static __inline__ __m128i __DEFAULT_FN_ATTRS
7728_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7729{
7730 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7731 (__v4si) _mm_setzero_si128 (),
7732 __M);
7733}
7734
7735static __inline__ void __DEFAULT_FN_ATTRS
7736_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7737{
7738 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7739}
7740
7741static __inline__ __m128i __DEFAULT_FN_ATTRS
7742_mm256_cvtepi64_epi32 (__m256i __A)
7743{
Craig Topper25de41c2018-05-14 17:50:40 +00007744 return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007745}
7746
7747static __inline__ __m128i __DEFAULT_FN_ATTRS
7748_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7749{
Craig Topper25de41c2018-05-14 17:50:40 +00007750 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7751 (__v4si)_mm256_cvtepi64_epi32(__A),
7752 (__v4si)__O);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007753}
7754
7755static __inline__ __m128i __DEFAULT_FN_ATTRS
7756_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7757{
Craig Topper25de41c2018-05-14 17:50:40 +00007758 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7759 (__v4si)_mm256_cvtepi64_epi32(__A),
7760 (__v4si)_mm_setzero_si128());
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007761}
7762
7763static __inline__ void __DEFAULT_FN_ATTRS
7764_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7765{
7766 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7767}
7768
7769static __inline__ __m128i __DEFAULT_FN_ATTRS
7770_mm_cvtepi64_epi16 (__m128i __A)
7771{
7772 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7773 (__v8hi) _mm_undefined_si128(),
7774 (__mmask8) -1);
7775}
7776
7777static __inline__ __m128i __DEFAULT_FN_ATTRS
7778_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7779{
7780 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7781 (__v8hi)__O,
7782 __M);
7783}
7784
7785static __inline__ __m128i __DEFAULT_FN_ATTRS
7786_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7787{
7788 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7789 (__v8hi) _mm_setzero_si128 (),
7790 __M);
7791}
7792
7793static __inline__ void __DEFAULT_FN_ATTRS
7794_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7795{
7796 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7797}
7798
7799static __inline__ __m128i __DEFAULT_FN_ATTRS
7800_mm256_cvtepi64_epi16 (__m256i __A)
7801{
7802 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7803 (__v8hi)_mm_undefined_si128(),
7804 (__mmask8) -1);
7805}
7806
7807static __inline__ __m128i __DEFAULT_FN_ATTRS
7808_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7809{
7810 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7811 (__v8hi) __O, __M);
7812}
7813
7814static __inline__ __m128i __DEFAULT_FN_ATTRS
7815_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7816{
7817 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7818 (__v8hi) _mm_setzero_si128 (),
7819 __M);
7820}
7821
7822static __inline__ void __DEFAULT_FN_ATTRS
7823_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7824{
7825 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7826}
7827
Craig Topperd2661882016-05-17 04:41:48 +00007828#define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007829 (__m128)__builtin_shufflevector((__v8sf)(__m256)(A), \
7830 (__v8sf)_mm256_undefined_ps(), \
7831 ((imm) & 1) ? 4 : 0, \
7832 ((imm) & 1) ? 5 : 1, \
7833 ((imm) & 1) ? 6 : 2, \
7834 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007835
Craig Topperd2661882016-05-17 04:41:48 +00007836#define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007837 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7838 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7839 (__v4sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007840
Craig Topperd2661882016-05-17 04:41:48 +00007841#define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007842 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7843 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7844 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007845
Craig Topperd2661882016-05-17 04:41:48 +00007846#define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007847 (__m128i)__builtin_shufflevector((__v8si)(__m256)(A), \
7848 (__v8si)_mm256_undefined_si256(), \
7849 ((imm) & 1) ? 4 : 0, \
7850 ((imm) & 1) ? 5 : 1, \
7851 ((imm) & 1) ? 6 : 2, \
7852 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007853
Craig Topperd2661882016-05-17 04:41:48 +00007854#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007855 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007856 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7857 (__v4si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007858
Craig Topperd2661882016-05-17 04:41:48 +00007859#define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007860 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007861 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7862 (__v4si)_mm_setzero_si128()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007863
Craig Topperd2661882016-05-17 04:41:48 +00007864#define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007865 (__m256)__builtin_shufflevector((__v8sf)(A), \
7866 (__v8sf)_mm256_castps128_ps256((__m128)(B)), \
7867 ((imm) & 0x1) ? 0 : 8, \
7868 ((imm) & 0x1) ? 1 : 9, \
7869 ((imm) & 0x1) ? 2 : 10, \
7870 ((imm) & 0x1) ? 3 : 11, \
7871 ((imm) & 0x1) ? 8 : 4, \
7872 ((imm) & 0x1) ? 9 : 5, \
7873 ((imm) & 0x1) ? 10 : 6, \
7874 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007875
Craig Topperd2661882016-05-17 04:41:48 +00007876#define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007877 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7878 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7879 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007880
Craig Topperd2661882016-05-17 04:41:48 +00007881#define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007882 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7883 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7884 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007885
Craig Topperd2661882016-05-17 04:41:48 +00007886#define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007887 (__m256i)__builtin_shufflevector((__v8si)(A), \
7888 (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
7889 ((imm) & 0x1) ? 0 : 8, \
7890 ((imm) & 0x1) ? 1 : 9, \
7891 ((imm) & 0x1) ? 2 : 10, \
7892 ((imm) & 0x1) ? 3 : 11, \
7893 ((imm) & 0x1) ? 8 : 4, \
7894 ((imm) & 0x1) ? 9 : 5, \
7895 ((imm) & 0x1) ? 10 : 6, \
7896 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007897
Craig Topperd2661882016-05-17 04:41:48 +00007898#define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007899 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7900 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7901 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007902
Craig Topperd2661882016-05-17 04:41:48 +00007903#define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007904 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7905 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7906 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007907
Craig Topperd2661882016-05-17 04:41:48 +00007908#define _mm_getmant_pd(A, B, C) __extension__({\
7909 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7910 (int)(((C)<<2) | (B)), \
7911 (__v2df)_mm_setzero_pd(), \
7912 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007913
Craig Topperd2661882016-05-17 04:41:48 +00007914#define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
7915 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7916 (int)(((C)<<2) | (B)), \
7917 (__v2df)(__m128d)(W), \
7918 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007919
Craig Topperd2661882016-05-17 04:41:48 +00007920#define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
7921 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7922 (int)(((C)<<2) | (B)), \
7923 (__v2df)_mm_setzero_pd(), \
7924 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007925
Craig Topperd2661882016-05-17 04:41:48 +00007926#define _mm256_getmant_pd(A, B, C) __extension__ ({ \
7927 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7928 (int)(((C)<<2) | (B)), \
7929 (__v4df)_mm256_setzero_pd(), \
7930 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007931
Craig Topperd2661882016-05-17 04:41:48 +00007932#define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7933 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7934 (int)(((C)<<2) | (B)), \
7935 (__v4df)(__m256d)(W), \
7936 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007937
Craig Topperd2661882016-05-17 04:41:48 +00007938#define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7939 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7940 (int)(((C)<<2) | (B)), \
7941 (__v4df)_mm256_setzero_pd(), \
7942 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007943
Craig Topperd2661882016-05-17 04:41:48 +00007944#define _mm_getmant_ps(A, B, C) __extension__ ({ \
7945 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7946 (int)(((C)<<2) | (B)), \
7947 (__v4sf)_mm_setzero_ps(), \
7948 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007949
Craig Topperd2661882016-05-17 04:41:48 +00007950#define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7951 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7952 (int)(((C)<<2) | (B)), \
7953 (__v4sf)(__m128)(W), \
7954 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007955
Craig Topperd2661882016-05-17 04:41:48 +00007956#define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7957 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7958 (int)(((C)<<2) | (B)), \
7959 (__v4sf)_mm_setzero_ps(), \
7960 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007961
Craig Topperd2661882016-05-17 04:41:48 +00007962#define _mm256_getmant_ps(A, B, C) __extension__ ({ \
7963 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7964 (int)(((C)<<2) | (B)), \
7965 (__v8sf)_mm256_setzero_ps(), \
7966 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007967
Craig Topperd2661882016-05-17 04:41:48 +00007968#define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7969 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7970 (int)(((C)<<2) | (B)), \
7971 (__v8sf)(__m256)(W), \
7972 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007973
Craig Topperd2661882016-05-17 04:41:48 +00007974#define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7975 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7976 (int)(((C)<<2) | (B)), \
7977 (__v8sf)_mm256_setzero_ps(), \
7978 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007979
Craig Topperd2661882016-05-17 04:41:48 +00007980#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7981 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7982 (double const *)(addr), \
7983 (__v2di)(__m128i)(index), \
7984 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007985
Craig Topperd2661882016-05-17 04:41:48 +00007986#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7987 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7988 (long long const *)(addr), \
7989 (__v2di)(__m128i)(index), \
7990 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007991
Craig Topperd2661882016-05-17 04:41:48 +00007992#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7993 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
7994 (double const *)(addr), \
7995 (__v4di)(__m256i)(index), \
7996 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007997
Craig Topperd2661882016-05-17 04:41:48 +00007998#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7999 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
8000 (long long const *)(addr), \
8001 (__v4di)(__m256i)(index), \
8002 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008003
Craig Topperd2661882016-05-17 04:41:48 +00008004#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8005 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
8006 (float const *)(addr), \
8007 (__v2di)(__m128i)(index), \
8008 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008009
Craig Topperd2661882016-05-17 04:41:48 +00008010#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8011 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
8012 (int const *)(addr), \
8013 (__v2di)(__m128i)(index), \
8014 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008015
Craig Topperd2661882016-05-17 04:41:48 +00008016#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8017 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
8018 (float const *)(addr), \
8019 (__v4di)(__m256i)(index), \
8020 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008021
Craig Topperd2661882016-05-17 04:41:48 +00008022#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8023 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
8024 (int const *)(addr), \
8025 (__v4di)(__m256i)(index), \
8026 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008027
Craig Topperd2661882016-05-17 04:41:48 +00008028#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8029 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
8030 (double const *)(addr), \
8031 (__v4si)(__m128i)(index), \
8032 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008033
Craig Topperd2661882016-05-17 04:41:48 +00008034#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8035 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
8036 (long long const *)(addr), \
8037 (__v4si)(__m128i)(index), \
8038 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008039
Craig Topperd2661882016-05-17 04:41:48 +00008040#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8041 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
8042 (double const *)(addr), \
8043 (__v4si)(__m128i)(index), \
8044 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008045
Craig Topperd2661882016-05-17 04:41:48 +00008046#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8047 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
8048 (long long const *)(addr), \
8049 (__v4si)(__m128i)(index), \
8050 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008051
Craig Topperd2661882016-05-17 04:41:48 +00008052#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8053 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
8054 (float const *)(addr), \
8055 (__v4si)(__m128i)(index), \
8056 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008057
Craig Topperd2661882016-05-17 04:41:48 +00008058#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8059 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
8060 (int const *)(addr), \
8061 (__v4si)(__m128i)(index), \
8062 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008063
Craig Topperd2661882016-05-17 04:41:48 +00008064#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8065 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
8066 (float const *)(addr), \
8067 (__v8si)(__m256i)(index), \
8068 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008069
Craig Topperd2661882016-05-17 04:41:48 +00008070#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8071 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
8072 (int const *)(addr), \
8073 (__v8si)(__m256i)(index), \
8074 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008075
Simon Pilgrim30db8112016-07-04 13:34:44 +00008076#define _mm256_permutex_pd(X, C) __extension__ ({ \
8077 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
8078 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008079 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8080 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008081
Simon Pilgrim30db8112016-07-04 13:34:44 +00008082#define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
8083 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8084 (__v4df)_mm256_permutex_pd((X), (C)), \
8085 (__v4df)(__m256d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008086
Simon Pilgrim30db8112016-07-04 13:34:44 +00008087#define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
8088 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8089 (__v4df)_mm256_permutex_pd((X), (C)), \
8090 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008091
Simon Pilgrim30db8112016-07-04 13:34:44 +00008092#define _mm256_permutex_epi64(X, C) __extension__ ({ \
8093 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
8094 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008095 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8096 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008097
Simon Pilgrim30db8112016-07-04 13:34:44 +00008098#define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
8099 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8100 (__v4di)_mm256_permutex_epi64((X), (C)), \
8101 (__v4di)(__m256i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008102
Simon Pilgrim30db8112016-07-04 13:34:44 +00008103#define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
8104 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8105 (__v4di)_mm256_permutex_epi64((X), (C)), \
8106 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008107
8108static __inline__ __m256d __DEFAULT_FN_ATTRS
8109_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
8110{
8111 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8112 (__v4di) __X,
8113 (__v4df) _mm256_undefined_si256 (),
8114 (__mmask8) -1);
8115}
8116
8117static __inline__ __m256d __DEFAULT_FN_ATTRS
8118_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
8119 __m256d __Y)
8120{
8121 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8122 (__v4di) __X,
8123 (__v4df) __W,
8124 (__mmask8) __U);
8125}
8126
8127static __inline__ __m256d __DEFAULT_FN_ATTRS
8128_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
8129{
8130 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8131 (__v4di) __X,
8132 (__v4df) _mm256_setzero_pd (),
8133 (__mmask8) __U);
8134}
8135
8136static __inline__ __m256i __DEFAULT_FN_ATTRS
8137_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
8138{
8139 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8140 (__v4di) __X,
8141 (__v4di) _mm256_setzero_si256 (),
8142 (__mmask8) __M);
8143}
8144
8145static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00008146_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008147{
8148 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8149 (__v4di) __X,
8150 (__v4di) _mm256_undefined_si256 (),
8151 (__mmask8) -1);
8152}
8153
8154static __inline__ __m256i __DEFAULT_FN_ATTRS
8155_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
8156 __m256i __Y)
8157{
8158 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8159 (__v4di) __X,
8160 (__v4di) __W,
8161 __M);
8162}
8163
Craig Topper5dc6ca82018-02-24 06:46:42 +00008164#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
8165
Michael Zuckerman8938e832016-04-25 05:32:35 +00008166static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008167_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008168{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008169 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8170 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8171 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008172}
8173
8174static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008175_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008176{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008177 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8178 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8179 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008180}
8181
Craig Topper5dc6ca82018-02-24 06:46:42 +00008182#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
8183
8184static __inline__ __m256i __DEFAULT_FN_ATTRS
8185_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
8186 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008187{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008188 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8189 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8190 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008191}
8192
8193static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008194_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008195{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008196 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8197 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8198 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008199}
8200
Craig Topperd2661882016-05-17 04:41:48 +00008201#define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008202 (__m128i)__builtin_shufflevector((__v4si)(__m128i)(B), \
8203 (__v4si)(__m128i)(A), \
8204 ((int)(imm) & 0x3) + 0, \
8205 ((int)(imm) & 0x3) + 1, \
8206 ((int)(imm) & 0x3) + 2, \
8207 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008208
Craig Topperd2661882016-05-17 04:41:48 +00008209#define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008210 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8211 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8212 (__v4si)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008213
Craig Topperd2661882016-05-17 04:41:48 +00008214#define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008215 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8216 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8217 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008218
Craig Topperd2661882016-05-17 04:41:48 +00008219#define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008220 (__m256i)__builtin_shufflevector((__v8si)(__m256i)(B), \
8221 (__v8si)(__m256i)(A), \
8222 ((int)(imm) & 0x7) + 0, \
8223 ((int)(imm) & 0x7) + 1, \
8224 ((int)(imm) & 0x7) + 2, \
8225 ((int)(imm) & 0x7) + 3, \
8226 ((int)(imm) & 0x7) + 4, \
8227 ((int)(imm) & 0x7) + 5, \
8228 ((int)(imm) & 0x7) + 6, \
8229 ((int)(imm) & 0x7) + 7); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008230
Craig Topperd2661882016-05-17 04:41:48 +00008231#define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008232 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8233 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8234 (__v8si)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008235
Craig Topperd2661882016-05-17 04:41:48 +00008236#define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008237 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8238 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8239 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008240
Craig Topperd2661882016-05-17 04:41:48 +00008241#define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008242 (__m128i)__builtin_shufflevector((__v2di)(__m128i)(B), \
8243 (__v2di)(__m128i)(A), \
8244 ((int)(imm) & 0x1) + 0, \
8245 ((int)(imm) & 0x1) + 1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008246
Craig Topperd2661882016-05-17 04:41:48 +00008247#define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008248 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8249 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8250 (__v2di)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008251
Craig Topperd2661882016-05-17 04:41:48 +00008252#define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008253 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8254 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8255 (__v2di)_mm_setzero_di()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008256
Craig Topperd2661882016-05-17 04:41:48 +00008257#define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008258 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(B), \
8259 (__v4di)(__m256i)(A), \
8260 ((int)(imm) & 0x3) + 0, \
8261 ((int)(imm) & 0x3) + 1, \
8262 ((int)(imm) & 0x3) + 2, \
8263 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008264
Craig Topperd2661882016-05-17 04:41:48 +00008265#define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008266 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8267 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8268 (__v4di)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008269
Craig Topperd2661882016-05-17 04:41:48 +00008270#define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008271 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8272 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8273 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008274
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008275static __inline__ __m128 __DEFAULT_FN_ATTRS
8276_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8277{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008278 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8279 (__v4sf)_mm_movehdup_ps(__A),
8280 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008281}
8282
8283static __inline__ __m128 __DEFAULT_FN_ATTRS
8284_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8285{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008286 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8287 (__v4sf)_mm_movehdup_ps(__A),
8288 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008289}
8290
8291static __inline__ __m256 __DEFAULT_FN_ATTRS
8292_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8293{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008294 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8295 (__v8sf)_mm256_movehdup_ps(__A),
8296 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008297}
8298
8299static __inline__ __m256 __DEFAULT_FN_ATTRS
8300_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8301{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008302 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8303 (__v8sf)_mm256_movehdup_ps(__A),
8304 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008305}
8306
8307static __inline__ __m128 __DEFAULT_FN_ATTRS
8308_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8309{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008310 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8311 (__v4sf)_mm_moveldup_ps(__A),
8312 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008313}
8314
8315static __inline__ __m128 __DEFAULT_FN_ATTRS
8316_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8317{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008318 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8319 (__v4sf)_mm_moveldup_ps(__A),
8320 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008321}
8322
8323static __inline__ __m256 __DEFAULT_FN_ATTRS
8324_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8325{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008326 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8327 (__v8sf)_mm256_moveldup_ps(__A),
8328 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008329}
8330
8331static __inline__ __m256 __DEFAULT_FN_ATTRS
8332_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8333{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008334 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8335 (__v8sf)_mm256_moveldup_ps(__A),
8336 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008337}
8338
Craig Topperd2661882016-05-17 04:41:48 +00008339#define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008340 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8341 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8342 (__v8si)(__m256i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008343
Craig Topperd2661882016-05-17 04:41:48 +00008344#define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008345 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8346 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8347 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008348
Craig Topperd2661882016-05-17 04:41:48 +00008349#define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008350 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8351 (__v4si)_mm_shuffle_epi32((A), (I)), \
8352 (__v4si)(__m128i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008353
Craig Topperd2661882016-05-17 04:41:48 +00008354#define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008355 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8356 (__v4si)_mm_shuffle_epi32((A), (I)), \
8357 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008358
8359static __inline__ __m128d __DEFAULT_FN_ATTRS
8360_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8361{
Igor Bregeraadb8762016-06-08 13:59:20 +00008362 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8363 (__v2df) __A,
8364 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008365}
8366
8367static __inline__ __m128d __DEFAULT_FN_ATTRS
8368_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8369{
Igor Bregeraadb8762016-06-08 13:59:20 +00008370 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8371 (__v2df) __A,
8372 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008373}
8374
8375static __inline__ __m256d __DEFAULT_FN_ATTRS
8376_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8377{
Igor Bregeraadb8762016-06-08 13:59:20 +00008378 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8379 (__v4df) __A,
8380 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008381}
8382
8383static __inline__ __m256d __DEFAULT_FN_ATTRS
8384_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8385{
Igor Bregeraadb8762016-06-08 13:59:20 +00008386 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8387 (__v4df) __A,
8388 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008389}
8390
8391static __inline__ __m128 __DEFAULT_FN_ATTRS
8392_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8393{
Igor Bregeraadb8762016-06-08 13:59:20 +00008394 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8395 (__v4sf) __A,
8396 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008397}
8398
8399static __inline__ __m128 __DEFAULT_FN_ATTRS
8400_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8401{
Igor Bregeraadb8762016-06-08 13:59:20 +00008402 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8403 (__v4sf) __A,
8404 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008405}
8406
8407static __inline__ __m256 __DEFAULT_FN_ATTRS
8408_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8409{
Igor Bregeraadb8762016-06-08 13:59:20 +00008410 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8411 (__v8sf) __A,
8412 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008413}
8414
8415static __inline__ __m256 __DEFAULT_FN_ATTRS
8416_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8417{
Igor Bregeraadb8762016-06-08 13:59:20 +00008418 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8419 (__v8sf) __A,
8420 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008421}
8422
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008423static __inline__ __m128 __DEFAULT_FN_ATTRS
8424_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8425{
8426 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8427 (__v4sf) __W,
8428 (__mmask8) __U);
8429}
8430
8431static __inline__ __m128 __DEFAULT_FN_ATTRS
8432_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8433{
8434 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8435 (__v4sf)
8436 _mm_setzero_ps (),
8437 (__mmask8) __U);
8438}
8439
8440static __inline__ __m256 __DEFAULT_FN_ATTRS
8441_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8442{
8443 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8444 (__v8sf) __W,
8445 (__mmask8) __U);
8446}
8447
8448static __inline__ __m256 __DEFAULT_FN_ATTRS
8449_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8450{
8451 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8452 (__v8sf)
8453 _mm256_setzero_ps (),
8454 (__mmask8) __U);
8455}
8456
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008457static __inline __m128i __DEFAULT_FN_ATTRS
8458_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8459{
8460 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8461 (__v8hi) __W,
8462 (__mmask8) __U);
8463}
8464
8465static __inline __m128i __DEFAULT_FN_ATTRS
8466_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8467{
8468 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8469 (__v8hi) _mm_setzero_si128 (),
8470 (__mmask8) __U);
8471}
8472
8473#define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008474 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8475 (__v8hi)(__m128i)(W), \
8476 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008477
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008478#define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008479 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8480 (__v8hi)_mm_setzero_si128(), \
8481 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008482
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008483static __inline __m128i __DEFAULT_FN_ATTRS
8484_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8485{
8486 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8487 (__v8hi) __W,
8488 (__mmask8) __U);
8489}
8490
8491static __inline __m128i __DEFAULT_FN_ATTRS
8492_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8493{
8494 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8495 (__v8hi) _mm_setzero_si128(),
8496 (__mmask8) __U);
8497}
8498#define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008499 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8500 (__v8hi)(__m128i)(W), \
8501 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008502
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008503#define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008504 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8505 (__v8hi)_mm_setzero_si128(), \
8506 (__mmask8)(U)); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008507
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008508
Michael Kupersteine45af542015-06-30 13:36:19 +00008509#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008510
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008511#endif /* __AVX512VLINTRIN_H */