blob: d1e81528cdee3018632bd9a58a969508cb5515d7 [file] [log] [blame]
Robert Khasanovb9f3a912014-10-08 17:18:13 +00001/*===---- avx512vlintrin.h - AVX512VL intrinsics ---------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512vlintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512VLINTRIN_H
29#define __AVX512VLINTRIN_H
30
Michael Kupersteine45af542015-06-30 13:36:19 +000031#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl")))
Eric Christopher4d1851682015-06-17 07:09:20 +000032
Robert Khasanovb9f3a912014-10-08 17:18:13 +000033/* Integer compare */
34
Craig Topper57f96ac2017-11-06 21:00:49 +000035#define _mm_cmpeq_epi32_mask(A, B) \
36 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
37#define _mm_mask_cmpeq_epi32_mask(k, A, B) \
38 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
39#define _mm_cmpge_epi32_mask(A, B) \
40 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
41#define _mm_mask_cmpge_epi32_mask(k, A, B) \
42 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
43#define _mm_cmpgt_epi32_mask(A, B) \
44 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
45#define _mm_mask_cmpgt_epi32_mask(k, A, B) \
46 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
47#define _mm_cmple_epi32_mask(A, B) \
48 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
49#define _mm_mask_cmple_epi32_mask(k, A, B) \
50 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
51#define _mm_cmplt_epi32_mask(A, B) \
52 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
53#define _mm_mask_cmplt_epi32_mask(k, A, B) \
54 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
55#define _mm_cmpneq_epi32_mask(A, B) \
56 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
57#define _mm_mask_cmpneq_epi32_mask(k, A, B) \
58 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000059
Craig Topper57f96ac2017-11-06 21:00:49 +000060#define _mm256_cmpeq_epi32_mask(A, B) \
61 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
62#define _mm256_mask_cmpeq_epi32_mask(k, A, B) \
63 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
64#define _mm256_cmpge_epi32_mask(A, B) \
65 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
66#define _mm256_mask_cmpge_epi32_mask(k, A, B) \
67 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
68#define _mm256_cmpgt_epi32_mask(A, B) \
69 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
70#define _mm256_mask_cmpgt_epi32_mask(k, A, B) \
71 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
72#define _mm256_cmple_epi32_mask(A, B) \
73 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
74#define _mm256_mask_cmple_epi32_mask(k, A, B) \
75 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
76#define _mm256_cmplt_epi32_mask(A, B) \
77 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
78#define _mm256_mask_cmplt_epi32_mask(k, A, B) \
79 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
80#define _mm256_cmpneq_epi32_mask(A, B) \
81 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
82#define _mm256_mask_cmpneq_epi32_mask(k, A, B) \
83 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000084
Craig Topper57f96ac2017-11-06 21:00:49 +000085#define _mm_cmpeq_epu32_mask(A, B) \
86 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
87#define _mm_mask_cmpeq_epu32_mask(k, A, B) \
88 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
89#define _mm_cmpge_epu32_mask(A, B) \
90 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
91#define _mm_mask_cmpge_epu32_mask(k, A, B) \
92 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
93#define _mm_cmpgt_epu32_mask(A, B) \
94 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
95#define _mm_mask_cmpgt_epu32_mask(k, A, B) \
96 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
97#define _mm_cmple_epu32_mask(A, B) \
98 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
99#define _mm_mask_cmple_epu32_mask(k, A, B) \
100 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
101#define _mm_cmplt_epu32_mask(A, B) \
102 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
103#define _mm_mask_cmplt_epu32_mask(k, A, B) \
104 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
105#define _mm_cmpneq_epu32_mask(A, B) \
106 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
107#define _mm_mask_cmpneq_epu32_mask(k, A, B) \
108 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000109
Craig Topper57f96ac2017-11-06 21:00:49 +0000110#define _mm256_cmpeq_epu32_mask(A, B) \
111 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
112#define _mm256_mask_cmpeq_epu32_mask(k, A, B) \
113 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
114#define _mm256_cmpge_epu32_mask(A, B) \
115 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
116#define _mm256_mask_cmpge_epu32_mask(k, A, B) \
117 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
118#define _mm256_cmpgt_epu32_mask(A, B) \
119 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
120#define _mm256_mask_cmpgt_epu32_mask(k, A, B) \
121 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
122#define _mm256_cmple_epu32_mask(A, B) \
123 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
124#define _mm256_mask_cmple_epu32_mask(k, A, B) \
125 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
126#define _mm256_cmplt_epu32_mask(A, B) \
127 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
128#define _mm256_mask_cmplt_epu32_mask(k, A, B) \
129 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
130#define _mm256_cmpneq_epu32_mask(A, B) \
131 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
132#define _mm256_mask_cmpneq_epu32_mask(k, A, B) \
133 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000134
Craig Topper57f96ac2017-11-06 21:00:49 +0000135#define _mm_cmpeq_epi64_mask(A, B) \
136 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
137#define _mm_mask_cmpeq_epi64_mask(k, A, B) \
138 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
139#define _mm_cmpge_epi64_mask(A, B) \
140 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
141#define _mm_mask_cmpge_epi64_mask(k, A, B) \
142 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
143#define _mm_cmpgt_epi64_mask(A, B) \
144 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
145#define _mm_mask_cmpgt_epi64_mask(k, A, B) \
146 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
147#define _mm_cmple_epi64_mask(A, B) \
148 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
149#define _mm_mask_cmple_epi64_mask(k, A, B) \
150 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
151#define _mm_cmplt_epi64_mask(A, B) \
152 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
153#define _mm_mask_cmplt_epi64_mask(k, A, B) \
154 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
155#define _mm_cmpneq_epi64_mask(A, B) \
156 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
157#define _mm_mask_cmpneq_epi64_mask(k, A, B) \
158 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000159
Craig Topper57f96ac2017-11-06 21:00:49 +0000160#define _mm256_cmpeq_epi64_mask(A, B) \
161 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
162#define _mm256_mask_cmpeq_epi64_mask(k, A, B) \
163 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
164#define _mm256_cmpge_epi64_mask(A, B) \
165 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
166#define _mm256_mask_cmpge_epi64_mask(k, A, B) \
167 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
168#define _mm256_cmpgt_epi64_mask(A, B) \
169 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
170#define _mm256_mask_cmpgt_epi64_mask(k, A, B) \
171 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
172#define _mm256_cmple_epi64_mask(A, B) \
173 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
174#define _mm256_mask_cmple_epi64_mask(k, A, B) \
175 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
176#define _mm256_cmplt_epi64_mask(A, B) \
177 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
178#define _mm256_mask_cmplt_epi64_mask(k, A, B) \
179 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
180#define _mm256_cmpneq_epi64_mask(A, B) \
181 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
182#define _mm256_mask_cmpneq_epi64_mask(k, A, B) \
183 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000184
Craig Topper57f96ac2017-11-06 21:00:49 +0000185#define _mm_cmpeq_epu64_mask(A, B) \
186 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
187#define _mm_mask_cmpeq_epu64_mask(k, A, B) \
188 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
189#define _mm_cmpge_epu64_mask(A, B) \
190 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
191#define _mm_mask_cmpge_epu64_mask(k, A, B) \
192 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
193#define _mm_cmpgt_epu64_mask(A, B) \
194 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
195#define _mm_mask_cmpgt_epu64_mask(k, A, B) \
196 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
197#define _mm_cmple_epu64_mask(A, B) \
198 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
199#define _mm_mask_cmple_epu64_mask(k, A, B) \
200 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
201#define _mm_cmplt_epu64_mask(A, B) \
202 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
203#define _mm_mask_cmplt_epu64_mask(k, A, B) \
204 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
205#define _mm_cmpneq_epu64_mask(A, B) \
206 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
207#define _mm_mask_cmpneq_epu64_mask(k, A, B) \
208 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000209
Craig Topper57f96ac2017-11-06 21:00:49 +0000210#define _mm256_cmpeq_epu64_mask(A, B) \
211 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
212#define _mm256_mask_cmpeq_epu64_mask(k, A, B) \
213 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
214#define _mm256_cmpge_epu64_mask(A, B) \
215 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
216#define _mm256_mask_cmpge_epu64_mask(k, A, B) \
217 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
218#define _mm256_cmpgt_epu64_mask(A, B) \
219 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
220#define _mm256_mask_cmpgt_epu64_mask(k, A, B) \
221 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
222#define _mm256_cmple_epu64_mask(A, B) \
223 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
224#define _mm256_mask_cmple_epu64_mask(k, A, B) \
225 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
226#define _mm256_cmplt_epu64_mask(A, B) \
227 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
228#define _mm256_mask_cmplt_epu64_mask(k, A, B) \
229 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
230#define _mm256_cmpneq_epu64_mask(A, B) \
231 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
232#define _mm256_mask_cmpneq_epu64_mask(k, A, B) \
233 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000234
Michael Kupersteine45af542015-06-30 13:36:19 +0000235static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000236_mm256_mask_add_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000237{
Craig Topper0e189762016-09-03 18:29:35 +0000238 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
239 (__v8si)_mm256_add_epi32(__A, __B),
240 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000241}
242
Michael Kupersteine45af542015-06-30 13:36:19 +0000243static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000244_mm256_maskz_add_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000245{
Craig Topper0e189762016-09-03 18:29:35 +0000246 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
247 (__v8si)_mm256_add_epi32(__A, __B),
248 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000249}
250
Michael Kupersteine45af542015-06-30 13:36:19 +0000251static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000252_mm256_mask_add_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000253{
Craig Topper0e189762016-09-03 18:29:35 +0000254 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
255 (__v4di)_mm256_add_epi64(__A, __B),
256 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000257}
258
Michael Kupersteine45af542015-06-30 13:36:19 +0000259static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000260_mm256_maskz_add_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000261{
Craig Topper0e189762016-09-03 18:29:35 +0000262 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
263 (__v4di)_mm256_add_epi64(__A, __B),
264 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000265}
266
Michael Kupersteine45af542015-06-30 13:36:19 +0000267static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000268_mm256_mask_sub_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000269{
Craig Topper0e189762016-09-03 18:29:35 +0000270 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
271 (__v8si)_mm256_sub_epi32(__A, __B),
272 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000273}
274
Michael Kupersteine45af542015-06-30 13:36:19 +0000275static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000276_mm256_maskz_sub_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000277{
Craig Topper0e189762016-09-03 18:29:35 +0000278 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
279 (__v8si)_mm256_sub_epi32(__A, __B),
280 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000281}
282
Michael Kupersteine45af542015-06-30 13:36:19 +0000283static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000284_mm256_mask_sub_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000285{
Craig Topper0e189762016-09-03 18:29:35 +0000286 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
287 (__v4di)_mm256_sub_epi64(__A, __B),
288 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000289}
290
Michael Kupersteine45af542015-06-30 13:36:19 +0000291static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000292_mm256_maskz_sub_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000293{
Craig Topper0e189762016-09-03 18:29:35 +0000294 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
295 (__v4di)_mm256_sub_epi64(__A, __B),
296 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000297}
298
Michael Kupersteine45af542015-06-30 13:36:19 +0000299static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000300_mm_mask_add_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000301{
Craig Topper0e189762016-09-03 18:29:35 +0000302 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
303 (__v4si)_mm_add_epi32(__A, __B),
304 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000305}
306
Michael Kupersteine45af542015-06-30 13:36:19 +0000307static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000308_mm_maskz_add_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000309{
Craig Topper0e189762016-09-03 18:29:35 +0000310 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
311 (__v4si)_mm_add_epi32(__A, __B),
312 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000313}
314
Michael Kupersteine45af542015-06-30 13:36:19 +0000315static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000316_mm_mask_add_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000317{
Craig Topper0e189762016-09-03 18:29:35 +0000318 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
319 (__v2di)_mm_add_epi64(__A, __B),
320 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000321}
322
Michael Kupersteine45af542015-06-30 13:36:19 +0000323static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000324_mm_maskz_add_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000325{
Craig Topper0e189762016-09-03 18:29:35 +0000326 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
327 (__v2di)_mm_add_epi64(__A, __B),
328 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000329}
330
Michael Kupersteine45af542015-06-30 13:36:19 +0000331static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000332_mm_mask_sub_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000333{
Craig Topper0e189762016-09-03 18:29:35 +0000334 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
335 (__v4si)_mm_sub_epi32(__A, __B),
336 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000337}
338
Michael Kupersteine45af542015-06-30 13:36:19 +0000339static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000340_mm_maskz_sub_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000341{
Craig Topper0e189762016-09-03 18:29:35 +0000342 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
343 (__v4si)_mm_sub_epi32(__A, __B),
344 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000345}
346
Michael Kupersteine45af542015-06-30 13:36:19 +0000347static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000348_mm_mask_sub_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000349{
Craig Topper0e189762016-09-03 18:29:35 +0000350 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
351 (__v2di)_mm_sub_epi64(__A, __B),
352 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000353}
354
Michael Kupersteine45af542015-06-30 13:36:19 +0000355static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper0e189762016-09-03 18:29:35 +0000356_mm_maskz_sub_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000357{
Craig Topper0e189762016-09-03 18:29:35 +0000358 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
359 (__v2di)_mm_sub_epi64(__A, __B),
360 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000361}
362
Michael Kupersteine45af542015-06-30 13:36:19 +0000363static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000364_mm256_mask_mul_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000365{
Craig Topper09e94002016-10-29 19:02:07 +0000366 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
367 (__v4di)_mm256_mul_epi32(__X, __Y),
368 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000369}
370
Michael Kupersteine45af542015-06-30 13:36:19 +0000371static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000372_mm256_maskz_mul_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000373{
Craig Topper09e94002016-10-29 19:02:07 +0000374 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
375 (__v4di)_mm256_mul_epi32(__X, __Y),
376 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000377}
378
Michael Kupersteine45af542015-06-30 13:36:19 +0000379static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000380_mm_mask_mul_epi32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000381{
Craig Topper09e94002016-10-29 19:02:07 +0000382 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
383 (__v2di)_mm_mul_epi32(__X, __Y),
384 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000385}
386
Michael Kupersteine45af542015-06-30 13:36:19 +0000387static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000388_mm_maskz_mul_epi32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000389{
Craig Topper09e94002016-10-29 19:02:07 +0000390 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
391 (__v2di)_mm_mul_epi32(__X, __Y),
392 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000393}
394
Michael Kupersteine45af542015-06-30 13:36:19 +0000395static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000396_mm256_mask_mul_epu32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000397{
Craig Topper09e94002016-10-29 19:02:07 +0000398 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
399 (__v4di)_mm256_mul_epu32(__X, __Y),
400 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000401}
402
Michael Kupersteine45af542015-06-30 13:36:19 +0000403static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000404_mm256_maskz_mul_epu32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000405{
Craig Topper09e94002016-10-29 19:02:07 +0000406 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
407 (__v4di)_mm256_mul_epu32(__X, __Y),
408 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000409}
410
Michael Kupersteine45af542015-06-30 13:36:19 +0000411static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000412_mm_mask_mul_epu32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000413{
Craig Topper09e94002016-10-29 19:02:07 +0000414 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
415 (__v2di)_mm_mul_epu32(__X, __Y),
416 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000417}
418
Michael Kupersteine45af542015-06-30 13:36:19 +0000419static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper09e94002016-10-29 19:02:07 +0000420_mm_maskz_mul_epu32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000421{
Craig Topper09e94002016-10-29 19:02:07 +0000422 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
423 (__v2di)_mm_mul_epu32(__X, __Y),
424 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000425}
426
Michael Kupersteine45af542015-06-30 13:36:19 +0000427static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000428_mm256_maskz_mullo_epi32(__mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000429{
Craig Topperf43e4a12016-09-03 19:19:49 +0000430 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
431 (__v8si)_mm256_mullo_epi32(__A, __B),
432 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000433}
434
Michael Kupersteine45af542015-06-30 13:36:19 +0000435static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000436_mm256_mask_mullo_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000437{
Craig Topperf43e4a12016-09-03 19:19:49 +0000438 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
439 (__v8si)_mm256_mullo_epi32(__A, __B),
440 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000441}
442
Michael Kupersteine45af542015-06-30 13:36:19 +0000443static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000444_mm_maskz_mullo_epi32(__mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000445{
Craig Topperf43e4a12016-09-03 19:19:49 +0000446 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
447 (__v4si)_mm_mullo_epi32(__A, __B),
448 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000449}
450
Michael Kupersteine45af542015-06-30 13:36:19 +0000451static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf43e4a12016-09-03 19:19:49 +0000452_mm_mask_mullo_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000453{
Craig Topperf43e4a12016-09-03 19:19:49 +0000454 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
455 (__v4si)_mm_mullo_epi32(__A, __B),
456 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000457}
458
Michael Kupersteine45af542015-06-30 13:36:19 +0000459static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000460_mm256_mask_and_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000461{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000462 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
463 (__v8si)_mm256_and_si256(__A, __B),
464 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000465}
466
Michael Kupersteine45af542015-06-30 13:36:19 +0000467static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000468_mm256_maskz_and_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000469{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000470 return (__m256i)_mm256_mask_and_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000471}
472
Michael Kupersteine45af542015-06-30 13:36:19 +0000473static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000474_mm_mask_and_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000475{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000476 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
477 (__v4si)_mm_and_si128(__A, __B),
478 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000479}
480
Michael Kupersteine45af542015-06-30 13:36:19 +0000481static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000482_mm_maskz_and_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000483{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000484 return (__m128i)_mm_mask_and_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000485}
486
Michael Kupersteine45af542015-06-30 13:36:19 +0000487static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000488_mm256_mask_andnot_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000489{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000490 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
491 (__v8si)_mm256_andnot_si256(__A, __B),
492 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000493}
494
Michael Kupersteine45af542015-06-30 13:36:19 +0000495static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000496_mm256_maskz_andnot_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000497{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000498 return (__m256i)_mm256_mask_andnot_epi32(_mm256_setzero_si256(),
499 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000500}
501
Michael Kupersteine45af542015-06-30 13:36:19 +0000502static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000503_mm_mask_andnot_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000504{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000505 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
506 (__v4si)_mm_andnot_si128(__A, __B),
507 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000508}
509
Michael Kupersteine45af542015-06-30 13:36:19 +0000510static __inline__ __m128i __DEFAULT_FN_ATTRS
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000511_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
512{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000513 return (__m128i)_mm_mask_andnot_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000514}
515
Michael Kupersteine45af542015-06-30 13:36:19 +0000516static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000517_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000518{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000519 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
520 (__v8si)_mm256_or_si256(__A, __B),
521 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000522}
523
Michael Kupersteine45af542015-06-30 13:36:19 +0000524static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000525_mm256_maskz_or_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000526{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000527 return (__m256i)_mm256_mask_or_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000528}
529
Michael Kupersteine45af542015-06-30 13:36:19 +0000530static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000531_mm_mask_or_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000532{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000533 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
534 (__v4si)_mm_or_si128(__A, __B),
535 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000536}
537
Michael Kupersteine45af542015-06-30 13:36:19 +0000538static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000539_mm_maskz_or_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000540{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000541 return (__m128i)_mm_mask_or_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000542}
543
Michael Kupersteine45af542015-06-30 13:36:19 +0000544static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000545_mm256_mask_xor_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000546{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000547 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
548 (__v8si)_mm256_xor_si256(__A, __B),
549 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000550}
551
Michael Kupersteine45af542015-06-30 13:36:19 +0000552static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000553_mm256_maskz_xor_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000554{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000555 return (__m256i)_mm256_mask_xor_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000556}
557
Michael Kupersteine45af542015-06-30 13:36:19 +0000558static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000559_mm_mask_xor_epi32(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000560 __m128i __B)
561{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000562 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
563 (__v4si)_mm_xor_si128(__A, __B),
564 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000565}
566
Michael Kupersteine45af542015-06-30 13:36:19 +0000567static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000568_mm_maskz_xor_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000569{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000570 return (__m128i)_mm_mask_xor_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000571}
572
Michael Kupersteine45af542015-06-30 13:36:19 +0000573static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000574_mm256_mask_and_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000575{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000576 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
577 (__v4di)_mm256_and_si256(__A, __B),
578 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000579}
580
Michael Kupersteine45af542015-06-30 13:36:19 +0000581static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000582_mm256_maskz_and_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000583{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000584 return (__m256i)_mm256_mask_and_epi64(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000585}
586
Michael Kupersteine45af542015-06-30 13:36:19 +0000587static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000588_mm_mask_and_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
589{
590 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
591 (__v2di)_mm_and_si128(__A, __B),
592 (__v2di)__W);
593}
594
595static __inline__ __m128i __DEFAULT_FN_ATTRS
596_mm_maskz_and_epi64(__mmask8 __U, __m128i __A, __m128i __B)
597{
598 return (__m128i)_mm_mask_and_epi64(_mm_setzero_si128(), __U, __A, __B);
599}
600
601static __inline__ __m256i __DEFAULT_FN_ATTRS
602_mm256_mask_andnot_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
603{
604 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
605 (__v4di)_mm256_andnot_si256(__A, __B),
606 (__v4di)__W);
607}
608
609static __inline__ __m256i __DEFAULT_FN_ATTRS
610_mm256_maskz_andnot_epi64(__mmask8 __U, __m256i __A, __m256i __B)
611{
612 return (__m256i)_mm256_mask_andnot_epi64(_mm256_setzero_si256(),
613 __U, __A, __B);
614}
615
616static __inline__ __m128i __DEFAULT_FN_ATTRS
617_mm_mask_andnot_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
618{
619 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
620 (__v2di)_mm_andnot_si128(__A, __B),
621 (__v2di)__W);
622}
623
624static __inline__ __m128i __DEFAULT_FN_ATTRS
625_mm_maskz_andnot_epi64(__mmask8 __U, __m128i __A, __m128i __B)
626{
627 return (__m128i)_mm_mask_andnot_epi64(_mm_setzero_si128(), __U, __A, __B);
628}
629
630static __inline__ __m256i __DEFAULT_FN_ATTRS
631_mm256_mask_or_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
632{
633 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
634 (__v4di)_mm256_or_si256(__A, __B),
635 (__v4di)__W);
636}
637
638static __inline__ __m256i __DEFAULT_FN_ATTRS
639_mm256_maskz_or_epi64(__mmask8 __U, __m256i __A, __m256i __B)
640{
641 return (__m256i)_mm256_mask_or_epi64(_mm256_setzero_si256(), __U, __A, __B);
642}
643
644static __inline__ __m128i __DEFAULT_FN_ATTRS
645_mm_mask_or_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
646{
647 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
648 (__v2di)_mm_or_si128(__A, __B),
649 (__v2di)__W);
650}
651
652static __inline__ __m128i __DEFAULT_FN_ATTRS
653_mm_maskz_or_epi64(__mmask8 __U, __m128i __A, __m128i __B)
654{
655 return (__m128i)_mm_mask_or_epi64(_mm_setzero_si128(), __U, __A, __B);
656}
657
658static __inline__ __m256i __DEFAULT_FN_ATTRS
659_mm256_mask_xor_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
660{
661 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
662 (__v4di)_mm256_xor_si256(__A, __B),
663 (__v4di)__W);
664}
665
666static __inline__ __m256i __DEFAULT_FN_ATTRS
667_mm256_maskz_xor_epi64(__mmask8 __U, __m256i __A, __m256i __B)
668{
669 return (__m256i)_mm256_mask_xor_epi64(_mm256_setzero_si256(), __U, __A, __B);
670}
671
672static __inline__ __m128i __DEFAULT_FN_ATTRS
673_mm_mask_xor_epi64(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000674 __m128i __B)
675{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000676 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
677 (__v2di)_mm_xor_si128(__A, __B),
678 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000679}
680
Michael Kupersteine45af542015-06-30 13:36:19 +0000681static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper4d61a3c2016-07-11 06:14:18 +0000682_mm_maskz_xor_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000683{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000684 return (__m128i)_mm_mask_xor_epi64(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000685}
686
Craig Topperc6338672018-05-31 00:51:20 +0000687#define _mm_cmp_epi32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000688 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000689 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000690 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000691
Craig Topperc6338672018-05-31 00:51:20 +0000692#define _mm_mask_cmp_epi32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000693 (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000694 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000695 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000696
Craig Topperc6338672018-05-31 00:51:20 +0000697#define _mm_cmp_epu32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000698 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000699 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000700 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000701
Craig Topperc6338672018-05-31 00:51:20 +0000702#define _mm_mask_cmp_epu32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000703 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000704 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000705 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000706
Craig Topperc6338672018-05-31 00:51:20 +0000707#define _mm256_cmp_epi32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000708 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000709 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000710 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000711
Craig Topperc6338672018-05-31 00:51:20 +0000712#define _mm256_mask_cmp_epi32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000713 (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000714 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000715 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000716
Craig Topperc6338672018-05-31 00:51:20 +0000717#define _mm256_cmp_epu32_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000718 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000719 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000720 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000721
Craig Topperc6338672018-05-31 00:51:20 +0000722#define _mm256_mask_cmp_epu32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000723 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000724 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000725 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000726
Craig Topperc6338672018-05-31 00:51:20 +0000727#define _mm_cmp_epi64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000728 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000729 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000730 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000731
Craig Topperc6338672018-05-31 00:51:20 +0000732#define _mm_mask_cmp_epi64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000733 (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000734 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000735 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000736
Craig Topperc6338672018-05-31 00:51:20 +0000737#define _mm_cmp_epu64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000738 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000739 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000740 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000741
Craig Topperc6338672018-05-31 00:51:20 +0000742#define _mm_mask_cmp_epu64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000743 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000744 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000745 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000746
Craig Topperc6338672018-05-31 00:51:20 +0000747#define _mm256_cmp_epi64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000748 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000749 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000750 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000751
Craig Topperc6338672018-05-31 00:51:20 +0000752#define _mm256_mask_cmp_epi64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000753 (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000754 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000755 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000756
Craig Topperc6338672018-05-31 00:51:20 +0000757#define _mm256_cmp_epu64_mask(a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000758 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000759 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000760 (__mmask8)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000761
Craig Topperc6338672018-05-31 00:51:20 +0000762#define _mm256_mask_cmp_epu64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000763 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000764 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000765 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000766
Craig Topperc6338672018-05-31 00:51:20 +0000767#define _mm256_cmp_ps_mask(a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000768 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000769 (__v8sf)(__m256)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000770 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000771
Craig Topperc6338672018-05-31 00:51:20 +0000772#define _mm256_mask_cmp_ps_mask(m, a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000773 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000774 (__v8sf)(__m256)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000775 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000776
Craig Topperc6338672018-05-31 00:51:20 +0000777#define _mm256_cmp_pd_mask(a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000778 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
779 (__v4df)(__m256d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000780 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000781
Craig Topperc6338672018-05-31 00:51:20 +0000782#define _mm256_mask_cmp_pd_mask(m, a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000783 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
784 (__v4df)(__m256d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000785 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000786
Craig Topperc6338672018-05-31 00:51:20 +0000787#define _mm_cmp_ps_mask(a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000788 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000789 (__v4sf)(__m128)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000790 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000791
Craig Topperc6338672018-05-31 00:51:20 +0000792#define _mm_mask_cmp_ps_mask(m, a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000793 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000794 (__v4sf)(__m128)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000795 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000796
Craig Topperc6338672018-05-31 00:51:20 +0000797#define _mm_cmp_pd_mask(a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000798 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
799 (__v2df)(__m128d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000800 (__mmask8)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000801
Craig Topperc6338672018-05-31 00:51:20 +0000802#define _mm_mask_cmp_pd_mask(m, a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000803 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
804 (__v2df)(__m128d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000805 (__mmask8)(m))
Eric Christopher4d1851682015-06-17 07:09:20 +0000806
Michael Kupersteine45af542015-06-30 13:36:19 +0000807static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000808_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
809{
Gabor Buella70d8d512018-05-30 15:27:49 +0000810 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
811 __builtin_ia32_vfmaddpd ((__v2df) __A,
812 (__v2df) __B,
813 (__v2df) __C),
814 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000815}
816
Michael Kupersteine45af542015-06-30 13:36:19 +0000817static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000818_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
819{
Gabor Buella70d8d512018-05-30 15:27:49 +0000820 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
821 __builtin_ia32_vfmaddpd ((__v2df) __A,
822 (__v2df) __B,
823 (__v2df) __C),
824 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000825}
826
Michael Kupersteine45af542015-06-30 13:36:19 +0000827static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000828_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
829{
Gabor Buella70d8d512018-05-30 15:27:49 +0000830 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
831 __builtin_ia32_vfmaddpd ((__v2df) __A,
832 (__v2df) __B,
833 (__v2df) __C),
834 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000835}
836
Michael Kupersteine45af542015-06-30 13:36:19 +0000837static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000838_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
839{
Gabor Buella70d8d512018-05-30 15:27:49 +0000840 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
841 __builtin_ia32_vfmaddpd ((__v2df) __A,
842 (__v2df) __B,
843 -(__v2df) __C),
844 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000845}
846
Michael Kupersteine45af542015-06-30 13:36:19 +0000847static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000848_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
849{
Gabor Buella70d8d512018-05-30 15:27:49 +0000850 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
851 __builtin_ia32_vfmaddpd ((__v2df) __A,
852 (__v2df) __B,
853 -(__v2df) __C),
854 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000855}
856
Michael Kupersteine45af542015-06-30 13:36:19 +0000857static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000858_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
859{
Gabor Buella70d8d512018-05-30 15:27:49 +0000860 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
861 __builtin_ia32_vfmaddpd (-(__v2df) __A,
862 (__v2df) __B,
863 (__v2df) __C),
864 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000865}
866
Michael Kupersteine45af542015-06-30 13:36:19 +0000867static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000868_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
869{
Gabor Buella70d8d512018-05-30 15:27:49 +0000870 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
871 __builtin_ia32_vfmaddpd (-(__v2df) __A,
872 (__v2df) __B,
873 (__v2df) __C),
874 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000875}
876
Michael Kupersteine45af542015-06-30 13:36:19 +0000877static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000878_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
879{
Gabor Buella70d8d512018-05-30 15:27:49 +0000880 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
881 __builtin_ia32_vfmaddpd (-(__v2df) __A,
882 (__v2df) __B,
883 -(__v2df) __C),
884 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000885}
886
Michael Kupersteine45af542015-06-30 13:36:19 +0000887static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000888_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
889{
Gabor Buella70d8d512018-05-30 15:27:49 +0000890 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
891 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
892 (__v4df) __B,
893 (__v4df) __C),
894 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000895}
896
Michael Kupersteine45af542015-06-30 13:36:19 +0000897static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000898_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
899{
Gabor Buella70d8d512018-05-30 15:27:49 +0000900 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
901 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
902 (__v4df) __B,
903 (__v4df) __C),
904 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000905}
906
Michael Kupersteine45af542015-06-30 13:36:19 +0000907static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000908_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
909{
Gabor Buella70d8d512018-05-30 15:27:49 +0000910 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
911 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
912 (__v4df) __B,
913 (__v4df) __C),
914 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000915}
916
Michael Kupersteine45af542015-06-30 13:36:19 +0000917static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000918_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
919{
Gabor Buella70d8d512018-05-30 15:27:49 +0000920 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
921 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
922 (__v4df) __B,
923 -(__v4df) __C),
924 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000925}
926
Michael Kupersteine45af542015-06-30 13:36:19 +0000927static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000928_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
929{
Gabor Buella70d8d512018-05-30 15:27:49 +0000930 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
931 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
932 (__v4df) __B,
933 -(__v4df) __C),
934 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000935}
936
Michael Kupersteine45af542015-06-30 13:36:19 +0000937static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000938_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
939{
Gabor Buella70d8d512018-05-30 15:27:49 +0000940 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
941 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
942 (__v4df) __B,
943 (__v4df) __C),
944 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000945}
946
Michael Kupersteine45af542015-06-30 13:36:19 +0000947static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000948_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
949{
Gabor Buella70d8d512018-05-30 15:27:49 +0000950 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
951 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
952 (__v4df) __B,
953 (__v4df) __C),
954 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000955}
956
Michael Kupersteine45af542015-06-30 13:36:19 +0000957static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000958_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
959{
Gabor Buella70d8d512018-05-30 15:27:49 +0000960 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
961 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
962 (__v4df) __B,
963 -(__v4df) __C),
964 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000965}
966
Michael Kupersteine45af542015-06-30 13:36:19 +0000967static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000968_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
969{
Gabor Buella70d8d512018-05-30 15:27:49 +0000970 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
971 __builtin_ia32_vfmaddps ((__v4sf) __A,
972 (__v4sf) __B,
973 (__v4sf) __C),
974 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000975}
976
Michael Kupersteine45af542015-06-30 13:36:19 +0000977static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000978_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
979{
Gabor Buella70d8d512018-05-30 15:27:49 +0000980 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
981 __builtin_ia32_vfmaddps ((__v4sf) __A,
982 (__v4sf) __B,
983 (__v4sf) __C),
984 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000985}
986
Michael Kupersteine45af542015-06-30 13:36:19 +0000987static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000988_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
989{
Gabor Buella70d8d512018-05-30 15:27:49 +0000990 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
991 __builtin_ia32_vfmaddps ((__v4sf) __A,
992 (__v4sf) __B,
993 (__v4sf) __C),
994 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000995}
996
Michael Kupersteine45af542015-06-30 13:36:19 +0000997static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000998_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
999{
Gabor Buella70d8d512018-05-30 15:27:49 +00001000 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1001 __builtin_ia32_vfmaddps ((__v4sf) __A,
1002 (__v4sf) __B,
1003 -(__v4sf) __C),
1004 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001005}
1006
Michael Kupersteine45af542015-06-30 13:36:19 +00001007static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001008_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1009{
Gabor Buella70d8d512018-05-30 15:27:49 +00001010 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1011 __builtin_ia32_vfmaddps ((__v4sf) __A,
1012 (__v4sf) __B,
1013 -(__v4sf) __C),
1014 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001015}
1016
Michael Kupersteine45af542015-06-30 13:36:19 +00001017static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001018_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1019{
Gabor Buella70d8d512018-05-30 15:27:49 +00001020 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1021 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1022 (__v4sf) __B,
1023 (__v4sf) __C),
1024 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001025}
1026
Michael Kupersteine45af542015-06-30 13:36:19 +00001027static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001028_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1029{
Gabor Buella70d8d512018-05-30 15:27:49 +00001030 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1031 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1032 (__v4sf) __B,
1033 (__v4sf) __C),
1034 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001035}
1036
Michael Kupersteine45af542015-06-30 13:36:19 +00001037static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001038_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1039{
Gabor Buella70d8d512018-05-30 15:27:49 +00001040 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1041 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1042 (__v4sf) __B,
1043 -(__v4sf) __C),
1044 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001045}
1046
Michael Kupersteine45af542015-06-30 13:36:19 +00001047static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001048_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1049{
Gabor Buella70d8d512018-05-30 15:27:49 +00001050 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1051 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1052 (__v8sf) __B,
1053 (__v8sf) __C),
1054 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001055}
1056
Michael Kupersteine45af542015-06-30 13:36:19 +00001057static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001058_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1059{
Gabor Buella70d8d512018-05-30 15:27:49 +00001060 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1061 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1062 (__v8sf) __B,
1063 (__v8sf) __C),
1064 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001065}
1066
Michael Kupersteine45af542015-06-30 13:36:19 +00001067static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001068_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1069{
Gabor Buella70d8d512018-05-30 15:27:49 +00001070 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1071 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1072 (__v8sf) __B,
1073 (__v8sf) __C),
1074 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001075}
1076
Michael Kupersteine45af542015-06-30 13:36:19 +00001077static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001078_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1079{
Gabor Buella70d8d512018-05-30 15:27:49 +00001080 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1081 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1082 (__v8sf) __B,
1083 -(__v8sf) __C),
1084 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001085}
1086
Michael Kupersteine45af542015-06-30 13:36:19 +00001087static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001088_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1089{
Gabor Buella70d8d512018-05-30 15:27:49 +00001090 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1091 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1092 (__v8sf) __B,
1093 -(__v8sf) __C),
1094 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001095}
1096
Michael Kupersteine45af542015-06-30 13:36:19 +00001097static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001098_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1099{
Gabor Buella70d8d512018-05-30 15:27:49 +00001100 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1101 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1102 (__v8sf) __B,
1103 (__v8sf) __C),
1104 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001105}
1106
Michael Kupersteine45af542015-06-30 13:36:19 +00001107static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001108_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1109{
Gabor Buella70d8d512018-05-30 15:27:49 +00001110 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1111 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1112 (__v8sf) __B,
1113 (__v8sf) __C),
1114 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001115}
1116
Michael Kupersteine45af542015-06-30 13:36:19 +00001117static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001118_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1119{
Gabor Buella70d8d512018-05-30 15:27:49 +00001120 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1121 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1122 (__v8sf) __B,
1123 -(__v8sf) __C),
1124 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001125}
1126
Michael Kupersteine45af542015-06-30 13:36:19 +00001127static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001128_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1129{
Gabor Buella70d8d512018-05-30 15:27:49 +00001130 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1131 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1132 (__v2df) __B,
1133 (__v2df) __C),
1134 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001135}
1136
Michael Kupersteine45af542015-06-30 13:36:19 +00001137static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001138_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1139{
Gabor Buella70d8d512018-05-30 15:27:49 +00001140 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1141 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1142 (__v2df) __B,
1143 (__v2df) __C),
1144 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001145}
1146
Michael Kupersteine45af542015-06-30 13:36:19 +00001147static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001148_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1149{
Gabor Buella70d8d512018-05-30 15:27:49 +00001150 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1151 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1152 (__v2df) __B,
1153 (__v2df) __C),
1154 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001155}
1156
Michael Kupersteine45af542015-06-30 13:36:19 +00001157static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001158_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1159{
Gabor Buella70d8d512018-05-30 15:27:49 +00001160 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1161 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1162 (__v2df) __B,
1163 -(__v2df) __C),
1164 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001165}
1166
Michael Kupersteine45af542015-06-30 13:36:19 +00001167static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001168_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1169{
Gabor Buella70d8d512018-05-30 15:27:49 +00001170 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1171 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1172 (__v2df) __B,
1173 -(__v2df) __C),
1174 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001175}
1176
Michael Kupersteine45af542015-06-30 13:36:19 +00001177static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001178_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1179{
Gabor Buella70d8d512018-05-30 15:27:49 +00001180 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1181 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1182 (__v4df) __B,
1183 (__v4df) __C),
1184 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001185}
1186
Michael Kupersteine45af542015-06-30 13:36:19 +00001187static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001188_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1189{
Gabor Buella70d8d512018-05-30 15:27:49 +00001190 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1191 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1192 (__v4df) __B,
1193 (__v4df) __C),
1194 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001195}
1196
Michael Kupersteine45af542015-06-30 13:36:19 +00001197static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001198_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1199{
Gabor Buella70d8d512018-05-30 15:27:49 +00001200 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1201 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1202 (__v4df) __B,
1203 (__v4df) __C),
1204 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001205}
1206
Michael Kupersteine45af542015-06-30 13:36:19 +00001207static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001208_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1209{
Gabor Buella70d8d512018-05-30 15:27:49 +00001210 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1211 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1212 (__v4df) __B,
1213 -(__v4df) __C),
1214 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001215}
1216
Michael Kupersteine45af542015-06-30 13:36:19 +00001217static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001218_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1219{
Gabor Buella70d8d512018-05-30 15:27:49 +00001220 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1221 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1222 (__v4df) __B,
1223 -(__v4df) __C),
1224 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001225}
1226
Michael Kupersteine45af542015-06-30 13:36:19 +00001227static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001228_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1229{
Gabor Buella70d8d512018-05-30 15:27:49 +00001230 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1231 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1232 (__v4sf) __B,
1233 (__v4sf) __C),
1234 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001235}
1236
Michael Kupersteine45af542015-06-30 13:36:19 +00001237static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001238_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1239{
Gabor Buella70d8d512018-05-30 15:27:49 +00001240 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1241 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1242 (__v4sf) __B,
1243 (__v4sf) __C),
1244 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001245}
1246
Michael Kupersteine45af542015-06-30 13:36:19 +00001247static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001248_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1249{
Gabor Buella70d8d512018-05-30 15:27:49 +00001250 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1251 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1252 (__v4sf) __B,
1253 (__v4sf) __C),
1254 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001255}
1256
Michael Kupersteine45af542015-06-30 13:36:19 +00001257static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001258_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1259{
Gabor Buella70d8d512018-05-30 15:27:49 +00001260 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1261 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1262 (__v4sf) __B,
1263 -(__v4sf) __C),
1264 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001265}
1266
Michael Kupersteine45af542015-06-30 13:36:19 +00001267static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001268_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1269{
Gabor Buella70d8d512018-05-30 15:27:49 +00001270 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1271 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1272 (__v4sf) __B,
1273 -(__v4sf) __C),
1274 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001275}
1276
Michael Kupersteine45af542015-06-30 13:36:19 +00001277static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001278_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B,
1279 __m256 __C)
1280{
Gabor Buella70d8d512018-05-30 15:27:49 +00001281 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1282 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1283 (__v8sf) __B,
1284 (__v8sf) __C),
1285 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001286}
1287
Michael Kupersteine45af542015-06-30 13:36:19 +00001288static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001289_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1290{
Gabor Buella70d8d512018-05-30 15:27:49 +00001291 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1292 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1293 (__v8sf) __B,
1294 (__v8sf) __C),
1295 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001296}
1297
Michael Kupersteine45af542015-06-30 13:36:19 +00001298static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001299_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1300{
Gabor Buella70d8d512018-05-30 15:27:49 +00001301 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1302 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1303 (__v8sf) __B,
1304 (__v8sf) __C),
1305 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001306}
1307
Michael Kupersteine45af542015-06-30 13:36:19 +00001308static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001309_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1310{
Gabor Buella70d8d512018-05-30 15:27:49 +00001311 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1312 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1313 (__v8sf) __B,
1314 -(__v8sf) __C),
1315 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001316}
1317
Michael Kupersteine45af542015-06-30 13:36:19 +00001318static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001319_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1320{
Gabor Buella70d8d512018-05-30 15:27:49 +00001321 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1322 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1323 (__v8sf) __B,
1324 -(__v8sf) __C),
1325 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001326}
1327
Michael Kupersteine45af542015-06-30 13:36:19 +00001328static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001329_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1330{
Gabor Buella70d8d512018-05-30 15:27:49 +00001331 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1332 __builtin_ia32_vfmaddpd ((__v2df) __A,
1333 (__v2df) __B,
1334 -(__v2df) __C),
1335 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001336}
1337
Michael Kupersteine45af542015-06-30 13:36:19 +00001338static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001339_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1340{
Gabor Buella70d8d512018-05-30 15:27:49 +00001341 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1342 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1343 (__v4df) __B,
1344 -(__v4df) __C),
1345 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001346}
1347
Michael Kupersteine45af542015-06-30 13:36:19 +00001348static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001349_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1350{
Gabor Buella70d8d512018-05-30 15:27:49 +00001351 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1352 __builtin_ia32_vfmaddps ((__v4sf) __A,
1353 (__v4sf) __B,
1354 -(__v4sf) __C),
1355 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001356}
1357
Michael Kupersteine45af542015-06-30 13:36:19 +00001358static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001359_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1360{
Gabor Buella70d8d512018-05-30 15:27:49 +00001361 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1362 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1363 (__v8sf) __B,
1364 -(__v8sf) __C),
1365 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001366}
1367
Michael Kupersteine45af542015-06-30 13:36:19 +00001368static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001369_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1370{
Gabor Buella70d8d512018-05-30 15:27:49 +00001371 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1372 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1373 (__v2df) __B,
1374 -(__v2df) __C),
1375 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001376}
1377
Michael Kupersteine45af542015-06-30 13:36:19 +00001378static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001379_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1380{
Gabor Buella70d8d512018-05-30 15:27:49 +00001381 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1382 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1383 (__v4df) __B,
1384 -(__v4df) __C),
1385 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001386}
1387
Michael Kupersteine45af542015-06-30 13:36:19 +00001388static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001389_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1390{
Gabor Buella70d8d512018-05-30 15:27:49 +00001391 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1392 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1393 (__v4sf) __B,
1394 -(__v4sf) __C),
1395 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001396}
1397
Michael Kupersteine45af542015-06-30 13:36:19 +00001398static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001399_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1400{
Gabor Buella70d8d512018-05-30 15:27:49 +00001401 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1402 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1403 (__v8sf) __B,
1404 -(__v8sf) __C),
1405 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001406}
1407
Michael Kupersteine45af542015-06-30 13:36:19 +00001408static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001409_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1410{
Gabor Buella70d8d512018-05-30 15:27:49 +00001411 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1412 __builtin_ia32_vfmaddpd ((__v2df) __A,
1413 -(__v2df) __B,
1414 (__v2df) __C),
1415 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001416}
1417
Michael Kupersteine45af542015-06-30 13:36:19 +00001418static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001419_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1420{
Gabor Buella70d8d512018-05-30 15:27:49 +00001421 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1422 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1423 -(__v4df) __B,
1424 (__v4df) __C),
1425 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001426}
1427
Michael Kupersteine45af542015-06-30 13:36:19 +00001428static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001429_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1430{
Gabor Buella70d8d512018-05-30 15:27:49 +00001431 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1432 __builtin_ia32_vfmaddps ((__v4sf) __A,
1433 -(__v4sf) __B,
1434 (__v4sf) __C),
1435 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001436}
1437
Michael Kupersteine45af542015-06-30 13:36:19 +00001438static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001439_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1440{
Gabor Buella70d8d512018-05-30 15:27:49 +00001441 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1442 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1443 -(__v8sf) __B,
1444 (__v8sf) __C),
1445 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001446}
1447
Michael Kupersteine45af542015-06-30 13:36:19 +00001448static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001449_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1450{
Gabor Buella70d8d512018-05-30 15:27:49 +00001451 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1452 __builtin_ia32_vfmaddpd ((__v2df) __A,
1453 -(__v2df) __B,
1454 -(__v2df) __C),
1455 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001456}
1457
Michael Kupersteine45af542015-06-30 13:36:19 +00001458static __inline__ __m128d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001459_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1460{
Gabor Buella70d8d512018-05-30 15:27:49 +00001461 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1462 __builtin_ia32_vfmaddpd ((__v2df) __A,
1463 -(__v2df) __B,
1464 -(__v2df) __C),
1465 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001466}
1467
Michael Kupersteine45af542015-06-30 13:36:19 +00001468static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001469_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1470{
Gabor Buella70d8d512018-05-30 15:27:49 +00001471 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1472 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1473 -(__v4df) __B,
1474 -(__v4df) __C),
1475 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001476}
1477
Michael Kupersteine45af542015-06-30 13:36:19 +00001478static __inline__ __m256d __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001479_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1480{
Gabor Buella70d8d512018-05-30 15:27:49 +00001481 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1482 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1483 -(__v4df) __B,
1484 -(__v4df) __C),
1485 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001486}
1487
Michael Kupersteine45af542015-06-30 13:36:19 +00001488static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001489_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1490{
Gabor Buella70d8d512018-05-30 15:27:49 +00001491 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1492 __builtin_ia32_vfmaddps ((__v4sf) __A,
1493 -(__v4sf) __B,
1494 -(__v4sf) __C),
1495 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001496}
1497
Michael Kupersteine45af542015-06-30 13:36:19 +00001498static __inline__ __m128 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001499_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1500{
Gabor Buella70d8d512018-05-30 15:27:49 +00001501 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1502 __builtin_ia32_vfmaddps ((__v4sf) __A,
1503 -(__v4sf) __B,
1504 -(__v4sf) __C),
1505 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001506}
1507
Michael Kupersteine45af542015-06-30 13:36:19 +00001508static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001509_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1510{
Gabor Buella70d8d512018-05-30 15:27:49 +00001511 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1512 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1513 -(__v8sf) __B,
1514 -(__v8sf) __C),
1515 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001516}
1517
Michael Kupersteine45af542015-06-30 13:36:19 +00001518static __inline__ __m256 __DEFAULT_FN_ATTRS
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001519_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1520{
Gabor Buella70d8d512018-05-30 15:27:49 +00001521 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1522 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1523 -(__v8sf) __B,
1524 -(__v8sf) __C),
1525 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001526}
1527
Asaf Badouh74da3872015-07-28 08:26:14 +00001528static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001529_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1530 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1531 (__v2df)_mm_add_pd(__A, __B),
1532 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001533}
1534
1535static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001536_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
1537 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1538 (__v2df)_mm_add_pd(__A, __B),
1539 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001540}
1541
1542static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001543_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
1544 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1545 (__v4df)_mm256_add_pd(__A, __B),
1546 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001547}
1548
1549static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001550_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
1551 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1552 (__v4df)_mm256_add_pd(__A, __B),
1553 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001554}
1555
1556static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001557_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1558 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1559 (__v4sf)_mm_add_ps(__A, __B),
1560 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001561}
1562
1563static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001564_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
1565 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1566 (__v4sf)_mm_add_ps(__A, __B),
1567 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001568}
1569
1570static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001571_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
1572 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1573 (__v8sf)_mm256_add_ps(__A, __B),
1574 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001575}
1576
1577static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00001578_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
1579 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1580 (__v8sf)_mm256_add_ps(__A, __B),
1581 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001582}
1583
1584static __inline__ __m128i __DEFAULT_FN_ATTRS
1585_mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001586 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001587 (__v4si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001588 (__v4si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001589}
1590
1591static __inline__ __m256i __DEFAULT_FN_ATTRS
1592_mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001593 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001594 (__v8si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001595 (__v8si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001596}
1597
1598static __inline__ __m128d __DEFAULT_FN_ATTRS
1599_mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001600 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001601 (__v2df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001602 (__v2df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001603}
1604
1605static __inline__ __m256d __DEFAULT_FN_ATTRS
1606_mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001607 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001608 (__v4df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001609 (__v4df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001610}
1611
1612static __inline__ __m128 __DEFAULT_FN_ATTRS
1613_mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001614 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001615 (__v4sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001616 (__v4sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001617}
1618
1619static __inline__ __m256 __DEFAULT_FN_ATTRS
1620_mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001621 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001622 (__v8sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001623 (__v8sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001624}
1625
1626static __inline__ __m128i __DEFAULT_FN_ATTRS
1627_mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001628 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001629 (__v2di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001630 (__v2di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001631}
1632
1633static __inline__ __m256i __DEFAULT_FN_ATTRS
1634_mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001635 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001636 (__v4di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001637 (__v4di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001638}
1639
1640static __inline__ __m128d __DEFAULT_FN_ATTRS
1641_mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A) {
1642 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1643 (__v2df) __W,
1644 (__mmask8) __U);
1645}
1646
1647static __inline__ __m128d __DEFAULT_FN_ATTRS
1648_mm_maskz_compress_pd (__mmask8 __U, __m128d __A) {
1649 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1650 (__v2df)
1651 _mm_setzero_pd (),
1652 (__mmask8) __U);
1653}
1654
1655static __inline__ __m256d __DEFAULT_FN_ATTRS
1656_mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A) {
1657 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1658 (__v4df) __W,
1659 (__mmask8) __U);
1660}
1661
1662static __inline__ __m256d __DEFAULT_FN_ATTRS
1663_mm256_maskz_compress_pd (__mmask8 __U, __m256d __A) {
1664 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1665 (__v4df)
1666 _mm256_setzero_pd (),
1667 (__mmask8) __U);
1668}
1669
1670static __inline__ __m128i __DEFAULT_FN_ATTRS
1671_mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
1672 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1673 (__v2di) __W,
1674 (__mmask8) __U);
1675}
1676
1677static __inline__ __m128i __DEFAULT_FN_ATTRS
1678_mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A) {
1679 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1680 (__v2di)
1681 _mm_setzero_si128 (),
1682 (__mmask8) __U);
1683}
1684
1685static __inline__ __m256i __DEFAULT_FN_ATTRS
1686_mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
1687 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1688 (__v4di) __W,
1689 (__mmask8) __U);
1690}
1691
1692static __inline__ __m256i __DEFAULT_FN_ATTRS
1693_mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A) {
1694 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1695 (__v4di)
1696 _mm256_setzero_si256 (),
1697 (__mmask8) __U);
1698}
1699
1700static __inline__ __m128 __DEFAULT_FN_ATTRS
1701_mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A) {
1702 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1703 (__v4sf) __W,
1704 (__mmask8) __U);
1705}
1706
1707static __inline__ __m128 __DEFAULT_FN_ATTRS
1708_mm_maskz_compress_ps (__mmask8 __U, __m128 __A) {
1709 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1710 (__v4sf)
1711 _mm_setzero_ps (),
1712 (__mmask8) __U);
1713}
1714
1715static __inline__ __m256 __DEFAULT_FN_ATTRS
1716_mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A) {
1717 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1718 (__v8sf) __W,
1719 (__mmask8) __U);
1720}
1721
1722static __inline__ __m256 __DEFAULT_FN_ATTRS
1723_mm256_maskz_compress_ps (__mmask8 __U, __m256 __A) {
1724 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1725 (__v8sf)
1726 _mm256_setzero_ps (),
1727 (__mmask8) __U);
1728}
1729
1730static __inline__ __m128i __DEFAULT_FN_ATTRS
1731_mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
1732 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1733 (__v4si) __W,
1734 (__mmask8) __U);
1735}
1736
1737static __inline__ __m128i __DEFAULT_FN_ATTRS
1738_mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A) {
1739 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1740 (__v4si)
1741 _mm_setzero_si128 (),
1742 (__mmask8) __U);
1743}
1744
1745static __inline__ __m256i __DEFAULT_FN_ATTRS
1746_mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
1747 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1748 (__v8si) __W,
1749 (__mmask8) __U);
1750}
1751
1752static __inline__ __m256i __DEFAULT_FN_ATTRS
1753_mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A) {
1754 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1755 (__v8si)
1756 _mm256_setzero_si256 (),
1757 (__mmask8) __U);
1758}
1759
1760static __inline__ void __DEFAULT_FN_ATTRS
1761_mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A) {
1762 __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
1763 (__v2df) __A,
1764 (__mmask8) __U);
1765}
1766
1767static __inline__ void __DEFAULT_FN_ATTRS
1768_mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A) {
1769 __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
1770 (__v4df) __A,
1771 (__mmask8) __U);
1772}
1773
1774static __inline__ void __DEFAULT_FN_ATTRS
1775_mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A) {
1776 __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
1777 (__v2di) __A,
1778 (__mmask8) __U);
1779}
1780
1781static __inline__ void __DEFAULT_FN_ATTRS
1782_mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A) {
1783 __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
1784 (__v4di) __A,
1785 (__mmask8) __U);
1786}
1787
1788static __inline__ void __DEFAULT_FN_ATTRS
1789_mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A) {
1790 __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
1791 (__v4sf) __A,
1792 (__mmask8) __U);
1793}
1794
1795static __inline__ void __DEFAULT_FN_ATTRS
1796_mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A) {
1797 __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
1798 (__v8sf) __A,
1799 (__mmask8) __U);
1800}
1801
1802static __inline__ void __DEFAULT_FN_ATTRS
1803_mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A) {
1804 __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
1805 (__v4si) __A,
1806 (__mmask8) __U);
1807}
1808
1809static __inline__ void __DEFAULT_FN_ATTRS
1810_mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A) {
1811 __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
1812 (__v8si) __A,
1813 (__mmask8) __U);
1814}
1815
1816static __inline__ __m128d __DEFAULT_FN_ATTRS
1817_mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001818 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1819 (__v2df)_mm_cvtepi32_pd(__A),
1820 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001821}
1822
1823static __inline__ __m128d __DEFAULT_FN_ATTRS
1824_mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001825 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1826 (__v2df)_mm_cvtepi32_pd(__A),
1827 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001828}
1829
1830static __inline__ __m256d __DEFAULT_FN_ATTRS
1831_mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001832 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1833 (__v4df)_mm256_cvtepi32_pd(__A),
1834 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001835}
1836
1837static __inline__ __m256d __DEFAULT_FN_ATTRS
1838_mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001839 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1840 (__v4df)_mm256_cvtepi32_pd(__A),
1841 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001842}
1843
1844static __inline__ __m128 __DEFAULT_FN_ATTRS
1845_mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001846 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1847 (__v4sf)_mm_cvtepi32_ps(__A),
1848 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001849}
1850
1851static __inline__ __m128 __DEFAULT_FN_ATTRS
1852_mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001853 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1854 (__v4sf)_mm_cvtepi32_ps(__A),
1855 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001856}
1857
1858static __inline__ __m256 __DEFAULT_FN_ATTRS
1859_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001860 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1861 (__v8sf)_mm256_cvtepi32_ps(__A),
1862 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001863}
1864
1865static __inline__ __m256 __DEFAULT_FN_ATTRS
1866_mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001867 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1868 (__v8sf)_mm256_cvtepi32_ps(__A),
1869 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001870}
1871
1872static __inline__ __m128i __DEFAULT_FN_ATTRS
1873_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
1874 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1875 (__v4si) __W,
1876 (__mmask8) __U);
1877}
1878
1879static __inline__ __m128i __DEFAULT_FN_ATTRS
1880_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
1881 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1882 (__v4si)
1883 _mm_setzero_si128 (),
1884 (__mmask8) __U);
1885}
1886
1887static __inline__ __m128i __DEFAULT_FN_ATTRS
1888_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001889 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1890 (__v4si)_mm256_cvtpd_epi32(__A),
1891 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001892}
1893
1894static __inline__ __m128i __DEFAULT_FN_ATTRS
1895_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001896 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1897 (__v4si)_mm256_cvtpd_epi32(__A),
1898 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001899}
1900
1901static __inline__ __m128 __DEFAULT_FN_ATTRS
1902_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
1903 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1904 (__v4sf) __W,
1905 (__mmask8) __U);
1906}
1907
1908static __inline__ __m128 __DEFAULT_FN_ATTRS
1909_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
1910 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1911 (__v4sf)
1912 _mm_setzero_ps (),
1913 (__mmask8) __U);
1914}
1915
1916static __inline__ __m128 __DEFAULT_FN_ATTRS
1917_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001918 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1919 (__v4sf)_mm256_cvtpd_ps(__A),
1920 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001921}
1922
1923static __inline__ __m128 __DEFAULT_FN_ATTRS
1924_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001925 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1926 (__v4sf)_mm256_cvtpd_ps(__A),
1927 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001928}
1929
1930static __inline__ __m128i __DEFAULT_FN_ATTRS
1931_mm_cvtpd_epu32 (__m128d __A) {
1932 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1933 (__v4si)
1934 _mm_setzero_si128 (),
1935 (__mmask8) -1);
1936}
1937
1938static __inline__ __m128i __DEFAULT_FN_ATTRS
1939_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
1940 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1941 (__v4si) __W,
1942 (__mmask8) __U);
1943}
1944
1945static __inline__ __m128i __DEFAULT_FN_ATTRS
1946_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
1947 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1948 (__v4si)
1949 _mm_setzero_si128 (),
1950 (__mmask8) __U);
1951}
1952
1953static __inline__ __m128i __DEFAULT_FN_ATTRS
1954_mm256_cvtpd_epu32 (__m256d __A) {
1955 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1956 (__v4si)
1957 _mm_setzero_si128 (),
1958 (__mmask8) -1);
1959}
1960
1961static __inline__ __m128i __DEFAULT_FN_ATTRS
1962_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
1963 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1964 (__v4si) __W,
1965 (__mmask8) __U);
1966}
1967
1968static __inline__ __m128i __DEFAULT_FN_ATTRS
1969_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
1970 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1971 (__v4si)
1972 _mm_setzero_si128 (),
1973 (__mmask8) __U);
1974}
1975
1976static __inline__ __m128i __DEFAULT_FN_ATTRS
1977_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001978 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1979 (__v4si)_mm_cvtps_epi32(__A),
1980 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001981}
1982
1983static __inline__ __m128i __DEFAULT_FN_ATTRS
1984_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001985 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1986 (__v4si)_mm_cvtps_epi32(__A),
1987 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001988}
1989
1990static __inline__ __m256i __DEFAULT_FN_ATTRS
1991_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001992 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1993 (__v8si)_mm256_cvtps_epi32(__A),
1994 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001995}
1996
1997static __inline__ __m256i __DEFAULT_FN_ATTRS
1998_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001999 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2000 (__v8si)_mm256_cvtps_epi32(__A),
2001 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002002}
2003
2004static __inline__ __m128d __DEFAULT_FN_ATTRS
2005_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002006 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2007 (__v2df)_mm_cvtps_pd(__A),
2008 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002009}
2010
2011static __inline__ __m128d __DEFAULT_FN_ATTRS
2012_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002013 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2014 (__v2df)_mm_cvtps_pd(__A),
2015 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002016}
2017
2018static __inline__ __m256d __DEFAULT_FN_ATTRS
2019_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002020 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2021 (__v4df)_mm256_cvtps_pd(__A),
2022 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002023}
2024
2025static __inline__ __m256d __DEFAULT_FN_ATTRS
2026_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002027 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2028 (__v4df)_mm256_cvtps_pd(__A),
2029 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002030}
2031
2032static __inline__ __m128i __DEFAULT_FN_ATTRS
2033_mm_cvtps_epu32 (__m128 __A) {
2034 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2035 (__v4si)
2036 _mm_setzero_si128 (),
2037 (__mmask8) -1);
2038}
2039
2040static __inline__ __m128i __DEFAULT_FN_ATTRS
2041_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2042 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2043 (__v4si) __W,
2044 (__mmask8) __U);
2045}
2046
2047static __inline__ __m128i __DEFAULT_FN_ATTRS
2048_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
2049 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2050 (__v4si)
2051 _mm_setzero_si128 (),
2052 (__mmask8) __U);
2053}
2054
2055static __inline__ __m256i __DEFAULT_FN_ATTRS
2056_mm256_cvtps_epu32 (__m256 __A) {
2057 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2058 (__v8si)
2059 _mm256_setzero_si256 (),
2060 (__mmask8) -1);
2061}
2062
2063static __inline__ __m256i __DEFAULT_FN_ATTRS
2064_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2065 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2066 (__v8si) __W,
2067 (__mmask8) __U);
2068}
2069
2070static __inline__ __m256i __DEFAULT_FN_ATTRS
2071_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2072 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2073 (__v8si)
2074 _mm256_setzero_si256 (),
2075 (__mmask8) __U);
2076}
2077
2078static __inline__ __m128i __DEFAULT_FN_ATTRS
2079_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2080 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2081 (__v4si) __W,
2082 (__mmask8) __U);
2083}
2084
2085static __inline__ __m128i __DEFAULT_FN_ATTRS
2086_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2087 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2088 (__v4si)
2089 _mm_setzero_si128 (),
2090 (__mmask8) __U);
2091}
2092
2093static __inline__ __m128i __DEFAULT_FN_ATTRS
2094_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002095 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2096 (__v4si)_mm256_cvttpd_epi32(__A),
2097 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002098}
2099
2100static __inline__ __m128i __DEFAULT_FN_ATTRS
2101_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002102 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2103 (__v4si)_mm256_cvttpd_epi32(__A),
2104 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002105}
2106
2107static __inline__ __m128i __DEFAULT_FN_ATTRS
2108_mm_cvttpd_epu32 (__m128d __A) {
2109 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2110 (__v4si)
2111 _mm_setzero_si128 (),
2112 (__mmask8) -1);
2113}
2114
2115static __inline__ __m128i __DEFAULT_FN_ATTRS
2116_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2117 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2118 (__v4si) __W,
2119 (__mmask8) __U);
2120}
2121
2122static __inline__ __m128i __DEFAULT_FN_ATTRS
2123_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2124 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2125 (__v4si)
2126 _mm_setzero_si128 (),
2127 (__mmask8) __U);
2128}
2129
2130static __inline__ __m128i __DEFAULT_FN_ATTRS
2131_mm256_cvttpd_epu32 (__m256d __A) {
2132 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2133 (__v4si)
2134 _mm_setzero_si128 (),
2135 (__mmask8) -1);
2136}
2137
2138static __inline__ __m128i __DEFAULT_FN_ATTRS
2139_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2140 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2141 (__v4si) __W,
2142 (__mmask8) __U);
2143}
2144
2145static __inline__ __m128i __DEFAULT_FN_ATTRS
2146_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2147 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2148 (__v4si)
2149 _mm_setzero_si128 (),
2150 (__mmask8) __U);
2151}
2152
2153static __inline__ __m128i __DEFAULT_FN_ATTRS
2154_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002155 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2156 (__v4si)_mm_cvttps_epi32(__A),
2157 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002158}
2159
2160static __inline__ __m128i __DEFAULT_FN_ATTRS
2161_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002162 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2163 (__v4si)_mm_cvttps_epi32(__A),
2164 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002165}
2166
2167static __inline__ __m256i __DEFAULT_FN_ATTRS
2168_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002169 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2170 (__v8si)_mm256_cvttps_epi32(__A),
2171 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002172}
2173
2174static __inline__ __m256i __DEFAULT_FN_ATTRS
2175_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002176 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2177 (__v8si)_mm256_cvttps_epi32(__A),
2178 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002179}
2180
2181static __inline__ __m128i __DEFAULT_FN_ATTRS
2182_mm_cvttps_epu32 (__m128 __A) {
2183 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2184 (__v4si)
2185 _mm_setzero_si128 (),
2186 (__mmask8) -1);
2187}
2188
2189static __inline__ __m128i __DEFAULT_FN_ATTRS
2190_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2191 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2192 (__v4si) __W,
2193 (__mmask8) __U);
2194}
2195
2196static __inline__ __m128i __DEFAULT_FN_ATTRS
2197_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2198 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2199 (__v4si)
2200 _mm_setzero_si128 (),
2201 (__mmask8) __U);
2202}
2203
2204static __inline__ __m256i __DEFAULT_FN_ATTRS
2205_mm256_cvttps_epu32 (__m256 __A) {
2206 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2207 (__v8si)
2208 _mm256_setzero_si256 (),
2209 (__mmask8) -1);
2210}
2211
2212static __inline__ __m256i __DEFAULT_FN_ATTRS
2213_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2214 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2215 (__v8si) __W,
2216 (__mmask8) __U);
2217}
2218
2219static __inline__ __m256i __DEFAULT_FN_ATTRS
2220_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2221 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2222 (__v8si)
2223 _mm256_setzero_si256 (),
2224 (__mmask8) __U);
2225}
2226
2227static __inline__ __m128d __DEFAULT_FN_ATTRS
2228_mm_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002229 return (__m128d) __builtin_convertvector(
2230 __builtin_shufflevector((__v4su)__A, (__v4su)__A, 0, 1), __v2df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002231}
2232
2233static __inline__ __m128d __DEFAULT_FN_ATTRS
2234_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002235 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2236 (__v2df)_mm_cvtepu32_pd(__A),
2237 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002238}
2239
2240static __inline__ __m128d __DEFAULT_FN_ATTRS
2241_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002242 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2243 (__v2df)_mm_cvtepu32_pd(__A),
2244 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002245}
2246
2247static __inline__ __m256d __DEFAULT_FN_ATTRS
2248_mm256_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002249 return (__m256d)__builtin_convertvector((__v4su)__A, __v4df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002250}
2251
2252static __inline__ __m256d __DEFAULT_FN_ATTRS
2253_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002254 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2255 (__v4df)_mm256_cvtepu32_pd(__A),
2256 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002257}
2258
2259static __inline__ __m256d __DEFAULT_FN_ATTRS
2260_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002261 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2262 (__v4df)_mm256_cvtepu32_pd(__A),
2263 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002264}
2265
2266static __inline__ __m128 __DEFAULT_FN_ATTRS
2267_mm_cvtepu32_ps (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002268 return (__m128)__builtin_convertvector((__v4su)__A, __v4sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002269}
2270
2271static __inline__ __m128 __DEFAULT_FN_ATTRS
2272_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002273 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2274 (__v4sf)_mm_cvtepu32_ps(__A),
2275 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002276}
2277
2278static __inline__ __m128 __DEFAULT_FN_ATTRS
2279_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002280 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2281 (__v4sf)_mm_cvtepu32_ps(__A),
2282 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002283}
2284
2285static __inline__ __m256 __DEFAULT_FN_ATTRS
2286_mm256_cvtepu32_ps (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002287 return (__m256)__builtin_convertvector((__v8su)__A, __v8sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002288}
2289
2290static __inline__ __m256 __DEFAULT_FN_ATTRS
2291_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002292 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2293 (__v8sf)_mm256_cvtepu32_ps(__A),
2294 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002295}
2296
2297static __inline__ __m256 __DEFAULT_FN_ATTRS
2298_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002299 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2300 (__v8sf)_mm256_cvtepu32_ps(__A),
2301 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002302}
2303
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002304static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002305_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2306 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2307 (__v2df)_mm_div_pd(__A, __B),
2308 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002309}
2310
2311static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002312_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2313 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2314 (__v2df)_mm_div_pd(__A, __B),
2315 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002316}
2317
2318static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002319_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2320 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2321 (__v4df)_mm256_div_pd(__A, __B),
2322 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002323}
2324
2325static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002326_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2327 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2328 (__v4df)_mm256_div_pd(__A, __B),
2329 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002330}
2331
2332static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002333_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2334 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2335 (__v4sf)_mm_div_ps(__A, __B),
2336 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002337}
2338
2339static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002340_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2341 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2342 (__v4sf)_mm_div_ps(__A, __B),
2343 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002344}
2345
2346static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002347_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2348 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2349 (__v8sf)_mm256_div_ps(__A, __B),
2350 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002351}
2352
2353static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002354_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2355 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2356 (__v8sf)_mm256_div_ps(__A, __B),
2357 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002358}
2359
2360static __inline__ __m128d __DEFAULT_FN_ATTRS
2361_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2362 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2363 (__v2df) __W,
2364 (__mmask8) __U);
2365}
2366
2367static __inline__ __m128d __DEFAULT_FN_ATTRS
2368_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2369 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2370 (__v2df)
2371 _mm_setzero_pd (),
2372 (__mmask8) __U);
2373}
2374
2375static __inline__ __m256d __DEFAULT_FN_ATTRS
2376_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2377 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2378 (__v4df) __W,
2379 (__mmask8) __U);
2380}
2381
2382static __inline__ __m256d __DEFAULT_FN_ATTRS
2383_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2384 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2385 (__v4df)
2386 _mm256_setzero_pd (),
2387 (__mmask8) __U);
2388}
2389
2390static __inline__ __m128i __DEFAULT_FN_ATTRS
2391_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2392 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2393 (__v2di) __W,
2394 (__mmask8) __U);
2395}
2396
2397static __inline__ __m128i __DEFAULT_FN_ATTRS
2398_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2399 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2400 (__v2di)
2401 _mm_setzero_si128 (),
2402 (__mmask8) __U);
2403}
2404
2405static __inline__ __m256i __DEFAULT_FN_ATTRS
2406_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2407 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2408 (__v4di) __W,
2409 (__mmask8) __U);
2410}
2411
2412static __inline__ __m256i __DEFAULT_FN_ATTRS
2413_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2414 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2415 (__v4di)
2416 _mm256_setzero_si256 (),
2417 (__mmask8) __U);
2418}
2419
2420static __inline__ __m128d __DEFAULT_FN_ATTRS
2421_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2422 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2423 (__v2df) __W,
2424 (__mmask8)
2425 __U);
2426}
2427
2428static __inline__ __m128d __DEFAULT_FN_ATTRS
2429_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2430 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2431 (__v2df)
2432 _mm_setzero_pd (),
2433 (__mmask8)
2434 __U);
2435}
2436
2437static __inline__ __m256d __DEFAULT_FN_ATTRS
2438_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2439 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2440 (__v4df) __W,
2441 (__mmask8)
2442 __U);
2443}
2444
2445static __inline__ __m256d __DEFAULT_FN_ATTRS
2446_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2447 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2448 (__v4df)
2449 _mm256_setzero_pd (),
2450 (__mmask8)
2451 __U);
2452}
2453
2454static __inline__ __m128i __DEFAULT_FN_ATTRS
2455_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2456 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2457 (__v2di) __W,
2458 (__mmask8)
2459 __U);
2460}
2461
2462static __inline__ __m128i __DEFAULT_FN_ATTRS
2463_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2464 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2465 (__v2di)
2466 _mm_setzero_si128 (),
2467 (__mmask8)
2468 __U);
2469}
2470
2471static __inline__ __m256i __DEFAULT_FN_ATTRS
2472_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2473 void const *__P) {
2474 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2475 (__v4di) __W,
2476 (__mmask8)
2477 __U);
2478}
2479
2480static __inline__ __m256i __DEFAULT_FN_ATTRS
2481_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2482 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2483 (__v4di)
2484 _mm256_setzero_si256 (),
2485 (__mmask8)
2486 __U);
2487}
2488
2489static __inline__ __m128 __DEFAULT_FN_ATTRS
2490_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2491 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2492 (__v4sf) __W,
2493 (__mmask8) __U);
2494}
2495
2496static __inline__ __m128 __DEFAULT_FN_ATTRS
2497_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2498 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2499 (__v4sf)
2500 _mm_setzero_ps (),
2501 (__mmask8)
2502 __U);
2503}
2504
2505static __inline__ __m256 __DEFAULT_FN_ATTRS
2506_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2507 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2508 (__v8sf) __W,
2509 (__mmask8) __U);
2510}
2511
2512static __inline__ __m256 __DEFAULT_FN_ATTRS
2513_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2514 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2515 (__v8sf)
2516 _mm256_setzero_ps (),
2517 (__mmask8)
2518 __U);
2519}
2520
2521static __inline__ __m128i __DEFAULT_FN_ATTRS
2522_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2523 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2524 (__v4si) __W,
2525 (__mmask8)
2526 __U);
2527}
2528
2529static __inline__ __m128i __DEFAULT_FN_ATTRS
2530_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2531 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2532 (__v4si)
2533 _mm_setzero_si128 (),
2534 (__mmask8) __U);
2535}
2536
2537static __inline__ __m256i __DEFAULT_FN_ATTRS
2538_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2539 void const *__P) {
2540 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2541 (__v8si) __W,
2542 (__mmask8)
2543 __U);
2544}
2545
2546static __inline__ __m256i __DEFAULT_FN_ATTRS
2547_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2548 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2549 (__v8si)
2550 _mm256_setzero_si256 (),
2551 (__mmask8)
2552 __U);
2553}
2554
2555static __inline__ __m128 __DEFAULT_FN_ATTRS
2556_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2557 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2558 (__v4sf) __W,
2559 (__mmask8) __U);
2560}
2561
2562static __inline__ __m128 __DEFAULT_FN_ATTRS
2563_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2564 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2565 (__v4sf)
2566 _mm_setzero_ps (),
2567 (__mmask8) __U);
2568}
2569
2570static __inline__ __m256 __DEFAULT_FN_ATTRS
2571_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2572 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2573 (__v8sf) __W,
2574 (__mmask8) __U);
2575}
2576
2577static __inline__ __m256 __DEFAULT_FN_ATTRS
2578_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2579 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2580 (__v8sf)
2581 _mm256_setzero_ps (),
2582 (__mmask8) __U);
2583}
2584
2585static __inline__ __m128i __DEFAULT_FN_ATTRS
2586_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2587 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2588 (__v4si) __W,
2589 (__mmask8) __U);
2590}
2591
2592static __inline__ __m128i __DEFAULT_FN_ATTRS
2593_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2594 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2595 (__v4si)
2596 _mm_setzero_si128 (),
2597 (__mmask8) __U);
2598}
2599
2600static __inline__ __m256i __DEFAULT_FN_ATTRS
2601_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2602 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2603 (__v8si) __W,
2604 (__mmask8) __U);
2605}
2606
2607static __inline__ __m256i __DEFAULT_FN_ATTRS
2608_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2609 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2610 (__v8si)
2611 _mm256_setzero_si256 (),
2612 (__mmask8) __U);
2613}
2614
2615static __inline__ __m128d __DEFAULT_FN_ATTRS
2616_mm_getexp_pd (__m128d __A) {
2617 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2618 (__v2df)
2619 _mm_setzero_pd (),
2620 (__mmask8) -1);
2621}
2622
2623static __inline__ __m128d __DEFAULT_FN_ATTRS
2624_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2625 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2626 (__v2df) __W,
2627 (__mmask8) __U);
2628}
2629
2630static __inline__ __m128d __DEFAULT_FN_ATTRS
2631_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2632 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2633 (__v2df)
2634 _mm_setzero_pd (),
2635 (__mmask8) __U);
2636}
2637
2638static __inline__ __m256d __DEFAULT_FN_ATTRS
2639_mm256_getexp_pd (__m256d __A) {
2640 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2641 (__v4df)
2642 _mm256_setzero_pd (),
2643 (__mmask8) -1);
2644}
2645
2646static __inline__ __m256d __DEFAULT_FN_ATTRS
2647_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2648 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2649 (__v4df) __W,
2650 (__mmask8) __U);
2651}
2652
2653static __inline__ __m256d __DEFAULT_FN_ATTRS
2654_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2655 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2656 (__v4df)
2657 _mm256_setzero_pd (),
2658 (__mmask8) __U);
2659}
2660
2661static __inline__ __m128 __DEFAULT_FN_ATTRS
2662_mm_getexp_ps (__m128 __A) {
2663 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2664 (__v4sf)
2665 _mm_setzero_ps (),
2666 (__mmask8) -1);
2667}
2668
2669static __inline__ __m128 __DEFAULT_FN_ATTRS
2670_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2671 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2672 (__v4sf) __W,
2673 (__mmask8) __U);
2674}
2675
2676static __inline__ __m128 __DEFAULT_FN_ATTRS
2677_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
2678 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2679 (__v4sf)
2680 _mm_setzero_ps (),
2681 (__mmask8) __U);
2682}
2683
2684static __inline__ __m256 __DEFAULT_FN_ATTRS
2685_mm256_getexp_ps (__m256 __A) {
2686 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2687 (__v8sf)
2688 _mm256_setzero_ps (),
2689 (__mmask8) -1);
2690}
2691
2692static __inline__ __m256 __DEFAULT_FN_ATTRS
2693_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2694 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2695 (__v8sf) __W,
2696 (__mmask8) __U);
2697}
2698
2699static __inline__ __m256 __DEFAULT_FN_ATTRS
2700_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
2701 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2702 (__v8sf)
2703 _mm256_setzero_ps (),
2704 (__mmask8) __U);
2705}
2706
2707static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002708_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2709 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2710 (__v2df)_mm_max_pd(__A, __B),
2711 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002712}
2713
2714static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002715_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2716 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2717 (__v2df)_mm_max_pd(__A, __B),
2718 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002719}
2720
2721static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002722_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2723 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2724 (__v4df)_mm256_max_pd(__A, __B),
2725 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002726}
2727
2728static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002729_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2730 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2731 (__v4df)_mm256_max_pd(__A, __B),
2732 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002733}
2734
2735static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002736_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2737 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2738 (__v4sf)_mm_max_ps(__A, __B),
2739 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002740}
2741
2742static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002743_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2744 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2745 (__v4sf)_mm_max_ps(__A, __B),
2746 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002747}
2748
2749static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002750_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2751 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2752 (__v8sf)_mm256_max_ps(__A, __B),
2753 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002754}
2755
2756static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002757_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2758 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2759 (__v8sf)_mm256_max_ps(__A, __B),
2760 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002761}
2762
2763static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002764_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2765 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2766 (__v2df)_mm_min_pd(__A, __B),
2767 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002768}
2769
2770static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002771_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2772 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2773 (__v2df)_mm_min_pd(__A, __B),
2774 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002775}
2776
2777static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002778_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2779 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2780 (__v4df)_mm256_min_pd(__A, __B),
2781 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002782}
2783
2784static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002785_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2786 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2787 (__v4df)_mm256_min_pd(__A, __B),
2788 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002789}
2790
2791static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002792_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2793 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2794 (__v4sf)_mm_min_ps(__A, __B),
2795 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002796}
2797
2798static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002799_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2800 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2801 (__v4sf)_mm_min_ps(__A, __B),
2802 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002803}
2804
2805static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002806_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2807 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2808 (__v8sf)_mm256_min_ps(__A, __B),
2809 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002810}
2811
2812static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper160ca842016-10-29 19:02:03 +00002813_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2814 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2815 (__v8sf)_mm256_min_ps(__A, __B),
2816 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002817}
2818
2819static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002820_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2821 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2822 (__v2df)_mm_mul_pd(__A, __B),
2823 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002824}
2825
2826static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002827_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2828 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2829 (__v2df)_mm_mul_pd(__A, __B),
2830 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002831}
2832
2833static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002834_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2835 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2836 (__v4df)_mm256_mul_pd(__A, __B),
2837 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002838}
2839
2840static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002841_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2842 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2843 (__v4df)_mm256_mul_pd(__A, __B),
2844 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002845}
2846
2847static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002848_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2849 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2850 (__v4sf)_mm_mul_ps(__A, __B),
2851 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002852}
2853
2854static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002855_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2856 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2857 (__v4sf)_mm_mul_ps(__A, __B),
2858 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002859}
2860
2861static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002862_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2863 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2864 (__v8sf)_mm256_mul_ps(__A, __B),
2865 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002866}
2867
2868static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper2dfab632016-09-04 18:30:17 +00002869_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2870 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2871 (__v8sf)_mm256_mul_ps(__A, __B),
2872 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002873}
2874
2875static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002876_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
2877 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2878 (__v4si)_mm_abs_epi32(__A),
2879 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002880}
2881
2882static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002883_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
2884 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2885 (__v4si)_mm_abs_epi32(__A),
2886 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002887}
2888
2889static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002890_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
2891 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2892 (__v8si)_mm256_abs_epi32(__A),
2893 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002894}
2895
2896static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper78a9c402016-10-22 21:24:38 +00002897_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
2898 return (__m256i)__builtin_ia32_selectd_256((__mmask16)__U,
2899 (__v8si)_mm256_abs_epi32(__A),
2900 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002901}
2902
2903static __inline__ __m128i __DEFAULT_FN_ATTRS
2904_mm_abs_epi64 (__m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002905 return (__m128i)__builtin_ia32_pabsq128((__v2di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002906}
2907
2908static __inline__ __m128i __DEFAULT_FN_ATTRS
2909_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002910 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2911 (__v2di)_mm_abs_epi64(__A),
2912 (__v2di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002913}
2914
2915static __inline__ __m128i __DEFAULT_FN_ATTRS
2916_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002917 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2918 (__v2di)_mm_abs_epi64(__A),
2919 (__v2di)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002920}
2921
2922static __inline__ __m256i __DEFAULT_FN_ATTRS
2923_mm256_abs_epi64 (__m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002924 return (__m256i)__builtin_ia32_pabsq256 ((__v4di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002925}
2926
2927static __inline__ __m256i __DEFAULT_FN_ATTRS
2928_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002929 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2930 (__v4di)_mm256_abs_epi64(__A),
2931 (__v4di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002932}
2933
2934static __inline__ __m256i __DEFAULT_FN_ATTRS
2935_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002936 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2937 (__v4di)_mm256_abs_epi64(__A),
2938 (__v4di)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002939}
2940
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002941static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002942_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
2943 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2944 (__v4si)_mm_max_epi32(__A, __B),
2945 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002946}
2947
2948static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002949_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2950 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2951 (__v4si)_mm_max_epi32(__A, __B),
2952 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002953}
2954
2955static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002956_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
2957 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2958 (__v8si)_mm256_max_epi32(__A, __B),
2959 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002960}
2961
2962static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00002963_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2964 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2965 (__v8si)_mm256_max_epi32(__A, __B),
2966 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002967}
2968
2969static __inline__ __m128i __DEFAULT_FN_ATTRS
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002970_mm_max_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002971 return (__m128i)__builtin_ia32_pmaxsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002972}
2973
Craig Topperf2043b02018-05-23 04:51:54 +00002974static __inline__ __m128i __DEFAULT_FN_ATTRS
2975_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
2976 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2977 (__v2di)_mm_max_epi64(__A, __B),
2978 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002979}
2980
Craig Topperf2043b02018-05-23 04:51:54 +00002981static __inline__ __m128i __DEFAULT_FN_ATTRS
2982_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2983 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2984 (__v2di)_mm_max_epi64(__A, __B),
2985 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002986}
2987
2988static __inline__ __m256i __DEFAULT_FN_ATTRS
2989_mm256_max_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002990 return (__m256i)__builtin_ia32_pmaxsq256((__v4di)__A, (__v4di)__B);
2991}
2992
2993static __inline__ __m256i __DEFAULT_FN_ATTRS
2994_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
2995 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
2996 (__v4di)_mm256_max_epi64(__A, __B),
2997 (__v4di)_mm256_setzero_si256());
2998}
2999
3000static __inline__ __m256i __DEFAULT_FN_ATTRS
3001_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3002 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3003 (__v4di)_mm256_max_epi64(__A, __B),
3004 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003005}
3006
3007static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003008_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3009 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3010 (__v4si)_mm_max_epu32(__A, __B),
3011 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003012}
3013
3014static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003015_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3016 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3017 (__v4si)_mm_max_epu32(__A, __B),
3018 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003019}
3020
3021static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003022_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3023 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3024 (__v8si)_mm256_max_epu32(__A, __B),
3025 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003026}
3027
3028static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003029_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3030 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3031 (__v8si)_mm256_max_epu32(__A, __B),
3032 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003033}
3034
3035static __inline__ __m128i __DEFAULT_FN_ATTRS
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003036_mm_max_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003037 return (__m128i)__builtin_ia32_pmaxuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003038}
3039
3040static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003041_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3042 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3043 (__v2di)_mm_max_epu64(__A, __B),
3044 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003045}
3046
Craig Topperf2043b02018-05-23 04:51:54 +00003047static __inline__ __m128i __DEFAULT_FN_ATTRS
3048_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3049 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3050 (__v2di)_mm_max_epu64(__A, __B),
3051 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003052}
3053
3054static __inline__ __m256i __DEFAULT_FN_ATTRS
3055_mm256_max_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003056 return (__m256i)__builtin_ia32_pmaxuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003057}
3058
3059static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003060_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3061 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3062 (__v4di)_mm256_max_epu64(__A, __B),
3063 (__v4di)_mm256_setzero_si256());
3064}
3065
3066static __inline__ __m256i __DEFAULT_FN_ATTRS
3067_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3068 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3069 (__v4di)_mm256_max_epu64(__A, __B),
3070 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003071}
3072
3073static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003074_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3075 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3076 (__v4si)_mm_min_epi32(__A, __B),
3077 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003078}
3079
3080static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003081_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3082 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3083 (__v4si)_mm_min_epi32(__A, __B),
3084 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003085}
3086
3087static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003088_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3089 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3090 (__v8si)_mm256_min_epi32(__A, __B),
3091 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003092}
3093
3094static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003095_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3096 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3097 (__v8si)_mm256_min_epi32(__A, __B),
3098 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003099}
3100
3101static __inline__ __m128i __DEFAULT_FN_ATTRS
3102_mm_min_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003103 return (__m128i)__builtin_ia32_pminsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003104}
3105
3106static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003107_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3108 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3109 (__v2di)_mm_min_epi64(__A, __B),
3110 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003111}
3112
3113static __inline__ __m128i __DEFAULT_FN_ATTRS
3114_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003115 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3116 (__v2di)_mm_min_epi64(__A, __B),
3117 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003118}
3119
3120static __inline__ __m256i __DEFAULT_FN_ATTRS
3121_mm256_min_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003122 return (__m256i)__builtin_ia32_pminsq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003123}
3124
3125static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003126_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3127 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3128 (__v4di)_mm256_min_epi64(__A, __B),
3129 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003130}
3131
3132static __inline__ __m256i __DEFAULT_FN_ATTRS
3133_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003134 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3135 (__v4di)_mm256_min_epi64(__A, __B),
3136 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003137}
3138
3139static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003140_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3141 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3142 (__v4si)_mm_min_epu32(__A, __B),
3143 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003144}
3145
3146static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003147_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3148 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3149 (__v4si)_mm_min_epu32(__A, __B),
3150 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003151}
3152
3153static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003154_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3155 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3156 (__v8si)_mm256_min_epu32(__A, __B),
3157 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003158}
3159
3160static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Toppereee7c052016-10-23 23:57:30 +00003161_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3162 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3163 (__v8si)_mm256_min_epu32(__A, __B),
3164 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003165}
3166
3167static __inline__ __m128i __DEFAULT_FN_ATTRS
3168_mm_min_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003169 return (__m128i)__builtin_ia32_pminuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003170}
3171
3172static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003173_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3174 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3175 (__v2di)_mm_min_epu64(__A, __B),
3176 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003177}
3178
3179static __inline__ __m128i __DEFAULT_FN_ATTRS
3180_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003181 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3182 (__v2di)_mm_min_epu64(__A, __B),
3183 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003184}
3185
3186static __inline__ __m256i __DEFAULT_FN_ATTRS
3187_mm256_min_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003188 return (__m256i)__builtin_ia32_pminuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003189}
3190
3191static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topperf2043b02018-05-23 04:51:54 +00003192_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3193 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3194 (__v4di)_mm256_min_epu64(__A, __B),
3195 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003196}
3197
3198static __inline__ __m256i __DEFAULT_FN_ATTRS
3199_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003200 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3201 (__v4di)_mm256_min_epu64(__A, __B),
3202 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003203}
3204
Craig Topperc6338672018-05-31 00:51:20 +00003205#define _mm_roundscale_pd(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003206 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3207 (int)(imm), \
3208 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003209 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003210
3211
Craig Topperc6338672018-05-31 00:51:20 +00003212#define _mm_mask_roundscale_pd(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003213 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3214 (int)(imm), \
3215 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003216 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003217
3218
Craig Topperc6338672018-05-31 00:51:20 +00003219#define _mm_maskz_roundscale_pd(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003220 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3221 (int)(imm), \
3222 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003223 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003224
3225
Craig Topperc6338672018-05-31 00:51:20 +00003226#define _mm256_roundscale_pd(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003227 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3228 (int)(imm), \
3229 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003230 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003231
3232
Craig Topperc6338672018-05-31 00:51:20 +00003233#define _mm256_mask_roundscale_pd(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003234 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3235 (int)(imm), \
3236 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003237 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003238
3239
Craig Topperc6338672018-05-31 00:51:20 +00003240#define _mm256_maskz_roundscale_pd(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003241 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3242 (int)(imm), \
3243 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003244 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003245
Craig Topperc6338672018-05-31 00:51:20 +00003246#define _mm_roundscale_ps(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003247 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3248 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003249 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003250
3251
Craig Topperc6338672018-05-31 00:51:20 +00003252#define _mm_mask_roundscale_ps(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003253 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3254 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003255 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003256
3257
Craig Topperc6338672018-05-31 00:51:20 +00003258#define _mm_maskz_roundscale_ps(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003259 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3260 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003261 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003262
Craig Topperc6338672018-05-31 00:51:20 +00003263#define _mm256_roundscale_ps(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003264 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3265 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003266 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003267
Craig Topperc6338672018-05-31 00:51:20 +00003268#define _mm256_mask_roundscale_ps(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003269 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3270 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003271 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003272
3273
Craig Topperc6338672018-05-31 00:51:20 +00003274#define _mm256_maskz_roundscale_ps(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003275 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3276 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003277 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003278
3279static __inline__ __m128d __DEFAULT_FN_ATTRS
3280_mm_scalef_pd (__m128d __A, __m128d __B) {
3281 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3282 (__v2df) __B,
3283 (__v2df)
3284 _mm_setzero_pd (),
3285 (__mmask8) -1);
3286}
3287
3288static __inline__ __m128d __DEFAULT_FN_ATTRS
3289_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3290 __m128d __B) {
3291 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3292 (__v2df) __B,
3293 (__v2df) __W,
3294 (__mmask8) __U);
3295}
3296
3297static __inline__ __m128d __DEFAULT_FN_ATTRS
3298_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3299 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3300 (__v2df) __B,
3301 (__v2df)
3302 _mm_setzero_pd (),
3303 (__mmask8) __U);
3304}
3305
3306static __inline__ __m256d __DEFAULT_FN_ATTRS
3307_mm256_scalef_pd (__m256d __A, __m256d __B) {
3308 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3309 (__v4df) __B,
3310 (__v4df)
3311 _mm256_setzero_pd (),
3312 (__mmask8) -1);
3313}
3314
3315static __inline__ __m256d __DEFAULT_FN_ATTRS
3316_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3317 __m256d __B) {
3318 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3319 (__v4df) __B,
3320 (__v4df) __W,
3321 (__mmask8) __U);
3322}
3323
3324static __inline__ __m256d __DEFAULT_FN_ATTRS
3325_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3326 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3327 (__v4df) __B,
3328 (__v4df)
3329 _mm256_setzero_pd (),
3330 (__mmask8) __U);
3331}
3332
3333static __inline__ __m128 __DEFAULT_FN_ATTRS
3334_mm_scalef_ps (__m128 __A, __m128 __B) {
3335 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3336 (__v4sf) __B,
3337 (__v4sf)
3338 _mm_setzero_ps (),
3339 (__mmask8) -1);
3340}
3341
3342static __inline__ __m128 __DEFAULT_FN_ATTRS
3343_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3344 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3345 (__v4sf) __B,
3346 (__v4sf) __W,
3347 (__mmask8) __U);
3348}
3349
3350static __inline__ __m128 __DEFAULT_FN_ATTRS
3351_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3352 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3353 (__v4sf) __B,
3354 (__v4sf)
3355 _mm_setzero_ps (),
3356 (__mmask8) __U);
3357}
3358
3359static __inline__ __m256 __DEFAULT_FN_ATTRS
3360_mm256_scalef_ps (__m256 __A, __m256 __B) {
3361 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3362 (__v8sf) __B,
3363 (__v8sf)
3364 _mm256_setzero_ps (),
3365 (__mmask8) -1);
3366}
3367
3368static __inline__ __m256 __DEFAULT_FN_ATTRS
3369_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3370 __m256 __B) {
3371 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3372 (__v8sf) __B,
3373 (__v8sf) __W,
3374 (__mmask8) __U);
3375}
3376
3377static __inline__ __m256 __DEFAULT_FN_ATTRS
3378_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3379 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3380 (__v8sf) __B,
3381 (__v8sf)
3382 _mm256_setzero_ps (),
3383 (__mmask8) __U);
3384}
3385
Craig Topperc6338672018-05-31 00:51:20 +00003386#define _mm_i64scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003387 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3388 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003389 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003390
Craig Topperc6338672018-05-31 00:51:20 +00003391#define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003392 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3393 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003394 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003395
Craig Topperc6338672018-05-31 00:51:20 +00003396#define _mm_i64scatter_epi64(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003397 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3398 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003399 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003400
Craig Topperc6338672018-05-31 00:51:20 +00003401#define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003402 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3403 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003404 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003405
Craig Topperc6338672018-05-31 00:51:20 +00003406#define _mm256_i64scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003407 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3408 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003409 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003410
Craig Topperc6338672018-05-31 00:51:20 +00003411#define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003412 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3413 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003414 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003415
Craig Topperc6338672018-05-31 00:51:20 +00003416#define _mm256_i64scatter_epi64(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003417 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3418 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003419 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003420
Craig Topperc6338672018-05-31 00:51:20 +00003421#define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003422 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3423 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003424 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003425
Craig Topperc6338672018-05-31 00:51:20 +00003426#define _mm_i64scatter_ps(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003427 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3428 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003429 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003430
Craig Topperc6338672018-05-31 00:51:20 +00003431#define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003432 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3433 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003434 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003435
Craig Topperc6338672018-05-31 00:51:20 +00003436#define _mm_i64scatter_epi32(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003437 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3438 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003439 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003440
Craig Topperc6338672018-05-31 00:51:20 +00003441#define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003442 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3443 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003444 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003445
Craig Topperc6338672018-05-31 00:51:20 +00003446#define _mm256_i64scatter_ps(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003447 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3448 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003449 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003450
Craig Topperc6338672018-05-31 00:51:20 +00003451#define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003452 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3453 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003454 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003455
Craig Topperc6338672018-05-31 00:51:20 +00003456#define _mm256_i64scatter_epi32(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003457 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
3458 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003459 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003460
Craig Topperc6338672018-05-31 00:51:20 +00003461#define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003462 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3463 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003464 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003465
Craig Topperc6338672018-05-31 00:51:20 +00003466#define _mm_i32scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003467 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3468 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003469 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003470
Craig Topperc6338672018-05-31 00:51:20 +00003471#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) \
3472 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3473 (__v4si)(__m128i)(index), \
3474 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003475
Craig Topperc6338672018-05-31 00:51:20 +00003476#define _mm_i32scatter_epi64(addr, index, v1, scale) \
3477 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
3478 (__v4si)(__m128i)(index), \
3479 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003480
Craig Topperc6338672018-05-31 00:51:20 +00003481#define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) \
3482 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3483 (__v4si)(__m128i)(index), \
3484 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003485
Craig Topperc6338672018-05-31 00:51:20 +00003486#define _mm256_i32scatter_pd(addr, index, v1, scale) \
3487 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
3488 (__v4si)(__m128i)(index), \
3489 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003490
Craig Topperc6338672018-05-31 00:51:20 +00003491#define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) \
3492 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3493 (__v4si)(__m128i)(index), \
3494 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003495
Craig Topperc6338672018-05-31 00:51:20 +00003496#define _mm256_i32scatter_epi64(addr, index, v1, scale) \
3497 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
3498 (__v4si)(__m128i)(index), \
3499 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003500
Craig Topperc6338672018-05-31 00:51:20 +00003501#define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) \
3502 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3503 (__v4si)(__m128i)(index), \
3504 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003505
Craig Topperc6338672018-05-31 00:51:20 +00003506#define _mm_i32scatter_ps(addr, index, v1, scale) \
3507 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
3508 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3509 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003510
Craig Topperc6338672018-05-31 00:51:20 +00003511#define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) \
3512 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3513 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3514 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003515
Craig Topperc6338672018-05-31 00:51:20 +00003516#define _mm_i32scatter_epi32(addr, index, v1, scale) \
3517 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
3518 (__v4si)(__m128i)(index), \
3519 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003520
Craig Topperc6338672018-05-31 00:51:20 +00003521#define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) \
3522 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3523 (__v4si)(__m128i)(index), \
3524 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003525
Craig Topperc6338672018-05-31 00:51:20 +00003526#define _mm256_i32scatter_ps(addr, index, v1, scale) \
3527 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
3528 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3529 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003530
Craig Topperc6338672018-05-31 00:51:20 +00003531#define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) \
3532 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3533 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3534 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003535
Craig Topperc6338672018-05-31 00:51:20 +00003536#define _mm256_i32scatter_epi32(addr, index, v1, scale) \
3537 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
3538 (__v8si)(__m256i)(index), \
3539 (__v8si)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003540
Craig Topperc6338672018-05-31 00:51:20 +00003541#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) \
3542 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3543 (__v8si)(__m256i)(index), \
3544 (__v8si)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003545
Craig Topperc6338672018-05-31 00:51:20 +00003546 static __inline__ __m128d __DEFAULT_FN_ATTRS
3547 _mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3548 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3549 (__v2df)_mm_sqrt_pd(__A),
3550 (__v2df)__W);
3551 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003552
Craig Topperc6338672018-05-31 00:51:20 +00003553 static __inline__ __m128d __DEFAULT_FN_ATTRS
3554 _mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3555 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3556 (__v2df)_mm_sqrt_pd(__A),
3557 (__v2df)_mm_setzero_pd());
3558 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003559
Craig Topperc6338672018-05-31 00:51:20 +00003560 static __inline__ __m256d __DEFAULT_FN_ATTRS
3561 _mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3562 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3563 (__v4df)_mm256_sqrt_pd(__A),
3564 (__v4df)__W);
3565 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003566
Craig Topperc6338672018-05-31 00:51:20 +00003567 static __inline__ __m256d __DEFAULT_FN_ATTRS
3568 _mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3569 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3570 (__v4df)_mm256_sqrt_pd(__A),
3571 (__v4df)_mm256_setzero_pd());
3572 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003573
Craig Topperc6338672018-05-31 00:51:20 +00003574 static __inline__ __m128 __DEFAULT_FN_ATTRS
3575 _mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3576 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3577 (__v4sf)_mm_sqrt_ps(__A),
3578 (__v4sf)__W);
3579 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003580
Craig Topperc6338672018-05-31 00:51:20 +00003581 static __inline__ __m128 __DEFAULT_FN_ATTRS
3582 _mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3583 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3584 (__v4sf)_mm_sqrt_ps(__A),
3585 (__v4sf)_mm_setzero_pd());
3586 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003587
Craig Topperc6338672018-05-31 00:51:20 +00003588 static __inline__ __m256 __DEFAULT_FN_ATTRS
3589 _mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3590 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3591 (__v8sf)_mm256_sqrt_ps(__A),
3592 (__v8sf)__W);
3593 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003594
Craig Topperc6338672018-05-31 00:51:20 +00003595 static __inline__ __m256 __DEFAULT_FN_ATTRS
3596 _mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3597 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3598 (__v8sf)_mm256_sqrt_ps(__A),
3599 (__v8sf)_mm256_setzero_ps());
3600 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003601
Craig Topperc6338672018-05-31 00:51:20 +00003602 static __inline__ __m128d __DEFAULT_FN_ATTRS
3603 _mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3604 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3605 (__v2df)_mm_sub_pd(__A, __B),
3606 (__v2df)__W);
3607 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003608
Craig Topperc6338672018-05-31 00:51:20 +00003609 static __inline__ __m128d __DEFAULT_FN_ATTRS
3610 _mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3611 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3612 (__v2df)_mm_sub_pd(__A, __B),
3613 (__v2df)_mm_setzero_pd());
3614 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003615
Craig Topperc6338672018-05-31 00:51:20 +00003616 static __inline__ __m256d __DEFAULT_FN_ATTRS
3617 _mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3618 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3619 (__v4df)_mm256_sub_pd(__A, __B),
3620 (__v4df)__W);
3621 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003622
Craig Topperc6338672018-05-31 00:51:20 +00003623 static __inline__ __m256d __DEFAULT_FN_ATTRS
3624 _mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3625 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3626 (__v4df)_mm256_sub_pd(__A, __B),
3627 (__v4df)_mm256_setzero_pd());
3628 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003629
Craig Topperc6338672018-05-31 00:51:20 +00003630 static __inline__ __m128 __DEFAULT_FN_ATTRS
3631 _mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3632 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3633 (__v4sf)_mm_sub_ps(__A, __B),
3634 (__v4sf)__W);
3635 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003636
Craig Topperc6338672018-05-31 00:51:20 +00003637 static __inline__ __m128 __DEFAULT_FN_ATTRS
3638 _mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3639 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3640 (__v4sf)_mm_sub_ps(__A, __B),
3641 (__v4sf)_mm_setzero_ps());
3642 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003643
Craig Topperc6338672018-05-31 00:51:20 +00003644 static __inline__ __m256 __DEFAULT_FN_ATTRS
3645 _mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3646 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3647 (__v8sf)_mm256_sub_ps(__A, __B),
3648 (__v8sf)__W);
3649 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003650
Craig Topperc6338672018-05-31 00:51:20 +00003651 static __inline__ __m256 __DEFAULT_FN_ATTRS
3652 _mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3653 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3654 (__v8sf)_mm256_sub_ps(__A, __B),
3655 (__v8sf)_mm256_setzero_ps());
3656 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003657
Craig Topperc6338672018-05-31 00:51:20 +00003658 static __inline__ __m128i __DEFAULT_FN_ATTRS
3659 _mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
3660 return (__m128i)__builtin_ia32_vpermi2vard128((__v4si) __A, (__v4si)__I,
3661 (__v4si)__B);
3662 }
Craig Topper68a272d2018-05-29 03:26:38 +00003663
Craig Topperc6338672018-05-31 00:51:20 +00003664 static __inline__ __m128i __DEFAULT_FN_ATTRS
3665 _mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I,
3666 __m128i __B) {
3667 return (__m128i)__builtin_ia32_selectd_128(__U,
3668 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3669 (__v4si)__A);
3670 }
Craig Topper68a272d2018-05-29 03:26:38 +00003671
Craig Topperc6338672018-05-31 00:51:20 +00003672 static __inline__ __m128i __DEFAULT_FN_ATTRS
3673 _mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,
3674 __m128i __B) {
3675 return (__m128i)__builtin_ia32_selectd_128(__U,
3676 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3677 (__v4si)__I);
3678 }
Craig Topper68a272d2018-05-29 03:26:38 +00003679
Craig Topperc6338672018-05-31 00:51:20 +00003680 static __inline__ __m128i __DEFAULT_FN_ATTRS
3681 _mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,
3682 __m128i __B) {
3683 return (__m128i)__builtin_ia32_selectd_128(__U,
3684 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3685 (__v4si)_mm_setzero_si128());
3686 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003687
Craig Topperc6338672018-05-31 00:51:20 +00003688 static __inline__ __m256i __DEFAULT_FN_ATTRS
3689 _mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
3690 return (__m256i)__builtin_ia32_vpermi2vard256((__v8si)__A, (__v8si) __I,
3691 (__v8si) __B);
3692 }
Craig Topper68a272d2018-05-29 03:26:38 +00003693
Craig Topperc6338672018-05-31 00:51:20 +00003694 static __inline__ __m256i __DEFAULT_FN_ATTRS
3695 _mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I,
3696 __m256i __B) {
3697 return (__m256i)__builtin_ia32_selectd_256(__U,
3698 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3699 (__v8si)__A);
3700 }
Craig Topper68a272d2018-05-29 03:26:38 +00003701
Craig Topperc6338672018-05-31 00:51:20 +00003702 static __inline__ __m256i __DEFAULT_FN_ATTRS
3703 _mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U,
3704 __m256i __B) {
3705 return (__m256i)__builtin_ia32_selectd_256(__U,
3706 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3707 (__v8si)__I);
3708 }
Craig Topper68a272d2018-05-29 03:26:38 +00003709
Craig Topperc6338672018-05-31 00:51:20 +00003710 static __inline__ __m256i __DEFAULT_FN_ATTRS
3711 _mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I,
3712 __m256i __B) {
3713 return (__m256i)__builtin_ia32_selectd_256(__U,
3714 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3715 (__v8si)_mm256_setzero_si256());
3716 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003717
Craig Topperc6338672018-05-31 00:51:20 +00003718 static __inline__ __m128d __DEFAULT_FN_ATTRS
3719 _mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
3720 return (__m128d)__builtin_ia32_vpermi2varpd128((__v2df)__A, (__v2di)__I,
3721 (__v2df)__B);
3722 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003723
Craig Topperc6338672018-05-31 00:51:20 +00003724 static __inline__ __m128d __DEFAULT_FN_ATTRS
3725 _mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
3726 return (__m128d)__builtin_ia32_selectpd_128(__U,
3727 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3728 (__v2df)__A);
3729 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003730
Craig Topperc6338672018-05-31 00:51:20 +00003731 static __inline__ __m128d __DEFAULT_FN_ATTRS
3732 _mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
3733 return (__m128d)__builtin_ia32_selectpd_128(__U,
3734 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3735 (__v2df)(__m128d)__I);
3736 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003737
Craig Topperc6338672018-05-31 00:51:20 +00003738 static __inline__ __m128d __DEFAULT_FN_ATTRS
3739 _mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
3740 return (__m128d)__builtin_ia32_selectpd_128(__U,
3741 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3742 (__v2df)_mm_setzero_pd());
3743 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003744
Craig Topperc6338672018-05-31 00:51:20 +00003745 static __inline__ __m256d __DEFAULT_FN_ATTRS
3746 _mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
3747 return (__m256d)__builtin_ia32_vpermi2varpd256((__v4df)__A, (__v4di)__I,
3748 (__v4df)__B);
3749 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003750
Craig Topperc6338672018-05-31 00:51:20 +00003751 static __inline__ __m256d __DEFAULT_FN_ATTRS
3752 _mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I,
3753 __m256d __B) {
3754 return (__m256d)__builtin_ia32_selectpd_256(__U,
3755 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3756 (__v4df)__A);
3757 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003758
Craig Topperc6338672018-05-31 00:51:20 +00003759 static __inline__ __m256d __DEFAULT_FN_ATTRS
3760 _mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,
3761 __m256d __B) {
3762 return (__m256d)__builtin_ia32_selectpd_256(__U,
3763 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3764 (__v4df)(__m256d)__I);
3765 }
Craig Topper68a272d2018-05-29 03:26:38 +00003766
Craig Topperc6338672018-05-31 00:51:20 +00003767 static __inline__ __m256d __DEFAULT_FN_ATTRS
3768 _mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,
3769 __m256d __B) {
3770 return (__m256d)__builtin_ia32_selectpd_256(__U,
3771 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3772 (__v4df)_mm256_setzero_pd());
3773 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003774
Craig Topperc6338672018-05-31 00:51:20 +00003775 static __inline__ __m128 __DEFAULT_FN_ATTRS
3776 _mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
3777 return (__m128)__builtin_ia32_vpermi2varps128((__v4sf)__A, (__v4si)__I,
3778 (__v4sf)__B);
3779 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003780
Craig Topperc6338672018-05-31 00:51:20 +00003781 static __inline__ __m128 __DEFAULT_FN_ATTRS
3782 _mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
3783 return (__m128)__builtin_ia32_selectps_128(__U,
3784 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3785 (__v4sf)__A);
3786 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003787
Craig Topperc6338672018-05-31 00:51:20 +00003788 static __inline__ __m128 __DEFAULT_FN_ATTRS
3789 _mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
3790 return (__m128)__builtin_ia32_selectps_128(__U,
3791 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3792 (__v4sf)(__m128)__I);
3793 }
Craig Topper68a272d2018-05-29 03:26:38 +00003794
Craig Topperc6338672018-05-31 00:51:20 +00003795 static __inline__ __m128 __DEFAULT_FN_ATTRS
3796 _mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
3797 return (__m128)__builtin_ia32_selectps_128(__U,
3798 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3799 (__v4sf)_mm_setzero_ps());
3800 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003801
Craig Topperc6338672018-05-31 00:51:20 +00003802 static __inline__ __m256 __DEFAULT_FN_ATTRS
3803 _mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
3804 return (__m256)__builtin_ia32_vpermi2varps256((__v8sf)__A, (__v8si)__I,
3805 (__v8sf) __B);
3806 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003807
Craig Topperc6338672018-05-31 00:51:20 +00003808 static __inline__ __m256 __DEFAULT_FN_ATTRS
3809 _mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
3810 return (__m256)__builtin_ia32_selectps_256(__U,
3811 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3812 (__v8sf)__A);
3813 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003814
Craig Topperc6338672018-05-31 00:51:20 +00003815 static __inline__ __m256 __DEFAULT_FN_ATTRS
3816 _mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,
3817 __m256 __B) {
3818 return (__m256)__builtin_ia32_selectps_256(__U,
3819 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3820 (__v8sf)(__m256)__I);
3821 }
Craig Topper68a272d2018-05-29 03:26:38 +00003822
Craig Topperc6338672018-05-31 00:51:20 +00003823 static __inline__ __m256 __DEFAULT_FN_ATTRS
3824 _mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I,
3825 __m256 __B) {
3826 return (__m256)__builtin_ia32_selectps_256(__U,
3827 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3828 (__v8sf)_mm256_setzero_ps());
3829 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003830
Craig Topperc6338672018-05-31 00:51:20 +00003831 static __inline__ __m128i __DEFAULT_FN_ATTRS
3832 _mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
3833 return (__m128i)__builtin_ia32_vpermi2varq128((__v2di)__A, (__v2di)__I,
3834 (__v2di)__B);
3835 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003836
Craig Topperc6338672018-05-31 00:51:20 +00003837 static __inline__ __m128i __DEFAULT_FN_ATTRS
3838 _mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I,
3839 __m128i __B) {
3840 return (__m128i)__builtin_ia32_selectq_128(__U,
3841 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3842 (__v2di)__A);
3843 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003844
Craig Topperc6338672018-05-31 00:51:20 +00003845 static __inline__ __m128i __DEFAULT_FN_ATTRS
3846 _mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,
3847 __m128i __B) {
3848 return (__m128i)__builtin_ia32_selectq_128(__U,
3849 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3850 (__v2di)__I);
3851 }
Craig Topper68a272d2018-05-29 03:26:38 +00003852
Craig Topperc6338672018-05-31 00:51:20 +00003853 static __inline__ __m128i __DEFAULT_FN_ATTRS
3854 _mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I,
3855 __m128i __B) {
3856 return (__m128i)__builtin_ia32_selectq_128(__U,
3857 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3858 (__v2di)_mm_setzero_si128());
3859 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003860
3861
Craig Topperc6338672018-05-31 00:51:20 +00003862 static __inline__ __m256i __DEFAULT_FN_ATTRS
3863 _mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
3864 return (__m256i)__builtin_ia32_vpermi2varq256((__v4di)__A, (__v4di) __I,
3865 (__v4di) __B);
3866 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003867
Craig Topperc6338672018-05-31 00:51:20 +00003868 static __inline__ __m256i __DEFAULT_FN_ATTRS
3869 _mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I,
3870 __m256i __B) {
3871 return (__m256i)__builtin_ia32_selectq_256(__U,
3872 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3873 (__v4di)__A);
3874 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003875
Craig Topperc6338672018-05-31 00:51:20 +00003876 static __inline__ __m256i __DEFAULT_FN_ATTRS
3877 _mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U,
3878 __m256i __B) {
3879 return (__m256i)__builtin_ia32_selectq_256(__U,
3880 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3881 (__v4di)__I);
3882 }
Craig Topper68a272d2018-05-29 03:26:38 +00003883
Craig Topperc6338672018-05-31 00:51:20 +00003884 static __inline__ __m256i __DEFAULT_FN_ATTRS
3885 _mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I,
3886 __m256i __B) {
3887 return (__m256i)__builtin_ia32_selectq_256(__U,
3888 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3889 (__v4di)_mm256_setzero_si256());
3890 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003891
Craig Topperc6338672018-05-31 00:51:20 +00003892 static __inline__ __m128i __DEFAULT_FN_ATTRS
3893 _mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
3894 {
3895 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3896 (__v4si)_mm_cvtepi8_epi32(__A),
3897 (__v4si)__W);
3898 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003899
Craig Topperc6338672018-05-31 00:51:20 +00003900 static __inline__ __m128i __DEFAULT_FN_ATTRS
3901 _mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
3902 {
3903 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3904 (__v4si)_mm_cvtepi8_epi32(__A),
3905 (__v4si)_mm_setzero_si128());
3906 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003907
Craig Topperc6338672018-05-31 00:51:20 +00003908 static __inline__ __m256i __DEFAULT_FN_ATTRS
3909 _mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
3910 {
3911 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3912 (__v8si)_mm256_cvtepi8_epi32(__A),
3913 (__v8si)__W);
3914 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003915
Craig Topperc6338672018-05-31 00:51:20 +00003916 static __inline__ __m256i __DEFAULT_FN_ATTRS
3917 _mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
3918 {
3919 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3920 (__v8si)_mm256_cvtepi8_epi32(__A),
3921 (__v8si)_mm256_setzero_si256());
3922 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003923
Craig Topperc6338672018-05-31 00:51:20 +00003924 static __inline__ __m128i __DEFAULT_FN_ATTRS
3925 _mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
3926 {
3927 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3928 (__v2di)_mm_cvtepi8_epi64(__A),
3929 (__v2di)__W);
3930 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003931
Craig Topperc6338672018-05-31 00:51:20 +00003932 static __inline__ __m128i __DEFAULT_FN_ATTRS
3933 _mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
3934 {
3935 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3936 (__v2di)_mm_cvtepi8_epi64(__A),
3937 (__v2di)_mm_setzero_si128());
3938 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003939
Craig Topperc6338672018-05-31 00:51:20 +00003940 static __inline__ __m256i __DEFAULT_FN_ATTRS
3941 _mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
3942 {
3943 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3944 (__v4di)_mm256_cvtepi8_epi64(__A),
3945 (__v4di)__W);
3946 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003947
Craig Topperc6338672018-05-31 00:51:20 +00003948 static __inline__ __m256i __DEFAULT_FN_ATTRS
3949 _mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
3950 {
3951 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3952 (__v4di)_mm256_cvtepi8_epi64(__A),
3953 (__v4di)_mm256_setzero_si256());
3954 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003955
Craig Topperc6338672018-05-31 00:51:20 +00003956 static __inline__ __m128i __DEFAULT_FN_ATTRS
3957 _mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
3958 {
3959 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3960 (__v2di)_mm_cvtepi32_epi64(__X),
3961 (__v2di)__W);
3962 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003963
Craig Topperc6338672018-05-31 00:51:20 +00003964 static __inline__ __m128i __DEFAULT_FN_ATTRS
3965 _mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
3966 {
3967 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3968 (__v2di)_mm_cvtepi32_epi64(__X),
3969 (__v2di)_mm_setzero_si128());
3970 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003971
Craig Topperc6338672018-05-31 00:51:20 +00003972 static __inline__ __m256i __DEFAULT_FN_ATTRS
3973 _mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
3974 {
3975 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3976 (__v4di)_mm256_cvtepi32_epi64(__X),
3977 (__v4di)__W);
3978 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003979
Craig Topperc6338672018-05-31 00:51:20 +00003980 static __inline__ __m256i __DEFAULT_FN_ATTRS
3981 _mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
3982 {
3983 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3984 (__v4di)_mm256_cvtepi32_epi64(__X),
3985 (__v4di)_mm256_setzero_si256());
3986 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003987
Craig Topperc6338672018-05-31 00:51:20 +00003988 static __inline__ __m128i __DEFAULT_FN_ATTRS
3989 _mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
3990 {
3991 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3992 (__v4si)_mm_cvtepi16_epi32(__A),
3993 (__v4si)__W);
3994 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003995
Craig Topperc6338672018-05-31 00:51:20 +00003996 static __inline__ __m128i __DEFAULT_FN_ATTRS
3997 _mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
3998 {
3999 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4000 (__v4si)_mm_cvtepi16_epi32(__A),
4001 (__v4si)_mm_setzero_si128());
4002 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004003
Craig Topperc6338672018-05-31 00:51:20 +00004004 static __inline__ __m256i __DEFAULT_FN_ATTRS
4005 _mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4006 {
4007 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4008 (__v8si)_mm256_cvtepi16_epi32(__A),
4009 (__v8si)__W);
4010 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004011
Craig Topperc6338672018-05-31 00:51:20 +00004012 static __inline__ __m256i __DEFAULT_FN_ATTRS
4013 _mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4014 {
4015 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4016 (__v8si)_mm256_cvtepi16_epi32(__A),
4017 (__v8si)_mm256_setzero_si256());
4018 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004019
Craig Topperc6338672018-05-31 00:51:20 +00004020 static __inline__ __m128i __DEFAULT_FN_ATTRS
4021 _mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4022 {
4023 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4024 (__v2di)_mm_cvtepi16_epi64(__A),
4025 (__v2di)__W);
4026 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004027
Craig Topperc6338672018-05-31 00:51:20 +00004028 static __inline__ __m128i __DEFAULT_FN_ATTRS
4029 _mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4030 {
4031 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4032 (__v2di)_mm_cvtepi16_epi64(__A),
4033 (__v2di)_mm_setzero_si128());
4034 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004035
Craig Topperc6338672018-05-31 00:51:20 +00004036 static __inline__ __m256i __DEFAULT_FN_ATTRS
4037 _mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4038 {
4039 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4040 (__v4di)_mm256_cvtepi16_epi64(__A),
4041 (__v4di)__W);
4042 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004043
Craig Topperc6338672018-05-31 00:51:20 +00004044 static __inline__ __m256i __DEFAULT_FN_ATTRS
4045 _mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4046 {
4047 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4048 (__v4di)_mm256_cvtepi16_epi64(__A),
4049 (__v4di)_mm256_setzero_si256());
4050 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004051
4052
Craig Topperc6338672018-05-31 00:51:20 +00004053 static __inline__ __m128i __DEFAULT_FN_ATTRS
4054 _mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
4055 {
4056 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4057 (__v4si)_mm_cvtepu8_epi32(__A),
4058 (__v4si)__W);
4059 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004060
Craig Topperc6338672018-05-31 00:51:20 +00004061 static __inline__ __m128i __DEFAULT_FN_ATTRS
4062 _mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
4063 {
4064 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4065 (__v4si)_mm_cvtepu8_epi32(__A),
4066 (__v4si)_mm_setzero_si128());
4067 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004068
Craig Topperc6338672018-05-31 00:51:20 +00004069 static __inline__ __m256i __DEFAULT_FN_ATTRS
4070 _mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4071 {
4072 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4073 (__v8si)_mm256_cvtepu8_epi32(__A),
4074 (__v8si)__W);
4075 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004076
Craig Topperc6338672018-05-31 00:51:20 +00004077 static __inline__ __m256i __DEFAULT_FN_ATTRS
4078 _mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
4079 {
4080 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4081 (__v8si)_mm256_cvtepu8_epi32(__A),
4082 (__v8si)_mm256_setzero_si256());
4083 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004084
Craig Topperc6338672018-05-31 00:51:20 +00004085 static __inline__ __m128i __DEFAULT_FN_ATTRS
4086 _mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4087 {
4088 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4089 (__v2di)_mm_cvtepu8_epi64(__A),
4090 (__v2di)__W);
4091 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004092
Craig Topperc6338672018-05-31 00:51:20 +00004093 static __inline__ __m128i __DEFAULT_FN_ATTRS
4094 _mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
4095 {
4096 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4097 (__v2di)_mm_cvtepu8_epi64(__A),
4098 (__v2di)_mm_setzero_si128());
4099 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004100
Craig Topperc6338672018-05-31 00:51:20 +00004101 static __inline__ __m256i __DEFAULT_FN_ATTRS
4102 _mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4103 {
4104 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4105 (__v4di)_mm256_cvtepu8_epi64(__A),
4106 (__v4di)__W);
4107 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004108
Craig Topperc6338672018-05-31 00:51:20 +00004109 static __inline__ __m256i __DEFAULT_FN_ATTRS
4110 _mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4111 {
4112 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4113 (__v4di)_mm256_cvtepu8_epi64(__A),
4114 (__v4di)_mm256_setzero_si256());
4115 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004116
Craig Topperc6338672018-05-31 00:51:20 +00004117 static __inline__ __m128i __DEFAULT_FN_ATTRS
4118 _mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
4119 {
4120 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4121 (__v2di)_mm_cvtepu32_epi64(__X),
4122 (__v2di)__W);
4123 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004124
Craig Topperc6338672018-05-31 00:51:20 +00004125 static __inline__ __m128i __DEFAULT_FN_ATTRS
4126 _mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
4127 {
4128 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4129 (__v2di)_mm_cvtepu32_epi64(__X),
4130 (__v2di)_mm_setzero_si128());
4131 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004132
Craig Topperc6338672018-05-31 00:51:20 +00004133 static __inline__ __m256i __DEFAULT_FN_ATTRS
4134 _mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
4135 {
4136 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4137 (__v4di)_mm256_cvtepu32_epi64(__X),
4138 (__v4di)__W);
4139 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004140
Craig Topperc6338672018-05-31 00:51:20 +00004141 static __inline__ __m256i __DEFAULT_FN_ATTRS
4142 _mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
4143 {
4144 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4145 (__v4di)_mm256_cvtepu32_epi64(__X),
4146 (__v4di)_mm256_setzero_si256());
4147 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004148
Craig Topperc6338672018-05-31 00:51:20 +00004149 static __inline__ __m128i __DEFAULT_FN_ATTRS
4150 _mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
4151 {
4152 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4153 (__v4si)_mm_cvtepu16_epi32(__A),
4154 (__v4si)__W);
4155 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004156
Craig Topperc6338672018-05-31 00:51:20 +00004157 static __inline__ __m128i __DEFAULT_FN_ATTRS
4158 _mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
4159 {
4160 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4161 (__v4si)_mm_cvtepu16_epi32(__A),
4162 (__v4si)_mm_setzero_si128());
4163 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004164
Craig Topperc6338672018-05-31 00:51:20 +00004165 static __inline__ __m256i __DEFAULT_FN_ATTRS
4166 _mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4167 {
4168 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4169 (__v8si)_mm256_cvtepu16_epi32(__A),
4170 (__v8si)__W);
4171 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004172
Craig Topperc6338672018-05-31 00:51:20 +00004173 static __inline__ __m256i __DEFAULT_FN_ATTRS
4174 _mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
4175 {
4176 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4177 (__v8si)_mm256_cvtepu16_epi32(__A),
4178 (__v8si)_mm256_setzero_si256());
4179 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004180
Craig Topperc6338672018-05-31 00:51:20 +00004181 static __inline__ __m128i __DEFAULT_FN_ATTRS
4182 _mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4183 {
4184 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4185 (__v2di)_mm_cvtepu16_epi64(__A),
4186 (__v2di)__W);
4187 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004188
Craig Topperc6338672018-05-31 00:51:20 +00004189 static __inline__ __m128i __DEFAULT_FN_ATTRS
4190 _mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4191 {
4192 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4193 (__v2di)_mm_cvtepu16_epi64(__A),
4194 (__v2di)_mm_setzero_si128());
4195 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004196
Craig Topperc6338672018-05-31 00:51:20 +00004197 static __inline__ __m256i __DEFAULT_FN_ATTRS
4198 _mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4199 {
4200 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4201 (__v4di)_mm256_cvtepu16_epi64(__A),
4202 (__v4di)__W);
4203 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004204
Craig Topperc6338672018-05-31 00:51:20 +00004205 static __inline__ __m256i __DEFAULT_FN_ATTRS
4206 _mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4207 {
4208 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4209 (__v4di)_mm256_cvtepu16_epi64(__A),
4210 (__v4di)_mm256_setzero_si256());
4211 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004212
4213
Craig Topperc6338672018-05-31 00:51:20 +00004214#define _mm_rol_epi32(a, b) \
4215 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4216 (__v4si)_mm_setzero_si128(), \
4217 (__mmask8)-1)
Michael Zuckerman38a27272016-02-22 09:05:41 +00004218
Craig Topperc6338672018-05-31 00:51:20 +00004219#define _mm_mask_rol_epi32(w, u, a, b) \
4220 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4221 (__v4si)(__m128i)(w), (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004222
Craig Topperc6338672018-05-31 00:51:20 +00004223#define _mm_maskz_rol_epi32(u, a, b) \
4224 (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4225 (__v4si)_mm_setzero_si128(), \
4226 (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004227
Craig Topperc6338672018-05-31 00:51:20 +00004228#define _mm256_rol_epi32(a, b) \
4229 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4230 (__v8si)_mm256_setzero_si256(), \
4231 (__mmask8)-1)
Michael Zuckerman38a27272016-02-22 09:05:41 +00004232
Craig Topperc6338672018-05-31 00:51:20 +00004233#define _mm256_mask_rol_epi32(w, u, a, b) \
4234 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4235 (__v8si)(__m256i)(w), (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004236
Craig Topperc6338672018-05-31 00:51:20 +00004237#define _mm256_maskz_rol_epi32(u, a, b) \
4238 (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4239 (__v8si)_mm256_setzero_si256(), \
4240 (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004241
Craig Topperc6338672018-05-31 00:51:20 +00004242#define _mm_rol_epi64(a, b) \
4243 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4244 (__v2di)_mm_setzero_si128(), \
4245 (__mmask8)-1)
Michael Zuckerman38a27272016-02-22 09:05:41 +00004246
Craig Topperc6338672018-05-31 00:51:20 +00004247#define _mm_mask_rol_epi64(w, u, a, b) \
4248 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4249 (__v2di)(__m128i)(w), (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004250
Craig Topperc6338672018-05-31 00:51:20 +00004251#define _mm_maskz_rol_epi64(u, a, b) \
4252 (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4253 (__v2di)_mm_setzero_si128(), \
4254 (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004255
Craig Topperc6338672018-05-31 00:51:20 +00004256#define _mm256_rol_epi64(a, b) \
4257 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4258 (__v4di)_mm256_setzero_si256(), \
4259 (__mmask8)-1)
Michael Zuckerman38a27272016-02-22 09:05:41 +00004260
Craig Topperc6338672018-05-31 00:51:20 +00004261#define _mm256_mask_rol_epi64(w, u, a, b) \
4262 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4263 (__v4di)(__m256i)(w), (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004264
Craig Topperc6338672018-05-31 00:51:20 +00004265#define _mm256_maskz_rol_epi64(u, a, b) \
4266 (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4267 (__v4di)_mm256_setzero_si256(), \
4268 (__mmask8)(u))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004269
Michael Zuckerman0231f162016-02-23 13:41:13 +00004270static __inline__ __m128i __DEFAULT_FN_ATTRS
4271_mm_rolv_epi32 (__m128i __A, __m128i __B)
4272{
4273 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4274 (__v4si) __B,
4275 (__v4si)
4276 _mm_setzero_si128 (),
4277 (__mmask8) -1);
4278}
4279
4280static __inline__ __m128i __DEFAULT_FN_ATTRS
4281_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4282 __m128i __B)
4283{
4284 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4285 (__v4si) __B,
4286 (__v4si) __W,
4287 (__mmask8) __U);
4288}
4289
4290static __inline__ __m128i __DEFAULT_FN_ATTRS
4291_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4292{
4293 return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4294 (__v4si) __B,
4295 (__v4si)
4296 _mm_setzero_si128 (),
4297 (__mmask8) __U);
4298}
4299
4300static __inline__ __m256i __DEFAULT_FN_ATTRS
4301_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4302{
4303 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4304 (__v8si) __B,
4305 (__v8si)
4306 _mm256_setzero_si256 (),
4307 (__mmask8) -1);
4308}
4309
4310static __inline__ __m256i __DEFAULT_FN_ATTRS
4311_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4312 __m256i __B)
4313{
4314 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4315 (__v8si) __B,
4316 (__v8si) __W,
4317 (__mmask8) __U);
4318}
4319
4320static __inline__ __m256i __DEFAULT_FN_ATTRS
4321_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4322{
4323 return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4324 (__v8si) __B,
4325 (__v8si)
4326 _mm256_setzero_si256 (),
4327 (__mmask8) __U);
4328}
4329
4330static __inline__ __m128i __DEFAULT_FN_ATTRS
4331_mm_rolv_epi64 (__m128i __A, __m128i __B)
4332{
4333 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4334 (__v2di) __B,
4335 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004336 _mm_setzero_si128 (),
Michael Zuckerman0231f162016-02-23 13:41:13 +00004337 (__mmask8) -1);
4338}
4339
4340static __inline__ __m128i __DEFAULT_FN_ATTRS
4341_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4342 __m128i __B)
4343{
4344 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4345 (__v2di) __B,
4346 (__v2di) __W,
4347 (__mmask8) __U);
4348}
4349
4350static __inline__ __m128i __DEFAULT_FN_ATTRS
4351_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4352{
4353 return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
4354 (__v2di) __B,
4355 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004356 _mm_setzero_si128 (),
Michael Zuckerman0231f162016-02-23 13:41:13 +00004357 (__mmask8) __U);
4358}
4359
4360static __inline__ __m256i __DEFAULT_FN_ATTRS
4361_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4362{
4363 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4364 (__v4di) __B,
4365 (__v4di)
4366 _mm256_setzero_si256 (),
4367 (__mmask8) -1);
4368}
4369
4370static __inline__ __m256i __DEFAULT_FN_ATTRS
4371_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4372 __m256i __B)
4373{
4374 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4375 (__v4di) __B,
4376 (__v4di) __W,
4377 (__mmask8) __U);
4378}
4379
4380static __inline__ __m256i __DEFAULT_FN_ATTRS
4381_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4382{
4383 return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
4384 (__v4di) __B,
4385 (__v4di)
4386 _mm256_setzero_si256 (),
4387 (__mmask8) __U);
4388}
4389
Craig Topperc6338672018-05-31 00:51:20 +00004390#define _mm_ror_epi32(A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004391 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4392 (__v4si)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00004393 (__mmask8)-1)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004394
Craig Topperc6338672018-05-31 00:51:20 +00004395#define _mm_mask_ror_epi32(W, U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004396 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
Craig Topperc6338672018-05-31 00:51:20 +00004397 (__v4si)(__m128i)(W), (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004398
Craig Topperc6338672018-05-31 00:51:20 +00004399#define _mm_maskz_ror_epi32(U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004400 (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
4401 (__v4si)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00004402 (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004403
Craig Topperc6338672018-05-31 00:51:20 +00004404#define _mm256_ror_epi32(A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004405 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4406 (__v8si)_mm256_setzero_si256(), \
Craig Topperc6338672018-05-31 00:51:20 +00004407 (__mmask8)-1)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004408
Craig Topperc6338672018-05-31 00:51:20 +00004409#define _mm256_mask_ror_epi32(W, U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004410 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
Craig Topperc6338672018-05-31 00:51:20 +00004411 (__v8si)(__m256i)(W), (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004412
Craig Topperc6338672018-05-31 00:51:20 +00004413#define _mm256_maskz_ror_epi32(U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004414 (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
4415 (__v8si)_mm256_setzero_si256(), \
Craig Topperc6338672018-05-31 00:51:20 +00004416 (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004417
Craig Topperc6338672018-05-31 00:51:20 +00004418#define _mm_ror_epi64(A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004419 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
Craig Topperdff5b312018-05-30 18:02:11 +00004420 (__v2di)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00004421 (__mmask8)-1)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004422
Craig Topperc6338672018-05-31 00:51:20 +00004423#define _mm_mask_ror_epi64(W, U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004424 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
Craig Topperc6338672018-05-31 00:51:20 +00004425 (__v2di)(__m128i)(W), (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004426
Craig Topperc6338672018-05-31 00:51:20 +00004427#define _mm_maskz_ror_epi64(U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004428 (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
Craig Topperdff5b312018-05-30 18:02:11 +00004429 (__v2di)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00004430 (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004431
Craig Topperc6338672018-05-31 00:51:20 +00004432#define _mm256_ror_epi64(A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004433 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4434 (__v4di)_mm256_setzero_si256(), \
Craig Topperc6338672018-05-31 00:51:20 +00004435 (__mmask8)-1)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004436
Craig Topperc6338672018-05-31 00:51:20 +00004437#define _mm256_mask_ror_epi64(W, U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004438 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
Craig Topperc6338672018-05-31 00:51:20 +00004439 (__v4di)(__m256i)(W), (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004440
Craig Topperc6338672018-05-31 00:51:20 +00004441#define _mm256_maskz_ror_epi64(U, A, B) \
Craig Topperd2661882016-05-17 04:41:48 +00004442 (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
4443 (__v4di)_mm256_setzero_si256(), \
Craig Topperc6338672018-05-31 00:51:20 +00004444 (__mmask8)(U))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004445
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004446static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004447_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004448{
Craig Topper66b2fd12016-10-31 04:30:51 +00004449 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4450 (__v4si)_mm_sll_epi32(__A, __B),
4451 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004452}
4453
4454static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004455_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004456{
Craig Topper66b2fd12016-10-31 04:30:51 +00004457 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4458 (__v4si)_mm_sll_epi32(__A, __B),
4459 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004460}
4461
4462static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004463_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004464{
Craig Topper66b2fd12016-10-31 04:30:51 +00004465 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4466 (__v8si)_mm256_sll_epi32(__A, __B),
4467 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004468}
4469
4470static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004471_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004472{
Craig Topper66b2fd12016-10-31 04:30:51 +00004473 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4474 (__v8si)_mm256_sll_epi32(__A, __B),
4475 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004476}
4477
4478static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004479_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004480{
Craig Topper66b2fd12016-10-31 04:30:51 +00004481 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4482 (__v4si)_mm_slli_epi32(__A, __B),
4483 (__v4si)__W);
4484}
4485
4486static __inline__ __m128i __DEFAULT_FN_ATTRS
4487_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4488{
4489 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4490 (__v4si)_mm_slli_epi32(__A, __B),
4491 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004492}
4493
4494static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004495_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004496{
Craig Topper66b2fd12016-10-31 04:30:51 +00004497 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4498 (__v8si)_mm256_slli_epi32(__A, __B),
4499 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004500}
4501
4502static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004503_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004504{
Craig Topper66b2fd12016-10-31 04:30:51 +00004505 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4506 (__v8si)_mm256_slli_epi32(__A, __B),
4507 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004508}
4509
Craig Topper66b2fd12016-10-31 04:30:51 +00004510static __inline__ __m128i __DEFAULT_FN_ATTRS
4511_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4512{
4513 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4514 (__v2di)_mm_sll_epi64(__A, __B),
4515 (__v2di)__W);
4516}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004517
Craig Topper66b2fd12016-10-31 04:30:51 +00004518static __inline__ __m128i __DEFAULT_FN_ATTRS
4519_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4520{
4521 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4522 (__v2di)_mm_sll_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004523 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004524}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004525
Craig Topper66b2fd12016-10-31 04:30:51 +00004526static __inline__ __m256i __DEFAULT_FN_ATTRS
4527_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4528{
4529 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4530 (__v4di)_mm256_sll_epi64(__A, __B),
4531 (__v4di)__W);
4532}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004533
Craig Topper66b2fd12016-10-31 04:30:51 +00004534static __inline__ __m256i __DEFAULT_FN_ATTRS
4535_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4536{
4537 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4538 (__v4di)_mm256_sll_epi64(__A, __B),
4539 (__v4di)_mm256_setzero_si256());
4540}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004541
Craig Topper66b2fd12016-10-31 04:30:51 +00004542static __inline__ __m128i __DEFAULT_FN_ATTRS
4543_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4544{
4545 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4546 (__v2di)_mm_slli_epi64(__A, __B),
4547 (__v2di)__W);
4548}
4549
4550static __inline__ __m128i __DEFAULT_FN_ATTRS
4551_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4552{
4553 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4554 (__v2di)_mm_slli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004555 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004556}
4557
4558static __inline__ __m256i __DEFAULT_FN_ATTRS
4559_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4560{
4561 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4562 (__v4di)_mm256_slli_epi64(__A, __B),
4563 (__v4di)__W);
4564}
4565
4566static __inline__ __m256i __DEFAULT_FN_ATTRS
4567_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4568{
4569 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4570 (__v4di)_mm256_slli_epi64(__A, __B),
4571 (__v4di)_mm256_setzero_si256());
4572}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004573
Michael Zuckermane98cc742016-02-23 15:59:47 +00004574static __inline__ __m128i __DEFAULT_FN_ATTRS
4575_mm_rorv_epi32 (__m128i __A, __m128i __B)
4576{
4577 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4578 (__v4si) __B,
4579 (__v4si)
4580 _mm_setzero_si128 (),
4581 (__mmask8) -1);
4582}
4583
4584static __inline__ __m128i __DEFAULT_FN_ATTRS
4585_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4586 __m128i __B)
4587{
4588 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4589 (__v4si) __B,
4590 (__v4si) __W,
4591 (__mmask8) __U);
4592}
4593
4594static __inline__ __m128i __DEFAULT_FN_ATTRS
4595_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4596{
4597 return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
4598 (__v4si) __B,
4599 (__v4si)
4600 _mm_setzero_si128 (),
4601 (__mmask8) __U);
4602}
4603
4604static __inline__ __m256i __DEFAULT_FN_ATTRS
4605_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4606{
4607 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4608 (__v8si) __B,
4609 (__v8si)
4610 _mm256_setzero_si256 (),
4611 (__mmask8) -1);
4612}
4613
4614static __inline__ __m256i __DEFAULT_FN_ATTRS
4615_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4616 __m256i __B)
4617{
4618 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4619 (__v8si) __B,
4620 (__v8si) __W,
4621 (__mmask8) __U);
4622}
4623
4624static __inline__ __m256i __DEFAULT_FN_ATTRS
4625_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4626{
4627 return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
4628 (__v8si) __B,
4629 (__v8si)
4630 _mm256_setzero_si256 (),
4631 (__mmask8) __U);
4632}
4633
4634static __inline__ __m128i __DEFAULT_FN_ATTRS
4635_mm_rorv_epi64 (__m128i __A, __m128i __B)
4636{
4637 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4638 (__v2di) __B,
4639 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004640 _mm_setzero_si128 (),
Michael Zuckermane98cc742016-02-23 15:59:47 +00004641 (__mmask8) -1);
4642}
4643
4644static __inline__ __m128i __DEFAULT_FN_ATTRS
4645_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
4646 __m128i __B)
4647{
4648 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4649 (__v2di) __B,
4650 (__v2di) __W,
4651 (__mmask8) __U);
4652}
4653
4654static __inline__ __m128i __DEFAULT_FN_ATTRS
4655_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4656{
4657 return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
4658 (__v2di) __B,
4659 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00004660 _mm_setzero_si128 (),
Michael Zuckermane98cc742016-02-23 15:59:47 +00004661 (__mmask8) __U);
4662}
4663
4664static __inline__ __m256i __DEFAULT_FN_ATTRS
4665_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4666{
4667 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4668 (__v4di) __B,
4669 (__v4di)
4670 _mm256_setzero_si256 (),
4671 (__mmask8) -1);
4672}
4673
4674static __inline__ __m256i __DEFAULT_FN_ATTRS
4675_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
4676 __m256i __B)
4677{
4678 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4679 (__v4di) __B,
4680 (__v4di) __W,
4681 (__mmask8) __U);
4682}
4683
4684static __inline__ __m256i __DEFAULT_FN_ATTRS
4685_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4686{
4687 return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
4688 (__v4di) __B,
4689 (__v4di)
4690 _mm256_setzero_si256 (),
4691 (__mmask8) __U);
4692}
4693
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004694static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004695_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004696{
Craig Topper66b2fd12016-10-31 04:30:51 +00004697 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4698 (__v2di)_mm_sllv_epi64(__X, __Y),
4699 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004700}
4701
4702static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004703_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004704{
Craig Topper66b2fd12016-10-31 04:30:51 +00004705 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4706 (__v2di)_mm_sllv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004707 (__v2di)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004708}
4709
4710static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004711_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004712{
Craig Topper66b2fd12016-10-31 04:30:51 +00004713 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4714 (__v4di)_mm256_sllv_epi64(__X, __Y),
4715 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004716}
4717
4718static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004719_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004720{
Craig Topper66b2fd12016-10-31 04:30:51 +00004721 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4722 (__v4di)_mm256_sllv_epi64(__X, __Y),
4723 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004724}
4725
4726static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004727_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004728{
Craig Topper66b2fd12016-10-31 04:30:51 +00004729 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4730 (__v4si)_mm_sllv_epi32(__X, __Y),
4731 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004732}
4733
4734static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004735_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004736{
Craig Topper66b2fd12016-10-31 04:30:51 +00004737 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4738 (__v4si)_mm_sllv_epi32(__X, __Y),
4739 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004740}
4741
4742static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004743_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004744{
Craig Topper66b2fd12016-10-31 04:30:51 +00004745 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4746 (__v8si)_mm256_sllv_epi32(__X, __Y),
4747 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004748}
4749
4750static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004751_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004752{
Craig Topper66b2fd12016-10-31 04:30:51 +00004753 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4754 (__v8si)_mm256_sllv_epi32(__X, __Y),
4755 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004756}
4757
4758static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004759_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004760{
Craig Topper66b2fd12016-10-31 04:30:51 +00004761 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4762 (__v2di)_mm_srlv_epi64(__X, __Y),
4763 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004764}
4765
4766static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004767_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004768{
Craig Topper66b2fd12016-10-31 04:30:51 +00004769 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4770 (__v2di)_mm_srlv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004771 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004772}
4773
4774static __inline__ __m256i __DEFAULT_FN_ATTRS
4775_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4776{
4777 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4778 (__v4di)_mm256_srlv_epi64(__X, __Y),
4779 (__v4di)__W);
4780}
4781
4782static __inline__ __m256i __DEFAULT_FN_ATTRS
4783_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4784{
4785 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4786 (__v4di)_mm256_srlv_epi64(__X, __Y),
4787 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004788}
4789
4790static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004791_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004792{
Craig Topper66b2fd12016-10-31 04:30:51 +00004793 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4794 (__v4si)_mm_srlv_epi32(__X, __Y),
4795 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004796}
4797
4798static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004799_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004800{
Craig Topper66b2fd12016-10-31 04:30:51 +00004801 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4802 (__v4si)_mm_srlv_epi32(__X, __Y),
4803 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004804}
4805
4806static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004807_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004808{
Craig Topper66b2fd12016-10-31 04:30:51 +00004809 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4810 (__v8si)_mm256_srlv_epi32(__X, __Y),
4811 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004812}
4813
4814static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004815_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004816{
Craig Topper66b2fd12016-10-31 04:30:51 +00004817 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4818 (__v8si)_mm256_srlv_epi32(__X, __Y),
4819 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004820}
4821
4822static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004823_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004824{
Craig Topper66b2fd12016-10-31 04:30:51 +00004825 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4826 (__v4si)_mm_srl_epi32(__A, __B),
4827 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004828}
4829
4830static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004831_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004832{
Craig Topper66b2fd12016-10-31 04:30:51 +00004833 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4834 (__v4si)_mm_srl_epi32(__A, __B),
4835 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004836}
4837
4838static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004839_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004840{
Craig Topper66b2fd12016-10-31 04:30:51 +00004841 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4842 (__v8si)_mm256_srl_epi32(__A, __B),
4843 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004844}
4845
4846static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00004847_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004848{
Craig Topper66b2fd12016-10-31 04:30:51 +00004849 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4850 (__v8si)_mm256_srl_epi32(__A, __B),
4851 (__v8si)_mm256_setzero_si256());
4852}
4853
4854static __inline__ __m128i __DEFAULT_FN_ATTRS
4855_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4856{
4857 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4858 (__v4si)_mm_srli_epi32(__A, __B),
4859 (__v4si)__W);
4860}
4861
4862static __inline__ __m128i __DEFAULT_FN_ATTRS
4863_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4864{
4865 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4866 (__v4si)_mm_srli_epi32(__A, __B),
4867 (__v4si)_mm_setzero_si128());
4868}
4869
4870static __inline__ __m256i __DEFAULT_FN_ATTRS
4871_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4872{
4873 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4874 (__v8si)_mm256_srli_epi32(__A, __B),
4875 (__v8si)__W);
4876}
4877
4878static __inline__ __m256i __DEFAULT_FN_ATTRS
4879_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4880{
4881 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4882 (__v8si)_mm256_srli_epi32(__A, __B),
4883 (__v8si)_mm256_setzero_si256());
4884}
4885
4886static __inline__ __m128i __DEFAULT_FN_ATTRS
4887_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4888{
4889 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4890 (__v2di)_mm_srl_epi64(__A, __B),
4891 (__v2di)__W);
4892}
4893
4894static __inline__ __m128i __DEFAULT_FN_ATTRS
4895_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4896{
4897 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4898 (__v2di)_mm_srl_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004899 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004900}
4901
4902static __inline__ __m256i __DEFAULT_FN_ATTRS
4903_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4904{
4905 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4906 (__v4di)_mm256_srl_epi64(__A, __B),
4907 (__v4di)__W);
4908}
4909
4910static __inline__ __m256i __DEFAULT_FN_ATTRS
4911_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4912{
4913 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4914 (__v4di)_mm256_srl_epi64(__A, __B),
4915 (__v4di)_mm256_setzero_si256());
4916}
4917
4918static __inline__ __m128i __DEFAULT_FN_ATTRS
4919_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4920{
4921 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4922 (__v2di)_mm_srli_epi64(__A, __B),
4923 (__v2di)__W);
4924}
4925
4926static __inline__ __m128i __DEFAULT_FN_ATTRS
4927_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
4928{
4929 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4930 (__v2di)_mm_srli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004931 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004932}
4933
4934static __inline__ __m256i __DEFAULT_FN_ATTRS
4935_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4936{
4937 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4938 (__v4di)_mm256_srli_epi64(__A, __B),
4939 (__v4di)__W);
4940}
4941
4942static __inline__ __m256i __DEFAULT_FN_ATTRS
4943_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
4944{
4945 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4946 (__v4di)_mm256_srli_epi64(__A, __B),
4947 (__v4di)_mm256_setzero_si256());
4948}
4949
4950static __inline__ __m128i __DEFAULT_FN_ATTRS
4951_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
4952{
4953 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4954 (__v4si)_mm_srav_epi32(__X, __Y),
4955 (__v4si)__W);
4956}
4957
4958static __inline__ __m128i __DEFAULT_FN_ATTRS
4959_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
4960{
4961 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4962 (__v4si)_mm_srav_epi32(__X, __Y),
4963 (__v4si)_mm_setzero_si128());
4964}
4965
4966static __inline__ __m256i __DEFAULT_FN_ATTRS
4967_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4968{
4969 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4970 (__v8si)_mm256_srav_epi32(__X, __Y),
4971 (__v8si)__W);
4972}
4973
4974static __inline__ __m256i __DEFAULT_FN_ATTRS
4975_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
4976{
4977 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4978 (__v8si)_mm256_srav_epi32(__X, __Y),
4979 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004980}
4981
4982static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004983_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004984{
Craig Topper5e0709d2016-11-13 07:26:34 +00004985 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004986}
4987
4988static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004989_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004990{
Craig Topper5e0709d2016-11-13 07:26:34 +00004991 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4992 (__v2di)_mm_srav_epi64(__X, __Y),
4993 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004994}
4995
4996static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00004997_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004998{
Craig Topper5e0709d2016-11-13 07:26:34 +00004999 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
5000 (__v2di)_mm_srav_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00005001 (__v2di)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005002}
5003
5004static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005005_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005006{
Craig Topper5e0709d2016-11-13 07:26:34 +00005007 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005008}
5009
5010static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5e0709d2016-11-13 07:26:34 +00005011_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005012{
Craig Topper5e0709d2016-11-13 07:26:34 +00005013 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5014 (__v4di)_mm256_srav_epi64(__X, __Y),
5015 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005016}
5017
5018static __inline__ __m256i __DEFAULT_FN_ATTRS
5019_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5020{
Craig Topper5e0709d2016-11-13 07:26:34 +00005021 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
5022 (__v4di)_mm256_srav_epi64(__X, __Y),
5023 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00005024}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005025
Michael Zuckermane6542002016-05-23 08:01:48 +00005026static __inline__ __m128i __DEFAULT_FN_ATTRS
5027_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
5028{
Igor Bregeraadb8762016-06-08 13:59:20 +00005029 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5030 (__v4si) __A,
5031 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005032}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005033
Michael Zuckermane6542002016-05-23 08:01:48 +00005034static __inline__ __m128i __DEFAULT_FN_ATTRS
5035_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
5036{
Igor Bregeraadb8762016-06-08 13:59:20 +00005037 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5038 (__v4si) __A,
5039 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005040}
5041
5042
5043static __inline__ __m256i __DEFAULT_FN_ATTRS
5044_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
5045{
Igor Bregeraadb8762016-06-08 13:59:20 +00005046 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5047 (__v8si) __A,
5048 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00005049}
5050
5051static __inline__ __m256i __DEFAULT_FN_ATTRS
5052_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
5053{
Igor Bregeraadb8762016-06-08 13:59:20 +00005054 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5055 (__v8si) __A,
5056 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00005057}
5058
5059static __inline__ __m128i __DEFAULT_FN_ATTRS
5060_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5061{
5062 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5063 (__v4si) __W,
5064 (__mmask8)
5065 __U);
5066}
5067
5068static __inline__ __m128i __DEFAULT_FN_ATTRS
5069_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5070{
5071 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5072 (__v4si)
5073 _mm_setzero_si128 (),
5074 (__mmask8)
5075 __U);
5076}
5077
5078static __inline__ __m256i __DEFAULT_FN_ATTRS
5079_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5080{
5081 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5082 (__v8si) __W,
5083 (__mmask8)
5084 __U);
5085}
5086
5087static __inline__ __m256i __DEFAULT_FN_ATTRS
5088_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5089{
5090 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5091 (__v8si)
5092 _mm256_setzero_si256 (),
5093 (__mmask8)
5094 __U);
5095}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005096
5097static __inline__ void __DEFAULT_FN_ATTRS
5098_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5099{
5100 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5101 (__v4si) __A,
5102 (__mmask8) __U);
5103}
5104
5105static __inline__ void __DEFAULT_FN_ATTRS
5106_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5107{
5108 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5109 (__v8si) __A,
5110 (__mmask8) __U);
5111}
5112
5113static __inline__ __m128i __DEFAULT_FN_ATTRS
5114_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5115{
Igor Bregeraadb8762016-06-08 13:59:20 +00005116 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5117 (__v2di) __A,
5118 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005119}
5120
5121static __inline__ __m128i __DEFAULT_FN_ATTRS
5122_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5123{
Igor Bregeraadb8762016-06-08 13:59:20 +00005124 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5125 (__v2di) __A,
Craig Topperdff5b312018-05-30 18:02:11 +00005126 (__v2di) _mm_setzero_si128 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005127}
5128
5129static __inline__ __m256i __DEFAULT_FN_ATTRS
5130_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5131{
Igor Bregeraadb8762016-06-08 13:59:20 +00005132 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5133 (__v4di) __A,
5134 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005135}
5136
5137static __inline__ __m256i __DEFAULT_FN_ATTRS
5138_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5139{
Igor Bregeraadb8762016-06-08 13:59:20 +00005140 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5141 (__v4di) __A,
5142 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005143}
5144
5145static __inline__ __m128i __DEFAULT_FN_ATTRS
5146_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5147{
5148 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5149 (__v2di) __W,
5150 (__mmask8)
5151 __U);
5152}
5153
5154static __inline__ __m128i __DEFAULT_FN_ATTRS
5155_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5156{
5157 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5158 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00005159 _mm_setzero_si128 (),
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005160 (__mmask8)
5161 __U);
5162}
5163
5164static __inline__ __m256i __DEFAULT_FN_ATTRS
5165_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5166{
5167 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5168 (__v4di) __W,
5169 (__mmask8)
5170 __U);
5171}
5172
5173static __inline__ __m256i __DEFAULT_FN_ATTRS
5174_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5175{
5176 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5177 (__v4di)
5178 _mm256_setzero_si256 (),
5179 (__mmask8)
5180 __U);
5181}
5182
5183static __inline__ void __DEFAULT_FN_ATTRS
5184_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5185{
5186 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5187 (__v2di) __A,
5188 (__mmask8) __U);
5189}
5190
5191static __inline__ void __DEFAULT_FN_ATTRS
5192_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5193{
5194 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5195 (__v4di) __A,
5196 (__mmask8) __U);
5197}
5198
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005199static __inline__ __m128d __DEFAULT_FN_ATTRS
5200_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5201{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005202 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5203 (__v2df)_mm_movedup_pd(__A),
5204 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005205}
5206
5207static __inline__ __m128d __DEFAULT_FN_ATTRS
5208_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5209{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005210 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5211 (__v2df)_mm_movedup_pd(__A),
5212 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005213}
5214
5215static __inline__ __m256d __DEFAULT_FN_ATTRS
5216_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5217{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005218 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5219 (__v4df)_mm256_movedup_pd(__A),
5220 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005221}
5222
5223static __inline__ __m256d __DEFAULT_FN_ATTRS
5224_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5225{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005226 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5227 (__v4df)_mm256_movedup_pd(__A),
5228 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005229}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005230
Jina Nahias3ad702a2017-09-19 11:00:27 +00005231static __inline__ __m128i __DEFAULT_FN_ATTRS
5232_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5233{
5234 return (__m128i)__builtin_ia32_selectd_128(__M,
5235 (__v4si) _mm_set1_epi32(__A),
5236 (__v4si)__O);
5237}
Michael Zuckerman912be162016-03-07 08:29:10 +00005238
Jina Nahias3ad702a2017-09-19 11:00:27 +00005239static __inline__ __m128i __DEFAULT_FN_ATTRS
5240_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5241{
5242 return (__m128i)__builtin_ia32_selectd_128(__M,
5243 (__v4si) _mm_set1_epi32(__A),
5244 (__v4si)_mm_setzero_si128());
5245}
Michael Zuckerman912be162016-03-07 08:29:10 +00005246
Jina Nahias3ad702a2017-09-19 11:00:27 +00005247static __inline__ __m256i __DEFAULT_FN_ATTRS
5248_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5249{
5250 return (__m256i)__builtin_ia32_selectd_256(__M,
5251 (__v8si) _mm256_set1_epi32(__A),
5252 (__v8si)__O);
5253}
Michael Zuckerman912be162016-03-07 08:29:10 +00005254
Jina Nahias3ad702a2017-09-19 11:00:27 +00005255static __inline__ __m256i __DEFAULT_FN_ATTRS
5256_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5257{
5258 return (__m256i)__builtin_ia32_selectd_256(__M,
5259 (__v8si) _mm256_set1_epi32(__A),
5260 (__v8si)_mm256_setzero_si256());
5261}
Michael Zuckerman912be162016-03-07 08:29:10 +00005262
Michael Zuckerman912be162016-03-07 08:29:10 +00005263
5264static __inline__ __m128i __DEFAULT_FN_ATTRS
5265_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5266{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005267 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005268 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005269 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005270}
5271
5272static __inline__ __m128i __DEFAULT_FN_ATTRS
5273_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5274{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005275 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005276 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005277 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005278}
5279
5280static __inline__ __m256i __DEFAULT_FN_ATTRS
5281_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5282{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005283 return (__m256i) __builtin_ia32_selectq_256(__M,
5284 (__v4di) _mm256_set1_epi64x(__A),
5285 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005286}
5287
5288static __inline__ __m256i __DEFAULT_FN_ATTRS
5289_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5290{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005291 return (__m256i) __builtin_ia32_selectq_256(__M,
5292 (__v4di) _mm256_set1_epi64x(__A),
5293 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005294}
Michael Zuckermandef78752016-03-28 12:23:09 +00005295
Craig Topperc6338672018-05-31 00:51:20 +00005296#define _mm_fixupimm_pd(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005297 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5298 (__v2df)(__m128d)(B), \
5299 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005300 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005301
Craig Topperc6338672018-05-31 00:51:20 +00005302#define _mm_mask_fixupimm_pd(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005303 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5304 (__v2df)(__m128d)(B), \
5305 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005306 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005307
Craig Topperc6338672018-05-31 00:51:20 +00005308#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005309 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5310 (__v2df)(__m128d)(B), \
5311 (__v2di)(__m128i)(C), \
Craig Topperc6338672018-05-31 00:51:20 +00005312 (int)(imm), (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005313
Craig Topperc6338672018-05-31 00:51:20 +00005314#define _mm256_fixupimm_pd(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005315 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5316 (__v4df)(__m256d)(B), \
5317 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005318 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005319
Craig Topperc6338672018-05-31 00:51:20 +00005320#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005321 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5322 (__v4df)(__m256d)(B), \
5323 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005324 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005325
Craig Topperc6338672018-05-31 00:51:20 +00005326#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005327 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5328 (__v4df)(__m256d)(B), \
5329 (__v4di)(__m256i)(C), \
Craig Topperc6338672018-05-31 00:51:20 +00005330 (int)(imm), (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005331
Craig Topperc6338672018-05-31 00:51:20 +00005332#define _mm_fixupimm_ps(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005333 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5334 (__v4sf)(__m128)(B), \
5335 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005336 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005337
Craig Topperc6338672018-05-31 00:51:20 +00005338#define _mm_mask_fixupimm_ps(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005339 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5340 (__v4sf)(__m128)(B), \
5341 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005342 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005343
Craig Topperc6338672018-05-31 00:51:20 +00005344#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005345 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5346 (__v4sf)(__m128)(B), \
5347 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005348 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005349
Craig Topperc6338672018-05-31 00:51:20 +00005350#define _mm256_fixupimm_ps(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005351 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5352 (__v8sf)(__m256)(B), \
5353 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005354 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005355
Craig Topperc6338672018-05-31 00:51:20 +00005356#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005357 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5358 (__v8sf)(__m256)(B), \
5359 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005360 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005361
Craig Topperc6338672018-05-31 00:51:20 +00005362#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005363 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5364 (__v8sf)(__m256)(B), \
5365 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005366 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005367
5368static __inline__ __m128d __DEFAULT_FN_ATTRS
5369_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5370{
5371 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5372 (__v2df) __W,
5373 (__mmask8) __U);
5374}
5375
5376static __inline__ __m128d __DEFAULT_FN_ATTRS
5377_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5378{
5379 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5380 (__v2df)
5381 _mm_setzero_pd (),
5382 (__mmask8) __U);
5383}
5384
5385static __inline__ __m256d __DEFAULT_FN_ATTRS
5386_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5387{
5388 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5389 (__v4df) __W,
5390 (__mmask8) __U);
5391}
5392
5393static __inline__ __m256d __DEFAULT_FN_ATTRS
5394_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5395{
5396 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5397 (__v4df)
5398 _mm256_setzero_pd (),
5399 (__mmask8) __U);
5400}
5401
5402static __inline__ __m128 __DEFAULT_FN_ATTRS
5403_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5404{
5405 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5406 (__v4sf) __W,
5407 (__mmask8) __U);
5408}
5409
5410static __inline__ __m128 __DEFAULT_FN_ATTRS
5411_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5412{
5413 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5414 (__v4sf)
5415 _mm_setzero_ps (),
5416 (__mmask8) __U);
5417}
5418
5419static __inline__ __m256 __DEFAULT_FN_ATTRS
5420_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5421{
5422 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5423 (__v8sf) __W,
5424 (__mmask8) __U);
5425}
5426
5427static __inline__ __m256 __DEFAULT_FN_ATTRS
5428_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5429{
5430 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5431 (__v8sf)
5432 _mm256_setzero_ps (),
5433 (__mmask8) __U);
5434}
5435
5436static __inline__ __m128i __DEFAULT_FN_ATTRS
5437_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5438{
5439 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5440 (__v2di) __W,
5441 (__mmask8) __U);
5442}
5443
5444static __inline__ __m128i __DEFAULT_FN_ATTRS
5445_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5446{
5447 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5448 (__v2di)
5449 _mm_setzero_si128 (),
5450 (__mmask8) __U);
5451}
5452
5453static __inline__ __m256i __DEFAULT_FN_ATTRS
5454_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5455{
5456 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5457 (__v4di) __W,
5458 (__mmask8) __U);
5459}
5460
5461static __inline__ __m256i __DEFAULT_FN_ATTRS
5462_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5463{
5464 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5465 (__v4di)
5466 _mm256_setzero_si256 (),
5467 (__mmask8) __U);
5468}
5469
5470static __inline__ __m128i __DEFAULT_FN_ATTRS
5471_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5472{
5473 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5474 (__v4si) __W,
5475 (__mmask8) __U);
5476}
5477
5478static __inline__ __m128i __DEFAULT_FN_ATTRS
5479_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5480{
5481 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5482 (__v4si)
5483 _mm_setzero_si128 (),
5484 (__mmask8) __U);
5485}
5486
5487static __inline__ __m256i __DEFAULT_FN_ATTRS
5488_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5489{
5490 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5491 (__v8si) __W,
5492 (__mmask8) __U);
5493}
5494
5495static __inline__ __m256i __DEFAULT_FN_ATTRS
5496_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5497{
5498 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5499 (__v8si)
5500 _mm256_setzero_si256 (),
5501 (__mmask8) __U);
5502}
5503
5504static __inline__ __m128d __DEFAULT_FN_ATTRS
5505_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5506{
5507 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5508 (__v2df) __W,
5509 (__mmask8) __U);
5510}
5511
5512static __inline__ __m128d __DEFAULT_FN_ATTRS
5513_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5514{
5515 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5516 (__v2df)
5517 _mm_setzero_pd (),
5518 (__mmask8) __U);
5519}
5520
5521static __inline__ __m256d __DEFAULT_FN_ATTRS
5522_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5523{
5524 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5525 (__v4df) __W,
5526 (__mmask8) __U);
5527}
5528
5529static __inline__ __m256d __DEFAULT_FN_ATTRS
5530_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5531{
5532 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5533 (__v4df)
5534 _mm256_setzero_pd (),
5535 (__mmask8) __U);
5536}
5537
5538static __inline__ __m128 __DEFAULT_FN_ATTRS
5539_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5540{
5541 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5542 (__v4sf) __W,
5543 (__mmask8) __U);
5544}
5545
5546static __inline__ __m128 __DEFAULT_FN_ATTRS
5547_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5548{
5549 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5550 (__v4sf)
5551 _mm_setzero_ps (),
5552 (__mmask8) __U);
5553}
5554
5555static __inline__ __m256 __DEFAULT_FN_ATTRS
5556_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5557{
5558 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5559 (__v8sf) __W,
5560 (__mmask8) __U);
5561}
5562
5563static __inline__ __m256 __DEFAULT_FN_ATTRS
5564_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5565{
5566 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5567 (__v8sf)
5568 _mm256_setzero_ps (),
5569 (__mmask8) __U);
5570}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005571
5572static __inline__ void __DEFAULT_FN_ATTRS
5573_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5574{
5575 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5576 (__v2df) __A,
5577 (__mmask8) __U);
5578}
5579
5580static __inline__ void __DEFAULT_FN_ATTRS
5581_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5582{
5583 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5584 (__v4df) __A,
5585 (__mmask8) __U);
5586}
5587
5588static __inline__ void __DEFAULT_FN_ATTRS
5589_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5590{
5591 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5592 (__v4sf) __A,
5593 (__mmask8) __U);
5594}
5595
5596static __inline__ void __DEFAULT_FN_ATTRS
5597_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5598{
5599 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5600 (__v8sf) __A,
5601 (__mmask8) __U);
5602}
5603
5604static __inline__ void __DEFAULT_FN_ATTRS
5605_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5606{
5607 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5608 (__v2di) __A,
5609 (__mmask8) __U);
5610}
5611
5612static __inline__ void __DEFAULT_FN_ATTRS
5613_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5614{
5615 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5616 (__v4di) __A,
5617 (__mmask8) __U);
5618}
5619
5620static __inline__ void __DEFAULT_FN_ATTRS
5621_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5622{
5623 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5624 (__v4si) __A,
5625 (__mmask8) __U);
5626}
5627
5628static __inline__ void __DEFAULT_FN_ATTRS
5629_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5630{
5631 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5632 (__v8si) __A,
5633 (__mmask8) __U);
5634}
5635
5636static __inline__ void __DEFAULT_FN_ATTRS
5637_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5638{
5639 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5640 (__v2df) __A,
5641 (__mmask8) __U);
5642}
5643
5644static __inline__ void __DEFAULT_FN_ATTRS
5645_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5646{
5647 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5648 (__v4df) __A,
5649 (__mmask8) __U);
5650}
5651
5652static __inline__ void __DEFAULT_FN_ATTRS
5653_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5654{
5655 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5656 (__v4sf) __A,
5657 (__mmask8) __U);
5658}
5659
5660static __inline__ void __DEFAULT_FN_ATTRS
5661_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5662{
5663 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5664 (__v8sf) __A,
5665 (__mmask8) __U);
5666}
5667
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005668
5669static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005670_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005671{
Craig Topper79f53ca2016-06-23 06:36:42 +00005672 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5673 (__v2df)_mm_unpackhi_pd(__A, __B),
5674 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005675}
5676
5677static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005678_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005679{
Craig Topper79f53ca2016-06-23 06:36:42 +00005680 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5681 (__v2df)_mm_unpackhi_pd(__A, __B),
5682 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005683}
5684
5685static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005686_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005687{
Craig Topper79f53ca2016-06-23 06:36:42 +00005688 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5689 (__v4df)_mm256_unpackhi_pd(__A, __B),
5690 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005691}
5692
5693static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005694_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005695{
Craig Topper79f53ca2016-06-23 06:36:42 +00005696 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5697 (__v4df)_mm256_unpackhi_pd(__A, __B),
5698 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005699}
5700
5701static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005702_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005703{
Craig Topper79f53ca2016-06-23 06:36:42 +00005704 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5705 (__v4sf)_mm_unpackhi_ps(__A, __B),
5706 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005707}
5708
5709static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005710_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005711{
Craig Topper79f53ca2016-06-23 06:36:42 +00005712 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5713 (__v4sf)_mm_unpackhi_ps(__A, __B),
5714 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005715}
5716
5717static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005718_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005719{
Craig Topper79f53ca2016-06-23 06:36:42 +00005720 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5721 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5722 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005723}
5724
5725static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005726_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005727{
Craig Topper79f53ca2016-06-23 06:36:42 +00005728 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5729 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5730 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005731}
5732
5733static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005734_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005735{
Craig Topper79f53ca2016-06-23 06:36:42 +00005736 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5737 (__v2df)_mm_unpacklo_pd(__A, __B),
5738 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005739}
5740
5741static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005742_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005743{
Craig Topper79f53ca2016-06-23 06:36:42 +00005744 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5745 (__v2df)_mm_unpacklo_pd(__A, __B),
5746 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005747}
5748
5749static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005750_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005751{
Craig Topper79f53ca2016-06-23 06:36:42 +00005752 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5753 (__v4df)_mm256_unpacklo_pd(__A, __B),
5754 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005755}
5756
5757static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005758_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005759{
Craig Topper79f53ca2016-06-23 06:36:42 +00005760 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5761 (__v4df)_mm256_unpacklo_pd(__A, __B),
5762 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005763}
5764
5765static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005766_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005767{
Craig Topper79f53ca2016-06-23 06:36:42 +00005768 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5769 (__v4sf)_mm_unpacklo_ps(__A, __B),
5770 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005771}
5772
5773static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005774_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005775{
Craig Topper79f53ca2016-06-23 06:36:42 +00005776 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5777 (__v4sf)_mm_unpacklo_ps(__A, __B),
5778 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005779}
5780
5781static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005782_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005783{
Craig Topper79f53ca2016-06-23 06:36:42 +00005784 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5785 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5786 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005787}
5788
5789static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00005790_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005791{
Craig Topper79f53ca2016-06-23 06:36:42 +00005792 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5793 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5794 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005795}
5796
5797static __inline__ __m128d __DEFAULT_FN_ATTRS
5798_mm_rcp14_pd (__m128d __A)
5799{
5800 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5801 (__v2df)
5802 _mm_setzero_pd (),
5803 (__mmask8) -1);
5804}
5805
5806static __inline__ __m128d __DEFAULT_FN_ATTRS
5807_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5808{
5809 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5810 (__v2df) __W,
5811 (__mmask8) __U);
5812}
5813
5814static __inline__ __m128d __DEFAULT_FN_ATTRS
5815_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5816{
5817 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5818 (__v2df)
5819 _mm_setzero_pd (),
5820 (__mmask8) __U);
5821}
5822
5823static __inline__ __m256d __DEFAULT_FN_ATTRS
5824_mm256_rcp14_pd (__m256d __A)
5825{
5826 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5827 (__v4df)
5828 _mm256_setzero_pd (),
5829 (__mmask8) -1);
5830}
5831
5832static __inline__ __m256d __DEFAULT_FN_ATTRS
5833_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5834{
5835 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5836 (__v4df) __W,
5837 (__mmask8) __U);
5838}
5839
5840static __inline__ __m256d __DEFAULT_FN_ATTRS
5841_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5842{
5843 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5844 (__v4df)
5845 _mm256_setzero_pd (),
5846 (__mmask8) __U);
5847}
5848
5849static __inline__ __m128 __DEFAULT_FN_ATTRS
5850_mm_rcp14_ps (__m128 __A)
5851{
5852 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5853 (__v4sf)
5854 _mm_setzero_ps (),
5855 (__mmask8) -1);
5856}
5857
5858static __inline__ __m128 __DEFAULT_FN_ATTRS
5859_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5860{
5861 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5862 (__v4sf) __W,
5863 (__mmask8) __U);
5864}
5865
5866static __inline__ __m128 __DEFAULT_FN_ATTRS
5867_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5868{
5869 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5870 (__v4sf)
5871 _mm_setzero_ps (),
5872 (__mmask8) __U);
5873}
5874
5875static __inline__ __m256 __DEFAULT_FN_ATTRS
5876_mm256_rcp14_ps (__m256 __A)
5877{
5878 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5879 (__v8sf)
5880 _mm256_setzero_ps (),
5881 (__mmask8) -1);
5882}
5883
5884static __inline__ __m256 __DEFAULT_FN_ATTRS
5885_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5886{
5887 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5888 (__v8sf) __W,
5889 (__mmask8) __U);
5890}
5891
5892static __inline__ __m256 __DEFAULT_FN_ATTRS
5893_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
5894{
5895 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5896 (__v8sf)
5897 _mm256_setzero_ps (),
5898 (__mmask8) __U);
5899}
5900
Craig Topperc6338672018-05-31 00:51:20 +00005901#define _mm_mask_permute_pd(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005902 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5903 (__v2df)_mm_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005904 (__v2df)(__m128d)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005905
Craig Topperc6338672018-05-31 00:51:20 +00005906#define _mm_maskz_permute_pd(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005907 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5908 (__v2df)_mm_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005909 (__v2df)_mm_setzero_pd())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005910
Craig Topperc6338672018-05-31 00:51:20 +00005911#define _mm256_mask_permute_pd(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005912 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5913 (__v4df)_mm256_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005914 (__v4df)(__m256d)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005915
Craig Topperc6338672018-05-31 00:51:20 +00005916#define _mm256_maskz_permute_pd(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005917 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5918 (__v4df)_mm256_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005919 (__v4df)_mm256_setzero_pd())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005920
Craig Topperc6338672018-05-31 00:51:20 +00005921#define _mm_mask_permute_ps(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005922 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5923 (__v4sf)_mm_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005924 (__v4sf)(__m128)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005925
Craig Topperc6338672018-05-31 00:51:20 +00005926#define _mm_maskz_permute_ps(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005927 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5928 (__v4sf)_mm_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005929 (__v4sf)_mm_setzero_ps())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005930
Craig Topperc6338672018-05-31 00:51:20 +00005931#define _mm256_mask_permute_ps(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005932 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5933 (__v8sf)_mm256_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005934 (__v8sf)(__m256)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005935
Craig Topperc6338672018-05-31 00:51:20 +00005936#define _mm256_maskz_permute_ps(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005937 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5938 (__v8sf)_mm256_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005939 (__v8sf)_mm256_setzero_ps())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005940
5941static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005942_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005943{
Craig Topper5391c982016-12-10 20:27:39 +00005944 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5945 (__v2df)_mm_permutevar_pd(__A, __C),
5946 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005947}
5948
5949static __inline__ __m128d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005950_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005951{
Craig Topper5391c982016-12-10 20:27:39 +00005952 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5953 (__v2df)_mm_permutevar_pd(__A, __C),
5954 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005955}
5956
5957static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005958_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005959{
Craig Topper5391c982016-12-10 20:27:39 +00005960 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5961 (__v4df)_mm256_permutevar_pd(__A, __C),
5962 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005963}
5964
5965static __inline__ __m256d __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005966_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005967{
Craig Topper5391c982016-12-10 20:27:39 +00005968 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5969 (__v4df)_mm256_permutevar_pd(__A, __C),
5970 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005971}
5972
5973static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005974_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005975{
Craig Topper5391c982016-12-10 20:27:39 +00005976 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5977 (__v4sf)_mm_permutevar_ps(__A, __C),
5978 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005979}
5980
5981static __inline__ __m128 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005982_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005983{
Craig Topper5391c982016-12-10 20:27:39 +00005984 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5985 (__v4sf)_mm_permutevar_ps(__A, __C),
5986 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005987}
5988
5989static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005990_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005991{
Craig Topper5391c982016-12-10 20:27:39 +00005992 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5993 (__v8sf)_mm256_permutevar_ps(__A, __C),
5994 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005995}
5996
5997static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5391c982016-12-10 20:27:39 +00005998_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005999{
Craig Topper5391c982016-12-10 20:27:39 +00006000 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6001 (__v8sf)_mm256_permutevar_ps(__A, __C),
6002 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00006003}
6004
Michael Zuckerman07525092016-04-11 10:22:07 +00006005static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6006_mm_test_epi32_mask (__m128i __A, __m128i __B)
6007{
Craig Topperdff5b312018-05-30 18:02:11 +00006008 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006009}
6010
6011static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6012_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6013{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006014 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006015 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006016}
6017
6018static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6019_mm256_test_epi32_mask (__m256i __A, __m256i __B)
6020{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006021 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
6022 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006023}
6024
6025static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6026_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6027{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006028 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6029 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006030}
6031
6032static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6033_mm_test_epi64_mask (__m128i __A, __m128i __B)
6034{
Craig Topperdff5b312018-05-30 18:02:11 +00006035 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006036}
6037
6038static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6039_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6040{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006041 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006042 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006043}
6044
6045static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6046_mm256_test_epi64_mask (__m256i __A, __m256i __B)
6047{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006048 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
6049 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006050}
6051
6052static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6053_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6054{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006055 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6056 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006057}
6058
6059static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6060_mm_testn_epi32_mask (__m128i __A, __m128i __B)
6061{
Craig Topperdff5b312018-05-30 18:02:11 +00006062 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006063}
6064
6065static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6066_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6067{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006068 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006069 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006070}
6071
6072static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6073_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6074{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006075 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6076 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006077}
6078
6079static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6080_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6081{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006082 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6083 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006084}
6085
6086static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6087_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6088{
Craig Topperdff5b312018-05-30 18:02:11 +00006089 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006090}
6091
6092static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6093_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6094{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006095 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006096 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006097}
6098
6099static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6100_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6101{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006102 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6103 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006104}
6105
6106static __inline__ __mmask8 __DEFAULT_FN_ATTRS
6107_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6108{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006109 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6110 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006111}
6112
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006113static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006114_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006115{
Craig Topper79f53ca2016-06-23 06:36:42 +00006116 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6117 (__v4si)_mm_unpackhi_epi32(__A, __B),
6118 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006119}
6120
6121static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006122_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006123{
Craig Topper79f53ca2016-06-23 06:36:42 +00006124 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6125 (__v4si)_mm_unpackhi_epi32(__A, __B),
6126 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006127}
6128
6129static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006130_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006131{
Craig Topper79f53ca2016-06-23 06:36:42 +00006132 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6133 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6134 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006135}
6136
6137static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006138_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006139{
Craig Topper79f53ca2016-06-23 06:36:42 +00006140 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6141 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6142 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006143}
6144
6145static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006146_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006147{
Craig Topper79f53ca2016-06-23 06:36:42 +00006148 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6149 (__v2di)_mm_unpackhi_epi64(__A, __B),
6150 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006151}
6152
6153static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006154_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006155{
Craig Topper79f53ca2016-06-23 06:36:42 +00006156 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6157 (__v2di)_mm_unpackhi_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006158 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006159}
6160
6161static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006162_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006163{
Craig Topper79f53ca2016-06-23 06:36:42 +00006164 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6165 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6166 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006167}
6168
6169static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006170_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006171{
Craig Topper79f53ca2016-06-23 06:36:42 +00006172 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6173 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6174 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006175}
6176
6177static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006178_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006179{
Craig Topper79f53ca2016-06-23 06:36:42 +00006180 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6181 (__v4si)_mm_unpacklo_epi32(__A, __B),
6182 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006183}
6184
6185static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006186_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006187{
Craig Topper79f53ca2016-06-23 06:36:42 +00006188 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6189 (__v4si)_mm_unpacklo_epi32(__A, __B),
6190 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006191}
6192
6193static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006194_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006195{
Craig Topper79f53ca2016-06-23 06:36:42 +00006196 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6197 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6198 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006199}
6200
6201static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006202_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006203{
Craig Topper79f53ca2016-06-23 06:36:42 +00006204 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6205 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6206 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006207}
6208
6209static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006210_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006211{
Craig Topper79f53ca2016-06-23 06:36:42 +00006212 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6213 (__v2di)_mm_unpacklo_epi64(__A, __B),
6214 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006215}
6216
6217static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006218_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006219{
Craig Topper79f53ca2016-06-23 06:36:42 +00006220 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6221 (__v2di)_mm_unpacklo_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006222 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006223}
6224
6225static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006226_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006227{
Craig Topper79f53ca2016-06-23 06:36:42 +00006228 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6229 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6230 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006231}
6232
6233static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper79f53ca2016-06-23 06:36:42 +00006234_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006235{
Craig Topper79f53ca2016-06-23 06:36:42 +00006236 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6237 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6238 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006239}
6240
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006241static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006242_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006243{
Craig Topper66b2fd12016-10-31 04:30:51 +00006244 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6245 (__v4si)_mm_sra_epi32(__A, __B),
6246 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006247}
6248
6249static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006250_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006251{
Craig Topper66b2fd12016-10-31 04:30:51 +00006252 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6253 (__v4si)_mm_sra_epi32(__A, __B),
6254 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006255}
6256
6257static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006258_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006259{
Craig Topper66b2fd12016-10-31 04:30:51 +00006260 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6261 (__v8si)_mm256_sra_epi32(__A, __B),
6262 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006263}
6264
6265static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper66b2fd12016-10-31 04:30:51 +00006266_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006267{
Craig Topper66b2fd12016-10-31 04:30:51 +00006268 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6269 (__v8si)_mm256_sra_epi32(__A, __B),
6270 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006271}
6272
Craig Topper66b2fd12016-10-31 04:30:51 +00006273static __inline__ __m128i __DEFAULT_FN_ATTRS
6274_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6275{
6276 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6277 (__v4si)_mm_srai_epi32(__A, __B),
6278 (__v4si)__W);
6279}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006280
Craig Topper66b2fd12016-10-31 04:30:51 +00006281static __inline__ __m128i __DEFAULT_FN_ATTRS
6282_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6283{
6284 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6285 (__v4si)_mm_srai_epi32(__A, __B),
6286 (__v4si)_mm_setzero_si128());
6287}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006288
Craig Topper66b2fd12016-10-31 04:30:51 +00006289static __inline__ __m256i __DEFAULT_FN_ATTRS
6290_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6291{
6292 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6293 (__v8si)_mm256_srai_epi32(__A, __B),
6294 (__v8si)__W);
6295}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006296
Craig Topper66b2fd12016-10-31 04:30:51 +00006297static __inline__ __m256i __DEFAULT_FN_ATTRS
6298_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6299{
6300 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6301 (__v8si)_mm256_srai_epi32(__A, __B),
6302 (__v8si)_mm256_setzero_si256());
6303}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006304
6305static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006306_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006307{
Craig Topper1a441932016-11-12 07:16:59 +00006308 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006309}
6310
6311static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006312_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006313{
Craig Topper1a441932016-11-12 07:16:59 +00006314 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6315 (__v2di)_mm_sra_epi64(__A, __B), \
6316 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006317}
6318
6319static __inline__ __m128i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006320_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006321{
Craig Topper1a441932016-11-12 07:16:59 +00006322 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6323 (__v2di)_mm_sra_epi64(__A, __B), \
Craig Topperdff5b312018-05-30 18:02:11 +00006324 (__v2di)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006325}
6326
6327static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006328_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006329{
Craig Topper1a441932016-11-12 07:16:59 +00006330 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006331}
6332
6333static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006334_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006335{
Craig Topper1a441932016-11-12 07:16:59 +00006336 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6337 (__v4di)_mm256_sra_epi64(__A, __B), \
6338 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006339}
6340
6341static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper1a441932016-11-12 07:16:59 +00006342_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006343{
Craig Topper1a441932016-11-12 07:16:59 +00006344 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6345 (__v4di)_mm256_sra_epi64(__A, __B), \
6346 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006347}
6348
Craig Topper1a441932016-11-12 07:16:59 +00006349static __inline__ __m128i __DEFAULT_FN_ATTRS
6350_mm_srai_epi64(__m128i __A, int __imm)
6351{
6352 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6353}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006354
Craig Topper1a441932016-11-12 07:16:59 +00006355static __inline__ __m128i __DEFAULT_FN_ATTRS
6356_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6357{
6358 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6359 (__v2di)_mm_srai_epi64(__A, __imm), \
6360 (__v2di)__W);
6361}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006362
Craig Topper1a441932016-11-12 07:16:59 +00006363static __inline__ __m128i __DEFAULT_FN_ATTRS
6364_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6365{
6366 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6367 (__v2di)_mm_srai_epi64(__A, __imm), \
Craig Topperdff5b312018-05-30 18:02:11 +00006368 (__v2di)_mm_setzero_si128());
Craig Topper1a441932016-11-12 07:16:59 +00006369}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006370
Craig Topper1a441932016-11-12 07:16:59 +00006371static __inline__ __m256i __DEFAULT_FN_ATTRS
6372_mm256_srai_epi64(__m256i __A, int __imm)
6373{
6374 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6375}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006376
Craig Topper1a441932016-11-12 07:16:59 +00006377static __inline__ __m256i __DEFAULT_FN_ATTRS
6378_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6379{
6380 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6381 (__v4di)_mm256_srai_epi64(__A, __imm), \
6382 (__v4di)__W);
6383}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006384
Craig Topper1a441932016-11-12 07:16:59 +00006385static __inline__ __m256i __DEFAULT_FN_ATTRS
6386_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6387{
6388 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6389 (__v4di)_mm256_srai_epi64(__A, __imm), \
6390 (__v4di)_mm256_setzero_si256());
6391}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006392
Craig Topperc6338672018-05-31 00:51:20 +00006393#define _mm_ternarylogic_epi32(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006394 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6395 (__v4si)(__m128i)(B), \
6396 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006397 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006398
Craig Topperc6338672018-05-31 00:51:20 +00006399#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006400 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6401 (__v4si)(__m128i)(B), \
6402 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006403 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006404
Craig Topperc6338672018-05-31 00:51:20 +00006405#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006406 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6407 (__v4si)(__m128i)(B), \
6408 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006409 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006410
Craig Topperc6338672018-05-31 00:51:20 +00006411#define _mm256_ternarylogic_epi32(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006412 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6413 (__v8si)(__m256i)(B), \
6414 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006415 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006416
Craig Topperc6338672018-05-31 00:51:20 +00006417#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006418 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6419 (__v8si)(__m256i)(B), \
6420 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006421 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006422
Craig Topperc6338672018-05-31 00:51:20 +00006423#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006424 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6425 (__v8si)(__m256i)(B), \
6426 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006427 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006428
Craig Topperc6338672018-05-31 00:51:20 +00006429#define _mm_ternarylogic_epi64(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006430 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6431 (__v2di)(__m128i)(B), \
6432 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006433 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006434
Craig Topperc6338672018-05-31 00:51:20 +00006435#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006436 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6437 (__v2di)(__m128i)(B), \
6438 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006439 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006440
Craig Topperc6338672018-05-31 00:51:20 +00006441#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006442 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6443 (__v2di)(__m128i)(B), \
6444 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006445 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006446
Craig Topperc6338672018-05-31 00:51:20 +00006447#define _mm256_ternarylogic_epi64(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006448 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6449 (__v4di)(__m256i)(B), \
6450 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006451 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006452
Craig Topperc6338672018-05-31 00:51:20 +00006453#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006454 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6455 (__v4di)(__m256i)(B), \
6456 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006457 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006458
Craig Topperc6338672018-05-31 00:51:20 +00006459#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006460 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6461 (__v4di)(__m256i)(B), \
6462 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006463 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006464
6465
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006466
Craig Topperc6338672018-05-31 00:51:20 +00006467#define _mm256_shuffle_f32x4(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006468 (__m256)__builtin_ia32_shuf_f32x4_256((__v8sf)(__m256)(A), \
6469 (__v8sf)(__m256)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006470
Craig Topperc6338672018-05-31 00:51:20 +00006471#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006472 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6473 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006474 (__v8sf)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006475
Craig Topperc6338672018-05-31 00:51:20 +00006476#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006477 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6478 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006479 (__v8sf)_mm256_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006480
Craig Topperc6338672018-05-31 00:51:20 +00006481#define _mm256_shuffle_f64x2(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006482 (__m256d)__builtin_ia32_shuf_f64x2_256((__v4df)(__m256d)(A), \
6483 (__v4df)(__m256d)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006484
Craig Topperc6338672018-05-31 00:51:20 +00006485#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006486 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6487 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006488 (__v4df)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006489
Craig Topperc6338672018-05-31 00:51:20 +00006490#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006491 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6492 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006493 (__v4df)_mm256_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006494
Craig Topperc6338672018-05-31 00:51:20 +00006495#define _mm256_shuffle_i32x4(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006496 (__m256i)__builtin_ia32_shuf_i32x4_256((__v8si)(__m256i)(A), \
6497 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006498
Craig Topperc6338672018-05-31 00:51:20 +00006499#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006500 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6501 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006502 (__v8si)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006503
Craig Topperc6338672018-05-31 00:51:20 +00006504#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006505 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6506 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006507 (__v8si)_mm256_setzero_si256())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006508
Craig Topperc6338672018-05-31 00:51:20 +00006509#define _mm256_shuffle_i64x2(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006510 (__m256i)__builtin_ia32_shuf_i64x2_256((__v4di)(__m256i)(A), \
6511 (__v4di)(__m256i)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006512
Craig Topperc6338672018-05-31 00:51:20 +00006513#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006514 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6515 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006516 (__v4di)(__m256)(W))
Jina Nahiasdca97912017-11-13 09:15:31 +00006517
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006518
Craig Topperc6338672018-05-31 00:51:20 +00006519#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006520 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6521 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006522 (__v4di)_mm256_setzero_si256())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006523
Craig Topperc6338672018-05-31 00:51:20 +00006524#define _mm_mask_shuffle_pd(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006525 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6526 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006527 (__v2df)(__m128d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006528
Craig Topperc6338672018-05-31 00:51:20 +00006529#define _mm_maskz_shuffle_pd(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006530 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6531 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006532 (__v2df)_mm_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006533
Craig Topperc6338672018-05-31 00:51:20 +00006534#define _mm256_mask_shuffle_pd(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006535 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6536 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006537 (__v4df)(__m256d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006538
Craig Topperc6338672018-05-31 00:51:20 +00006539#define _mm256_maskz_shuffle_pd(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006540 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6541 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006542 (__v4df)_mm256_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006543
Craig Topperc6338672018-05-31 00:51:20 +00006544#define _mm_mask_shuffle_ps(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006545 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6546 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006547 (__v4sf)(__m128)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006548
Craig Topperc6338672018-05-31 00:51:20 +00006549#define _mm_maskz_shuffle_ps(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006550 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6551 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006552 (__v4sf)_mm_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006553
Craig Topperc6338672018-05-31 00:51:20 +00006554#define _mm256_mask_shuffle_ps(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006555 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6556 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006557 (__v8sf)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006558
Craig Topperc6338672018-05-31 00:51:20 +00006559#define _mm256_maskz_shuffle_ps(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006560 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6561 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006562 (__v8sf)_mm256_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006563
6564static __inline__ __m128d __DEFAULT_FN_ATTRS
6565_mm_rsqrt14_pd (__m128d __A)
6566{
6567 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6568 (__v2df)
6569 _mm_setzero_pd (),
6570 (__mmask8) -1);
6571}
6572
6573static __inline__ __m128d __DEFAULT_FN_ATTRS
6574_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6575{
6576 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6577 (__v2df) __W,
6578 (__mmask8) __U);
6579}
6580
6581static __inline__ __m128d __DEFAULT_FN_ATTRS
6582_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6583{
6584 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6585 (__v2df)
6586 _mm_setzero_pd (),
6587 (__mmask8) __U);
6588}
6589
6590static __inline__ __m256d __DEFAULT_FN_ATTRS
6591_mm256_rsqrt14_pd (__m256d __A)
6592{
6593 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6594 (__v4df)
6595 _mm256_setzero_pd (),
6596 (__mmask8) -1);
6597}
6598
6599static __inline__ __m256d __DEFAULT_FN_ATTRS
6600_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6601{
6602 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6603 (__v4df) __W,
6604 (__mmask8) __U);
6605}
6606
6607static __inline__ __m256d __DEFAULT_FN_ATTRS
6608_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6609{
6610 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6611 (__v4df)
6612 _mm256_setzero_pd (),
6613 (__mmask8) __U);
6614}
6615
6616static __inline__ __m128 __DEFAULT_FN_ATTRS
6617_mm_rsqrt14_ps (__m128 __A)
6618{
6619 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6620 (__v4sf)
6621 _mm_setzero_ps (),
6622 (__mmask8) -1);
6623}
6624
6625static __inline__ __m128 __DEFAULT_FN_ATTRS
6626_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6627{
6628 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6629 (__v4sf) __W,
6630 (__mmask8) __U);
6631}
6632
6633static __inline__ __m128 __DEFAULT_FN_ATTRS
6634_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6635{
6636 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6637 (__v4sf)
6638 _mm_setzero_ps (),
6639 (__mmask8) __U);
6640}
6641
6642static __inline__ __m256 __DEFAULT_FN_ATTRS
6643_mm256_rsqrt14_ps (__m256 __A)
6644{
6645 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6646 (__v8sf)
6647 _mm256_setzero_ps (),
6648 (__mmask8) -1);
6649}
6650
6651static __inline__ __m256 __DEFAULT_FN_ATTRS
6652_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6653{
6654 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6655 (__v8sf) __W,
6656 (__mmask8) __U);
6657}
6658
6659static __inline__ __m256 __DEFAULT_FN_ATTRS
6660_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6661{
6662 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6663 (__v8sf)
6664 _mm256_setzero_ps (),
6665 (__mmask8) __U);
6666}
6667
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006668static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006669_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006670{
Craig Topper367c86d2017-01-18 02:17:10 +00006671 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6672 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006673}
6674
6675static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006676_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006677{
Craig Topper367c86d2017-01-18 02:17:10 +00006678 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6679 (__v8sf)_mm256_broadcast_f32x4(__A),
6680 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006681}
6682
6683static __inline__ __m256 __DEFAULT_FN_ATTRS
6684_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6685{
Craig Topper367c86d2017-01-18 02:17:10 +00006686 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6687 (__v8sf)_mm256_broadcast_f32x4(__A),
6688 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006689}
6690
6691static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006692_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006693{
Craig Topper367c86d2017-01-18 02:17:10 +00006694 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6695 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006696}
6697
6698static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006699_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006700{
Craig Topper367c86d2017-01-18 02:17:10 +00006701 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6702 (__v8si)_mm256_broadcast_i32x4(__A),
6703 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006704}
6705
6706static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper367c86d2017-01-18 02:17:10 +00006707_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006708{
Craig Topper367c86d2017-01-18 02:17:10 +00006709 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6710 (__v8si)_mm256_broadcast_i32x4(__A),
6711 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006712}
6713
6714static __inline__ __m256d __DEFAULT_FN_ATTRS
6715_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6716{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006717 return (__m256d)__builtin_ia32_selectpd_256(__M,
6718 (__v4df) _mm256_broadcastsd_pd(__A),
6719 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006720}
6721
6722static __inline__ __m256d __DEFAULT_FN_ATTRS
6723_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6724{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006725 return (__m256d)__builtin_ia32_selectpd_256(__M,
6726 (__v4df) _mm256_broadcastsd_pd(__A),
6727 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006728}
6729
6730static __inline__ __m128 __DEFAULT_FN_ATTRS
6731_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6732{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006733 return (__m128)__builtin_ia32_selectps_128(__M,
6734 (__v4sf) _mm_broadcastss_ps(__A),
6735 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006736}
6737
6738static __inline__ __m128 __DEFAULT_FN_ATTRS
6739_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6740{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006741 return (__m128)__builtin_ia32_selectps_128(__M,
6742 (__v4sf) _mm_broadcastss_ps(__A),
6743 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006744}
6745
6746static __inline__ __m256 __DEFAULT_FN_ATTRS
6747_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6748{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006749 return (__m256)__builtin_ia32_selectps_256(__M,
6750 (__v8sf) _mm256_broadcastss_ps(__A),
6751 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006752}
6753
6754static __inline__ __m256 __DEFAULT_FN_ATTRS
6755_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6756{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006757 return (__m256)__builtin_ia32_selectps_256(__M,
6758 (__v8sf) _mm256_broadcastss_ps(__A),
6759 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006760}
6761
6762static __inline__ __m128i __DEFAULT_FN_ATTRS
6763_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6764{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006765 return (__m128i)__builtin_ia32_selectd_128(__M,
6766 (__v4si) _mm_broadcastd_epi32(__A),
6767 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006768}
6769
6770static __inline__ __m128i __DEFAULT_FN_ATTRS
6771_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6772{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006773 return (__m128i)__builtin_ia32_selectd_128(__M,
6774 (__v4si) _mm_broadcastd_epi32(__A),
6775 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006776}
6777
6778static __inline__ __m256i __DEFAULT_FN_ATTRS
6779_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6780{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006781 return (__m256i)__builtin_ia32_selectd_256(__M,
6782 (__v8si) _mm256_broadcastd_epi32(__A),
6783 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006784}
6785
6786static __inline__ __m256i __DEFAULT_FN_ATTRS
6787_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6788{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006789 return (__m256i)__builtin_ia32_selectd_256(__M,
6790 (__v8si) _mm256_broadcastd_epi32(__A),
6791 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006792}
6793
6794static __inline__ __m128i __DEFAULT_FN_ATTRS
6795_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6796{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006797 return (__m128i)__builtin_ia32_selectq_128(__M,
6798 (__v2di) _mm_broadcastq_epi64(__A),
6799 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006800}
6801
6802static __inline__ __m128i __DEFAULT_FN_ATTRS
6803_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6804{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006805 return (__m128i)__builtin_ia32_selectq_128(__M,
6806 (__v2di) _mm_broadcastq_epi64(__A),
6807 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006808}
6809
6810static __inline__ __m256i __DEFAULT_FN_ATTRS
6811_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6812{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006813 return (__m256i)__builtin_ia32_selectq_256(__M,
6814 (__v4di) _mm256_broadcastq_epi64(__A),
6815 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006816}
6817
6818static __inline__ __m256i __DEFAULT_FN_ATTRS
6819_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6820{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006821 return (__m256i)__builtin_ia32_selectq_256(__M,
6822 (__v4di) _mm256_broadcastq_epi64(__A),
6823 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006824}
6825
Michael Zuckermane1680612016-04-13 15:02:04 +00006826static __inline__ __m128i __DEFAULT_FN_ATTRS
6827_mm_cvtsepi32_epi8 (__m128i __A)
6828{
6829 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6830 (__v16qi)_mm_undefined_si128(),
6831 (__mmask8) -1);
6832}
6833
6834static __inline__ __m128i __DEFAULT_FN_ATTRS
6835_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6836{
6837 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6838 (__v16qi) __O, __M);
6839}
6840
6841static __inline__ __m128i __DEFAULT_FN_ATTRS
6842_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6843{
6844 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6845 (__v16qi) _mm_setzero_si128 (),
6846 __M);
6847}
6848
6849static __inline__ void __DEFAULT_FN_ATTRS
6850_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6851{
6852 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6853}
6854
6855static __inline__ __m128i __DEFAULT_FN_ATTRS
6856_mm256_cvtsepi32_epi8 (__m256i __A)
6857{
6858 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6859 (__v16qi)_mm_undefined_si128(),
6860 (__mmask8) -1);
6861}
6862
6863static __inline__ __m128i __DEFAULT_FN_ATTRS
6864_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6865{
6866 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6867 (__v16qi) __O, __M);
6868}
6869
6870static __inline__ __m128i __DEFAULT_FN_ATTRS
6871_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
6872{
6873 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6874 (__v16qi) _mm_setzero_si128 (),
6875 __M);
6876}
6877
6878static __inline__ void __DEFAULT_FN_ATTRS
6879_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6880{
6881 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
6882}
6883
6884static __inline__ __m128i __DEFAULT_FN_ATTRS
6885_mm_cvtsepi32_epi16 (__m128i __A)
6886{
6887 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6888 (__v8hi)_mm_setzero_si128 (),
6889 (__mmask8) -1);
6890}
6891
6892static __inline__ __m128i __DEFAULT_FN_ATTRS
6893_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
6894{
6895 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6896 (__v8hi)__O,
6897 __M);
6898}
6899
6900static __inline__ __m128i __DEFAULT_FN_ATTRS
6901_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
6902{
6903 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6904 (__v8hi) _mm_setzero_si128 (),
6905 __M);
6906}
6907
6908static __inline__ void __DEFAULT_FN_ATTRS
6909_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
6910{
6911 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
6912}
6913
6914static __inline__ __m128i __DEFAULT_FN_ATTRS
6915_mm256_cvtsepi32_epi16 (__m256i __A)
6916{
6917 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6918 (__v8hi)_mm_undefined_si128(),
6919 (__mmask8) -1);
6920}
6921
6922static __inline__ __m128i __DEFAULT_FN_ATTRS
6923_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
6924{
6925 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6926 (__v8hi) __O, __M);
6927}
6928
6929static __inline__ __m128i __DEFAULT_FN_ATTRS
6930_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
6931{
6932 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6933 (__v8hi) _mm_setzero_si128 (),
6934 __M);
6935}
6936
6937static __inline__ void __DEFAULT_FN_ATTRS
6938_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
6939{
6940 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
6941}
6942
6943static __inline__ __m128i __DEFAULT_FN_ATTRS
6944_mm_cvtsepi64_epi8 (__m128i __A)
6945{
6946 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6947 (__v16qi)_mm_undefined_si128(),
6948 (__mmask8) -1);
6949}
6950
6951static __inline__ __m128i __DEFAULT_FN_ATTRS
6952_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6953{
6954 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6955 (__v16qi) __O, __M);
6956}
6957
6958static __inline__ __m128i __DEFAULT_FN_ATTRS
6959_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
6960{
6961 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6962 (__v16qi) _mm_setzero_si128 (),
6963 __M);
6964}
6965
6966static __inline__ void __DEFAULT_FN_ATTRS
6967_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6968{
6969 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
6970}
6971
6972static __inline__ __m128i __DEFAULT_FN_ATTRS
6973_mm256_cvtsepi64_epi8 (__m256i __A)
6974{
6975 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6976 (__v16qi)_mm_undefined_si128(),
6977 (__mmask8) -1);
6978}
6979
6980static __inline__ __m128i __DEFAULT_FN_ATTRS
6981_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6982{
6983 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6984 (__v16qi) __O, __M);
6985}
6986
6987static __inline__ __m128i __DEFAULT_FN_ATTRS
6988_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
6989{
6990 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6991 (__v16qi) _mm_setzero_si128 (),
6992 __M);
6993}
6994
6995static __inline__ void __DEFAULT_FN_ATTRS
6996_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6997{
6998 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
6999}
7000
7001static __inline__ __m128i __DEFAULT_FN_ATTRS
7002_mm_cvtsepi64_epi32 (__m128i __A)
7003{
7004 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7005 (__v4si)_mm_undefined_si128(),
7006 (__mmask8) -1);
7007}
7008
7009static __inline__ __m128i __DEFAULT_FN_ATTRS
7010_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7011{
7012 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7013 (__v4si) __O, __M);
7014}
7015
7016static __inline__ __m128i __DEFAULT_FN_ATTRS
7017_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7018{
7019 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7020 (__v4si) _mm_setzero_si128 (),
7021 __M);
7022}
7023
7024static __inline__ void __DEFAULT_FN_ATTRS
7025_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7026{
7027 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7028}
7029
7030static __inline__ __m128i __DEFAULT_FN_ATTRS
7031_mm256_cvtsepi64_epi32 (__m256i __A)
7032{
7033 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7034 (__v4si)_mm_undefined_si128(),
7035 (__mmask8) -1);
7036}
7037
7038static __inline__ __m128i __DEFAULT_FN_ATTRS
7039_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7040{
7041 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7042 (__v4si)__O,
7043 __M);
7044}
7045
7046static __inline__ __m128i __DEFAULT_FN_ATTRS
7047_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7048{
7049 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7050 (__v4si) _mm_setzero_si128 (),
7051 __M);
7052}
7053
7054static __inline__ void __DEFAULT_FN_ATTRS
7055_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7056{
7057 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7058}
7059
7060static __inline__ __m128i __DEFAULT_FN_ATTRS
7061_mm_cvtsepi64_epi16 (__m128i __A)
7062{
7063 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7064 (__v8hi)_mm_undefined_si128(),
7065 (__mmask8) -1);
7066}
7067
7068static __inline__ __m128i __DEFAULT_FN_ATTRS
7069_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7070{
7071 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7072 (__v8hi) __O, __M);
7073}
7074
7075static __inline__ __m128i __DEFAULT_FN_ATTRS
7076_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7077{
7078 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7079 (__v8hi) _mm_setzero_si128 (),
7080 __M);
7081}
7082
7083static __inline__ void __DEFAULT_FN_ATTRS
7084_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7085{
7086 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7087}
7088
7089static __inline__ __m128i __DEFAULT_FN_ATTRS
7090_mm256_cvtsepi64_epi16 (__m256i __A)
7091{
7092 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7093 (__v8hi)_mm_undefined_si128(),
7094 (__mmask8) -1);
7095}
7096
7097static __inline__ __m128i __DEFAULT_FN_ATTRS
7098_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7099{
7100 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7101 (__v8hi) __O, __M);
7102}
7103
7104static __inline__ __m128i __DEFAULT_FN_ATTRS
7105_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7106{
7107 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7108 (__v8hi) _mm_setzero_si128 (),
7109 __M);
7110}
7111
7112static __inline__ void __DEFAULT_FN_ATTRS
7113_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7114{
7115 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7116}
7117
Michael Zuckermand8715312016-04-14 06:48:09 +00007118static __inline__ __m128i __DEFAULT_FN_ATTRS
7119_mm_cvtusepi32_epi8 (__m128i __A)
7120{
7121 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7122 (__v16qi)_mm_undefined_si128(),
7123 (__mmask8) -1);
7124}
7125
7126static __inline__ __m128i __DEFAULT_FN_ATTRS
7127_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7128{
7129 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7130 (__v16qi) __O,
7131 __M);
7132}
7133
7134static __inline__ __m128i __DEFAULT_FN_ATTRS
7135_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7136{
7137 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7138 (__v16qi) _mm_setzero_si128 (),
7139 __M);
7140}
7141
7142static __inline__ void __DEFAULT_FN_ATTRS
7143_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7144{
7145 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7146}
7147
7148static __inline__ __m128i __DEFAULT_FN_ATTRS
7149_mm256_cvtusepi32_epi8 (__m256i __A)
7150{
7151 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7152 (__v16qi)_mm_undefined_si128(),
7153 (__mmask8) -1);
7154}
7155
7156static __inline__ __m128i __DEFAULT_FN_ATTRS
7157_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7158{
7159 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7160 (__v16qi) __O,
7161 __M);
7162}
7163
7164static __inline__ __m128i __DEFAULT_FN_ATTRS
7165_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7166{
7167 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7168 (__v16qi) _mm_setzero_si128 (),
7169 __M);
7170}
7171
7172static __inline__ void __DEFAULT_FN_ATTRS
7173_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7174{
7175 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7176}
7177
7178static __inline__ __m128i __DEFAULT_FN_ATTRS
7179_mm_cvtusepi32_epi16 (__m128i __A)
7180{
7181 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7182 (__v8hi)_mm_undefined_si128(),
7183 (__mmask8) -1);
7184}
7185
7186static __inline__ __m128i __DEFAULT_FN_ATTRS
7187_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7188{
7189 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7190 (__v8hi) __O, __M);
7191}
7192
7193static __inline__ __m128i __DEFAULT_FN_ATTRS
7194_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7195{
7196 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7197 (__v8hi) _mm_setzero_si128 (),
7198 __M);
7199}
7200
7201static __inline__ void __DEFAULT_FN_ATTRS
7202_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7203{
7204 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7205}
7206
7207static __inline__ __m128i __DEFAULT_FN_ATTRS
7208_mm256_cvtusepi32_epi16 (__m256i __A)
7209{
7210 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7211 (__v8hi) _mm_undefined_si128(),
7212 (__mmask8) -1);
7213}
7214
7215static __inline__ __m128i __DEFAULT_FN_ATTRS
7216_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7217{
7218 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7219 (__v8hi) __O, __M);
7220}
7221
7222static __inline__ __m128i __DEFAULT_FN_ATTRS
7223_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7224{
7225 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7226 (__v8hi) _mm_setzero_si128 (),
7227 __M);
7228}
7229
7230static __inline__ void __DEFAULT_FN_ATTRS
7231_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7232{
7233 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7234}
7235
7236static __inline__ __m128i __DEFAULT_FN_ATTRS
7237_mm_cvtusepi64_epi8 (__m128i __A)
7238{
7239 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7240 (__v16qi)_mm_undefined_si128(),
7241 (__mmask8) -1);
7242}
7243
7244static __inline__ __m128i __DEFAULT_FN_ATTRS
7245_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7246{
7247 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7248 (__v16qi) __O,
7249 __M);
7250}
7251
7252static __inline__ __m128i __DEFAULT_FN_ATTRS
7253_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7254{
7255 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7256 (__v16qi) _mm_setzero_si128 (),
7257 __M);
7258}
7259
7260static __inline__ void __DEFAULT_FN_ATTRS
7261_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7262{
7263 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7264}
7265
7266static __inline__ __m128i __DEFAULT_FN_ATTRS
7267_mm256_cvtusepi64_epi8 (__m256i __A)
7268{
7269 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7270 (__v16qi)_mm_undefined_si128(),
7271 (__mmask8) -1);
7272}
7273
7274static __inline__ __m128i __DEFAULT_FN_ATTRS
7275_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7276{
7277 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7278 (__v16qi) __O,
7279 __M);
7280}
7281
7282static __inline__ __m128i __DEFAULT_FN_ATTRS
7283_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7284{
7285 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7286 (__v16qi) _mm_setzero_si128 (),
7287 __M);
7288}
7289
7290static __inline__ void __DEFAULT_FN_ATTRS
7291_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7292{
7293 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7294}
7295
7296static __inline__ __m128i __DEFAULT_FN_ATTRS
7297_mm_cvtusepi64_epi32 (__m128i __A)
7298{
7299 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7300 (__v4si)_mm_undefined_si128(),
7301 (__mmask8) -1);
7302}
7303
7304static __inline__ __m128i __DEFAULT_FN_ATTRS
7305_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7306{
7307 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7308 (__v4si) __O, __M);
7309}
7310
7311static __inline__ __m128i __DEFAULT_FN_ATTRS
7312_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7313{
7314 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7315 (__v4si) _mm_setzero_si128 (),
7316 __M);
7317}
7318
7319static __inline__ void __DEFAULT_FN_ATTRS
7320_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7321{
7322 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7323}
7324
7325static __inline__ __m128i __DEFAULT_FN_ATTRS
7326_mm256_cvtusepi64_epi32 (__m256i __A)
7327{
7328 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7329 (__v4si)_mm_undefined_si128(),
7330 (__mmask8) -1);
7331}
7332
7333static __inline__ __m128i __DEFAULT_FN_ATTRS
7334_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7335{
7336 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7337 (__v4si) __O, __M);
7338}
7339
7340static __inline__ __m128i __DEFAULT_FN_ATTRS
7341_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7342{
7343 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7344 (__v4si) _mm_setzero_si128 (),
7345 __M);
7346}
7347
7348static __inline__ void __DEFAULT_FN_ATTRS
7349_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7350{
7351 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7352}
7353
7354static __inline__ __m128i __DEFAULT_FN_ATTRS
7355_mm_cvtusepi64_epi16 (__m128i __A)
7356{
7357 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7358 (__v8hi)_mm_undefined_si128(),
7359 (__mmask8) -1);
7360}
7361
7362static __inline__ __m128i __DEFAULT_FN_ATTRS
7363_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7364{
7365 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7366 (__v8hi) __O, __M);
7367}
7368
7369static __inline__ __m128i __DEFAULT_FN_ATTRS
7370_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7371{
7372 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7373 (__v8hi) _mm_setzero_si128 (),
7374 __M);
7375}
7376
7377static __inline__ void __DEFAULT_FN_ATTRS
7378_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7379{
7380 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7381}
7382
7383static __inline__ __m128i __DEFAULT_FN_ATTRS
7384_mm256_cvtusepi64_epi16 (__m256i __A)
7385{
7386 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7387 (__v8hi)_mm_undefined_si128(),
7388 (__mmask8) -1);
7389}
7390
7391static __inline__ __m128i __DEFAULT_FN_ATTRS
7392_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7393{
7394 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7395 (__v8hi) __O, __M);
7396}
7397
7398static __inline__ __m128i __DEFAULT_FN_ATTRS
7399_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7400{
7401 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7402 (__v8hi) _mm_setzero_si128 (),
7403 __M);
7404}
7405
7406static __inline__ void __DEFAULT_FN_ATTRS
7407_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7408{
Craig Topper819f2a22018-05-30 17:23:45 +00007409 __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
Michael Zuckermand8715312016-04-14 06:48:09 +00007410}
7411
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007412static __inline__ __m128i __DEFAULT_FN_ATTRS
7413_mm_cvtepi32_epi8 (__m128i __A)
7414{
7415 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7416 (__v16qi)_mm_undefined_si128(),
7417 (__mmask8) -1);
7418}
7419
7420static __inline__ __m128i __DEFAULT_FN_ATTRS
7421_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7422{
7423 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7424 (__v16qi) __O, __M);
7425}
7426
7427static __inline__ __m128i __DEFAULT_FN_ATTRS
7428_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7429{
7430 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7431 (__v16qi)
7432 _mm_setzero_si128 (),
7433 __M);
7434}
7435
7436static __inline__ void __DEFAULT_FN_ATTRS
7437_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7438{
7439 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7440}
7441
7442static __inline__ __m128i __DEFAULT_FN_ATTRS
7443_mm256_cvtepi32_epi8 (__m256i __A)
7444{
7445 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7446 (__v16qi)_mm_undefined_si128(),
7447 (__mmask8) -1);
7448}
7449
7450static __inline__ __m128i __DEFAULT_FN_ATTRS
7451_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7452{
7453 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7454 (__v16qi) __O, __M);
7455}
7456
7457static __inline__ __m128i __DEFAULT_FN_ATTRS
7458_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7459{
7460 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7461 (__v16qi) _mm_setzero_si128 (),
7462 __M);
7463}
7464
7465static __inline__ void __DEFAULT_FN_ATTRS
7466_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7467{
7468 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7469}
7470
7471static __inline__ __m128i __DEFAULT_FN_ATTRS
7472_mm_cvtepi32_epi16 (__m128i __A)
7473{
7474 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7475 (__v8hi) _mm_setzero_si128 (),
7476 (__mmask8) -1);
7477}
7478
7479static __inline__ __m128i __DEFAULT_FN_ATTRS
7480_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7481{
7482 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7483 (__v8hi) __O, __M);
7484}
7485
7486static __inline__ __m128i __DEFAULT_FN_ATTRS
7487_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7488{
7489 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7490 (__v8hi) _mm_setzero_si128 (),
7491 __M);
7492}
7493
7494static __inline__ void __DEFAULT_FN_ATTRS
7495_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7496{
7497 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7498}
7499
7500static __inline__ __m128i __DEFAULT_FN_ATTRS
7501_mm256_cvtepi32_epi16 (__m256i __A)
7502{
Craig Topper25de41c2018-05-14 17:50:40 +00007503 return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007504}
7505
7506static __inline__ __m128i __DEFAULT_FN_ATTRS
7507_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7508{
Craig Topper9d146bb2018-05-15 03:17:52 +00007509 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7510 (__v8hi) __O, __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007511}
7512
7513static __inline__ __m128i __DEFAULT_FN_ATTRS
7514_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7515{
Craig Topper9d146bb2018-05-15 03:17:52 +00007516 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7517 (__v8hi) _mm_setzero_si128 (),
7518 __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007519}
7520
7521static __inline__ void __DEFAULT_FN_ATTRS
7522_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7523{
7524 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7525}
7526
7527static __inline__ __m128i __DEFAULT_FN_ATTRS
7528_mm_cvtepi64_epi8 (__m128i __A)
7529{
7530 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7531 (__v16qi) _mm_undefined_si128(),
7532 (__mmask8) -1);
7533}
7534
7535static __inline__ __m128i __DEFAULT_FN_ATTRS
7536_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7537{
7538 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7539 (__v16qi) __O, __M);
7540}
7541
7542static __inline__ __m128i __DEFAULT_FN_ATTRS
7543_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7544{
7545 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7546 (__v16qi) _mm_setzero_si128 (),
7547 __M);
7548}
7549
7550static __inline__ void __DEFAULT_FN_ATTRS
7551_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7552{
7553 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7554}
7555
7556static __inline__ __m128i __DEFAULT_FN_ATTRS
7557_mm256_cvtepi64_epi8 (__m256i __A)
7558{
7559 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7560 (__v16qi) _mm_undefined_si128(),
7561 (__mmask8) -1);
7562}
7563
7564static __inline__ __m128i __DEFAULT_FN_ATTRS
7565_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7566{
7567 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7568 (__v16qi) __O, __M);
7569}
7570
7571static __inline__ __m128i __DEFAULT_FN_ATTRS
7572_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7573{
7574 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7575 (__v16qi) _mm_setzero_si128 (),
7576 __M);
7577}
7578
7579static __inline__ void __DEFAULT_FN_ATTRS
7580_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7581{
7582 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7583}
7584
7585static __inline__ __m128i __DEFAULT_FN_ATTRS
7586_mm_cvtepi64_epi32 (__m128i __A)
7587{
7588 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7589 (__v4si)_mm_undefined_si128(),
7590 (__mmask8) -1);
7591}
7592
7593static __inline__ __m128i __DEFAULT_FN_ATTRS
7594_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7595{
7596 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7597 (__v4si) __O, __M);
7598}
7599
7600static __inline__ __m128i __DEFAULT_FN_ATTRS
7601_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7602{
7603 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7604 (__v4si) _mm_setzero_si128 (),
7605 __M);
7606}
7607
7608static __inline__ void __DEFAULT_FN_ATTRS
7609_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7610{
7611 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7612}
7613
7614static __inline__ __m128i __DEFAULT_FN_ATTRS
7615_mm256_cvtepi64_epi32 (__m256i __A)
7616{
Craig Topper25de41c2018-05-14 17:50:40 +00007617 return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007618}
7619
7620static __inline__ __m128i __DEFAULT_FN_ATTRS
7621_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7622{
Craig Topper25de41c2018-05-14 17:50:40 +00007623 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7624 (__v4si)_mm256_cvtepi64_epi32(__A),
7625 (__v4si)__O);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007626}
7627
7628static __inline__ __m128i __DEFAULT_FN_ATTRS
7629_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7630{
Craig Topper25de41c2018-05-14 17:50:40 +00007631 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7632 (__v4si)_mm256_cvtepi64_epi32(__A),
7633 (__v4si)_mm_setzero_si128());
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007634}
7635
7636static __inline__ void __DEFAULT_FN_ATTRS
7637_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7638{
7639 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7640}
7641
7642static __inline__ __m128i __DEFAULT_FN_ATTRS
7643_mm_cvtepi64_epi16 (__m128i __A)
7644{
7645 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7646 (__v8hi) _mm_undefined_si128(),
7647 (__mmask8) -1);
7648}
7649
7650static __inline__ __m128i __DEFAULT_FN_ATTRS
7651_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7652{
7653 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7654 (__v8hi)__O,
7655 __M);
7656}
7657
7658static __inline__ __m128i __DEFAULT_FN_ATTRS
7659_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7660{
7661 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7662 (__v8hi) _mm_setzero_si128 (),
7663 __M);
7664}
7665
7666static __inline__ void __DEFAULT_FN_ATTRS
7667_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7668{
7669 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7670}
7671
7672static __inline__ __m128i __DEFAULT_FN_ATTRS
7673_mm256_cvtepi64_epi16 (__m256i __A)
7674{
7675 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7676 (__v8hi)_mm_undefined_si128(),
7677 (__mmask8) -1);
7678}
7679
7680static __inline__ __m128i __DEFAULT_FN_ATTRS
7681_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7682{
7683 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7684 (__v8hi) __O, __M);
7685}
7686
7687static __inline__ __m128i __DEFAULT_FN_ATTRS
7688_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7689{
7690 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7691 (__v8hi) _mm_setzero_si128 (),
7692 __M);
7693}
7694
7695static __inline__ void __DEFAULT_FN_ATTRS
7696_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7697{
7698 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7699}
7700
Craig Topperc6338672018-05-31 00:51:20 +00007701#define _mm256_extractf32x4_ps(A, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007702 (__m128)__builtin_ia32_extractf32x4_256((__v8sf)(__m256)(A), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007703
Craig Topperc6338672018-05-31 00:51:20 +00007704#define _mm256_mask_extractf32x4_ps(W, U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00007705 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7706 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007707 (__v4sf)(__m128)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007708
Craig Topperc6338672018-05-31 00:51:20 +00007709#define _mm256_maskz_extractf32x4_ps(U, A, imm) \
Craig Topper93ffabd2016-10-31 04:30:56 +00007710 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7711 (__v4sf)_mm256_extractf32x4_ps((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007712 (__v4sf)_mm_setzero_ps())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007713
Craig Topperc6338672018-05-31 00:51:20 +00007714#define _mm256_extracti32x4_epi32(A, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007715 (__m128i)__builtin_ia32_extracti32x4_256((__v8si)(__m256i)(A), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007716
Craig Topperc6338672018-05-31 00:51:20 +00007717#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) \
Craig Topper35072962016-10-31 05:49:11 +00007718 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007719 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007720 (__v4si)(__m128i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007721
Craig Topperc6338672018-05-31 00:51:20 +00007722#define _mm256_maskz_extracti32x4_epi32(U, A, imm) \
Craig Topper35072962016-10-31 05:49:11 +00007723 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
Craig Topper93ffabd2016-10-31 04:30:56 +00007724 (__v4si)_mm256_extracti32x4_epi32((A), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007725 (__v4si)_mm_setzero_si128())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007726
Craig Topperc6338672018-05-31 00:51:20 +00007727#define _mm256_insertf32x4(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007728 (__m256)__builtin_ia32_insertf32x4_256((__v8sf)(__m256)(A), \
7729 (__v4sf)(__m128)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007730
Craig Topperc6338672018-05-31 00:51:20 +00007731#define _mm256_mask_insertf32x4(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007732 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7733 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007734 (__v8sf)(__m256)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007735
Craig Topperc6338672018-05-31 00:51:20 +00007736#define _mm256_maskz_insertf32x4(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007737 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7738 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007739 (__v8sf)_mm256_setzero_ps())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007740
Craig Topperc6338672018-05-31 00:51:20 +00007741#define _mm256_inserti32x4(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007742 (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
7743 (__v4si)(__m128i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007744
Craig Topperc6338672018-05-31 00:51:20 +00007745#define _mm256_mask_inserti32x4(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007746 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7747 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007748 (__v8si)(__m256i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007749
Craig Topperc6338672018-05-31 00:51:20 +00007750#define _mm256_maskz_inserti32x4(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007751 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7752 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007753 (__v8si)_mm256_setzero_si256())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007754
Craig Topperc6338672018-05-31 00:51:20 +00007755#define _mm_getmant_pd(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007756 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7757 (int)(((C)<<2) | (B)), \
7758 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007759 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007760
Craig Topperc6338672018-05-31 00:51:20 +00007761#define _mm_mask_getmant_pd(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007762 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7763 (int)(((C)<<2) | (B)), \
7764 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007765 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007766
Craig Topperc6338672018-05-31 00:51:20 +00007767#define _mm_maskz_getmant_pd(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007768 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7769 (int)(((C)<<2) | (B)), \
7770 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007771 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007772
Craig Topperc6338672018-05-31 00:51:20 +00007773#define _mm256_getmant_pd(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007774 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7775 (int)(((C)<<2) | (B)), \
7776 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007777 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007778
Craig Topperc6338672018-05-31 00:51:20 +00007779#define _mm256_mask_getmant_pd(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007780 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7781 (int)(((C)<<2) | (B)), \
7782 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007783 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007784
Craig Topperc6338672018-05-31 00:51:20 +00007785#define _mm256_maskz_getmant_pd(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007786 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7787 (int)(((C)<<2) | (B)), \
7788 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007789 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007790
Craig Topperc6338672018-05-31 00:51:20 +00007791#define _mm_getmant_ps(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007792 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7793 (int)(((C)<<2) | (B)), \
7794 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007795 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007796
Craig Topperc6338672018-05-31 00:51:20 +00007797#define _mm_mask_getmant_ps(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007798 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7799 (int)(((C)<<2) | (B)), \
7800 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007801 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007802
Craig Topperc6338672018-05-31 00:51:20 +00007803#define _mm_maskz_getmant_ps(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007804 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7805 (int)(((C)<<2) | (B)), \
7806 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007807 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007808
Craig Topperc6338672018-05-31 00:51:20 +00007809#define _mm256_getmant_ps(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007810 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7811 (int)(((C)<<2) | (B)), \
7812 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007813 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007814
Craig Topperc6338672018-05-31 00:51:20 +00007815#define _mm256_mask_getmant_ps(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007816 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7817 (int)(((C)<<2) | (B)), \
7818 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007819 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007820
Craig Topperc6338672018-05-31 00:51:20 +00007821#define _mm256_maskz_getmant_ps(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007822 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7823 (int)(((C)<<2) | (B)), \
7824 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007825 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007826
Craig Topperc6338672018-05-31 00:51:20 +00007827#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007828 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7829 (double const *)(addr), \
7830 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007831 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007832
Craig Topperc6338672018-05-31 00:51:20 +00007833#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007834 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7835 (long long const *)(addr), \
7836 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007837 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007838
Craig Topperc6338672018-05-31 00:51:20 +00007839#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007840 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
7841 (double const *)(addr), \
7842 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007843 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007844
Craig Topperc6338672018-05-31 00:51:20 +00007845#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007846 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
7847 (long long const *)(addr), \
7848 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007849 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007850
Craig Topperc6338672018-05-31 00:51:20 +00007851#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007852 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
7853 (float const *)(addr), \
7854 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007855 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007856
Craig Topperc6338672018-05-31 00:51:20 +00007857#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007858 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
7859 (int const *)(addr), \
7860 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007861 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007862
Craig Topperc6338672018-05-31 00:51:20 +00007863#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007864 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
7865 (float const *)(addr), \
7866 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007867 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007868
Craig Topperc6338672018-05-31 00:51:20 +00007869#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007870 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
7871 (int const *)(addr), \
7872 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007873 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007874
Craig Topperc6338672018-05-31 00:51:20 +00007875#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007876 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
7877 (double const *)(addr), \
7878 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007879 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007880
Craig Topperc6338672018-05-31 00:51:20 +00007881#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007882 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
7883 (long long const *)(addr), \
7884 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007885 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007886
Craig Topperc6338672018-05-31 00:51:20 +00007887#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007888 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
7889 (double const *)(addr), \
7890 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007891 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007892
Craig Topperc6338672018-05-31 00:51:20 +00007893#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007894 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
7895 (long long const *)(addr), \
7896 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007897 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007898
Craig Topperc6338672018-05-31 00:51:20 +00007899#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007900 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
7901 (float const *)(addr), \
7902 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007903 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007904
Craig Topperc6338672018-05-31 00:51:20 +00007905#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007906 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
7907 (int const *)(addr), \
7908 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007909 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007910
Craig Topperc6338672018-05-31 00:51:20 +00007911#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007912 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
7913 (float const *)(addr), \
7914 (__v8si)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007915 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007916
Craig Topperc6338672018-05-31 00:51:20 +00007917#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007918 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
7919 (int const *)(addr), \
7920 (__v8si)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007921 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007922
Craig Topperc6338672018-05-31 00:51:20 +00007923#define _mm256_permutex_pd(X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007924 (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
7925 (__v4df)_mm256_undefined_pd(), \
Craig Topper2a383c92016-07-04 22:18:01 +00007926 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
Craig Topperc6338672018-05-31 00:51:20 +00007927 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007928
Craig Topperc6338672018-05-31 00:51:20 +00007929#define _mm256_mask_permutex_pd(W, U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007930 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7931 (__v4df)_mm256_permutex_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007932 (__v4df)(__m256d)(W))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007933
Craig Topperc6338672018-05-31 00:51:20 +00007934#define _mm256_maskz_permutex_pd(U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007935 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7936 (__v4df)_mm256_permutex_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007937 (__v4df)_mm256_setzero_pd())
Michael Zuckerman8938e832016-04-25 05:32:35 +00007938
Craig Topperc6338672018-05-31 00:51:20 +00007939#define _mm256_permutex_epi64(X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007940 (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
7941 (__v4di)_mm256_undefined_si256(), \
Craig Topper2a383c92016-07-04 22:18:01 +00007942 ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
Craig Topperc6338672018-05-31 00:51:20 +00007943 ((C) >> 4) & 0x3, ((C) >> 6) & 0x3)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007944
Craig Topperc6338672018-05-31 00:51:20 +00007945#define _mm256_mask_permutex_epi64(W, U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007946 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7947 (__v4di)_mm256_permutex_epi64((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007948 (__v4di)(__m256i)(W))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007949
Craig Topperc6338672018-05-31 00:51:20 +00007950#define _mm256_maskz_permutex_epi64(U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007951 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7952 (__v4di)_mm256_permutex_epi64((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007953 (__v4di)_mm256_setzero_si256())
Michael Zuckerman8938e832016-04-25 05:32:35 +00007954
7955static __inline__ __m256d __DEFAULT_FN_ATTRS
7956_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
7957{
Craig Topper55b40672018-05-20 23:34:10 +00007958 return (__m256d)__builtin_ia32_permvardf256((__v4df)__Y, (__v4di)__X);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007959}
7960
7961static __inline__ __m256d __DEFAULT_FN_ATTRS
7962_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
7963 __m256d __Y)
7964{
Craig Topper55b40672018-05-20 23:34:10 +00007965 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7966 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7967 (__v4df)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007968}
7969
7970static __inline__ __m256d __DEFAULT_FN_ATTRS
7971_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
7972{
Craig Topper55b40672018-05-20 23:34:10 +00007973 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7974 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7975 (__v4df)_mm256_setzero_pd());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007976}
7977
7978static __inline__ __m256i __DEFAULT_FN_ATTRS
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00007979_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007980{
Craig Topper55b40672018-05-20 23:34:10 +00007981 return (__m256i)__builtin_ia32_permvardi256((__v4di) __Y, (__v4di) __X);
7982}
7983
7984static __inline__ __m256i __DEFAULT_FN_ATTRS
7985_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
7986{
7987 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7988 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7989 (__v4di)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007990}
7991
7992static __inline__ __m256i __DEFAULT_FN_ATTRS
7993_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
7994 __m256i __Y)
7995{
Craig Topper55b40672018-05-20 23:34:10 +00007996 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7997 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7998 (__v4di)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007999}
8000
Craig Topper5dc6ca82018-02-24 06:46:42 +00008001#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
8002
Michael Zuckerman8938e832016-04-25 05:32:35 +00008003static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008004_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008005{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008006 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8007 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8008 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008009}
8010
8011static __inline__ __m256 __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008012_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008013{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008014 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8015 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
8016 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008017}
8018
Craig Topper5dc6ca82018-02-24 06:46:42 +00008019#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
8020
8021static __inline__ __m256i __DEFAULT_FN_ATTRS
8022_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
8023 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008024{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008025 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8026 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8027 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00008028}
8029
8030static __inline__ __m256i __DEFAULT_FN_ATTRS
Craig Topper5dc6ca82018-02-24 06:46:42 +00008031_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00008032{
Craig Topper5dc6ca82018-02-24 06:46:42 +00008033 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
8034 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
8035 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00008036}
8037
Craig Topperc6338672018-05-31 00:51:20 +00008038#define _mm_alignr_epi32(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008039 (__m128i)__builtin_ia32_alignd128((__v4si)(__m128i)(A), \
8040 (__v4si)(__m128i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008041
Craig Topperc6338672018-05-31 00:51:20 +00008042#define _mm_mask_alignr_epi32(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008043 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8044 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008045 (__v4si)(__m128i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008046
Craig Topperc6338672018-05-31 00:51:20 +00008047#define _mm_maskz_alignr_epi32(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008048 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8049 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008050 (__v4si)_mm_setzero_si128())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008051
Craig Topperc6338672018-05-31 00:51:20 +00008052#define _mm256_alignr_epi32(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008053 (__m256i)__builtin_ia32_alignd256((__v8si)(__m256i)(A), \
8054 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008055
Craig Topperc6338672018-05-31 00:51:20 +00008056#define _mm256_mask_alignr_epi32(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008057 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8058 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008059 (__v8si)(__m256i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008060
Craig Topperc6338672018-05-31 00:51:20 +00008061#define _mm256_maskz_alignr_epi32(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008062 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8063 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008064 (__v8si)_mm256_setzero_si256())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008065
Craig Topperc6338672018-05-31 00:51:20 +00008066#define _mm_alignr_epi64(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008067 (__m128i)__builtin_ia32_alignq128((__v2di)(__m128i)(A), \
8068 (__v2di)(__m128i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008069
Craig Topperc6338672018-05-31 00:51:20 +00008070#define _mm_mask_alignr_epi64(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008071 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8072 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008073 (__v2di)(__m128i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008074
Craig Topperc6338672018-05-31 00:51:20 +00008075#define _mm_maskz_alignr_epi64(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008076 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8077 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008078 (__v2di)_mm_setzero_si128())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008079
Craig Topperc6338672018-05-31 00:51:20 +00008080#define _mm256_alignr_epi64(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008081 (__m256i)__builtin_ia32_alignq256((__v4di)(__m256i)(A), \
8082 (__v4di)(__m256i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008083
Craig Topperc6338672018-05-31 00:51:20 +00008084#define _mm256_mask_alignr_epi64(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008085 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8086 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008087 (__v4di)(__m256i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008088
Craig Topperc6338672018-05-31 00:51:20 +00008089#define _mm256_maskz_alignr_epi64(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008090 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8091 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008092 (__v4di)_mm256_setzero_si256())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008093
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008094static __inline__ __m128 __DEFAULT_FN_ATTRS
8095_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8096{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008097 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8098 (__v4sf)_mm_movehdup_ps(__A),
8099 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008100}
8101
8102static __inline__ __m128 __DEFAULT_FN_ATTRS
8103_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8104{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008105 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8106 (__v4sf)_mm_movehdup_ps(__A),
8107 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008108}
8109
8110static __inline__ __m256 __DEFAULT_FN_ATTRS
8111_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8112{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008113 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8114 (__v8sf)_mm256_movehdup_ps(__A),
8115 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008116}
8117
8118static __inline__ __m256 __DEFAULT_FN_ATTRS
8119_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8120{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008121 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8122 (__v8sf)_mm256_movehdup_ps(__A),
8123 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008124}
8125
8126static __inline__ __m128 __DEFAULT_FN_ATTRS
8127_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8128{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008129 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8130 (__v4sf)_mm_moveldup_ps(__A),
8131 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008132}
8133
8134static __inline__ __m128 __DEFAULT_FN_ATTRS
8135_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8136{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008137 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8138 (__v4sf)_mm_moveldup_ps(__A),
8139 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008140}
8141
8142static __inline__ __m256 __DEFAULT_FN_ATTRS
8143_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8144{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008145 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8146 (__v8sf)_mm256_moveldup_ps(__A),
8147 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008148}
8149
8150static __inline__ __m256 __DEFAULT_FN_ATTRS
8151_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8152{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008153 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8154 (__v8sf)_mm256_moveldup_ps(__A),
8155 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008156}
8157
Craig Topperc6338672018-05-31 00:51:20 +00008158#define _mm256_mask_shuffle_epi32(W, U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008159 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8160 (__v8si)_mm256_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008161 (__v8si)(__m256i)(W))
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008162
Craig Topperc6338672018-05-31 00:51:20 +00008163#define _mm256_maskz_shuffle_epi32(U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008164 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8165 (__v8si)_mm256_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008166 (__v8si)_mm256_setzero_si256())
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008167
Craig Topperc6338672018-05-31 00:51:20 +00008168#define _mm_mask_shuffle_epi32(W, U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008169 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8170 (__v4si)_mm_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008171 (__v4si)(__m128i)(W))
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008172
Craig Topperc6338672018-05-31 00:51:20 +00008173#define _mm_maskz_shuffle_epi32(U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008174 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8175 (__v4si)_mm_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008176 (__v4si)_mm_setzero_si128())
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008177
8178static __inline__ __m128d __DEFAULT_FN_ATTRS
8179_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8180{
Igor Bregeraadb8762016-06-08 13:59:20 +00008181 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8182 (__v2df) __A,
8183 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008184}
8185
8186static __inline__ __m128d __DEFAULT_FN_ATTRS
8187_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8188{
Igor Bregeraadb8762016-06-08 13:59:20 +00008189 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8190 (__v2df) __A,
8191 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008192}
8193
8194static __inline__ __m256d __DEFAULT_FN_ATTRS
8195_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8196{
Igor Bregeraadb8762016-06-08 13:59:20 +00008197 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8198 (__v4df) __A,
8199 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008200}
8201
8202static __inline__ __m256d __DEFAULT_FN_ATTRS
8203_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8204{
Igor Bregeraadb8762016-06-08 13:59:20 +00008205 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8206 (__v4df) __A,
8207 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008208}
8209
8210static __inline__ __m128 __DEFAULT_FN_ATTRS
8211_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8212{
Igor Bregeraadb8762016-06-08 13:59:20 +00008213 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8214 (__v4sf) __A,
8215 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008216}
8217
8218static __inline__ __m128 __DEFAULT_FN_ATTRS
8219_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8220{
Igor Bregeraadb8762016-06-08 13:59:20 +00008221 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8222 (__v4sf) __A,
8223 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008224}
8225
8226static __inline__ __m256 __DEFAULT_FN_ATTRS
8227_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8228{
Igor Bregeraadb8762016-06-08 13:59:20 +00008229 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8230 (__v8sf) __A,
8231 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008232}
8233
8234static __inline__ __m256 __DEFAULT_FN_ATTRS
8235_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8236{
Igor Bregeraadb8762016-06-08 13:59:20 +00008237 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8238 (__v8sf) __A,
8239 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008240}
8241
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008242static __inline__ __m128 __DEFAULT_FN_ATTRS
8243_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8244{
8245 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8246 (__v4sf) __W,
8247 (__mmask8) __U);
8248}
8249
8250static __inline__ __m128 __DEFAULT_FN_ATTRS
8251_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8252{
8253 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8254 (__v4sf)
8255 _mm_setzero_ps (),
8256 (__mmask8) __U);
8257}
8258
8259static __inline__ __m256 __DEFAULT_FN_ATTRS
8260_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8261{
8262 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8263 (__v8sf) __W,
8264 (__mmask8) __U);
8265}
8266
8267static __inline__ __m256 __DEFAULT_FN_ATTRS
8268_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8269{
8270 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8271 (__v8sf)
8272 _mm256_setzero_ps (),
8273 (__mmask8) __U);
8274}
8275
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008276static __inline __m128i __DEFAULT_FN_ATTRS
8277_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8278{
8279 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8280 (__v8hi) __W,
8281 (__mmask8) __U);
8282}
8283
8284static __inline __m128i __DEFAULT_FN_ATTRS
8285_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8286{
8287 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8288 (__v8hi) _mm_setzero_si128 (),
8289 (__mmask8) __U);
8290}
8291
Craig Topperc6338672018-05-31 00:51:20 +00008292#define _mm_mask_cvt_roundps_ph(W, U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008293 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8294 (__v8hi)(__m128i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00008295 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008296
Craig Topperc6338672018-05-31 00:51:20 +00008297#define _mm_maskz_cvt_roundps_ph(U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008298 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8299 (__v8hi)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00008300 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008301
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008302static __inline __m128i __DEFAULT_FN_ATTRS
8303_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8304{
8305 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8306 (__v8hi) __W,
8307 (__mmask8) __U);
8308}
8309
8310static __inline __m128i __DEFAULT_FN_ATTRS
8311_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8312{
8313 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8314 (__v8hi) _mm_setzero_si128(),
8315 (__mmask8) __U);
8316}
Craig Topperc6338672018-05-31 00:51:20 +00008317#define _mm256_mask_cvt_roundps_ph(W, U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008318 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8319 (__v8hi)(__m128i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00008320 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008321
Craig Topperc6338672018-05-31 00:51:20 +00008322#define _mm256_maskz_cvt_roundps_ph(U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008323 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8324 (__v8hi)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00008325 (__mmask8)(U))
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008326
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008327
Michael Kupersteine45af542015-06-30 13:36:19 +00008328#undef __DEFAULT_FN_ATTRS
Eric Christopher4d1851682015-06-17 07:09:20 +00008329
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008330#endif /* __AVX512VLINTRIN_H */