blob: 16e44c3f1f2a563089f8deeac880382cb3617ad1 [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
Craig Topper45db56c2016-07-21 07:38:39 +00005371#ifdef __x86_64__
Michael Zuckerman912be162016-03-07 08:29:10 +00005372static __inline__ __m128i __DEFAULT_FN_ATTRS
5373_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5374{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005375 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005376 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005377 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005378}
5379
5380static __inline__ __m128i __DEFAULT_FN_ATTRS
5381_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5382{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005383 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005384 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005385 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005386}
5387
5388static __inline__ __m256i __DEFAULT_FN_ATTRS
5389_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5390{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005391 return (__m256i) __builtin_ia32_selectq_256(__M,
5392 (__v4di) _mm256_set1_epi64x(__A),
5393 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005394}
5395
5396static __inline__ __m256i __DEFAULT_FN_ATTRS
5397_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5398{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005399 return (__m256i) __builtin_ia32_selectq_256(__M,
5400 (__v4di) _mm256_set1_epi64x(__A),
5401 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005402}
Jina Nahias3ad702a2017-09-19 11:00:27 +00005403
Craig Topper45db56c2016-07-21 07:38:39 +00005404#endif
Michael Zuckermandef78752016-03-28 12:23:09 +00005405
Craig Topperd2661882016-05-17 04:41:48 +00005406#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5407 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5408 (__v2df)(__m128d)(B), \
5409 (__v2di)(__m128i)(C), (int)(imm), \
5410 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005411
Craig Topperd2661882016-05-17 04:41:48 +00005412#define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5413 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5414 (__v2df)(__m128d)(B), \
5415 (__v2di)(__m128i)(C), (int)(imm), \
5416 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005417
Craig Topperd2661882016-05-17 04:41:48 +00005418#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5419 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5420 (__v2df)(__m128d)(B), \
5421 (__v2di)(__m128i)(C), \
5422 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005423
Craig Topperd2661882016-05-17 04:41:48 +00005424#define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5425 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5426 (__v4df)(__m256d)(B), \
5427 (__v4di)(__m256i)(C), (int)(imm), \
5428 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005429
Craig Topperd2661882016-05-17 04:41:48 +00005430#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5431 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5432 (__v4df)(__m256d)(B), \
5433 (__v4di)(__m256i)(C), (int)(imm), \
5434 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005435
Craig Topperd2661882016-05-17 04:41:48 +00005436#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5437 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5438 (__v4df)(__m256d)(B), \
5439 (__v4di)(__m256i)(C), \
5440 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005441
Craig Topperd2661882016-05-17 04:41:48 +00005442#define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5443 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5444 (__v4sf)(__m128)(B), \
5445 (__v4si)(__m128i)(C), (int)(imm), \
5446 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005447
Craig Topperd2661882016-05-17 04:41:48 +00005448#define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5449 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5450 (__v4sf)(__m128)(B), \
5451 (__v4si)(__m128i)(C), (int)(imm), \
5452 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005453
Craig Topperd2661882016-05-17 04:41:48 +00005454#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5455 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5456 (__v4sf)(__m128)(B), \
5457 (__v4si)(__m128i)(C), (int)(imm), \
5458 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005459
Craig Topperd2661882016-05-17 04:41:48 +00005460#define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5461 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5462 (__v8sf)(__m256)(B), \
5463 (__v8si)(__m256i)(C), (int)(imm), \
5464 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005465
Craig Topperd2661882016-05-17 04:41:48 +00005466#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5467 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5468 (__v8sf)(__m256)(B), \
5469 (__v8si)(__m256i)(C), (int)(imm), \
5470 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005471
Craig Topperd2661882016-05-17 04:41:48 +00005472#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5473 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5474 (__v8sf)(__m256)(B), \
5475 (__v8si)(__m256i)(C), (int)(imm), \
5476 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005477
5478static __inline__ __m128d __DEFAULT_FN_ATTRS
5479_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5480{
5481 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5482 (__v2df) __W,
5483 (__mmask8) __U);
5484}
5485
5486static __inline__ __m128d __DEFAULT_FN_ATTRS
5487_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5488{
5489 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5490 (__v2df)
5491 _mm_setzero_pd (),
5492 (__mmask8) __U);
5493}
5494
5495static __inline__ __m256d __DEFAULT_FN_ATTRS
5496_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5497{
5498 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5499 (__v4df) __W,
5500 (__mmask8) __U);
5501}
5502
5503static __inline__ __m256d __DEFAULT_FN_ATTRS
5504_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5505{
5506 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5507 (__v4df)
5508 _mm256_setzero_pd (),
5509 (__mmask8) __U);
5510}
5511
5512static __inline__ __m128 __DEFAULT_FN_ATTRS
5513_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5514{
5515 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5516 (__v4sf) __W,
5517 (__mmask8) __U);
5518}
5519
5520static __inline__ __m128 __DEFAULT_FN_ATTRS
5521_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5522{
5523 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5524 (__v4sf)
5525 _mm_setzero_ps (),
5526 (__mmask8) __U);
5527}
5528
5529static __inline__ __m256 __DEFAULT_FN_ATTRS
5530_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5531{
5532 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5533 (__v8sf) __W,
5534 (__mmask8) __U);
5535}
5536
5537static __inline__ __m256 __DEFAULT_FN_ATTRS
5538_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5539{
5540 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5541 (__v8sf)
5542 _mm256_setzero_ps (),
5543 (__mmask8) __U);
5544}
5545
5546static __inline__ __m128i __DEFAULT_FN_ATTRS
5547_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5548{
5549 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5550 (__v2di) __W,
5551 (__mmask8) __U);
5552}
5553
5554static __inline__ __m128i __DEFAULT_FN_ATTRS
5555_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5556{
5557 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5558 (__v2di)
5559 _mm_setzero_si128 (),
5560 (__mmask8) __U);
5561}
5562
5563static __inline__ __m256i __DEFAULT_FN_ATTRS
5564_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5565{
5566 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5567 (__v4di) __W,
5568 (__mmask8) __U);
5569}
5570
5571static __inline__ __m256i __DEFAULT_FN_ATTRS
5572_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5573{
5574 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5575 (__v4di)
5576 _mm256_setzero_si256 (),
5577 (__mmask8) __U);
5578}
5579
5580static __inline__ __m128i __DEFAULT_FN_ATTRS
5581_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5582{
5583 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5584 (__v4si) __W,
5585 (__mmask8) __U);
5586}
5587
5588static __inline__ __m128i __DEFAULT_FN_ATTRS
5589_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5590{
5591 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5592 (__v4si)
5593 _mm_setzero_si128 (),
5594 (__mmask8) __U);
5595}
5596
5597static __inline__ __m256i __DEFAULT_FN_ATTRS
5598_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5599{
5600 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5601 (__v8si) __W,
5602 (__mmask8) __U);
5603}
5604
5605static __inline__ __m256i __DEFAULT_FN_ATTRS
5606_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5607{
5608 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5609 (__v8si)
5610 _mm256_setzero_si256 (),
5611 (__mmask8) __U);
5612}
5613
5614static __inline__ __m128d __DEFAULT_FN_ATTRS
5615_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5616{
5617 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5618 (__v2df) __W,
5619 (__mmask8) __U);
5620}
5621
5622static __inline__ __m128d __DEFAULT_FN_ATTRS
5623_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5624{
5625 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5626 (__v2df)
5627 _mm_setzero_pd (),
5628 (__mmask8) __U);
5629}
5630
5631static __inline__ __m256d __DEFAULT_FN_ATTRS
5632_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5633{
5634 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5635 (__v4df) __W,
5636 (__mmask8) __U);
5637}
5638
5639static __inline__ __m256d __DEFAULT_FN_ATTRS
5640_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5641{
5642 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5643 (__v4df)
5644 _mm256_setzero_pd (),
5645 (__mmask8) __U);
5646}
5647
5648static __inline__ __m128 __DEFAULT_FN_ATTRS
5649_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5650{
5651 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5652 (__v4sf) __W,
5653 (__mmask8) __U);
5654}
5655
5656static __inline__ __m128 __DEFAULT_FN_ATTRS
5657_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5658{
5659 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5660 (__v4sf)
5661 _mm_setzero_ps (),
5662 (__mmask8) __U);
5663}
5664
5665static __inline__ __m256 __DEFAULT_FN_ATTRS
5666_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5667{
5668 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5669 (__v8sf) __W,
5670 (__mmask8) __U);
5671}
5672
5673static __inline__ __m256 __DEFAULT_FN_ATTRS
5674_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5675{
5676 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5677 (__v8sf)
5678 _mm256_setzero_ps (),
5679 (__mmask8) __U);
5680}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005681
5682static __inline__ void __DEFAULT_FN_ATTRS
5683_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5684{
5685 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5686 (__v2df) __A,
5687 (__mmask8) __U);
5688}
5689
5690static __inline__ void __DEFAULT_FN_ATTRS
5691_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5692{
5693 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5694 (__v4df) __A,
5695 (__mmask8) __U);
5696}
5697
5698static __inline__ void __DEFAULT_FN_ATTRS
5699_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5700{
5701 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5702 (__v4sf) __A,
5703 (__mmask8) __U);
5704}
5705
5706static __inline__ void __DEFAULT_FN_ATTRS
5707_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5708{
5709 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5710 (__v8sf) __A,
5711 (__mmask8) __U);
5712}
5713
5714static __inline__ void __DEFAULT_FN_ATTRS
5715_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5716{
5717 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5718 (__v2di) __A,
5719 (__mmask8) __U);
5720}
5721
5722static __inline__ void __DEFAULT_FN_ATTRS
5723_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5724{
5725 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5726 (__v4di) __A,
5727 (__mmask8) __U);
5728}
5729
5730static __inline__ void __DEFAULT_FN_ATTRS
5731_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5732{
5733 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5734 (__v4si) __A,
5735 (__mmask8) __U);
5736}
5737
5738static __inline__ void __DEFAULT_FN_ATTRS
5739_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5740{
5741 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5742 (__v8si) __A,
5743 (__mmask8) __U);
5744}
5745
5746static __inline__ void __DEFAULT_FN_ATTRS
5747_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5748{
5749 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5750 (__v2df) __A,
5751 (__mmask8) __U);
5752}
5753
5754static __inline__ void __DEFAULT_FN_ATTRS
5755_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5756{
5757 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5758 (__v4df) __A,
5759 (__mmask8) __U);
5760}
5761
5762static __inline__ void __DEFAULT_FN_ATTRS
5763_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5764{
5765 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5766 (__v4sf) __A,
5767 (__mmask8) __U);
5768}
5769
5770static __inline__ void __DEFAULT_FN_ATTRS
5771_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5772{
5773 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5774 (__v8sf) __A,
5775 (__mmask8) __U);
5776}
5777
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005778
5779static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005780_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005781{
Craig Topper79f53ca2016-06-23 06:36:42 +00005782 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5783 (__v2df)_mm_unpackhi_pd(__A, __B),
5784 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005785}
5786
5787static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005788_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005789{
Craig Topper79f53ca2016-06-23 06:36:42 +00005790 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5791 (__v2df)_mm_unpackhi_pd(__A, __B),
5792 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005793}
5794
5795static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005796_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005797{
Craig Topper79f53ca2016-06-23 06:36:42 +00005798 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5799 (__v4df)_mm256_unpackhi_pd(__A, __B),
5800 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005801}
5802
5803static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005804_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005805{
Craig Topper79f53ca2016-06-23 06:36:42 +00005806 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5807 (__v4df)_mm256_unpackhi_pd(__A, __B),
5808 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005809}
5810
5811static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005812_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005813{
Craig Topper79f53ca2016-06-23 06:36:42 +00005814 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5815 (__v4sf)_mm_unpackhi_ps(__A, __B),
5816 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005817}
5818
5819static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005820_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005821{
Craig Topper79f53ca2016-06-23 06:36:42 +00005822 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5823 (__v4sf)_mm_unpackhi_ps(__A, __B),
5824 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005825}
5826
5827static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005828_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005829{
Craig Topper79f53ca2016-06-23 06:36:42 +00005830 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5831 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5832 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005833}
5834
5835static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005836_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005837{
Craig Topper79f53ca2016-06-23 06:36:42 +00005838 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5839 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5840 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005841}
5842
5843static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005844_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005845{
Craig Topper79f53ca2016-06-23 06:36:42 +00005846 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5847 (__v2df)_mm_unpacklo_pd(__A, __B),
5848 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005849}
5850
5851static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005852_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005853{
Craig Topper79f53ca2016-06-23 06:36:42 +00005854 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5855 (__v2df)_mm_unpacklo_pd(__A, __B),
5856 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005857}
5858
5859static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005860_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005861{
Craig Topper79f53ca2016-06-23 06:36:42 +00005862 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5863 (__v4df)_mm256_unpacklo_pd(__A, __B),
5864 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005865}
5866
5867static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005868_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005869{
Craig Topper79f53ca2016-06-23 06:36:42 +00005870 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5871 (__v4df)_mm256_unpacklo_pd(__A, __B),
5872 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005873}
5874
5875static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005876_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005877{
Craig Topper79f53ca2016-06-23 06:36:42 +00005878 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5879 (__v4sf)_mm_unpacklo_ps(__A, __B),
5880 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005881}
5882
5883static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005884_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005885{
Craig Topper79f53ca2016-06-23 06:36:42 +00005886 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5887 (__v4sf)_mm_unpacklo_ps(__A, __B),
5888 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005889}
5890
5891static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005892_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005893{
Craig Topper79f53ca2016-06-23 06:36:42 +00005894 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5895 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5896 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005897}
5898
5899static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005900_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005901{
Craig Topper79f53ca2016-06-23 06:36:42 +00005902 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5903 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5904 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005905}
5906
5907static __inline__ __m128d __DEFAULT_FN_ATTRS
5908_mm_rcp14_pd (__m128d __A)
5909{
5910 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5911 (__v2df)
5912 _mm_setzero_pd (),
5913 (__mmask8) -1);
5914}
5915
5916static __inline__ __m128d __DEFAULT_FN_ATTRS
5917_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5918{
5919 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5920 (__v2df) __W,
5921 (__mmask8) __U);
5922}
5923
5924static __inline__ __m128d __DEFAULT_FN_ATTRS
5925_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5926{
5927 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5928 (__v2df)
5929 _mm_setzero_pd (),
5930 (__mmask8) __U);
5931}
5932
5933static __inline__ __m256d __DEFAULT_FN_ATTRS
5934_mm256_rcp14_pd (__m256d __A)
5935{
5936 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5937 (__v4df)
5938 _mm256_setzero_pd (),
5939 (__mmask8) -1);
5940}
5941
5942static __inline__ __m256d __DEFAULT_FN_ATTRS
5943_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5944{
5945 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5946 (__v4df) __W,
5947 (__mmask8) __U);
5948}
5949
5950static __inline__ __m256d __DEFAULT_FN_ATTRS
5951_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5952{
5953 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5954 (__v4df)
5955 _mm256_setzero_pd (),
5956 (__mmask8) __U);
5957}
5958
5959static __inline__ __m128 __DEFAULT_FN_ATTRS
5960_mm_rcp14_ps (__m128 __A)
5961{
5962 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5963 (__v4sf)
5964 _mm_setzero_ps (),
5965 (__mmask8) -1);
5966}
5967
5968static __inline__ __m128 __DEFAULT_FN_ATTRS
5969_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5970{
5971 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5972 (__v4sf) __W,
5973 (__mmask8) __U);
5974}
5975
5976static __inline__ __m128 __DEFAULT_FN_ATTRS
5977_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5978{
5979 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5980 (__v4sf)
5981 _mm_setzero_ps (),
5982 (__mmask8) __U);
5983}
5984
5985static __inline__ __m256 __DEFAULT_FN_ATTRS
5986_mm256_rcp14_ps (__m256 __A)
5987{
5988 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5989 (__v8sf)
5990 _mm256_setzero_ps (),
5991 (__mmask8) -1);
5992}
5993
5994static __inline__ __m256 __DEFAULT_FN_ATTRS
5995_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5996{
5997 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5998 (__v8sf) __W,
5999 (__mmask8) __U);
6000}
6001
6002static __inline__ __m256 __DEFAULT_FN_ATTRS
6003_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
6004{
6005 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6006 (__v8sf)
6007 _mm256_setzero_ps (),
6008 (__mmask8) __U);
6009}
6010
Craig Topperd2661882016-05-17 04:41:48 +00006011#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006012 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6013 (__v2df)_mm_permute_pd((X), (C)), \
6014 (__v2df)(__m128d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006015
Craig Topperd2661882016-05-17 04:41:48 +00006016#define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006017 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6018 (__v2df)_mm_permute_pd((X), (C)), \
6019 (__v2df)_mm_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006020
Craig Topperd2661882016-05-17 04:41:48 +00006021#define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006022 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6023 (__v4df)_mm256_permute_pd((X), (C)), \
6024 (__v4df)(__m256d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006025
Craig Topperd2661882016-05-17 04:41:48 +00006026#define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006027 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6028 (__v4df)_mm256_permute_pd((X), (C)), \
6029 (__v4df)_mm256_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006030
Craig Topperd2661882016-05-17 04:41:48 +00006031#define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006032 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6033 (__v4sf)_mm_permute_ps((X), (C)), \
6034 (__v4sf)(__m128)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006035
Craig Topperd2661882016-05-17 04:41:48 +00006036#define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006037 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6038 (__v4sf)_mm_permute_ps((X), (C)), \
6039 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006040
Craig Topperd2661882016-05-17 04:41:48 +00006041#define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006042 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6043 (__v8sf)_mm256_permute_ps((X), (C)), \
6044 (__v8sf)(__m256)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006045
Craig Topperd2661882016-05-17 04:41:48 +00006046#define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006047 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6048 (__v8sf)_mm256_permute_ps((X), (C)), \
6049 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006050
6051static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006052_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006053{
Craig Topper5391c982016-12-10 20:27:39 +00006054 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6055 (__v2df)_mm_permutevar_pd(__A, __C),
6056 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006057}
6058
6059static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006060_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006061{
Craig Topper5391c982016-12-10 20:27:39 +00006062 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6063 (__v2df)_mm_permutevar_pd(__A, __C),
6064 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006065}
6066
6067static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006068_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006069{
Craig Topper5391c982016-12-10 20:27:39 +00006070 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6071 (__v4df)_mm256_permutevar_pd(__A, __C),
6072 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006073}
6074
6075static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006076_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006077{
Craig Topper5391c982016-12-10 20:27:39 +00006078 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6079 (__v4df)_mm256_permutevar_pd(__A, __C),
6080 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006081}
6082
6083static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006084_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006085{
Craig Topper5391c982016-12-10 20:27:39 +00006086 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6087 (__v4sf)_mm_permutevar_ps(__A, __C),
6088 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006089}
6090
6091static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006092_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006093{
Craig Topper5391c982016-12-10 20:27:39 +00006094 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6095 (__v4sf)_mm_permutevar_ps(__A, __C),
6096 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006097}
6098
6099static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006100_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006101{
Craig Topper5391c982016-12-10 20:27:39 +00006102 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6103 (__v8sf)_mm256_permutevar_ps(__A, __C),
6104 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006105}
6106
6107static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006108_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006109{
Craig Topper5391c982016-12-10 20:27:39 +00006110 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6111 (__v8sf)_mm256_permutevar_ps(__A, __C),
6112 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006113}
6114
Michael Zuckerman07525092016-04-11 10:22:07 +00006115static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6116_mm_test_epi32_mask (__m128i __A, __m128i __B)
6117{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006118 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006119}
6120
6121static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6122_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6123{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006124 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6125 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006126}
6127
6128static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6129_mm256_test_epi32_mask (__m256i __A, __m256i __B)
6130{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006131 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
6132 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006133}
6134
6135static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6136_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6137{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006138 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6139 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006140}
6141
6142static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6143_mm_test_epi64_mask (__m128i __A, __m128i __B)
6144{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006145 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006146}
6147
6148static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6149_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6150{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006151 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6152 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006153}
6154
6155static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6156_mm256_test_epi64_mask (__m256i __A, __m256i __B)
6157{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006158 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
6159 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006160}
6161
6162static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6163_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6164{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006165 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6166 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006167}
6168
6169static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6170_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6171{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006172 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006173}
6174
6175static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6176_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6177{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006178 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6179 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006180}
6181
6182static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6183_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6184{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006185 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6186 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006187}
6188
6189static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6190_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6191{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006192 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6193 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006194}
6195
6196static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6197_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6198{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006199 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006200}
6201
6202static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6203_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6204{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006205 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6206 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006207}
6208
6209static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6210_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6211{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006212 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6213 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006214}
6215
6216static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6217_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6218{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006219 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6220 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006221}
6222
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006223static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006224_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006225{
Craig Topper79f53ca2016-06-23 06:36:42 +00006226 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6227 (__v4si)_mm_unpackhi_epi32(__A, __B),
6228 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006229}
6230
6231static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006232_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006233{
Craig Topper79f53ca2016-06-23 06:36:42 +00006234 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6235 (__v4si)_mm_unpackhi_epi32(__A, __B),
6236 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006237}
6238
6239static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006240_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006241{
Craig Topper79f53ca2016-06-23 06:36:42 +00006242 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6243 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6244 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006245}
6246
6247static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006248_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006249{
Craig Topper79f53ca2016-06-23 06:36:42 +00006250 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6251 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6252 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006253}
6254
6255static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006256_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006257{
Craig Topper79f53ca2016-06-23 06:36:42 +00006258 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6259 (__v2di)_mm_unpackhi_epi64(__A, __B),
6260 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006261}
6262
6263static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006264_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006265{
Craig Topper79f53ca2016-06-23 06:36:42 +00006266 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6267 (__v2di)_mm_unpackhi_epi64(__A, __B),
6268 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006269}
6270
6271static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006272_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006273{
Craig Topper79f53ca2016-06-23 06:36:42 +00006274 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6275 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6276 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006277}
6278
6279static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006280_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006281{
Craig Topper79f53ca2016-06-23 06:36:42 +00006282 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6283 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6284 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006285}
6286
6287static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006288_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006289{
Craig Topper79f53ca2016-06-23 06:36:42 +00006290 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6291 (__v4si)_mm_unpacklo_epi32(__A, __B),
6292 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006293}
6294
6295static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006296_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006297{
Craig Topper79f53ca2016-06-23 06:36:42 +00006298 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6299 (__v4si)_mm_unpacklo_epi32(__A, __B),
6300 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006301}
6302
6303static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006304_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006305{
Craig Topper79f53ca2016-06-23 06:36:42 +00006306 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6307 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6308 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006309}
6310
6311static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006312_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006313{
Craig Topper79f53ca2016-06-23 06:36:42 +00006314 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6315 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6316 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006317}
6318
6319static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006320_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006321{
Craig Topper79f53ca2016-06-23 06:36:42 +00006322 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6323 (__v2di)_mm_unpacklo_epi64(__A, __B),
6324 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006325}
6326
6327static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006328_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006329{
Craig Topper79f53ca2016-06-23 06:36:42 +00006330 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6331 (__v2di)_mm_unpacklo_epi64(__A, __B),
6332 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006333}
6334
6335static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006336_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006337{
Craig Topper79f53ca2016-06-23 06:36:42 +00006338 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6339 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6340 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006341}
6342
6343static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006344_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006345{
Craig Topper79f53ca2016-06-23 06:36:42 +00006346 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6347 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6348 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006349}
6350
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006351static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006352_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006353{
Craig Topper66b2fd12016-10-31 04:30:51 +00006354 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6355 (__v4si)_mm_sra_epi32(__A, __B),
6356 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006357}
6358
6359static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006360_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006361{
Craig Topper66b2fd12016-10-31 04:30:51 +00006362 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6363 (__v4si)_mm_sra_epi32(__A, __B),
6364 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006365}
6366
6367static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006368_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006369{
Craig Topper66b2fd12016-10-31 04:30:51 +00006370 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6371 (__v8si)_mm256_sra_epi32(__A, __B),
6372 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006373}
6374
6375static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006376_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006377{
Craig Topper66b2fd12016-10-31 04:30:51 +00006378 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6379 (__v8si)_mm256_sra_epi32(__A, __B),
6380 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006381}
6382
Craig Topper66b2fd12016-10-31 04:30:51 +00006383static __inline__ __m128i __DEFAULT_FN_ATTRS
6384_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6385{
6386 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6387 (__v4si)_mm_srai_epi32(__A, __B),
6388 (__v4si)__W);
6389}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006390
Craig Topper66b2fd12016-10-31 04:30:51 +00006391static __inline__ __m128i __DEFAULT_FN_ATTRS
6392_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6393{
6394 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6395 (__v4si)_mm_srai_epi32(__A, __B),
6396 (__v4si)_mm_setzero_si128());
6397}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006398
Craig Topper66b2fd12016-10-31 04:30:51 +00006399static __inline__ __m256i __DEFAULT_FN_ATTRS
6400_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6401{
6402 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6403 (__v8si)_mm256_srai_epi32(__A, __B),
6404 (__v8si)__W);
6405}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006406
Craig Topper66b2fd12016-10-31 04:30:51 +00006407static __inline__ __m256i __DEFAULT_FN_ATTRS
6408_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6409{
6410 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6411 (__v8si)_mm256_srai_epi32(__A, __B),
6412 (__v8si)_mm256_setzero_si256());
6413}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006414
6415static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006416_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006417{
Craig Topper1a441932016-11-12 07:16:59 +00006418 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006419}
6420
6421static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006422_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006423{
Craig Topper1a441932016-11-12 07:16:59 +00006424 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6425 (__v2di)_mm_sra_epi64(__A, __B), \
6426 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006427}
6428
6429static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006430_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006431{
Craig Topper1a441932016-11-12 07:16:59 +00006432 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6433 (__v2di)_mm_sra_epi64(__A, __B), \
6434 (__v2di)_mm_setzero_di());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006435}
6436
6437static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006438_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006439{
Craig Topper1a441932016-11-12 07:16:59 +00006440 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006441}
6442
6443static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006444_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006445{
Craig Topper1a441932016-11-12 07:16:59 +00006446 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6447 (__v4di)_mm256_sra_epi64(__A, __B), \
6448 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006449}
6450
6451static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006452_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006453{
Craig Topper1a441932016-11-12 07:16:59 +00006454 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6455 (__v4di)_mm256_sra_epi64(__A, __B), \
6456 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006457}
6458
Craig Topper1a441932016-11-12 07:16:59 +00006459static __inline__ __m128i __DEFAULT_FN_ATTRS
6460_mm_srai_epi64(__m128i __A, int __imm)
6461{
6462 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6463}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006464
Craig Topper1a441932016-11-12 07:16:59 +00006465static __inline__ __m128i __DEFAULT_FN_ATTRS
6466_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6467{
6468 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6469 (__v2di)_mm_srai_epi64(__A, __imm), \
6470 (__v2di)__W);
6471}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006472
Craig Topper1a441932016-11-12 07:16:59 +00006473static __inline__ __m128i __DEFAULT_FN_ATTRS
6474_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6475{
6476 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6477 (__v2di)_mm_srai_epi64(__A, __imm), \
6478 (__v2di)_mm_setzero_di());
6479}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006480
Craig Topper1a441932016-11-12 07:16:59 +00006481static __inline__ __m256i __DEFAULT_FN_ATTRS
6482_mm256_srai_epi64(__m256i __A, int __imm)
6483{
6484 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6485}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006486
Craig Topper1a441932016-11-12 07:16:59 +00006487static __inline__ __m256i __DEFAULT_FN_ATTRS
6488_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6489{
6490 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6491 (__v4di)_mm256_srai_epi64(__A, __imm), \
6492 (__v4di)__W);
6493}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006494
Craig Topper1a441932016-11-12 07:16:59 +00006495static __inline__ __m256i __DEFAULT_FN_ATTRS
6496_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6497{
6498 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6499 (__v4di)_mm256_srai_epi64(__A, __imm), \
6500 (__v4di)_mm256_setzero_si256());
6501}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006502
Craig Topperd2661882016-05-17 04:41:48 +00006503#define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6504 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6505 (__v4si)(__m128i)(B), \
6506 (__v4si)(__m128i)(C), (int)(imm), \
6507 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006508
Craig Topperd2661882016-05-17 04:41:48 +00006509#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6510 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6511 (__v4si)(__m128i)(B), \
6512 (__v4si)(__m128i)(C), (int)(imm), \
6513 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006514
Craig Topperd2661882016-05-17 04:41:48 +00006515#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6516 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6517 (__v4si)(__m128i)(B), \
6518 (__v4si)(__m128i)(C), (int)(imm), \
6519 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006520
Craig Topperd2661882016-05-17 04:41:48 +00006521#define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6522 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6523 (__v8si)(__m256i)(B), \
6524 (__v8si)(__m256i)(C), (int)(imm), \
6525 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006526
Craig Topperd2661882016-05-17 04:41:48 +00006527#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6528 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6529 (__v8si)(__m256i)(B), \
6530 (__v8si)(__m256i)(C), (int)(imm), \
6531 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006532
Craig Topperd2661882016-05-17 04:41:48 +00006533#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6534 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6535 (__v8si)(__m256i)(B), \
6536 (__v8si)(__m256i)(C), (int)(imm), \
6537 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006538
Craig Topperd2661882016-05-17 04:41:48 +00006539#define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6540 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6541 (__v2di)(__m128i)(B), \
6542 (__v2di)(__m128i)(C), (int)(imm), \
6543 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006544
Craig Topperd2661882016-05-17 04:41:48 +00006545#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6546 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6547 (__v2di)(__m128i)(B), \
6548 (__v2di)(__m128i)(C), (int)(imm), \
6549 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006550
Craig Topperd2661882016-05-17 04:41:48 +00006551#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6552 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6553 (__v2di)(__m128i)(B), \
6554 (__v2di)(__m128i)(C), (int)(imm), \
6555 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006556
Craig Topperd2661882016-05-17 04:41:48 +00006557#define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6558 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6559 (__v4di)(__m256i)(B), \
6560 (__v4di)(__m256i)(C), (int)(imm), \
6561 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006562
Craig Topperd2661882016-05-17 04:41:48 +00006563#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6564 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6565 (__v4di)(__m256i)(B), \
6566 (__v4di)(__m256i)(C), (int)(imm), \
6567 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006568
Craig Topperd2661882016-05-17 04:41:48 +00006569#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6570 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6571 (__v4di)(__m256i)(B), \
6572 (__v4di)(__m256i)(C), (int)(imm), \
6573 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006574
6575
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006576
Craig Topperd2661882016-05-17 04:41:48 +00006577#define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006578 (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \
6579 (__v8sf)(__m256)(B), \
6580 0 + ((((imm) >> 0) & 0x1) * 4), \
6581 1 + ((((imm) >> 0) & 0x1) * 4), \
6582 2 + ((((imm) >> 0) & 0x1) * 4), \
6583 3 + ((((imm) >> 0) & 0x1) * 4), \
6584 8 + ((((imm) >> 1) & 0x1) * 4), \
6585 9 + ((((imm) >> 1) & 0x1) * 4), \
6586 10 + ((((imm) >> 1) & 0x1) * 4), \
6587 11 + ((((imm) >> 1) & 0x1) * 4)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006588
Craig Topperd2661882016-05-17 04:41:48 +00006589#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006590 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6591 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6592 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006593
Craig Topperd2661882016-05-17 04:41:48 +00006594#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006595 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6596 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6597 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006598
Craig Topperd2661882016-05-17 04:41:48 +00006599#define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006600 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \
6601 (__v4df)(__m256d)(B), \
6602 0 + ((((imm) >> 0) & 0x1) * 2), \
6603 1 + ((((imm) >> 0) & 0x1) * 2), \
6604 4 + ((((imm) >> 1) & 0x1) * 2), \
6605 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006606
Craig Topperd2661882016-05-17 04:41:48 +00006607#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006608 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6609 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6610 (__v4df)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006611
Craig Topperd2661882016-05-17 04:41:48 +00006612#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006613 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6614 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6615 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006616
Craig Topperd2661882016-05-17 04:41:48 +00006617#define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006618 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6619 (__v4di)(__m256i)(B), \
6620 0 + ((((imm) >> 0) & 0x1) * 2), \
6621 1 + ((((imm) >> 0) & 0x1) * 2), \
6622 4 + ((((imm) >> 1) & 0x1) * 2), \
6623 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006624
Craig Topperd2661882016-05-17 04:41:48 +00006625#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006626 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6627 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6628 (__v8si)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006629
Craig Topperd2661882016-05-17 04:41:48 +00006630#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006631 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6632 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6633 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006634
Craig Topperd2661882016-05-17 04:41:48 +00006635#define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006636 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6637 (__v4di)(__m256i)(B), \
6638 0 + ((((imm) >> 0) & 0x1) * 2), \
6639 1 + ((((imm) >> 0) & 0x1) * 2), \
6640 4 + ((((imm) >> 1) & 0x1) * 2), \
6641 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006642
Craig Topperd2661882016-05-17 04:41:48 +00006643#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006644 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6645 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6646 (__v4di)(__m256)(W)); })
6647
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006648
Craig Topperd2661882016-05-17 04:41:48 +00006649#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006650 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6651 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6652 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006653
Simon Pilgrim427154d2016-07-04 21:30:47 +00006654#define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6655 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6656 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6657 (__v2df)(__m128d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006658
Simon Pilgrim427154d2016-07-04 21:30:47 +00006659#define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6660 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6661 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6662 (__v2df)_mm_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006663
Simon Pilgrim427154d2016-07-04 21:30:47 +00006664#define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6665 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6666 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6667 (__v4df)(__m256d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006668
Simon Pilgrim427154d2016-07-04 21:30:47 +00006669#define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6670 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6671 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6672 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006673
Simon Pilgrim427154d2016-07-04 21:30:47 +00006674#define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6675 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6676 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6677 (__v4sf)(__m128)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006678
Simon Pilgrim427154d2016-07-04 21:30:47 +00006679#define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6680 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6681 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6682 (__v4sf)_mm_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006683
Simon Pilgrim427154d2016-07-04 21:30:47 +00006684#define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6685 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6686 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6687 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006688
Simon Pilgrim427154d2016-07-04 21:30:47 +00006689#define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6690 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6691 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6692 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006693
6694static __inline__ __m128d __DEFAULT_FN_ATTRS
6695_mm_rsqrt14_pd (__m128d __A)
6696{
6697 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6698 (__v2df)
6699 _mm_setzero_pd (),
6700 (__mmask8) -1);
6701}
6702
6703static __inline__ __m128d __DEFAULT_FN_ATTRS
6704_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6705{
6706 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6707 (__v2df) __W,
6708 (__mmask8) __U);
6709}
6710
6711static __inline__ __m128d __DEFAULT_FN_ATTRS
6712_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6713{
6714 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6715 (__v2df)
6716 _mm_setzero_pd (),
6717 (__mmask8) __U);
6718}
6719
6720static __inline__ __m256d __DEFAULT_FN_ATTRS
6721_mm256_rsqrt14_pd (__m256d __A)
6722{
6723 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6724 (__v4df)
6725 _mm256_setzero_pd (),
6726 (__mmask8) -1);
6727}
6728
6729static __inline__ __m256d __DEFAULT_FN_ATTRS
6730_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6731{
6732 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6733 (__v4df) __W,
6734 (__mmask8) __U);
6735}
6736
6737static __inline__ __m256d __DEFAULT_FN_ATTRS
6738_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6739{
6740 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6741 (__v4df)
6742 _mm256_setzero_pd (),
6743 (__mmask8) __U);
6744}
6745
6746static __inline__ __m128 __DEFAULT_FN_ATTRS
6747_mm_rsqrt14_ps (__m128 __A)
6748{
6749 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6750 (__v4sf)
6751 _mm_setzero_ps (),
6752 (__mmask8) -1);
6753}
6754
6755static __inline__ __m128 __DEFAULT_FN_ATTRS
6756_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6757{
6758 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6759 (__v4sf) __W,
6760 (__mmask8) __U);
6761}
6762
6763static __inline__ __m128 __DEFAULT_FN_ATTRS
6764_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6765{
6766 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6767 (__v4sf)
6768 _mm_setzero_ps (),
6769 (__mmask8) __U);
6770}
6771
6772static __inline__ __m256 __DEFAULT_FN_ATTRS
6773_mm256_rsqrt14_ps (__m256 __A)
6774{
6775 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6776 (__v8sf)
6777 _mm256_setzero_ps (),
6778 (__mmask8) -1);
6779}
6780
6781static __inline__ __m256 __DEFAULT_FN_ATTRS
6782_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6783{
6784 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6785 (__v8sf) __W,
6786 (__mmask8) __U);
6787}
6788
6789static __inline__ __m256 __DEFAULT_FN_ATTRS
6790_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6791{
6792 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6793 (__v8sf)
6794 _mm256_setzero_ps (),
6795 (__mmask8) __U);
6796}
6797
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006798static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006799_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006800{
Craig Topper367c86d2017-01-18 02:17:10 +00006801 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6802 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006803}
6804
6805static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006806_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006807{
Craig Topper367c86d2017-01-18 02:17:10 +00006808 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6809 (__v8sf)_mm256_broadcast_f32x4(__A),
6810 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006811}
6812
6813static __inline__ __m256 __DEFAULT_FN_ATTRS
6814_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6815{
Craig Topper367c86d2017-01-18 02:17:10 +00006816 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6817 (__v8sf)_mm256_broadcast_f32x4(__A),
6818 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006819}
6820
6821static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006822_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006823{
Craig Topper367c86d2017-01-18 02:17:10 +00006824 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6825 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006826}
6827
6828static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006829_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006830{
Craig Topper367c86d2017-01-18 02:17:10 +00006831 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6832 (__v8si)_mm256_broadcast_i32x4(__A),
6833 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006834}
6835
6836static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006837_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006838{
Craig Topper367c86d2017-01-18 02:17:10 +00006839 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6840 (__v8si)_mm256_broadcast_i32x4(__A),
6841 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006842}
6843
6844static __inline__ __m256d __DEFAULT_FN_ATTRS
6845_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6846{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006847 return (__m256d)__builtin_ia32_selectpd_256(__M,
6848 (__v4df) _mm256_broadcastsd_pd(__A),
6849 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006850}
6851
6852static __inline__ __m256d __DEFAULT_FN_ATTRS
6853_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6854{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006855 return (__m256d)__builtin_ia32_selectpd_256(__M,
6856 (__v4df) _mm256_broadcastsd_pd(__A),
6857 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006858}
6859
6860static __inline__ __m128 __DEFAULT_FN_ATTRS
6861_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6862{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006863 return (__m128)__builtin_ia32_selectps_128(__M,
6864 (__v4sf) _mm_broadcastss_ps(__A),
6865 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006866}
6867
6868static __inline__ __m128 __DEFAULT_FN_ATTRS
6869_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6870{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006871 return (__m128)__builtin_ia32_selectps_128(__M,
6872 (__v4sf) _mm_broadcastss_ps(__A),
6873 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006874}
6875
6876static __inline__ __m256 __DEFAULT_FN_ATTRS
6877_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6878{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006879 return (__m256)__builtin_ia32_selectps_256(__M,
6880 (__v8sf) _mm256_broadcastss_ps(__A),
6881 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006882}
6883
6884static __inline__ __m256 __DEFAULT_FN_ATTRS
6885_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6886{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006887 return (__m256)__builtin_ia32_selectps_256(__M,
6888 (__v8sf) _mm256_broadcastss_ps(__A),
6889 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006890}
6891
6892static __inline__ __m128i __DEFAULT_FN_ATTRS
6893_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6894{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006895 return (__m128i)__builtin_ia32_selectd_128(__M,
6896 (__v4si) _mm_broadcastd_epi32(__A),
6897 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006898}
6899
6900static __inline__ __m128i __DEFAULT_FN_ATTRS
6901_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6902{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006903 return (__m128i)__builtin_ia32_selectd_128(__M,
6904 (__v4si) _mm_broadcastd_epi32(__A),
6905 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006906}
6907
6908static __inline__ __m256i __DEFAULT_FN_ATTRS
6909_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6910{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006911 return (__m256i)__builtin_ia32_selectd_256(__M,
6912 (__v8si) _mm256_broadcastd_epi32(__A),
6913 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006914}
6915
6916static __inline__ __m256i __DEFAULT_FN_ATTRS
6917_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6918{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006919 return (__m256i)__builtin_ia32_selectd_256(__M,
6920 (__v8si) _mm256_broadcastd_epi32(__A),
6921 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006922}
6923
6924static __inline__ __m128i __DEFAULT_FN_ATTRS
6925_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6926{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006927 return (__m128i)__builtin_ia32_selectq_128(__M,
6928 (__v2di) _mm_broadcastq_epi64(__A),
6929 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006930}
6931
6932static __inline__ __m128i __DEFAULT_FN_ATTRS
6933_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6934{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006935 return (__m128i)__builtin_ia32_selectq_128(__M,
6936 (__v2di) _mm_broadcastq_epi64(__A),
6937 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006938}
6939
6940static __inline__ __m256i __DEFAULT_FN_ATTRS
6941_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6942{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006943 return (__m256i)__builtin_ia32_selectq_256(__M,
6944 (__v4di) _mm256_broadcastq_epi64(__A),
6945 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006946}
6947
6948static __inline__ __m256i __DEFAULT_FN_ATTRS
6949_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6950{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006951 return (__m256i)__builtin_ia32_selectq_256(__M,
6952 (__v4di) _mm256_broadcastq_epi64(__A),
6953 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006954}
6955
Michael Zuckermane1680612016-04-13 15:02:04 +00006956static __inline__ __m128i __DEFAULT_FN_ATTRS
6957_mm_cvtsepi32_epi8 (__m128i __A)
6958{
6959 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6960 (__v16qi)_mm_undefined_si128(),
6961 (__mmask8) -1);
6962}
6963
6964static __inline__ __m128i __DEFAULT_FN_ATTRS
6965_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6966{
6967 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6968 (__v16qi) __O, __M);
6969}
6970
6971static __inline__ __m128i __DEFAULT_FN_ATTRS
6972_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6973{
6974 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6975 (__v16qi) _mm_setzero_si128 (),
6976 __M);
6977}
6978
6979static __inline__ void __DEFAULT_FN_ATTRS
6980_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6981{
6982 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6983}
6984
6985static __inline__ __m128i __DEFAULT_FN_ATTRS
6986_mm256_cvtsepi32_epi8 (__m256i __A)
6987{
6988 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6989 (__v16qi)_mm_undefined_si128(),
6990 (__mmask8) -1);
6991}
6992
6993static __inline__ __m128i __DEFAULT_FN_ATTRS
6994_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6995{
6996 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6997 (__v16qi) __O, __M);
6998}
6999
7000static __inline__ __m128i __DEFAULT_FN_ATTRS
7001_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
7002{
7003 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7004 (__v16qi) _mm_setzero_si128 (),
7005 __M);
7006}
7007
7008static __inline__ void __DEFAULT_FN_ATTRS
7009_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7010{
7011 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7012}
7013
7014static __inline__ __m128i __DEFAULT_FN_ATTRS
7015_mm_cvtsepi32_epi16 (__m128i __A)
7016{
7017 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7018 (__v8hi)_mm_setzero_si128 (),
7019 (__mmask8) -1);
7020}
7021
7022static __inline__ __m128i __DEFAULT_FN_ATTRS
7023_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7024{
7025 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7026 (__v8hi)__O,
7027 __M);
7028}
7029
7030static __inline__ __m128i __DEFAULT_FN_ATTRS
7031_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
7032{
7033 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7034 (__v8hi) _mm_setzero_si128 (),
7035 __M);
7036}
7037
7038static __inline__ void __DEFAULT_FN_ATTRS
7039_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7040{
7041 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7042}
7043
7044static __inline__ __m128i __DEFAULT_FN_ATTRS
7045_mm256_cvtsepi32_epi16 (__m256i __A)
7046{
7047 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7048 (__v8hi)_mm_undefined_si128(),
7049 (__mmask8) -1);
7050}
7051
7052static __inline__ __m128i __DEFAULT_FN_ATTRS
7053_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7054{
7055 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7056 (__v8hi) __O, __M);
7057}
7058
7059static __inline__ __m128i __DEFAULT_FN_ATTRS
7060_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
7061{
7062 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7063 (__v8hi) _mm_setzero_si128 (),
7064 __M);
7065}
7066
7067static __inline__ void __DEFAULT_FN_ATTRS
7068_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7069{
7070 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7071}
7072
7073static __inline__ __m128i __DEFAULT_FN_ATTRS
7074_mm_cvtsepi64_epi8 (__m128i __A)
7075{
7076 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7077 (__v16qi)_mm_undefined_si128(),
7078 (__mmask8) -1);
7079}
7080
7081static __inline__ __m128i __DEFAULT_FN_ATTRS
7082_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7083{
7084 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7085 (__v16qi) __O, __M);
7086}
7087
7088static __inline__ __m128i __DEFAULT_FN_ATTRS
7089_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
7090{
7091 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7092 (__v16qi) _mm_setzero_si128 (),
7093 __M);
7094}
7095
7096static __inline__ void __DEFAULT_FN_ATTRS
7097_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7098{
7099 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7100}
7101
7102static __inline__ __m128i __DEFAULT_FN_ATTRS
7103_mm256_cvtsepi64_epi8 (__m256i __A)
7104{
7105 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7106 (__v16qi)_mm_undefined_si128(),
7107 (__mmask8) -1);
7108}
7109
7110static __inline__ __m128i __DEFAULT_FN_ATTRS
7111_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7112{
7113 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7114 (__v16qi) __O, __M);
7115}
7116
7117static __inline__ __m128i __DEFAULT_FN_ATTRS
7118_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
7119{
7120 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7121 (__v16qi) _mm_setzero_si128 (),
7122 __M);
7123}
7124
7125static __inline__ void __DEFAULT_FN_ATTRS
7126_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7127{
7128 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7129}
7130
7131static __inline__ __m128i __DEFAULT_FN_ATTRS
7132_mm_cvtsepi64_epi32 (__m128i __A)
7133{
7134 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7135 (__v4si)_mm_undefined_si128(),
7136 (__mmask8) -1);
7137}
7138
7139static __inline__ __m128i __DEFAULT_FN_ATTRS
7140_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7141{
7142 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7143 (__v4si) __O, __M);
7144}
7145
7146static __inline__ __m128i __DEFAULT_FN_ATTRS
7147_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7148{
7149 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7150 (__v4si) _mm_setzero_si128 (),
7151 __M);
7152}
7153
7154static __inline__ void __DEFAULT_FN_ATTRS
7155_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7156{
7157 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7158}
7159
7160static __inline__ __m128i __DEFAULT_FN_ATTRS
7161_mm256_cvtsepi64_epi32 (__m256i __A)
7162{
7163 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7164 (__v4si)_mm_undefined_si128(),
7165 (__mmask8) -1);
7166}
7167
7168static __inline__ __m128i __DEFAULT_FN_ATTRS
7169_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7170{
7171 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7172 (__v4si)__O,
7173 __M);
7174}
7175
7176static __inline__ __m128i __DEFAULT_FN_ATTRS
7177_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7178{
7179 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7180 (__v4si) _mm_setzero_si128 (),
7181 __M);
7182}
7183
7184static __inline__ void __DEFAULT_FN_ATTRS
7185_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7186{
7187 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7188}
7189
7190static __inline__ __m128i __DEFAULT_FN_ATTRS
7191_mm_cvtsepi64_epi16 (__m128i __A)
7192{
7193 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7194 (__v8hi)_mm_undefined_si128(),
7195 (__mmask8) -1);
7196}
7197
7198static __inline__ __m128i __DEFAULT_FN_ATTRS
7199_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7200{
7201 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7202 (__v8hi) __O, __M);
7203}
7204
7205static __inline__ __m128i __DEFAULT_FN_ATTRS
7206_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7207{
7208 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7209 (__v8hi) _mm_setzero_si128 (),
7210 __M);
7211}
7212
7213static __inline__ void __DEFAULT_FN_ATTRS
7214_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7215{
7216 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7217}
7218
7219static __inline__ __m128i __DEFAULT_FN_ATTRS
7220_mm256_cvtsepi64_epi16 (__m256i __A)
7221{
7222 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7223 (__v8hi)_mm_undefined_si128(),
7224 (__mmask8) -1);
7225}
7226
7227static __inline__ __m128i __DEFAULT_FN_ATTRS
7228_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7229{
7230 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7231 (__v8hi) __O, __M);
7232}
7233
7234static __inline__ __m128i __DEFAULT_FN_ATTRS
7235_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7236{
7237 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7238 (__v8hi) _mm_setzero_si128 (),
7239 __M);
7240}
7241
7242static __inline__ void __DEFAULT_FN_ATTRS
7243_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7244{
7245 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7246}
7247
Michael Zuckermand8715312016-04-14 06:48:09 +00007248static __inline__ __m128i __DEFAULT_FN_ATTRS
7249_mm_cvtusepi32_epi8 (__m128i __A)
7250{
7251 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7252 (__v16qi)_mm_undefined_si128(),
7253 (__mmask8) -1);
7254}
7255
7256static __inline__ __m128i __DEFAULT_FN_ATTRS
7257_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7258{
7259 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7260 (__v16qi) __O,
7261 __M);
7262}
7263
7264static __inline__ __m128i __DEFAULT_FN_ATTRS
7265_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7266{
7267 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7268 (__v16qi) _mm_setzero_si128 (),
7269 __M);
7270}
7271
7272static __inline__ void __DEFAULT_FN_ATTRS
7273_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7274{
7275 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7276}
7277
7278static __inline__ __m128i __DEFAULT_FN_ATTRS
7279_mm256_cvtusepi32_epi8 (__m256i __A)
7280{
7281 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7282 (__v16qi)_mm_undefined_si128(),
7283 (__mmask8) -1);
7284}
7285
7286static __inline__ __m128i __DEFAULT_FN_ATTRS
7287_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7288{
7289 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7290 (__v16qi) __O,
7291 __M);
7292}
7293
7294static __inline__ __m128i __DEFAULT_FN_ATTRS
7295_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7296{
7297 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7298 (__v16qi) _mm_setzero_si128 (),
7299 __M);
7300}
7301
7302static __inline__ void __DEFAULT_FN_ATTRS
7303_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7304{
7305 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7306}
7307
7308static __inline__ __m128i __DEFAULT_FN_ATTRS
7309_mm_cvtusepi32_epi16 (__m128i __A)
7310{
7311 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7312 (__v8hi)_mm_undefined_si128(),
7313 (__mmask8) -1);
7314}
7315
7316static __inline__ __m128i __DEFAULT_FN_ATTRS
7317_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7318{
7319 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7320 (__v8hi) __O, __M);
7321}
7322
7323static __inline__ __m128i __DEFAULT_FN_ATTRS
7324_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7325{
7326 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7327 (__v8hi) _mm_setzero_si128 (),
7328 __M);
7329}
7330
7331static __inline__ void __DEFAULT_FN_ATTRS
7332_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7333{
7334 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7335}
7336
7337static __inline__ __m128i __DEFAULT_FN_ATTRS
7338_mm256_cvtusepi32_epi16 (__m256i __A)
7339{
7340 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7341 (__v8hi) _mm_undefined_si128(),
7342 (__mmask8) -1);
7343}
7344
7345static __inline__ __m128i __DEFAULT_FN_ATTRS
7346_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7347{
7348 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7349 (__v8hi) __O, __M);
7350}
7351
7352static __inline__ __m128i __DEFAULT_FN_ATTRS
7353_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7354{
7355 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7356 (__v8hi) _mm_setzero_si128 (),
7357 __M);
7358}
7359
7360static __inline__ void __DEFAULT_FN_ATTRS
7361_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7362{
7363 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7364}
7365
7366static __inline__ __m128i __DEFAULT_FN_ATTRS
7367_mm_cvtusepi64_epi8 (__m128i __A)
7368{
7369 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7370 (__v16qi)_mm_undefined_si128(),
7371 (__mmask8) -1);
7372}
7373
7374static __inline__ __m128i __DEFAULT_FN_ATTRS
7375_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7376{
7377 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7378 (__v16qi) __O,
7379 __M);
7380}
7381
7382static __inline__ __m128i __DEFAULT_FN_ATTRS
7383_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7384{
7385 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7386 (__v16qi) _mm_setzero_si128 (),
7387 __M);
7388}
7389
7390static __inline__ void __DEFAULT_FN_ATTRS
7391_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7392{
7393 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7394}
7395
7396static __inline__ __m128i __DEFAULT_FN_ATTRS
7397_mm256_cvtusepi64_epi8 (__m256i __A)
7398{
7399 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7400 (__v16qi)_mm_undefined_si128(),
7401 (__mmask8) -1);
7402}
7403
7404static __inline__ __m128i __DEFAULT_FN_ATTRS
7405_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7406{
7407 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7408 (__v16qi) __O,
7409 __M);
7410}
7411
7412static __inline__ __m128i __DEFAULT_FN_ATTRS
7413_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7414{
7415 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7416 (__v16qi) _mm_setzero_si128 (),
7417 __M);
7418}
7419
7420static __inline__ void __DEFAULT_FN_ATTRS
7421_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7422{
7423 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7424}
7425
7426static __inline__ __m128i __DEFAULT_FN_ATTRS
7427_mm_cvtusepi64_epi32 (__m128i __A)
7428{
7429 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7430 (__v4si)_mm_undefined_si128(),
7431 (__mmask8) -1);
7432}
7433
7434static __inline__ __m128i __DEFAULT_FN_ATTRS
7435_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7436{
7437 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7438 (__v4si) __O, __M);
7439}
7440
7441static __inline__ __m128i __DEFAULT_FN_ATTRS
7442_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7443{
7444 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7445 (__v4si) _mm_setzero_si128 (),
7446 __M);
7447}
7448
7449static __inline__ void __DEFAULT_FN_ATTRS
7450_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7451{
7452 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7453}
7454
7455static __inline__ __m128i __DEFAULT_FN_ATTRS
7456_mm256_cvtusepi64_epi32 (__m256i __A)
7457{
7458 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7459 (__v4si)_mm_undefined_si128(),
7460 (__mmask8) -1);
7461}
7462
7463static __inline__ __m128i __DEFAULT_FN_ATTRS
7464_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7465{
7466 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7467 (__v4si) __O, __M);
7468}
7469
7470static __inline__ __m128i __DEFAULT_FN_ATTRS
7471_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7472{
7473 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7474 (__v4si) _mm_setzero_si128 (),
7475 __M);
7476}
7477
7478static __inline__ void __DEFAULT_FN_ATTRS
7479_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7480{
7481 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7482}
7483
7484static __inline__ __m128i __DEFAULT_FN_ATTRS
7485_mm_cvtusepi64_epi16 (__m128i __A)
7486{
7487 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7488 (__v8hi)_mm_undefined_si128(),
7489 (__mmask8) -1);
7490}
7491
7492static __inline__ __m128i __DEFAULT_FN_ATTRS
7493_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7494{
7495 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7496 (__v8hi) __O, __M);
7497}
7498
7499static __inline__ __m128i __DEFAULT_FN_ATTRS
7500_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7501{
7502 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7503 (__v8hi) _mm_setzero_si128 (),
7504 __M);
7505}
7506
7507static __inline__ void __DEFAULT_FN_ATTRS
7508_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7509{
7510 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7511}
7512
7513static __inline__ __m128i __DEFAULT_FN_ATTRS
7514_mm256_cvtusepi64_epi16 (__m256i __A)
7515{
7516 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7517 (__v8hi)_mm_undefined_si128(),
7518 (__mmask8) -1);
7519}
7520
7521static __inline__ __m128i __DEFAULT_FN_ATTRS
7522_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7523{
7524 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7525 (__v8hi) __O, __M);
7526}
7527
7528static __inline__ __m128i __DEFAULT_FN_ATTRS
7529_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7530{
7531 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7532 (__v8hi) _mm_setzero_si128 (),
7533 __M);
7534}
7535
7536static __inline__ void __DEFAULT_FN_ATTRS
7537_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7538{
7539 return __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7540}
7541
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007542static __inline__ __m128i __DEFAULT_FN_ATTRS
7543_mm_cvtepi32_epi8 (__m128i __A)
7544{
7545 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7546 (__v16qi)_mm_undefined_si128(),
7547 (__mmask8) -1);
7548}
7549
7550static __inline__ __m128i __DEFAULT_FN_ATTRS
7551_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7552{
7553 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7554 (__v16qi) __O, __M);
7555}
7556
7557static __inline__ __m128i __DEFAULT_FN_ATTRS
7558_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7559{
7560 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7561 (__v16qi)
7562 _mm_setzero_si128 (),
7563 __M);
7564}
7565
7566static __inline__ void __DEFAULT_FN_ATTRS
7567_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7568{
7569 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7570}
7571
7572static __inline__ __m128i __DEFAULT_FN_ATTRS
7573_mm256_cvtepi32_epi8 (__m256i __A)
7574{
7575 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7576 (__v16qi)_mm_undefined_si128(),
7577 (__mmask8) -1);
7578}
7579
7580static __inline__ __m128i __DEFAULT_FN_ATTRS
7581_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7582{
7583 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7584 (__v16qi) __O, __M);
7585}
7586
7587static __inline__ __m128i __DEFAULT_FN_ATTRS
7588_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7589{
7590 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7591 (__v16qi) _mm_setzero_si128 (),
7592 __M);
7593}
7594
7595static __inline__ void __DEFAULT_FN_ATTRS
7596_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7597{
7598 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7599}
7600
7601static __inline__ __m128i __DEFAULT_FN_ATTRS
7602_mm_cvtepi32_epi16 (__m128i __A)
7603{
7604 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7605 (__v8hi) _mm_setzero_si128 (),
7606 (__mmask8) -1);
7607}
7608
7609static __inline__ __m128i __DEFAULT_FN_ATTRS
7610_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7611{
7612 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7613 (__v8hi) __O, __M);
7614}
7615
7616static __inline__ __m128i __DEFAULT_FN_ATTRS
7617_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7618{
7619 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7620 (__v8hi) _mm_setzero_si128 (),
7621 __M);
7622}
7623
7624static __inline__ void __DEFAULT_FN_ATTRS
7625_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7626{
7627 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7628}
7629
7630static __inline__ __m128i __DEFAULT_FN_ATTRS
7631_mm256_cvtepi32_epi16 (__m256i __A)
7632{
7633 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7634 (__v8hi)_mm_setzero_si128 (),
7635 (__mmask8) -1);
7636}
7637
7638static __inline__ __m128i __DEFAULT_FN_ATTRS
7639_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7640{
7641 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7642 (__v8hi) __O, __M);
7643}
7644
7645static __inline__ __m128i __DEFAULT_FN_ATTRS
7646_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7647{
7648 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7649 (__v8hi) _mm_setzero_si128 (),
7650 __M);
7651}
7652
7653static __inline__ void __DEFAULT_FN_ATTRS
7654_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7655{
7656 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7657}
7658
7659static __inline__ __m128i __DEFAULT_FN_ATTRS
7660_mm_cvtepi64_epi8 (__m128i __A)
7661{
7662 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7663 (__v16qi) _mm_undefined_si128(),
7664 (__mmask8) -1);
7665}
7666
7667static __inline__ __m128i __DEFAULT_FN_ATTRS
7668_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7669{
7670 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7671 (__v16qi) __O, __M);
7672}
7673
7674static __inline__ __m128i __DEFAULT_FN_ATTRS
7675_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7676{
7677 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7678 (__v16qi) _mm_setzero_si128 (),
7679 __M);
7680}
7681
7682static __inline__ void __DEFAULT_FN_ATTRS
7683_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7684{
7685 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7686}
7687
7688static __inline__ __m128i __DEFAULT_FN_ATTRS
7689_mm256_cvtepi64_epi8 (__m256i __A)
7690{
7691 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7692 (__v16qi) _mm_undefined_si128(),
7693 (__mmask8) -1);
7694}
7695
7696static __inline__ __m128i __DEFAULT_FN_ATTRS
7697_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7698{
7699 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7700 (__v16qi) __O, __M);
7701}
7702
7703static __inline__ __m128i __DEFAULT_FN_ATTRS
7704_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7705{
7706 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7707 (__v16qi) _mm_setzero_si128 (),
7708 __M);
7709}
7710
7711static __inline__ void __DEFAULT_FN_ATTRS
7712_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7713{
7714 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7715}
7716
7717static __inline__ __m128i __DEFAULT_FN_ATTRS
7718_mm_cvtepi64_epi32 (__m128i __A)
7719{
7720 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7721 (__v4si)_mm_undefined_si128(),
7722 (__mmask8) -1);
7723}
7724
7725static __inline__ __m128i __DEFAULT_FN_ATTRS
7726_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7727{
7728 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7729 (__v4si) __O, __M);
7730}
7731
7732static __inline__ __m128i __DEFAULT_FN_ATTRS
7733_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7734{
7735 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7736 (__v4si) _mm_setzero_si128 (),
7737 __M);
7738}
7739
7740static __inline__ void __DEFAULT_FN_ATTRS
7741_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7742{
7743 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7744}
7745
7746static __inline__ __m128i __DEFAULT_FN_ATTRS
7747_mm256_cvtepi64_epi32 (__m256i __A)
7748{
7749 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
7750 (__v4si) _mm_undefined_si128(),
7751 (__mmask8) -1);
7752}
7753
7754static __inline__ __m128i __DEFAULT_FN_ATTRS
7755_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7756{
7757 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
7758 (__v4si) __O, __M);
7759}
7760
7761static __inline__ __m128i __DEFAULT_FN_ATTRS
7762_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7763{
7764 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
7765 (__v4si) _mm_setzero_si128 (),
7766 __M);
7767}
7768
7769static __inline__ void __DEFAULT_FN_ATTRS
7770_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7771{
7772 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7773}
7774
7775static __inline__ __m128i __DEFAULT_FN_ATTRS
7776_mm_cvtepi64_epi16 (__m128i __A)
7777{
7778 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7779 (__v8hi) _mm_undefined_si128(),
7780 (__mmask8) -1);
7781}
7782
7783static __inline__ __m128i __DEFAULT_FN_ATTRS
7784_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7785{
7786 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7787 (__v8hi)__O,
7788 __M);
7789}
7790
7791static __inline__ __m128i __DEFAULT_FN_ATTRS
7792_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7793{
7794 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7795 (__v8hi) _mm_setzero_si128 (),
7796 __M);
7797}
7798
7799static __inline__ void __DEFAULT_FN_ATTRS
7800_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7801{
7802 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7803}
7804
7805static __inline__ __m128i __DEFAULT_FN_ATTRS
7806_mm256_cvtepi64_epi16 (__m256i __A)
7807{
7808 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7809 (__v8hi)_mm_undefined_si128(),
7810 (__mmask8) -1);
7811}
7812
7813static __inline__ __m128i __DEFAULT_FN_ATTRS
7814_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7815{
7816 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7817 (__v8hi) __O, __M);
7818}
7819
7820static __inline__ __m128i __DEFAULT_FN_ATTRS
7821_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7822{
7823 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7824 (__v8hi) _mm_setzero_si128 (),
7825 __M);
7826}
7827
7828static __inline__ void __DEFAULT_FN_ATTRS
7829_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7830{
7831 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7832}
7833
Craig Topperd2661882016-05-17 04:41:48 +00007834#define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007835 (__m128)__builtin_shufflevector((__v8sf)(__m256)(A), \
7836 (__v8sf)_mm256_undefined_ps(), \
7837 ((imm) & 1) ? 4 : 0, \
7838 ((imm) & 1) ? 5 : 1, \
7839 ((imm) & 1) ? 6 : 2, \
7840 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007841
Craig Topperd2661882016-05-17 04:41:48 +00007842#define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007843 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7844 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7845 (__v4sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007846
Craig Topperd2661882016-05-17 04:41:48 +00007847#define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007848 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7849 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7850 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007851
Craig Topperd2661882016-05-17 04:41:48 +00007852#define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007853 (__m128i)__builtin_shufflevector((__v8si)(__m256)(A), \
7854 (__v8si)_mm256_undefined_si256(), \
7855 ((imm) & 1) ? 4 : 0, \
7856 ((imm) & 1) ? 5 : 1, \
7857 ((imm) & 1) ? 6 : 2, \
7858 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007859
Craig Topperd2661882016-05-17 04:41:48 +00007860#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007861 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007862 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7863 (__v4si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007864
Craig Topperd2661882016-05-17 04:41:48 +00007865#define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007866 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007867 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7868 (__v4si)_mm_setzero_si128()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007869
Craig Topperd2661882016-05-17 04:41:48 +00007870#define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007871 (__m256)__builtin_shufflevector((__v8sf)(A), \
7872 (__v8sf)_mm256_castps128_ps256((__m128)(B)), \
7873 ((imm) & 0x1) ? 0 : 8, \
7874 ((imm) & 0x1) ? 1 : 9, \
7875 ((imm) & 0x1) ? 2 : 10, \
7876 ((imm) & 0x1) ? 3 : 11, \
7877 ((imm) & 0x1) ? 8 : 4, \
7878 ((imm) & 0x1) ? 9 : 5, \
7879 ((imm) & 0x1) ? 10 : 6, \
7880 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007881
Craig Topperd2661882016-05-17 04:41:48 +00007882#define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007883 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7884 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7885 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007886
Craig Topperd2661882016-05-17 04:41:48 +00007887#define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007888 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7889 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7890 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007891
Craig Topperd2661882016-05-17 04:41:48 +00007892#define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007893 (__m256i)__builtin_shufflevector((__v8si)(A), \
7894 (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
7895 ((imm) & 0x1) ? 0 : 8, \
7896 ((imm) & 0x1) ? 1 : 9, \
7897 ((imm) & 0x1) ? 2 : 10, \
7898 ((imm) & 0x1) ? 3 : 11, \
7899 ((imm) & 0x1) ? 8 : 4, \
7900 ((imm) & 0x1) ? 9 : 5, \
7901 ((imm) & 0x1) ? 10 : 6, \
7902 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007903
Craig Topperd2661882016-05-17 04:41:48 +00007904#define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007905 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7906 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7907 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007908
Craig Topperd2661882016-05-17 04:41:48 +00007909#define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007910 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7911 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7912 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007913
Craig Topperd2661882016-05-17 04:41:48 +00007914#define _mm_getmant_pd(A, B, C) __extension__({\
7915 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7916 (int)(((C)<<2) | (B)), \
7917 (__v2df)_mm_setzero_pd(), \
7918 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007919
Craig Topperd2661882016-05-17 04:41:48 +00007920#define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
7921 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7922 (int)(((C)<<2) | (B)), \
7923 (__v2df)(__m128d)(W), \
7924 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007925
Craig Topperd2661882016-05-17 04:41:48 +00007926#define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
7927 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7928 (int)(((C)<<2) | (B)), \
7929 (__v2df)_mm_setzero_pd(), \
7930 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007931
Craig Topperd2661882016-05-17 04:41:48 +00007932#define _mm256_getmant_pd(A, B, C) __extension__ ({ \
7933 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7934 (int)(((C)<<2) | (B)), \
7935 (__v4df)_mm256_setzero_pd(), \
7936 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007937
Craig Topperd2661882016-05-17 04:41:48 +00007938#define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7939 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7940 (int)(((C)<<2) | (B)), \
7941 (__v4df)(__m256d)(W), \
7942 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007943
Craig Topperd2661882016-05-17 04:41:48 +00007944#define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7945 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7946 (int)(((C)<<2) | (B)), \
7947 (__v4df)_mm256_setzero_pd(), \
7948 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007949
Craig Topperd2661882016-05-17 04:41:48 +00007950#define _mm_getmant_ps(A, B, C) __extension__ ({ \
7951 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7952 (int)(((C)<<2) | (B)), \
7953 (__v4sf)_mm_setzero_ps(), \
7954 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007955
Craig Topperd2661882016-05-17 04:41:48 +00007956#define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7957 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7958 (int)(((C)<<2) | (B)), \
7959 (__v4sf)(__m128)(W), \
7960 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007961
Craig Topperd2661882016-05-17 04:41:48 +00007962#define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7963 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7964 (int)(((C)<<2) | (B)), \
7965 (__v4sf)_mm_setzero_ps(), \
7966 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007967
Craig Topperd2661882016-05-17 04:41:48 +00007968#define _mm256_getmant_ps(A, B, C) __extension__ ({ \
7969 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7970 (int)(((C)<<2) | (B)), \
7971 (__v8sf)_mm256_setzero_ps(), \
7972 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007973
Craig Topperd2661882016-05-17 04:41:48 +00007974#define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7975 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7976 (int)(((C)<<2) | (B)), \
7977 (__v8sf)(__m256)(W), \
7978 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007979
Craig Topperd2661882016-05-17 04:41:48 +00007980#define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7981 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7982 (int)(((C)<<2) | (B)), \
7983 (__v8sf)_mm256_setzero_ps(), \
7984 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007985
Craig Topperd2661882016-05-17 04:41:48 +00007986#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7987 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7988 (double 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 _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7993 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7994 (long long const *)(addr), \
7995 (__v2di)(__m128i)(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_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7999 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
8000 (double 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 _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8005 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
8006 (long long const *)(addr), \
8007 (__v4di)(__m256i)(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_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8011 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
8012 (float 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 _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8017 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
8018 (int const *)(addr), \
8019 (__v2di)(__m128i)(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_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8023 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
8024 (float 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 _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8029 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
8030 (int const *)(addr), \
8031 (__v4di)(__m256i)(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_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8035 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
8036 (double 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 _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8041 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
8042 (long long 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_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8047 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
8048 (double 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 _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8053 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
8054 (long long 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_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8059 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
8060 (float 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 _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8065 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
8066 (int const *)(addr), \
8067 (__v4si)(__m128i)(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_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8071 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
8072 (float const *)(addr), \
8073 (__v8si)(__m256i)(index), \
8074 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008075
Craig Topperd2661882016-05-17 04:41:48 +00008076#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8077 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
8078 (int const *)(addr), \
8079 (__v8si)(__m256i)(index), \
8080 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008081
Simon Pilgrim30db8112016-07-04 13:34:44 +00008082#define _mm256_permutex_pd(X, C) __extension__ ({ \
8083 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
8084 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008085 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8086 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008087
Simon Pilgrim30db8112016-07-04 13:34:44 +00008088#define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
8089 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8090 (__v4df)_mm256_permutex_pd((X), (C)), \
8091 (__v4df)(__m256d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008092
Simon Pilgrim30db8112016-07-04 13:34:44 +00008093#define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
8094 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8095 (__v4df)_mm256_permutex_pd((X), (C)), \
8096 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008097
Simon Pilgrim30db8112016-07-04 13:34:44 +00008098#define _mm256_permutex_epi64(X, C) __extension__ ({ \
8099 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
8100 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008101 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8102 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008103
Simon Pilgrim30db8112016-07-04 13:34:44 +00008104#define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
8105 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8106 (__v4di)_mm256_permutex_epi64((X), (C)), \
8107 (__v4di)(__m256i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008108
Simon Pilgrim30db8112016-07-04 13:34:44 +00008109#define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
8110 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8111 (__v4di)_mm256_permutex_epi64((X), (C)), \
8112 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008113
8114static __inline__ __m256d __DEFAULT_FN_ATTRS
8115_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
8116{
8117 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8118 (__v4di) __X,
8119 (__v4df) _mm256_undefined_si256 (),
8120 (__mmask8) -1);
8121}
8122
8123static __inline__ __m256d __DEFAULT_FN_ATTRS
8124_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
8125 __m256d __Y)
8126{
8127 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8128 (__v4di) __X,
8129 (__v4df) __W,
8130 (__mmask8) __U);
8131}
8132
8133static __inline__ __m256d __DEFAULT_FN_ATTRS
8134_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
8135{
8136 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8137 (__v4di) __X,
8138 (__v4df) _mm256_setzero_pd (),
8139 (__mmask8) __U);
8140}
8141
8142static __inline__ __m256i __DEFAULT_FN_ATTRS
8143_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
8144{
8145 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8146 (__v4di) __X,
8147 (__v4di) _mm256_setzero_si256 (),
8148 (__mmask8) __M);
8149}
8150
8151static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00008152_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008153{
8154 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8155 (__v4di) __X,
8156 (__v4di) _mm256_undefined_si256 (),
8157 (__mmask8) -1);
8158}
8159
8160static __inline__ __m256i __DEFAULT_FN_ATTRS
8161_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
8162 __m256i __Y)
8163{
8164 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8165 (__v4di) __X,
8166 (__v4di) __W,
8167 __M);
8168}
8169
Craig Topper5dc6ca82018-02-24 06:46:42 +00008170#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
8171
Michael Zuckerman8938e832016-04-25 05:32:35 +00008172static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008173_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008174{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008175 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8176 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8177 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008178}
8179
8180static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008181_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008182{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008183 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8184 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8185 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008186}
8187
Craig Topper5dc6ca82018-02-24 06:46:42 +00008188#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
8189
8190static __inline__ __m256i __DEFAULT_FN_ATTRS
8191_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
8192 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008193{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008194 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8195 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8196 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008197}
8198
8199static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008200_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008201{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008202 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8203 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8204 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008205}
8206
Craig Topperd2661882016-05-17 04:41:48 +00008207#define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008208 (__m128i)__builtin_shufflevector((__v4si)(__m128i)(B), \
8209 (__v4si)(__m128i)(A), \
8210 ((int)(imm) & 0x3) + 0, \
8211 ((int)(imm) & 0x3) + 1, \
8212 ((int)(imm) & 0x3) + 2, \
8213 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008214
Craig Topperd2661882016-05-17 04:41:48 +00008215#define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008216 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8217 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8218 (__v4si)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008219
Craig Topperd2661882016-05-17 04:41:48 +00008220#define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008221 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8222 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8223 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008224
Craig Topperd2661882016-05-17 04:41:48 +00008225#define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008226 (__m256i)__builtin_shufflevector((__v8si)(__m256i)(B), \
8227 (__v8si)(__m256i)(A), \
8228 ((int)(imm) & 0x7) + 0, \
8229 ((int)(imm) & 0x7) + 1, \
8230 ((int)(imm) & 0x7) + 2, \
8231 ((int)(imm) & 0x7) + 3, \
8232 ((int)(imm) & 0x7) + 4, \
8233 ((int)(imm) & 0x7) + 5, \
8234 ((int)(imm) & 0x7) + 6, \
8235 ((int)(imm) & 0x7) + 7); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008236
Craig Topperd2661882016-05-17 04:41:48 +00008237#define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008238 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8239 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8240 (__v8si)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008241
Craig Topperd2661882016-05-17 04:41:48 +00008242#define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008243 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8244 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8245 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008246
Craig Topperd2661882016-05-17 04:41:48 +00008247#define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008248 (__m128i)__builtin_shufflevector((__v2di)(__m128i)(B), \
8249 (__v2di)(__m128i)(A), \
8250 ((int)(imm) & 0x1) + 0, \
8251 ((int)(imm) & 0x1) + 1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008252
Craig Topperd2661882016-05-17 04:41:48 +00008253#define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008254 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8255 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8256 (__v2di)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008257
Craig Topperd2661882016-05-17 04:41:48 +00008258#define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008259 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8260 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8261 (__v2di)_mm_setzero_di()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008262
Craig Topperd2661882016-05-17 04:41:48 +00008263#define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008264 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(B), \
8265 (__v4di)(__m256i)(A), \
8266 ((int)(imm) & 0x3) + 0, \
8267 ((int)(imm) & 0x3) + 1, \
8268 ((int)(imm) & 0x3) + 2, \
8269 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008270
Craig Topperd2661882016-05-17 04:41:48 +00008271#define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008272 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8273 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8274 (__v4di)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008275
Craig Topperd2661882016-05-17 04:41:48 +00008276#define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008277 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8278 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8279 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008280
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008281static __inline__ __m128 __DEFAULT_FN_ATTRS
8282_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8283{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008284 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8285 (__v4sf)_mm_movehdup_ps(__A),
8286 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008287}
8288
8289static __inline__ __m128 __DEFAULT_FN_ATTRS
8290_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8291{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008292 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8293 (__v4sf)_mm_movehdup_ps(__A),
8294 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008295}
8296
8297static __inline__ __m256 __DEFAULT_FN_ATTRS
8298_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8299{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008300 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8301 (__v8sf)_mm256_movehdup_ps(__A),
8302 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008303}
8304
8305static __inline__ __m256 __DEFAULT_FN_ATTRS
8306_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8307{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008308 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8309 (__v8sf)_mm256_movehdup_ps(__A),
8310 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008311}
8312
8313static __inline__ __m128 __DEFAULT_FN_ATTRS
8314_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8315{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008316 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8317 (__v4sf)_mm_moveldup_ps(__A),
8318 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008319}
8320
8321static __inline__ __m128 __DEFAULT_FN_ATTRS
8322_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8323{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008324 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8325 (__v4sf)_mm_moveldup_ps(__A),
8326 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008327}
8328
8329static __inline__ __m256 __DEFAULT_FN_ATTRS
8330_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8331{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008332 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8333 (__v8sf)_mm256_moveldup_ps(__A),
8334 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008335}
8336
8337static __inline__ __m256 __DEFAULT_FN_ATTRS
8338_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8339{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008340 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8341 (__v8sf)_mm256_moveldup_ps(__A),
8342 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008343}
8344
Craig Topperd2661882016-05-17 04:41:48 +00008345#define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008346 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8347 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8348 (__v8si)(__m256i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008349
Craig Topperd2661882016-05-17 04:41:48 +00008350#define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008351 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8352 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8353 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008354
Craig Topperd2661882016-05-17 04:41:48 +00008355#define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008356 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8357 (__v4si)_mm_shuffle_epi32((A), (I)), \
8358 (__v4si)(__m128i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008359
Craig Topperd2661882016-05-17 04:41:48 +00008360#define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008361 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8362 (__v4si)_mm_shuffle_epi32((A), (I)), \
8363 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008364
8365static __inline__ __m128d __DEFAULT_FN_ATTRS
8366_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8367{
Igor Bregeraadb8762016-06-08 13:59:20 +00008368 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8369 (__v2df) __A,
8370 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008371}
8372
8373static __inline__ __m128d __DEFAULT_FN_ATTRS
8374_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8375{
Igor Bregeraadb8762016-06-08 13:59:20 +00008376 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8377 (__v2df) __A,
8378 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008379}
8380
8381static __inline__ __m256d __DEFAULT_FN_ATTRS
8382_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8383{
Igor Bregeraadb8762016-06-08 13:59:20 +00008384 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8385 (__v4df) __A,
8386 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008387}
8388
8389static __inline__ __m256d __DEFAULT_FN_ATTRS
8390_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8391{
Igor Bregeraadb8762016-06-08 13:59:20 +00008392 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8393 (__v4df) __A,
8394 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008395}
8396
8397static __inline__ __m128 __DEFAULT_FN_ATTRS
8398_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8399{
Igor Bregeraadb8762016-06-08 13:59:20 +00008400 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8401 (__v4sf) __A,
8402 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008403}
8404
8405static __inline__ __m128 __DEFAULT_FN_ATTRS
8406_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8407{
Igor Bregeraadb8762016-06-08 13:59:20 +00008408 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8409 (__v4sf) __A,
8410 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008411}
8412
8413static __inline__ __m256 __DEFAULT_FN_ATTRS
8414_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8415{
Igor Bregeraadb8762016-06-08 13:59:20 +00008416 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8417 (__v8sf) __A,
8418 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008419}
8420
8421static __inline__ __m256 __DEFAULT_FN_ATTRS
8422_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8423{
Igor Bregeraadb8762016-06-08 13:59:20 +00008424 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8425 (__v8sf) __A,
8426 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008427}
8428
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008429static __inline__ __m128 __DEFAULT_FN_ATTRS
8430_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8431{
8432 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8433 (__v4sf) __W,
8434 (__mmask8) __U);
8435}
8436
8437static __inline__ __m128 __DEFAULT_FN_ATTRS
8438_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8439{
8440 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8441 (__v4sf)
8442 _mm_setzero_ps (),
8443 (__mmask8) __U);
8444}
8445
8446static __inline__ __m256 __DEFAULT_FN_ATTRS
8447_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8448{
8449 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8450 (__v8sf) __W,
8451 (__mmask8) __U);
8452}
8453
8454static __inline__ __m256 __DEFAULT_FN_ATTRS
8455_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8456{
8457 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8458 (__v8sf)
8459 _mm256_setzero_ps (),
8460 (__mmask8) __U);
8461}
8462
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008463static __inline __m128i __DEFAULT_FN_ATTRS
8464_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8465{
8466 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8467 (__v8hi) __W,
8468 (__mmask8) __U);
8469}
8470
8471static __inline __m128i __DEFAULT_FN_ATTRS
8472_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8473{
8474 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8475 (__v8hi) _mm_setzero_si128 (),
8476 (__mmask8) __U);
8477}
8478
8479#define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008480 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8481 (__v8hi)(__m128i)(W), \
8482 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008483
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008484#define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008485 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8486 (__v8hi)_mm_setzero_si128(), \
8487 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008488
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008489static __inline __m128i __DEFAULT_FN_ATTRS
8490_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8491{
8492 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8493 (__v8hi) __W,
8494 (__mmask8) __U);
8495}
8496
8497static __inline __m128i __DEFAULT_FN_ATTRS
8498_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8499{
8500 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8501 (__v8hi) _mm_setzero_si128(),
8502 (__mmask8) __U);
8503}
8504#define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008505 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8506 (__v8hi)(__m128i)(W), \
8507 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008508
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008509#define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008510 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8511 (__v8hi)_mm_setzero_si128(), \
8512 (__mmask8)(U)); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008513
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008514
Michael Kupersteine45af542015-06-30 13:36:19 +00008515#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008516
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008517#endif /* __AVX512VLINTRIN_H */