blob: 833e70a94717a5d41df7e0d54fca3f5977acd192 [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) {
Craig Topper842171d2018-05-21 20:19:17 +00002210 return (__m128)__builtin_convertvector((__v4su)__A, __v4sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002211}
2212
2213static __inline__ __m128 __DEFAULT_FN_ATTRS
2214_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002215 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2216 (__v4sf)_mm_cvtepu32_ps(__A),
2217 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002218}
2219
2220static __inline__ __m128 __DEFAULT_FN_ATTRS
2221_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002222 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2223 (__v4sf)_mm_cvtepu32_ps(__A),
2224 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002225}
2226
2227static __inline__ __m256 __DEFAULT_FN_ATTRS
2228_mm256_cvtepu32_ps (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002229 return (__m256)__builtin_convertvector((__v8su)__A, __v8sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002230}
2231
2232static __inline__ __m256 __DEFAULT_FN_ATTRS
2233_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002234 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2235 (__v8sf)_mm256_cvtepu32_ps(__A),
2236 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002237}
2238
2239static __inline__ __m256 __DEFAULT_FN_ATTRS
2240_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002241 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2242 (__v8sf)_mm256_cvtepu32_ps(__A),
2243 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002244}
2245
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002246static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002247_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2248 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2249 (__v2df)_mm_div_pd(__A, __B),
2250 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002251}
2252
2253static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002254_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2255 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2256 (__v2df)_mm_div_pd(__A, __B),
2257 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002258}
2259
2260static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002261_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2262 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2263 (__v4df)_mm256_div_pd(__A, __B),
2264 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002265}
2266
2267static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002268_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2269 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2270 (__v4df)_mm256_div_pd(__A, __B),
2271 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002272}
2273
2274static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002275_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2276 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2277 (__v4sf)_mm_div_ps(__A, __B),
2278 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002279}
2280
2281static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002282_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2283 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2284 (__v4sf)_mm_div_ps(__A, __B),
2285 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002286}
2287
2288static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002289_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2290 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2291 (__v8sf)_mm256_div_ps(__A, __B),
2292 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002293}
2294
2295static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002296_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2297 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2298 (__v8sf)_mm256_div_ps(__A, __B),
2299 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002300}
2301
2302static __inline__ __m128d __DEFAULT_FN_ATTRS
2303_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2304 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2305 (__v2df) __W,
2306 (__mmask8) __U);
2307}
2308
2309static __inline__ __m128d __DEFAULT_FN_ATTRS
2310_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2311 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2312 (__v2df)
2313 _mm_setzero_pd (),
2314 (__mmask8) __U);
2315}
2316
2317static __inline__ __m256d __DEFAULT_FN_ATTRS
2318_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2319 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2320 (__v4df) __W,
2321 (__mmask8) __U);
2322}
2323
2324static __inline__ __m256d __DEFAULT_FN_ATTRS
2325_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2326 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2327 (__v4df)
2328 _mm256_setzero_pd (),
2329 (__mmask8) __U);
2330}
2331
2332static __inline__ __m128i __DEFAULT_FN_ATTRS
2333_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2334 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2335 (__v2di) __W,
2336 (__mmask8) __U);
2337}
2338
2339static __inline__ __m128i __DEFAULT_FN_ATTRS
2340_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2341 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2342 (__v2di)
2343 _mm_setzero_si128 (),
2344 (__mmask8) __U);
2345}
2346
2347static __inline__ __m256i __DEFAULT_FN_ATTRS
2348_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2349 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2350 (__v4di) __W,
2351 (__mmask8) __U);
2352}
2353
2354static __inline__ __m256i __DEFAULT_FN_ATTRS
2355_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2356 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2357 (__v4di)
2358 _mm256_setzero_si256 (),
2359 (__mmask8) __U);
2360}
2361
2362static __inline__ __m128d __DEFAULT_FN_ATTRS
2363_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2364 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2365 (__v2df) __W,
2366 (__mmask8)
2367 __U);
2368}
2369
2370static __inline__ __m128d __DEFAULT_FN_ATTRS
2371_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2372 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2373 (__v2df)
2374 _mm_setzero_pd (),
2375 (__mmask8)
2376 __U);
2377}
2378
2379static __inline__ __m256d __DEFAULT_FN_ATTRS
2380_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2381 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2382 (__v4df) __W,
2383 (__mmask8)
2384 __U);
2385}
2386
2387static __inline__ __m256d __DEFAULT_FN_ATTRS
2388_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2389 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2390 (__v4df)
2391 _mm256_setzero_pd (),
2392 (__mmask8)
2393 __U);
2394}
2395
2396static __inline__ __m128i __DEFAULT_FN_ATTRS
2397_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2398 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2399 (__v2di) __W,
2400 (__mmask8)
2401 __U);
2402}
2403
2404static __inline__ __m128i __DEFAULT_FN_ATTRS
2405_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2406 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2407 (__v2di)
2408 _mm_setzero_si128 (),
2409 (__mmask8)
2410 __U);
2411}
2412
2413static __inline__ __m256i __DEFAULT_FN_ATTRS
2414_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2415 void const *__P) {
2416 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2417 (__v4di) __W,
2418 (__mmask8)
2419 __U);
2420}
2421
2422static __inline__ __m256i __DEFAULT_FN_ATTRS
2423_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2424 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2425 (__v4di)
2426 _mm256_setzero_si256 (),
2427 (__mmask8)
2428 __U);
2429}
2430
2431static __inline__ __m128 __DEFAULT_FN_ATTRS
2432_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2433 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2434 (__v4sf) __W,
2435 (__mmask8) __U);
2436}
2437
2438static __inline__ __m128 __DEFAULT_FN_ATTRS
2439_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2440 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2441 (__v4sf)
2442 _mm_setzero_ps (),
2443 (__mmask8)
2444 __U);
2445}
2446
2447static __inline__ __m256 __DEFAULT_FN_ATTRS
2448_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2449 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2450 (__v8sf) __W,
2451 (__mmask8) __U);
2452}
2453
2454static __inline__ __m256 __DEFAULT_FN_ATTRS
2455_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2456 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2457 (__v8sf)
2458 _mm256_setzero_ps (),
2459 (__mmask8)
2460 __U);
2461}
2462
2463static __inline__ __m128i __DEFAULT_FN_ATTRS
2464_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2465 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2466 (__v4si) __W,
2467 (__mmask8)
2468 __U);
2469}
2470
2471static __inline__ __m128i __DEFAULT_FN_ATTRS
2472_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2473 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2474 (__v4si)
2475 _mm_setzero_si128 (),
2476 (__mmask8) __U);
2477}
2478
2479static __inline__ __m256i __DEFAULT_FN_ATTRS
2480_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2481 void const *__P) {
2482 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2483 (__v8si) __W,
2484 (__mmask8)
2485 __U);
2486}
2487
2488static __inline__ __m256i __DEFAULT_FN_ATTRS
2489_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2490 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2491 (__v8si)
2492 _mm256_setzero_si256 (),
2493 (__mmask8)
2494 __U);
2495}
2496
2497static __inline__ __m128 __DEFAULT_FN_ATTRS
2498_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2499 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2500 (__v4sf) __W,
2501 (__mmask8) __U);
2502}
2503
2504static __inline__ __m128 __DEFAULT_FN_ATTRS
2505_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2506 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2507 (__v4sf)
2508 _mm_setzero_ps (),
2509 (__mmask8) __U);
2510}
2511
2512static __inline__ __m256 __DEFAULT_FN_ATTRS
2513_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2514 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2515 (__v8sf) __W,
2516 (__mmask8) __U);
2517}
2518
2519static __inline__ __m256 __DEFAULT_FN_ATTRS
2520_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2521 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2522 (__v8sf)
2523 _mm256_setzero_ps (),
2524 (__mmask8) __U);
2525}
2526
2527static __inline__ __m128i __DEFAULT_FN_ATTRS
2528_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2529 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2530 (__v4si) __W,
2531 (__mmask8) __U);
2532}
2533
2534static __inline__ __m128i __DEFAULT_FN_ATTRS
2535_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2536 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2537 (__v4si)
2538 _mm_setzero_si128 (),
2539 (__mmask8) __U);
2540}
2541
2542static __inline__ __m256i __DEFAULT_FN_ATTRS
2543_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2544 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2545 (__v8si) __W,
2546 (__mmask8) __U);
2547}
2548
2549static __inline__ __m256i __DEFAULT_FN_ATTRS
2550_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2551 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2552 (__v8si)
2553 _mm256_setzero_si256 (),
2554 (__mmask8) __U);
2555}
2556
2557static __inline__ __m128d __DEFAULT_FN_ATTRS
2558_mm_getexp_pd (__m128d __A) {
2559 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2560 (__v2df)
2561 _mm_setzero_pd (),
2562 (__mmask8) -1);
2563}
2564
2565static __inline__ __m128d __DEFAULT_FN_ATTRS
2566_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2567 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2568 (__v2df) __W,
2569 (__mmask8) __U);
2570}
2571
2572static __inline__ __m128d __DEFAULT_FN_ATTRS
2573_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2574 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2575 (__v2df)
2576 _mm_setzero_pd (),
2577 (__mmask8) __U);
2578}
2579
2580static __inline__ __m256d __DEFAULT_FN_ATTRS
2581_mm256_getexp_pd (__m256d __A) {
2582 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2583 (__v4df)
2584 _mm256_setzero_pd (),
2585 (__mmask8) -1);
2586}
2587
2588static __inline__ __m256d __DEFAULT_FN_ATTRS
2589_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2590 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2591 (__v4df) __W,
2592 (__mmask8) __U);
2593}
2594
2595static __inline__ __m256d __DEFAULT_FN_ATTRS
2596_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2597 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2598 (__v4df)
2599 _mm256_setzero_pd (),
2600 (__mmask8) __U);
2601}
2602
2603static __inline__ __m128 __DEFAULT_FN_ATTRS
2604_mm_getexp_ps (__m128 __A) {
2605 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2606 (__v4sf)
2607 _mm_setzero_ps (),
2608 (__mmask8) -1);
2609}
2610
2611static __inline__ __m128 __DEFAULT_FN_ATTRS
2612_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2613 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2614 (__v4sf) __W,
2615 (__mmask8) __U);
2616}
2617
2618static __inline__ __m128 __DEFAULT_FN_ATTRS
2619_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
2620 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2621 (__v4sf)
2622 _mm_setzero_ps (),
2623 (__mmask8) __U);
2624}
2625
2626static __inline__ __m256 __DEFAULT_FN_ATTRS
2627_mm256_getexp_ps (__m256 __A) {
2628 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2629 (__v8sf)
2630 _mm256_setzero_ps (),
2631 (__mmask8) -1);
2632}
2633
2634static __inline__ __m256 __DEFAULT_FN_ATTRS
2635_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2636 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2637 (__v8sf) __W,
2638 (__mmask8) __U);
2639}
2640
2641static __inline__ __m256 __DEFAULT_FN_ATTRS
2642_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
2643 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2644 (__v8sf)
2645 _mm256_setzero_ps (),
2646 (__mmask8) __U);
2647}
2648
2649static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002650_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2651 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2652 (__v2df)_mm_max_pd(__A, __B),
2653 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002654}
2655
2656static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002657_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2658 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2659 (__v2df)_mm_max_pd(__A, __B),
2660 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002661}
2662
2663static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002664_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2665 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2666 (__v4df)_mm256_max_pd(__A, __B),
2667 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002668}
2669
2670static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002671_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2672 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2673 (__v4df)_mm256_max_pd(__A, __B),
2674 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002675}
2676
2677static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002678_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2679 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2680 (__v4sf)_mm_max_ps(__A, __B),
2681 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002682}
2683
2684static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002685_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2686 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2687 (__v4sf)_mm_max_ps(__A, __B),
2688 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002689}
2690
2691static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002692_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2693 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2694 (__v8sf)_mm256_max_ps(__A, __B),
2695 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002696}
2697
2698static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002699_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2700 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2701 (__v8sf)_mm256_max_ps(__A, __B),
2702 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002703}
2704
2705static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002706_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2707 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2708 (__v2df)_mm_min_pd(__A, __B),
2709 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002710}
2711
2712static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002713_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2714 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2715 (__v2df)_mm_min_pd(__A, __B),
2716 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002717}
2718
2719static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002720_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2721 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2722 (__v4df)_mm256_min_pd(__A, __B),
2723 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002724}
2725
2726static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002727_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2728 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2729 (__v4df)_mm256_min_pd(__A, __B),
2730 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002731}
2732
2733static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002734_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2735 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2736 (__v4sf)_mm_min_ps(__A, __B),
2737 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002738}
2739
2740static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002741_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2742 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2743 (__v4sf)_mm_min_ps(__A, __B),
2744 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002745}
2746
2747static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002748_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2749 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2750 (__v8sf)_mm256_min_ps(__A, __B),
2751 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002752}
2753
2754static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002755_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2756 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2757 (__v8sf)_mm256_min_ps(__A, __B),
2758 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002759}
2760
2761static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002762_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2763 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2764 (__v2df)_mm_mul_pd(__A, __B),
2765 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002766}
2767
2768static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002769_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2770 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2771 (__v2df)_mm_mul_pd(__A, __B),
2772 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002773}
2774
2775static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002776_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2777 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2778 (__v4df)_mm256_mul_pd(__A, __B),
2779 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002780}
2781
2782static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002783_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2784 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2785 (__v4df)_mm256_mul_pd(__A, __B),
2786 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002787}
2788
2789static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002790_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2791 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2792 (__v4sf)_mm_mul_ps(__A, __B),
2793 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002794}
2795
2796static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002797_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2798 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2799 (__v4sf)_mm_mul_ps(__A, __B),
2800 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002801}
2802
2803static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002804_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2805 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2806 (__v8sf)_mm256_mul_ps(__A, __B),
2807 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002808}
2809
2810static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002811_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2812 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2813 (__v8sf)_mm256_mul_ps(__A, __B),
2814 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002815}
2816
2817static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002818_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
2819 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2820 (__v4si)_mm_abs_epi32(__A),
2821 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002822}
2823
2824static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002825_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
2826 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2827 (__v4si)_mm_abs_epi32(__A),
2828 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002829}
2830
2831static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002832_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
2833 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2834 (__v8si)_mm256_abs_epi32(__A),
2835 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002836}
2837
2838static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002839_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
2840 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2841 (__v8si)_mm256_abs_epi32(__A),
2842 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002843}
2844
2845static __inline__ __m128i __DEFAULT_FN_ATTRS
2846_mm_abs_epi64 (__m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002847 return (__m128i)__builtin_ia32_pabsq128((__v2di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002848}
2849
2850static __inline__ __m128i __DEFAULT_FN_ATTRS
2851_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002852 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2853 (__v2di)_mm_abs_epi64(__A),
2854 (__v2di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002855}
2856
2857static __inline__ __m128i __DEFAULT_FN_ATTRS
2858_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002859 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2860 (__v2di)_mm_abs_epi64(__A),
2861 (__v2di)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002862}
2863
2864static __inline__ __m256i __DEFAULT_FN_ATTRS
2865_mm256_abs_epi64 (__m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002866 return (__m256i)__builtin_ia32_pabsq256 ((__v4di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002867}
2868
2869static __inline__ __m256i __DEFAULT_FN_ATTRS
2870_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002871 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2872 (__v4di)_mm256_abs_epi64(__A),
2873 (__v4di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002874}
2875
2876static __inline__ __m256i __DEFAULT_FN_ATTRS
2877_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002878 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2879 (__v4di)_mm256_abs_epi64(__A),
2880 (__v4di)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002881}
2882
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002883static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002884_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
2885 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2886 (__v4si)_mm_max_epi32(__A, __B),
2887 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002888}
2889
2890static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002891_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2892 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2893 (__v4si)_mm_max_epi32(__A, __B),
2894 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002895}
2896
2897static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002898_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
2899 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2900 (__v8si)_mm256_max_epi32(__A, __B),
2901 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002902}
2903
2904static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002905_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2906 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2907 (__v8si)_mm256_max_epi32(__A, __B),
2908 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002909}
2910
2911static __inline__ __m128i __DEFAULT_FN_ATTRS
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002912_mm_max_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002913 return (__m128i)__builtin_ia32_pmaxsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002914}
2915
Craig Topperf2043b02018-05-23 04:51:54 +00002916static __inline__ __m128i __DEFAULT_FN_ATTRS
2917_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
2918 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2919 (__v2di)_mm_max_epi64(__A, __B),
2920 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002921}
2922
Craig Topperf2043b02018-05-23 04:51:54 +00002923static __inline__ __m128i __DEFAULT_FN_ATTRS
2924_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2925 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2926 (__v2di)_mm_max_epi64(__A, __B),
2927 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002928}
2929
2930static __inline__ __m256i __DEFAULT_FN_ATTRS
2931_mm256_max_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002932 return (__m256i)__builtin_ia32_pmaxsq256((__v4di)__A, (__v4di)__B);
2933}
2934
2935static __inline__ __m256i __DEFAULT_FN_ATTRS
2936_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
2937 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
2938 (__v4di)_mm256_max_epi64(__A, __B),
2939 (__v4di)_mm256_setzero_si256());
2940}
2941
2942static __inline__ __m256i __DEFAULT_FN_ATTRS
2943_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2944 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
2945 (__v4di)_mm256_max_epi64(__A, __B),
2946 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002947}
2948
2949static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002950_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
2951 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2952 (__v4si)_mm_max_epu32(__A, __B),
2953 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002954}
2955
2956static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002957_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2958 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2959 (__v4si)_mm_max_epu32(__A, __B),
2960 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002961}
2962
2963static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002964_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
2965 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2966 (__v8si)_mm256_max_epu32(__A, __B),
2967 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002968}
2969
2970static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002971_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2972 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2973 (__v8si)_mm256_max_epu32(__A, __B),
2974 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002975}
2976
2977static __inline__ __m128i __DEFAULT_FN_ATTRS
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002978_mm_max_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002979 return (__m128i)__builtin_ia32_pmaxuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002980}
2981
2982static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00002983_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
2984 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2985 (__v2di)_mm_max_epu64(__A, __B),
2986 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002987}
2988
Craig Topperf2043b02018-05-23 04:51:54 +00002989static __inline__ __m128i __DEFAULT_FN_ATTRS
2990_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2991 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2992 (__v2di)_mm_max_epu64(__A, __B),
2993 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002994}
2995
2996static __inline__ __m256i __DEFAULT_FN_ATTRS
2997_mm256_max_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002998 return (__m256i)__builtin_ia32_pmaxuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002999}
3000
3001static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003002_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3003 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3004 (__v4di)_mm256_max_epu64(__A, __B),
3005 (__v4di)_mm256_setzero_si256());
3006}
3007
3008static __inline__ __m256i __DEFAULT_FN_ATTRS
3009_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3010 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3011 (__v4di)_mm256_max_epu64(__A, __B),
3012 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003013}
3014
3015static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003016_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3017 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3018 (__v4si)_mm_min_epi32(__A, __B),
3019 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003020}
3021
3022static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003023_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3024 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3025 (__v4si)_mm_min_epi32(__A, __B),
3026 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003027}
3028
3029static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003030_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3031 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3032 (__v8si)_mm256_min_epi32(__A, __B),
3033 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003034}
3035
3036static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003037_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3038 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3039 (__v8si)_mm256_min_epi32(__A, __B),
3040 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003041}
3042
3043static __inline__ __m128i __DEFAULT_FN_ATTRS
3044_mm_min_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003045 return (__m128i)__builtin_ia32_pminsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003046}
3047
3048static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003049_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3050 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3051 (__v2di)_mm_min_epi64(__A, __B),
3052 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003053}
3054
3055static __inline__ __m128i __DEFAULT_FN_ATTRS
3056_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003057 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3058 (__v2di)_mm_min_epi64(__A, __B),
3059 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003060}
3061
3062static __inline__ __m256i __DEFAULT_FN_ATTRS
3063_mm256_min_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003064 return (__m256i)__builtin_ia32_pminsq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003065}
3066
3067static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003068_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3069 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3070 (__v4di)_mm256_min_epi64(__A, __B),
3071 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003072}
3073
3074static __inline__ __m256i __DEFAULT_FN_ATTRS
3075_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003076 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3077 (__v4di)_mm256_min_epi64(__A, __B),
3078 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003079}
3080
3081static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003082_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3083 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3084 (__v4si)_mm_min_epu32(__A, __B),
3085 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003086}
3087
3088static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003089_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3090 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3091 (__v4si)_mm_min_epu32(__A, __B),
3092 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003093}
3094
3095static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003096_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3097 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3098 (__v8si)_mm256_min_epu32(__A, __B),
3099 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003100}
3101
3102static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003103_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3104 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3105 (__v8si)_mm256_min_epu32(__A, __B),
3106 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003107}
3108
3109static __inline__ __m128i __DEFAULT_FN_ATTRS
3110_mm_min_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003111 return (__m128i)__builtin_ia32_pminuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003112}
3113
3114static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003115_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3116 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3117 (__v2di)_mm_min_epu64(__A, __B),
3118 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003119}
3120
3121static __inline__ __m128i __DEFAULT_FN_ATTRS
3122_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003123 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3124 (__v2di)_mm_min_epu64(__A, __B),
3125 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003126}
3127
3128static __inline__ __m256i __DEFAULT_FN_ATTRS
3129_mm256_min_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003130 return (__m256i)__builtin_ia32_pminuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003131}
3132
3133static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003134_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3135 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3136 (__v4di)_mm256_min_epu64(__A, __B),
3137 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003138}
3139
3140static __inline__ __m256i __DEFAULT_FN_ATTRS
3141_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003142 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3143 (__v4di)_mm256_min_epu64(__A, __B),
3144 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003145}
3146
Craig Topperd2661882016-05-17 04:41:48 +00003147#define _mm_roundscale_pd(A, imm) __extension__ ({ \
3148 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3149 (int)(imm), \
3150 (__v2df)_mm_setzero_pd(), \
3151 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003152
3153
Craig Topperd2661882016-05-17 04:41:48 +00003154#define _mm_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3155 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3156 (int)(imm), \
3157 (__v2df)(__m128d)(W), \
3158 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003159
3160
Craig Topperd2661882016-05-17 04:41:48 +00003161#define _mm_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3162 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3163 (int)(imm), \
3164 (__v2df)_mm_setzero_pd(), \
3165 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003166
3167
Craig Topperd2661882016-05-17 04:41:48 +00003168#define _mm256_roundscale_pd(A, imm) __extension__ ({ \
3169 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3170 (int)(imm), \
3171 (__v4df)_mm256_setzero_pd(), \
3172 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003173
3174
Craig Topperd2661882016-05-17 04:41:48 +00003175#define _mm256_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3176 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3177 (int)(imm), \
3178 (__v4df)(__m256d)(W), \
3179 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003180
3181
Craig Topperd2661882016-05-17 04:41:48 +00003182#define _mm256_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3183 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3184 (int)(imm), \
3185 (__v4df)_mm256_setzero_pd(), \
3186 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003187
Craig Topperd2661882016-05-17 04:41:48 +00003188#define _mm_roundscale_ps(A, imm) __extension__ ({ \
3189 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3190 (__v4sf)_mm_setzero_ps(), \
3191 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003192
3193
Craig Topperd2661882016-05-17 04:41:48 +00003194#define _mm_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3195 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3196 (__v4sf)(__m128)(W), \
3197 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003198
3199
Craig Topperd2661882016-05-17 04:41:48 +00003200#define _mm_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3201 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3202 (__v4sf)_mm_setzero_ps(), \
3203 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003204
Craig Topperd2661882016-05-17 04:41:48 +00003205#define _mm256_roundscale_ps(A, imm) __extension__ ({ \
3206 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3207 (__v8sf)_mm256_setzero_ps(), \
3208 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003209
Craig Topperd2661882016-05-17 04:41:48 +00003210#define _mm256_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3211 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3212 (__v8sf)(__m256)(W), \
3213 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003214
3215
Craig Topperd2661882016-05-17 04:41:48 +00003216#define _mm256_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3217 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3218 (__v8sf)_mm256_setzero_ps(), \
3219 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003220
3221static __inline__ __m128d __DEFAULT_FN_ATTRS
3222_mm_scalef_pd (__m128d __A, __m128d __B) {
3223 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3224 (__v2df) __B,
3225 (__v2df)
3226 _mm_setzero_pd (),
3227 (__mmask8) -1);
3228}
3229
3230static __inline__ __m128d __DEFAULT_FN_ATTRS
3231_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3232 __m128d __B) {
3233 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3234 (__v2df) __B,
3235 (__v2df) __W,
3236 (__mmask8) __U);
3237}
3238
3239static __inline__ __m128d __DEFAULT_FN_ATTRS
3240_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3241 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3242 (__v2df) __B,
3243 (__v2df)
3244 _mm_setzero_pd (),
3245 (__mmask8) __U);
3246}
3247
3248static __inline__ __m256d __DEFAULT_FN_ATTRS
3249_mm256_scalef_pd (__m256d __A, __m256d __B) {
3250 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3251 (__v4df) __B,
3252 (__v4df)
3253 _mm256_setzero_pd (),
3254 (__mmask8) -1);
3255}
3256
3257static __inline__ __m256d __DEFAULT_FN_ATTRS
3258_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3259 __m256d __B) {
3260 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3261 (__v4df) __B,
3262 (__v4df) __W,
3263 (__mmask8) __U);
3264}
3265
3266static __inline__ __m256d __DEFAULT_FN_ATTRS
3267_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3268 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3269 (__v4df) __B,
3270 (__v4df)
3271 _mm256_setzero_pd (),
3272 (__mmask8) __U);
3273}
3274
3275static __inline__ __m128 __DEFAULT_FN_ATTRS
3276_mm_scalef_ps (__m128 __A, __m128 __B) {
3277 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3278 (__v4sf) __B,
3279 (__v4sf)
3280 _mm_setzero_ps (),
3281 (__mmask8) -1);
3282}
3283
3284static __inline__ __m128 __DEFAULT_FN_ATTRS
3285_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3286 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3287 (__v4sf) __B,
3288 (__v4sf) __W,
3289 (__mmask8) __U);
3290}
3291
3292static __inline__ __m128 __DEFAULT_FN_ATTRS
3293_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3294 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3295 (__v4sf) __B,
3296 (__v4sf)
3297 _mm_setzero_ps (),
3298 (__mmask8) __U);
3299}
3300
3301static __inline__ __m256 __DEFAULT_FN_ATTRS
3302_mm256_scalef_ps (__m256 __A, __m256 __B) {
3303 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3304 (__v8sf) __B,
3305 (__v8sf)
3306 _mm256_setzero_ps (),
3307 (__mmask8) -1);
3308}
3309
3310static __inline__ __m256 __DEFAULT_FN_ATTRS
3311_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3312 __m256 __B) {
3313 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3314 (__v8sf) __B,
3315 (__v8sf) __W,
3316 (__mmask8) __U);
3317}
3318
3319static __inline__ __m256 __DEFAULT_FN_ATTRS
3320_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3321 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3322 (__v8sf) __B,
3323 (__v8sf)
3324 _mm256_setzero_ps (),
3325 (__mmask8) __U);
3326}
3327
Craig Topperd2661882016-05-17 04:41:48 +00003328#define _mm_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3329 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3330 (__v2di)(__m128i)(index), \
3331 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003332
Craig Topperd2661882016-05-17 04:41:48 +00003333#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3334 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3335 (__v2di)(__m128i)(index), \
3336 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003337
Craig Topperd2661882016-05-17 04:41:48 +00003338#define _mm_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3339 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3340 (__v2di)(__m128i)(index), \
3341 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003342
Craig Topperd2661882016-05-17 04:41:48 +00003343#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3344 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3345 (__v2di)(__m128i)(index), \
3346 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003347
Craig Topperd2661882016-05-17 04:41:48 +00003348#define _mm256_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3349 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3350 (__v4di)(__m256i)(index), \
3351 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003352
Craig Topperd2661882016-05-17 04:41:48 +00003353#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3354 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3355 (__v4di)(__m256i)(index), \
3356 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003357
Craig Topperd2661882016-05-17 04:41:48 +00003358#define _mm256_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3359 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3360 (__v4di)(__m256i)(index), \
3361 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003362
Craig Topperd2661882016-05-17 04:41:48 +00003363#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3364 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3365 (__v4di)(__m256i)(index), \
3366 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003367
Craig Topperd2661882016-05-17 04:41:48 +00003368#define _mm_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3369 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3370 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3371 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003372
Craig Topperd2661882016-05-17 04:41:48 +00003373#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3374 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3375 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3376 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003377
Craig Topperd2661882016-05-17 04:41:48 +00003378#define _mm_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3379 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3380 (__v2di)(__m128i)(index), \
3381 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003382
Craig Topperd2661882016-05-17 04:41:48 +00003383#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3384 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3385 (__v2di)(__m128i)(index), \
3386 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003387
Craig Topperd2661882016-05-17 04:41:48 +00003388#define _mm256_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3389 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3390 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3391 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003392
Craig Topperd2661882016-05-17 04:41:48 +00003393#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3394 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3395 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3396 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003397
Craig Topperd2661882016-05-17 04:41:48 +00003398#define _mm256_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3399 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3400 (__v4di)(__m256i)(index), \
3401 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003402
Craig Topperd2661882016-05-17 04:41:48 +00003403#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3404 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3405 (__v4di)(__m256i)(index), \
3406 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003407
Craig Topperd2661882016-05-17 04:41:48 +00003408#define _mm_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3409 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3410 (__v4si)(__m128i)(index), \
3411 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003412
Craig Topperd2661882016-05-17 04:41:48 +00003413#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3414 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3415 (__v4si)(__m128i)(index), \
3416 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003417
Craig Topperd2661882016-05-17 04:41:48 +00003418#define _mm_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3419 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
3420 (__v4si)(__m128i)(index), \
3421 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003422
Craig Topperd2661882016-05-17 04:41:48 +00003423#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3424 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3425 (__v4si)(__m128i)(index), \
3426 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003427
Craig Topperd2661882016-05-17 04:41:48 +00003428#define _mm256_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3429 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
3430 (__v4si)(__m128i)(index), \
3431 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003432
Craig Topperd2661882016-05-17 04:41:48 +00003433#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3434 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3435 (__v4si)(__m128i)(index), \
3436 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003437
Craig Topperd2661882016-05-17 04:41:48 +00003438#define _mm256_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3439 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
3440 (__v4si)(__m128i)(index), \
3441 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003442
Craig Topperd2661882016-05-17 04:41:48 +00003443#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3444 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3445 (__v4si)(__m128i)(index), \
3446 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003447
Craig Topperd2661882016-05-17 04:41:48 +00003448#define _mm_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3449 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
3450 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3451 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003452
Craig Topperd2661882016-05-17 04:41:48 +00003453#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3454 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3455 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3456 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003457
Craig Topperd2661882016-05-17 04:41:48 +00003458#define _mm_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3459 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
3460 (__v4si)(__m128i)(index), \
3461 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003462
Craig Topperd2661882016-05-17 04:41:48 +00003463#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3464 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3465 (__v4si)(__m128i)(index), \
3466 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003467
Craig Topperd2661882016-05-17 04:41:48 +00003468#define _mm256_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3469 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
3470 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3471 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003472
Craig Topperd2661882016-05-17 04:41:48 +00003473#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3474 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3475 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3476 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003477
Craig Topperd2661882016-05-17 04:41:48 +00003478#define _mm256_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3479 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
3480 (__v8si)(__m256i)(index), \
3481 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003482
Craig Topperd2661882016-05-17 04:41:48 +00003483#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3484 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3485 (__v8si)(__m256i)(index), \
3486 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003487
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003488static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003489_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3490 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3491 (__v2df)_mm_sqrt_pd(__A),
3492 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003493}
3494
3495static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003496_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3497 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3498 (__v2df)_mm_sqrt_pd(__A),
3499 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003500}
3501
3502static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003503_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3504 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3505 (__v4df)_mm256_sqrt_pd(__A),
3506 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003507}
3508
3509static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003510_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3511 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3512 (__v4df)_mm256_sqrt_pd(__A),
3513 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003514}
3515
3516static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003517_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3518 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3519 (__v4sf)_mm_sqrt_ps(__A),
3520 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003521}
3522
3523static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003524_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3525 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3526 (__v4sf)_mm_sqrt_ps(__A),
3527 (__v4sf)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003528}
3529
3530static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003531_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3532 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3533 (__v8sf)_mm256_sqrt_ps(__A),
3534 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003535}
3536
3537static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003538_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3539 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3540 (__v8sf)_mm256_sqrt_ps(__A),
3541 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003542}
3543
3544static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003545_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3546 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3547 (__v2df)_mm_sub_pd(__A, __B),
3548 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003549}
3550
3551static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003552_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3553 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3554 (__v2df)_mm_sub_pd(__A, __B),
3555 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003556}
3557
3558static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003559_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3560 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3561 (__v4df)_mm256_sub_pd(__A, __B),
3562 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003563}
3564
3565static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003566_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3567 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3568 (__v4df)_mm256_sub_pd(__A, __B),
3569 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003570}
3571
3572static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003573_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3574 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3575 (__v4sf)_mm_sub_ps(__A, __B),
3576 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003577}
3578
3579static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003580_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3581 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3582 (__v4sf)_mm_sub_ps(__A, __B),
3583 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003584}
3585
3586static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003587_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3588 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3589 (__v8sf)_mm256_sub_ps(__A, __B),
3590 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003591}
3592
3593static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003594_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3595 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3596 (__v8sf)_mm256_sub_ps(__A, __B),
3597 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003598}
3599
3600static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003601_mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
3602 return (__m128i)__builtin_ia32_vpermi2vard128((__v4si) __A, (__v4si)__I,
3603 (__v4si)__B);
3604}
3605
3606static __inline__ __m128i __DEFAULT_FN_ATTRS
3607_mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I,
3608 __m128i __B) {
3609 return (__m128i)__builtin_ia32_selectd_128(__U,
3610 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3611 (__v4si)__A);
3612}
3613
3614static __inline__ __m128i __DEFAULT_FN_ATTRS
3615_mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,
3616 __m128i __B) {
3617 return (__m128i)__builtin_ia32_selectd_128(__U,
3618 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3619 (__v4si)__I);
3620}
3621
3622static __inline__ __m128i __DEFAULT_FN_ATTRS
3623_mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,
3624 __m128i __B) {
3625 return (__m128i)__builtin_ia32_selectd_128(__U,
3626 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3627 (__v4si)_mm_setzero_si128());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003628}
3629
3630static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003631_mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
3632 return (__m256i)__builtin_ia32_vpermi2vard256((__v8si)__A, (__v8si) __I,
3633 (__v8si) __B);
3634}
3635
3636static __inline__ __m256i __DEFAULT_FN_ATTRS
3637_mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I,
3638 __m256i __B) {
3639 return (__m256i)__builtin_ia32_selectd_256(__U,
3640 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3641 (__v8si)__A);
3642}
3643
3644static __inline__ __m256i __DEFAULT_FN_ATTRS
3645_mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U,
3646 __m256i __B) {
3647 return (__m256i)__builtin_ia32_selectd_256(__U,
3648 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3649 (__v8si)__I);
3650}
3651
3652static __inline__ __m256i __DEFAULT_FN_ATTRS
3653_mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I,
3654 __m256i __B) {
3655 return (__m256i)__builtin_ia32_selectd_256(__U,
3656 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3657 (__v8si)_mm256_setzero_si256());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003658}
3659
3660static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003661_mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
3662 return (__m128d)__builtin_ia32_vpermi2varpd128((__v2df)__A, (__v2di)__I,
3663 (__v2df)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003664}
3665
3666static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003667_mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
3668 return (__m128d)__builtin_ia32_selectpd_128(__U,
3669 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3670 (__v2df)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003671}
3672
3673static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003674_mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
3675 return (__m128d)__builtin_ia32_selectpd_128(__U,
3676 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3677 (__v2df)(__m128d)__I);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003678}
3679
3680static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003681_mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
3682 return (__m128d)__builtin_ia32_selectpd_128(__U,
3683 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3684 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003685}
3686
3687static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003688_mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
3689 return (__m256d)__builtin_ia32_vpermi2varpd256((__v4df)__A, (__v4di)__I,
3690 (__v4df)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003691}
3692
3693static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003694_mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I,
3695 __m256d __B) {
3696 return (__m256d)__builtin_ia32_selectpd_256(__U,
3697 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3698 (__v4df)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003699}
3700
3701static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003702_mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,
3703 __m256d __B) {
3704 return (__m256d)__builtin_ia32_selectpd_256(__U,
3705 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3706 (__v4df)(__m256d)__I);
3707}
3708
3709static __inline__ __m256d __DEFAULT_FN_ATTRS
3710_mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,
3711 __m256d __B) {
3712 return (__m256d)__builtin_ia32_selectpd_256(__U,
3713 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3714 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003715}
3716
3717static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003718_mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
3719 return (__m128)__builtin_ia32_vpermi2varps128((__v4sf)__A, (__v4si)__I,
3720 (__v4sf)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003721}
3722
3723static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003724_mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
3725 return (__m128)__builtin_ia32_selectps_128(__U,
3726 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3727 (__v4sf)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003728}
3729
3730static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003731_mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
3732 return (__m128)__builtin_ia32_selectps_128(__U,
3733 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3734 (__v4sf)(__m128)__I);
3735}
3736
3737static __inline__ __m128 __DEFAULT_FN_ATTRS
3738_mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
3739 return (__m128)__builtin_ia32_selectps_128(__U,
3740 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3741 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003742}
3743
3744static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003745_mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
3746 return (__m256)__builtin_ia32_vpermi2varps256((__v8sf)__A, (__v8si)__I,
3747 (__v8sf) __B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003748}
3749
3750static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003751_mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
3752 return (__m256)__builtin_ia32_selectps_256(__U,
3753 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3754 (__v8sf)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003755}
3756
3757static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003758_mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,
3759 __m256 __B) {
3760 return (__m256)__builtin_ia32_selectps_256(__U,
3761 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3762 (__v8sf)(__m256)__I);
3763}
3764
3765static __inline__ __m256 __DEFAULT_FN_ATTRS
3766_mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I,
3767 __m256 __B) {
3768 return (__m256)__builtin_ia32_selectps_256(__U,
3769 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3770 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003771}
3772
3773static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003774_mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
3775 return (__m128i)__builtin_ia32_vpermi2varq128((__v2di)__A, (__v2di)__I,
3776 (__v2di)__B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003777}
3778
3779static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003780_mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I,
3781 __m128i __B) {
3782 return (__m128i)__builtin_ia32_selectq_128(__U,
3783 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3784 (__v2di)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003785}
3786
3787static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003788_mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,
3789 __m128i __B) {
3790 return (__m128i)__builtin_ia32_selectq_128(__U,
3791 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3792 (__v2di)__I);
3793}
3794
3795static __inline__ __m128i __DEFAULT_FN_ATTRS
3796_mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I,
3797 __m128i __B) {
3798 return (__m128i)__builtin_ia32_selectq_128(__U,
3799 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3800 (__v2di)_mm_setzero_si128());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003801}
3802
3803
3804static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003805_mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
3806 return (__m256i)__builtin_ia32_vpermi2varq256((__v4di)__A, (__v4di) __I,
3807 (__v4di) __B);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003808}
3809
3810static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003811_mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I,
3812 __m256i __B) {
3813 return (__m256i)__builtin_ia32_selectq_256(__U,
3814 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3815 (__v4di)__A);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003816}
3817
3818static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper68a272d2018-05-29 03:26:38 +00003819_mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U,
3820 __m256i __B) {
3821 return (__m256i)__builtin_ia32_selectq_256(__U,
3822 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3823 (__v4di)__I);
3824}
3825
3826static __inline__ __m256i __DEFAULT_FN_ATTRS
3827_mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I,
3828 __m256i __B) {
3829 return (__m256i)__builtin_ia32_selectq_256(__U,
3830 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3831 (__v4di)_mm256_setzero_si256());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003832}
3833
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003834static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003835_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003836{
Craig Topper11dda922016-10-22 21:24:48 +00003837 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3838 (__v4si)_mm_cvtepi8_epi32(__A),
3839 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003840}
3841
3842static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003843_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003844{
Craig Topper11dda922016-10-22 21:24:48 +00003845 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3846 (__v4si)_mm_cvtepi8_epi32(__A),
3847 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003848}
3849
3850static __inline__ __m256i __DEFAULT_FN_ATTRS
3851_mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
3852{
Craig Topper11dda922016-10-22 21:24:48 +00003853 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3854 (__v8si)_mm256_cvtepi8_epi32(__A),
3855 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003856}
3857
3858static __inline__ __m256i __DEFAULT_FN_ATTRS
3859_mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
3860{
Craig Topper11dda922016-10-22 21:24:48 +00003861 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3862 (__v8si)_mm256_cvtepi8_epi32(__A),
3863 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003864}
3865
3866static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003867_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003868{
Craig Topper11dda922016-10-22 21:24:48 +00003869 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3870 (__v2di)_mm_cvtepi8_epi64(__A),
3871 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003872}
3873
3874static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003875_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003876{
Craig Topper11dda922016-10-22 21:24:48 +00003877 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3878 (__v2di)_mm_cvtepi8_epi64(__A),
3879 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003880}
3881
3882static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003883_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003884{
Craig Topper11dda922016-10-22 21:24:48 +00003885 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3886 (__v4di)_mm256_cvtepi8_epi64(__A),
3887 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003888}
3889
3890static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003891_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003892{
Craig Topper11dda922016-10-22 21:24:48 +00003893 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3894 (__v4di)_mm256_cvtepi8_epi64(__A),
3895 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003896}
3897
3898static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003899_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003900{
Craig Topper11dda922016-10-22 21:24:48 +00003901 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3902 (__v2di)_mm_cvtepi32_epi64(__X),
3903 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003904}
3905
3906static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003907_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003908{
Craig Topper11dda922016-10-22 21:24:48 +00003909 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3910 (__v2di)_mm_cvtepi32_epi64(__X),
3911 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003912}
3913
3914static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003915_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003916{
Craig Topper11dda922016-10-22 21:24:48 +00003917 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3918 (__v4di)_mm256_cvtepi32_epi64(__X),
3919 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003920}
3921
3922static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003923_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003924{
Craig Topper11dda922016-10-22 21:24:48 +00003925 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3926 (__v4di)_mm256_cvtepi32_epi64(__X),
3927 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003928}
3929
3930static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003931_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003932{
Craig Topper11dda922016-10-22 21:24:48 +00003933 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3934 (__v4si)_mm_cvtepi16_epi32(__A),
3935 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003936}
3937
3938static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003939_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003940{
Craig Topper11dda922016-10-22 21:24:48 +00003941 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3942 (__v4si)_mm_cvtepi16_epi32(__A),
3943 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003944}
3945
3946static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003947_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003948{
Craig Topper11dda922016-10-22 21:24:48 +00003949 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3950 (__v8si)_mm256_cvtepi16_epi32(__A),
3951 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003952}
3953
3954static __inline__ __m256i __DEFAULT_FN_ATTRS
3955_mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
3956{
Craig Topper11dda922016-10-22 21:24:48 +00003957 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3958 (__v8si)_mm256_cvtepi16_epi32(__A),
3959 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003960}
3961
3962static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003963_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003964{
Craig Topper11dda922016-10-22 21:24:48 +00003965 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3966 (__v2di)_mm_cvtepi16_epi64(__A),
3967 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003968}
3969
3970static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003971_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003972{
Craig Topper11dda922016-10-22 21:24:48 +00003973 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3974 (__v2di)_mm_cvtepi16_epi64(__A),
3975 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003976}
3977
3978static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003979_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003980{
Craig Topper11dda922016-10-22 21:24:48 +00003981 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3982 (__v4di)_mm256_cvtepi16_epi64(__A),
3983 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003984}
3985
3986static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003987_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003988{
Craig Topper11dda922016-10-22 21:24:48 +00003989 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3990 (__v4di)_mm256_cvtepi16_epi64(__A),
3991 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003992}
3993
3994
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003995static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00003996_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00003997{
Craig Topper11dda922016-10-22 21:24:48 +00003998 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3999 (__v4si)_mm_cvtepu8_epi32(__A),
4000 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004001}
4002
4003static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004004_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004005{
Craig Topper11dda922016-10-22 21:24:48 +00004006 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4007 (__v4si)_mm_cvtepu8_epi32(__A),
4008 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004009}
4010
4011static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004012_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004013{
Craig Topper11dda922016-10-22 21:24:48 +00004014 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4015 (__v8si)_mm256_cvtepu8_epi32(__A),
4016 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004017}
4018
4019static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004020_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004021{
Craig Topper11dda922016-10-22 21:24:48 +00004022 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4023 (__v8si)_mm256_cvtepu8_epi32(__A),
4024 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004025}
4026
4027static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004028_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004029{
Craig Topper11dda922016-10-22 21:24:48 +00004030 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4031 (__v2di)_mm_cvtepu8_epi64(__A),
4032 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004033}
4034
4035static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004036_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004037{
Craig Topper11dda922016-10-22 21:24:48 +00004038 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4039 (__v2di)_mm_cvtepu8_epi64(__A),
4040 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004041}
4042
4043static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004044_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004045{
Craig Topper11dda922016-10-22 21:24:48 +00004046 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4047 (__v4di)_mm256_cvtepu8_epi64(__A),
4048 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004049}
4050
4051static __inline__ __m256i __DEFAULT_FN_ATTRS
4052_mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4053{
Craig Topper11dda922016-10-22 21:24:48 +00004054 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4055 (__v4di)_mm256_cvtepu8_epi64(__A),
4056 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004057}
4058
4059static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004060_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004061{
Craig Topper11dda922016-10-22 21:24:48 +00004062 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4063 (__v2di)_mm_cvtepu32_epi64(__X),
4064 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004065}
4066
4067static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004068_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004069{
Craig Topper11dda922016-10-22 21:24:48 +00004070 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4071 (__v2di)_mm_cvtepu32_epi64(__X),
4072 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004073}
4074
4075static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004076_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004077{
Craig Topper11dda922016-10-22 21:24:48 +00004078 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4079 (__v4di)_mm256_cvtepu32_epi64(__X),
4080 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004081}
4082
4083static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004084_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004085{
Craig Topper11dda922016-10-22 21:24:48 +00004086 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4087 (__v4di)_mm256_cvtepu32_epi64(__X),
4088 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004089}
4090
4091static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004092_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004093{
Craig Topper11dda922016-10-22 21:24:48 +00004094 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4095 (__v4si)_mm_cvtepu16_epi32(__A),
4096 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004097}
4098
4099static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004100_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004101{
Craig Topper11dda922016-10-22 21:24:48 +00004102 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4103 (__v4si)_mm_cvtepu16_epi32(__A),
4104 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004105}
4106
4107static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004108_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004109{
Craig Topper11dda922016-10-22 21:24:48 +00004110 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4111 (__v8si)_mm256_cvtepu16_epi32(__A),
4112 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004113}
4114
4115static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004116_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004117{
Craig Topper11dda922016-10-22 21:24:48 +00004118 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4119 (__v8si)_mm256_cvtepu16_epi32(__A),
4120 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004121}
4122
4123static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004124_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004125{
Craig Topper11dda922016-10-22 21:24:48 +00004126 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4127 (__v2di)_mm_cvtepu16_epi64(__A),
4128 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004129}
4130
4131static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004132_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004133{
Craig Topper11dda922016-10-22 21:24:48 +00004134 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4135 (__v2di)_mm_cvtepu16_epi64(__A),
4136 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004137}
4138
4139static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004140_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004141{
Craig Topper11dda922016-10-22 21:24:48 +00004142 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4143 (__v4di)_mm256_cvtepu16_epi64(__A),
4144 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004145}
4146
4147static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004148_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004149{
Craig Topper11dda922016-10-22 21:24:48 +00004150 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4151 (__v4di)_mm256_cvtepu16_epi64(__A),
4152 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004153}
4154
4155
Michael Zuckerman38a27272016-02-22 09:05:41 +00004156#define _mm_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004157 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4158 (__v4si)_mm_setzero_si128(), \
4159 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004160
4161#define _mm_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004162 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4163 (__v4si)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004164
4165#define _mm_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004166 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4167 (__v4si)_mm_setzero_si128(), \
4168 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004169
4170#define _mm256_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004171 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4172 (__v8si)_mm256_setzero_si256(), \
4173 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004174
4175#define _mm256_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004176 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4177 (__v8si)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004178
4179#define _mm256_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004180 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4181 (__v8si)_mm256_setzero_si256(), \
4182 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004183
Michael Zuckerman477e0a32016-02-22 09:42:57 +00004184#define _mm_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004185 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4186 (__v2di)_mm_setzero_di(), \
4187 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004188
4189#define _mm_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004190 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4191 (__v2di)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004192
4193#define _mm_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004194 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4195 (__v2di)_mm_setzero_di(), \
4196 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004197
4198#define _mm256_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004199 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4200 (__v4di)_mm256_setzero_si256(), \
4201 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004202
4203#define _mm256_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004204 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4205 (__v4di)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004206
4207#define _mm256_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004208 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4209 (__v4di)_mm256_setzero_si256(), \
4210 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004211
Michael Zuckerman0231f162016-02-23 13:41:13 +00004212static __inline__ __m128i __DEFAULT_FN_ATTRS
4213_mm_rolv_epi32 (__m128i __A, __m128i __B)
4214{
4215 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4216 (__v4si) __B,
4217 (__v4si)
4218 _mm_setzero_si128 (),
4219 (__mmask8) -1);
4220}
4221
4222static __inline__ __m128i __DEFAULT_FN_ATTRS
4223_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4224 __m128i __B)
4225{
4226 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4227 (__v4si) __B,
4228 (__v4si) __W,
4229 (__mmask8) __U);
4230}
4231
4232static __inline__ __m128i __DEFAULT_FN_ATTRS
4233_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4234{
4235 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4236 (__v4si) __B,
4237 (__v4si)
4238 _mm_setzero_si128 (),
4239 (__mmask8) __U);
4240}
4241
4242static __inline__ __m256i __DEFAULT_FN_ATTRS
4243_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4244{
4245 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4246 (__v8si) __B,
4247 (__v8si)
4248 _mm256_setzero_si256 (),
4249 (__mmask8) -1);
4250}
4251
4252static __inline__ __m256i __DEFAULT_FN_ATTRS
4253_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4254 __m256i __B)
4255{
4256 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4257 (__v8si) __B,
4258 (__v8si) __W,
4259 (__mmask8) __U);
4260}
4261
4262static __inline__ __m256i __DEFAULT_FN_ATTRS
4263_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4264{
4265 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4266 (__v8si) __B,
4267 (__v8si)
4268 _mm256_setzero_si256 (),
4269 (__mmask8) __U);
4270}
4271
4272static __inline__ __m128i __DEFAULT_FN_ATTRS
4273_mm_rolv_epi64 (__m128i __A, __m128i __B)
4274{
4275 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4276 (__v2di) __B,
4277 (__v2di)
4278 _mm_setzero_di (),
4279 (__mmask8) -1);
4280}
4281
4282static __inline__ __m128i __DEFAULT_FN_ATTRS
4283_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4284 __m128i __B)
4285{
4286 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4287 (__v2di) __B,
4288 (__v2di) __W,
4289 (__mmask8) __U);
4290}
4291
4292static __inline__ __m128i __DEFAULT_FN_ATTRS
4293_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4294{
4295 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4296 (__v2di) __B,
4297 (__v2di)
4298 _mm_setzero_di (),
4299 (__mmask8) __U);
4300}
4301
4302static __inline__ __m256i __DEFAULT_FN_ATTRS
4303_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4304{
4305 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4306 (__v4di) __B,
4307 (__v4di)
4308 _mm256_setzero_si256 (),
4309 (__mmask8) -1);
4310}
4311
4312static __inline__ __m256i __DEFAULT_FN_ATTRS
4313_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4314 __m256i __B)
4315{
4316 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4317 (__v4di) __B,
4318 (__v4di) __W,
4319 (__mmask8) __U);
4320}
4321
4322static __inline__ __m256i __DEFAULT_FN_ATTRS
4323_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4324{
4325 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4326 (__v4di) __B,
4327 (__v4di)
4328 _mm256_setzero_si256 (),
4329 (__mmask8) __U);
4330}
4331
Craig Topperd2661882016-05-17 04:41:48 +00004332#define _mm_ror_epi32(A, B) __extension__ ({ \
4333 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4334 (__v4si)_mm_setzero_si128(), \
4335 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004336
Craig Topperd2661882016-05-17 04:41:48 +00004337#define _mm_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4338 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4339 (__v4si)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004340
Craig Topperd2661882016-05-17 04:41:48 +00004341#define _mm_maskz_ror_epi32(U, A, B) __extension__ ({ \
4342 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4343 (__v4si)_mm_setzero_si128(), \
4344 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004345
Craig Topperd2661882016-05-17 04:41:48 +00004346#define _mm256_ror_epi32(A, B) __extension__ ({ \
4347 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4348 (__v8si)_mm256_setzero_si256(), \
4349 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004350
Craig Topperd2661882016-05-17 04:41:48 +00004351#define _mm256_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4352 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4353 (__v8si)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004354
Craig Topperd2661882016-05-17 04:41:48 +00004355#define _mm256_maskz_ror_epi32(U, A, B) __extension__ ({ \
4356 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4357 (__v8si)_mm256_setzero_si256(), \
4358 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004359
Craig Topperd2661882016-05-17 04:41:48 +00004360#define _mm_ror_epi64(A, B) __extension__ ({ \
4361 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4362 (__v2di)_mm_setzero_di(), \
4363 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004364
Craig Topperd2661882016-05-17 04:41:48 +00004365#define _mm_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4366 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4367 (__v2di)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004368
Craig Topperd2661882016-05-17 04:41:48 +00004369#define _mm_maskz_ror_epi64(U, A, B) __extension__ ({ \
4370 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4371 (__v2di)_mm_setzero_di(), \
4372 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004373
Craig Topperd2661882016-05-17 04:41:48 +00004374#define _mm256_ror_epi64(A, B) __extension__ ({ \
4375 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4376 (__v4di)_mm256_setzero_si256(), \
4377 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004378
Craig Topperd2661882016-05-17 04:41:48 +00004379#define _mm256_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4380 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4381 (__v4di)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004382
Craig Topperd2661882016-05-17 04:41:48 +00004383#define _mm256_maskz_ror_epi64(U, A, B) __extension__ ({ \
4384 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4385 (__v4di)_mm256_setzero_si256(), \
4386 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004387
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004388static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004389_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004390{
Craig Topper66b2fd12016-10-31 04:30:51 +00004391 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4392 (__v4si)_mm_sll_epi32(__A, __B),
4393 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004394}
4395
4396static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004397_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004398{
Craig Topper66b2fd12016-10-31 04:30:51 +00004399 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4400 (__v4si)_mm_sll_epi32(__A, __B),
4401 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004402}
4403
4404static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004405_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004406{
Craig Topper66b2fd12016-10-31 04:30:51 +00004407 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4408 (__v8si)_mm256_sll_epi32(__A, __B),
4409 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004410}
4411
4412static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004413_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004414{
Craig Topper66b2fd12016-10-31 04:30:51 +00004415 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4416 (__v8si)_mm256_sll_epi32(__A, __B),
4417 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004418}
4419
4420static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004421_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004422{
Craig Topper66b2fd12016-10-31 04:30:51 +00004423 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4424 (__v4si)_mm_slli_epi32(__A, __B),
4425 (__v4si)__W);
4426}
4427
4428static __inline__ __m128i __DEFAULT_FN_ATTRS
4429_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4430{
4431 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4432 (__v4si)_mm_slli_epi32(__A, __B),
4433 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004434}
4435
4436static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004437_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004438{
Craig Topper66b2fd12016-10-31 04:30:51 +00004439 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4440 (__v8si)_mm256_slli_epi32(__A, __B),
4441 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004442}
4443
4444static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004445_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004446{
Craig Topper66b2fd12016-10-31 04:30:51 +00004447 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4448 (__v8si)_mm256_slli_epi32(__A, __B),
4449 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004450}
4451
Craig Topper66b2fd12016-10-31 04:30:51 +00004452static __inline__ __m128i __DEFAULT_FN_ATTRS
4453_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4454{
4455 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4456 (__v2di)_mm_sll_epi64(__A, __B),
4457 (__v2di)__W);
4458}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004459
Craig Topper66b2fd12016-10-31 04:30:51 +00004460static __inline__ __m128i __DEFAULT_FN_ATTRS
4461_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4462{
4463 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4464 (__v2di)_mm_sll_epi64(__A, __B),
4465 (__v2di)_mm_setzero_di());
4466}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004467
Craig Topper66b2fd12016-10-31 04:30:51 +00004468static __inline__ __m256i __DEFAULT_FN_ATTRS
4469_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4470{
4471 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4472 (__v4di)_mm256_sll_epi64(__A, __B),
4473 (__v4di)__W);
4474}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004475
Craig Topper66b2fd12016-10-31 04:30:51 +00004476static __inline__ __m256i __DEFAULT_FN_ATTRS
4477_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4478{
4479 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4480 (__v4di)_mm256_sll_epi64(__A, __B),
4481 (__v4di)_mm256_setzero_si256());
4482}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004483
Craig Topper66b2fd12016-10-31 04:30:51 +00004484static __inline__ __m128i __DEFAULT_FN_ATTRS
4485_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4486{
4487 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4488 (__v2di)_mm_slli_epi64(__A, __B),
4489 (__v2di)__W);
4490}
4491
4492static __inline__ __m128i __DEFAULT_FN_ATTRS
4493_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4494{
4495 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4496 (__v2di)_mm_slli_epi64(__A, __B),
4497 (__v2di)_mm_setzero_di());
4498}
4499
4500static __inline__ __m256i __DEFAULT_FN_ATTRS
4501_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4502{
4503 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4504 (__v4di)_mm256_slli_epi64(__A, __B),
4505 (__v4di)__W);
4506}
4507
4508static __inline__ __m256i __DEFAULT_FN_ATTRS
4509_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4510{
4511 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4512 (__v4di)_mm256_slli_epi64(__A, __B),
4513 (__v4di)_mm256_setzero_si256());
4514}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004515
Michael Zuckermane98cc742016-02-23 15:59:47 +00004516static __inline__ __m128i __DEFAULT_FN_ATTRS
4517_mm_rorv_epi32 (__m128i __A, __m128i __B)
4518{
4519 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4520 (__v4si) __B,
4521 (__v4si)
4522 _mm_setzero_si128 (),
4523 (__mmask8) -1);
4524}
4525
4526static __inline__ __m128i __DEFAULT_FN_ATTRS
4527_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4528 __m128i __B)
4529{
4530 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4531 (__v4si) __B,
4532 (__v4si) __W,
4533 (__mmask8) __U);
4534}
4535
4536static __inline__ __m128i __DEFAULT_FN_ATTRS
4537_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4538{
4539 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4540 (__v4si) __B,
4541 (__v4si)
4542 _mm_setzero_si128 (),
4543 (__mmask8) __U);
4544}
4545
4546static __inline__ __m256i __DEFAULT_FN_ATTRS
4547_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4548{
4549 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4550 (__v8si) __B,
4551 (__v8si)
4552 _mm256_setzero_si256 (),
4553 (__mmask8) -1);
4554}
4555
4556static __inline__ __m256i __DEFAULT_FN_ATTRS
4557_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4558 __m256i __B)
4559{
4560 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4561 (__v8si) __B,
4562 (__v8si) __W,
4563 (__mmask8) __U);
4564}
4565
4566static __inline__ __m256i __DEFAULT_FN_ATTRS
4567_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4568{
4569 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4570 (__v8si) __B,
4571 (__v8si)
4572 _mm256_setzero_si256 (),
4573 (__mmask8) __U);
4574}
4575
4576static __inline__ __m128i __DEFAULT_FN_ATTRS
4577_mm_rorv_epi64 (__m128i __A, __m128i __B)
4578{
4579 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4580 (__v2di) __B,
4581 (__v2di)
4582 _mm_setzero_di (),
4583 (__mmask8) -1);
4584}
4585
4586static __inline__ __m128i __DEFAULT_FN_ATTRS
4587_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4588 __m128i __B)
4589{
4590 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4591 (__v2di) __B,
4592 (__v2di) __W,
4593 (__mmask8) __U);
4594}
4595
4596static __inline__ __m128i __DEFAULT_FN_ATTRS
4597_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4598{
4599 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4600 (__v2di) __B,
4601 (__v2di)
4602 _mm_setzero_di (),
4603 (__mmask8) __U);
4604}
4605
4606static __inline__ __m256i __DEFAULT_FN_ATTRS
4607_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4608{
4609 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4610 (__v4di) __B,
4611 (__v4di)
4612 _mm256_setzero_si256 (),
4613 (__mmask8) -1);
4614}
4615
4616static __inline__ __m256i __DEFAULT_FN_ATTRS
4617_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4618 __m256i __B)
4619{
4620 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4621 (__v4di) __B,
4622 (__v4di) __W,
4623 (__mmask8) __U);
4624}
4625
4626static __inline__ __m256i __DEFAULT_FN_ATTRS
4627_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4628{
4629 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4630 (__v4di) __B,
4631 (__v4di)
4632 _mm256_setzero_si256 (),
4633 (__mmask8) __U);
4634}
4635
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004636static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004637_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004638{
Craig Topper66b2fd12016-10-31 04:30:51 +00004639 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4640 (__v2di)_mm_sllv_epi64(__X, __Y),
4641 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004642}
4643
4644static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004645_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004646{
Craig Topper66b2fd12016-10-31 04:30:51 +00004647 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4648 (__v2di)_mm_sllv_epi64(__X, __Y),
4649 (__v2di)_mm_setzero_di());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004650}
4651
4652static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004653_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004654{
Craig Topper66b2fd12016-10-31 04:30:51 +00004655 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4656 (__v4di)_mm256_sllv_epi64(__X, __Y),
4657 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004658}
4659
4660static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004661_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004662{
Craig Topper66b2fd12016-10-31 04:30:51 +00004663 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4664 (__v4di)_mm256_sllv_epi64(__X, __Y),
4665 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004666}
4667
4668static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004669_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004670{
Craig Topper66b2fd12016-10-31 04:30:51 +00004671 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4672 (__v4si)_mm_sllv_epi32(__X, __Y),
4673 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004674}
4675
4676static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004677_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004678{
Craig Topper66b2fd12016-10-31 04:30:51 +00004679 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4680 (__v4si)_mm_sllv_epi32(__X, __Y),
4681 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004682}
4683
4684static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004685_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004686{
Craig Topper66b2fd12016-10-31 04:30:51 +00004687 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4688 (__v8si)_mm256_sllv_epi32(__X, __Y),
4689 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004690}
4691
4692static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004693_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004694{
Craig Topper66b2fd12016-10-31 04:30:51 +00004695 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4696 (__v8si)_mm256_sllv_epi32(__X, __Y),
4697 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004698}
4699
4700static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004701_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004702{
Craig Topper66b2fd12016-10-31 04:30:51 +00004703 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4704 (__v2di)_mm_srlv_epi64(__X, __Y),
4705 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004706}
4707
4708static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004709_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004710{
Craig Topper66b2fd12016-10-31 04:30:51 +00004711 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4712 (__v2di)_mm_srlv_epi64(__X, __Y),
4713 (__v2di)_mm_setzero_di());
4714}
4715
4716static __inline__ __m256i __DEFAULT_FN_ATTRS
4717_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4718{
4719 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4720 (__v4di)_mm256_srlv_epi64(__X, __Y),
4721 (__v4di)__W);
4722}
4723
4724static __inline__ __m256i __DEFAULT_FN_ATTRS
4725_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4726{
4727 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4728 (__v4di)_mm256_srlv_epi64(__X, __Y),
4729 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004730}
4731
4732static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004733_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004734{
Craig Topper66b2fd12016-10-31 04:30:51 +00004735 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4736 (__v4si)_mm_srlv_epi32(__X, __Y),
4737 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004738}
4739
4740static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004741_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004742{
Craig Topper66b2fd12016-10-31 04:30:51 +00004743 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4744 (__v4si)_mm_srlv_epi32(__X, __Y),
4745 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004746}
4747
4748static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004749_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004750{
Craig Topper66b2fd12016-10-31 04:30:51 +00004751 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4752 (__v8si)_mm256_srlv_epi32(__X, __Y),
4753 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004754}
4755
4756static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004757_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004758{
Craig Topper66b2fd12016-10-31 04:30:51 +00004759 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4760 (__v8si)_mm256_srlv_epi32(__X, __Y),
4761 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004762}
4763
4764static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004765_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004766{
Craig Topper66b2fd12016-10-31 04:30:51 +00004767 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4768 (__v4si)_mm_srl_epi32(__A, __B),
4769 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004770}
4771
4772static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004773_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004774{
Craig Topper66b2fd12016-10-31 04:30:51 +00004775 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4776 (__v4si)_mm_srl_epi32(__A, __B),
4777 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004778}
4779
4780static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004781_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004782{
Craig Topper66b2fd12016-10-31 04:30:51 +00004783 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4784 (__v8si)_mm256_srl_epi32(__A, __B),
4785 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004786}
4787
4788static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004789_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004790{
Craig Topper66b2fd12016-10-31 04:30:51 +00004791 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4792 (__v8si)_mm256_srl_epi32(__A, __B),
4793 (__v8si)_mm256_setzero_si256());
4794}
4795
4796static __inline__ __m128i __DEFAULT_FN_ATTRS
4797_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4798{
4799 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4800 (__v4si)_mm_srli_epi32(__A, __B),
4801 (__v4si)__W);
4802}
4803
4804static __inline__ __m128i __DEFAULT_FN_ATTRS
4805_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4806{
4807 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4808 (__v4si)_mm_srli_epi32(__A, __B),
4809 (__v4si)_mm_setzero_si128());
4810}
4811
4812static __inline__ __m256i __DEFAULT_FN_ATTRS
4813_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4814{
4815 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4816 (__v8si)_mm256_srli_epi32(__A, __B),
4817 (__v8si)__W);
4818}
4819
4820static __inline__ __m256i __DEFAULT_FN_ATTRS
4821_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4822{
4823 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4824 (__v8si)_mm256_srli_epi32(__A, __B),
4825 (__v8si)_mm256_setzero_si256());
4826}
4827
4828static __inline__ __m128i __DEFAULT_FN_ATTRS
4829_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4830{
4831 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4832 (__v2di)_mm_srl_epi64(__A, __B),
4833 (__v2di)__W);
4834}
4835
4836static __inline__ __m128i __DEFAULT_FN_ATTRS
4837_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4838{
4839 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4840 (__v2di)_mm_srl_epi64(__A, __B),
4841 (__v2di)_mm_setzero_di());
4842}
4843
4844static __inline__ __m256i __DEFAULT_FN_ATTRS
4845_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4846{
4847 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4848 (__v4di)_mm256_srl_epi64(__A, __B),
4849 (__v4di)__W);
4850}
4851
4852static __inline__ __m256i __DEFAULT_FN_ATTRS
4853_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4854{
4855 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4856 (__v4di)_mm256_srl_epi64(__A, __B),
4857 (__v4di)_mm256_setzero_si256());
4858}
4859
4860static __inline__ __m128i __DEFAULT_FN_ATTRS
4861_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4862{
4863 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4864 (__v2di)_mm_srli_epi64(__A, __B),
4865 (__v2di)__W);
4866}
4867
4868static __inline__ __m128i __DEFAULT_FN_ATTRS
4869_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
4870{
4871 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4872 (__v2di)_mm_srli_epi64(__A, __B),
4873 (__v2di)_mm_setzero_di());
4874}
4875
4876static __inline__ __m256i __DEFAULT_FN_ATTRS
4877_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4878{
4879 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4880 (__v4di)_mm256_srli_epi64(__A, __B),
4881 (__v4di)__W);
4882}
4883
4884static __inline__ __m256i __DEFAULT_FN_ATTRS
4885_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
4886{
4887 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4888 (__v4di)_mm256_srli_epi64(__A, __B),
4889 (__v4di)_mm256_setzero_si256());
4890}
4891
4892static __inline__ __m128i __DEFAULT_FN_ATTRS
4893_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
4894{
4895 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4896 (__v4si)_mm_srav_epi32(__X, __Y),
4897 (__v4si)__W);
4898}
4899
4900static __inline__ __m128i __DEFAULT_FN_ATTRS
4901_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
4902{
4903 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4904 (__v4si)_mm_srav_epi32(__X, __Y),
4905 (__v4si)_mm_setzero_si128());
4906}
4907
4908static __inline__ __m256i __DEFAULT_FN_ATTRS
4909_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4910{
4911 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4912 (__v8si)_mm256_srav_epi32(__X, __Y),
4913 (__v8si)__W);
4914}
4915
4916static __inline__ __m256i __DEFAULT_FN_ATTRS
4917_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
4918{
4919 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4920 (__v8si)_mm256_srav_epi32(__X, __Y),
4921 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004922}
4923
4924static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004925_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004926{
Craig Topper5e0709d2016-11-13 07:26:34 +00004927 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004928}
4929
4930static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004931_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004932{
Craig Topper5e0709d2016-11-13 07:26:34 +00004933 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4934 (__v2di)_mm_srav_epi64(__X, __Y),
4935 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004936}
4937
4938static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004939_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004940{
Craig Topper5e0709d2016-11-13 07:26:34 +00004941 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4942 (__v2di)_mm_srav_epi64(__X, __Y),
4943 (__v2di)_mm_setzero_di());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004944}
4945
4946static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004947_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004948{
Craig Topper5e0709d2016-11-13 07:26:34 +00004949 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004950}
4951
4952static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004953_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004954{
Craig Topper5e0709d2016-11-13 07:26:34 +00004955 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4956 (__v4di)_mm256_srav_epi64(__X, __Y),
4957 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004958}
4959
4960static __inline__ __m256i __DEFAULT_FN_ATTRS
4961_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
4962{
Craig Topper5e0709d2016-11-13 07:26:34 +00004963 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4964 (__v4di)_mm256_srav_epi64(__X, __Y),
4965 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004966}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004967
Michael Zuckermane6542002016-05-23 08:01:48 +00004968static __inline__ __m128i __DEFAULT_FN_ATTRS
4969_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4970{
Igor Bregeraadb8762016-06-08 13:59:20 +00004971 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
4972 (__v4si) __A,
4973 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00004974}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004975
Michael Zuckermane6542002016-05-23 08:01:48 +00004976static __inline__ __m128i __DEFAULT_FN_ATTRS
4977_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
4978{
Igor Bregeraadb8762016-06-08 13:59:20 +00004979 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
4980 (__v4si) __A,
4981 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00004982}
4983
4984
4985static __inline__ __m256i __DEFAULT_FN_ATTRS
4986_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
4987{
Igor Bregeraadb8762016-06-08 13:59:20 +00004988 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
4989 (__v8si) __A,
4990 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00004991}
4992
4993static __inline__ __m256i __DEFAULT_FN_ATTRS
4994_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
4995{
Igor Bregeraadb8762016-06-08 13:59:20 +00004996 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
4997 (__v8si) __A,
4998 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00004999}
5000
5001static __inline__ __m128i __DEFAULT_FN_ATTRS
5002_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5003{
5004 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5005 (__v4si) __W,
5006 (__mmask8)
5007 __U);
5008}
5009
5010static __inline__ __m128i __DEFAULT_FN_ATTRS
5011_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5012{
5013 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5014 (__v4si)
5015 _mm_setzero_si128 (),
5016 (__mmask8)
5017 __U);
5018}
5019
5020static __inline__ __m256i __DEFAULT_FN_ATTRS
5021_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5022{
5023 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5024 (__v8si) __W,
5025 (__mmask8)
5026 __U);
5027}
5028
5029static __inline__ __m256i __DEFAULT_FN_ATTRS
5030_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5031{
5032 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5033 (__v8si)
5034 _mm256_setzero_si256 (),
5035 (__mmask8)
5036 __U);
5037}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005038
5039static __inline__ void __DEFAULT_FN_ATTRS
5040_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5041{
5042 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5043 (__v4si) __A,
5044 (__mmask8) __U);
5045}
5046
5047static __inline__ void __DEFAULT_FN_ATTRS
5048_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5049{
5050 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5051 (__v8si) __A,
5052 (__mmask8) __U);
5053}
5054
5055static __inline__ __m128i __DEFAULT_FN_ATTRS
5056_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5057{
Igor Bregeraadb8762016-06-08 13:59:20 +00005058 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5059 (__v2di) __A,
5060 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005061}
5062
5063static __inline__ __m128i __DEFAULT_FN_ATTRS
5064_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5065{
Igor Bregeraadb8762016-06-08 13:59:20 +00005066 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5067 (__v2di) __A,
5068 (__v2di) _mm_setzero_di ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005069}
5070
5071static __inline__ __m256i __DEFAULT_FN_ATTRS
5072_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5073{
Igor Bregeraadb8762016-06-08 13:59:20 +00005074 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5075 (__v4di) __A,
5076 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005077}
5078
5079static __inline__ __m256i __DEFAULT_FN_ATTRS
5080_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5081{
Igor Bregeraadb8762016-06-08 13:59:20 +00005082 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5083 (__v4di) __A,
5084 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005085}
5086
5087static __inline__ __m128i __DEFAULT_FN_ATTRS
5088_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5089{
5090 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5091 (__v2di) __W,
5092 (__mmask8)
5093 __U);
5094}
5095
5096static __inline__ __m128i __DEFAULT_FN_ATTRS
5097_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5098{
5099 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5100 (__v2di)
5101 _mm_setzero_di (),
5102 (__mmask8)
5103 __U);
5104}
5105
5106static __inline__ __m256i __DEFAULT_FN_ATTRS
5107_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5108{
5109 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5110 (__v4di) __W,
5111 (__mmask8)
5112 __U);
5113}
5114
5115static __inline__ __m256i __DEFAULT_FN_ATTRS
5116_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5117{
5118 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5119 (__v4di)
5120 _mm256_setzero_si256 (),
5121 (__mmask8)
5122 __U);
5123}
5124
5125static __inline__ void __DEFAULT_FN_ATTRS
5126_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5127{
5128 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5129 (__v2di) __A,
5130 (__mmask8) __U);
5131}
5132
5133static __inline__ void __DEFAULT_FN_ATTRS
5134_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5135{
5136 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5137 (__v4di) __A,
5138 (__mmask8) __U);
5139}
5140
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005141static __inline__ __m128d __DEFAULT_FN_ATTRS
5142_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5143{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005144 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5145 (__v2df)_mm_movedup_pd(__A),
5146 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005147}
5148
5149static __inline__ __m128d __DEFAULT_FN_ATTRS
5150_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5151{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005152 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5153 (__v2df)_mm_movedup_pd(__A),
5154 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005155}
5156
5157static __inline__ __m256d __DEFAULT_FN_ATTRS
5158_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5159{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005160 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5161 (__v4df)_mm256_movedup_pd(__A),
5162 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005163}
5164
5165static __inline__ __m256d __DEFAULT_FN_ATTRS
5166_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5167{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005168 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5169 (__v4df)_mm256_movedup_pd(__A),
5170 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005171}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005172
Jina Nahias3ad702a2017-09-19 11:00:27 +00005173static __inline__ __m128i __DEFAULT_FN_ATTRS
5174_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5175{
5176 return (__m128i)__builtin_ia32_selectd_128(__M,
5177 (__v4si) _mm_set1_epi32(__A),
5178 (__v4si)__O);
5179}
Michael Zuckerman912be162016-03-07 08:29:10 +00005180
Jina Nahias3ad702a2017-09-19 11:00:27 +00005181static __inline__ __m128i __DEFAULT_FN_ATTRS
5182_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5183{
5184 return (__m128i)__builtin_ia32_selectd_128(__M,
5185 (__v4si) _mm_set1_epi32(__A),
5186 (__v4si)_mm_setzero_si128());
5187}
Michael Zuckerman912be162016-03-07 08:29:10 +00005188
Jina Nahias3ad702a2017-09-19 11:00:27 +00005189static __inline__ __m256i __DEFAULT_FN_ATTRS
5190_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5191{
5192 return (__m256i)__builtin_ia32_selectd_256(__M,
5193 (__v8si) _mm256_set1_epi32(__A),
5194 (__v8si)__O);
5195}
Michael Zuckerman912be162016-03-07 08:29:10 +00005196
Jina Nahias3ad702a2017-09-19 11:00:27 +00005197static __inline__ __m256i __DEFAULT_FN_ATTRS
5198_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5199{
5200 return (__m256i)__builtin_ia32_selectd_256(__M,
5201 (__v8si) _mm256_set1_epi32(__A),
5202 (__v8si)_mm256_setzero_si256());
5203}
Michael Zuckerman912be162016-03-07 08:29:10 +00005204
Michael Zuckerman912be162016-03-07 08:29:10 +00005205
5206static __inline__ __m128i __DEFAULT_FN_ATTRS
5207_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5208{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005209 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005210 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005211 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005212}
5213
5214static __inline__ __m128i __DEFAULT_FN_ATTRS
5215_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5216{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005217 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005218 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005219 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005220}
5221
5222static __inline__ __m256i __DEFAULT_FN_ATTRS
5223_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5224{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005225 return (__m256i) __builtin_ia32_selectq_256(__M,
5226 (__v4di) _mm256_set1_epi64x(__A),
5227 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005228}
5229
5230static __inline__ __m256i __DEFAULT_FN_ATTRS
5231_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5232{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005233 return (__m256i) __builtin_ia32_selectq_256(__M,
5234 (__v4di) _mm256_set1_epi64x(__A),
5235 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005236}
Michael Zuckermandef78752016-03-28 12:23:09 +00005237
Craig Topperd2661882016-05-17 04:41:48 +00005238#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5239 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5240 (__v2df)(__m128d)(B), \
5241 (__v2di)(__m128i)(C), (int)(imm), \
5242 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005243
Craig Topperd2661882016-05-17 04:41:48 +00005244#define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5245 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5246 (__v2df)(__m128d)(B), \
5247 (__v2di)(__m128i)(C), (int)(imm), \
5248 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005249
Craig Topperd2661882016-05-17 04:41:48 +00005250#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5251 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5252 (__v2df)(__m128d)(B), \
5253 (__v2di)(__m128i)(C), \
5254 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005255
Craig Topperd2661882016-05-17 04:41:48 +00005256#define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5257 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5258 (__v4df)(__m256d)(B), \
5259 (__v4di)(__m256i)(C), (int)(imm), \
5260 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005261
Craig Topperd2661882016-05-17 04:41:48 +00005262#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5263 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5264 (__v4df)(__m256d)(B), \
5265 (__v4di)(__m256i)(C), (int)(imm), \
5266 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005267
Craig Topperd2661882016-05-17 04:41:48 +00005268#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5269 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5270 (__v4df)(__m256d)(B), \
5271 (__v4di)(__m256i)(C), \
5272 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005273
Craig Topperd2661882016-05-17 04:41:48 +00005274#define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5275 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5276 (__v4sf)(__m128)(B), \
5277 (__v4si)(__m128i)(C), (int)(imm), \
5278 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005279
Craig Topperd2661882016-05-17 04:41:48 +00005280#define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5281 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5282 (__v4sf)(__m128)(B), \
5283 (__v4si)(__m128i)(C), (int)(imm), \
5284 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005285
Craig Topperd2661882016-05-17 04:41:48 +00005286#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5287 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5288 (__v4sf)(__m128)(B), \
5289 (__v4si)(__m128i)(C), (int)(imm), \
5290 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005291
Craig Topperd2661882016-05-17 04:41:48 +00005292#define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5293 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5294 (__v8sf)(__m256)(B), \
5295 (__v8si)(__m256i)(C), (int)(imm), \
5296 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005297
Craig Topperd2661882016-05-17 04:41:48 +00005298#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5299 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5300 (__v8sf)(__m256)(B), \
5301 (__v8si)(__m256i)(C), (int)(imm), \
5302 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005303
Craig Topperd2661882016-05-17 04:41:48 +00005304#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5305 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5306 (__v8sf)(__m256)(B), \
5307 (__v8si)(__m256i)(C), (int)(imm), \
5308 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005309
5310static __inline__ __m128d __DEFAULT_FN_ATTRS
5311_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5312{
5313 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5314 (__v2df) __W,
5315 (__mmask8) __U);
5316}
5317
5318static __inline__ __m128d __DEFAULT_FN_ATTRS
5319_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5320{
5321 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5322 (__v2df)
5323 _mm_setzero_pd (),
5324 (__mmask8) __U);
5325}
5326
5327static __inline__ __m256d __DEFAULT_FN_ATTRS
5328_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5329{
5330 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5331 (__v4df) __W,
5332 (__mmask8) __U);
5333}
5334
5335static __inline__ __m256d __DEFAULT_FN_ATTRS
5336_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5337{
5338 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5339 (__v4df)
5340 _mm256_setzero_pd (),
5341 (__mmask8) __U);
5342}
5343
5344static __inline__ __m128 __DEFAULT_FN_ATTRS
5345_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5346{
5347 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5348 (__v4sf) __W,
5349 (__mmask8) __U);
5350}
5351
5352static __inline__ __m128 __DEFAULT_FN_ATTRS
5353_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5354{
5355 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5356 (__v4sf)
5357 _mm_setzero_ps (),
5358 (__mmask8) __U);
5359}
5360
5361static __inline__ __m256 __DEFAULT_FN_ATTRS
5362_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5363{
5364 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5365 (__v8sf) __W,
5366 (__mmask8) __U);
5367}
5368
5369static __inline__ __m256 __DEFAULT_FN_ATTRS
5370_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5371{
5372 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5373 (__v8sf)
5374 _mm256_setzero_ps (),
5375 (__mmask8) __U);
5376}
5377
5378static __inline__ __m128i __DEFAULT_FN_ATTRS
5379_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5380{
5381 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5382 (__v2di) __W,
5383 (__mmask8) __U);
5384}
5385
5386static __inline__ __m128i __DEFAULT_FN_ATTRS
5387_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5388{
5389 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5390 (__v2di)
5391 _mm_setzero_si128 (),
5392 (__mmask8) __U);
5393}
5394
5395static __inline__ __m256i __DEFAULT_FN_ATTRS
5396_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5397{
5398 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5399 (__v4di) __W,
5400 (__mmask8) __U);
5401}
5402
5403static __inline__ __m256i __DEFAULT_FN_ATTRS
5404_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5405{
5406 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5407 (__v4di)
5408 _mm256_setzero_si256 (),
5409 (__mmask8) __U);
5410}
5411
5412static __inline__ __m128i __DEFAULT_FN_ATTRS
5413_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5414{
5415 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5416 (__v4si) __W,
5417 (__mmask8) __U);
5418}
5419
5420static __inline__ __m128i __DEFAULT_FN_ATTRS
5421_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5422{
5423 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5424 (__v4si)
5425 _mm_setzero_si128 (),
5426 (__mmask8) __U);
5427}
5428
5429static __inline__ __m256i __DEFAULT_FN_ATTRS
5430_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5431{
5432 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5433 (__v8si) __W,
5434 (__mmask8) __U);
5435}
5436
5437static __inline__ __m256i __DEFAULT_FN_ATTRS
5438_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5439{
5440 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5441 (__v8si)
5442 _mm256_setzero_si256 (),
5443 (__mmask8) __U);
5444}
5445
5446static __inline__ __m128d __DEFAULT_FN_ATTRS
5447_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5448{
5449 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5450 (__v2df) __W,
5451 (__mmask8) __U);
5452}
5453
5454static __inline__ __m128d __DEFAULT_FN_ATTRS
5455_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5456{
5457 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5458 (__v2df)
5459 _mm_setzero_pd (),
5460 (__mmask8) __U);
5461}
5462
5463static __inline__ __m256d __DEFAULT_FN_ATTRS
5464_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5465{
5466 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5467 (__v4df) __W,
5468 (__mmask8) __U);
5469}
5470
5471static __inline__ __m256d __DEFAULT_FN_ATTRS
5472_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5473{
5474 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5475 (__v4df)
5476 _mm256_setzero_pd (),
5477 (__mmask8) __U);
5478}
5479
5480static __inline__ __m128 __DEFAULT_FN_ATTRS
5481_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5482{
5483 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5484 (__v4sf) __W,
5485 (__mmask8) __U);
5486}
5487
5488static __inline__ __m128 __DEFAULT_FN_ATTRS
5489_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5490{
5491 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5492 (__v4sf)
5493 _mm_setzero_ps (),
5494 (__mmask8) __U);
5495}
5496
5497static __inline__ __m256 __DEFAULT_FN_ATTRS
5498_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5499{
5500 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5501 (__v8sf) __W,
5502 (__mmask8) __U);
5503}
5504
5505static __inline__ __m256 __DEFAULT_FN_ATTRS
5506_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5507{
5508 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5509 (__v8sf)
5510 _mm256_setzero_ps (),
5511 (__mmask8) __U);
5512}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005513
5514static __inline__ void __DEFAULT_FN_ATTRS
5515_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5516{
5517 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5518 (__v2df) __A,
5519 (__mmask8) __U);
5520}
5521
5522static __inline__ void __DEFAULT_FN_ATTRS
5523_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5524{
5525 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5526 (__v4df) __A,
5527 (__mmask8) __U);
5528}
5529
5530static __inline__ void __DEFAULT_FN_ATTRS
5531_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5532{
5533 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5534 (__v4sf) __A,
5535 (__mmask8) __U);
5536}
5537
5538static __inline__ void __DEFAULT_FN_ATTRS
5539_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5540{
5541 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5542 (__v8sf) __A,
5543 (__mmask8) __U);
5544}
5545
5546static __inline__ void __DEFAULT_FN_ATTRS
5547_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5548{
5549 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5550 (__v2di) __A,
5551 (__mmask8) __U);
5552}
5553
5554static __inline__ void __DEFAULT_FN_ATTRS
5555_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5556{
5557 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5558 (__v4di) __A,
5559 (__mmask8) __U);
5560}
5561
5562static __inline__ void __DEFAULT_FN_ATTRS
5563_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5564{
5565 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5566 (__v4si) __A,
5567 (__mmask8) __U);
5568}
5569
5570static __inline__ void __DEFAULT_FN_ATTRS
5571_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5572{
5573 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5574 (__v8si) __A,
5575 (__mmask8) __U);
5576}
5577
5578static __inline__ void __DEFAULT_FN_ATTRS
5579_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5580{
5581 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5582 (__v2df) __A,
5583 (__mmask8) __U);
5584}
5585
5586static __inline__ void __DEFAULT_FN_ATTRS
5587_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5588{
5589 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5590 (__v4df) __A,
5591 (__mmask8) __U);
5592}
5593
5594static __inline__ void __DEFAULT_FN_ATTRS
5595_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5596{
5597 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5598 (__v4sf) __A,
5599 (__mmask8) __U);
5600}
5601
5602static __inline__ void __DEFAULT_FN_ATTRS
5603_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5604{
5605 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5606 (__v8sf) __A,
5607 (__mmask8) __U);
5608}
5609
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005610
5611static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005612_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005613{
Craig Topper79f53ca2016-06-23 06:36:42 +00005614 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5615 (__v2df)_mm_unpackhi_pd(__A, __B),
5616 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005617}
5618
5619static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005620_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005621{
Craig Topper79f53ca2016-06-23 06:36:42 +00005622 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5623 (__v2df)_mm_unpackhi_pd(__A, __B),
5624 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005625}
5626
5627static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005628_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005629{
Craig Topper79f53ca2016-06-23 06:36:42 +00005630 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5631 (__v4df)_mm256_unpackhi_pd(__A, __B),
5632 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005633}
5634
5635static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005636_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005637{
Craig Topper79f53ca2016-06-23 06:36:42 +00005638 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5639 (__v4df)_mm256_unpackhi_pd(__A, __B),
5640 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005641}
5642
5643static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005644_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005645{
Craig Topper79f53ca2016-06-23 06:36:42 +00005646 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5647 (__v4sf)_mm_unpackhi_ps(__A, __B),
5648 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005649}
5650
5651static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005652_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005653{
Craig Topper79f53ca2016-06-23 06:36:42 +00005654 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5655 (__v4sf)_mm_unpackhi_ps(__A, __B),
5656 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005657}
5658
5659static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005660_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005661{
Craig Topper79f53ca2016-06-23 06:36:42 +00005662 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5663 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5664 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005665}
5666
5667static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005668_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005669{
Craig Topper79f53ca2016-06-23 06:36:42 +00005670 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5671 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5672 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005673}
5674
5675static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005676_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005677{
Craig Topper79f53ca2016-06-23 06:36:42 +00005678 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5679 (__v2df)_mm_unpacklo_pd(__A, __B),
5680 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005681}
5682
5683static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005684_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005685{
Craig Topper79f53ca2016-06-23 06:36:42 +00005686 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5687 (__v2df)_mm_unpacklo_pd(__A, __B),
5688 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005689}
5690
5691static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005692_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005693{
Craig Topper79f53ca2016-06-23 06:36:42 +00005694 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5695 (__v4df)_mm256_unpacklo_pd(__A, __B),
5696 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005697}
5698
5699static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005700_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005701{
Craig Topper79f53ca2016-06-23 06:36:42 +00005702 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5703 (__v4df)_mm256_unpacklo_pd(__A, __B),
5704 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005705}
5706
5707static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005708_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005709{
Craig Topper79f53ca2016-06-23 06:36:42 +00005710 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5711 (__v4sf)_mm_unpacklo_ps(__A, __B),
5712 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005713}
5714
5715static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005716_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005717{
Craig Topper79f53ca2016-06-23 06:36:42 +00005718 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5719 (__v4sf)_mm_unpacklo_ps(__A, __B),
5720 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005721}
5722
5723static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005724_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005725{
Craig Topper79f53ca2016-06-23 06:36:42 +00005726 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5727 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5728 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005729}
5730
5731static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005732_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005733{
Craig Topper79f53ca2016-06-23 06:36:42 +00005734 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5735 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5736 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005737}
5738
5739static __inline__ __m128d __DEFAULT_FN_ATTRS
5740_mm_rcp14_pd (__m128d __A)
5741{
5742 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5743 (__v2df)
5744 _mm_setzero_pd (),
5745 (__mmask8) -1);
5746}
5747
5748static __inline__ __m128d __DEFAULT_FN_ATTRS
5749_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5750{
5751 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5752 (__v2df) __W,
5753 (__mmask8) __U);
5754}
5755
5756static __inline__ __m128d __DEFAULT_FN_ATTRS
5757_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5758{
5759 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5760 (__v2df)
5761 _mm_setzero_pd (),
5762 (__mmask8) __U);
5763}
5764
5765static __inline__ __m256d __DEFAULT_FN_ATTRS
5766_mm256_rcp14_pd (__m256d __A)
5767{
5768 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5769 (__v4df)
5770 _mm256_setzero_pd (),
5771 (__mmask8) -1);
5772}
5773
5774static __inline__ __m256d __DEFAULT_FN_ATTRS
5775_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5776{
5777 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5778 (__v4df) __W,
5779 (__mmask8) __U);
5780}
5781
5782static __inline__ __m256d __DEFAULT_FN_ATTRS
5783_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5784{
5785 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5786 (__v4df)
5787 _mm256_setzero_pd (),
5788 (__mmask8) __U);
5789}
5790
5791static __inline__ __m128 __DEFAULT_FN_ATTRS
5792_mm_rcp14_ps (__m128 __A)
5793{
5794 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5795 (__v4sf)
5796 _mm_setzero_ps (),
5797 (__mmask8) -1);
5798}
5799
5800static __inline__ __m128 __DEFAULT_FN_ATTRS
5801_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5802{
5803 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5804 (__v4sf) __W,
5805 (__mmask8) __U);
5806}
5807
5808static __inline__ __m128 __DEFAULT_FN_ATTRS
5809_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5810{
5811 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5812 (__v4sf)
5813 _mm_setzero_ps (),
5814 (__mmask8) __U);
5815}
5816
5817static __inline__ __m256 __DEFAULT_FN_ATTRS
5818_mm256_rcp14_ps (__m256 __A)
5819{
5820 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5821 (__v8sf)
5822 _mm256_setzero_ps (),
5823 (__mmask8) -1);
5824}
5825
5826static __inline__ __m256 __DEFAULT_FN_ATTRS
5827_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5828{
5829 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5830 (__v8sf) __W,
5831 (__mmask8) __U);
5832}
5833
5834static __inline__ __m256 __DEFAULT_FN_ATTRS
5835_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
5836{
5837 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5838 (__v8sf)
5839 _mm256_setzero_ps (),
5840 (__mmask8) __U);
5841}
5842
Craig Topperd2661882016-05-17 04:41:48 +00005843#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005844 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5845 (__v2df)_mm_permute_pd((X), (C)), \
5846 (__v2df)(__m128d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005847
Craig Topperd2661882016-05-17 04:41:48 +00005848#define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005849 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5850 (__v2df)_mm_permute_pd((X), (C)), \
5851 (__v2df)_mm_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005852
Craig Topperd2661882016-05-17 04:41:48 +00005853#define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005854 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5855 (__v4df)_mm256_permute_pd((X), (C)), \
5856 (__v4df)(__m256d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005857
Craig Topperd2661882016-05-17 04:41:48 +00005858#define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005859 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5860 (__v4df)_mm256_permute_pd((X), (C)), \
5861 (__v4df)_mm256_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005862
Craig Topperd2661882016-05-17 04:41:48 +00005863#define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005864 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5865 (__v4sf)_mm_permute_ps((X), (C)), \
5866 (__v4sf)(__m128)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005867
Craig Topperd2661882016-05-17 04:41:48 +00005868#define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005869 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5870 (__v4sf)_mm_permute_ps((X), (C)), \
5871 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005872
Craig Topperd2661882016-05-17 04:41:48 +00005873#define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005874 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5875 (__v8sf)_mm256_permute_ps((X), (C)), \
5876 (__v8sf)(__m256)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005877
Craig Topperd2661882016-05-17 04:41:48 +00005878#define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00005879 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5880 (__v8sf)_mm256_permute_ps((X), (C)), \
5881 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005882
5883static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005884_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005885{
Craig Topper5391c982016-12-10 20:27:39 +00005886 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5887 (__v2df)_mm_permutevar_pd(__A, __C),
5888 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005889}
5890
5891static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005892_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005893{
Craig Topper5391c982016-12-10 20:27:39 +00005894 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5895 (__v2df)_mm_permutevar_pd(__A, __C),
5896 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005897}
5898
5899static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005900_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005901{
Craig Topper5391c982016-12-10 20:27:39 +00005902 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5903 (__v4df)_mm256_permutevar_pd(__A, __C),
5904 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005905}
5906
5907static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005908_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005909{
Craig Topper5391c982016-12-10 20:27:39 +00005910 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5911 (__v4df)_mm256_permutevar_pd(__A, __C),
5912 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005913}
5914
5915static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005916_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005917{
Craig Topper5391c982016-12-10 20:27:39 +00005918 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5919 (__v4sf)_mm_permutevar_ps(__A, __C),
5920 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005921}
5922
5923static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005924_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005925{
Craig Topper5391c982016-12-10 20:27:39 +00005926 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5927 (__v4sf)_mm_permutevar_ps(__A, __C),
5928 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005929}
5930
5931static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005932_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005933{
Craig Topper5391c982016-12-10 20:27:39 +00005934 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5935 (__v8sf)_mm256_permutevar_ps(__A, __C),
5936 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005937}
5938
5939static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005940_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005941{
Craig Topper5391c982016-12-10 20:27:39 +00005942 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5943 (__v8sf)_mm256_permutevar_ps(__A, __C),
5944 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005945}
5946
Michael Zuckerman07525092016-04-11 10:22:07 +00005947static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5948_mm_test_epi32_mask (__m128i __A, __m128i __B)
5949{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005950 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00005951}
5952
5953static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5954_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
5955{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005956 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
5957 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00005958}
5959
5960static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5961_mm256_test_epi32_mask (__m256i __A, __m256i __B)
5962{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005963 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
5964 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005965}
5966
5967static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5968_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
5969{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005970 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
5971 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005972}
5973
5974static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5975_mm_test_epi64_mask (__m128i __A, __m128i __B)
5976{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005977 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00005978}
5979
5980static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5981_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
5982{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005983 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
5984 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00005985}
5986
5987static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5988_mm256_test_epi64_mask (__m256i __A, __m256i __B)
5989{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005990 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
5991 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005992}
5993
5994static __inline__ __mmask8 __DEFAULT_FN_ATTRS
5995_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
5996{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005997 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
5998 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005999}
6000
6001static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6002_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6003{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006004 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006005}
6006
6007static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6008_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6009{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006010 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6011 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006012}
6013
6014static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6015_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6016{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006017 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6018 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006019}
6020
6021static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6022_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6023{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006024 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6025 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006026}
6027
6028static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6029_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6030{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006031 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006032}
6033
6034static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6035_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6036{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006037 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6038 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006039}
6040
6041static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6042_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6043{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006044 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6045 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006046}
6047
6048static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6049_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6050{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006051 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6052 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006053}
6054
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006055static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006056_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006057{
Craig Topper79f53ca2016-06-23 06:36:42 +00006058 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6059 (__v4si)_mm_unpackhi_epi32(__A, __B),
6060 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006061}
6062
6063static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006064_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006065{
Craig Topper79f53ca2016-06-23 06:36:42 +00006066 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6067 (__v4si)_mm_unpackhi_epi32(__A, __B),
6068 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006069}
6070
6071static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006072_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006073{
Craig Topper79f53ca2016-06-23 06:36:42 +00006074 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6075 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6076 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006077}
6078
6079static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006080_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006081{
Craig Topper79f53ca2016-06-23 06:36:42 +00006082 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6083 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6084 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006085}
6086
6087static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006088_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006089{
Craig Topper79f53ca2016-06-23 06:36:42 +00006090 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6091 (__v2di)_mm_unpackhi_epi64(__A, __B),
6092 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006093}
6094
6095static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006096_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006097{
Craig Topper79f53ca2016-06-23 06:36:42 +00006098 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6099 (__v2di)_mm_unpackhi_epi64(__A, __B),
6100 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006101}
6102
6103static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006104_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006105{
Craig Topper79f53ca2016-06-23 06:36:42 +00006106 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6107 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6108 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006109}
6110
6111static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006112_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006113{
Craig Topper79f53ca2016-06-23 06:36:42 +00006114 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6115 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6116 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006117}
6118
6119static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006120_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006121{
Craig Topper79f53ca2016-06-23 06:36:42 +00006122 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6123 (__v4si)_mm_unpacklo_epi32(__A, __B),
6124 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006125}
6126
6127static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006128_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006129{
Craig Topper79f53ca2016-06-23 06:36:42 +00006130 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6131 (__v4si)_mm_unpacklo_epi32(__A, __B),
6132 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006133}
6134
6135static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006136_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006137{
Craig Topper79f53ca2016-06-23 06:36:42 +00006138 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6139 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6140 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006141}
6142
6143static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006144_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006145{
Craig Topper79f53ca2016-06-23 06:36:42 +00006146 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6147 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6148 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006149}
6150
6151static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006152_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006153{
Craig Topper79f53ca2016-06-23 06:36:42 +00006154 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6155 (__v2di)_mm_unpacklo_epi64(__A, __B),
6156 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006157}
6158
6159static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006160_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006161{
Craig Topper79f53ca2016-06-23 06:36:42 +00006162 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6163 (__v2di)_mm_unpacklo_epi64(__A, __B),
6164 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006165}
6166
6167static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006168_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006169{
Craig Topper79f53ca2016-06-23 06:36:42 +00006170 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6171 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6172 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006173}
6174
6175static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006176_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006177{
Craig Topper79f53ca2016-06-23 06:36:42 +00006178 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6179 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6180 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006181}
6182
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006183static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006184_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006185{
Craig Topper66b2fd12016-10-31 04:30:51 +00006186 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6187 (__v4si)_mm_sra_epi32(__A, __B),
6188 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006189}
6190
6191static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006192_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006193{
Craig Topper66b2fd12016-10-31 04:30:51 +00006194 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6195 (__v4si)_mm_sra_epi32(__A, __B),
6196 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006197}
6198
6199static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006200_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006201{
Craig Topper66b2fd12016-10-31 04:30:51 +00006202 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6203 (__v8si)_mm256_sra_epi32(__A, __B),
6204 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006205}
6206
6207static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006208_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006209{
Craig Topper66b2fd12016-10-31 04:30:51 +00006210 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6211 (__v8si)_mm256_sra_epi32(__A, __B),
6212 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006213}
6214
Craig Topper66b2fd12016-10-31 04:30:51 +00006215static __inline__ __m128i __DEFAULT_FN_ATTRS
6216_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6217{
6218 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6219 (__v4si)_mm_srai_epi32(__A, __B),
6220 (__v4si)__W);
6221}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006222
Craig Topper66b2fd12016-10-31 04:30:51 +00006223static __inline__ __m128i __DEFAULT_FN_ATTRS
6224_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6225{
6226 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6227 (__v4si)_mm_srai_epi32(__A, __B),
6228 (__v4si)_mm_setzero_si128());
6229}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006230
Craig Topper66b2fd12016-10-31 04:30:51 +00006231static __inline__ __m256i __DEFAULT_FN_ATTRS
6232_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6233{
6234 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6235 (__v8si)_mm256_srai_epi32(__A, __B),
6236 (__v8si)__W);
6237}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006238
Craig Topper66b2fd12016-10-31 04:30:51 +00006239static __inline__ __m256i __DEFAULT_FN_ATTRS
6240_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6241{
6242 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6243 (__v8si)_mm256_srai_epi32(__A, __B),
6244 (__v8si)_mm256_setzero_si256());
6245}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006246
6247static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006248_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006249{
Craig Topper1a441932016-11-12 07:16:59 +00006250 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006251}
6252
6253static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006254_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006255{
Craig Topper1a441932016-11-12 07:16:59 +00006256 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6257 (__v2di)_mm_sra_epi64(__A, __B), \
6258 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006259}
6260
6261static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006262_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006263{
Craig Topper1a441932016-11-12 07:16:59 +00006264 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6265 (__v2di)_mm_sra_epi64(__A, __B), \
6266 (__v2di)_mm_setzero_di());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006267}
6268
6269static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006270_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006271{
Craig Topper1a441932016-11-12 07:16:59 +00006272 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006273}
6274
6275static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006276_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006277{
Craig Topper1a441932016-11-12 07:16:59 +00006278 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6279 (__v4di)_mm256_sra_epi64(__A, __B), \
6280 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006281}
6282
6283static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006284_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006285{
Craig Topper1a441932016-11-12 07:16:59 +00006286 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6287 (__v4di)_mm256_sra_epi64(__A, __B), \
6288 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006289}
6290
Craig Topper1a441932016-11-12 07:16:59 +00006291static __inline__ __m128i __DEFAULT_FN_ATTRS
6292_mm_srai_epi64(__m128i __A, int __imm)
6293{
6294 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6295}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006296
Craig Topper1a441932016-11-12 07:16:59 +00006297static __inline__ __m128i __DEFAULT_FN_ATTRS
6298_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6299{
6300 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6301 (__v2di)_mm_srai_epi64(__A, __imm), \
6302 (__v2di)__W);
6303}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006304
Craig Topper1a441932016-11-12 07:16:59 +00006305static __inline__ __m128i __DEFAULT_FN_ATTRS
6306_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6307{
6308 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6309 (__v2di)_mm_srai_epi64(__A, __imm), \
6310 (__v2di)_mm_setzero_di());
6311}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006312
Craig Topper1a441932016-11-12 07:16:59 +00006313static __inline__ __m256i __DEFAULT_FN_ATTRS
6314_mm256_srai_epi64(__m256i __A, int __imm)
6315{
6316 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6317}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006318
Craig Topper1a441932016-11-12 07:16:59 +00006319static __inline__ __m256i __DEFAULT_FN_ATTRS
6320_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6321{
6322 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6323 (__v4di)_mm256_srai_epi64(__A, __imm), \
6324 (__v4di)__W);
6325}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006326
Craig Topper1a441932016-11-12 07:16:59 +00006327static __inline__ __m256i __DEFAULT_FN_ATTRS
6328_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6329{
6330 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6331 (__v4di)_mm256_srai_epi64(__A, __imm), \
6332 (__v4di)_mm256_setzero_si256());
6333}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006334
Craig Topperd2661882016-05-17 04:41:48 +00006335#define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6336 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6337 (__v4si)(__m128i)(B), \
6338 (__v4si)(__m128i)(C), (int)(imm), \
6339 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006340
Craig Topperd2661882016-05-17 04:41:48 +00006341#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6342 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6343 (__v4si)(__m128i)(B), \
6344 (__v4si)(__m128i)(C), (int)(imm), \
6345 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006346
Craig Topperd2661882016-05-17 04:41:48 +00006347#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6348 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6349 (__v4si)(__m128i)(B), \
6350 (__v4si)(__m128i)(C), (int)(imm), \
6351 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006352
Craig Topperd2661882016-05-17 04:41:48 +00006353#define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6354 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6355 (__v8si)(__m256i)(B), \
6356 (__v8si)(__m256i)(C), (int)(imm), \
6357 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006358
Craig Topperd2661882016-05-17 04:41:48 +00006359#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6360 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6361 (__v8si)(__m256i)(B), \
6362 (__v8si)(__m256i)(C), (int)(imm), \
6363 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006364
Craig Topperd2661882016-05-17 04:41:48 +00006365#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6366 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6367 (__v8si)(__m256i)(B), \
6368 (__v8si)(__m256i)(C), (int)(imm), \
6369 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006370
Craig Topperd2661882016-05-17 04:41:48 +00006371#define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6372 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6373 (__v2di)(__m128i)(B), \
6374 (__v2di)(__m128i)(C), (int)(imm), \
6375 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006376
Craig Topperd2661882016-05-17 04:41:48 +00006377#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6378 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6379 (__v2di)(__m128i)(B), \
6380 (__v2di)(__m128i)(C), (int)(imm), \
6381 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006382
Craig Topperd2661882016-05-17 04:41:48 +00006383#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6384 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6385 (__v2di)(__m128i)(B), \
6386 (__v2di)(__m128i)(C), (int)(imm), \
6387 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006388
Craig Topperd2661882016-05-17 04:41:48 +00006389#define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6390 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6391 (__v4di)(__m256i)(B), \
6392 (__v4di)(__m256i)(C), (int)(imm), \
6393 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006394
Craig Topperd2661882016-05-17 04:41:48 +00006395#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6396 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6397 (__v4di)(__m256i)(B), \
6398 (__v4di)(__m256i)(C), (int)(imm), \
6399 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006400
Craig Topperd2661882016-05-17 04:41:48 +00006401#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6402 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6403 (__v4di)(__m256i)(B), \
6404 (__v4di)(__m256i)(C), (int)(imm), \
6405 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006406
6407
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006408
Craig Topperd2661882016-05-17 04:41:48 +00006409#define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006410 (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \
6411 (__v8sf)(__m256)(B), \
6412 0 + ((((imm) >> 0) & 0x1) * 4), \
6413 1 + ((((imm) >> 0) & 0x1) * 4), \
6414 2 + ((((imm) >> 0) & 0x1) * 4), \
6415 3 + ((((imm) >> 0) & 0x1) * 4), \
6416 8 + ((((imm) >> 1) & 0x1) * 4), \
6417 9 + ((((imm) >> 1) & 0x1) * 4), \
6418 10 + ((((imm) >> 1) & 0x1) * 4), \
6419 11 + ((((imm) >> 1) & 0x1) * 4)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006420
Craig Topperd2661882016-05-17 04:41:48 +00006421#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006422 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6423 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6424 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006425
Craig Topperd2661882016-05-17 04:41:48 +00006426#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006427 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6428 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6429 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006430
Craig Topperd2661882016-05-17 04:41:48 +00006431#define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006432 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \
6433 (__v4df)(__m256d)(B), \
6434 0 + ((((imm) >> 0) & 0x1) * 2), \
6435 1 + ((((imm) >> 0) & 0x1) * 2), \
6436 4 + ((((imm) >> 1) & 0x1) * 2), \
6437 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006438
Craig Topperd2661882016-05-17 04:41:48 +00006439#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006440 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6441 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6442 (__v4df)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006443
Craig Topperd2661882016-05-17 04:41:48 +00006444#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006445 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6446 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6447 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006448
Craig Topperd2661882016-05-17 04:41:48 +00006449#define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006450 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6451 (__v4di)(__m256i)(B), \
6452 0 + ((((imm) >> 0) & 0x1) * 2), \
6453 1 + ((((imm) >> 0) & 0x1) * 2), \
6454 4 + ((((imm) >> 1) & 0x1) * 2), \
6455 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006456
Craig Topperd2661882016-05-17 04:41:48 +00006457#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006458 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6459 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6460 (__v8si)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006461
Craig Topperd2661882016-05-17 04:41:48 +00006462#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006463 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6464 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6465 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006466
Craig Topperd2661882016-05-17 04:41:48 +00006467#define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006468 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6469 (__v4di)(__m256i)(B), \
6470 0 + ((((imm) >> 0) & 0x1) * 2), \
6471 1 + ((((imm) >> 0) & 0x1) * 2), \
6472 4 + ((((imm) >> 1) & 0x1) * 2), \
6473 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006474
Craig Topperd2661882016-05-17 04:41:48 +00006475#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006476 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6477 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6478 (__v4di)(__m256)(W)); })
6479
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006480
Craig Topperd2661882016-05-17 04:41:48 +00006481#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006482 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6483 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6484 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006485
Simon Pilgrim427154d2016-07-04 21:30:47 +00006486#define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6487 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6488 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6489 (__v2df)(__m128d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006490
Simon Pilgrim427154d2016-07-04 21:30:47 +00006491#define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6492 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6493 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6494 (__v2df)_mm_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006495
Simon Pilgrim427154d2016-07-04 21:30:47 +00006496#define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6497 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6498 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6499 (__v4df)(__m256d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006500
Simon Pilgrim427154d2016-07-04 21:30:47 +00006501#define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6502 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6503 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6504 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006505
Simon Pilgrim427154d2016-07-04 21:30:47 +00006506#define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6507 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6508 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6509 (__v4sf)(__m128)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006510
Simon Pilgrim427154d2016-07-04 21:30:47 +00006511#define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6512 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6513 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6514 (__v4sf)_mm_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006515
Simon Pilgrim427154d2016-07-04 21:30:47 +00006516#define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6517 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6518 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6519 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006520
Simon Pilgrim427154d2016-07-04 21:30:47 +00006521#define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6522 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6523 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6524 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006525
6526static __inline__ __m128d __DEFAULT_FN_ATTRS
6527_mm_rsqrt14_pd (__m128d __A)
6528{
6529 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6530 (__v2df)
6531 _mm_setzero_pd (),
6532 (__mmask8) -1);
6533}
6534
6535static __inline__ __m128d __DEFAULT_FN_ATTRS
6536_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6537{
6538 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6539 (__v2df) __W,
6540 (__mmask8) __U);
6541}
6542
6543static __inline__ __m128d __DEFAULT_FN_ATTRS
6544_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6545{
6546 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6547 (__v2df)
6548 _mm_setzero_pd (),
6549 (__mmask8) __U);
6550}
6551
6552static __inline__ __m256d __DEFAULT_FN_ATTRS
6553_mm256_rsqrt14_pd (__m256d __A)
6554{
6555 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6556 (__v4df)
6557 _mm256_setzero_pd (),
6558 (__mmask8) -1);
6559}
6560
6561static __inline__ __m256d __DEFAULT_FN_ATTRS
6562_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6563{
6564 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6565 (__v4df) __W,
6566 (__mmask8) __U);
6567}
6568
6569static __inline__ __m256d __DEFAULT_FN_ATTRS
6570_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6571{
6572 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6573 (__v4df)
6574 _mm256_setzero_pd (),
6575 (__mmask8) __U);
6576}
6577
6578static __inline__ __m128 __DEFAULT_FN_ATTRS
6579_mm_rsqrt14_ps (__m128 __A)
6580{
6581 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6582 (__v4sf)
6583 _mm_setzero_ps (),
6584 (__mmask8) -1);
6585}
6586
6587static __inline__ __m128 __DEFAULT_FN_ATTRS
6588_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6589{
6590 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6591 (__v4sf) __W,
6592 (__mmask8) __U);
6593}
6594
6595static __inline__ __m128 __DEFAULT_FN_ATTRS
6596_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6597{
6598 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6599 (__v4sf)
6600 _mm_setzero_ps (),
6601 (__mmask8) __U);
6602}
6603
6604static __inline__ __m256 __DEFAULT_FN_ATTRS
6605_mm256_rsqrt14_ps (__m256 __A)
6606{
6607 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6608 (__v8sf)
6609 _mm256_setzero_ps (),
6610 (__mmask8) -1);
6611}
6612
6613static __inline__ __m256 __DEFAULT_FN_ATTRS
6614_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6615{
6616 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6617 (__v8sf) __W,
6618 (__mmask8) __U);
6619}
6620
6621static __inline__ __m256 __DEFAULT_FN_ATTRS
6622_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6623{
6624 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6625 (__v8sf)
6626 _mm256_setzero_ps (),
6627 (__mmask8) __U);
6628}
6629
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006630static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006631_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006632{
Craig Topper367c86d2017-01-18 02:17:10 +00006633 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6634 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006635}
6636
6637static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006638_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006639{
Craig Topper367c86d2017-01-18 02:17:10 +00006640 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6641 (__v8sf)_mm256_broadcast_f32x4(__A),
6642 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006643}
6644
6645static __inline__ __m256 __DEFAULT_FN_ATTRS
6646_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6647{
Craig Topper367c86d2017-01-18 02:17:10 +00006648 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6649 (__v8sf)_mm256_broadcast_f32x4(__A),
6650 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006651}
6652
6653static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006654_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006655{
Craig Topper367c86d2017-01-18 02:17:10 +00006656 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6657 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006658}
6659
6660static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006661_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006662{
Craig Topper367c86d2017-01-18 02:17:10 +00006663 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6664 (__v8si)_mm256_broadcast_i32x4(__A),
6665 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006666}
6667
6668static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006669_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006670{
Craig Topper367c86d2017-01-18 02:17:10 +00006671 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6672 (__v8si)_mm256_broadcast_i32x4(__A),
6673 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006674}
6675
6676static __inline__ __m256d __DEFAULT_FN_ATTRS
6677_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6678{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006679 return (__m256d)__builtin_ia32_selectpd_256(__M,
6680 (__v4df) _mm256_broadcastsd_pd(__A),
6681 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006682}
6683
6684static __inline__ __m256d __DEFAULT_FN_ATTRS
6685_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6686{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006687 return (__m256d)__builtin_ia32_selectpd_256(__M,
6688 (__v4df) _mm256_broadcastsd_pd(__A),
6689 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006690}
6691
6692static __inline__ __m128 __DEFAULT_FN_ATTRS
6693_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6694{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006695 return (__m128)__builtin_ia32_selectps_128(__M,
6696 (__v4sf) _mm_broadcastss_ps(__A),
6697 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006698}
6699
6700static __inline__ __m128 __DEFAULT_FN_ATTRS
6701_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6702{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006703 return (__m128)__builtin_ia32_selectps_128(__M,
6704 (__v4sf) _mm_broadcastss_ps(__A),
6705 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006706}
6707
6708static __inline__ __m256 __DEFAULT_FN_ATTRS
6709_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6710{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006711 return (__m256)__builtin_ia32_selectps_256(__M,
6712 (__v8sf) _mm256_broadcastss_ps(__A),
6713 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006714}
6715
6716static __inline__ __m256 __DEFAULT_FN_ATTRS
6717_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6718{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006719 return (__m256)__builtin_ia32_selectps_256(__M,
6720 (__v8sf) _mm256_broadcastss_ps(__A),
6721 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006722}
6723
6724static __inline__ __m128i __DEFAULT_FN_ATTRS
6725_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6726{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006727 return (__m128i)__builtin_ia32_selectd_128(__M,
6728 (__v4si) _mm_broadcastd_epi32(__A),
6729 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006730}
6731
6732static __inline__ __m128i __DEFAULT_FN_ATTRS
6733_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6734{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006735 return (__m128i)__builtin_ia32_selectd_128(__M,
6736 (__v4si) _mm_broadcastd_epi32(__A),
6737 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006738}
6739
6740static __inline__ __m256i __DEFAULT_FN_ATTRS
6741_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6742{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006743 return (__m256i)__builtin_ia32_selectd_256(__M,
6744 (__v8si) _mm256_broadcastd_epi32(__A),
6745 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006746}
6747
6748static __inline__ __m256i __DEFAULT_FN_ATTRS
6749_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6750{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006751 return (__m256i)__builtin_ia32_selectd_256(__M,
6752 (__v8si) _mm256_broadcastd_epi32(__A),
6753 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006754}
6755
6756static __inline__ __m128i __DEFAULT_FN_ATTRS
6757_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6758{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006759 return (__m128i)__builtin_ia32_selectq_128(__M,
6760 (__v2di) _mm_broadcastq_epi64(__A),
6761 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006762}
6763
6764static __inline__ __m128i __DEFAULT_FN_ATTRS
6765_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6766{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006767 return (__m128i)__builtin_ia32_selectq_128(__M,
6768 (__v2di) _mm_broadcastq_epi64(__A),
6769 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006770}
6771
6772static __inline__ __m256i __DEFAULT_FN_ATTRS
6773_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6774{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006775 return (__m256i)__builtin_ia32_selectq_256(__M,
6776 (__v4di) _mm256_broadcastq_epi64(__A),
6777 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006778}
6779
6780static __inline__ __m256i __DEFAULT_FN_ATTRS
6781_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6782{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006783 return (__m256i)__builtin_ia32_selectq_256(__M,
6784 (__v4di) _mm256_broadcastq_epi64(__A),
6785 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006786}
6787
Michael Zuckermane1680612016-04-13 15:02:04 +00006788static __inline__ __m128i __DEFAULT_FN_ATTRS
6789_mm_cvtsepi32_epi8 (__m128i __A)
6790{
6791 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6792 (__v16qi)_mm_undefined_si128(),
6793 (__mmask8) -1);
6794}
6795
6796static __inline__ __m128i __DEFAULT_FN_ATTRS
6797_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6798{
6799 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6800 (__v16qi) __O, __M);
6801}
6802
6803static __inline__ __m128i __DEFAULT_FN_ATTRS
6804_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6805{
6806 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6807 (__v16qi) _mm_setzero_si128 (),
6808 __M);
6809}
6810
6811static __inline__ void __DEFAULT_FN_ATTRS
6812_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6813{
6814 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6815}
6816
6817static __inline__ __m128i __DEFAULT_FN_ATTRS
6818_mm256_cvtsepi32_epi8 (__m256i __A)
6819{
6820 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6821 (__v16qi)_mm_undefined_si128(),
6822 (__mmask8) -1);
6823}
6824
6825static __inline__ __m128i __DEFAULT_FN_ATTRS
6826_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6827{
6828 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6829 (__v16qi) __O, __M);
6830}
6831
6832static __inline__ __m128i __DEFAULT_FN_ATTRS
6833_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
6834{
6835 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6836 (__v16qi) _mm_setzero_si128 (),
6837 __M);
6838}
6839
6840static __inline__ void __DEFAULT_FN_ATTRS
6841_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6842{
6843 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
6844}
6845
6846static __inline__ __m128i __DEFAULT_FN_ATTRS
6847_mm_cvtsepi32_epi16 (__m128i __A)
6848{
6849 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6850 (__v8hi)_mm_setzero_si128 (),
6851 (__mmask8) -1);
6852}
6853
6854static __inline__ __m128i __DEFAULT_FN_ATTRS
6855_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
6856{
6857 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6858 (__v8hi)__O,
6859 __M);
6860}
6861
6862static __inline__ __m128i __DEFAULT_FN_ATTRS
6863_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
6864{
6865 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6866 (__v8hi) _mm_setzero_si128 (),
6867 __M);
6868}
6869
6870static __inline__ void __DEFAULT_FN_ATTRS
6871_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
6872{
6873 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
6874}
6875
6876static __inline__ __m128i __DEFAULT_FN_ATTRS
6877_mm256_cvtsepi32_epi16 (__m256i __A)
6878{
6879 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6880 (__v8hi)_mm_undefined_si128(),
6881 (__mmask8) -1);
6882}
6883
6884static __inline__ __m128i __DEFAULT_FN_ATTRS
6885_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
6886{
6887 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6888 (__v8hi) __O, __M);
6889}
6890
6891static __inline__ __m128i __DEFAULT_FN_ATTRS
6892_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
6893{
6894 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6895 (__v8hi) _mm_setzero_si128 (),
6896 __M);
6897}
6898
6899static __inline__ void __DEFAULT_FN_ATTRS
6900_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
6901{
6902 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
6903}
6904
6905static __inline__ __m128i __DEFAULT_FN_ATTRS
6906_mm_cvtsepi64_epi8 (__m128i __A)
6907{
6908 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6909 (__v16qi)_mm_undefined_si128(),
6910 (__mmask8) -1);
6911}
6912
6913static __inline__ __m128i __DEFAULT_FN_ATTRS
6914_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6915{
6916 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6917 (__v16qi) __O, __M);
6918}
6919
6920static __inline__ __m128i __DEFAULT_FN_ATTRS
6921_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
6922{
6923 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6924 (__v16qi) _mm_setzero_si128 (),
6925 __M);
6926}
6927
6928static __inline__ void __DEFAULT_FN_ATTRS
6929_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6930{
6931 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
6932}
6933
6934static __inline__ __m128i __DEFAULT_FN_ATTRS
6935_mm256_cvtsepi64_epi8 (__m256i __A)
6936{
6937 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6938 (__v16qi)_mm_undefined_si128(),
6939 (__mmask8) -1);
6940}
6941
6942static __inline__ __m128i __DEFAULT_FN_ATTRS
6943_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6944{
6945 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6946 (__v16qi) __O, __M);
6947}
6948
6949static __inline__ __m128i __DEFAULT_FN_ATTRS
6950_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
6951{
6952 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6953 (__v16qi) _mm_setzero_si128 (),
6954 __M);
6955}
6956
6957static __inline__ void __DEFAULT_FN_ATTRS
6958_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6959{
6960 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
6961}
6962
6963static __inline__ __m128i __DEFAULT_FN_ATTRS
6964_mm_cvtsepi64_epi32 (__m128i __A)
6965{
6966 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6967 (__v4si)_mm_undefined_si128(),
6968 (__mmask8) -1);
6969}
6970
6971static __inline__ __m128i __DEFAULT_FN_ATTRS
6972_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6973{
6974 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6975 (__v4si) __O, __M);
6976}
6977
6978static __inline__ __m128i __DEFAULT_FN_ATTRS
6979_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
6980{
6981 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6982 (__v4si) _mm_setzero_si128 (),
6983 __M);
6984}
6985
6986static __inline__ void __DEFAULT_FN_ATTRS
6987_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
6988{
6989 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
6990}
6991
6992static __inline__ __m128i __DEFAULT_FN_ATTRS
6993_mm256_cvtsepi64_epi32 (__m256i __A)
6994{
6995 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6996 (__v4si)_mm_undefined_si128(),
6997 (__mmask8) -1);
6998}
6999
7000static __inline__ __m128i __DEFAULT_FN_ATTRS
7001_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7002{
7003 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7004 (__v4si)__O,
7005 __M);
7006}
7007
7008static __inline__ __m128i __DEFAULT_FN_ATTRS
7009_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7010{
7011 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7012 (__v4si) _mm_setzero_si128 (),
7013 __M);
7014}
7015
7016static __inline__ void __DEFAULT_FN_ATTRS
7017_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7018{
7019 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7020}
7021
7022static __inline__ __m128i __DEFAULT_FN_ATTRS
7023_mm_cvtsepi64_epi16 (__m128i __A)
7024{
7025 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7026 (__v8hi)_mm_undefined_si128(),
7027 (__mmask8) -1);
7028}
7029
7030static __inline__ __m128i __DEFAULT_FN_ATTRS
7031_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7032{
7033 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7034 (__v8hi) __O, __M);
7035}
7036
7037static __inline__ __m128i __DEFAULT_FN_ATTRS
7038_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7039{
7040 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7041 (__v8hi) _mm_setzero_si128 (),
7042 __M);
7043}
7044
7045static __inline__ void __DEFAULT_FN_ATTRS
7046_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7047{
7048 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7049}
7050
7051static __inline__ __m128i __DEFAULT_FN_ATTRS
7052_mm256_cvtsepi64_epi16 (__m256i __A)
7053{
7054 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7055 (__v8hi)_mm_undefined_si128(),
7056 (__mmask8) -1);
7057}
7058
7059static __inline__ __m128i __DEFAULT_FN_ATTRS
7060_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7061{
7062 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7063 (__v8hi) __O, __M);
7064}
7065
7066static __inline__ __m128i __DEFAULT_FN_ATTRS
7067_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7068{
7069 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7070 (__v8hi) _mm_setzero_si128 (),
7071 __M);
7072}
7073
7074static __inline__ void __DEFAULT_FN_ATTRS
7075_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7076{
7077 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7078}
7079
Michael Zuckermand8715312016-04-14 06:48:09 +00007080static __inline__ __m128i __DEFAULT_FN_ATTRS
7081_mm_cvtusepi32_epi8 (__m128i __A)
7082{
7083 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7084 (__v16qi)_mm_undefined_si128(),
7085 (__mmask8) -1);
7086}
7087
7088static __inline__ __m128i __DEFAULT_FN_ATTRS
7089_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7090{
7091 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7092 (__v16qi) __O,
7093 __M);
7094}
7095
7096static __inline__ __m128i __DEFAULT_FN_ATTRS
7097_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7098{
7099 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7100 (__v16qi) _mm_setzero_si128 (),
7101 __M);
7102}
7103
7104static __inline__ void __DEFAULT_FN_ATTRS
7105_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7106{
7107 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7108}
7109
7110static __inline__ __m128i __DEFAULT_FN_ATTRS
7111_mm256_cvtusepi32_epi8 (__m256i __A)
7112{
7113 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7114 (__v16qi)_mm_undefined_si128(),
7115 (__mmask8) -1);
7116}
7117
7118static __inline__ __m128i __DEFAULT_FN_ATTRS
7119_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7120{
7121 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7122 (__v16qi) __O,
7123 __M);
7124}
7125
7126static __inline__ __m128i __DEFAULT_FN_ATTRS
7127_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7128{
7129 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7130 (__v16qi) _mm_setzero_si128 (),
7131 __M);
7132}
7133
7134static __inline__ void __DEFAULT_FN_ATTRS
7135_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7136{
7137 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7138}
7139
7140static __inline__ __m128i __DEFAULT_FN_ATTRS
7141_mm_cvtusepi32_epi16 (__m128i __A)
7142{
7143 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7144 (__v8hi)_mm_undefined_si128(),
7145 (__mmask8) -1);
7146}
7147
7148static __inline__ __m128i __DEFAULT_FN_ATTRS
7149_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7150{
7151 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7152 (__v8hi) __O, __M);
7153}
7154
7155static __inline__ __m128i __DEFAULT_FN_ATTRS
7156_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7157{
7158 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7159 (__v8hi) _mm_setzero_si128 (),
7160 __M);
7161}
7162
7163static __inline__ void __DEFAULT_FN_ATTRS
7164_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7165{
7166 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7167}
7168
7169static __inline__ __m128i __DEFAULT_FN_ATTRS
7170_mm256_cvtusepi32_epi16 (__m256i __A)
7171{
7172 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7173 (__v8hi) _mm_undefined_si128(),
7174 (__mmask8) -1);
7175}
7176
7177static __inline__ __m128i __DEFAULT_FN_ATTRS
7178_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7179{
7180 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7181 (__v8hi) __O, __M);
7182}
7183
7184static __inline__ __m128i __DEFAULT_FN_ATTRS
7185_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7186{
7187 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7188 (__v8hi) _mm_setzero_si128 (),
7189 __M);
7190}
7191
7192static __inline__ void __DEFAULT_FN_ATTRS
7193_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7194{
7195 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7196}
7197
7198static __inline__ __m128i __DEFAULT_FN_ATTRS
7199_mm_cvtusepi64_epi8 (__m128i __A)
7200{
7201 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7202 (__v16qi)_mm_undefined_si128(),
7203 (__mmask8) -1);
7204}
7205
7206static __inline__ __m128i __DEFAULT_FN_ATTRS
7207_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7208{
7209 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7210 (__v16qi) __O,
7211 __M);
7212}
7213
7214static __inline__ __m128i __DEFAULT_FN_ATTRS
7215_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7216{
7217 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7218 (__v16qi) _mm_setzero_si128 (),
7219 __M);
7220}
7221
7222static __inline__ void __DEFAULT_FN_ATTRS
7223_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7224{
7225 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7226}
7227
7228static __inline__ __m128i __DEFAULT_FN_ATTRS
7229_mm256_cvtusepi64_epi8 (__m256i __A)
7230{
7231 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7232 (__v16qi)_mm_undefined_si128(),
7233 (__mmask8) -1);
7234}
7235
7236static __inline__ __m128i __DEFAULT_FN_ATTRS
7237_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7238{
7239 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7240 (__v16qi) __O,
7241 __M);
7242}
7243
7244static __inline__ __m128i __DEFAULT_FN_ATTRS
7245_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7246{
7247 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7248 (__v16qi) _mm_setzero_si128 (),
7249 __M);
7250}
7251
7252static __inline__ void __DEFAULT_FN_ATTRS
7253_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7254{
7255 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7256}
7257
7258static __inline__ __m128i __DEFAULT_FN_ATTRS
7259_mm_cvtusepi64_epi32 (__m128i __A)
7260{
7261 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7262 (__v4si)_mm_undefined_si128(),
7263 (__mmask8) -1);
7264}
7265
7266static __inline__ __m128i __DEFAULT_FN_ATTRS
7267_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7268{
7269 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7270 (__v4si) __O, __M);
7271}
7272
7273static __inline__ __m128i __DEFAULT_FN_ATTRS
7274_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7275{
7276 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7277 (__v4si) _mm_setzero_si128 (),
7278 __M);
7279}
7280
7281static __inline__ void __DEFAULT_FN_ATTRS
7282_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7283{
7284 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7285}
7286
7287static __inline__ __m128i __DEFAULT_FN_ATTRS
7288_mm256_cvtusepi64_epi32 (__m256i __A)
7289{
7290 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7291 (__v4si)_mm_undefined_si128(),
7292 (__mmask8) -1);
7293}
7294
7295static __inline__ __m128i __DEFAULT_FN_ATTRS
7296_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7297{
7298 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7299 (__v4si) __O, __M);
7300}
7301
7302static __inline__ __m128i __DEFAULT_FN_ATTRS
7303_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7304{
7305 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7306 (__v4si) _mm_setzero_si128 (),
7307 __M);
7308}
7309
7310static __inline__ void __DEFAULT_FN_ATTRS
7311_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7312{
7313 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7314}
7315
7316static __inline__ __m128i __DEFAULT_FN_ATTRS
7317_mm_cvtusepi64_epi16 (__m128i __A)
7318{
7319 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7320 (__v8hi)_mm_undefined_si128(),
7321 (__mmask8) -1);
7322}
7323
7324static __inline__ __m128i __DEFAULT_FN_ATTRS
7325_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7326{
7327 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7328 (__v8hi) __O, __M);
7329}
7330
7331static __inline__ __m128i __DEFAULT_FN_ATTRS
7332_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7333{
7334 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7335 (__v8hi) _mm_setzero_si128 (),
7336 __M);
7337}
7338
7339static __inline__ void __DEFAULT_FN_ATTRS
7340_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7341{
7342 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7343}
7344
7345static __inline__ __m128i __DEFAULT_FN_ATTRS
7346_mm256_cvtusepi64_epi16 (__m256i __A)
7347{
7348 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7349 (__v8hi)_mm_undefined_si128(),
7350 (__mmask8) -1);
7351}
7352
7353static __inline__ __m128i __DEFAULT_FN_ATTRS
7354_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7355{
7356 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7357 (__v8hi) __O, __M);
7358}
7359
7360static __inline__ __m128i __DEFAULT_FN_ATTRS
7361_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7362{
7363 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7364 (__v8hi) _mm_setzero_si128 (),
7365 __M);
7366}
7367
7368static __inline__ void __DEFAULT_FN_ATTRS
7369_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7370{
7371 return __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7372}
7373
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007374static __inline__ __m128i __DEFAULT_FN_ATTRS
7375_mm_cvtepi32_epi8 (__m128i __A)
7376{
7377 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7378 (__v16qi)_mm_undefined_si128(),
7379 (__mmask8) -1);
7380}
7381
7382static __inline__ __m128i __DEFAULT_FN_ATTRS
7383_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7384{
7385 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7386 (__v16qi) __O, __M);
7387}
7388
7389static __inline__ __m128i __DEFAULT_FN_ATTRS
7390_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7391{
7392 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7393 (__v16qi)
7394 _mm_setzero_si128 (),
7395 __M);
7396}
7397
7398static __inline__ void __DEFAULT_FN_ATTRS
7399_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7400{
7401 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7402}
7403
7404static __inline__ __m128i __DEFAULT_FN_ATTRS
7405_mm256_cvtepi32_epi8 (__m256i __A)
7406{
7407 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7408 (__v16qi)_mm_undefined_si128(),
7409 (__mmask8) -1);
7410}
7411
7412static __inline__ __m128i __DEFAULT_FN_ATTRS
7413_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7414{
7415 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7416 (__v16qi) __O, __M);
7417}
7418
7419static __inline__ __m128i __DEFAULT_FN_ATTRS
7420_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7421{
7422 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7423 (__v16qi) _mm_setzero_si128 (),
7424 __M);
7425}
7426
7427static __inline__ void __DEFAULT_FN_ATTRS
7428_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7429{
7430 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7431}
7432
7433static __inline__ __m128i __DEFAULT_FN_ATTRS
7434_mm_cvtepi32_epi16 (__m128i __A)
7435{
7436 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7437 (__v8hi) _mm_setzero_si128 (),
7438 (__mmask8) -1);
7439}
7440
7441static __inline__ __m128i __DEFAULT_FN_ATTRS
7442_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7443{
7444 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7445 (__v8hi) __O, __M);
7446}
7447
7448static __inline__ __m128i __DEFAULT_FN_ATTRS
7449_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7450{
7451 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7452 (__v8hi) _mm_setzero_si128 (),
7453 __M);
7454}
7455
7456static __inline__ void __DEFAULT_FN_ATTRS
7457_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7458{
7459 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7460}
7461
7462static __inline__ __m128i __DEFAULT_FN_ATTRS
7463_mm256_cvtepi32_epi16 (__m256i __A)
7464{
Craig Topper25de41c2018-05-14 17:50:40 +00007465 return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007466}
7467
7468static __inline__ __m128i __DEFAULT_FN_ATTRS
7469_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7470{
Craig Topper9d146bb2018-05-15 03:17:52 +00007471 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7472 (__v8hi) __O, __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007473}
7474
7475static __inline__ __m128i __DEFAULT_FN_ATTRS
7476_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7477{
Craig Topper9d146bb2018-05-15 03:17:52 +00007478 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7479 (__v8hi) _mm_setzero_si128 (),
7480 __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007481}
7482
7483static __inline__ void __DEFAULT_FN_ATTRS
7484_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7485{
7486 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7487}
7488
7489static __inline__ __m128i __DEFAULT_FN_ATTRS
7490_mm_cvtepi64_epi8 (__m128i __A)
7491{
7492 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7493 (__v16qi) _mm_undefined_si128(),
7494 (__mmask8) -1);
7495}
7496
7497static __inline__ __m128i __DEFAULT_FN_ATTRS
7498_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7499{
7500 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7501 (__v16qi) __O, __M);
7502}
7503
7504static __inline__ __m128i __DEFAULT_FN_ATTRS
7505_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7506{
7507 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7508 (__v16qi) _mm_setzero_si128 (),
7509 __M);
7510}
7511
7512static __inline__ void __DEFAULT_FN_ATTRS
7513_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7514{
7515 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7516}
7517
7518static __inline__ __m128i __DEFAULT_FN_ATTRS
7519_mm256_cvtepi64_epi8 (__m256i __A)
7520{
7521 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7522 (__v16qi) _mm_undefined_si128(),
7523 (__mmask8) -1);
7524}
7525
7526static __inline__ __m128i __DEFAULT_FN_ATTRS
7527_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7528{
7529 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7530 (__v16qi) __O, __M);
7531}
7532
7533static __inline__ __m128i __DEFAULT_FN_ATTRS
7534_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7535{
7536 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7537 (__v16qi) _mm_setzero_si128 (),
7538 __M);
7539}
7540
7541static __inline__ void __DEFAULT_FN_ATTRS
7542_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7543{
7544 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7545}
7546
7547static __inline__ __m128i __DEFAULT_FN_ATTRS
7548_mm_cvtepi64_epi32 (__m128i __A)
7549{
7550 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7551 (__v4si)_mm_undefined_si128(),
7552 (__mmask8) -1);
7553}
7554
7555static __inline__ __m128i __DEFAULT_FN_ATTRS
7556_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7557{
7558 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7559 (__v4si) __O, __M);
7560}
7561
7562static __inline__ __m128i __DEFAULT_FN_ATTRS
7563_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7564{
7565 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7566 (__v4si) _mm_setzero_si128 (),
7567 __M);
7568}
7569
7570static __inline__ void __DEFAULT_FN_ATTRS
7571_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7572{
7573 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7574}
7575
7576static __inline__ __m128i __DEFAULT_FN_ATTRS
7577_mm256_cvtepi64_epi32 (__m256i __A)
7578{
Craig Topper25de41c2018-05-14 17:50:40 +00007579 return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007580}
7581
7582static __inline__ __m128i __DEFAULT_FN_ATTRS
7583_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7584{
Craig Topper25de41c2018-05-14 17:50:40 +00007585 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7586 (__v4si)_mm256_cvtepi64_epi32(__A),
7587 (__v4si)__O);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007588}
7589
7590static __inline__ __m128i __DEFAULT_FN_ATTRS
7591_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7592{
Craig Topper25de41c2018-05-14 17:50:40 +00007593 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7594 (__v4si)_mm256_cvtepi64_epi32(__A),
7595 (__v4si)_mm_setzero_si128());
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007596}
7597
7598static __inline__ void __DEFAULT_FN_ATTRS
7599_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7600{
7601 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7602}
7603
7604static __inline__ __m128i __DEFAULT_FN_ATTRS
7605_mm_cvtepi64_epi16 (__m128i __A)
7606{
7607 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7608 (__v8hi) _mm_undefined_si128(),
7609 (__mmask8) -1);
7610}
7611
7612static __inline__ __m128i __DEFAULT_FN_ATTRS
7613_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7614{
7615 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7616 (__v8hi)__O,
7617 __M);
7618}
7619
7620static __inline__ __m128i __DEFAULT_FN_ATTRS
7621_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7622{
7623 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7624 (__v8hi) _mm_setzero_si128 (),
7625 __M);
7626}
7627
7628static __inline__ void __DEFAULT_FN_ATTRS
7629_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7630{
7631 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7632}
7633
7634static __inline__ __m128i __DEFAULT_FN_ATTRS
7635_mm256_cvtepi64_epi16 (__m256i __A)
7636{
7637 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7638 (__v8hi)_mm_undefined_si128(),
7639 (__mmask8) -1);
7640}
7641
7642static __inline__ __m128i __DEFAULT_FN_ATTRS
7643_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7644{
7645 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7646 (__v8hi) __O, __M);
7647}
7648
7649static __inline__ __m128i __DEFAULT_FN_ATTRS
7650_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7651{
7652 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7653 (__v8hi) _mm_setzero_si128 (),
7654 __M);
7655}
7656
7657static __inline__ void __DEFAULT_FN_ATTRS
7658_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7659{
7660 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7661}
7662
Craig Topperd2661882016-05-17 04:41:48 +00007663#define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007664 (__m128)__builtin_shufflevector((__v8sf)(__m256)(A), \
7665 (__v8sf)_mm256_undefined_ps(), \
7666 ((imm) & 1) ? 4 : 0, \
7667 ((imm) & 1) ? 5 : 1, \
7668 ((imm) & 1) ? 6 : 2, \
7669 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007670
Craig Topperd2661882016-05-17 04:41:48 +00007671#define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007672 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7673 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7674 (__v4sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007675
Craig Topperd2661882016-05-17 04:41:48 +00007676#define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007677 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7678 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7679 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007680
Craig Topperd2661882016-05-17 04:41:48 +00007681#define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007682 (__m128i)__builtin_shufflevector((__v8si)(__m256)(A), \
7683 (__v8si)_mm256_undefined_si256(), \
7684 ((imm) & 1) ? 4 : 0, \
7685 ((imm) & 1) ? 5 : 1, \
7686 ((imm) & 1) ? 6 : 2, \
7687 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007688
Craig Topperd2661882016-05-17 04:41:48 +00007689#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007690 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007691 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7692 (__v4si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007693
Craig Topperd2661882016-05-17 04:41:48 +00007694#define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007695 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007696 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7697 (__v4si)_mm_setzero_si128()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007698
Craig Topperd2661882016-05-17 04:41:48 +00007699#define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007700 (__m256)__builtin_shufflevector((__v8sf)(A), \
7701 (__v8sf)_mm256_castps128_ps256((__m128)(B)), \
7702 ((imm) & 0x1) ? 0 : 8, \
7703 ((imm) & 0x1) ? 1 : 9, \
7704 ((imm) & 0x1) ? 2 : 10, \
7705 ((imm) & 0x1) ? 3 : 11, \
7706 ((imm) & 0x1) ? 8 : 4, \
7707 ((imm) & 0x1) ? 9 : 5, \
7708 ((imm) & 0x1) ? 10 : 6, \
7709 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007710
Craig Topperd2661882016-05-17 04:41:48 +00007711#define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007712 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7713 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7714 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007715
Craig Topperd2661882016-05-17 04:41:48 +00007716#define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007717 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7718 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7719 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007720
Craig Topperd2661882016-05-17 04:41:48 +00007721#define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007722 (__m256i)__builtin_shufflevector((__v8si)(A), \
7723 (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
7724 ((imm) & 0x1) ? 0 : 8, \
7725 ((imm) & 0x1) ? 1 : 9, \
7726 ((imm) & 0x1) ? 2 : 10, \
7727 ((imm) & 0x1) ? 3 : 11, \
7728 ((imm) & 0x1) ? 8 : 4, \
7729 ((imm) & 0x1) ? 9 : 5, \
7730 ((imm) & 0x1) ? 10 : 6, \
7731 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007732
Craig Topperd2661882016-05-17 04:41:48 +00007733#define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007734 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7735 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7736 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007737
Craig Topperd2661882016-05-17 04:41:48 +00007738#define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007739 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7740 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7741 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007742
Craig Topperd2661882016-05-17 04:41:48 +00007743#define _mm_getmant_pd(A, B, C) __extension__({\
7744 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7745 (int)(((C)<<2) | (B)), \
7746 (__v2df)_mm_setzero_pd(), \
7747 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007748
Craig Topperd2661882016-05-17 04:41:48 +00007749#define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
7750 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7751 (int)(((C)<<2) | (B)), \
7752 (__v2df)(__m128d)(W), \
7753 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007754
Craig Topperd2661882016-05-17 04:41:48 +00007755#define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
7756 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7757 (int)(((C)<<2) | (B)), \
7758 (__v2df)_mm_setzero_pd(), \
7759 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007760
Craig Topperd2661882016-05-17 04:41:48 +00007761#define _mm256_getmant_pd(A, B, C) __extension__ ({ \
7762 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7763 (int)(((C)<<2) | (B)), \
7764 (__v4df)_mm256_setzero_pd(), \
7765 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007766
Craig Topperd2661882016-05-17 04:41:48 +00007767#define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7768 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7769 (int)(((C)<<2) | (B)), \
7770 (__v4df)(__m256d)(W), \
7771 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007772
Craig Topperd2661882016-05-17 04:41:48 +00007773#define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7774 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7775 (int)(((C)<<2) | (B)), \
7776 (__v4df)_mm256_setzero_pd(), \
7777 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007778
Craig Topperd2661882016-05-17 04:41:48 +00007779#define _mm_getmant_ps(A, B, C) __extension__ ({ \
7780 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7781 (int)(((C)<<2) | (B)), \
7782 (__v4sf)_mm_setzero_ps(), \
7783 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007784
Craig Topperd2661882016-05-17 04:41:48 +00007785#define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7786 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7787 (int)(((C)<<2) | (B)), \
7788 (__v4sf)(__m128)(W), \
7789 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007790
Craig Topperd2661882016-05-17 04:41:48 +00007791#define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7792 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7793 (int)(((C)<<2) | (B)), \
7794 (__v4sf)_mm_setzero_ps(), \
7795 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007796
Craig Topperd2661882016-05-17 04:41:48 +00007797#define _mm256_getmant_ps(A, B, C) __extension__ ({ \
7798 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7799 (int)(((C)<<2) | (B)), \
7800 (__v8sf)_mm256_setzero_ps(), \
7801 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007802
Craig Topperd2661882016-05-17 04:41:48 +00007803#define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7804 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7805 (int)(((C)<<2) | (B)), \
7806 (__v8sf)(__m256)(W), \
7807 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007808
Craig Topperd2661882016-05-17 04:41:48 +00007809#define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7810 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7811 (int)(((C)<<2) | (B)), \
7812 (__v8sf)_mm256_setzero_ps(), \
7813 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007814
Craig Topperd2661882016-05-17 04:41:48 +00007815#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7816 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7817 (double const *)(addr), \
7818 (__v2di)(__m128i)(index), \
7819 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007820
Craig Topperd2661882016-05-17 04:41:48 +00007821#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7822 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7823 (long long const *)(addr), \
7824 (__v2di)(__m128i)(index), \
7825 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007826
Craig Topperd2661882016-05-17 04:41:48 +00007827#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7828 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
7829 (double const *)(addr), \
7830 (__v4di)(__m256i)(index), \
7831 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007832
Craig Topperd2661882016-05-17 04:41:48 +00007833#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7834 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
7835 (long long const *)(addr), \
7836 (__v4di)(__m256i)(index), \
7837 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007838
Craig Topperd2661882016-05-17 04:41:48 +00007839#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7840 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
7841 (float const *)(addr), \
7842 (__v2di)(__m128i)(index), \
7843 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007844
Craig Topperd2661882016-05-17 04:41:48 +00007845#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7846 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
7847 (int const *)(addr), \
7848 (__v2di)(__m128i)(index), \
7849 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007850
Craig Topperd2661882016-05-17 04:41:48 +00007851#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7852 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
7853 (float const *)(addr), \
7854 (__v4di)(__m256i)(index), \
7855 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007856
Craig Topperd2661882016-05-17 04:41:48 +00007857#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7858 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
7859 (int const *)(addr), \
7860 (__v4di)(__m256i)(index), \
7861 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007862
Craig Topperd2661882016-05-17 04:41:48 +00007863#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7864 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
7865 (double const *)(addr), \
7866 (__v4si)(__m128i)(index), \
7867 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007868
Craig Topperd2661882016-05-17 04:41:48 +00007869#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7870 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
7871 (long long const *)(addr), \
7872 (__v4si)(__m128i)(index), \
7873 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007874
Craig Topperd2661882016-05-17 04:41:48 +00007875#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7876 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
7877 (double const *)(addr), \
7878 (__v4si)(__m128i)(index), \
7879 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007880
Craig Topperd2661882016-05-17 04:41:48 +00007881#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
7882 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
7883 (long long const *)(addr), \
7884 (__v4si)(__m128i)(index), \
7885 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007886
Craig Topperd2661882016-05-17 04:41:48 +00007887#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7888 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
7889 (float const *)(addr), \
7890 (__v4si)(__m128i)(index), \
7891 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007892
Craig Topperd2661882016-05-17 04:41:48 +00007893#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7894 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
7895 (int const *)(addr), \
7896 (__v4si)(__m128i)(index), \
7897 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007898
Craig Topperd2661882016-05-17 04:41:48 +00007899#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
7900 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
7901 (float const *)(addr), \
7902 (__v8si)(__m256i)(index), \
7903 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007904
Craig Topperd2661882016-05-17 04:41:48 +00007905#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
7906 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
7907 (int const *)(addr), \
7908 (__v8si)(__m256i)(index), \
7909 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007910
Simon Pilgrim30db8112016-07-04 13:34:44 +00007911#define _mm256_permutex_pd(X, C) __extension__ ({ \
7912 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
7913 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00007914 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
7915 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007916
Simon Pilgrim30db8112016-07-04 13:34:44 +00007917#define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
7918 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7919 (__v4df)_mm256_permutex_pd((X), (C)), \
7920 (__v4df)(__m256d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007921
Simon Pilgrim30db8112016-07-04 13:34:44 +00007922#define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
7923 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7924 (__v4df)_mm256_permutex_pd((X), (C)), \
7925 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007926
Simon Pilgrim30db8112016-07-04 13:34:44 +00007927#define _mm256_permutex_epi64(X, C) __extension__ ({ \
7928 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
7929 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00007930 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
7931 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007932
Simon Pilgrim30db8112016-07-04 13:34:44 +00007933#define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
7934 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7935 (__v4di)_mm256_permutex_epi64((X), (C)), \
7936 (__v4di)(__m256i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007937
Simon Pilgrim30db8112016-07-04 13:34:44 +00007938#define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
7939 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7940 (__v4di)_mm256_permutex_epi64((X), (C)), \
7941 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00007942
7943static __inline__ __m256d __DEFAULT_FN_ATTRS
7944_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
7945{
Craig Topper55b40672018-05-20 23:34:10 +00007946 return (__m256d)__builtin_ia32_permvardf256((__v4df)__Y, (__v4di)__X);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007947}
7948
7949static __inline__ __m256d __DEFAULT_FN_ATTRS
7950_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
7951 __m256d __Y)
7952{
Craig Topper55b40672018-05-20 23:34:10 +00007953 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7954 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7955 (__v4df)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007956}
7957
7958static __inline__ __m256d __DEFAULT_FN_ATTRS
7959_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
7960{
Craig Topper55b40672018-05-20 23:34:10 +00007961 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7962 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7963 (__v4df)_mm256_setzero_pd());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007964}
7965
7966static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00007967_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007968{
Craig Topper55b40672018-05-20 23:34:10 +00007969 return (__m256i)__builtin_ia32_permvardi256((__v4di) __Y, (__v4di) __X);
7970}
7971
7972static __inline__ __m256i __DEFAULT_FN_ATTRS
7973_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
7974{
7975 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7976 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7977 (__v4di)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007978}
7979
7980static __inline__ __m256i __DEFAULT_FN_ATTRS
7981_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
7982 __m256i __Y)
7983{
Craig Topper55b40672018-05-20 23:34:10 +00007984 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7985 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7986 (__v4di)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007987}
7988
Craig Topper5dc6ca82018-02-24 06:46:42 +00007989#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
7990
Michael Zuckerman8938e832016-04-25 05:32:35 +00007991static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00007992_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007993{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007994 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
7995 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
7996 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007997}
7998
7999static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008000_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008001{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008002 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8003 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8004 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008005}
8006
Craig Topper5dc6ca82018-02-24 06:46:42 +00008007#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
8008
8009static __inline__ __m256i __DEFAULT_FN_ATTRS
8010_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
8011 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008012{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008013 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8014 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8015 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008016}
8017
8018static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008019_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008020{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008021 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8022 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8023 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008024}
8025
Craig Topperd2661882016-05-17 04:41:48 +00008026#define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008027 (__m128i)__builtin_shufflevector((__v4si)(__m128i)(B), \
8028 (__v4si)(__m128i)(A), \
8029 ((int)(imm) & 0x3) + 0, \
8030 ((int)(imm) & 0x3) + 1, \
8031 ((int)(imm) & 0x3) + 2, \
8032 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008033
Craig Topperd2661882016-05-17 04:41:48 +00008034#define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008035 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8036 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8037 (__v4si)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008038
Craig Topperd2661882016-05-17 04:41:48 +00008039#define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008040 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8041 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8042 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008043
Craig Topperd2661882016-05-17 04:41:48 +00008044#define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008045 (__m256i)__builtin_shufflevector((__v8si)(__m256i)(B), \
8046 (__v8si)(__m256i)(A), \
8047 ((int)(imm) & 0x7) + 0, \
8048 ((int)(imm) & 0x7) + 1, \
8049 ((int)(imm) & 0x7) + 2, \
8050 ((int)(imm) & 0x7) + 3, \
8051 ((int)(imm) & 0x7) + 4, \
8052 ((int)(imm) & 0x7) + 5, \
8053 ((int)(imm) & 0x7) + 6, \
8054 ((int)(imm) & 0x7) + 7); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008055
Craig Topperd2661882016-05-17 04:41:48 +00008056#define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008057 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8058 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8059 (__v8si)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008060
Craig Topperd2661882016-05-17 04:41:48 +00008061#define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008062 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8063 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8064 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008065
Craig Topperd2661882016-05-17 04:41:48 +00008066#define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008067 (__m128i)__builtin_shufflevector((__v2di)(__m128i)(B), \
8068 (__v2di)(__m128i)(A), \
8069 ((int)(imm) & 0x1) + 0, \
8070 ((int)(imm) & 0x1) + 1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008071
Craig Topperd2661882016-05-17 04:41:48 +00008072#define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008073 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8074 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8075 (__v2di)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008076
Craig Topperd2661882016-05-17 04:41:48 +00008077#define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008078 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8079 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8080 (__v2di)_mm_setzero_di()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008081
Craig Topperd2661882016-05-17 04:41:48 +00008082#define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008083 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(B), \
8084 (__v4di)(__m256i)(A), \
8085 ((int)(imm) & 0x3) + 0, \
8086 ((int)(imm) & 0x3) + 1, \
8087 ((int)(imm) & 0x3) + 2, \
8088 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008089
Craig Topperd2661882016-05-17 04:41:48 +00008090#define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008091 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8092 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8093 (__v4di)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008094
Craig Topperd2661882016-05-17 04:41:48 +00008095#define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008096 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8097 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8098 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008099
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008100static __inline__ __m128 __DEFAULT_FN_ATTRS
8101_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8102{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008103 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8104 (__v4sf)_mm_movehdup_ps(__A),
8105 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008106}
8107
8108static __inline__ __m128 __DEFAULT_FN_ATTRS
8109_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8110{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008111 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8112 (__v4sf)_mm_movehdup_ps(__A),
8113 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008114}
8115
8116static __inline__ __m256 __DEFAULT_FN_ATTRS
8117_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8118{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008119 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8120 (__v8sf)_mm256_movehdup_ps(__A),
8121 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008122}
8123
8124static __inline__ __m256 __DEFAULT_FN_ATTRS
8125_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8126{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008127 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8128 (__v8sf)_mm256_movehdup_ps(__A),
8129 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008130}
8131
8132static __inline__ __m128 __DEFAULT_FN_ATTRS
8133_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8134{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008135 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8136 (__v4sf)_mm_moveldup_ps(__A),
8137 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008138}
8139
8140static __inline__ __m128 __DEFAULT_FN_ATTRS
8141_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8142{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008143 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8144 (__v4sf)_mm_moveldup_ps(__A),
8145 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008146}
8147
8148static __inline__ __m256 __DEFAULT_FN_ATTRS
8149_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8150{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008151 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8152 (__v8sf)_mm256_moveldup_ps(__A),
8153 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008154}
8155
8156static __inline__ __m256 __DEFAULT_FN_ATTRS
8157_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8158{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008159 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8160 (__v8sf)_mm256_moveldup_ps(__A),
8161 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008162}
8163
Craig Topperd2661882016-05-17 04:41:48 +00008164#define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008165 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8166 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8167 (__v8si)(__m256i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008168
Craig Topperd2661882016-05-17 04:41:48 +00008169#define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008170 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8171 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8172 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008173
Craig Topperd2661882016-05-17 04:41:48 +00008174#define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008175 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8176 (__v4si)_mm_shuffle_epi32((A), (I)), \
8177 (__v4si)(__m128i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008178
Craig Topperd2661882016-05-17 04:41:48 +00008179#define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008180 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8181 (__v4si)_mm_shuffle_epi32((A), (I)), \
8182 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008183
8184static __inline__ __m128d __DEFAULT_FN_ATTRS
8185_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8186{
Igor Bregeraadb8762016-06-08 13:59:20 +00008187 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8188 (__v2df) __A,
8189 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008190}
8191
8192static __inline__ __m128d __DEFAULT_FN_ATTRS
8193_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8194{
Igor Bregeraadb8762016-06-08 13:59:20 +00008195 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8196 (__v2df) __A,
8197 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008198}
8199
8200static __inline__ __m256d __DEFAULT_FN_ATTRS
8201_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8202{
Igor Bregeraadb8762016-06-08 13:59:20 +00008203 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8204 (__v4df) __A,
8205 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008206}
8207
8208static __inline__ __m256d __DEFAULT_FN_ATTRS
8209_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8210{
Igor Bregeraadb8762016-06-08 13:59:20 +00008211 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8212 (__v4df) __A,
8213 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008214}
8215
8216static __inline__ __m128 __DEFAULT_FN_ATTRS
8217_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8218{
Igor Bregeraadb8762016-06-08 13:59:20 +00008219 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8220 (__v4sf) __A,
8221 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008222}
8223
8224static __inline__ __m128 __DEFAULT_FN_ATTRS
8225_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8226{
Igor Bregeraadb8762016-06-08 13:59:20 +00008227 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8228 (__v4sf) __A,
8229 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008230}
8231
8232static __inline__ __m256 __DEFAULT_FN_ATTRS
8233_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8234{
Igor Bregeraadb8762016-06-08 13:59:20 +00008235 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8236 (__v8sf) __A,
8237 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008238}
8239
8240static __inline__ __m256 __DEFAULT_FN_ATTRS
8241_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8242{
Igor Bregeraadb8762016-06-08 13:59:20 +00008243 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8244 (__v8sf) __A,
8245 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008246}
8247
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008248static __inline__ __m128 __DEFAULT_FN_ATTRS
8249_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8250{
8251 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8252 (__v4sf) __W,
8253 (__mmask8) __U);
8254}
8255
8256static __inline__ __m128 __DEFAULT_FN_ATTRS
8257_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8258{
8259 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8260 (__v4sf)
8261 _mm_setzero_ps (),
8262 (__mmask8) __U);
8263}
8264
8265static __inline__ __m256 __DEFAULT_FN_ATTRS
8266_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8267{
8268 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8269 (__v8sf) __W,
8270 (__mmask8) __U);
8271}
8272
8273static __inline__ __m256 __DEFAULT_FN_ATTRS
8274_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8275{
8276 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8277 (__v8sf)
8278 _mm256_setzero_ps (),
8279 (__mmask8) __U);
8280}
8281
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008282static __inline __m128i __DEFAULT_FN_ATTRS
8283_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8284{
8285 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8286 (__v8hi) __W,
8287 (__mmask8) __U);
8288}
8289
8290static __inline __m128i __DEFAULT_FN_ATTRS
8291_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8292{
8293 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8294 (__v8hi) _mm_setzero_si128 (),
8295 (__mmask8) __U);
8296}
8297
8298#define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008299 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8300 (__v8hi)(__m128i)(W), \
8301 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008302
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008303#define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008304 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8305 (__v8hi)_mm_setzero_si128(), \
8306 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008307
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008308static __inline __m128i __DEFAULT_FN_ATTRS
8309_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8310{
8311 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8312 (__v8hi) __W,
8313 (__mmask8) __U);
8314}
8315
8316static __inline __m128i __DEFAULT_FN_ATTRS
8317_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8318{
8319 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8320 (__v8hi) _mm_setzero_si128(),
8321 (__mmask8) __U);
8322}
8323#define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008324 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8325 (__v8hi)(__m128i)(W), \
8326 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008327
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008328#define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008329 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8330 (__v8hi)_mm_setzero_si128(), \
8331 (__mmask8)(U)); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008332
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008333
Michael Kupersteine45af542015-06-30 13:36:19 +00008334#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008335
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008336#endif /* __AVX512VLINTRIN_H */