blob: fb8056e3f8d83945f06d30101efff429d3049247 [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) {
1788 return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
1789 (__v4sf) __W,
1790 (__mmask8) __U);
1791}
1792
1793static __inline__ __m128 __DEFAULT_FN_ATTRS
1794_mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A) {
1795 return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
1796 (__v4sf)
1797 _mm_setzero_ps (),
1798 (__mmask8) __U);
1799}
1800
1801static __inline__ __m256 __DEFAULT_FN_ATTRS
1802_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
1803 return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
1804 (__v8sf) __W,
1805 (__mmask8) __U);
1806}
1807
1808static __inline__ __m256 __DEFAULT_FN_ATTRS
1809_mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A) {
1810 return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
1811 (__v8sf)
1812 _mm256_setzero_ps (),
1813 (__mmask8) __U);
1814}
1815
1816static __inline__ __m128i __DEFAULT_FN_ATTRS
1817_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
1818 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1819 (__v4si) __W,
1820 (__mmask8) __U);
1821}
1822
1823static __inline__ __m128i __DEFAULT_FN_ATTRS
1824_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
1825 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1826 (__v4si)
1827 _mm_setzero_si128 (),
1828 (__mmask8) __U);
1829}
1830
1831static __inline__ __m128i __DEFAULT_FN_ATTRS
1832_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
1833 return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
1834 (__v4si) __W,
1835 (__mmask8) __U);
1836}
1837
1838static __inline__ __m128i __DEFAULT_FN_ATTRS
1839_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
1840 return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
1841 (__v4si)
1842 _mm_setzero_si128 (),
1843 (__mmask8) __U);
1844}
1845
1846static __inline__ __m128 __DEFAULT_FN_ATTRS
1847_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
1848 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1849 (__v4sf) __W,
1850 (__mmask8) __U);
1851}
1852
1853static __inline__ __m128 __DEFAULT_FN_ATTRS
1854_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
1855 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1856 (__v4sf)
1857 _mm_setzero_ps (),
1858 (__mmask8) __U);
1859}
1860
1861static __inline__ __m128 __DEFAULT_FN_ATTRS
1862_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
1863 return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
1864 (__v4sf) __W,
1865 (__mmask8) __U);
1866}
1867
1868static __inline__ __m128 __DEFAULT_FN_ATTRS
1869_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
1870 return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
1871 (__v4sf)
1872 _mm_setzero_ps (),
1873 (__mmask8) __U);
1874}
1875
1876static __inline__ __m128i __DEFAULT_FN_ATTRS
1877_mm_cvtpd_epu32 (__m128d __A) {
1878 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1879 (__v4si)
1880 _mm_setzero_si128 (),
1881 (__mmask8) -1);
1882}
1883
1884static __inline__ __m128i __DEFAULT_FN_ATTRS
1885_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
1886 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1887 (__v4si) __W,
1888 (__mmask8) __U);
1889}
1890
1891static __inline__ __m128i __DEFAULT_FN_ATTRS
1892_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
1893 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1894 (__v4si)
1895 _mm_setzero_si128 (),
1896 (__mmask8) __U);
1897}
1898
1899static __inline__ __m128i __DEFAULT_FN_ATTRS
1900_mm256_cvtpd_epu32 (__m256d __A) {
1901 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1902 (__v4si)
1903 _mm_setzero_si128 (),
1904 (__mmask8) -1);
1905}
1906
1907static __inline__ __m128i __DEFAULT_FN_ATTRS
1908_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
1909 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1910 (__v4si) __W,
1911 (__mmask8) __U);
1912}
1913
1914static __inline__ __m128i __DEFAULT_FN_ATTRS
1915_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
1916 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1917 (__v4si)
1918 _mm_setzero_si128 (),
1919 (__mmask8) __U);
1920}
1921
1922static __inline__ __m128i __DEFAULT_FN_ATTRS
1923_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
1924 return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
1925 (__v4si) __W,
1926 (__mmask8) __U);
1927}
1928
1929static __inline__ __m128i __DEFAULT_FN_ATTRS
1930_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
1931 return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
1932 (__v4si)
1933 _mm_setzero_si128 (),
1934 (__mmask8) __U);
1935}
1936
1937static __inline__ __m256i __DEFAULT_FN_ATTRS
1938_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
1939 return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
1940 (__v8si) __W,
1941 (__mmask8) __U);
1942}
1943
1944static __inline__ __m256i __DEFAULT_FN_ATTRS
1945_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
1946 return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
1947 (__v8si)
1948 _mm256_setzero_si256 (),
1949 (__mmask8) __U);
1950}
1951
1952static __inline__ __m128d __DEFAULT_FN_ATTRS
1953_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
1954 return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
1955 (__v2df) __W,
1956 (__mmask8) __U);
1957}
1958
1959static __inline__ __m128d __DEFAULT_FN_ATTRS
1960_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
1961 return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
1962 (__v2df)
1963 _mm_setzero_pd (),
1964 (__mmask8) __U);
1965}
1966
1967static __inline__ __m256d __DEFAULT_FN_ATTRS
1968_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
1969 return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
1970 (__v4df) __W,
1971 (__mmask8) __U);
1972}
1973
1974static __inline__ __m256d __DEFAULT_FN_ATTRS
1975_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
1976 return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
1977 (__v4df)
1978 _mm256_setzero_pd (),
1979 (__mmask8) __U);
1980}
1981
1982static __inline__ __m128i __DEFAULT_FN_ATTRS
1983_mm_cvtps_epu32 (__m128 __A) {
1984 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
1985 (__v4si)
1986 _mm_setzero_si128 (),
1987 (__mmask8) -1);
1988}
1989
1990static __inline__ __m128i __DEFAULT_FN_ATTRS
1991_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
1992 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
1993 (__v4si) __W,
1994 (__mmask8) __U);
1995}
1996
1997static __inline__ __m128i __DEFAULT_FN_ATTRS
1998_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
1999 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2000 (__v4si)
2001 _mm_setzero_si128 (),
2002 (__mmask8) __U);
2003}
2004
2005static __inline__ __m256i __DEFAULT_FN_ATTRS
2006_mm256_cvtps_epu32 (__m256 __A) {
2007 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2008 (__v8si)
2009 _mm256_setzero_si256 (),
2010 (__mmask8) -1);
2011}
2012
2013static __inline__ __m256i __DEFAULT_FN_ATTRS
2014_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2015 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2016 (__v8si) __W,
2017 (__mmask8) __U);
2018}
2019
2020static __inline__ __m256i __DEFAULT_FN_ATTRS
2021_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2022 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2023 (__v8si)
2024 _mm256_setzero_si256 (),
2025 (__mmask8) __U);
2026}
2027
2028static __inline__ __m128i __DEFAULT_FN_ATTRS
2029_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2030 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2031 (__v4si) __W,
2032 (__mmask8) __U);
2033}
2034
2035static __inline__ __m128i __DEFAULT_FN_ATTRS
2036_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2037 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2038 (__v4si)
2039 _mm_setzero_si128 (),
2040 (__mmask8) __U);
2041}
2042
2043static __inline__ __m128i __DEFAULT_FN_ATTRS
2044_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
2045 return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
2046 (__v4si) __W,
2047 (__mmask8) __U);
2048}
2049
2050static __inline__ __m128i __DEFAULT_FN_ATTRS
2051_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
2052 return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
2053 (__v4si)
2054 _mm_setzero_si128 (),
2055 (__mmask8) __U);
2056}
2057
2058static __inline__ __m128i __DEFAULT_FN_ATTRS
2059_mm_cvttpd_epu32 (__m128d __A) {
2060 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2061 (__v4si)
2062 _mm_setzero_si128 (),
2063 (__mmask8) -1);
2064}
2065
2066static __inline__ __m128i __DEFAULT_FN_ATTRS
2067_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2068 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2069 (__v4si) __W,
2070 (__mmask8) __U);
2071}
2072
2073static __inline__ __m128i __DEFAULT_FN_ATTRS
2074_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2075 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2076 (__v4si)
2077 _mm_setzero_si128 (),
2078 (__mmask8) __U);
2079}
2080
2081static __inline__ __m128i __DEFAULT_FN_ATTRS
2082_mm256_cvttpd_epu32 (__m256d __A) {
2083 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2084 (__v4si)
2085 _mm_setzero_si128 (),
2086 (__mmask8) -1);
2087}
2088
2089static __inline__ __m128i __DEFAULT_FN_ATTRS
2090_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2091 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2092 (__v4si) __W,
2093 (__mmask8) __U);
2094}
2095
2096static __inline__ __m128i __DEFAULT_FN_ATTRS
2097_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2098 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2099 (__v4si)
2100 _mm_setzero_si128 (),
2101 (__mmask8) __U);
2102}
2103
2104static __inline__ __m128i __DEFAULT_FN_ATTRS
2105_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
2106 return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
2107 (__v4si) __W,
2108 (__mmask8) __U);
2109}
2110
2111static __inline__ __m128i __DEFAULT_FN_ATTRS
2112_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
2113 return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
2114 (__v4si)
2115 _mm_setzero_si128 (),
2116 (__mmask8) __U);
2117}
2118
2119static __inline__ __m256i __DEFAULT_FN_ATTRS
2120_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
2121 return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
2122 (__v8si) __W,
2123 (__mmask8) __U);
2124}
2125
2126static __inline__ __m256i __DEFAULT_FN_ATTRS
2127_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
2128 return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
2129 (__v8si)
2130 _mm256_setzero_si256 (),
2131 (__mmask8) __U);
2132}
2133
2134static __inline__ __m128i __DEFAULT_FN_ATTRS
2135_mm_cvttps_epu32 (__m128 __A) {
2136 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2137 (__v4si)
2138 _mm_setzero_si128 (),
2139 (__mmask8) -1);
2140}
2141
2142static __inline__ __m128i __DEFAULT_FN_ATTRS
2143_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2144 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2145 (__v4si) __W,
2146 (__mmask8) __U);
2147}
2148
2149static __inline__ __m128i __DEFAULT_FN_ATTRS
2150_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2151 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2152 (__v4si)
2153 _mm_setzero_si128 (),
2154 (__mmask8) __U);
2155}
2156
2157static __inline__ __m256i __DEFAULT_FN_ATTRS
2158_mm256_cvttps_epu32 (__m256 __A) {
2159 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2160 (__v8si)
2161 _mm256_setzero_si256 (),
2162 (__mmask8) -1);
2163}
2164
2165static __inline__ __m256i __DEFAULT_FN_ATTRS
2166_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2167 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2168 (__v8si) __W,
2169 (__mmask8) __U);
2170}
2171
2172static __inline__ __m256i __DEFAULT_FN_ATTRS
2173_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2174 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2175 (__v8si)
2176 _mm256_setzero_si256 (),
2177 (__mmask8) __U);
2178}
2179
2180static __inline__ __m128d __DEFAULT_FN_ATTRS
2181_mm_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002182 return (__m128d) __builtin_convertvector(
2183 __builtin_shufflevector((__v4su)__A, (__v4su)__A, 0, 1), __v2df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002184}
2185
2186static __inline__ __m128d __DEFAULT_FN_ATTRS
2187_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002188 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2189 (__v2df)_mm_cvtepu32_pd(__A),
2190 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002191}
2192
2193static __inline__ __m128d __DEFAULT_FN_ATTRS
2194_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002195 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2196 (__v2df)_mm_cvtepu32_pd(__A),
2197 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002198}
2199
2200static __inline__ __m256d __DEFAULT_FN_ATTRS
2201_mm256_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002202 return (__m256d)__builtin_convertvector((__v4su)__A, __v4df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002203}
2204
2205static __inline__ __m256d __DEFAULT_FN_ATTRS
2206_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002207 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2208 (__v4df)_mm256_cvtepu32_pd(__A),
2209 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002210}
2211
2212static __inline__ __m256d __DEFAULT_FN_ATTRS
2213_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002214 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2215 (__v4df)_mm256_cvtepu32_pd(__A),
2216 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002217}
2218
2219static __inline__ __m128 __DEFAULT_FN_ATTRS
2220_mm_cvtepu32_ps (__m128i __A) {
2221 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2222 (__v4sf)
2223 _mm_setzero_ps (),
2224 (__mmask8) -1);
2225}
2226
2227static __inline__ __m128 __DEFAULT_FN_ATTRS
2228_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
2229 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2230 (__v4sf) __W,
2231 (__mmask8) __U);
2232}
2233
2234static __inline__ __m128 __DEFAULT_FN_ATTRS
2235_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
2236 return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2237 (__v4sf)
2238 _mm_setzero_ps (),
2239 (__mmask8) __U);
2240}
2241
2242static __inline__ __m256 __DEFAULT_FN_ATTRS
2243_mm256_cvtepu32_ps (__m256i __A) {
2244 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2245 (__v8sf)
2246 _mm256_setzero_ps (),
2247 (__mmask8) -1);
2248}
2249
2250static __inline__ __m256 __DEFAULT_FN_ATTRS
2251_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
2252 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2253 (__v8sf) __W,
2254 (__mmask8) __U);
2255}
2256
2257static __inline__ __m256 __DEFAULT_FN_ATTRS
2258_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
2259 return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2260 (__v8sf)
2261 _mm256_setzero_ps (),
2262 (__mmask8) __U);
2263}
2264
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002265static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002266_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2267 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2268 (__v2df)_mm_div_pd(__A, __B),
2269 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002270}
2271
2272static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002273_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2274 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2275 (__v2df)_mm_div_pd(__A, __B),
2276 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002277}
2278
2279static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002280_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2281 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2282 (__v4df)_mm256_div_pd(__A, __B),
2283 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002284}
2285
2286static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002287_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2288 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2289 (__v4df)_mm256_div_pd(__A, __B),
2290 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002291}
2292
2293static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002294_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2295 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2296 (__v4sf)_mm_div_ps(__A, __B),
2297 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002298}
2299
2300static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002301_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2302 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2303 (__v4sf)_mm_div_ps(__A, __B),
2304 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002305}
2306
2307static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002308_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2309 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2310 (__v8sf)_mm256_div_ps(__A, __B),
2311 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002312}
2313
2314static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002315_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2316 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2317 (__v8sf)_mm256_div_ps(__A, __B),
2318 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002319}
2320
2321static __inline__ __m128d __DEFAULT_FN_ATTRS
2322_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2323 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2324 (__v2df) __W,
2325 (__mmask8) __U);
2326}
2327
2328static __inline__ __m128d __DEFAULT_FN_ATTRS
2329_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2330 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2331 (__v2df)
2332 _mm_setzero_pd (),
2333 (__mmask8) __U);
2334}
2335
2336static __inline__ __m256d __DEFAULT_FN_ATTRS
2337_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2338 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2339 (__v4df) __W,
2340 (__mmask8) __U);
2341}
2342
2343static __inline__ __m256d __DEFAULT_FN_ATTRS
2344_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2345 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2346 (__v4df)
2347 _mm256_setzero_pd (),
2348 (__mmask8) __U);
2349}
2350
2351static __inline__ __m128i __DEFAULT_FN_ATTRS
2352_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2353 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2354 (__v2di) __W,
2355 (__mmask8) __U);
2356}
2357
2358static __inline__ __m128i __DEFAULT_FN_ATTRS
2359_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2360 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2361 (__v2di)
2362 _mm_setzero_si128 (),
2363 (__mmask8) __U);
2364}
2365
2366static __inline__ __m256i __DEFAULT_FN_ATTRS
2367_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2368 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2369 (__v4di) __W,
2370 (__mmask8) __U);
2371}
2372
2373static __inline__ __m256i __DEFAULT_FN_ATTRS
2374_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2375 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2376 (__v4di)
2377 _mm256_setzero_si256 (),
2378 (__mmask8) __U);
2379}
2380
2381static __inline__ __m128d __DEFAULT_FN_ATTRS
2382_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2383 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2384 (__v2df) __W,
2385 (__mmask8)
2386 __U);
2387}
2388
2389static __inline__ __m128d __DEFAULT_FN_ATTRS
2390_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2391 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2392 (__v2df)
2393 _mm_setzero_pd (),
2394 (__mmask8)
2395 __U);
2396}
2397
2398static __inline__ __m256d __DEFAULT_FN_ATTRS
2399_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2400 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2401 (__v4df) __W,
2402 (__mmask8)
2403 __U);
2404}
2405
2406static __inline__ __m256d __DEFAULT_FN_ATTRS
2407_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2408 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2409 (__v4df)
2410 _mm256_setzero_pd (),
2411 (__mmask8)
2412 __U);
2413}
2414
2415static __inline__ __m128i __DEFAULT_FN_ATTRS
2416_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2417 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2418 (__v2di) __W,
2419 (__mmask8)
2420 __U);
2421}
2422
2423static __inline__ __m128i __DEFAULT_FN_ATTRS
2424_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2425 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2426 (__v2di)
2427 _mm_setzero_si128 (),
2428 (__mmask8)
2429 __U);
2430}
2431
2432static __inline__ __m256i __DEFAULT_FN_ATTRS
2433_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2434 void const *__P) {
2435 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2436 (__v4di) __W,
2437 (__mmask8)
2438 __U);
2439}
2440
2441static __inline__ __m256i __DEFAULT_FN_ATTRS
2442_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2443 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2444 (__v4di)
2445 _mm256_setzero_si256 (),
2446 (__mmask8)
2447 __U);
2448}
2449
2450static __inline__ __m128 __DEFAULT_FN_ATTRS
2451_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2452 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2453 (__v4sf) __W,
2454 (__mmask8) __U);
2455}
2456
2457static __inline__ __m128 __DEFAULT_FN_ATTRS
2458_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2459 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2460 (__v4sf)
2461 _mm_setzero_ps (),
2462 (__mmask8)
2463 __U);
2464}
2465
2466static __inline__ __m256 __DEFAULT_FN_ATTRS
2467_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2468 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2469 (__v8sf) __W,
2470 (__mmask8) __U);
2471}
2472
2473static __inline__ __m256 __DEFAULT_FN_ATTRS
2474_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2475 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2476 (__v8sf)
2477 _mm256_setzero_ps (),
2478 (__mmask8)
2479 __U);
2480}
2481
2482static __inline__ __m128i __DEFAULT_FN_ATTRS
2483_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2484 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2485 (__v4si) __W,
2486 (__mmask8)
2487 __U);
2488}
2489
2490static __inline__ __m128i __DEFAULT_FN_ATTRS
2491_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2492 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2493 (__v4si)
2494 _mm_setzero_si128 (),
2495 (__mmask8) __U);
2496}
2497
2498static __inline__ __m256i __DEFAULT_FN_ATTRS
2499_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2500 void const *__P) {
2501 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2502 (__v8si) __W,
2503 (__mmask8)
2504 __U);
2505}
2506
2507static __inline__ __m256i __DEFAULT_FN_ATTRS
2508_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2509 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2510 (__v8si)
2511 _mm256_setzero_si256 (),
2512 (__mmask8)
2513 __U);
2514}
2515
2516static __inline__ __m128 __DEFAULT_FN_ATTRS
2517_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2518 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2519 (__v4sf) __W,
2520 (__mmask8) __U);
2521}
2522
2523static __inline__ __m128 __DEFAULT_FN_ATTRS
2524_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2525 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2526 (__v4sf)
2527 _mm_setzero_ps (),
2528 (__mmask8) __U);
2529}
2530
2531static __inline__ __m256 __DEFAULT_FN_ATTRS
2532_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2533 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2534 (__v8sf) __W,
2535 (__mmask8) __U);
2536}
2537
2538static __inline__ __m256 __DEFAULT_FN_ATTRS
2539_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2540 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2541 (__v8sf)
2542 _mm256_setzero_ps (),
2543 (__mmask8) __U);
2544}
2545
2546static __inline__ __m128i __DEFAULT_FN_ATTRS
2547_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2548 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2549 (__v4si) __W,
2550 (__mmask8) __U);
2551}
2552
2553static __inline__ __m128i __DEFAULT_FN_ATTRS
2554_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2555 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2556 (__v4si)
2557 _mm_setzero_si128 (),
2558 (__mmask8) __U);
2559}
2560
2561static __inline__ __m256i __DEFAULT_FN_ATTRS
2562_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2563 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2564 (__v8si) __W,
2565 (__mmask8) __U);
2566}
2567
2568static __inline__ __m256i __DEFAULT_FN_ATTRS
2569_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2570 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2571 (__v8si)
2572 _mm256_setzero_si256 (),
2573 (__mmask8) __U);
2574}
2575
2576static __inline__ __m128d __DEFAULT_FN_ATTRS
2577_mm_getexp_pd (__m128d __A) {
2578 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2579 (__v2df)
2580 _mm_setzero_pd (),
2581 (__mmask8) -1);
2582}
2583
2584static __inline__ __m128d __DEFAULT_FN_ATTRS
2585_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2586 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2587 (__v2df) __W,
2588 (__mmask8) __U);
2589}
2590
2591static __inline__ __m128d __DEFAULT_FN_ATTRS
2592_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2593 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2594 (__v2df)
2595 _mm_setzero_pd (),
2596 (__mmask8) __U);
2597}
2598
2599static __inline__ __m256d __DEFAULT_FN_ATTRS
2600_mm256_getexp_pd (__m256d __A) {
2601 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2602 (__v4df)
2603 _mm256_setzero_pd (),
2604 (__mmask8) -1);
2605}
2606
2607static __inline__ __m256d __DEFAULT_FN_ATTRS
2608_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2609 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2610 (__v4df) __W,
2611 (__mmask8) __U);
2612}
2613
2614static __inline__ __m256d __DEFAULT_FN_ATTRS
2615_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2616 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2617 (__v4df)
2618 _mm256_setzero_pd (),
2619 (__mmask8) __U);
2620}
2621
2622static __inline__ __m128 __DEFAULT_FN_ATTRS
2623_mm_getexp_ps (__m128 __A) {
2624 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2625 (__v4sf)
2626 _mm_setzero_ps (),
2627 (__mmask8) -1);
2628}
2629
2630static __inline__ __m128 __DEFAULT_FN_ATTRS
2631_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2632 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2633 (__v4sf) __W,
2634 (__mmask8) __U);
2635}
2636
2637static __inline__ __m128 __DEFAULT_FN_ATTRS
2638_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
2639 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2640 (__v4sf)
2641 _mm_setzero_ps (),
2642 (__mmask8) __U);
2643}
2644
2645static __inline__ __m256 __DEFAULT_FN_ATTRS
2646_mm256_getexp_ps (__m256 __A) {
2647 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2648 (__v8sf)
2649 _mm256_setzero_ps (),
2650 (__mmask8) -1);
2651}
2652
2653static __inline__ __m256 __DEFAULT_FN_ATTRS
2654_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2655 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2656 (__v8sf) __W,
2657 (__mmask8) __U);
2658}
2659
2660static __inline__ __m256 __DEFAULT_FN_ATTRS
2661_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
2662 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2663 (__v8sf)
2664 _mm256_setzero_ps (),
2665 (__mmask8) __U);
2666}
2667
2668static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002669_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2670 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2671 (__v2df)_mm_max_pd(__A, __B),
2672 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002673}
2674
2675static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002676_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2677 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2678 (__v2df)_mm_max_pd(__A, __B),
2679 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002680}
2681
2682static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002683_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2684 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2685 (__v4df)_mm256_max_pd(__A, __B),
2686 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002687}
2688
2689static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002690_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2691 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2692 (__v4df)_mm256_max_pd(__A, __B),
2693 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002694}
2695
2696static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002697_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2698 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2699 (__v4sf)_mm_max_ps(__A, __B),
2700 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002701}
2702
2703static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002704_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2705 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2706 (__v4sf)_mm_max_ps(__A, __B),
2707 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002708}
2709
2710static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002711_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2712 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2713 (__v8sf)_mm256_max_ps(__A, __B),
2714 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002715}
2716
2717static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002718_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2719 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2720 (__v8sf)_mm256_max_ps(__A, __B),
2721 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002722}
2723
2724static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002725_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2726 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2727 (__v2df)_mm_min_pd(__A, __B),
2728 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002729}
2730
2731static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002732_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2733 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2734 (__v2df)_mm_min_pd(__A, __B),
2735 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002736}
2737
2738static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002739_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2740 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2741 (__v4df)_mm256_min_pd(__A, __B),
2742 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002743}
2744
2745static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002746_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2747 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2748 (__v4df)_mm256_min_pd(__A, __B),
2749 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002750}
2751
2752static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002753_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2754 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2755 (__v4sf)_mm_min_ps(__A, __B),
2756 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002757}
2758
2759static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002760_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2761 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2762 (__v4sf)_mm_min_ps(__A, __B),
2763 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002764}
2765
2766static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002767_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2768 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2769 (__v8sf)_mm256_min_ps(__A, __B),
2770 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002771}
2772
2773static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002774_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2775 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2776 (__v8sf)_mm256_min_ps(__A, __B),
2777 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002778}
2779
2780static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002781_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2782 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2783 (__v2df)_mm_mul_pd(__A, __B),
2784 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002785}
2786
2787static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002788_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2789 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2790 (__v2df)_mm_mul_pd(__A, __B),
2791 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002792}
2793
2794static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002795_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2796 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2797 (__v4df)_mm256_mul_pd(__A, __B),
2798 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002799}
2800
2801static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002802_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2803 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2804 (__v4df)_mm256_mul_pd(__A, __B),
2805 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002806}
2807
2808static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002809_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2810 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2811 (__v4sf)_mm_mul_ps(__A, __B),
2812 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002813}
2814
2815static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002816_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2817 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2818 (__v4sf)_mm_mul_ps(__A, __B),
2819 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002820}
2821
2822static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002823_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2824 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2825 (__v8sf)_mm256_mul_ps(__A, __B),
2826 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002827}
2828
2829static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002830_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2831 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2832 (__v8sf)_mm256_mul_ps(__A, __B),
2833 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002834}
2835
2836static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002837_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
2838 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2839 (__v4si)_mm_abs_epi32(__A),
2840 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002841}
2842
2843static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002844_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
2845 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2846 (__v4si)_mm_abs_epi32(__A),
2847 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002848}
2849
2850static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002851_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
2852 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2853 (__v8si)_mm256_abs_epi32(__A),
2854 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002855}
2856
2857static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002858_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
2859 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2860 (__v8si)_mm256_abs_epi32(__A),
2861 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002862}
2863
2864static __inline__ __m128i __DEFAULT_FN_ATTRS
2865_mm_abs_epi64 (__m128i __A) {
2866 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
2867 (__v2di)
2868 _mm_setzero_si128 (),
2869 (__mmask8) -1);
2870}
2871
2872static __inline__ __m128i __DEFAULT_FN_ATTRS
2873_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2874 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
2875 (__v2di) __W,
2876 (__mmask8) __U);
2877}
2878
2879static __inline__ __m128i __DEFAULT_FN_ATTRS
2880_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
2881 return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
2882 (__v2di)
2883 _mm_setzero_si128 (),
2884 (__mmask8) __U);
2885}
2886
2887static __inline__ __m256i __DEFAULT_FN_ATTRS
2888_mm256_abs_epi64 (__m256i __A) {
2889 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
2890 (__v4di)
2891 _mm256_setzero_si256 (),
2892 (__mmask8) -1);
2893}
2894
2895static __inline__ __m256i __DEFAULT_FN_ATTRS
2896_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2897 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
2898 (__v4di) __W,
2899 (__mmask8) __U);
2900}
2901
2902static __inline__ __m256i __DEFAULT_FN_ATTRS
2903_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
2904 return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
2905 (__v4di)
2906 _mm256_setzero_si256 (),
2907 (__mmask8) __U);
2908}
2909
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002910static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002911_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
2912 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2913 (__v4si)_mm_max_epi32(__A, __B),
2914 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002915}
2916
2917static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002918_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2919 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2920 (__v4si)_mm_max_epi32(__A, __B),
2921 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002922}
2923
2924static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002925_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
2926 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2927 (__v8si)_mm256_max_epi32(__A, __B),
2928 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002929}
2930
2931static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002932_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2933 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2934 (__v8si)_mm256_max_epi32(__A, __B),
2935 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002936}
2937
2938static __inline__ __m128i __DEFAULT_FN_ATTRS
2939_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
2940 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
2941 (__v2di) __B,
2942 (__v2di)
2943 _mm_setzero_si128 (),
2944 __M);
2945}
2946
2947static __inline__ __m128i __DEFAULT_FN_ATTRS
2948_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
2949 __m128i __B) {
2950 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
2951 (__v2di) __B,
2952 (__v2di) __W, __M);
2953}
2954
2955static __inline__ __m128i __DEFAULT_FN_ATTRS
2956_mm_max_epi64 (__m128i __A, __m128i __B) {
2957 return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
2958 (__v2di) __B,
2959 (__v2di)
2960 _mm_setzero_si128 (),
2961 (__mmask8) -1);
2962}
2963
2964static __inline__ __m256i __DEFAULT_FN_ATTRS
2965_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
2966 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
2967 (__v4di) __B,
2968 (__v4di)
2969 _mm256_setzero_si256 (),
2970 __M);
2971}
2972
2973static __inline__ __m256i __DEFAULT_FN_ATTRS
2974_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
2975 __m256i __B) {
2976 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
2977 (__v4di) __B,
2978 (__v4di) __W, __M);
2979}
2980
2981static __inline__ __m256i __DEFAULT_FN_ATTRS
2982_mm256_max_epi64 (__m256i __A, __m256i __B) {
2983 return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
2984 (__v4di) __B,
2985 (__v4di)
2986 _mm256_setzero_si256 (),
2987 (__mmask8) -1);
2988}
2989
2990static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002991_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
2992 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2993 (__v4si)_mm_max_epu32(__A, __B),
2994 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002995}
2996
2997static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002998_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2999 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3000 (__v4si)_mm_max_epu32(__A, __B),
3001 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003002}
3003
3004static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003005_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3006 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3007 (__v8si)_mm256_max_epu32(__A, __B),
3008 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003009}
3010
3011static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003012_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3013 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3014 (__v8si)_mm256_max_epu32(__A, __B),
3015 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003016}
3017
3018static __inline__ __m128i __DEFAULT_FN_ATTRS
3019_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3020 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3021 (__v2di) __B,
3022 (__v2di)
3023 _mm_setzero_si128 (),
3024 __M);
3025}
3026
3027static __inline__ __m128i __DEFAULT_FN_ATTRS
3028_mm_max_epu64 (__m128i __A, __m128i __B) {
3029 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3030 (__v2di) __B,
3031 (__v2di)
3032 _mm_setzero_si128 (),
3033 (__mmask8) -1);
3034}
3035
3036static __inline__ __m128i __DEFAULT_FN_ATTRS
3037_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3038 __m128i __B) {
3039 return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3040 (__v2di) __B,
3041 (__v2di) __W, __M);
3042}
3043
3044static __inline__ __m256i __DEFAULT_FN_ATTRS
3045_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3046 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3047 (__v4di) __B,
3048 (__v4di)
3049 _mm256_setzero_si256 (),
3050 __M);
3051}
3052
3053static __inline__ __m256i __DEFAULT_FN_ATTRS
3054_mm256_max_epu64 (__m256i __A, __m256i __B) {
3055 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3056 (__v4di) __B,
3057 (__v4di)
3058 _mm256_setzero_si256 (),
3059 (__mmask8) -1);
3060}
3061
3062static __inline__ __m256i __DEFAULT_FN_ATTRS
3063_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3064 __m256i __B) {
3065 return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3066 (__v4di) __B,
3067 (__v4di) __W, __M);
3068}
3069
3070static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003071_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3072 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3073 (__v4si)_mm_min_epi32(__A, __B),
3074 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003075}
3076
3077static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003078_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3079 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3080 (__v4si)_mm_min_epi32(__A, __B),
3081 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003082}
3083
3084static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003085_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3086 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3087 (__v8si)_mm256_min_epi32(__A, __B),
3088 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003089}
3090
3091static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003092_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3093 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3094 (__v8si)_mm256_min_epi32(__A, __B),
3095 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003096}
3097
3098static __inline__ __m128i __DEFAULT_FN_ATTRS
3099_mm_min_epi64 (__m128i __A, __m128i __B) {
3100 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3101 (__v2di) __B,
3102 (__v2di)
3103 _mm_setzero_si128 (),
3104 (__mmask8) -1);
3105}
3106
3107static __inline__ __m128i __DEFAULT_FN_ATTRS
3108_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
3109 __m128i __B) {
3110 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3111 (__v2di) __B,
3112 (__v2di) __W, __M);
3113}
3114
3115static __inline__ __m128i __DEFAULT_FN_ATTRS
3116_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
3117 return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3118 (__v2di) __B,
3119 (__v2di)
3120 _mm_setzero_si128 (),
3121 __M);
3122}
3123
3124static __inline__ __m256i __DEFAULT_FN_ATTRS
3125_mm256_min_epi64 (__m256i __A, __m256i __B) {
3126 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3127 (__v4di) __B,
3128 (__v4di)
3129 _mm256_setzero_si256 (),
3130 (__mmask8) -1);
3131}
3132
3133static __inline__ __m256i __DEFAULT_FN_ATTRS
3134_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
3135 __m256i __B) {
3136 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3137 (__v4di) __B,
3138 (__v4di) __W, __M);
3139}
3140
3141static __inline__ __m256i __DEFAULT_FN_ATTRS
3142_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3143 return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3144 (__v4di) __B,
3145 (__v4di)
3146 _mm256_setzero_si256 (),
3147 __M);
3148}
3149
3150static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003151_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3152 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3153 (__v4si)_mm_min_epu32(__A, __B),
3154 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003155}
3156
3157static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003158_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3159 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3160 (__v4si)_mm_min_epu32(__A, __B),
3161 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003162}
3163
3164static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003165_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3166 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3167 (__v8si)_mm256_min_epu32(__A, __B),
3168 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003169}
3170
3171static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003172_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3173 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3174 (__v8si)_mm256_min_epu32(__A, __B),
3175 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003176}
3177
3178static __inline__ __m128i __DEFAULT_FN_ATTRS
3179_mm_min_epu64 (__m128i __A, __m128i __B) {
3180 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3181 (__v2di) __B,
3182 (__v2di)
3183 _mm_setzero_si128 (),
3184 (__mmask8) -1);
3185}
3186
3187static __inline__ __m128i __DEFAULT_FN_ATTRS
3188_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3189 __m128i __B) {
3190 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3191 (__v2di) __B,
3192 (__v2di) __W, __M);
3193}
3194
3195static __inline__ __m128i __DEFAULT_FN_ATTRS
3196_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3197 return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3198 (__v2di) __B,
3199 (__v2di)
3200 _mm_setzero_si128 (),
3201 __M);
3202}
3203
3204static __inline__ __m256i __DEFAULT_FN_ATTRS
3205_mm256_min_epu64 (__m256i __A, __m256i __B) {
3206 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3207 (__v4di) __B,
3208 (__v4di)
3209 _mm256_setzero_si256 (),
3210 (__mmask8) -1);
3211}
3212
3213static __inline__ __m256i __DEFAULT_FN_ATTRS
3214_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3215 __m256i __B) {
3216 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3217 (__v4di) __B,
3218 (__v4di) __W, __M);
3219}
3220
3221static __inline__ __m256i __DEFAULT_FN_ATTRS
3222_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3223 return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3224 (__v4di) __B,
3225 (__v4di)
3226 _mm256_setzero_si256 (),
3227 __M);
3228}
3229
Craig Topperd2661882016-05-17 04:41:48 +00003230#define _mm_roundscale_pd(A, imm) __extension__ ({ \
3231 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3232 (int)(imm), \
3233 (__v2df)_mm_setzero_pd(), \
3234 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003235
3236
Craig Topperd2661882016-05-17 04:41:48 +00003237#define _mm_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3238 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3239 (int)(imm), \
3240 (__v2df)(__m128d)(W), \
3241 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003242
3243
Craig Topperd2661882016-05-17 04:41:48 +00003244#define _mm_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3245 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3246 (int)(imm), \
3247 (__v2df)_mm_setzero_pd(), \
3248 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003249
3250
Craig Topperd2661882016-05-17 04:41:48 +00003251#define _mm256_roundscale_pd(A, imm) __extension__ ({ \
3252 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3253 (int)(imm), \
3254 (__v4df)_mm256_setzero_pd(), \
3255 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003256
3257
Craig Topperd2661882016-05-17 04:41:48 +00003258#define _mm256_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3259 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3260 (int)(imm), \
3261 (__v4df)(__m256d)(W), \
3262 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003263
3264
Craig Topperd2661882016-05-17 04:41:48 +00003265#define _mm256_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3266 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3267 (int)(imm), \
3268 (__v4df)_mm256_setzero_pd(), \
3269 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003270
Craig Topperd2661882016-05-17 04:41:48 +00003271#define _mm_roundscale_ps(A, imm) __extension__ ({ \
3272 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3273 (__v4sf)_mm_setzero_ps(), \
3274 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003275
3276
Craig Topperd2661882016-05-17 04:41:48 +00003277#define _mm_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3278 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3279 (__v4sf)(__m128)(W), \
3280 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003281
3282
Craig Topperd2661882016-05-17 04:41:48 +00003283#define _mm_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3284 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3285 (__v4sf)_mm_setzero_ps(), \
3286 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003287
Craig Topperd2661882016-05-17 04:41:48 +00003288#define _mm256_roundscale_ps(A, imm) __extension__ ({ \
3289 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3290 (__v8sf)_mm256_setzero_ps(), \
3291 (__mmask8)-1); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003292
Craig Topperd2661882016-05-17 04:41:48 +00003293#define _mm256_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3294 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3295 (__v8sf)(__m256)(W), \
3296 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003297
3298
Craig Topperd2661882016-05-17 04:41:48 +00003299#define _mm256_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3300 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3301 (__v8sf)_mm256_setzero_ps(), \
3302 (__mmask8)(U)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003303
3304static __inline__ __m128d __DEFAULT_FN_ATTRS
3305_mm_scalef_pd (__m128d __A, __m128d __B) {
3306 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3307 (__v2df) __B,
3308 (__v2df)
3309 _mm_setzero_pd (),
3310 (__mmask8) -1);
3311}
3312
3313static __inline__ __m128d __DEFAULT_FN_ATTRS
3314_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3315 __m128d __B) {
3316 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3317 (__v2df) __B,
3318 (__v2df) __W,
3319 (__mmask8) __U);
3320}
3321
3322static __inline__ __m128d __DEFAULT_FN_ATTRS
3323_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3324 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3325 (__v2df) __B,
3326 (__v2df)
3327 _mm_setzero_pd (),
3328 (__mmask8) __U);
3329}
3330
3331static __inline__ __m256d __DEFAULT_FN_ATTRS
3332_mm256_scalef_pd (__m256d __A, __m256d __B) {
3333 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3334 (__v4df) __B,
3335 (__v4df)
3336 _mm256_setzero_pd (),
3337 (__mmask8) -1);
3338}
3339
3340static __inline__ __m256d __DEFAULT_FN_ATTRS
3341_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3342 __m256d __B) {
3343 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3344 (__v4df) __B,
3345 (__v4df) __W,
3346 (__mmask8) __U);
3347}
3348
3349static __inline__ __m256d __DEFAULT_FN_ATTRS
3350_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3351 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3352 (__v4df) __B,
3353 (__v4df)
3354 _mm256_setzero_pd (),
3355 (__mmask8) __U);
3356}
3357
3358static __inline__ __m128 __DEFAULT_FN_ATTRS
3359_mm_scalef_ps (__m128 __A, __m128 __B) {
3360 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3361 (__v4sf) __B,
3362 (__v4sf)
3363 _mm_setzero_ps (),
3364 (__mmask8) -1);
3365}
3366
3367static __inline__ __m128 __DEFAULT_FN_ATTRS
3368_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3369 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3370 (__v4sf) __B,
3371 (__v4sf) __W,
3372 (__mmask8) __U);
3373}
3374
3375static __inline__ __m128 __DEFAULT_FN_ATTRS
3376_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3377 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3378 (__v4sf) __B,
3379 (__v4sf)
3380 _mm_setzero_ps (),
3381 (__mmask8) __U);
3382}
3383
3384static __inline__ __m256 __DEFAULT_FN_ATTRS
3385_mm256_scalef_ps (__m256 __A, __m256 __B) {
3386 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3387 (__v8sf) __B,
3388 (__v8sf)
3389 _mm256_setzero_ps (),
3390 (__mmask8) -1);
3391}
3392
3393static __inline__ __m256 __DEFAULT_FN_ATTRS
3394_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3395 __m256 __B) {
3396 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3397 (__v8sf) __B,
3398 (__v8sf) __W,
3399 (__mmask8) __U);
3400}
3401
3402static __inline__ __m256 __DEFAULT_FN_ATTRS
3403_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3404 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3405 (__v8sf) __B,
3406 (__v8sf)
3407 _mm256_setzero_ps (),
3408 (__mmask8) __U);
3409}
3410
Craig Topperd2661882016-05-17 04:41:48 +00003411#define _mm_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3412 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3413 (__v2di)(__m128i)(index), \
3414 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003415
Craig Topperd2661882016-05-17 04:41:48 +00003416#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3417 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3418 (__v2di)(__m128i)(index), \
3419 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003420
Craig Topperd2661882016-05-17 04:41:48 +00003421#define _mm_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3422 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3423 (__v2di)(__m128i)(index), \
3424 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003425
Craig Topperd2661882016-05-17 04:41:48 +00003426#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3427 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3428 (__v2di)(__m128i)(index), \
3429 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003430
Craig Topperd2661882016-05-17 04:41:48 +00003431#define _mm256_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3432 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3433 (__v4di)(__m256i)(index), \
3434 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003435
Craig Topperd2661882016-05-17 04:41:48 +00003436#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3437 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3438 (__v4di)(__m256i)(index), \
3439 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003440
Craig Topperd2661882016-05-17 04:41:48 +00003441#define _mm256_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3442 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3443 (__v4di)(__m256i)(index), \
3444 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003445
Craig Topperd2661882016-05-17 04:41:48 +00003446#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3447 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3448 (__v4di)(__m256i)(index), \
3449 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003450
Craig Topperd2661882016-05-17 04:41:48 +00003451#define _mm_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3452 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3453 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3454 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003455
Craig Topperd2661882016-05-17 04:41:48 +00003456#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3457 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3458 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3459 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003460
Craig Topperd2661882016-05-17 04:41:48 +00003461#define _mm_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3462 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3463 (__v2di)(__m128i)(index), \
3464 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003465
Craig Topperd2661882016-05-17 04:41:48 +00003466#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3467 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3468 (__v2di)(__m128i)(index), \
3469 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003470
Craig Topperd2661882016-05-17 04:41:48 +00003471#define _mm256_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3472 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3473 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3474 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003475
Craig Topperd2661882016-05-17 04:41:48 +00003476#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3477 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3478 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
3479 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003480
Craig Topperd2661882016-05-17 04:41:48 +00003481#define _mm256_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3482 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3483 (__v4di)(__m256i)(index), \
3484 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003485
Craig Topperd2661882016-05-17 04:41:48 +00003486#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3487 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3488 (__v4di)(__m256i)(index), \
3489 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003490
Craig Topperd2661882016-05-17 04:41:48 +00003491#define _mm_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3492 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3493 (__v4si)(__m128i)(index), \
3494 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003495
Craig Topperd2661882016-05-17 04:41:48 +00003496#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3497 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3498 (__v4si)(__m128i)(index), \
3499 (__v2df)(__m128d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003500
Craig Topperd2661882016-05-17 04:41:48 +00003501#define _mm_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3502 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
3503 (__v4si)(__m128i)(index), \
3504 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003505
Craig Topperd2661882016-05-17 04:41:48 +00003506#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3507 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3508 (__v4si)(__m128i)(index), \
3509 (__v2di)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003510
Craig Topperd2661882016-05-17 04:41:48 +00003511#define _mm256_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
3512 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
3513 (__v4si)(__m128i)(index), \
3514 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003515
Craig Topperd2661882016-05-17 04:41:48 +00003516#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3517 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3518 (__v4si)(__m128i)(index), \
3519 (__v4df)(__m256d)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003520
Craig Topperd2661882016-05-17 04:41:48 +00003521#define _mm256_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3522 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
3523 (__v4si)(__m128i)(index), \
3524 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003525
Craig Topperd2661882016-05-17 04:41:48 +00003526#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3527 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3528 (__v4si)(__m128i)(index), \
3529 (__v4di)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003530
Craig Topperd2661882016-05-17 04:41:48 +00003531#define _mm_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3532 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
3533 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3534 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003535
Craig Topperd2661882016-05-17 04:41:48 +00003536#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3537 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3538 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3539 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003540
Craig Topperd2661882016-05-17 04:41:48 +00003541#define _mm_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3542 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
3543 (__v4si)(__m128i)(index), \
3544 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003545
Craig Topperd2661882016-05-17 04:41:48 +00003546#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3547 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3548 (__v4si)(__m128i)(index), \
3549 (__v4si)(__m128i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003550
Craig Topperd2661882016-05-17 04:41:48 +00003551#define _mm256_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
3552 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
3553 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3554 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003555
Craig Topperd2661882016-05-17 04:41:48 +00003556#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3557 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3558 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3559 (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003560
Craig Topperd2661882016-05-17 04:41:48 +00003561#define _mm256_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3562 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
3563 (__v8si)(__m256i)(index), \
3564 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003565
Craig Topperd2661882016-05-17 04:41:48 +00003566#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3567 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3568 (__v8si)(__m256i)(index), \
3569 (__v8si)(__m256i)(v1), (int)(scale)); })
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003570
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003571static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003572_mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3573 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3574 (__v2df)_mm_sqrt_pd(__A),
3575 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003576}
3577
3578static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003579_mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3580 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3581 (__v2df)_mm_sqrt_pd(__A),
3582 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003583}
3584
3585static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003586_mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3587 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3588 (__v4df)_mm256_sqrt_pd(__A),
3589 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003590}
3591
3592static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003593_mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3594 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3595 (__v4df)_mm256_sqrt_pd(__A),
3596 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003597}
3598
3599static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003600_mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3601 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3602 (__v4sf)_mm_sqrt_ps(__A),
3603 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003604}
3605
3606static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003607_mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3608 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3609 (__v4sf)_mm_sqrt_ps(__A),
3610 (__v4sf)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003611}
3612
3613static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003614_mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3615 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3616 (__v8sf)_mm256_sqrt_ps(__A),
3617 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003618}
3619
3620static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2eadf1b2016-10-29 19:02:10 +00003621_mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3622 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3623 (__v8sf)_mm256_sqrt_ps(__A),
3624 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003625}
3626
3627static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003628_mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3629 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3630 (__v2df)_mm_sub_pd(__A, __B),
3631 (__v2df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003632}
3633
3634static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003635_mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3636 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3637 (__v2df)_mm_sub_pd(__A, __B),
3638 (__v2df)_mm_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003639}
3640
3641static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003642_mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3643 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3644 (__v4df)_mm256_sub_pd(__A, __B),
3645 (__v4df)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003646}
3647
3648static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003649_mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3650 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3651 (__v4df)_mm256_sub_pd(__A, __B),
3652 (__v4df)_mm256_setzero_pd());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003653}
3654
3655static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003656_mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3657 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3658 (__v4sf)_mm_sub_ps(__A, __B),
3659 (__v4sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003660}
3661
3662static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003663_mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3664 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3665 (__v4sf)_mm_sub_ps(__A, __B),
3666 (__v4sf)_mm_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003667}
3668
3669static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003670_mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3671 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3672 (__v8sf)_mm256_sub_ps(__A, __B),
3673 (__v8sf)__W);
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003674}
3675
3676static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00003677_mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3678 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3679 (__v8sf)_mm256_sub_ps(__A, __B),
3680 (__v8sf)_mm256_setzero_ps());
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003681}
3682
3683static __inline__ __m128i __DEFAULT_FN_ATTRS
3684_mm_mask2_permutex2var_epi32 (__m128i __A, __m128i __I, __mmask8 __U,
3685 __m128i __B) {
3686 return (__m128i) __builtin_ia32_vpermi2vard128_mask ((__v4si) __A,
3687 (__v4si) __I
3688 /* idx */ ,
3689 (__v4si) __B,
3690 (__mmask8) __U);
3691}
3692
3693static __inline__ __m256i __DEFAULT_FN_ATTRS
3694_mm256_mask2_permutex2var_epi32 (__m256i __A, __m256i __I,
3695 __mmask8 __U, __m256i __B) {
3696 return (__m256i) __builtin_ia32_vpermi2vard256_mask ((__v8si) __A,
3697 (__v8si) __I
3698 /* idx */ ,
3699 (__v8si) __B,
3700 (__mmask8) __U);
3701}
3702
3703static __inline__ __m128d __DEFAULT_FN_ATTRS
3704_mm_mask2_permutex2var_pd (__m128d __A, __m128i __I, __mmask8 __U,
3705 __m128d __B) {
3706 return (__m128d) __builtin_ia32_vpermi2varpd128_mask ((__v2df) __A,
3707 (__v2di) __I
3708 /* idx */ ,
3709 (__v2df) __B,
3710 (__mmask8)
3711 __U);
3712}
3713
3714static __inline__ __m256d __DEFAULT_FN_ATTRS
3715_mm256_mask2_permutex2var_pd (__m256d __A, __m256i __I, __mmask8 __U,
3716 __m256d __B) {
3717 return (__m256d) __builtin_ia32_vpermi2varpd256_mask ((__v4df) __A,
3718 (__v4di) __I
3719 /* idx */ ,
3720 (__v4df) __B,
3721 (__mmask8)
3722 __U);
3723}
3724
3725static __inline__ __m128 __DEFAULT_FN_ATTRS
3726_mm_mask2_permutex2var_ps (__m128 __A, __m128i __I, __mmask8 __U,
3727 __m128 __B) {
3728 return (__m128) __builtin_ia32_vpermi2varps128_mask ((__v4sf) __A,
3729 (__v4si) __I
3730 /* idx */ ,
3731 (__v4sf) __B,
3732 (__mmask8) __U);
3733}
3734
3735static __inline__ __m256 __DEFAULT_FN_ATTRS
3736_mm256_mask2_permutex2var_ps (__m256 __A, __m256i __I, __mmask8 __U,
3737 __m256 __B) {
3738 return (__m256) __builtin_ia32_vpermi2varps256_mask ((__v8sf) __A,
3739 (__v8si) __I
3740 /* idx */ ,
3741 (__v8sf) __B,
3742 (__mmask8) __U);
3743}
3744
3745static __inline__ __m128i __DEFAULT_FN_ATTRS
3746_mm_mask2_permutex2var_epi64 (__m128i __A, __m128i __I, __mmask8 __U,
3747 __m128i __B) {
3748 return (__m128i) __builtin_ia32_vpermi2varq128_mask ((__v2di) __A,
3749 (__v2di) __I
3750 /* idx */ ,
3751 (__v2di) __B,
3752 (__mmask8) __U);
3753}
3754
3755static __inline__ __m256i __DEFAULT_FN_ATTRS
3756_mm256_mask2_permutex2var_epi64 (__m256i __A, __m256i __I,
3757 __mmask8 __U, __m256i __B) {
3758 return (__m256i) __builtin_ia32_vpermi2varq256_mask ((__v4di) __A,
3759 (__v4di) __I
3760 /* idx */ ,
3761 (__v4di) __B,
3762 (__mmask8) __U);
3763}
3764
3765static __inline__ __m128i __DEFAULT_FN_ATTRS
3766_mm_permutex2var_epi32 (__m128i __A, __m128i __I, __m128i __B) {
3767 return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
3768 /* idx */ ,
3769 (__v4si) __A,
3770 (__v4si) __B,
3771 (__mmask8) -1);
3772}
3773
3774static __inline__ __m128i __DEFAULT_FN_ATTRS
3775_mm_mask_permutex2var_epi32 (__m128i __A, __mmask8 __U, __m128i __I,
3776 __m128i __B) {
3777 return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
3778 /* idx */ ,
3779 (__v4si) __A,
3780 (__v4si) __B,
3781 (__mmask8) __U);
3782}
3783
3784static __inline__ __m128i __DEFAULT_FN_ATTRS
3785_mm_maskz_permutex2var_epi32 (__mmask8 __U, __m128i __A, __m128i __I,
3786 __m128i __B) {
3787 return (__m128i) __builtin_ia32_vpermt2vard128_maskz ((__v4si) __I
3788 /* idx */ ,
3789 (__v4si) __A,
3790 (__v4si) __B,
3791 (__mmask8)
3792 __U);
3793}
3794
3795static __inline__ __m256i __DEFAULT_FN_ATTRS
3796_mm256_permutex2var_epi32 (__m256i __A, __m256i __I, __m256i __B) {
3797 return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
3798 /* idx */ ,
3799 (__v8si) __A,
3800 (__v8si) __B,
3801 (__mmask8) -1);
3802}
3803
3804static __inline__ __m256i __DEFAULT_FN_ATTRS
3805_mm256_mask_permutex2var_epi32 (__m256i __A, __mmask8 __U, __m256i __I,
3806 __m256i __B) {
3807 return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
3808 /* idx */ ,
3809 (__v8si) __A,
3810 (__v8si) __B,
3811 (__mmask8) __U);
3812}
3813
3814static __inline__ __m256i __DEFAULT_FN_ATTRS
3815_mm256_maskz_permutex2var_epi32 (__mmask8 __U, __m256i __A,
3816 __m256i __I, __m256i __B) {
3817 return (__m256i) __builtin_ia32_vpermt2vard256_maskz ((__v8si) __I
3818 /* idx */ ,
3819 (__v8si) __A,
3820 (__v8si) __B,
3821 (__mmask8)
3822 __U);
3823}
3824
3825static __inline__ __m128d __DEFAULT_FN_ATTRS
3826_mm_permutex2var_pd (__m128d __A, __m128i __I, __m128d __B) {
3827 return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
3828 /* idx */ ,
3829 (__v2df) __A,
3830 (__v2df) __B,
3831 (__mmask8) -
3832 1);
3833}
3834
3835static __inline__ __m128d __DEFAULT_FN_ATTRS
3836_mm_mask_permutex2var_pd (__m128d __A, __mmask8 __U, __m128i __I,
3837 __m128d __B) {
3838 return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
3839 /* idx */ ,
3840 (__v2df) __A,
3841 (__v2df) __B,
3842 (__mmask8)
3843 __U);
3844}
3845
3846static __inline__ __m128d __DEFAULT_FN_ATTRS
3847_mm_maskz_permutex2var_pd (__mmask8 __U, __m128d __A, __m128i __I,
3848 __m128d __B) {
3849 return (__m128d) __builtin_ia32_vpermt2varpd128_maskz ((__v2di) __I
3850 /* idx */ ,
3851 (__v2df) __A,
3852 (__v2df) __B,
3853 (__mmask8)
3854 __U);
3855}
3856
3857static __inline__ __m256d __DEFAULT_FN_ATTRS
3858_mm256_permutex2var_pd (__m256d __A, __m256i __I, __m256d __B) {
3859 return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
3860 /* idx */ ,
3861 (__v4df) __A,
3862 (__v4df) __B,
3863 (__mmask8) -
3864 1);
3865}
3866
3867static __inline__ __m256d __DEFAULT_FN_ATTRS
3868_mm256_mask_permutex2var_pd (__m256d __A, __mmask8 __U, __m256i __I,
3869 __m256d __B) {
3870 return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
3871 /* idx */ ,
3872 (__v4df) __A,
3873 (__v4df) __B,
3874 (__mmask8)
3875 __U);
3876}
3877
3878static __inline__ __m256d __DEFAULT_FN_ATTRS
3879_mm256_maskz_permutex2var_pd (__mmask8 __U, __m256d __A, __m256i __I,
3880 __m256d __B) {
3881 return (__m256d) __builtin_ia32_vpermt2varpd256_maskz ((__v4di) __I
3882 /* idx */ ,
3883 (__v4df) __A,
3884 (__v4df) __B,
3885 (__mmask8)
3886 __U);
3887}
3888
3889static __inline__ __m128 __DEFAULT_FN_ATTRS
3890_mm_permutex2var_ps (__m128 __A, __m128i __I, __m128 __B) {
3891 return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
3892 /* idx */ ,
3893 (__v4sf) __A,
3894 (__v4sf) __B,
3895 (__mmask8) -1);
3896}
3897
3898static __inline__ __m128 __DEFAULT_FN_ATTRS
3899_mm_mask_permutex2var_ps (__m128 __A, __mmask8 __U, __m128i __I,
3900 __m128 __B) {
3901 return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
3902 /* idx */ ,
3903 (__v4sf) __A,
3904 (__v4sf) __B,
3905 (__mmask8) __U);
3906}
3907
3908static __inline__ __m128 __DEFAULT_FN_ATTRS
3909_mm_maskz_permutex2var_ps (__mmask8 __U, __m128 __A, __m128i __I,
3910 __m128 __B) {
3911 return (__m128) __builtin_ia32_vpermt2varps128_maskz ((__v4si) __I
3912 /* idx */ ,
3913 (__v4sf) __A,
3914 (__v4sf) __B,
3915 (__mmask8)
3916 __U);
3917}
3918
3919static __inline__ __m256 __DEFAULT_FN_ATTRS
3920_mm256_permutex2var_ps (__m256 __A, __m256i __I, __m256 __B) {
3921 return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
3922 /* idx */ ,
3923 (__v8sf) __A,
3924 (__v8sf) __B,
3925 (__mmask8) -1);
3926}
3927
3928static __inline__ __m256 __DEFAULT_FN_ATTRS
3929_mm256_mask_permutex2var_ps (__m256 __A, __mmask8 __U, __m256i __I,
3930 __m256 __B) {
3931 return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
3932 /* idx */ ,
3933 (__v8sf) __A,
3934 (__v8sf) __B,
3935 (__mmask8) __U);
3936}
3937
3938static __inline__ __m256 __DEFAULT_FN_ATTRS
3939_mm256_maskz_permutex2var_ps (__mmask8 __U, __m256 __A, __m256i __I,
3940 __m256 __B) {
3941 return (__m256) __builtin_ia32_vpermt2varps256_maskz ((__v8si) __I
3942 /* idx */ ,
3943 (__v8sf) __A,
3944 (__v8sf) __B,
3945 (__mmask8)
3946 __U);
3947}
3948
3949static __inline__ __m128i __DEFAULT_FN_ATTRS
3950_mm_permutex2var_epi64 (__m128i __A, __m128i __I, __m128i __B) {
3951 return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
3952 /* idx */ ,
3953 (__v2di) __A,
3954 (__v2di) __B,
3955 (__mmask8) -1);
3956}
3957
3958static __inline__ __m128i __DEFAULT_FN_ATTRS
3959_mm_mask_permutex2var_epi64 (__m128i __A, __mmask8 __U, __m128i __I,
3960 __m128i __B) {
3961 return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
3962 /* idx */ ,
3963 (__v2di) __A,
3964 (__v2di) __B,
3965 (__mmask8) __U);
3966}
3967
3968static __inline__ __m128i __DEFAULT_FN_ATTRS
3969_mm_maskz_permutex2var_epi64 (__mmask8 __U, __m128i __A, __m128i __I,
3970 __m128i __B) {
3971 return (__m128i) __builtin_ia32_vpermt2varq128_maskz ((__v2di) __I
3972 /* idx */ ,
3973 (__v2di) __A,
3974 (__v2di) __B,
3975 (__mmask8)
3976 __U);
3977}
3978
3979
3980static __inline__ __m256i __DEFAULT_FN_ATTRS
3981_mm256_permutex2var_epi64 (__m256i __A, __m256i __I, __m256i __B) {
3982 return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
3983 /* idx */ ,
3984 (__v4di) __A,
3985 (__v4di) __B,
3986 (__mmask8) -1);
3987}
3988
3989static __inline__ __m256i __DEFAULT_FN_ATTRS
3990_mm256_mask_permutex2var_epi64 (__m256i __A, __mmask8 __U, __m256i __I,
3991 __m256i __B) {
3992 return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
3993 /* idx */ ,
3994 (__v4di) __A,
3995 (__v4di) __B,
3996 (__mmask8) __U);
3997}
3998
3999static __inline__ __m256i __DEFAULT_FN_ATTRS
4000_mm256_maskz_permutex2var_epi64 (__mmask8 __U, __m256i __A,
4001 __m256i __I, __m256i __B) {
4002 return (__m256i) __builtin_ia32_vpermt2varq256_maskz ((__v4di) __I
4003 /* idx */ ,
4004 (__v4di) __A,
4005 (__v4di) __B,
4006 (__mmask8)
4007 __U);
4008}
4009
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004010static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004011_mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004012{
Craig Topper11dda922016-10-22 21:24:48 +00004013 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4014 (__v4si)_mm_cvtepi8_epi32(__A),
4015 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004016}
4017
4018static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004019_mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004020{
Craig Topper11dda922016-10-22 21:24:48 +00004021 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4022 (__v4si)_mm_cvtepi8_epi32(__A),
4023 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004024}
4025
4026static __inline__ __m256i __DEFAULT_FN_ATTRS
4027_mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4028{
Craig Topper11dda922016-10-22 21:24:48 +00004029 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4030 (__v8si)_mm256_cvtepi8_epi32(__A),
4031 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004032}
4033
4034static __inline__ __m256i __DEFAULT_FN_ATTRS
4035_mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
4036{
Craig Topper11dda922016-10-22 21:24:48 +00004037 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4038 (__v8si)_mm256_cvtepi8_epi32(__A),
4039 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004040}
4041
4042static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004043_mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004044{
Craig Topper11dda922016-10-22 21:24:48 +00004045 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4046 (__v2di)_mm_cvtepi8_epi64(__A),
4047 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004048}
4049
4050static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004051_mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004052{
Craig Topper11dda922016-10-22 21:24:48 +00004053 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4054 (__v2di)_mm_cvtepi8_epi64(__A),
4055 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004056}
4057
4058static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004059_mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004060{
Craig Topper11dda922016-10-22 21:24:48 +00004061 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4062 (__v4di)_mm256_cvtepi8_epi64(__A),
4063 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004064}
4065
4066static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004067_mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004068{
Craig Topper11dda922016-10-22 21:24:48 +00004069 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4070 (__v4di)_mm256_cvtepi8_epi64(__A),
4071 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004072}
4073
4074static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004075_mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004076{
Craig Topper11dda922016-10-22 21:24:48 +00004077 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4078 (__v2di)_mm_cvtepi32_epi64(__X),
4079 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004080}
4081
4082static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004083_mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004084{
Craig Topper11dda922016-10-22 21:24:48 +00004085 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4086 (__v2di)_mm_cvtepi32_epi64(__X),
4087 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004088}
4089
4090static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004091_mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004092{
Craig Topper11dda922016-10-22 21:24:48 +00004093 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4094 (__v4di)_mm256_cvtepi32_epi64(__X),
4095 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004096}
4097
4098static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004099_mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004100{
Craig Topper11dda922016-10-22 21:24:48 +00004101 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4102 (__v4di)_mm256_cvtepi32_epi64(__X),
4103 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004104}
4105
4106static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004107_mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004108{
Craig Topper11dda922016-10-22 21:24:48 +00004109 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4110 (__v4si)_mm_cvtepi16_epi32(__A),
4111 (__v4si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004112}
4113
4114static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004115_mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004116{
Craig Topper11dda922016-10-22 21:24:48 +00004117 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4118 (__v4si)_mm_cvtepi16_epi32(__A),
4119 (__v4si)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004120}
4121
4122static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004123_mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004124{
Craig Topper11dda922016-10-22 21:24:48 +00004125 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4126 (__v8si)_mm256_cvtepi16_epi32(__A),
4127 (__v8si)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004128}
4129
4130static __inline__ __m256i __DEFAULT_FN_ATTRS
4131_mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4132{
Craig Topper11dda922016-10-22 21:24:48 +00004133 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4134 (__v8si)_mm256_cvtepi16_epi32(__A),
4135 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004136}
4137
4138static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004139_mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004140{
Craig Topper11dda922016-10-22 21:24:48 +00004141 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4142 (__v2di)_mm_cvtepi16_epi64(__A),
4143 (__v2di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004144}
4145
4146static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004147_mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004148{
Craig Topper11dda922016-10-22 21:24:48 +00004149 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4150 (__v2di)_mm_cvtepi16_epi64(__A),
4151 (__v2di)_mm_setzero_si128());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004152}
4153
4154static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004155_mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004156{
Craig Topper11dda922016-10-22 21:24:48 +00004157 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4158 (__v4di)_mm256_cvtepi16_epi64(__A),
4159 (__v4di)__W);
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004160}
4161
4162static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004163_mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004164{
Craig Topper11dda922016-10-22 21:24:48 +00004165 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4166 (__v4di)_mm256_cvtepi16_epi64(__A),
4167 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004168}
4169
4170
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004171static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004172_mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004173{
Craig Topper11dda922016-10-22 21:24:48 +00004174 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4175 (__v4si)_mm_cvtepu8_epi32(__A),
4176 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004177}
4178
4179static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004180_mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004181{
Craig Topper11dda922016-10-22 21:24:48 +00004182 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4183 (__v4si)_mm_cvtepu8_epi32(__A),
4184 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004185}
4186
4187static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004188_mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004189{
Craig Topper11dda922016-10-22 21:24:48 +00004190 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4191 (__v8si)_mm256_cvtepu8_epi32(__A),
4192 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004193}
4194
4195static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004196_mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004197{
Craig Topper11dda922016-10-22 21:24:48 +00004198 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4199 (__v8si)_mm256_cvtepu8_epi32(__A),
4200 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004201}
4202
4203static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004204_mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004205{
Craig Topper11dda922016-10-22 21:24:48 +00004206 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4207 (__v2di)_mm_cvtepu8_epi64(__A),
4208 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004209}
4210
4211static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004212_mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004213{
Craig Topper11dda922016-10-22 21:24:48 +00004214 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4215 (__v2di)_mm_cvtepu8_epi64(__A),
4216 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004217}
4218
4219static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004220_mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004221{
Craig Topper11dda922016-10-22 21:24:48 +00004222 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4223 (__v4di)_mm256_cvtepu8_epi64(__A),
4224 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004225}
4226
4227static __inline__ __m256i __DEFAULT_FN_ATTRS
4228_mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4229{
Craig Topper11dda922016-10-22 21:24:48 +00004230 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4231 (__v4di)_mm256_cvtepu8_epi64(__A),
4232 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004233}
4234
4235static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004236_mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004237{
Craig Topper11dda922016-10-22 21:24:48 +00004238 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4239 (__v2di)_mm_cvtepu32_epi64(__X),
4240 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004241}
4242
4243static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004244_mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004245{
Craig Topper11dda922016-10-22 21:24:48 +00004246 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4247 (__v2di)_mm_cvtepu32_epi64(__X),
4248 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004249}
4250
4251static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004252_mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004253{
Craig Topper11dda922016-10-22 21:24:48 +00004254 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4255 (__v4di)_mm256_cvtepu32_epi64(__X),
4256 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004257}
4258
4259static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004260_mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004261{
Craig Topper11dda922016-10-22 21:24:48 +00004262 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4263 (__v4di)_mm256_cvtepu32_epi64(__X),
4264 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004265}
4266
4267static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004268_mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004269{
Craig Topper11dda922016-10-22 21:24:48 +00004270 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4271 (__v4si)_mm_cvtepu16_epi32(__A),
4272 (__v4si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004273}
4274
4275static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004276_mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004277{
Craig Topper11dda922016-10-22 21:24:48 +00004278 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4279 (__v4si)_mm_cvtepu16_epi32(__A),
4280 (__v4si)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004281}
4282
4283static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004284_mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004285{
Craig Topper11dda922016-10-22 21:24:48 +00004286 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4287 (__v8si)_mm256_cvtepu16_epi32(__A),
4288 (__v8si)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004289}
4290
4291static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004292_mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004293{
Craig Topper11dda922016-10-22 21:24:48 +00004294 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4295 (__v8si)_mm256_cvtepu16_epi32(__A),
4296 (__v8si)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004297}
4298
4299static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004300_mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004301{
Craig Topper11dda922016-10-22 21:24:48 +00004302 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4303 (__v2di)_mm_cvtepu16_epi64(__A),
4304 (__v2di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004305}
4306
4307static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004308_mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004309{
Craig Topper11dda922016-10-22 21:24:48 +00004310 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4311 (__v2di)_mm_cvtepu16_epi64(__A),
4312 (__v2di)_mm_setzero_si128());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004313}
4314
4315static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004316_mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004317{
Craig Topper11dda922016-10-22 21:24:48 +00004318 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4319 (__v4di)_mm256_cvtepu16_epi64(__A),
4320 (__v4di)__W);
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004321}
4322
4323static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper11dda922016-10-22 21:24:48 +00004324_mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004325{
Craig Topper11dda922016-10-22 21:24:48 +00004326 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4327 (__v4di)_mm256_cvtepu16_epi64(__A),
4328 (__v4di)_mm256_setzero_si256());
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004329}
4330
4331
Michael Zuckerman38a27272016-02-22 09:05:41 +00004332#define _mm_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004333 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4334 (__v4si)_mm_setzero_si128(), \
4335 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004336
4337#define _mm_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004338 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4339 (__v4si)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004340
4341#define _mm_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004342 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4343 (__v4si)_mm_setzero_si128(), \
4344 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004345
4346#define _mm256_rol_epi32(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004347 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4348 (__v8si)_mm256_setzero_si256(), \
4349 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004350
4351#define _mm256_mask_rol_epi32(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004352 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4353 (__v8si)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004354
4355#define _mm256_maskz_rol_epi32(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004356 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4357 (__v8si)_mm256_setzero_si256(), \
4358 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004359
Michael Zuckerman477e0a32016-02-22 09:42:57 +00004360#define _mm_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004361 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4362 (__v2di)_mm_setzero_di(), \
4363 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004364
4365#define _mm_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004366 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4367 (__v2di)(__m128i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004368
4369#define _mm_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004370 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4371 (__v2di)_mm_setzero_di(), \
4372 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004373
4374#define _mm256_rol_epi64(a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004375 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4376 (__v4di)_mm256_setzero_si256(), \
4377 (__mmask8)-1); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004378
4379#define _mm256_mask_rol_epi64(w, u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004380 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4381 (__v4di)(__m256i)(w), (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004382
4383#define _mm256_maskz_rol_epi64(u, a, b) __extension__ ({\
Craig Topperd2661882016-05-17 04:41:48 +00004384 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4385 (__v4di)_mm256_setzero_si256(), \
4386 (__mmask8)(u)); })
Michael Zuckerman38a27272016-02-22 09:05:41 +00004387
Michael Zuckerman0231f162016-02-23 13:41:13 +00004388static __inline__ __m128i __DEFAULT_FN_ATTRS
4389_mm_rolv_epi32 (__m128i __A, __m128i __B)
4390{
4391 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4392 (__v4si) __B,
4393 (__v4si)
4394 _mm_setzero_si128 (),
4395 (__mmask8) -1);
4396}
4397
4398static __inline__ __m128i __DEFAULT_FN_ATTRS
4399_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4400 __m128i __B)
4401{
4402 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4403 (__v4si) __B,
4404 (__v4si) __W,
4405 (__mmask8) __U);
4406}
4407
4408static __inline__ __m128i __DEFAULT_FN_ATTRS
4409_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4410{
4411 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4412 (__v4si) __B,
4413 (__v4si)
4414 _mm_setzero_si128 (),
4415 (__mmask8) __U);
4416}
4417
4418static __inline__ __m256i __DEFAULT_FN_ATTRS
4419_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4420{
4421 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4422 (__v8si) __B,
4423 (__v8si)
4424 _mm256_setzero_si256 (),
4425 (__mmask8) -1);
4426}
4427
4428static __inline__ __m256i __DEFAULT_FN_ATTRS
4429_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4430 __m256i __B)
4431{
4432 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4433 (__v8si) __B,
4434 (__v8si) __W,
4435 (__mmask8) __U);
4436}
4437
4438static __inline__ __m256i __DEFAULT_FN_ATTRS
4439_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4440{
4441 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4442 (__v8si) __B,
4443 (__v8si)
4444 _mm256_setzero_si256 (),
4445 (__mmask8) __U);
4446}
4447
4448static __inline__ __m128i __DEFAULT_FN_ATTRS
4449_mm_rolv_epi64 (__m128i __A, __m128i __B)
4450{
4451 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4452 (__v2di) __B,
4453 (__v2di)
4454 _mm_setzero_di (),
4455 (__mmask8) -1);
4456}
4457
4458static __inline__ __m128i __DEFAULT_FN_ATTRS
4459_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4460 __m128i __B)
4461{
4462 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4463 (__v2di) __B,
4464 (__v2di) __W,
4465 (__mmask8) __U);
4466}
4467
4468static __inline__ __m128i __DEFAULT_FN_ATTRS
4469_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4470{
4471 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4472 (__v2di) __B,
4473 (__v2di)
4474 _mm_setzero_di (),
4475 (__mmask8) __U);
4476}
4477
4478static __inline__ __m256i __DEFAULT_FN_ATTRS
4479_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4480{
4481 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4482 (__v4di) __B,
4483 (__v4di)
4484 _mm256_setzero_si256 (),
4485 (__mmask8) -1);
4486}
4487
4488static __inline__ __m256i __DEFAULT_FN_ATTRS
4489_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4490 __m256i __B)
4491{
4492 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4493 (__v4di) __B,
4494 (__v4di) __W,
4495 (__mmask8) __U);
4496}
4497
4498static __inline__ __m256i __DEFAULT_FN_ATTRS
4499_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4500{
4501 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4502 (__v4di) __B,
4503 (__v4di)
4504 _mm256_setzero_si256 (),
4505 (__mmask8) __U);
4506}
4507
Craig Topperd2661882016-05-17 04:41:48 +00004508#define _mm_ror_epi32(A, B) __extension__ ({ \
4509 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4510 (__v4si)_mm_setzero_si128(), \
4511 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004512
Craig Topperd2661882016-05-17 04:41:48 +00004513#define _mm_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4514 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4515 (__v4si)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004516
Craig Topperd2661882016-05-17 04:41:48 +00004517#define _mm_maskz_ror_epi32(U, A, B) __extension__ ({ \
4518 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4519 (__v4si)_mm_setzero_si128(), \
4520 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004521
Craig Topperd2661882016-05-17 04:41:48 +00004522#define _mm256_ror_epi32(A, B) __extension__ ({ \
4523 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4524 (__v8si)_mm256_setzero_si256(), \
4525 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004526
Craig Topperd2661882016-05-17 04:41:48 +00004527#define _mm256_mask_ror_epi32(W, U, A, B) __extension__ ({ \
4528 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4529 (__v8si)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004530
Craig Topperd2661882016-05-17 04:41:48 +00004531#define _mm256_maskz_ror_epi32(U, A, B) __extension__ ({ \
4532 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4533 (__v8si)_mm256_setzero_si256(), \
4534 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004535
Craig Topperd2661882016-05-17 04:41:48 +00004536#define _mm_ror_epi64(A, B) __extension__ ({ \
4537 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4538 (__v2di)_mm_setzero_di(), \
4539 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004540
Craig Topperd2661882016-05-17 04:41:48 +00004541#define _mm_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4542 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4543 (__v2di)(__m128i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004544
Craig Topperd2661882016-05-17 04:41:48 +00004545#define _mm_maskz_ror_epi64(U, A, B) __extension__ ({ \
4546 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
4547 (__v2di)_mm_setzero_di(), \
4548 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004549
Craig Topperd2661882016-05-17 04:41:48 +00004550#define _mm256_ror_epi64(A, B) __extension__ ({ \
4551 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4552 (__v4di)_mm256_setzero_si256(), \
4553 (__mmask8)-1); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004554
Craig Topperd2661882016-05-17 04:41:48 +00004555#define _mm256_mask_ror_epi64(W, U, A, B) __extension__ ({ \
4556 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4557 (__v4di)(__m256i)(W), (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004558
Craig Topperd2661882016-05-17 04:41:48 +00004559#define _mm256_maskz_ror_epi64(U, A, B) __extension__ ({ \
4560 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4561 (__v4di)_mm256_setzero_si256(), \
4562 (__mmask8)(U)); })
Michael Zuckerman0231f162016-02-23 13:41:13 +00004563
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004564static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004565_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004566{
Craig Topper66b2fd12016-10-31 04:30:51 +00004567 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4568 (__v4si)_mm_sll_epi32(__A, __B),
4569 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004570}
4571
4572static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004573_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004574{
Craig Topper66b2fd12016-10-31 04:30:51 +00004575 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4576 (__v4si)_mm_sll_epi32(__A, __B),
4577 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004578}
4579
4580static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004581_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004582{
Craig Topper66b2fd12016-10-31 04:30:51 +00004583 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4584 (__v8si)_mm256_sll_epi32(__A, __B),
4585 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004586}
4587
4588static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004589_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004590{
Craig Topper66b2fd12016-10-31 04:30:51 +00004591 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4592 (__v8si)_mm256_sll_epi32(__A, __B),
4593 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004594}
4595
4596static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004597_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004598{
Craig Topper66b2fd12016-10-31 04:30:51 +00004599 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4600 (__v4si)_mm_slli_epi32(__A, __B),
4601 (__v4si)__W);
4602}
4603
4604static __inline__ __m128i __DEFAULT_FN_ATTRS
4605_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4606{
4607 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4608 (__v4si)_mm_slli_epi32(__A, __B),
4609 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004610}
4611
4612static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004613_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004614{
Craig Topper66b2fd12016-10-31 04:30:51 +00004615 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4616 (__v8si)_mm256_slli_epi32(__A, __B),
4617 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004618}
4619
4620static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004621_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004622{
Craig Topper66b2fd12016-10-31 04:30:51 +00004623 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4624 (__v8si)_mm256_slli_epi32(__A, __B),
4625 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004626}
4627
Craig Topper66b2fd12016-10-31 04:30:51 +00004628static __inline__ __m128i __DEFAULT_FN_ATTRS
4629_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4630{
4631 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4632 (__v2di)_mm_sll_epi64(__A, __B),
4633 (__v2di)__W);
4634}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004635
Craig Topper66b2fd12016-10-31 04:30:51 +00004636static __inline__ __m128i __DEFAULT_FN_ATTRS
4637_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4638{
4639 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4640 (__v2di)_mm_sll_epi64(__A, __B),
4641 (__v2di)_mm_setzero_di());
4642}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004643
Craig Topper66b2fd12016-10-31 04:30:51 +00004644static __inline__ __m256i __DEFAULT_FN_ATTRS
4645_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4646{
4647 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4648 (__v4di)_mm256_sll_epi64(__A, __B),
4649 (__v4di)__W);
4650}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004651
Craig Topper66b2fd12016-10-31 04:30:51 +00004652static __inline__ __m256i __DEFAULT_FN_ATTRS
4653_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4654{
4655 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4656 (__v4di)_mm256_sll_epi64(__A, __B),
4657 (__v4di)_mm256_setzero_si256());
4658}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004659
Craig Topper66b2fd12016-10-31 04:30:51 +00004660static __inline__ __m128i __DEFAULT_FN_ATTRS
4661_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4662{
4663 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4664 (__v2di)_mm_slli_epi64(__A, __B),
4665 (__v2di)__W);
4666}
4667
4668static __inline__ __m128i __DEFAULT_FN_ATTRS
4669_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4670{
4671 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4672 (__v2di)_mm_slli_epi64(__A, __B),
4673 (__v2di)_mm_setzero_di());
4674}
4675
4676static __inline__ __m256i __DEFAULT_FN_ATTRS
4677_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4678{
4679 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4680 (__v4di)_mm256_slli_epi64(__A, __B),
4681 (__v4di)__W);
4682}
4683
4684static __inline__ __m256i __DEFAULT_FN_ATTRS
4685_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4686{
4687 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4688 (__v4di)_mm256_slli_epi64(__A, __B),
4689 (__v4di)_mm256_setzero_si256());
4690}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004691
Michael Zuckermane98cc742016-02-23 15:59:47 +00004692static __inline__ __m128i __DEFAULT_FN_ATTRS
4693_mm_rorv_epi32 (__m128i __A, __m128i __B)
4694{
4695 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4696 (__v4si) __B,
4697 (__v4si)
4698 _mm_setzero_si128 (),
4699 (__mmask8) -1);
4700}
4701
4702static __inline__ __m128i __DEFAULT_FN_ATTRS
4703_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4704 __m128i __B)
4705{
4706 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4707 (__v4si) __B,
4708 (__v4si) __W,
4709 (__mmask8) __U);
4710}
4711
4712static __inline__ __m128i __DEFAULT_FN_ATTRS
4713_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4714{
4715 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4716 (__v4si) __B,
4717 (__v4si)
4718 _mm_setzero_si128 (),
4719 (__mmask8) __U);
4720}
4721
4722static __inline__ __m256i __DEFAULT_FN_ATTRS
4723_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4724{
4725 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4726 (__v8si) __B,
4727 (__v8si)
4728 _mm256_setzero_si256 (),
4729 (__mmask8) -1);
4730}
4731
4732static __inline__ __m256i __DEFAULT_FN_ATTRS
4733_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4734 __m256i __B)
4735{
4736 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4737 (__v8si) __B,
4738 (__v8si) __W,
4739 (__mmask8) __U);
4740}
4741
4742static __inline__ __m256i __DEFAULT_FN_ATTRS
4743_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4744{
4745 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4746 (__v8si) __B,
4747 (__v8si)
4748 _mm256_setzero_si256 (),
4749 (__mmask8) __U);
4750}
4751
4752static __inline__ __m128i __DEFAULT_FN_ATTRS
4753_mm_rorv_epi64 (__m128i __A, __m128i __B)
4754{
4755 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4756 (__v2di) __B,
4757 (__v2di)
4758 _mm_setzero_di (),
4759 (__mmask8) -1);
4760}
4761
4762static __inline__ __m128i __DEFAULT_FN_ATTRS
4763_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4764 __m128i __B)
4765{
4766 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4767 (__v2di) __B,
4768 (__v2di) __W,
4769 (__mmask8) __U);
4770}
4771
4772static __inline__ __m128i __DEFAULT_FN_ATTRS
4773_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4774{
4775 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4776 (__v2di) __B,
4777 (__v2di)
4778 _mm_setzero_di (),
4779 (__mmask8) __U);
4780}
4781
4782static __inline__ __m256i __DEFAULT_FN_ATTRS
4783_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4784{
4785 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4786 (__v4di) __B,
4787 (__v4di)
4788 _mm256_setzero_si256 (),
4789 (__mmask8) -1);
4790}
4791
4792static __inline__ __m256i __DEFAULT_FN_ATTRS
4793_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4794 __m256i __B)
4795{
4796 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4797 (__v4di) __B,
4798 (__v4di) __W,
4799 (__mmask8) __U);
4800}
4801
4802static __inline__ __m256i __DEFAULT_FN_ATTRS
4803_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4804{
4805 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4806 (__v4di) __B,
4807 (__v4di)
4808 _mm256_setzero_si256 (),
4809 (__mmask8) __U);
4810}
4811
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004812static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004813_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004814{
Craig Topper66b2fd12016-10-31 04:30:51 +00004815 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4816 (__v2di)_mm_sllv_epi64(__X, __Y),
4817 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004818}
4819
4820static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004821_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004822{
Craig Topper66b2fd12016-10-31 04:30:51 +00004823 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4824 (__v2di)_mm_sllv_epi64(__X, __Y),
4825 (__v2di)_mm_setzero_di());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004826}
4827
4828static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004829_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004830{
Craig Topper66b2fd12016-10-31 04:30:51 +00004831 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4832 (__v4di)_mm256_sllv_epi64(__X, __Y),
4833 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004834}
4835
4836static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004837_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004838{
Craig Topper66b2fd12016-10-31 04:30:51 +00004839 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4840 (__v4di)_mm256_sllv_epi64(__X, __Y),
4841 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004842}
4843
4844static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004845_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004846{
Craig Topper66b2fd12016-10-31 04:30:51 +00004847 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4848 (__v4si)_mm_sllv_epi32(__X, __Y),
4849 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004850}
4851
4852static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004853_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004854{
Craig Topper66b2fd12016-10-31 04:30:51 +00004855 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4856 (__v4si)_mm_sllv_epi32(__X, __Y),
4857 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004858}
4859
4860static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004861_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004862{
Craig Topper66b2fd12016-10-31 04:30:51 +00004863 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4864 (__v8si)_mm256_sllv_epi32(__X, __Y),
4865 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004866}
4867
4868static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004869_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004870{
Craig Topper66b2fd12016-10-31 04:30:51 +00004871 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4872 (__v8si)_mm256_sllv_epi32(__X, __Y),
4873 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004874}
4875
4876static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004877_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004878{
Craig Topper66b2fd12016-10-31 04:30:51 +00004879 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4880 (__v2di)_mm_srlv_epi64(__X, __Y),
4881 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004882}
4883
4884static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004885_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004886{
Craig Topper66b2fd12016-10-31 04:30:51 +00004887 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4888 (__v2di)_mm_srlv_epi64(__X, __Y),
4889 (__v2di)_mm_setzero_di());
4890}
4891
4892static __inline__ __m256i __DEFAULT_FN_ATTRS
4893_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4894{
4895 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4896 (__v4di)_mm256_srlv_epi64(__X, __Y),
4897 (__v4di)__W);
4898}
4899
4900static __inline__ __m256i __DEFAULT_FN_ATTRS
4901_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4902{
4903 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4904 (__v4di)_mm256_srlv_epi64(__X, __Y),
4905 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004906}
4907
4908static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004909_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004910{
Craig Topper66b2fd12016-10-31 04:30:51 +00004911 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4912 (__v4si)_mm_srlv_epi32(__X, __Y),
4913 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004914}
4915
4916static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004917_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004918{
Craig Topper66b2fd12016-10-31 04:30:51 +00004919 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4920 (__v4si)_mm_srlv_epi32(__X, __Y),
4921 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004922}
4923
4924static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004925_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004926{
Craig Topper66b2fd12016-10-31 04:30:51 +00004927 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4928 (__v8si)_mm256_srlv_epi32(__X, __Y),
4929 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004930}
4931
4932static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004933_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004934{
Craig Topper66b2fd12016-10-31 04:30:51 +00004935 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4936 (__v8si)_mm256_srlv_epi32(__X, __Y),
4937 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004938}
4939
4940static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004941_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004942{
Craig Topper66b2fd12016-10-31 04:30:51 +00004943 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4944 (__v4si)_mm_srl_epi32(__A, __B),
4945 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004946}
4947
4948static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004949_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004950{
Craig Topper66b2fd12016-10-31 04:30:51 +00004951 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4952 (__v4si)_mm_srl_epi32(__A, __B),
4953 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004954}
4955
4956static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004957_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004958{
Craig Topper66b2fd12016-10-31 04:30:51 +00004959 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4960 (__v8si)_mm256_srl_epi32(__A, __B),
4961 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004962}
4963
4964static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004965_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004966{
Craig Topper66b2fd12016-10-31 04:30:51 +00004967 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4968 (__v8si)_mm256_srl_epi32(__A, __B),
4969 (__v8si)_mm256_setzero_si256());
4970}
4971
4972static __inline__ __m128i __DEFAULT_FN_ATTRS
4973_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4974{
4975 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4976 (__v4si)_mm_srli_epi32(__A, __B),
4977 (__v4si)__W);
4978}
4979
4980static __inline__ __m128i __DEFAULT_FN_ATTRS
4981_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4982{
4983 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4984 (__v4si)_mm_srli_epi32(__A, __B),
4985 (__v4si)_mm_setzero_si128());
4986}
4987
4988static __inline__ __m256i __DEFAULT_FN_ATTRS
4989_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4990{
4991 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4992 (__v8si)_mm256_srli_epi32(__A, __B),
4993 (__v8si)__W);
4994}
4995
4996static __inline__ __m256i __DEFAULT_FN_ATTRS
4997_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4998{
4999 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5000 (__v8si)_mm256_srli_epi32(__A, __B),
5001 (__v8si)_mm256_setzero_si256());
5002}
5003
5004static __inline__ __m128i __DEFAULT_FN_ATTRS
5005_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
5006{
5007 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5008 (__v2di)_mm_srl_epi64(__A, __B),
5009 (__v2di)__W);
5010}
5011
5012static __inline__ __m128i __DEFAULT_FN_ATTRS
5013_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
5014{
5015 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5016 (__v2di)_mm_srl_epi64(__A, __B),
5017 (__v2di)_mm_setzero_di());
5018}
5019
5020static __inline__ __m256i __DEFAULT_FN_ATTRS
5021_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
5022{
5023 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5024 (__v4di)_mm256_srl_epi64(__A, __B),
5025 (__v4di)__W);
5026}
5027
5028static __inline__ __m256i __DEFAULT_FN_ATTRS
5029_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
5030{
5031 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5032 (__v4di)_mm256_srl_epi64(__A, __B),
5033 (__v4di)_mm256_setzero_si256());
5034}
5035
5036static __inline__ __m128i __DEFAULT_FN_ATTRS
5037_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
5038{
5039 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5040 (__v2di)_mm_srli_epi64(__A, __B),
5041 (__v2di)__W);
5042}
5043
5044static __inline__ __m128i __DEFAULT_FN_ATTRS
5045_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
5046{
5047 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5048 (__v2di)_mm_srli_epi64(__A, __B),
5049 (__v2di)_mm_setzero_di());
5050}
5051
5052static __inline__ __m256i __DEFAULT_FN_ATTRS
5053_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
5054{
5055 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5056 (__v4di)_mm256_srli_epi64(__A, __B),
5057 (__v4di)__W);
5058}
5059
5060static __inline__ __m256i __DEFAULT_FN_ATTRS
5061_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
5062{
5063 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5064 (__v4di)_mm256_srli_epi64(__A, __B),
5065 (__v4di)_mm256_setzero_si256());
5066}
5067
5068static __inline__ __m128i __DEFAULT_FN_ATTRS
5069_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
5070{
5071 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5072 (__v4si)_mm_srav_epi32(__X, __Y),
5073 (__v4si)__W);
5074}
5075
5076static __inline__ __m128i __DEFAULT_FN_ATTRS
5077_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
5078{
5079 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
5080 (__v4si)_mm_srav_epi32(__X, __Y),
5081 (__v4si)_mm_setzero_si128());
5082}
5083
5084static __inline__ __m256i __DEFAULT_FN_ATTRS
5085_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
5086{
5087 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5088 (__v8si)_mm256_srav_epi32(__X, __Y),
5089 (__v8si)__W);
5090}
5091
5092static __inline__ __m256i __DEFAULT_FN_ATTRS
5093_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
5094{
5095 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
5096 (__v8si)_mm256_srav_epi32(__X, __Y),
5097 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005098}
5099
5100static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005101_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005102{
Craig Topper5e0709d2016-11-13 07:26:34 +00005103 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005104}
5105
5106static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005107_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005108{
Craig Topper5e0709d2016-11-13 07:26:34 +00005109 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5110 (__v2di)_mm_srav_epi64(__X, __Y),
5111 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005112}
5113
5114static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005115_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005116{
Craig Topper5e0709d2016-11-13 07:26:34 +00005117 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5118 (__v2di)_mm_srav_epi64(__X, __Y),
5119 (__v2di)_mm_setzero_di());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005120}
5121
5122static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005123_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005124{
Craig Topper5e0709d2016-11-13 07:26:34 +00005125 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005126}
5127
5128static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005129_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005130{
Craig Topper5e0709d2016-11-13 07:26:34 +00005131 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5132 (__v4di)_mm256_srav_epi64(__X, __Y),
5133 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005134}
5135
5136static __inline__ __m256i __DEFAULT_FN_ATTRS
5137_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5138{
Craig Topper5e0709d2016-11-13 07:26:34 +00005139 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5140 (__v4di)_mm256_srav_epi64(__X, __Y),
5141 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005142}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005143
Michael Zuckermane6542002016-05-23 08:01:48 +00005144static __inline__ __m128i __DEFAULT_FN_ATTRS
5145_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
5146{
Igor Bregeraadb8762016-06-08 13:59:20 +00005147 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5148 (__v4si) __A,
5149 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005150}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005151
Michael Zuckermane6542002016-05-23 08:01:48 +00005152static __inline__ __m128i __DEFAULT_FN_ATTRS
5153_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
5154{
Igor Bregeraadb8762016-06-08 13:59:20 +00005155 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5156 (__v4si) __A,
5157 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005158}
5159
5160
5161static __inline__ __m256i __DEFAULT_FN_ATTRS
5162_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
5163{
Igor Bregeraadb8762016-06-08 13:59:20 +00005164 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5165 (__v8si) __A,
5166 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005167}
5168
5169static __inline__ __m256i __DEFAULT_FN_ATTRS
5170_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
5171{
Igor Bregeraadb8762016-06-08 13:59:20 +00005172 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5173 (__v8si) __A,
5174 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005175}
5176
5177static __inline__ __m128i __DEFAULT_FN_ATTRS
5178_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5179{
5180 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5181 (__v4si) __W,
5182 (__mmask8)
5183 __U);
5184}
5185
5186static __inline__ __m128i __DEFAULT_FN_ATTRS
5187_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5188{
5189 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5190 (__v4si)
5191 _mm_setzero_si128 (),
5192 (__mmask8)
5193 __U);
5194}
5195
5196static __inline__ __m256i __DEFAULT_FN_ATTRS
5197_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5198{
5199 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5200 (__v8si) __W,
5201 (__mmask8)
5202 __U);
5203}
5204
5205static __inline__ __m256i __DEFAULT_FN_ATTRS
5206_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5207{
5208 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5209 (__v8si)
5210 _mm256_setzero_si256 (),
5211 (__mmask8)
5212 __U);
5213}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005214
5215static __inline__ void __DEFAULT_FN_ATTRS
5216_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5217{
5218 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5219 (__v4si) __A,
5220 (__mmask8) __U);
5221}
5222
5223static __inline__ void __DEFAULT_FN_ATTRS
5224_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5225{
5226 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5227 (__v8si) __A,
5228 (__mmask8) __U);
5229}
5230
5231static __inline__ __m128i __DEFAULT_FN_ATTRS
5232_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5233{
Igor Bregeraadb8762016-06-08 13:59:20 +00005234 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5235 (__v2di) __A,
5236 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005237}
5238
5239static __inline__ __m128i __DEFAULT_FN_ATTRS
5240_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5241{
Igor Bregeraadb8762016-06-08 13:59:20 +00005242 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5243 (__v2di) __A,
5244 (__v2di) _mm_setzero_di ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005245}
5246
5247static __inline__ __m256i __DEFAULT_FN_ATTRS
5248_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5249{
Igor Bregeraadb8762016-06-08 13:59:20 +00005250 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5251 (__v4di) __A,
5252 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005253}
5254
5255static __inline__ __m256i __DEFAULT_FN_ATTRS
5256_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5257{
Igor Bregeraadb8762016-06-08 13:59:20 +00005258 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5259 (__v4di) __A,
5260 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005261}
5262
5263static __inline__ __m128i __DEFAULT_FN_ATTRS
5264_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5265{
5266 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5267 (__v2di) __W,
5268 (__mmask8)
5269 __U);
5270}
5271
5272static __inline__ __m128i __DEFAULT_FN_ATTRS
5273_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5274{
5275 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5276 (__v2di)
5277 _mm_setzero_di (),
5278 (__mmask8)
5279 __U);
5280}
5281
5282static __inline__ __m256i __DEFAULT_FN_ATTRS
5283_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5284{
5285 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5286 (__v4di) __W,
5287 (__mmask8)
5288 __U);
5289}
5290
5291static __inline__ __m256i __DEFAULT_FN_ATTRS
5292_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5293{
5294 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5295 (__v4di)
5296 _mm256_setzero_si256 (),
5297 (__mmask8)
5298 __U);
5299}
5300
5301static __inline__ void __DEFAULT_FN_ATTRS
5302_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5303{
5304 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5305 (__v2di) __A,
5306 (__mmask8) __U);
5307}
5308
5309static __inline__ void __DEFAULT_FN_ATTRS
5310_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5311{
5312 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5313 (__v4di) __A,
5314 (__mmask8) __U);
5315}
5316
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005317static __inline__ __m128d __DEFAULT_FN_ATTRS
5318_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5319{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005320 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5321 (__v2df)_mm_movedup_pd(__A),
5322 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005323}
5324
5325static __inline__ __m128d __DEFAULT_FN_ATTRS
5326_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5327{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005328 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5329 (__v2df)_mm_movedup_pd(__A),
5330 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005331}
5332
5333static __inline__ __m256d __DEFAULT_FN_ATTRS
5334_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5335{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005336 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5337 (__v4df)_mm256_movedup_pd(__A),
5338 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005339}
5340
5341static __inline__ __m256d __DEFAULT_FN_ATTRS
5342_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5343{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005344 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5345 (__v4df)_mm256_movedup_pd(__A),
5346 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005347}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005348
Jina Nahias3ad702a2017-09-19 11:00:27 +00005349static __inline__ __m128i __DEFAULT_FN_ATTRS
5350_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5351{
5352 return (__m128i)__builtin_ia32_selectd_128(__M,
5353 (__v4si) _mm_set1_epi32(__A),
5354 (__v4si)__O);
5355}
Michael Zuckerman912be162016-03-07 08:29:10 +00005356
Jina Nahias3ad702a2017-09-19 11:00:27 +00005357static __inline__ __m128i __DEFAULT_FN_ATTRS
5358_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5359{
5360 return (__m128i)__builtin_ia32_selectd_128(__M,
5361 (__v4si) _mm_set1_epi32(__A),
5362 (__v4si)_mm_setzero_si128());
5363}
Michael Zuckerman912be162016-03-07 08:29:10 +00005364
Jina Nahias3ad702a2017-09-19 11:00:27 +00005365static __inline__ __m256i __DEFAULT_FN_ATTRS
5366_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5367{
5368 return (__m256i)__builtin_ia32_selectd_256(__M,
5369 (__v8si) _mm256_set1_epi32(__A),
5370 (__v8si)__O);
5371}
Michael Zuckerman912be162016-03-07 08:29:10 +00005372
Jina Nahias3ad702a2017-09-19 11:00:27 +00005373static __inline__ __m256i __DEFAULT_FN_ATTRS
5374_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5375{
5376 return (__m256i)__builtin_ia32_selectd_256(__M,
5377 (__v8si) _mm256_set1_epi32(__A),
5378 (__v8si)_mm256_setzero_si256());
5379}
Michael Zuckerman912be162016-03-07 08:29:10 +00005380
Michael Zuckerman912be162016-03-07 08:29:10 +00005381
Craig Topper45db56c2016-07-21 07:38:39 +00005382#ifdef __x86_64__
Michael Zuckerman912be162016-03-07 08:29:10 +00005383static __inline__ __m128i __DEFAULT_FN_ATTRS
5384_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5385{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005386 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005387 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005388 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005389}
5390
5391static __inline__ __m128i __DEFAULT_FN_ATTRS
5392_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5393{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005394 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005395 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005396 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005397}
5398
5399static __inline__ __m256i __DEFAULT_FN_ATTRS
5400_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5401{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005402 return (__m256i) __builtin_ia32_selectq_256(__M,
5403 (__v4di) _mm256_set1_epi64x(__A),
5404 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005405}
5406
5407static __inline__ __m256i __DEFAULT_FN_ATTRS
5408_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5409{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005410 return (__m256i) __builtin_ia32_selectq_256(__M,
5411 (__v4di) _mm256_set1_epi64x(__A),
5412 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005413}
Jina Nahias3ad702a2017-09-19 11:00:27 +00005414
Craig Topper45db56c2016-07-21 07:38:39 +00005415#endif
Michael Zuckermandef78752016-03-28 12:23:09 +00005416
Craig Topperd2661882016-05-17 04:41:48 +00005417#define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5418 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5419 (__v2df)(__m128d)(B), \
5420 (__v2di)(__m128i)(C), (int)(imm), \
5421 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005422
Craig Topperd2661882016-05-17 04:41:48 +00005423#define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5424 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5425 (__v2df)(__m128d)(B), \
5426 (__v2di)(__m128i)(C), (int)(imm), \
5427 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005428
Craig Topperd2661882016-05-17 04:41:48 +00005429#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5430 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5431 (__v2df)(__m128d)(B), \
5432 (__v2di)(__m128i)(C), \
5433 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005434
Craig Topperd2661882016-05-17 04:41:48 +00005435#define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
5436 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5437 (__v4df)(__m256d)(B), \
5438 (__v4di)(__m256i)(C), (int)(imm), \
5439 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005440
Craig Topperd2661882016-05-17 04:41:48 +00005441#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
5442 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5443 (__v4df)(__m256d)(B), \
5444 (__v4di)(__m256i)(C), (int)(imm), \
5445 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005446
Craig Topperd2661882016-05-17 04:41:48 +00005447#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
5448 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5449 (__v4df)(__m256d)(B), \
5450 (__v4di)(__m256i)(C), \
5451 (int)(imm), (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005452
Craig Topperd2661882016-05-17 04:41:48 +00005453#define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5454 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5455 (__v4sf)(__m128)(B), \
5456 (__v4si)(__m128i)(C), (int)(imm), \
5457 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005458
Craig Topperd2661882016-05-17 04:41:48 +00005459#define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5460 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5461 (__v4sf)(__m128)(B), \
5462 (__v4si)(__m128i)(C), (int)(imm), \
5463 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005464
Craig Topperd2661882016-05-17 04:41:48 +00005465#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5466 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5467 (__v4sf)(__m128)(B), \
5468 (__v4si)(__m128i)(C), (int)(imm), \
5469 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005470
Craig Topperd2661882016-05-17 04:41:48 +00005471#define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
5472 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5473 (__v8sf)(__m256)(B), \
5474 (__v8si)(__m256i)(C), (int)(imm), \
5475 (__mmask8)-1); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005476
Craig Topperd2661882016-05-17 04:41:48 +00005477#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
5478 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5479 (__v8sf)(__m256)(B), \
5480 (__v8si)(__m256i)(C), (int)(imm), \
5481 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005482
Craig Topperd2661882016-05-17 04:41:48 +00005483#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
5484 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5485 (__v8sf)(__m256)(B), \
5486 (__v8si)(__m256i)(C), (int)(imm), \
5487 (__mmask8)(U)); })
Michael Zuckermandef78752016-03-28 12:23:09 +00005488
5489static __inline__ __m128d __DEFAULT_FN_ATTRS
5490_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5491{
5492 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5493 (__v2df) __W,
5494 (__mmask8) __U);
5495}
5496
5497static __inline__ __m128d __DEFAULT_FN_ATTRS
5498_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5499{
5500 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5501 (__v2df)
5502 _mm_setzero_pd (),
5503 (__mmask8) __U);
5504}
5505
5506static __inline__ __m256d __DEFAULT_FN_ATTRS
5507_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5508{
5509 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5510 (__v4df) __W,
5511 (__mmask8) __U);
5512}
5513
5514static __inline__ __m256d __DEFAULT_FN_ATTRS
5515_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5516{
5517 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5518 (__v4df)
5519 _mm256_setzero_pd (),
5520 (__mmask8) __U);
5521}
5522
5523static __inline__ __m128 __DEFAULT_FN_ATTRS
5524_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5525{
5526 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5527 (__v4sf) __W,
5528 (__mmask8) __U);
5529}
5530
5531static __inline__ __m128 __DEFAULT_FN_ATTRS
5532_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5533{
5534 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5535 (__v4sf)
5536 _mm_setzero_ps (),
5537 (__mmask8) __U);
5538}
5539
5540static __inline__ __m256 __DEFAULT_FN_ATTRS
5541_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5542{
5543 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5544 (__v8sf) __W,
5545 (__mmask8) __U);
5546}
5547
5548static __inline__ __m256 __DEFAULT_FN_ATTRS
5549_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5550{
5551 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5552 (__v8sf)
5553 _mm256_setzero_ps (),
5554 (__mmask8) __U);
5555}
5556
5557static __inline__ __m128i __DEFAULT_FN_ATTRS
5558_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5559{
5560 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5561 (__v2di) __W,
5562 (__mmask8) __U);
5563}
5564
5565static __inline__ __m128i __DEFAULT_FN_ATTRS
5566_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5567{
5568 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5569 (__v2di)
5570 _mm_setzero_si128 (),
5571 (__mmask8) __U);
5572}
5573
5574static __inline__ __m256i __DEFAULT_FN_ATTRS
5575_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5576{
5577 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5578 (__v4di) __W,
5579 (__mmask8) __U);
5580}
5581
5582static __inline__ __m256i __DEFAULT_FN_ATTRS
5583_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5584{
5585 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5586 (__v4di)
5587 _mm256_setzero_si256 (),
5588 (__mmask8) __U);
5589}
5590
5591static __inline__ __m128i __DEFAULT_FN_ATTRS
5592_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5593{
5594 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5595 (__v4si) __W,
5596 (__mmask8) __U);
5597}
5598
5599static __inline__ __m128i __DEFAULT_FN_ATTRS
5600_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5601{
5602 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5603 (__v4si)
5604 _mm_setzero_si128 (),
5605 (__mmask8) __U);
5606}
5607
5608static __inline__ __m256i __DEFAULT_FN_ATTRS
5609_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5610{
5611 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5612 (__v8si) __W,
5613 (__mmask8) __U);
5614}
5615
5616static __inline__ __m256i __DEFAULT_FN_ATTRS
5617_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5618{
5619 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5620 (__v8si)
5621 _mm256_setzero_si256 (),
5622 (__mmask8) __U);
5623}
5624
5625static __inline__ __m128d __DEFAULT_FN_ATTRS
5626_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5627{
5628 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5629 (__v2df) __W,
5630 (__mmask8) __U);
5631}
5632
5633static __inline__ __m128d __DEFAULT_FN_ATTRS
5634_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5635{
5636 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5637 (__v2df)
5638 _mm_setzero_pd (),
5639 (__mmask8) __U);
5640}
5641
5642static __inline__ __m256d __DEFAULT_FN_ATTRS
5643_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5644{
5645 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5646 (__v4df) __W,
5647 (__mmask8) __U);
5648}
5649
5650static __inline__ __m256d __DEFAULT_FN_ATTRS
5651_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5652{
5653 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5654 (__v4df)
5655 _mm256_setzero_pd (),
5656 (__mmask8) __U);
5657}
5658
5659static __inline__ __m128 __DEFAULT_FN_ATTRS
5660_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5661{
5662 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5663 (__v4sf) __W,
5664 (__mmask8) __U);
5665}
5666
5667static __inline__ __m128 __DEFAULT_FN_ATTRS
5668_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5669{
5670 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5671 (__v4sf)
5672 _mm_setzero_ps (),
5673 (__mmask8) __U);
5674}
5675
5676static __inline__ __m256 __DEFAULT_FN_ATTRS
5677_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5678{
5679 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5680 (__v8sf) __W,
5681 (__mmask8) __U);
5682}
5683
5684static __inline__ __m256 __DEFAULT_FN_ATTRS
5685_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5686{
5687 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5688 (__v8sf)
5689 _mm256_setzero_ps (),
5690 (__mmask8) __U);
5691}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005692
5693static __inline__ void __DEFAULT_FN_ATTRS
5694_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5695{
5696 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5697 (__v2df) __A,
5698 (__mmask8) __U);
5699}
5700
5701static __inline__ void __DEFAULT_FN_ATTRS
5702_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5703{
5704 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5705 (__v4df) __A,
5706 (__mmask8) __U);
5707}
5708
5709static __inline__ void __DEFAULT_FN_ATTRS
5710_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5711{
5712 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5713 (__v4sf) __A,
5714 (__mmask8) __U);
5715}
5716
5717static __inline__ void __DEFAULT_FN_ATTRS
5718_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5719{
5720 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5721 (__v8sf) __A,
5722 (__mmask8) __U);
5723}
5724
5725static __inline__ void __DEFAULT_FN_ATTRS
5726_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5727{
5728 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5729 (__v2di) __A,
5730 (__mmask8) __U);
5731}
5732
5733static __inline__ void __DEFAULT_FN_ATTRS
5734_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5735{
5736 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5737 (__v4di) __A,
5738 (__mmask8) __U);
5739}
5740
5741static __inline__ void __DEFAULT_FN_ATTRS
5742_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5743{
5744 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5745 (__v4si) __A,
5746 (__mmask8) __U);
5747}
5748
5749static __inline__ void __DEFAULT_FN_ATTRS
5750_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5751{
5752 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5753 (__v8si) __A,
5754 (__mmask8) __U);
5755}
5756
5757static __inline__ void __DEFAULT_FN_ATTRS
5758_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5759{
5760 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5761 (__v2df) __A,
5762 (__mmask8) __U);
5763}
5764
5765static __inline__ void __DEFAULT_FN_ATTRS
5766_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5767{
5768 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5769 (__v4df) __A,
5770 (__mmask8) __U);
5771}
5772
5773static __inline__ void __DEFAULT_FN_ATTRS
5774_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5775{
5776 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5777 (__v4sf) __A,
5778 (__mmask8) __U);
5779}
5780
5781static __inline__ void __DEFAULT_FN_ATTRS
5782_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5783{
5784 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5785 (__v8sf) __A,
5786 (__mmask8) __U);
5787}
5788
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005789
5790static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005791_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005792{
Craig Topper79f53ca2016-06-23 06:36:42 +00005793 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5794 (__v2df)_mm_unpackhi_pd(__A, __B),
5795 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005796}
5797
5798static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005799_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005800{
Craig Topper79f53ca2016-06-23 06:36:42 +00005801 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5802 (__v2df)_mm_unpackhi_pd(__A, __B),
5803 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005804}
5805
5806static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005807_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005808{
Craig Topper79f53ca2016-06-23 06:36:42 +00005809 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5810 (__v4df)_mm256_unpackhi_pd(__A, __B),
5811 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005812}
5813
5814static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005815_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005816{
Craig Topper79f53ca2016-06-23 06:36:42 +00005817 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5818 (__v4df)_mm256_unpackhi_pd(__A, __B),
5819 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005820}
5821
5822static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005823_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005824{
Craig Topper79f53ca2016-06-23 06:36:42 +00005825 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5826 (__v4sf)_mm_unpackhi_ps(__A, __B),
5827 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005828}
5829
5830static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005831_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005832{
Craig Topper79f53ca2016-06-23 06:36:42 +00005833 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5834 (__v4sf)_mm_unpackhi_ps(__A, __B),
5835 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005836}
5837
5838static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005839_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005840{
Craig Topper79f53ca2016-06-23 06:36:42 +00005841 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5842 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5843 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005844}
5845
5846static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005847_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005848{
Craig Topper79f53ca2016-06-23 06:36:42 +00005849 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5850 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5851 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005852}
5853
5854static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005855_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005856{
Craig Topper79f53ca2016-06-23 06:36:42 +00005857 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5858 (__v2df)_mm_unpacklo_pd(__A, __B),
5859 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005860}
5861
5862static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005863_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005864{
Craig Topper79f53ca2016-06-23 06:36:42 +00005865 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5866 (__v2df)_mm_unpacklo_pd(__A, __B),
5867 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005868}
5869
5870static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005871_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005872{
Craig Topper79f53ca2016-06-23 06:36:42 +00005873 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5874 (__v4df)_mm256_unpacklo_pd(__A, __B),
5875 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005876}
5877
5878static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005879_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005880{
Craig Topper79f53ca2016-06-23 06:36:42 +00005881 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5882 (__v4df)_mm256_unpacklo_pd(__A, __B),
5883 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005884}
5885
5886static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005887_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005888{
Craig Topper79f53ca2016-06-23 06:36:42 +00005889 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5890 (__v4sf)_mm_unpacklo_ps(__A, __B),
5891 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005892}
5893
5894static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005895_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005896{
Craig Topper79f53ca2016-06-23 06:36:42 +00005897 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5898 (__v4sf)_mm_unpacklo_ps(__A, __B),
5899 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005900}
5901
5902static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005903_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005904{
Craig Topper79f53ca2016-06-23 06:36:42 +00005905 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5906 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5907 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005908}
5909
5910static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005911_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005912{
Craig Topper79f53ca2016-06-23 06:36:42 +00005913 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5914 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5915 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005916}
5917
5918static __inline__ __m128d __DEFAULT_FN_ATTRS
5919_mm_rcp14_pd (__m128d __A)
5920{
5921 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5922 (__v2df)
5923 _mm_setzero_pd (),
5924 (__mmask8) -1);
5925}
5926
5927static __inline__ __m128d __DEFAULT_FN_ATTRS
5928_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5929{
5930 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5931 (__v2df) __W,
5932 (__mmask8) __U);
5933}
5934
5935static __inline__ __m128d __DEFAULT_FN_ATTRS
5936_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5937{
5938 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5939 (__v2df)
5940 _mm_setzero_pd (),
5941 (__mmask8) __U);
5942}
5943
5944static __inline__ __m256d __DEFAULT_FN_ATTRS
5945_mm256_rcp14_pd (__m256d __A)
5946{
5947 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5948 (__v4df)
5949 _mm256_setzero_pd (),
5950 (__mmask8) -1);
5951}
5952
5953static __inline__ __m256d __DEFAULT_FN_ATTRS
5954_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5955{
5956 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5957 (__v4df) __W,
5958 (__mmask8) __U);
5959}
5960
5961static __inline__ __m256d __DEFAULT_FN_ATTRS
5962_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5963{
5964 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5965 (__v4df)
5966 _mm256_setzero_pd (),
5967 (__mmask8) __U);
5968}
5969
5970static __inline__ __m128 __DEFAULT_FN_ATTRS
5971_mm_rcp14_ps (__m128 __A)
5972{
5973 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5974 (__v4sf)
5975 _mm_setzero_ps (),
5976 (__mmask8) -1);
5977}
5978
5979static __inline__ __m128 __DEFAULT_FN_ATTRS
5980_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5981{
5982 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5983 (__v4sf) __W,
5984 (__mmask8) __U);
5985}
5986
5987static __inline__ __m128 __DEFAULT_FN_ATTRS
5988_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5989{
5990 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5991 (__v4sf)
5992 _mm_setzero_ps (),
5993 (__mmask8) __U);
5994}
5995
5996static __inline__ __m256 __DEFAULT_FN_ATTRS
5997_mm256_rcp14_ps (__m256 __A)
5998{
5999 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6000 (__v8sf)
6001 _mm256_setzero_ps (),
6002 (__mmask8) -1);
6003}
6004
6005static __inline__ __m256 __DEFAULT_FN_ATTRS
6006_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6007{
6008 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6009 (__v8sf) __W,
6010 (__mmask8) __U);
6011}
6012
6013static __inline__ __m256 __DEFAULT_FN_ATTRS
6014_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
6015{
6016 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6017 (__v8sf)
6018 _mm256_setzero_ps (),
6019 (__mmask8) __U);
6020}
6021
Craig Topperd2661882016-05-17 04:41:48 +00006022#define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006023 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6024 (__v2df)_mm_permute_pd((X), (C)), \
6025 (__v2df)(__m128d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006026
Craig Topperd2661882016-05-17 04:41:48 +00006027#define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006028 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6029 (__v2df)_mm_permute_pd((X), (C)), \
6030 (__v2df)_mm_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006031
Craig Topperd2661882016-05-17 04:41:48 +00006032#define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006033 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6034 (__v4df)_mm256_permute_pd((X), (C)), \
6035 (__v4df)(__m256d)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006036
Craig Topperd2661882016-05-17 04:41:48 +00006037#define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006038 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6039 (__v4df)_mm256_permute_pd((X), (C)), \
6040 (__v4df)_mm256_setzero_pd()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006041
Craig Topperd2661882016-05-17 04:41:48 +00006042#define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006043 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6044 (__v4sf)_mm_permute_ps((X), (C)), \
6045 (__v4sf)(__m128)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006046
Craig Topperd2661882016-05-17 04:41:48 +00006047#define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006048 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6049 (__v4sf)_mm_permute_ps((X), (C)), \
6050 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006051
Craig Topperd2661882016-05-17 04:41:48 +00006052#define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006053 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6054 (__v8sf)_mm256_permute_ps((X), (C)), \
6055 (__v8sf)(__m256)(W)); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006056
Craig Topperd2661882016-05-17 04:41:48 +00006057#define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
Craig Topperb3a44772016-07-02 05:36:43 +00006058 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6059 (__v8sf)_mm256_permute_ps((X), (C)), \
6060 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006061
6062static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006063_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006064{
Craig Topper5391c982016-12-10 20:27:39 +00006065 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6066 (__v2df)_mm_permutevar_pd(__A, __C),
6067 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006068}
6069
6070static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006071_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006072{
Craig Topper5391c982016-12-10 20:27:39 +00006073 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6074 (__v2df)_mm_permutevar_pd(__A, __C),
6075 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006076}
6077
6078static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006079_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006080{
Craig Topper5391c982016-12-10 20:27:39 +00006081 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6082 (__v4df)_mm256_permutevar_pd(__A, __C),
6083 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006084}
6085
6086static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006087_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006088{
Craig Topper5391c982016-12-10 20:27:39 +00006089 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6090 (__v4df)_mm256_permutevar_pd(__A, __C),
6091 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006092}
6093
6094static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006095_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006096{
Craig Topper5391c982016-12-10 20:27:39 +00006097 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6098 (__v4sf)_mm_permutevar_ps(__A, __C),
6099 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006100}
6101
6102static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006103_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006104{
Craig Topper5391c982016-12-10 20:27:39 +00006105 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6106 (__v4sf)_mm_permutevar_ps(__A, __C),
6107 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006108}
6109
6110static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006111_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006112{
Craig Topper5391c982016-12-10 20:27:39 +00006113 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6114 (__v8sf)_mm256_permutevar_ps(__A, __C),
6115 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006116}
6117
6118static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00006119_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006120{
Craig Topper5391c982016-12-10 20:27:39 +00006121 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6122 (__v8sf)_mm256_permutevar_ps(__A, __C),
6123 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006124}
6125
Michael Zuckerman07525092016-04-11 10:22:07 +00006126static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6127_mm_test_epi32_mask (__m128i __A, __m128i __B)
6128{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006129 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006130}
6131
6132static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6133_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6134{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006135 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6136 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006137}
6138
6139static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6140_mm256_test_epi32_mask (__m256i __A, __m256i __B)
6141{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006142 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
6143 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006144}
6145
6146static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6147_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6148{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006149 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6150 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006151}
6152
6153static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6154_mm_test_epi64_mask (__m128i __A, __m128i __B)
6155{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006156 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006157}
6158
6159static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6160_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6161{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006162 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6163 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006164}
6165
6166static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6167_mm256_test_epi64_mask (__m256i __A, __m256i __B)
6168{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006169 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
6170 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006171}
6172
6173static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6174_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6175{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006176 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6177 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006178}
6179
6180static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6181_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6182{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006183 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006184}
6185
6186static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6187_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6188{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006189 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
6190 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006191}
6192
6193static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6194_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6195{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006196 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6197 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006198}
6199
6200static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6201_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6202{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006203 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6204 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006205}
6206
6207static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6208_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6209{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006210 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006211}
6212
6213static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6214_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6215{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006216 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
6217 _mm_setzero_di());
Michael Zuckerman07525092016-04-11 10:22:07 +00006218}
6219
6220static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6221_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6222{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006223 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6224 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006225}
6226
6227static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6228_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6229{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006230 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6231 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006232}
6233
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006234static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006235_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006236{
Craig Topper79f53ca2016-06-23 06:36:42 +00006237 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6238 (__v4si)_mm_unpackhi_epi32(__A, __B),
6239 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006240}
6241
6242static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006243_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006244{
Craig Topper79f53ca2016-06-23 06:36:42 +00006245 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6246 (__v4si)_mm_unpackhi_epi32(__A, __B),
6247 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006248}
6249
6250static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006251_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006252{
Craig Topper79f53ca2016-06-23 06:36:42 +00006253 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6254 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6255 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006256}
6257
6258static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006259_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006260{
Craig Topper79f53ca2016-06-23 06:36:42 +00006261 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6262 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6263 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006264}
6265
6266static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006267_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006268{
Craig Topper79f53ca2016-06-23 06:36:42 +00006269 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6270 (__v2di)_mm_unpackhi_epi64(__A, __B),
6271 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006272}
6273
6274static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006275_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006276{
Craig Topper79f53ca2016-06-23 06:36:42 +00006277 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6278 (__v2di)_mm_unpackhi_epi64(__A, __B),
6279 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006280}
6281
6282static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006283_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006284{
Craig Topper79f53ca2016-06-23 06:36:42 +00006285 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6286 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6287 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006288}
6289
6290static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006291_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006292{
Craig Topper79f53ca2016-06-23 06:36:42 +00006293 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6294 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6295 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006296}
6297
6298static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006299_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006300{
Craig Topper79f53ca2016-06-23 06:36:42 +00006301 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6302 (__v4si)_mm_unpacklo_epi32(__A, __B),
6303 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006304}
6305
6306static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006307_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006308{
Craig Topper79f53ca2016-06-23 06:36:42 +00006309 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6310 (__v4si)_mm_unpacklo_epi32(__A, __B),
6311 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006312}
6313
6314static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006315_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006316{
Craig Topper79f53ca2016-06-23 06:36:42 +00006317 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6318 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6319 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006320}
6321
6322static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006323_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006324{
Craig Topper79f53ca2016-06-23 06:36:42 +00006325 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6326 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6327 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006328}
6329
6330static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006331_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006332{
Craig Topper79f53ca2016-06-23 06:36:42 +00006333 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6334 (__v2di)_mm_unpacklo_epi64(__A, __B),
6335 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006336}
6337
6338static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006339_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006340{
Craig Topper79f53ca2016-06-23 06:36:42 +00006341 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6342 (__v2di)_mm_unpacklo_epi64(__A, __B),
6343 (__v2di)_mm_setzero_di());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006344}
6345
6346static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006347_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006348{
Craig Topper79f53ca2016-06-23 06:36:42 +00006349 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6350 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6351 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006352}
6353
6354static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006355_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006356{
Craig Topper79f53ca2016-06-23 06:36:42 +00006357 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6358 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6359 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006360}
6361
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006362static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006363_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006364{
Craig Topper66b2fd12016-10-31 04:30:51 +00006365 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6366 (__v4si)_mm_sra_epi32(__A, __B),
6367 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006368}
6369
6370static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006371_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006372{
Craig Topper66b2fd12016-10-31 04:30:51 +00006373 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6374 (__v4si)_mm_sra_epi32(__A, __B),
6375 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006376}
6377
6378static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006379_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006380{
Craig Topper66b2fd12016-10-31 04:30:51 +00006381 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6382 (__v8si)_mm256_sra_epi32(__A, __B),
6383 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006384}
6385
6386static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006387_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006388{
Craig Topper66b2fd12016-10-31 04:30:51 +00006389 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6390 (__v8si)_mm256_sra_epi32(__A, __B),
6391 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006392}
6393
Craig Topper66b2fd12016-10-31 04:30:51 +00006394static __inline__ __m128i __DEFAULT_FN_ATTRS
6395_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6396{
6397 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6398 (__v4si)_mm_srai_epi32(__A, __B),
6399 (__v4si)__W);
6400}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006401
Craig Topper66b2fd12016-10-31 04:30:51 +00006402static __inline__ __m128i __DEFAULT_FN_ATTRS
6403_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6404{
6405 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6406 (__v4si)_mm_srai_epi32(__A, __B),
6407 (__v4si)_mm_setzero_si128());
6408}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006409
Craig Topper66b2fd12016-10-31 04:30:51 +00006410static __inline__ __m256i __DEFAULT_FN_ATTRS
6411_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6412{
6413 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6414 (__v8si)_mm256_srai_epi32(__A, __B),
6415 (__v8si)__W);
6416}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006417
Craig Topper66b2fd12016-10-31 04:30:51 +00006418static __inline__ __m256i __DEFAULT_FN_ATTRS
6419_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6420{
6421 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6422 (__v8si)_mm256_srai_epi32(__A, __B),
6423 (__v8si)_mm256_setzero_si256());
6424}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006425
6426static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006427_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006428{
Craig Topper1a441932016-11-12 07:16:59 +00006429 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006430}
6431
6432static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006433_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006434{
Craig Topper1a441932016-11-12 07:16:59 +00006435 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6436 (__v2di)_mm_sra_epi64(__A, __B), \
6437 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006438}
6439
6440static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006441_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006442{
Craig Topper1a441932016-11-12 07:16:59 +00006443 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6444 (__v2di)_mm_sra_epi64(__A, __B), \
6445 (__v2di)_mm_setzero_di());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006446}
6447
6448static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006449_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006450{
Craig Topper1a441932016-11-12 07:16:59 +00006451 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006452}
6453
6454static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006455_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006456{
Craig Topper1a441932016-11-12 07:16:59 +00006457 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6458 (__v4di)_mm256_sra_epi64(__A, __B), \
6459 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006460}
6461
6462static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006463_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006464{
Craig Topper1a441932016-11-12 07:16:59 +00006465 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6466 (__v4di)_mm256_sra_epi64(__A, __B), \
6467 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006468}
6469
Craig Topper1a441932016-11-12 07:16:59 +00006470static __inline__ __m128i __DEFAULT_FN_ATTRS
6471_mm_srai_epi64(__m128i __A, int __imm)
6472{
6473 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6474}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006475
Craig Topper1a441932016-11-12 07:16:59 +00006476static __inline__ __m128i __DEFAULT_FN_ATTRS
6477_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6478{
6479 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6480 (__v2di)_mm_srai_epi64(__A, __imm), \
6481 (__v2di)__W);
6482}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006483
Craig Topper1a441932016-11-12 07:16:59 +00006484static __inline__ __m128i __DEFAULT_FN_ATTRS
6485_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6486{
6487 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6488 (__v2di)_mm_srai_epi64(__A, __imm), \
6489 (__v2di)_mm_setzero_di());
6490}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006491
Craig Topper1a441932016-11-12 07:16:59 +00006492static __inline__ __m256i __DEFAULT_FN_ATTRS
6493_mm256_srai_epi64(__m256i __A, int __imm)
6494{
6495 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6496}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006497
Craig Topper1a441932016-11-12 07:16:59 +00006498static __inline__ __m256i __DEFAULT_FN_ATTRS
6499_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6500{
6501 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6502 (__v4di)_mm256_srai_epi64(__A, __imm), \
6503 (__v4di)__W);
6504}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006505
Craig Topper1a441932016-11-12 07:16:59 +00006506static __inline__ __m256i __DEFAULT_FN_ATTRS
6507_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6508{
6509 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6510 (__v4di)_mm256_srai_epi64(__A, __imm), \
6511 (__v4di)_mm256_setzero_si256());
6512}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006513
Craig Topperd2661882016-05-17 04:41:48 +00006514#define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6515 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6516 (__v4si)(__m128i)(B), \
6517 (__v4si)(__m128i)(C), (int)(imm), \
6518 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006519
Craig Topperd2661882016-05-17 04:41:48 +00006520#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6521 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6522 (__v4si)(__m128i)(B), \
6523 (__v4si)(__m128i)(C), (int)(imm), \
6524 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006525
Craig Topperd2661882016-05-17 04:41:48 +00006526#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6527 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6528 (__v4si)(__m128i)(B), \
6529 (__v4si)(__m128i)(C), (int)(imm), \
6530 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006531
Craig Topperd2661882016-05-17 04:41:48 +00006532#define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
6533 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6534 (__v8si)(__m256i)(B), \
6535 (__v8si)(__m256i)(C), (int)(imm), \
6536 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006537
Craig Topperd2661882016-05-17 04:41:48 +00006538#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
6539 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6540 (__v8si)(__m256i)(B), \
6541 (__v8si)(__m256i)(C), (int)(imm), \
6542 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006543
Craig Topperd2661882016-05-17 04:41:48 +00006544#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
6545 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6546 (__v8si)(__m256i)(B), \
6547 (__v8si)(__m256i)(C), (int)(imm), \
6548 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006549
Craig Topperd2661882016-05-17 04:41:48 +00006550#define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6551 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6552 (__v2di)(__m128i)(B), \
6553 (__v2di)(__m128i)(C), (int)(imm), \
6554 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006555
Craig Topperd2661882016-05-17 04:41:48 +00006556#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6557 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6558 (__v2di)(__m128i)(B), \
6559 (__v2di)(__m128i)(C), (int)(imm), \
6560 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006561
Craig Topperd2661882016-05-17 04:41:48 +00006562#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6563 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6564 (__v2di)(__m128i)(B), \
6565 (__v2di)(__m128i)(C), (int)(imm), \
6566 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006567
Craig Topperd2661882016-05-17 04:41:48 +00006568#define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
6569 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6570 (__v4di)(__m256i)(B), \
6571 (__v4di)(__m256i)(C), (int)(imm), \
6572 (__mmask8)-1); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006573
Craig Topperd2661882016-05-17 04:41:48 +00006574#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
6575 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6576 (__v4di)(__m256i)(B), \
6577 (__v4di)(__m256i)(C), (int)(imm), \
6578 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006579
Craig Topperd2661882016-05-17 04:41:48 +00006580#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
6581 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6582 (__v4di)(__m256i)(B), \
6583 (__v4di)(__m256i)(C), (int)(imm), \
6584 (__mmask8)(U)); })
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006585
6586
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006587
Craig Topperd2661882016-05-17 04:41:48 +00006588#define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006589 (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \
6590 (__v8sf)(__m256)(B), \
6591 0 + ((((imm) >> 0) & 0x1) * 4), \
6592 1 + ((((imm) >> 0) & 0x1) * 4), \
6593 2 + ((((imm) >> 0) & 0x1) * 4), \
6594 3 + ((((imm) >> 0) & 0x1) * 4), \
6595 8 + ((((imm) >> 1) & 0x1) * 4), \
6596 9 + ((((imm) >> 1) & 0x1) * 4), \
6597 10 + ((((imm) >> 1) & 0x1) * 4), \
6598 11 + ((((imm) >> 1) & 0x1) * 4)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006599
Craig Topperd2661882016-05-17 04:41:48 +00006600#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006601 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6602 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6603 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006604
Craig Topperd2661882016-05-17 04:41:48 +00006605#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006606 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6607 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
6608 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006609
Craig Topperd2661882016-05-17 04:41:48 +00006610#define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006611 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \
6612 (__v4df)(__m256d)(B), \
6613 0 + ((((imm) >> 0) & 0x1) * 2), \
6614 1 + ((((imm) >> 0) & 0x1) * 2), \
6615 4 + ((((imm) >> 1) & 0x1) * 2), \
6616 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006617
Craig Topperd2661882016-05-17 04:41:48 +00006618#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006619 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6620 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6621 (__v4df)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006622
Craig Topperd2661882016-05-17 04:41:48 +00006623#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006624 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6625 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
6626 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006627
Craig Topperd2661882016-05-17 04:41:48 +00006628#define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006629 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6630 (__v4di)(__m256i)(B), \
6631 0 + ((((imm) >> 0) & 0x1) * 2), \
6632 1 + ((((imm) >> 0) & 0x1) * 2), \
6633 4 + ((((imm) >> 1) & 0x1) * 2), \
6634 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006635
Craig Topperd2661882016-05-17 04:41:48 +00006636#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006637 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6638 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6639 (__v8si)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006640
Craig Topperd2661882016-05-17 04:41:48 +00006641#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006642 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6643 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
6644 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006645
Craig Topperd2661882016-05-17 04:41:48 +00006646#define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006647 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(A), \
6648 (__v4di)(__m256i)(B), \
6649 0 + ((((imm) >> 0) & 0x1) * 2), \
6650 1 + ((((imm) >> 0) & 0x1) * 2), \
6651 4 + ((((imm) >> 1) & 0x1) * 2), \
6652 5 + ((((imm) >> 1) & 0x1) * 2)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006653
Craig Topperd2661882016-05-17 04:41:48 +00006654#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006655 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6656 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6657 (__v4di)(__m256)(W)); })
6658
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006659
Craig Topperd2661882016-05-17 04:41:48 +00006660#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
Jina Nahiasdca97912017-11-13 09:15:31 +00006661 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6662 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
6663 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006664
Simon Pilgrim427154d2016-07-04 21:30:47 +00006665#define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6666 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6667 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6668 (__v2df)(__m128d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006669
Simon Pilgrim427154d2016-07-04 21:30:47 +00006670#define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6671 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6672 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
6673 (__v2df)_mm_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006674
Simon Pilgrim427154d2016-07-04 21:30:47 +00006675#define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
6676 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6677 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6678 (__v4df)(__m256d)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006679
Simon Pilgrim427154d2016-07-04 21:30:47 +00006680#define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
6681 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6682 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
6683 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006684
Simon Pilgrim427154d2016-07-04 21:30:47 +00006685#define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6686 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6687 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6688 (__v4sf)(__m128)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006689
Simon Pilgrim427154d2016-07-04 21:30:47 +00006690#define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6691 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6692 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
6693 (__v4sf)_mm_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006694
Simon Pilgrim427154d2016-07-04 21:30:47 +00006695#define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
6696 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6697 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6698 (__v8sf)(__m256)(W)); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006699
Simon Pilgrim427154d2016-07-04 21:30:47 +00006700#define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
6701 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6702 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
6703 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006704
6705static __inline__ __m128d __DEFAULT_FN_ATTRS
6706_mm_rsqrt14_pd (__m128d __A)
6707{
6708 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6709 (__v2df)
6710 _mm_setzero_pd (),
6711 (__mmask8) -1);
6712}
6713
6714static __inline__ __m128d __DEFAULT_FN_ATTRS
6715_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6716{
6717 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6718 (__v2df) __W,
6719 (__mmask8) __U);
6720}
6721
6722static __inline__ __m128d __DEFAULT_FN_ATTRS
6723_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6724{
6725 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6726 (__v2df)
6727 _mm_setzero_pd (),
6728 (__mmask8) __U);
6729}
6730
6731static __inline__ __m256d __DEFAULT_FN_ATTRS
6732_mm256_rsqrt14_pd (__m256d __A)
6733{
6734 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6735 (__v4df)
6736 _mm256_setzero_pd (),
6737 (__mmask8) -1);
6738}
6739
6740static __inline__ __m256d __DEFAULT_FN_ATTRS
6741_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6742{
6743 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6744 (__v4df) __W,
6745 (__mmask8) __U);
6746}
6747
6748static __inline__ __m256d __DEFAULT_FN_ATTRS
6749_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6750{
6751 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6752 (__v4df)
6753 _mm256_setzero_pd (),
6754 (__mmask8) __U);
6755}
6756
6757static __inline__ __m128 __DEFAULT_FN_ATTRS
6758_mm_rsqrt14_ps (__m128 __A)
6759{
6760 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6761 (__v4sf)
6762 _mm_setzero_ps (),
6763 (__mmask8) -1);
6764}
6765
6766static __inline__ __m128 __DEFAULT_FN_ATTRS
6767_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6768{
6769 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6770 (__v4sf) __W,
6771 (__mmask8) __U);
6772}
6773
6774static __inline__ __m128 __DEFAULT_FN_ATTRS
6775_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6776{
6777 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6778 (__v4sf)
6779 _mm_setzero_ps (),
6780 (__mmask8) __U);
6781}
6782
6783static __inline__ __m256 __DEFAULT_FN_ATTRS
6784_mm256_rsqrt14_ps (__m256 __A)
6785{
6786 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6787 (__v8sf)
6788 _mm256_setzero_ps (),
6789 (__mmask8) -1);
6790}
6791
6792static __inline__ __m256 __DEFAULT_FN_ATTRS
6793_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6794{
6795 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6796 (__v8sf) __W,
6797 (__mmask8) __U);
6798}
6799
6800static __inline__ __m256 __DEFAULT_FN_ATTRS
6801_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6802{
6803 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6804 (__v8sf)
6805 _mm256_setzero_ps (),
6806 (__mmask8) __U);
6807}
6808
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006809static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006810_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006811{
Craig Topper367c86d2017-01-18 02:17:10 +00006812 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6813 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006814}
6815
6816static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006817_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006818{
Craig Topper367c86d2017-01-18 02:17:10 +00006819 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6820 (__v8sf)_mm256_broadcast_f32x4(__A),
6821 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006822}
6823
6824static __inline__ __m256 __DEFAULT_FN_ATTRS
6825_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6826{
Craig Topper367c86d2017-01-18 02:17:10 +00006827 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6828 (__v8sf)_mm256_broadcast_f32x4(__A),
6829 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006830}
6831
6832static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006833_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006834{
Craig Topper367c86d2017-01-18 02:17:10 +00006835 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6836 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006837}
6838
6839static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006840_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006841{
Craig Topper367c86d2017-01-18 02:17:10 +00006842 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6843 (__v8si)_mm256_broadcast_i32x4(__A),
6844 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006845}
6846
6847static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006848_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006849{
Craig Topper367c86d2017-01-18 02:17:10 +00006850 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6851 (__v8si)_mm256_broadcast_i32x4(__A),
6852 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006853}
6854
6855static __inline__ __m256d __DEFAULT_FN_ATTRS
6856_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6857{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006858 return (__m256d)__builtin_ia32_selectpd_256(__M,
6859 (__v4df) _mm256_broadcastsd_pd(__A),
6860 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006861}
6862
6863static __inline__ __m256d __DEFAULT_FN_ATTRS
6864_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6865{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006866 return (__m256d)__builtin_ia32_selectpd_256(__M,
6867 (__v4df) _mm256_broadcastsd_pd(__A),
6868 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006869}
6870
6871static __inline__ __m128 __DEFAULT_FN_ATTRS
6872_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6873{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006874 return (__m128)__builtin_ia32_selectps_128(__M,
6875 (__v4sf) _mm_broadcastss_ps(__A),
6876 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006877}
6878
6879static __inline__ __m128 __DEFAULT_FN_ATTRS
6880_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6881{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006882 return (__m128)__builtin_ia32_selectps_128(__M,
6883 (__v4sf) _mm_broadcastss_ps(__A),
6884 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006885}
6886
6887static __inline__ __m256 __DEFAULT_FN_ATTRS
6888_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6889{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006890 return (__m256)__builtin_ia32_selectps_256(__M,
6891 (__v8sf) _mm256_broadcastss_ps(__A),
6892 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006893}
6894
6895static __inline__ __m256 __DEFAULT_FN_ATTRS
6896_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6897{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006898 return (__m256)__builtin_ia32_selectps_256(__M,
6899 (__v8sf) _mm256_broadcastss_ps(__A),
6900 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006901}
6902
6903static __inline__ __m128i __DEFAULT_FN_ATTRS
6904_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6905{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006906 return (__m128i)__builtin_ia32_selectd_128(__M,
6907 (__v4si) _mm_broadcastd_epi32(__A),
6908 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006909}
6910
6911static __inline__ __m128i __DEFAULT_FN_ATTRS
6912_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6913{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006914 return (__m128i)__builtin_ia32_selectd_128(__M,
6915 (__v4si) _mm_broadcastd_epi32(__A),
6916 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006917}
6918
6919static __inline__ __m256i __DEFAULT_FN_ATTRS
6920_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6921{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006922 return (__m256i)__builtin_ia32_selectd_256(__M,
6923 (__v8si) _mm256_broadcastd_epi32(__A),
6924 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006925}
6926
6927static __inline__ __m256i __DEFAULT_FN_ATTRS
6928_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6929{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006930 return (__m256i)__builtin_ia32_selectd_256(__M,
6931 (__v8si) _mm256_broadcastd_epi32(__A),
6932 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006933}
6934
6935static __inline__ __m128i __DEFAULT_FN_ATTRS
6936_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6937{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006938 return (__m128i)__builtin_ia32_selectq_128(__M,
6939 (__v2di) _mm_broadcastq_epi64(__A),
6940 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006941}
6942
6943static __inline__ __m128i __DEFAULT_FN_ATTRS
6944_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6945{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006946 return (__m128i)__builtin_ia32_selectq_128(__M,
6947 (__v2di) _mm_broadcastq_epi64(__A),
6948 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006949}
6950
6951static __inline__ __m256i __DEFAULT_FN_ATTRS
6952_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6953{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006954 return (__m256i)__builtin_ia32_selectq_256(__M,
6955 (__v4di) _mm256_broadcastq_epi64(__A),
6956 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006957}
6958
6959static __inline__ __m256i __DEFAULT_FN_ATTRS
6960_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6961{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006962 return (__m256i)__builtin_ia32_selectq_256(__M,
6963 (__v4di) _mm256_broadcastq_epi64(__A),
6964 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006965}
6966
Michael Zuckermane1680612016-04-13 15:02:04 +00006967static __inline__ __m128i __DEFAULT_FN_ATTRS
6968_mm_cvtsepi32_epi8 (__m128i __A)
6969{
6970 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6971 (__v16qi)_mm_undefined_si128(),
6972 (__mmask8) -1);
6973}
6974
6975static __inline__ __m128i __DEFAULT_FN_ATTRS
6976_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6977{
6978 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6979 (__v16qi) __O, __M);
6980}
6981
6982static __inline__ __m128i __DEFAULT_FN_ATTRS
6983_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6984{
6985 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6986 (__v16qi) _mm_setzero_si128 (),
6987 __M);
6988}
6989
6990static __inline__ void __DEFAULT_FN_ATTRS
6991_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6992{
6993 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6994}
6995
6996static __inline__ __m128i __DEFAULT_FN_ATTRS
6997_mm256_cvtsepi32_epi8 (__m256i __A)
6998{
6999 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7000 (__v16qi)_mm_undefined_si128(),
7001 (__mmask8) -1);
7002}
7003
7004static __inline__ __m128i __DEFAULT_FN_ATTRS
7005_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7006{
7007 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7008 (__v16qi) __O, __M);
7009}
7010
7011static __inline__ __m128i __DEFAULT_FN_ATTRS
7012_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
7013{
7014 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7015 (__v16qi) _mm_setzero_si128 (),
7016 __M);
7017}
7018
7019static __inline__ void __DEFAULT_FN_ATTRS
7020_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7021{
7022 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7023}
7024
7025static __inline__ __m128i __DEFAULT_FN_ATTRS
7026_mm_cvtsepi32_epi16 (__m128i __A)
7027{
7028 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7029 (__v8hi)_mm_setzero_si128 (),
7030 (__mmask8) -1);
7031}
7032
7033static __inline__ __m128i __DEFAULT_FN_ATTRS
7034_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7035{
7036 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7037 (__v8hi)__O,
7038 __M);
7039}
7040
7041static __inline__ __m128i __DEFAULT_FN_ATTRS
7042_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
7043{
7044 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7045 (__v8hi) _mm_setzero_si128 (),
7046 __M);
7047}
7048
7049static __inline__ void __DEFAULT_FN_ATTRS
7050_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7051{
7052 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7053}
7054
7055static __inline__ __m128i __DEFAULT_FN_ATTRS
7056_mm256_cvtsepi32_epi16 (__m256i __A)
7057{
7058 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7059 (__v8hi)_mm_undefined_si128(),
7060 (__mmask8) -1);
7061}
7062
7063static __inline__ __m128i __DEFAULT_FN_ATTRS
7064_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7065{
7066 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7067 (__v8hi) __O, __M);
7068}
7069
7070static __inline__ __m128i __DEFAULT_FN_ATTRS
7071_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
7072{
7073 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7074 (__v8hi) _mm_setzero_si128 (),
7075 __M);
7076}
7077
7078static __inline__ void __DEFAULT_FN_ATTRS
7079_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7080{
7081 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7082}
7083
7084static __inline__ __m128i __DEFAULT_FN_ATTRS
7085_mm_cvtsepi64_epi8 (__m128i __A)
7086{
7087 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7088 (__v16qi)_mm_undefined_si128(),
7089 (__mmask8) -1);
7090}
7091
7092static __inline__ __m128i __DEFAULT_FN_ATTRS
7093_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7094{
7095 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7096 (__v16qi) __O, __M);
7097}
7098
7099static __inline__ __m128i __DEFAULT_FN_ATTRS
7100_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
7101{
7102 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7103 (__v16qi) _mm_setzero_si128 (),
7104 __M);
7105}
7106
7107static __inline__ void __DEFAULT_FN_ATTRS
7108_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7109{
7110 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7111}
7112
7113static __inline__ __m128i __DEFAULT_FN_ATTRS
7114_mm256_cvtsepi64_epi8 (__m256i __A)
7115{
7116 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7117 (__v16qi)_mm_undefined_si128(),
7118 (__mmask8) -1);
7119}
7120
7121static __inline__ __m128i __DEFAULT_FN_ATTRS
7122_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7123{
7124 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7125 (__v16qi) __O, __M);
7126}
7127
7128static __inline__ __m128i __DEFAULT_FN_ATTRS
7129_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
7130{
7131 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7132 (__v16qi) _mm_setzero_si128 (),
7133 __M);
7134}
7135
7136static __inline__ void __DEFAULT_FN_ATTRS
7137_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7138{
7139 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7140}
7141
7142static __inline__ __m128i __DEFAULT_FN_ATTRS
7143_mm_cvtsepi64_epi32 (__m128i __A)
7144{
7145 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7146 (__v4si)_mm_undefined_si128(),
7147 (__mmask8) -1);
7148}
7149
7150static __inline__ __m128i __DEFAULT_FN_ATTRS
7151_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7152{
7153 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7154 (__v4si) __O, __M);
7155}
7156
7157static __inline__ __m128i __DEFAULT_FN_ATTRS
7158_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7159{
7160 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7161 (__v4si) _mm_setzero_si128 (),
7162 __M);
7163}
7164
7165static __inline__ void __DEFAULT_FN_ATTRS
7166_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7167{
7168 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7169}
7170
7171static __inline__ __m128i __DEFAULT_FN_ATTRS
7172_mm256_cvtsepi64_epi32 (__m256i __A)
7173{
7174 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7175 (__v4si)_mm_undefined_si128(),
7176 (__mmask8) -1);
7177}
7178
7179static __inline__ __m128i __DEFAULT_FN_ATTRS
7180_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7181{
7182 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7183 (__v4si)__O,
7184 __M);
7185}
7186
7187static __inline__ __m128i __DEFAULT_FN_ATTRS
7188_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7189{
7190 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7191 (__v4si) _mm_setzero_si128 (),
7192 __M);
7193}
7194
7195static __inline__ void __DEFAULT_FN_ATTRS
7196_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7197{
7198 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7199}
7200
7201static __inline__ __m128i __DEFAULT_FN_ATTRS
7202_mm_cvtsepi64_epi16 (__m128i __A)
7203{
7204 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7205 (__v8hi)_mm_undefined_si128(),
7206 (__mmask8) -1);
7207}
7208
7209static __inline__ __m128i __DEFAULT_FN_ATTRS
7210_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7211{
7212 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7213 (__v8hi) __O, __M);
7214}
7215
7216static __inline__ __m128i __DEFAULT_FN_ATTRS
7217_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7218{
7219 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7220 (__v8hi) _mm_setzero_si128 (),
7221 __M);
7222}
7223
7224static __inline__ void __DEFAULT_FN_ATTRS
7225_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7226{
7227 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7228}
7229
7230static __inline__ __m128i __DEFAULT_FN_ATTRS
7231_mm256_cvtsepi64_epi16 (__m256i __A)
7232{
7233 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7234 (__v8hi)_mm_undefined_si128(),
7235 (__mmask8) -1);
7236}
7237
7238static __inline__ __m128i __DEFAULT_FN_ATTRS
7239_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7240{
7241 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7242 (__v8hi) __O, __M);
7243}
7244
7245static __inline__ __m128i __DEFAULT_FN_ATTRS
7246_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7247{
7248 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7249 (__v8hi) _mm_setzero_si128 (),
7250 __M);
7251}
7252
7253static __inline__ void __DEFAULT_FN_ATTRS
7254_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7255{
7256 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7257}
7258
Michael Zuckermand8715312016-04-14 06:48:09 +00007259static __inline__ __m128i __DEFAULT_FN_ATTRS
7260_mm_cvtusepi32_epi8 (__m128i __A)
7261{
7262 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7263 (__v16qi)_mm_undefined_si128(),
7264 (__mmask8) -1);
7265}
7266
7267static __inline__ __m128i __DEFAULT_FN_ATTRS
7268_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7269{
7270 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7271 (__v16qi) __O,
7272 __M);
7273}
7274
7275static __inline__ __m128i __DEFAULT_FN_ATTRS
7276_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7277{
7278 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7279 (__v16qi) _mm_setzero_si128 (),
7280 __M);
7281}
7282
7283static __inline__ void __DEFAULT_FN_ATTRS
7284_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7285{
7286 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7287}
7288
7289static __inline__ __m128i __DEFAULT_FN_ATTRS
7290_mm256_cvtusepi32_epi8 (__m256i __A)
7291{
7292 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7293 (__v16qi)_mm_undefined_si128(),
7294 (__mmask8) -1);
7295}
7296
7297static __inline__ __m128i __DEFAULT_FN_ATTRS
7298_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7299{
7300 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7301 (__v16qi) __O,
7302 __M);
7303}
7304
7305static __inline__ __m128i __DEFAULT_FN_ATTRS
7306_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7307{
7308 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7309 (__v16qi) _mm_setzero_si128 (),
7310 __M);
7311}
7312
7313static __inline__ void __DEFAULT_FN_ATTRS
7314_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7315{
7316 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7317}
7318
7319static __inline__ __m128i __DEFAULT_FN_ATTRS
7320_mm_cvtusepi32_epi16 (__m128i __A)
7321{
7322 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7323 (__v8hi)_mm_undefined_si128(),
7324 (__mmask8) -1);
7325}
7326
7327static __inline__ __m128i __DEFAULT_FN_ATTRS
7328_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7329{
7330 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7331 (__v8hi) __O, __M);
7332}
7333
7334static __inline__ __m128i __DEFAULT_FN_ATTRS
7335_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7336{
7337 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7338 (__v8hi) _mm_setzero_si128 (),
7339 __M);
7340}
7341
7342static __inline__ void __DEFAULT_FN_ATTRS
7343_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7344{
7345 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7346}
7347
7348static __inline__ __m128i __DEFAULT_FN_ATTRS
7349_mm256_cvtusepi32_epi16 (__m256i __A)
7350{
7351 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7352 (__v8hi) _mm_undefined_si128(),
7353 (__mmask8) -1);
7354}
7355
7356static __inline__ __m128i __DEFAULT_FN_ATTRS
7357_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7358{
7359 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7360 (__v8hi) __O, __M);
7361}
7362
7363static __inline__ __m128i __DEFAULT_FN_ATTRS
7364_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7365{
7366 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7367 (__v8hi) _mm_setzero_si128 (),
7368 __M);
7369}
7370
7371static __inline__ void __DEFAULT_FN_ATTRS
7372_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7373{
7374 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7375}
7376
7377static __inline__ __m128i __DEFAULT_FN_ATTRS
7378_mm_cvtusepi64_epi8 (__m128i __A)
7379{
7380 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7381 (__v16qi)_mm_undefined_si128(),
7382 (__mmask8) -1);
7383}
7384
7385static __inline__ __m128i __DEFAULT_FN_ATTRS
7386_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7387{
7388 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7389 (__v16qi) __O,
7390 __M);
7391}
7392
7393static __inline__ __m128i __DEFAULT_FN_ATTRS
7394_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7395{
7396 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7397 (__v16qi) _mm_setzero_si128 (),
7398 __M);
7399}
7400
7401static __inline__ void __DEFAULT_FN_ATTRS
7402_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7403{
7404 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7405}
7406
7407static __inline__ __m128i __DEFAULT_FN_ATTRS
7408_mm256_cvtusepi64_epi8 (__m256i __A)
7409{
7410 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7411 (__v16qi)_mm_undefined_si128(),
7412 (__mmask8) -1);
7413}
7414
7415static __inline__ __m128i __DEFAULT_FN_ATTRS
7416_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7417{
7418 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7419 (__v16qi) __O,
7420 __M);
7421}
7422
7423static __inline__ __m128i __DEFAULT_FN_ATTRS
7424_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7425{
7426 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7427 (__v16qi) _mm_setzero_si128 (),
7428 __M);
7429}
7430
7431static __inline__ void __DEFAULT_FN_ATTRS
7432_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7433{
7434 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7435}
7436
7437static __inline__ __m128i __DEFAULT_FN_ATTRS
7438_mm_cvtusepi64_epi32 (__m128i __A)
7439{
7440 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7441 (__v4si)_mm_undefined_si128(),
7442 (__mmask8) -1);
7443}
7444
7445static __inline__ __m128i __DEFAULT_FN_ATTRS
7446_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7447{
7448 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7449 (__v4si) __O, __M);
7450}
7451
7452static __inline__ __m128i __DEFAULT_FN_ATTRS
7453_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7454{
7455 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7456 (__v4si) _mm_setzero_si128 (),
7457 __M);
7458}
7459
7460static __inline__ void __DEFAULT_FN_ATTRS
7461_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7462{
7463 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7464}
7465
7466static __inline__ __m128i __DEFAULT_FN_ATTRS
7467_mm256_cvtusepi64_epi32 (__m256i __A)
7468{
7469 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7470 (__v4si)_mm_undefined_si128(),
7471 (__mmask8) -1);
7472}
7473
7474static __inline__ __m128i __DEFAULT_FN_ATTRS
7475_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7476{
7477 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7478 (__v4si) __O, __M);
7479}
7480
7481static __inline__ __m128i __DEFAULT_FN_ATTRS
7482_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7483{
7484 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7485 (__v4si) _mm_setzero_si128 (),
7486 __M);
7487}
7488
7489static __inline__ void __DEFAULT_FN_ATTRS
7490_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7491{
7492 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7493}
7494
7495static __inline__ __m128i __DEFAULT_FN_ATTRS
7496_mm_cvtusepi64_epi16 (__m128i __A)
7497{
7498 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7499 (__v8hi)_mm_undefined_si128(),
7500 (__mmask8) -1);
7501}
7502
7503static __inline__ __m128i __DEFAULT_FN_ATTRS
7504_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7505{
7506 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7507 (__v8hi) __O, __M);
7508}
7509
7510static __inline__ __m128i __DEFAULT_FN_ATTRS
7511_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7512{
7513 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7514 (__v8hi) _mm_setzero_si128 (),
7515 __M);
7516}
7517
7518static __inline__ void __DEFAULT_FN_ATTRS
7519_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7520{
7521 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7522}
7523
7524static __inline__ __m128i __DEFAULT_FN_ATTRS
7525_mm256_cvtusepi64_epi16 (__m256i __A)
7526{
7527 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7528 (__v8hi)_mm_undefined_si128(),
7529 (__mmask8) -1);
7530}
7531
7532static __inline__ __m128i __DEFAULT_FN_ATTRS
7533_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7534{
7535 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7536 (__v8hi) __O, __M);
7537}
7538
7539static __inline__ __m128i __DEFAULT_FN_ATTRS
7540_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7541{
7542 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7543 (__v8hi) _mm_setzero_si128 (),
7544 __M);
7545}
7546
7547static __inline__ void __DEFAULT_FN_ATTRS
7548_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7549{
7550 return __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7551}
7552
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007553static __inline__ __m128i __DEFAULT_FN_ATTRS
7554_mm_cvtepi32_epi8 (__m128i __A)
7555{
7556 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7557 (__v16qi)_mm_undefined_si128(),
7558 (__mmask8) -1);
7559}
7560
7561static __inline__ __m128i __DEFAULT_FN_ATTRS
7562_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7563{
7564 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7565 (__v16qi) __O, __M);
7566}
7567
7568static __inline__ __m128i __DEFAULT_FN_ATTRS
7569_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7570{
7571 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7572 (__v16qi)
7573 _mm_setzero_si128 (),
7574 __M);
7575}
7576
7577static __inline__ void __DEFAULT_FN_ATTRS
7578_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7579{
7580 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7581}
7582
7583static __inline__ __m128i __DEFAULT_FN_ATTRS
7584_mm256_cvtepi32_epi8 (__m256i __A)
7585{
7586 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7587 (__v16qi)_mm_undefined_si128(),
7588 (__mmask8) -1);
7589}
7590
7591static __inline__ __m128i __DEFAULT_FN_ATTRS
7592_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7593{
7594 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7595 (__v16qi) __O, __M);
7596}
7597
7598static __inline__ __m128i __DEFAULT_FN_ATTRS
7599_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7600{
7601 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7602 (__v16qi) _mm_setzero_si128 (),
7603 __M);
7604}
7605
7606static __inline__ void __DEFAULT_FN_ATTRS
7607_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7608{
7609 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7610}
7611
7612static __inline__ __m128i __DEFAULT_FN_ATTRS
7613_mm_cvtepi32_epi16 (__m128i __A)
7614{
7615 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7616 (__v8hi) _mm_setzero_si128 (),
7617 (__mmask8) -1);
7618}
7619
7620static __inline__ __m128i __DEFAULT_FN_ATTRS
7621_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7622{
7623 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7624 (__v8hi) __O, __M);
7625}
7626
7627static __inline__ __m128i __DEFAULT_FN_ATTRS
7628_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7629{
7630 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7631 (__v8hi) _mm_setzero_si128 (),
7632 __M);
7633}
7634
7635static __inline__ void __DEFAULT_FN_ATTRS
7636_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7637{
7638 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7639}
7640
7641static __inline__ __m128i __DEFAULT_FN_ATTRS
7642_mm256_cvtepi32_epi16 (__m256i __A)
7643{
7644 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7645 (__v8hi)_mm_setzero_si128 (),
7646 (__mmask8) -1);
7647}
7648
7649static __inline__ __m128i __DEFAULT_FN_ATTRS
7650_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7651{
7652 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7653 (__v8hi) __O, __M);
7654}
7655
7656static __inline__ __m128i __DEFAULT_FN_ATTRS
7657_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7658{
7659 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7660 (__v8hi) _mm_setzero_si128 (),
7661 __M);
7662}
7663
7664static __inline__ void __DEFAULT_FN_ATTRS
7665_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7666{
7667 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7668}
7669
7670static __inline__ __m128i __DEFAULT_FN_ATTRS
7671_mm_cvtepi64_epi8 (__m128i __A)
7672{
7673 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7674 (__v16qi) _mm_undefined_si128(),
7675 (__mmask8) -1);
7676}
7677
7678static __inline__ __m128i __DEFAULT_FN_ATTRS
7679_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7680{
7681 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7682 (__v16qi) __O, __M);
7683}
7684
7685static __inline__ __m128i __DEFAULT_FN_ATTRS
7686_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7687{
7688 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7689 (__v16qi) _mm_setzero_si128 (),
7690 __M);
7691}
7692
7693static __inline__ void __DEFAULT_FN_ATTRS
7694_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7695{
7696 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7697}
7698
7699static __inline__ __m128i __DEFAULT_FN_ATTRS
7700_mm256_cvtepi64_epi8 (__m256i __A)
7701{
7702 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7703 (__v16qi) _mm_undefined_si128(),
7704 (__mmask8) -1);
7705}
7706
7707static __inline__ __m128i __DEFAULT_FN_ATTRS
7708_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7709{
7710 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7711 (__v16qi) __O, __M);
7712}
7713
7714static __inline__ __m128i __DEFAULT_FN_ATTRS
7715_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7716{
7717 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7718 (__v16qi) _mm_setzero_si128 (),
7719 __M);
7720}
7721
7722static __inline__ void __DEFAULT_FN_ATTRS
7723_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7724{
7725 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7726}
7727
7728static __inline__ __m128i __DEFAULT_FN_ATTRS
7729_mm_cvtepi64_epi32 (__m128i __A)
7730{
7731 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7732 (__v4si)_mm_undefined_si128(),
7733 (__mmask8) -1);
7734}
7735
7736static __inline__ __m128i __DEFAULT_FN_ATTRS
7737_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7738{
7739 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7740 (__v4si) __O, __M);
7741}
7742
7743static __inline__ __m128i __DEFAULT_FN_ATTRS
7744_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7745{
7746 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7747 (__v4si) _mm_setzero_si128 (),
7748 __M);
7749}
7750
7751static __inline__ void __DEFAULT_FN_ATTRS
7752_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7753{
7754 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7755}
7756
7757static __inline__ __m128i __DEFAULT_FN_ATTRS
7758_mm256_cvtepi64_epi32 (__m256i __A)
7759{
7760 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
7761 (__v4si) _mm_undefined_si128(),
7762 (__mmask8) -1);
7763}
7764
7765static __inline__ __m128i __DEFAULT_FN_ATTRS
7766_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7767{
7768 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
7769 (__v4si) __O, __M);
7770}
7771
7772static __inline__ __m128i __DEFAULT_FN_ATTRS
7773_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7774{
7775 return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
7776 (__v4si) _mm_setzero_si128 (),
7777 __M);
7778}
7779
7780static __inline__ void __DEFAULT_FN_ATTRS
7781_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7782{
7783 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7784}
7785
7786static __inline__ __m128i __DEFAULT_FN_ATTRS
7787_mm_cvtepi64_epi16 (__m128i __A)
7788{
7789 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7790 (__v8hi) _mm_undefined_si128(),
7791 (__mmask8) -1);
7792}
7793
7794static __inline__ __m128i __DEFAULT_FN_ATTRS
7795_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7796{
7797 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7798 (__v8hi)__O,
7799 __M);
7800}
7801
7802static __inline__ __m128i __DEFAULT_FN_ATTRS
7803_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7804{
7805 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7806 (__v8hi) _mm_setzero_si128 (),
7807 __M);
7808}
7809
7810static __inline__ void __DEFAULT_FN_ATTRS
7811_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7812{
7813 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7814}
7815
7816static __inline__ __m128i __DEFAULT_FN_ATTRS
7817_mm256_cvtepi64_epi16 (__m256i __A)
7818{
7819 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7820 (__v8hi)_mm_undefined_si128(),
7821 (__mmask8) -1);
7822}
7823
7824static __inline__ __m128i __DEFAULT_FN_ATTRS
7825_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7826{
7827 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7828 (__v8hi) __O, __M);
7829}
7830
7831static __inline__ __m128i __DEFAULT_FN_ATTRS
7832_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7833{
7834 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7835 (__v8hi) _mm_setzero_si128 (),
7836 __M);
7837}
7838
7839static __inline__ void __DEFAULT_FN_ATTRS
7840_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7841{
7842 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7843}
7844
Craig Topperd2661882016-05-17 04:41:48 +00007845#define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007846 (__m128)__builtin_shufflevector((__v8sf)(__m256)(A), \
7847 (__v8sf)_mm256_undefined_ps(), \
7848 ((imm) & 1) ? 4 : 0, \
7849 ((imm) & 1) ? 5 : 1, \
7850 ((imm) & 1) ? 6 : 2, \
7851 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007852
Craig Topperd2661882016-05-17 04:41:48 +00007853#define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007854 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7855 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7856 (__v4sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007857
Craig Topperd2661882016-05-17 04:41:48 +00007858#define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007859 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7860 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
7861 (__v4sf)_mm_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007862
Craig Topperd2661882016-05-17 04:41:48 +00007863#define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
Craig Topper93ffabd2016-10-31 04:30:56 +00007864 (__m128i)__builtin_shufflevector((__v8si)(__m256)(A), \
7865 (__v8si)_mm256_undefined_si256(), \
7866 ((imm) & 1) ? 4 : 0, \
7867 ((imm) & 1) ? 5 : 1, \
7868 ((imm) & 1) ? 6 : 2, \
7869 ((imm) & 1) ? 7 : 3); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007870
Craig Topperd2661882016-05-17 04:41:48 +00007871#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007872 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007873 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7874 (__v4si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007875
Craig Topperd2661882016-05-17 04:41:48 +00007876#define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
Craig Topper35072962016-10-31 05:49:11 +00007877 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007878 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
7879 (__v4si)_mm_setzero_si128()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007880
Craig Topperd2661882016-05-17 04:41:48 +00007881#define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007882 (__m256)__builtin_shufflevector((__v8sf)(A), \
7883 (__v8sf)_mm256_castps128_ps256((__m128)(B)), \
7884 ((imm) & 0x1) ? 0 : 8, \
7885 ((imm) & 0x1) ? 1 : 9, \
7886 ((imm) & 0x1) ? 2 : 10, \
7887 ((imm) & 0x1) ? 3 : 11, \
7888 ((imm) & 0x1) ? 8 : 4, \
7889 ((imm) & 0x1) ? 9 : 5, \
7890 ((imm) & 0x1) ? 10 : 6, \
7891 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007892
Craig Topperd2661882016-05-17 04:41:48 +00007893#define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007894 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7895 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7896 (__v8sf)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007897
Craig Topperd2661882016-05-17 04:41:48 +00007898#define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007899 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7900 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
7901 (__v8sf)_mm256_setzero_ps()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007902
Craig Topperd2661882016-05-17 04:41:48 +00007903#define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007904 (__m256i)__builtin_shufflevector((__v8si)(A), \
7905 (__v8si)_mm256_castsi128_si256((__m128i)(B)), \
7906 ((imm) & 0x1) ? 0 : 8, \
7907 ((imm) & 0x1) ? 1 : 9, \
7908 ((imm) & 0x1) ? 2 : 10, \
7909 ((imm) & 0x1) ? 3 : 11, \
7910 ((imm) & 0x1) ? 8 : 4, \
7911 ((imm) & 0x1) ? 9 : 5, \
7912 ((imm) & 0x1) ? 10 : 6, \
7913 ((imm) & 0x1) ? 11 : 7); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007914
Craig Topperd2661882016-05-17 04:41:48 +00007915#define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007916 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7917 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7918 (__v8si)(W)); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007919
Craig Topperd2661882016-05-17 04:41:48 +00007920#define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
Craig Topper08bf53f2016-11-01 05:47:56 +00007921 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7922 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
7923 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007924
Craig Topperd2661882016-05-17 04:41:48 +00007925#define _mm_getmant_pd(A, B, C) __extension__({\
7926 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7927 (int)(((C)<<2) | (B)), \
7928 (__v2df)_mm_setzero_pd(), \
7929 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007930
Craig Topperd2661882016-05-17 04:41:48 +00007931#define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
7932 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7933 (int)(((C)<<2) | (B)), \
7934 (__v2df)(__m128d)(W), \
7935 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007936
Craig Topperd2661882016-05-17 04:41:48 +00007937#define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
7938 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7939 (int)(((C)<<2) | (B)), \
7940 (__v2df)_mm_setzero_pd(), \
7941 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007942
Craig Topperd2661882016-05-17 04:41:48 +00007943#define _mm256_getmant_pd(A, B, C) __extension__ ({ \
7944 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7945 (int)(((C)<<2) | (B)), \
7946 (__v4df)_mm256_setzero_pd(), \
7947 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007948
Craig Topperd2661882016-05-17 04:41:48 +00007949#define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
7950 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7951 (int)(((C)<<2) | (B)), \
7952 (__v4df)(__m256d)(W), \
7953 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007954
Craig Topperd2661882016-05-17 04:41:48 +00007955#define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
7956 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7957 (int)(((C)<<2) | (B)), \
7958 (__v4df)_mm256_setzero_pd(), \
7959 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007960
Craig Topperd2661882016-05-17 04:41:48 +00007961#define _mm_getmant_ps(A, B, C) __extension__ ({ \
7962 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7963 (int)(((C)<<2) | (B)), \
7964 (__v4sf)_mm_setzero_ps(), \
7965 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007966
Craig Topperd2661882016-05-17 04:41:48 +00007967#define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7968 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7969 (int)(((C)<<2) | (B)), \
7970 (__v4sf)(__m128)(W), \
7971 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007972
Craig Topperd2661882016-05-17 04:41:48 +00007973#define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7974 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7975 (int)(((C)<<2) | (B)), \
7976 (__v4sf)_mm_setzero_ps(), \
7977 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007978
Craig Topperd2661882016-05-17 04:41:48 +00007979#define _mm256_getmant_ps(A, B, C) __extension__ ({ \
7980 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7981 (int)(((C)<<2) | (B)), \
7982 (__v8sf)_mm256_setzero_ps(), \
7983 (__mmask8)-1); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007984
Craig Topperd2661882016-05-17 04:41:48 +00007985#define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
7986 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7987 (int)(((C)<<2) | (B)), \
7988 (__v8sf)(__m256)(W), \
7989 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007990
Craig Topperd2661882016-05-17 04:41:48 +00007991#define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
7992 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7993 (int)(((C)<<2) | (B)), \
7994 (__v8sf)_mm256_setzero_ps(), \
7995 (__mmask8)(U)); })
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007996
Craig Topperd2661882016-05-17 04:41:48 +00007997#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
7998 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7999 (double const *)(addr), \
8000 (__v2di)(__m128i)(index), \
8001 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008002
Craig Topperd2661882016-05-17 04:41:48 +00008003#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8004 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
8005 (long long const *)(addr), \
8006 (__v2di)(__m128i)(index), \
8007 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008008
Craig Topperd2661882016-05-17 04:41:48 +00008009#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8010 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
8011 (double const *)(addr), \
8012 (__v4di)(__m256i)(index), \
8013 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008014
Craig Topperd2661882016-05-17 04:41:48 +00008015#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8016 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
8017 (long long const *)(addr), \
8018 (__v4di)(__m256i)(index), \
8019 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008020
Craig Topperd2661882016-05-17 04:41:48 +00008021#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8022 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
8023 (float const *)(addr), \
8024 (__v2di)(__m128i)(index), \
8025 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008026
Craig Topperd2661882016-05-17 04:41:48 +00008027#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8028 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
8029 (int const *)(addr), \
8030 (__v2di)(__m128i)(index), \
8031 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008032
Craig Topperd2661882016-05-17 04:41:48 +00008033#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8034 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
8035 (float const *)(addr), \
8036 (__v4di)(__m256i)(index), \
8037 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008038
Craig Topperd2661882016-05-17 04:41:48 +00008039#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8040 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
8041 (int const *)(addr), \
8042 (__v4di)(__m256i)(index), \
8043 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008044
Craig Topperd2661882016-05-17 04:41:48 +00008045#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8046 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
8047 (double const *)(addr), \
8048 (__v4si)(__m128i)(index), \
8049 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008050
Craig Topperd2661882016-05-17 04:41:48 +00008051#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8052 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
8053 (long long const *)(addr), \
8054 (__v4si)(__m128i)(index), \
8055 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008056
Craig Topperd2661882016-05-17 04:41:48 +00008057#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8058 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
8059 (double const *)(addr), \
8060 (__v4si)(__m128i)(index), \
8061 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008062
Craig Topperd2661882016-05-17 04:41:48 +00008063#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8064 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
8065 (long long const *)(addr), \
8066 (__v4si)(__m128i)(index), \
8067 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008068
Craig Topperd2661882016-05-17 04:41:48 +00008069#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8070 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
8071 (float const *)(addr), \
8072 (__v4si)(__m128i)(index), \
8073 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008074
Craig Topperd2661882016-05-17 04:41:48 +00008075#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8076 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
8077 (int const *)(addr), \
8078 (__v4si)(__m128i)(index), \
8079 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008080
Craig Topperd2661882016-05-17 04:41:48 +00008081#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8082 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
8083 (float const *)(addr), \
8084 (__v8si)(__m256i)(index), \
8085 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008086
Craig Topperd2661882016-05-17 04:41:48 +00008087#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8088 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
8089 (int const *)(addr), \
8090 (__v8si)(__m256i)(index), \
8091 (__mmask8)(mask), (int)(scale)); })
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00008092
Simon Pilgrim30db8112016-07-04 13:34:44 +00008093#define _mm256_permutex_pd(X, C) __extension__ ({ \
8094 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
8095 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008096 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8097 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008098
Simon Pilgrim30db8112016-07-04 13:34:44 +00008099#define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
8100 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8101 (__v4df)_mm256_permutex_pd((X), (C)), \
8102 (__v4df)(__m256d)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008103
Simon Pilgrim30db8112016-07-04 13:34:44 +00008104#define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
8105 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8106 (__v4df)_mm256_permutex_pd((X), (C)), \
8107 (__v4df)_mm256_setzero_pd()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008108
Simon Pilgrim30db8112016-07-04 13:34:44 +00008109#define _mm256_permutex_epi64(X, C) __extension__ ({ \
8110 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
8111 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00008112 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8113 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008114
Simon Pilgrim30db8112016-07-04 13:34:44 +00008115#define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
8116 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8117 (__v4di)_mm256_permutex_epi64((X), (C)), \
8118 (__v4di)(__m256i)(W)); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008119
Simon Pilgrim30db8112016-07-04 13:34:44 +00008120#define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
8121 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8122 (__v4di)_mm256_permutex_epi64((X), (C)), \
8123 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman8938e832016-04-25 05:32:35 +00008124
8125static __inline__ __m256d __DEFAULT_FN_ATTRS
8126_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
8127{
8128 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8129 (__v4di) __X,
8130 (__v4df) _mm256_undefined_si256 (),
8131 (__mmask8) -1);
8132}
8133
8134static __inline__ __m256d __DEFAULT_FN_ATTRS
8135_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
8136 __m256d __Y)
8137{
8138 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8139 (__v4di) __X,
8140 (__v4df) __W,
8141 (__mmask8) __U);
8142}
8143
8144static __inline__ __m256d __DEFAULT_FN_ATTRS
8145_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
8146{
8147 return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8148 (__v4di) __X,
8149 (__v4df) _mm256_setzero_pd (),
8150 (__mmask8) __U);
8151}
8152
8153static __inline__ __m256i __DEFAULT_FN_ATTRS
8154_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
8155{
8156 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8157 (__v4di) __X,
8158 (__v4di) _mm256_setzero_si256 (),
8159 (__mmask8) __M);
8160}
8161
8162static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00008163_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008164{
8165 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8166 (__v4di) __X,
8167 (__v4di) _mm256_undefined_si256 (),
8168 (__mmask8) -1);
8169}
8170
8171static __inline__ __m256i __DEFAULT_FN_ATTRS
8172_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
8173 __m256i __Y)
8174{
8175 return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8176 (__v4di) __X,
8177 (__v4di) __W,
8178 __M);
8179}
8180
8181static __inline__ __m256 __DEFAULT_FN_ATTRS
8182_mm256_mask_permutexvar_ps (__m256 __W, __mmask8 __U, __m256i __X,
8183 __m256 __Y)
8184{
8185 return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8186 (__v8si) __X,
8187 (__v8sf) __W,
8188 (__mmask8) __U);
8189}
8190
8191static __inline__ __m256 __DEFAULT_FN_ATTRS
8192_mm256_maskz_permutexvar_ps (__mmask8 __U, __m256i __X, __m256 __Y)
8193{
8194 return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8195 (__v8si) __X,
8196 (__v8sf) _mm256_setzero_ps (),
8197 (__mmask8) __U);
8198}
8199
8200static __inline__ __m256 __DEFAULT_FN_ATTRS
8201_mm256_permutexvar_ps (__m256i __X, __m256 __Y)
8202{
8203 return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8204 (__v8si) __X,
8205 (__v8sf) _mm256_undefined_si256 (),
8206 (__mmask8) -1);
8207}
8208
8209static __inline__ __m256i __DEFAULT_FN_ATTRS
8210_mm256_maskz_permutexvar_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
8211{
8212 return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8213 (__v8si) __X,
8214 (__v8si) _mm256_setzero_si256 (),
8215 __M);
8216}
8217
8218static __inline__ __m256i __DEFAULT_FN_ATTRS
8219_mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
8220 __m256i __Y)
8221{
8222 return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8223 (__v8si) __X,
8224 (__v8si) __W,
8225 (__mmask8) __M);
8226}
8227
8228static __inline__ __m256i __DEFAULT_FN_ATTRS
8229_mm256_permutexvar_epi32 (__m256i __X, __m256i __Y)
8230{
8231 return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8232 (__v8si) __X,
8233 (__v8si) _mm256_undefined_si256(),
8234 (__mmask8) -1);
8235}
8236
Craig Topperd2661882016-05-17 04:41:48 +00008237#define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008238 (__m128i)__builtin_shufflevector((__v4si)(__m128i)(B), \
8239 (__v4si)(__m128i)(A), \
8240 ((int)(imm) & 0x3) + 0, \
8241 ((int)(imm) & 0x3) + 1, \
8242 ((int)(imm) & 0x3) + 2, \
8243 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008244
Craig Topperd2661882016-05-17 04:41:48 +00008245#define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008246 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8247 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8248 (__v4si)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008249
Craig Topperd2661882016-05-17 04:41:48 +00008250#define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008251 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8252 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
8253 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008254
Craig Topperd2661882016-05-17 04:41:48 +00008255#define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008256 (__m256i)__builtin_shufflevector((__v8si)(__m256i)(B), \
8257 (__v8si)(__m256i)(A), \
8258 ((int)(imm) & 0x7) + 0, \
8259 ((int)(imm) & 0x7) + 1, \
8260 ((int)(imm) & 0x7) + 2, \
8261 ((int)(imm) & 0x7) + 3, \
8262 ((int)(imm) & 0x7) + 4, \
8263 ((int)(imm) & 0x7) + 5, \
8264 ((int)(imm) & 0x7) + 6, \
8265 ((int)(imm) & 0x7) + 7); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008266
Craig Topperd2661882016-05-17 04:41:48 +00008267#define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008268 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8269 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8270 (__v8si)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008271
Craig Topperd2661882016-05-17 04:41:48 +00008272#define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008273 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8274 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
8275 (__v8si)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008276
Craig Topperd2661882016-05-17 04:41:48 +00008277#define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008278 (__m128i)__builtin_shufflevector((__v2di)(__m128i)(B), \
8279 (__v2di)(__m128i)(A), \
8280 ((int)(imm) & 0x1) + 0, \
8281 ((int)(imm) & 0x1) + 1); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008282
Craig Topperd2661882016-05-17 04:41:48 +00008283#define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008284 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8285 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8286 (__v2di)(__m128i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008287
Craig Topperd2661882016-05-17 04:41:48 +00008288#define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008289 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8290 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
8291 (__v2di)_mm_setzero_di()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008292
Craig Topperd2661882016-05-17 04:41:48 +00008293#define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008294 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(B), \
8295 (__v4di)(__m256i)(A), \
8296 ((int)(imm) & 0x3) + 0, \
8297 ((int)(imm) & 0x3) + 1, \
8298 ((int)(imm) & 0x3) + 2, \
8299 ((int)(imm) & 0x3) + 3); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008300
Craig Topperd2661882016-05-17 04:41:48 +00008301#define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008302 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8303 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8304 (__v4di)(__m256i)(W)); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008305
Craig Topperd2661882016-05-17 04:41:48 +00008306#define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
Craig Topper6aefe002016-11-23 01:47:12 +00008307 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8308 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
8309 (__v4di)_mm256_setzero_si256()); })
Michael Zuckerman533e0652016-04-28 12:47:30 +00008310
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008311static __inline__ __m128 __DEFAULT_FN_ATTRS
8312_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8313{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008314 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8315 (__v4sf)_mm_movehdup_ps(__A),
8316 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008317}
8318
8319static __inline__ __m128 __DEFAULT_FN_ATTRS
8320_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8321{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008322 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8323 (__v4sf)_mm_movehdup_ps(__A),
8324 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008325}
8326
8327static __inline__ __m256 __DEFAULT_FN_ATTRS
8328_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8329{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008330 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8331 (__v8sf)_mm256_movehdup_ps(__A),
8332 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008333}
8334
8335static __inline__ __m256 __DEFAULT_FN_ATTRS
8336_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8337{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008338 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8339 (__v8sf)_mm256_movehdup_ps(__A),
8340 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008341}
8342
8343static __inline__ __m128 __DEFAULT_FN_ATTRS
8344_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8345{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008346 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8347 (__v4sf)_mm_moveldup_ps(__A),
8348 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008349}
8350
8351static __inline__ __m128 __DEFAULT_FN_ATTRS
8352_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8353{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008354 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8355 (__v4sf)_mm_moveldup_ps(__A),
8356 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008357}
8358
8359static __inline__ __m256 __DEFAULT_FN_ATTRS
8360_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8361{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008362 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8363 (__v8sf)_mm256_moveldup_ps(__A),
8364 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008365}
8366
8367static __inline__ __m256 __DEFAULT_FN_ATTRS
8368_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8369{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008370 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8371 (__v8sf)_mm256_moveldup_ps(__A),
8372 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008373}
8374
Craig Topperd2661882016-05-17 04:41:48 +00008375#define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008376 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8377 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8378 (__v8si)(__m256i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008379
Craig Topperd2661882016-05-17 04:41:48 +00008380#define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008381 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8382 (__v8si)_mm256_shuffle_epi32((A), (I)), \
8383 (__v8si)_mm256_setzero_si256()); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008384
Craig Topperd2661882016-05-17 04:41:48 +00008385#define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008386 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8387 (__v4si)_mm_shuffle_epi32((A), (I)), \
8388 (__v4si)(__m128i)(W)); })
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008389
Craig Topperd2661882016-05-17 04:41:48 +00008390#define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
Craig Topper7cc92632016-06-11 12:50:19 +00008391 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8392 (__v4si)_mm_shuffle_epi32((A), (I)), \
8393 (__v4si)_mm_setzero_si128()); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008394
8395static __inline__ __m128d __DEFAULT_FN_ATTRS
8396_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8397{
Igor Bregeraadb8762016-06-08 13:59:20 +00008398 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8399 (__v2df) __A,
8400 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008401}
8402
8403static __inline__ __m128d __DEFAULT_FN_ATTRS
8404_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8405{
Igor Bregeraadb8762016-06-08 13:59:20 +00008406 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8407 (__v2df) __A,
8408 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008409}
8410
8411static __inline__ __m256d __DEFAULT_FN_ATTRS
8412_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8413{
Igor Bregeraadb8762016-06-08 13:59:20 +00008414 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8415 (__v4df) __A,
8416 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008417}
8418
8419static __inline__ __m256d __DEFAULT_FN_ATTRS
8420_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8421{
Igor Bregeraadb8762016-06-08 13:59:20 +00008422 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8423 (__v4df) __A,
8424 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008425}
8426
8427static __inline__ __m128 __DEFAULT_FN_ATTRS
8428_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8429{
Igor Bregeraadb8762016-06-08 13:59:20 +00008430 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8431 (__v4sf) __A,
8432 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008433}
8434
8435static __inline__ __m128 __DEFAULT_FN_ATTRS
8436_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8437{
Igor Bregeraadb8762016-06-08 13:59:20 +00008438 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8439 (__v4sf) __A,
8440 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008441}
8442
8443static __inline__ __m256 __DEFAULT_FN_ATTRS
8444_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8445{
Igor Bregeraadb8762016-06-08 13:59:20 +00008446 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8447 (__v8sf) __A,
8448 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008449}
8450
8451static __inline__ __m256 __DEFAULT_FN_ATTRS
8452_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8453{
Igor Bregeraadb8762016-06-08 13:59:20 +00008454 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8455 (__v8sf) __A,
8456 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008457}
8458
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008459static __inline__ __m128 __DEFAULT_FN_ATTRS
8460_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8461{
8462 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8463 (__v4sf) __W,
8464 (__mmask8) __U);
8465}
8466
8467static __inline__ __m128 __DEFAULT_FN_ATTRS
8468_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8469{
8470 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8471 (__v4sf)
8472 _mm_setzero_ps (),
8473 (__mmask8) __U);
8474}
8475
8476static __inline__ __m256 __DEFAULT_FN_ATTRS
8477_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8478{
8479 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8480 (__v8sf) __W,
8481 (__mmask8) __U);
8482}
8483
8484static __inline__ __m256 __DEFAULT_FN_ATTRS
8485_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8486{
8487 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8488 (__v8sf)
8489 _mm256_setzero_ps (),
8490 (__mmask8) __U);
8491}
8492
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008493static __inline __m128i __DEFAULT_FN_ATTRS
8494_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8495{
8496 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8497 (__v8hi) __W,
8498 (__mmask8) __U);
8499}
8500
8501static __inline __m128i __DEFAULT_FN_ATTRS
8502_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8503{
8504 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8505 (__v8hi) _mm_setzero_si128 (),
8506 (__mmask8) __U);
8507}
8508
8509#define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008510 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8511 (__v8hi)(__m128i)(W), \
8512 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008513
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008514#define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008515 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8516 (__v8hi)_mm_setzero_si128(), \
8517 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008518
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008519static __inline __m128i __DEFAULT_FN_ATTRS
8520_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8521{
8522 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8523 (__v8hi) __W,
8524 (__mmask8) __U);
8525}
8526
8527static __inline __m128i __DEFAULT_FN_ATTRS
8528_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8529{
8530 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8531 (__v8hi) _mm_setzero_si128(),
8532 (__mmask8) __U);
8533}
8534#define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008535 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8536 (__v8hi)(__m128i)(W), \
8537 (__mmask8)(U)); })
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008538
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008539#define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
Craig Topperd2661882016-05-17 04:41:48 +00008540 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8541 (__v8hi)_mm_setzero_si128(), \
8542 (__mmask8)(U)); })
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008543
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008544
Michael Kupersteine45af542015-06-30 13:36:19 +00008545#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008546
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008547#endif /* __AVX512VLINTRIN_H */