blob: 0ee1d00ef4d2876bc8b144ebbf6a5f15692fce4b [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
Craig Topper74c10e32018-07-09 19:00:16 +000031#define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl"), __min_vector_width__(128)))
32#define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl"), __min_vector_width__(256)))
Eric Christopher4d1851682015-06-17 07:09:20 +000033
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +000034typedef short __v2hi __attribute__((__vector_size__(4)));
35typedef char __v4qi __attribute__((__vector_size__(4)));
36typedef char __v2qi __attribute__((__vector_size__(2)));
37
Robert Khasanovb9f3a912014-10-08 17:18:13 +000038/* Integer compare */
39
Craig Topper57f96ac2017-11-06 21:00:49 +000040#define _mm_cmpeq_epi32_mask(A, B) \
41 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
42#define _mm_mask_cmpeq_epi32_mask(k, A, B) \
43 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
44#define _mm_cmpge_epi32_mask(A, B) \
45 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
46#define _mm_mask_cmpge_epi32_mask(k, A, B) \
47 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
48#define _mm_cmpgt_epi32_mask(A, B) \
49 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
50#define _mm_mask_cmpgt_epi32_mask(k, A, B) \
51 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
52#define _mm_cmple_epi32_mask(A, B) \
53 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
54#define _mm_mask_cmple_epi32_mask(k, A, B) \
55 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
56#define _mm_cmplt_epi32_mask(A, B) \
57 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
58#define _mm_mask_cmplt_epi32_mask(k, A, B) \
59 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
60#define _mm_cmpneq_epi32_mask(A, B) \
61 _mm_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
62#define _mm_mask_cmpneq_epi32_mask(k, A, B) \
63 _mm_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000064
Craig Topper57f96ac2017-11-06 21:00:49 +000065#define _mm256_cmpeq_epi32_mask(A, B) \
66 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_EQ)
67#define _mm256_mask_cmpeq_epi32_mask(k, A, B) \
68 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_EQ)
69#define _mm256_cmpge_epi32_mask(A, B) \
70 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GE)
71#define _mm256_mask_cmpge_epi32_mask(k, A, B) \
72 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GE)
73#define _mm256_cmpgt_epi32_mask(A, B) \
74 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_GT)
75#define _mm256_mask_cmpgt_epi32_mask(k, A, B) \
76 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_GT)
77#define _mm256_cmple_epi32_mask(A, B) \
78 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LE)
79#define _mm256_mask_cmple_epi32_mask(k, A, B) \
80 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LE)
81#define _mm256_cmplt_epi32_mask(A, B) \
82 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_LT)
83#define _mm256_mask_cmplt_epi32_mask(k, A, B) \
84 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_LT)
85#define _mm256_cmpneq_epi32_mask(A, B) \
86 _mm256_cmp_epi32_mask((A), (B), _MM_CMPINT_NE)
87#define _mm256_mask_cmpneq_epi32_mask(k, A, B) \
88 _mm256_mask_cmp_epi32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +000089
Craig Topper57f96ac2017-11-06 21:00:49 +000090#define _mm_cmpeq_epu32_mask(A, B) \
91 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
92#define _mm_mask_cmpeq_epu32_mask(k, A, B) \
93 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
94#define _mm_cmpge_epu32_mask(A, B) \
95 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
96#define _mm_mask_cmpge_epu32_mask(k, A, B) \
97 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
98#define _mm_cmpgt_epu32_mask(A, B) \
99 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
100#define _mm_mask_cmpgt_epu32_mask(k, A, B) \
101 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
102#define _mm_cmple_epu32_mask(A, B) \
103 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
104#define _mm_mask_cmple_epu32_mask(k, A, B) \
105 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
106#define _mm_cmplt_epu32_mask(A, B) \
107 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
108#define _mm_mask_cmplt_epu32_mask(k, A, B) \
109 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
110#define _mm_cmpneq_epu32_mask(A, B) \
111 _mm_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
112#define _mm_mask_cmpneq_epu32_mask(k, A, B) \
113 _mm_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000114
Craig Topper57f96ac2017-11-06 21:00:49 +0000115#define _mm256_cmpeq_epu32_mask(A, B) \
116 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_EQ)
117#define _mm256_mask_cmpeq_epu32_mask(k, A, B) \
118 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_EQ)
119#define _mm256_cmpge_epu32_mask(A, B) \
120 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GE)
121#define _mm256_mask_cmpge_epu32_mask(k, A, B) \
122 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GE)
123#define _mm256_cmpgt_epu32_mask(A, B) \
124 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_GT)
125#define _mm256_mask_cmpgt_epu32_mask(k, A, B) \
126 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_GT)
127#define _mm256_cmple_epu32_mask(A, B) \
128 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LE)
129#define _mm256_mask_cmple_epu32_mask(k, A, B) \
130 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LE)
131#define _mm256_cmplt_epu32_mask(A, B) \
132 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_LT)
133#define _mm256_mask_cmplt_epu32_mask(k, A, B) \
134 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_LT)
135#define _mm256_cmpneq_epu32_mask(A, B) \
136 _mm256_cmp_epu32_mask((A), (B), _MM_CMPINT_NE)
137#define _mm256_mask_cmpneq_epu32_mask(k, A, B) \
138 _mm256_mask_cmp_epu32_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000139
Craig Topper57f96ac2017-11-06 21:00:49 +0000140#define _mm_cmpeq_epi64_mask(A, B) \
141 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
142#define _mm_mask_cmpeq_epi64_mask(k, A, B) \
143 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
144#define _mm_cmpge_epi64_mask(A, B) \
145 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
146#define _mm_mask_cmpge_epi64_mask(k, A, B) \
147 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
148#define _mm_cmpgt_epi64_mask(A, B) \
149 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
150#define _mm_mask_cmpgt_epi64_mask(k, A, B) \
151 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
152#define _mm_cmple_epi64_mask(A, B) \
153 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
154#define _mm_mask_cmple_epi64_mask(k, A, B) \
155 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
156#define _mm_cmplt_epi64_mask(A, B) \
157 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
158#define _mm_mask_cmplt_epi64_mask(k, A, B) \
159 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
160#define _mm_cmpneq_epi64_mask(A, B) \
161 _mm_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
162#define _mm_mask_cmpneq_epi64_mask(k, A, B) \
163 _mm_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000164
Craig Topper57f96ac2017-11-06 21:00:49 +0000165#define _mm256_cmpeq_epi64_mask(A, B) \
166 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_EQ)
167#define _mm256_mask_cmpeq_epi64_mask(k, A, B) \
168 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_EQ)
169#define _mm256_cmpge_epi64_mask(A, B) \
170 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GE)
171#define _mm256_mask_cmpge_epi64_mask(k, A, B) \
172 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GE)
173#define _mm256_cmpgt_epi64_mask(A, B) \
174 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_GT)
175#define _mm256_mask_cmpgt_epi64_mask(k, A, B) \
176 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_GT)
177#define _mm256_cmple_epi64_mask(A, B) \
178 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LE)
179#define _mm256_mask_cmple_epi64_mask(k, A, B) \
180 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LE)
181#define _mm256_cmplt_epi64_mask(A, B) \
182 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_LT)
183#define _mm256_mask_cmplt_epi64_mask(k, A, B) \
184 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_LT)
185#define _mm256_cmpneq_epi64_mask(A, B) \
186 _mm256_cmp_epi64_mask((A), (B), _MM_CMPINT_NE)
187#define _mm256_mask_cmpneq_epi64_mask(k, A, B) \
188 _mm256_mask_cmp_epi64_mask((k), (A), (B), _MM_CMPINT_NE)
Robert Khasanovb9f3a912014-10-08 17:18:13 +0000189
Craig Topper57f96ac2017-11-06 21:00:49 +0000190#define _mm_cmpeq_epu64_mask(A, B) \
191 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
192#define _mm_mask_cmpeq_epu64_mask(k, A, B) \
193 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
194#define _mm_cmpge_epu64_mask(A, B) \
195 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
196#define _mm_mask_cmpge_epu64_mask(k, A, B) \
197 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
198#define _mm_cmpgt_epu64_mask(A, B) \
199 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
200#define _mm_mask_cmpgt_epu64_mask(k, A, B) \
201 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
202#define _mm_cmple_epu64_mask(A, B) \
203 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
204#define _mm_mask_cmple_epu64_mask(k, A, B) \
205 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
206#define _mm_cmplt_epu64_mask(A, B) \
207 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
208#define _mm_mask_cmplt_epu64_mask(k, A, B) \
209 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
210#define _mm_cmpneq_epu64_mask(A, B) \
211 _mm_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
212#define _mm_mask_cmpneq_epu64_mask(k, A, B) \
213 _mm_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000214
Craig Topper57f96ac2017-11-06 21:00:49 +0000215#define _mm256_cmpeq_epu64_mask(A, B) \
216 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_EQ)
217#define _mm256_mask_cmpeq_epu64_mask(k, A, B) \
218 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_EQ)
219#define _mm256_cmpge_epu64_mask(A, B) \
220 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GE)
221#define _mm256_mask_cmpge_epu64_mask(k, A, B) \
222 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GE)
223#define _mm256_cmpgt_epu64_mask(A, B) \
224 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_GT)
225#define _mm256_mask_cmpgt_epu64_mask(k, A, B) \
226 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_GT)
227#define _mm256_cmple_epu64_mask(A, B) \
228 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LE)
229#define _mm256_mask_cmple_epu64_mask(k, A, B) \
230 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LE)
231#define _mm256_cmplt_epu64_mask(A, B) \
232 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_LT)
233#define _mm256_mask_cmplt_epu64_mask(k, A, B) \
234 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_LT)
235#define _mm256_cmpneq_epu64_mask(A, B) \
236 _mm256_cmp_epu64_mask((A), (B), _MM_CMPINT_NE)
237#define _mm256_mask_cmpneq_epu64_mask(k, A, B) \
238 _mm256_mask_cmp_epu64_mask((k), (A), (B), _MM_CMPINT_NE)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000239
Craig Topper74c10e32018-07-09 19:00:16 +0000240static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000241_mm256_mask_add_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000242{
Craig Topper0e189762016-09-03 18:29:35 +0000243 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
244 (__v8si)_mm256_add_epi32(__A, __B),
245 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000246}
247
Craig Topper74c10e32018-07-09 19:00:16 +0000248static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000249_mm256_maskz_add_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000250{
Craig Topper0e189762016-09-03 18:29:35 +0000251 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
252 (__v8si)_mm256_add_epi32(__A, __B),
253 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000254}
255
Craig Topper74c10e32018-07-09 19:00:16 +0000256static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000257_mm256_mask_add_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000258{
Craig Topper0e189762016-09-03 18:29:35 +0000259 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
260 (__v4di)_mm256_add_epi64(__A, __B),
261 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000262}
263
Craig Topper74c10e32018-07-09 19:00:16 +0000264static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000265_mm256_maskz_add_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000266{
Craig Topper0e189762016-09-03 18:29:35 +0000267 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
268 (__v4di)_mm256_add_epi64(__A, __B),
269 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000270}
271
Craig Topper74c10e32018-07-09 19:00:16 +0000272static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000273_mm256_mask_sub_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000274{
Craig Topper0e189762016-09-03 18:29:35 +0000275 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
276 (__v8si)_mm256_sub_epi32(__A, __B),
277 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000278}
279
Craig Topper74c10e32018-07-09 19:00:16 +0000280static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000281_mm256_maskz_sub_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000282{
Craig Topper0e189762016-09-03 18:29:35 +0000283 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
284 (__v8si)_mm256_sub_epi32(__A, __B),
285 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000286}
287
Craig Topper74c10e32018-07-09 19:00:16 +0000288static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000289_mm256_mask_sub_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000290{
Craig Topper0e189762016-09-03 18:29:35 +0000291 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
292 (__v4di)_mm256_sub_epi64(__A, __B),
293 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000294}
295
Craig Topper74c10e32018-07-09 19:00:16 +0000296static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e189762016-09-03 18:29:35 +0000297_mm256_maskz_sub_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000298{
Craig Topper0e189762016-09-03 18:29:35 +0000299 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
300 (__v4di)_mm256_sub_epi64(__A, __B),
301 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000302}
303
Craig Topper74c10e32018-07-09 19:00:16 +0000304static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000305_mm_mask_add_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000306{
Craig Topper0e189762016-09-03 18:29:35 +0000307 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
308 (__v4si)_mm_add_epi32(__A, __B),
309 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000310}
311
Craig Topper74c10e32018-07-09 19:00:16 +0000312static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000313_mm_maskz_add_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000314{
Craig Topper0e189762016-09-03 18:29:35 +0000315 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
316 (__v4si)_mm_add_epi32(__A, __B),
317 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000318}
319
Craig Topper74c10e32018-07-09 19:00:16 +0000320static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000321_mm_mask_add_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000322{
Craig Topper0e189762016-09-03 18:29:35 +0000323 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
324 (__v2di)_mm_add_epi64(__A, __B),
325 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000326}
327
Craig Topper74c10e32018-07-09 19:00:16 +0000328static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000329_mm_maskz_add_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000330{
Craig Topper0e189762016-09-03 18:29:35 +0000331 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
332 (__v2di)_mm_add_epi64(__A, __B),
333 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000334}
335
Craig Topper74c10e32018-07-09 19:00:16 +0000336static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000337_mm_mask_sub_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000338{
Craig Topper0e189762016-09-03 18:29:35 +0000339 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
340 (__v4si)_mm_sub_epi32(__A, __B),
341 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000342}
343
Craig Topper74c10e32018-07-09 19:00:16 +0000344static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000345_mm_maskz_sub_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000346{
Craig Topper0e189762016-09-03 18:29:35 +0000347 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
348 (__v4si)_mm_sub_epi32(__A, __B),
349 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000350}
351
Craig Topper74c10e32018-07-09 19:00:16 +0000352static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000353_mm_mask_sub_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000354{
Craig Topper0e189762016-09-03 18:29:35 +0000355 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
356 (__v2di)_mm_sub_epi64(__A, __B),
357 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000358}
359
Craig Topper74c10e32018-07-09 19:00:16 +0000360static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e189762016-09-03 18:29:35 +0000361_mm_maskz_sub_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000362{
Craig Topper0e189762016-09-03 18:29:35 +0000363 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
364 (__v2di)_mm_sub_epi64(__A, __B),
365 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000366}
367
Craig Topper74c10e32018-07-09 19:00:16 +0000368static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper09e94002016-10-29 19:02:07 +0000369_mm256_mask_mul_epi32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000370{
Craig Topper09e94002016-10-29 19:02:07 +0000371 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
372 (__v4di)_mm256_mul_epi32(__X, __Y),
373 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000374}
375
Craig Topper74c10e32018-07-09 19:00:16 +0000376static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper09e94002016-10-29 19:02:07 +0000377_mm256_maskz_mul_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000378{
Craig Topper09e94002016-10-29 19:02:07 +0000379 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
380 (__v4di)_mm256_mul_epi32(__X, __Y),
381 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000382}
383
Craig Topper74c10e32018-07-09 19:00:16 +0000384static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper09e94002016-10-29 19:02:07 +0000385_mm_mask_mul_epi32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000386{
Craig Topper09e94002016-10-29 19:02:07 +0000387 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
388 (__v2di)_mm_mul_epi32(__X, __Y),
389 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000390}
391
Craig Topper74c10e32018-07-09 19:00:16 +0000392static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper09e94002016-10-29 19:02:07 +0000393_mm_maskz_mul_epi32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000394{
Craig Topper09e94002016-10-29 19:02:07 +0000395 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
396 (__v2di)_mm_mul_epi32(__X, __Y),
397 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000398}
399
Craig Topper74c10e32018-07-09 19:00:16 +0000400static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper09e94002016-10-29 19:02:07 +0000401_mm256_mask_mul_epu32(__m256i __W, __mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000402{
Craig Topper09e94002016-10-29 19:02:07 +0000403 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
404 (__v4di)_mm256_mul_epu32(__X, __Y),
405 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000406}
407
Craig Topper74c10e32018-07-09 19:00:16 +0000408static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper09e94002016-10-29 19:02:07 +0000409_mm256_maskz_mul_epu32(__mmask8 __M, __m256i __X, __m256i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000410{
Craig Topper09e94002016-10-29 19:02:07 +0000411 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
412 (__v4di)_mm256_mul_epu32(__X, __Y),
413 (__v4di)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000414}
415
Craig Topper74c10e32018-07-09 19:00:16 +0000416static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper09e94002016-10-29 19:02:07 +0000417_mm_mask_mul_epu32(__m128i __W, __mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000418{
Craig Topper09e94002016-10-29 19:02:07 +0000419 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
420 (__v2di)_mm_mul_epu32(__X, __Y),
421 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000422}
423
Craig Topper74c10e32018-07-09 19:00:16 +0000424static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper09e94002016-10-29 19:02:07 +0000425_mm_maskz_mul_epu32(__mmask8 __M, __m128i __X, __m128i __Y)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000426{
Craig Topper09e94002016-10-29 19:02:07 +0000427 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
428 (__v2di)_mm_mul_epu32(__X, __Y),
429 (__v2di)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000430}
431
Craig Topper74c10e32018-07-09 19:00:16 +0000432static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf43e4a12016-09-03 19:19:49 +0000433_mm256_maskz_mullo_epi32(__mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000434{
Craig Topperf43e4a12016-09-03 19:19:49 +0000435 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
436 (__v8si)_mm256_mullo_epi32(__A, __B),
437 (__v8si)_mm256_setzero_si256());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000438}
439
Craig Topper74c10e32018-07-09 19:00:16 +0000440static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf43e4a12016-09-03 19:19:49 +0000441_mm256_mask_mullo_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000442{
Craig Topperf43e4a12016-09-03 19:19:49 +0000443 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
444 (__v8si)_mm256_mullo_epi32(__A, __B),
445 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000446}
447
Craig Topper74c10e32018-07-09 19:00:16 +0000448static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf43e4a12016-09-03 19:19:49 +0000449_mm_maskz_mullo_epi32(__mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000450{
Craig Topperf43e4a12016-09-03 19:19:49 +0000451 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
452 (__v4si)_mm_mullo_epi32(__A, __B),
453 (__v4si)_mm_setzero_si128());
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000454}
455
Craig Topper74c10e32018-07-09 19:00:16 +0000456static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf43e4a12016-09-03 19:19:49 +0000457_mm_mask_mullo_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000458{
Craig Topperf43e4a12016-09-03 19:19:49 +0000459 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
460 (__v4si)_mm_mullo_epi32(__A, __B),
461 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000462}
463
Craig Topper74c10e32018-07-09 19:00:16 +0000464static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000465_mm256_mask_and_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000466{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000467 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
468 (__v8si)_mm256_and_si256(__A, __B),
469 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000470}
471
Craig Topper74c10e32018-07-09 19:00:16 +0000472static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000473_mm256_maskz_and_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000474{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000475 return (__m256i)_mm256_mask_and_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000476}
477
Craig Topper74c10e32018-07-09 19:00:16 +0000478static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000479_mm_mask_and_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000480{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000481 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
482 (__v4si)_mm_and_si128(__A, __B),
483 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000484}
485
Craig Topper74c10e32018-07-09 19:00:16 +0000486static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000487_mm_maskz_and_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000488{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000489 return (__m128i)_mm_mask_and_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000490}
491
Craig Topper74c10e32018-07-09 19:00:16 +0000492static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000493_mm256_mask_andnot_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000494{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000495 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
496 (__v8si)_mm256_andnot_si256(__A, __B),
497 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000498}
499
Craig Topper74c10e32018-07-09 19:00:16 +0000500static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000501_mm256_maskz_andnot_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000502{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000503 return (__m256i)_mm256_mask_andnot_epi32(_mm256_setzero_si256(),
504 __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000505}
506
Craig Topper74c10e32018-07-09 19:00:16 +0000507static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000508_mm_mask_andnot_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000509{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000510 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
511 (__v4si)_mm_andnot_si128(__A, __B),
512 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000513}
514
Craig Topper74c10e32018-07-09 19:00:16 +0000515static __inline__ __m128i __DEFAULT_FN_ATTRS128
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000516_mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
517{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000518 return (__m128i)_mm_mask_andnot_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000519}
520
Craig Topper74c10e32018-07-09 19:00:16 +0000521static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000522_mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000523{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000524 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
525 (__v8si)_mm256_or_si256(__A, __B),
526 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000527}
528
Craig Topper74c10e32018-07-09 19:00:16 +0000529static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000530_mm256_maskz_or_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000531{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000532 return (__m256i)_mm256_mask_or_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000533}
534
Craig Topper74c10e32018-07-09 19:00:16 +0000535static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000536_mm_mask_or_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000537{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000538 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
539 (__v4si)_mm_or_si128(__A, __B),
540 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000541}
542
Craig Topper74c10e32018-07-09 19:00:16 +0000543static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000544_mm_maskz_or_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000545{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000546 return (__m128i)_mm_mask_or_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000547}
548
Craig Topper74c10e32018-07-09 19:00:16 +0000549static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000550_mm256_mask_xor_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000551{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000552 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
553 (__v8si)_mm256_xor_si256(__A, __B),
554 (__v8si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000555}
556
Craig Topper74c10e32018-07-09 19:00:16 +0000557static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000558_mm256_maskz_xor_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000559{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000560 return (__m256i)_mm256_mask_xor_epi32(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000561}
562
Craig Topper74c10e32018-07-09 19:00:16 +0000563static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000564_mm_mask_xor_epi32(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000565 __m128i __B)
566{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000567 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
568 (__v4si)_mm_xor_si128(__A, __B),
569 (__v4si)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000570}
571
Craig Topper74c10e32018-07-09 19:00:16 +0000572static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000573_mm_maskz_xor_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000574{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000575 return (__m128i)_mm_mask_xor_epi32(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000576}
577
Craig Topper74c10e32018-07-09 19:00:16 +0000578static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000579_mm256_mask_and_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000580{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000581 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
582 (__v4di)_mm256_and_si256(__A, __B),
583 (__v4di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000584}
585
Craig Topper74c10e32018-07-09 19:00:16 +0000586static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000587_mm256_maskz_and_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000588{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000589 return (__m256i)_mm256_mask_and_epi64(_mm256_setzero_si256(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000590}
591
Craig Topper74c10e32018-07-09 19:00:16 +0000592static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000593_mm_mask_and_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
594{
595 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
596 (__v2di)_mm_and_si128(__A, __B),
597 (__v2di)__W);
598}
599
Craig Topper74c10e32018-07-09 19:00:16 +0000600static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000601_mm_maskz_and_epi64(__mmask8 __U, __m128i __A, __m128i __B)
602{
603 return (__m128i)_mm_mask_and_epi64(_mm_setzero_si128(), __U, __A, __B);
604}
605
Craig Topper74c10e32018-07-09 19:00:16 +0000606static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000607_mm256_mask_andnot_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
608{
609 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
610 (__v4di)_mm256_andnot_si256(__A, __B),
611 (__v4di)__W);
612}
613
Craig Topper74c10e32018-07-09 19:00:16 +0000614static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000615_mm256_maskz_andnot_epi64(__mmask8 __U, __m256i __A, __m256i __B)
616{
617 return (__m256i)_mm256_mask_andnot_epi64(_mm256_setzero_si256(),
618 __U, __A, __B);
619}
620
Craig Topper74c10e32018-07-09 19:00:16 +0000621static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000622_mm_mask_andnot_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
623{
624 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
625 (__v2di)_mm_andnot_si128(__A, __B),
626 (__v2di)__W);
627}
628
Craig Topper74c10e32018-07-09 19:00:16 +0000629static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000630_mm_maskz_andnot_epi64(__mmask8 __U, __m128i __A, __m128i __B)
631{
632 return (__m128i)_mm_mask_andnot_epi64(_mm_setzero_si128(), __U, __A, __B);
633}
634
Craig Topper74c10e32018-07-09 19:00:16 +0000635static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000636_mm256_mask_or_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
637{
638 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
639 (__v4di)_mm256_or_si256(__A, __B),
640 (__v4di)__W);
641}
642
Craig Topper74c10e32018-07-09 19:00:16 +0000643static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000644_mm256_maskz_or_epi64(__mmask8 __U, __m256i __A, __m256i __B)
645{
646 return (__m256i)_mm256_mask_or_epi64(_mm256_setzero_si256(), __U, __A, __B);
647}
648
Craig Topper74c10e32018-07-09 19:00:16 +0000649static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000650_mm_mask_or_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
651{
652 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
653 (__v2di)_mm_or_si128(__A, __B),
654 (__v2di)__W);
655}
656
Craig Topper74c10e32018-07-09 19:00:16 +0000657static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000658_mm_maskz_or_epi64(__mmask8 __U, __m128i __A, __m128i __B)
659{
660 return (__m128i)_mm_mask_or_epi64(_mm_setzero_si128(), __U, __A, __B);
661}
662
Craig Topper74c10e32018-07-09 19:00:16 +0000663static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000664_mm256_mask_xor_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
665{
666 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
667 (__v4di)_mm256_xor_si256(__A, __B),
668 (__v4di)__W);
669}
670
Craig Topper74c10e32018-07-09 19:00:16 +0000671static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper4d61a3c2016-07-11 06:14:18 +0000672_mm256_maskz_xor_epi64(__mmask8 __U, __m256i __A, __m256i __B)
673{
674 return (__m256i)_mm256_mask_xor_epi64(_mm256_setzero_si256(), __U, __A, __B);
675}
676
Craig Topper74c10e32018-07-09 19:00:16 +0000677static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000678_mm_mask_xor_epi64(__m128i __W, __mmask8 __U, __m128i __A,
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000679 __m128i __B)
680{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000681 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
682 (__v2di)_mm_xor_si128(__A, __B),
683 (__v2di)__W);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000684}
685
Craig Topper74c10e32018-07-09 19:00:16 +0000686static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper4d61a3c2016-07-11 06:14:18 +0000687_mm_maskz_xor_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000688{
Craig Topper4d61a3c2016-07-11 06:14:18 +0000689 return (__m128i)_mm_mask_xor_epi64(_mm_setzero_si128(), __U, __A, __B);
Elena Demikhovsky35dc8c02015-04-28 13:28:01 +0000690}
691
Craig Topperc6338672018-05-31 00:51:20 +0000692#define _mm_cmp_epi32_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000696
Craig Topperc6338672018-05-31 00:51:20 +0000697#define _mm_mask_cmp_epi32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000698 (__mmask8)__builtin_ia32_cmpd128_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)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000701
Craig Topperc6338672018-05-31 00:51:20 +0000702#define _mm_cmp_epu32_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000706
Craig Topperc6338672018-05-31 00:51:20 +0000707#define _mm_mask_cmp_epu32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000708 (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000709 (__v4si)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000710 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000711
Craig Topperc6338672018-05-31 00:51:20 +0000712#define _mm256_cmp_epi32_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000716
Craig Topperc6338672018-05-31 00:51:20 +0000717#define _mm256_mask_cmp_epi32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000718 (__mmask8)__builtin_ia32_cmpd256_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)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000721
Craig Topperc6338672018-05-31 00:51:20 +0000722#define _mm256_cmp_epu32_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000726
Craig Topperc6338672018-05-31 00:51:20 +0000727#define _mm256_mask_cmp_epu32_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000728 (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000729 (__v8si)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000730 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000731
Craig Topperc6338672018-05-31 00:51:20 +0000732#define _mm_cmp_epi64_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000736
Craig Topperc6338672018-05-31 00:51:20 +0000737#define _mm_mask_cmp_epi64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000738 (__mmask8)__builtin_ia32_cmpq128_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)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000741
Craig Topperc6338672018-05-31 00:51:20 +0000742#define _mm_cmp_epu64_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000746
Craig Topperc6338672018-05-31 00:51:20 +0000747#define _mm_mask_cmp_epu64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000748 (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000749 (__v2di)(__m128i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000750 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000751
Craig Topperc6338672018-05-31 00:51:20 +0000752#define _mm256_cmp_epi64_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000756
Craig Topperc6338672018-05-31 00:51:20 +0000757#define _mm256_mask_cmp_epi64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000758 (__mmask8)__builtin_ia32_cmpq256_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)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000761
Craig Topperc6338672018-05-31 00:51:20 +0000762#define _mm256_cmp_epu64_mask(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)-1)
Craig Topper2f25a5a2015-01-26 08:11:49 +0000766
Craig Topperc6338672018-05-31 00:51:20 +0000767#define _mm256_mask_cmp_epu64_mask(m, a, b, p) \
Craig Topper2f25a5a2015-01-26 08:11:49 +0000768 (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000769 (__v4di)(__m256i)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000770 (__mmask8)(m))
Craig Topper2f25a5a2015-01-26 08:11:49 +0000771
Craig Topperc6338672018-05-31 00:51:20 +0000772#define _mm256_cmp_ps_mask(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)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000776
Craig Topperc6338672018-05-31 00:51:20 +0000777#define _mm256_mask_cmp_ps_mask(m, a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000778 (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000779 (__v8sf)(__m256)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000780 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000781
Craig Topperc6338672018-05-31 00:51:20 +0000782#define _mm256_cmp_pd_mask(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)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000786
Craig Topperc6338672018-05-31 00:51:20 +0000787#define _mm256_mask_cmp_pd_mask(m, a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000788 (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
789 (__v4df)(__m256d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000790 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000791
Craig Topperc6338672018-05-31 00:51:20 +0000792#define _mm_cmp_ps_mask(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)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000796
Craig Topperc6338672018-05-31 00:51:20 +0000797#define _mm_mask_cmp_ps_mask(m, a, b, p) \
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000798 (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
Craig Topperd2661882016-05-17 04:41:48 +0000799 (__v4sf)(__m128)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000800 (__mmask8)(m))
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000801
Craig Topperc6338672018-05-31 00:51:20 +0000802#define _mm_cmp_pd_mask(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)-1)
Elena Demikhovskybd5c8b92015-05-07 11:26:36 +0000806
Craig Topperc6338672018-05-31 00:51:20 +0000807#define _mm_mask_cmp_pd_mask(m, a, b, p) \
Craig Topperd2661882016-05-17 04:41:48 +0000808 (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
809 (__v2df)(__m128d)(b), (int)(p), \
Craig Topperc6338672018-05-31 00:51:20 +0000810 (__mmask8)(m))
Eric Christopher4d1851682015-06-17 07:09:20 +0000811
Craig Topper74c10e32018-07-09 19:00:16 +0000812static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000813_mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
814{
Gabor Buella70d8d512018-05-30 15:27:49 +0000815 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
816 __builtin_ia32_vfmaddpd ((__v2df) __A,
817 (__v2df) __B,
818 (__v2df) __C),
819 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000820}
821
Craig Topper74c10e32018-07-09 19:00:16 +0000822static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000823_mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
824{
Gabor Buella70d8d512018-05-30 15:27:49 +0000825 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
826 __builtin_ia32_vfmaddpd ((__v2df) __A,
827 (__v2df) __B,
828 (__v2df) __C),
829 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000830}
831
Craig Topper74c10e32018-07-09 19:00:16 +0000832static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000833_mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
834{
Gabor Buella70d8d512018-05-30 15:27:49 +0000835 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
836 __builtin_ia32_vfmaddpd ((__v2df) __A,
837 (__v2df) __B,
838 (__v2df) __C),
839 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000840}
841
Craig Topper74c10e32018-07-09 19:00:16 +0000842static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000843_mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
844{
Gabor Buella70d8d512018-05-30 15:27:49 +0000845 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
846 __builtin_ia32_vfmaddpd ((__v2df) __A,
847 (__v2df) __B,
848 -(__v2df) __C),
849 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000850}
851
Craig Topper74c10e32018-07-09 19:00:16 +0000852static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000853_mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
854{
Gabor Buella70d8d512018-05-30 15:27:49 +0000855 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
856 __builtin_ia32_vfmaddpd ((__v2df) __A,
857 (__v2df) __B,
858 -(__v2df) __C),
859 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000860}
861
Craig Topper74c10e32018-07-09 19:00:16 +0000862static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000863_mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
864{
Gabor Buella70d8d512018-05-30 15:27:49 +0000865 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
866 __builtin_ia32_vfmaddpd (-(__v2df) __A,
867 (__v2df) __B,
868 (__v2df) __C),
869 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000870}
871
Craig Topper74c10e32018-07-09 19:00:16 +0000872static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000873_mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
874{
Gabor Buella70d8d512018-05-30 15:27:49 +0000875 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
876 __builtin_ia32_vfmaddpd (-(__v2df) __A,
877 (__v2df) __B,
878 (__v2df) __C),
879 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000880}
881
Craig Topper74c10e32018-07-09 19:00:16 +0000882static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000883_mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
884{
Gabor Buella70d8d512018-05-30 15:27:49 +0000885 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
886 __builtin_ia32_vfmaddpd (-(__v2df) __A,
887 (__v2df) __B,
888 -(__v2df) __C),
889 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000890}
891
Craig Topper74c10e32018-07-09 19:00:16 +0000892static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000893_mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
894{
Gabor Buella70d8d512018-05-30 15:27:49 +0000895 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
896 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
897 (__v4df) __B,
898 (__v4df) __C),
899 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000900}
901
Craig Topper74c10e32018-07-09 19:00:16 +0000902static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000903_mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
904{
Gabor Buella70d8d512018-05-30 15:27:49 +0000905 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
906 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
907 (__v4df) __B,
908 (__v4df) __C),
909 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000910}
911
Craig Topper74c10e32018-07-09 19:00:16 +0000912static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000913_mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
914{
Gabor Buella70d8d512018-05-30 15:27:49 +0000915 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
916 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
917 (__v4df) __B,
918 (__v4df) __C),
919 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000920}
921
Craig Topper74c10e32018-07-09 19:00:16 +0000922static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000923_mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
924{
Gabor Buella70d8d512018-05-30 15:27:49 +0000925 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
926 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
927 (__v4df) __B,
928 -(__v4df) __C),
929 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000930}
931
Craig Topper74c10e32018-07-09 19:00:16 +0000932static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000933_mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
934{
Gabor Buella70d8d512018-05-30 15:27:49 +0000935 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
936 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
937 (__v4df) __B,
938 -(__v4df) __C),
939 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000940}
941
Craig Topper74c10e32018-07-09 19:00:16 +0000942static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000943_mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
944{
Gabor Buella70d8d512018-05-30 15:27:49 +0000945 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
946 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
947 (__v4df) __B,
948 (__v4df) __C),
949 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000950}
951
Craig Topper74c10e32018-07-09 19:00:16 +0000952static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000953_mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
954{
Gabor Buella70d8d512018-05-30 15:27:49 +0000955 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
956 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
957 (__v4df) __B,
958 (__v4df) __C),
959 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000960}
961
Craig Topper74c10e32018-07-09 19:00:16 +0000962static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000963_mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
964{
Gabor Buella70d8d512018-05-30 15:27:49 +0000965 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
966 __builtin_ia32_vfmaddpd256 (-(__v4df) __A,
967 (__v4df) __B,
968 -(__v4df) __C),
969 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000970}
971
Craig Topper74c10e32018-07-09 19:00:16 +0000972static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000973_mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
974{
Gabor Buella70d8d512018-05-30 15:27:49 +0000975 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
976 __builtin_ia32_vfmaddps ((__v4sf) __A,
977 (__v4sf) __B,
978 (__v4sf) __C),
979 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000980}
981
Craig Topper74c10e32018-07-09 19:00:16 +0000982static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000983_mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
984{
Gabor Buella70d8d512018-05-30 15:27:49 +0000985 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
986 __builtin_ia32_vfmaddps ((__v4sf) __A,
987 (__v4sf) __B,
988 (__v4sf) __C),
989 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000990}
991
Craig Topper74c10e32018-07-09 19:00:16 +0000992static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +0000993_mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
994{
Gabor Buella70d8d512018-05-30 15:27:49 +0000995 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
996 __builtin_ia32_vfmaddps ((__v4sf) __A,
997 (__v4sf) __B,
998 (__v4sf) __C),
999 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001000}
1001
Craig Topper74c10e32018-07-09 19:00:16 +00001002static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001003_mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1004{
Gabor Buella70d8d512018-05-30 15:27:49 +00001005 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1006 __builtin_ia32_vfmaddps ((__v4sf) __A,
1007 (__v4sf) __B,
1008 -(__v4sf) __C),
1009 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001010}
1011
Craig Topper74c10e32018-07-09 19:00:16 +00001012static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001013_mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1014{
Gabor Buella70d8d512018-05-30 15:27:49 +00001015 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1016 __builtin_ia32_vfmaddps ((__v4sf) __A,
1017 (__v4sf) __B,
1018 -(__v4sf) __C),
1019 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001020}
1021
Craig Topper74c10e32018-07-09 19:00:16 +00001022static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001023_mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1024{
Gabor Buella70d8d512018-05-30 15:27:49 +00001025 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1026 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1027 (__v4sf) __B,
1028 (__v4sf) __C),
1029 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001030}
1031
Craig Topper74c10e32018-07-09 19:00:16 +00001032static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001033_mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1034{
Gabor Buella70d8d512018-05-30 15:27:49 +00001035 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1036 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1037 (__v4sf) __B,
1038 (__v4sf) __C),
1039 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001040}
1041
Craig Topper74c10e32018-07-09 19:00:16 +00001042static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001043_mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1044{
Gabor Buella70d8d512018-05-30 15:27:49 +00001045 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1046 __builtin_ia32_vfmaddps (-(__v4sf) __A,
1047 (__v4sf) __B,
1048 -(__v4sf) __C),
1049 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001050}
1051
Craig Topper74c10e32018-07-09 19:00:16 +00001052static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001053_mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1054{
Gabor Buella70d8d512018-05-30 15:27:49 +00001055 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1056 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1057 (__v8sf) __B,
1058 (__v8sf) __C),
1059 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001060}
1061
Craig Topper74c10e32018-07-09 19:00:16 +00001062static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001063_mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1064{
Gabor Buella70d8d512018-05-30 15:27:49 +00001065 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1066 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1067 (__v8sf) __B,
1068 (__v8sf) __C),
1069 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001070}
1071
Craig Topper74c10e32018-07-09 19:00:16 +00001072static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001073_mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1074{
Gabor Buella70d8d512018-05-30 15:27:49 +00001075 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1076 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1077 (__v8sf) __B,
1078 (__v8sf) __C),
1079 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001080}
1081
Craig Topper74c10e32018-07-09 19:00:16 +00001082static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001083_mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1084{
Gabor Buella70d8d512018-05-30 15:27:49 +00001085 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1086 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1087 (__v8sf) __B,
1088 -(__v8sf) __C),
1089 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001090}
1091
Craig Topper74c10e32018-07-09 19:00:16 +00001092static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001093_mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1094{
Gabor Buella70d8d512018-05-30 15:27:49 +00001095 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1096 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1097 (__v8sf) __B,
1098 -(__v8sf) __C),
1099 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001100}
1101
Craig Topper74c10e32018-07-09 19:00:16 +00001102static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001103_mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1104{
Gabor Buella70d8d512018-05-30 15:27:49 +00001105 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1106 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1107 (__v8sf) __B,
1108 (__v8sf) __C),
1109 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001110}
1111
Craig Topper74c10e32018-07-09 19:00:16 +00001112static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001113_mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1114{
Gabor Buella70d8d512018-05-30 15:27:49 +00001115 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1116 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1117 (__v8sf) __B,
1118 (__v8sf) __C),
1119 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001120}
1121
Craig Topper74c10e32018-07-09 19:00:16 +00001122static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001123_mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1124{
Gabor Buella70d8d512018-05-30 15:27:49 +00001125 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1126 __builtin_ia32_vfmaddps256 (-(__v8sf) __A,
1127 (__v8sf) __B,
1128 -(__v8sf) __C),
1129 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001130}
1131
Craig Topper74c10e32018-07-09 19:00:16 +00001132static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001133_mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1134{
Gabor Buella70d8d512018-05-30 15:27:49 +00001135 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1136 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1137 (__v2df) __B,
1138 (__v2df) __C),
1139 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001140}
1141
Craig Topper74c10e32018-07-09 19:00:16 +00001142static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001143_mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1144{
Gabor Buella70d8d512018-05-30 15:27:49 +00001145 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1146 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1147 (__v2df) __B,
1148 (__v2df) __C),
1149 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001150}
1151
Craig Topper74c10e32018-07-09 19:00:16 +00001152static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001153_mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1154{
Gabor Buella70d8d512018-05-30 15:27:49 +00001155 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1156 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1157 (__v2df) __B,
1158 (__v2df) __C),
1159 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001160}
1161
Craig Topper74c10e32018-07-09 19:00:16 +00001162static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001163_mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1164{
Gabor Buella70d8d512018-05-30 15:27:49 +00001165 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1166 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1167 (__v2df) __B,
1168 -(__v2df) __C),
1169 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001170}
1171
Craig Topper74c10e32018-07-09 19:00:16 +00001172static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001173_mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1174{
Gabor Buella70d8d512018-05-30 15:27:49 +00001175 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1176 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1177 (__v2df) __B,
1178 -(__v2df) __C),
1179 (__v2df)_mm_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001180}
1181
Craig Topper74c10e32018-07-09 19:00:16 +00001182static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001183_mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1184{
Gabor Buella70d8d512018-05-30 15:27:49 +00001185 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1186 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1187 (__v4df) __B,
1188 (__v4df) __C),
1189 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001190}
1191
Craig Topper74c10e32018-07-09 19:00:16 +00001192static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001193_mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1194{
Gabor Buella70d8d512018-05-30 15:27:49 +00001195 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1196 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1197 (__v4df) __B,
1198 (__v4df) __C),
1199 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001200}
1201
Craig Topper74c10e32018-07-09 19:00:16 +00001202static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001203_mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1204{
Gabor Buella70d8d512018-05-30 15:27:49 +00001205 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1206 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1207 (__v4df) __B,
1208 (__v4df) __C),
1209 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001210}
1211
Craig Topper74c10e32018-07-09 19:00:16 +00001212static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001213_mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1214{
Gabor Buella70d8d512018-05-30 15:27:49 +00001215 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1216 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1217 (__v4df) __B,
1218 -(__v4df) __C),
1219 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001220}
1221
Craig Topper74c10e32018-07-09 19:00:16 +00001222static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001223_mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1224{
Gabor Buella70d8d512018-05-30 15:27:49 +00001225 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1226 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1227 (__v4df) __B,
1228 -(__v4df) __C),
1229 (__v4df)_mm256_setzero_pd());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001230}
1231
Craig Topper74c10e32018-07-09 19:00:16 +00001232static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001233_mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1234{
Gabor Buella70d8d512018-05-30 15:27:49 +00001235 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1236 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1237 (__v4sf) __B,
1238 (__v4sf) __C),
1239 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001240}
1241
Craig Topper74c10e32018-07-09 19:00:16 +00001242static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001243_mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1244{
Gabor Buella70d8d512018-05-30 15:27:49 +00001245 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1246 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1247 (__v4sf) __B,
1248 (__v4sf) __C),
1249 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001250}
1251
Craig Topper74c10e32018-07-09 19:00:16 +00001252static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001253_mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1254{
Gabor Buella70d8d512018-05-30 15:27:49 +00001255 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1256 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1257 (__v4sf) __B,
1258 (__v4sf) __C),
1259 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001260}
1261
Craig Topper74c10e32018-07-09 19:00:16 +00001262static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001263_mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1264{
Gabor Buella70d8d512018-05-30 15:27:49 +00001265 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1266 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1267 (__v4sf) __B,
1268 -(__v4sf) __C),
1269 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001270}
1271
Craig Topper74c10e32018-07-09 19:00:16 +00001272static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001273_mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1274{
Gabor Buella70d8d512018-05-30 15:27:49 +00001275 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1276 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1277 (__v4sf) __B,
1278 -(__v4sf) __C),
1279 (__v4sf)_mm_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001280}
1281
Craig Topper74c10e32018-07-09 19:00:16 +00001282static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001283_mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B,
1284 __m256 __C)
1285{
Gabor Buella70d8d512018-05-30 15:27:49 +00001286 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1287 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1288 (__v8sf) __B,
1289 (__v8sf) __C),
1290 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001291}
1292
Craig Topper74c10e32018-07-09 19:00:16 +00001293static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001294_mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1295{
Gabor Buella70d8d512018-05-30 15:27:49 +00001296 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1297 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1298 (__v8sf) __B,
1299 (__v8sf) __C),
1300 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001301}
1302
Craig Topper74c10e32018-07-09 19:00:16 +00001303static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001304_mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1305{
Gabor Buella70d8d512018-05-30 15:27:49 +00001306 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1307 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1308 (__v8sf) __B,
1309 (__v8sf) __C),
1310 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001311}
1312
Craig Topper74c10e32018-07-09 19:00:16 +00001313static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001314_mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1315{
Gabor Buella70d8d512018-05-30 15:27:49 +00001316 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1317 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1318 (__v8sf) __B,
1319 -(__v8sf) __C),
1320 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001321}
1322
Craig Topper74c10e32018-07-09 19:00:16 +00001323static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001324_mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1325{
Gabor Buella70d8d512018-05-30 15:27:49 +00001326 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1327 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1328 (__v8sf) __B,
1329 -(__v8sf) __C),
1330 (__v8sf)_mm256_setzero_ps());
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001331}
1332
Craig Topper74c10e32018-07-09 19:00:16 +00001333static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001334_mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1335{
Gabor Buella70d8d512018-05-30 15:27:49 +00001336 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1337 __builtin_ia32_vfmaddpd ((__v2df) __A,
1338 (__v2df) __B,
1339 -(__v2df) __C),
1340 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001341}
1342
Craig Topper74c10e32018-07-09 19:00:16 +00001343static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001344_mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1345{
Gabor Buella70d8d512018-05-30 15:27:49 +00001346 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1347 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1348 (__v4df) __B,
1349 -(__v4df) __C),
1350 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001351}
1352
Craig Topper74c10e32018-07-09 19:00:16 +00001353static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001354_mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1355{
Gabor Buella70d8d512018-05-30 15:27:49 +00001356 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1357 __builtin_ia32_vfmaddps ((__v4sf) __A,
1358 (__v4sf) __B,
1359 -(__v4sf) __C),
1360 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001361}
1362
Craig Topper74c10e32018-07-09 19:00:16 +00001363static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001364_mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1365{
Gabor Buella70d8d512018-05-30 15:27:49 +00001366 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1367 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1368 (__v8sf) __B,
1369 -(__v8sf) __C),
1370 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001371}
1372
Craig Topper74c10e32018-07-09 19:00:16 +00001373static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001374_mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1375{
Gabor Buella70d8d512018-05-30 15:27:49 +00001376 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1377 __builtin_ia32_vfmaddsubpd ((__v2df) __A,
1378 (__v2df) __B,
1379 -(__v2df) __C),
1380 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001381}
1382
Craig Topper74c10e32018-07-09 19:00:16 +00001383static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001384_mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1385{
Gabor Buella70d8d512018-05-30 15:27:49 +00001386 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1387 __builtin_ia32_vfmaddsubpd256 ((__v4df) __A,
1388 (__v4df) __B,
1389 -(__v4df) __C),
1390 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001391}
1392
Craig Topper74c10e32018-07-09 19:00:16 +00001393static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001394_mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1395{
Gabor Buella70d8d512018-05-30 15:27:49 +00001396 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1397 __builtin_ia32_vfmaddsubps ((__v4sf) __A,
1398 (__v4sf) __B,
1399 -(__v4sf) __C),
1400 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001401}
1402
Craig Topper74c10e32018-07-09 19:00:16 +00001403static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001404_mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1405{
Gabor Buella70d8d512018-05-30 15:27:49 +00001406 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1407 __builtin_ia32_vfmaddsubps256 ((__v8sf) __A,
1408 (__v8sf) __B,
1409 -(__v8sf) __C),
1410 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001411}
1412
Craig Topper74c10e32018-07-09 19:00:16 +00001413static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001414_mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1415{
Gabor Buella70d8d512018-05-30 15:27:49 +00001416 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1417 __builtin_ia32_vfmaddpd ((__v2df) __A,
1418 -(__v2df) __B,
1419 (__v2df) __C),
1420 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001421}
1422
Craig Topper74c10e32018-07-09 19:00:16 +00001423static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001424_mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1425{
Gabor Buella70d8d512018-05-30 15:27:49 +00001426 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1427 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1428 -(__v4df) __B,
1429 (__v4df) __C),
1430 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001431}
1432
Craig Topper74c10e32018-07-09 19:00:16 +00001433static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001434_mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1435{
Gabor Buella70d8d512018-05-30 15:27:49 +00001436 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1437 __builtin_ia32_vfmaddps ((__v4sf) __A,
1438 -(__v4sf) __B,
1439 (__v4sf) __C),
1440 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001441}
1442
Craig Topper74c10e32018-07-09 19:00:16 +00001443static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001444_mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1445{
Gabor Buella70d8d512018-05-30 15:27:49 +00001446 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1447 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1448 -(__v8sf) __B,
1449 (__v8sf) __C),
1450 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001451}
1452
Craig Topper74c10e32018-07-09 19:00:16 +00001453static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001454_mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1455{
Gabor Buella70d8d512018-05-30 15:27:49 +00001456 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1457 __builtin_ia32_vfmaddpd ((__v2df) __A,
1458 -(__v2df) __B,
1459 -(__v2df) __C),
1460 (__v2df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001461}
1462
Craig Topper74c10e32018-07-09 19:00:16 +00001463static __inline__ __m128d __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001464_mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1465{
Gabor Buella70d8d512018-05-30 15:27:49 +00001466 return (__m128d) __builtin_ia32_selectpd_128((__mmask8) __U,
1467 __builtin_ia32_vfmaddpd ((__v2df) __A,
1468 -(__v2df) __B,
1469 -(__v2df) __C),
1470 (__v2df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001471}
1472
Craig Topper74c10e32018-07-09 19:00:16 +00001473static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001474_mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1475{
Gabor Buella70d8d512018-05-30 15:27:49 +00001476 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1477 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1478 -(__v4df) __B,
1479 -(__v4df) __C),
1480 (__v4df) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001481}
1482
Craig Topper74c10e32018-07-09 19:00:16 +00001483static __inline__ __m256d __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001484_mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1485{
Gabor Buella70d8d512018-05-30 15:27:49 +00001486 return (__m256d) __builtin_ia32_selectpd_256((__mmask8) __U,
1487 __builtin_ia32_vfmaddpd256 ((__v4df) __A,
1488 -(__v4df) __B,
1489 -(__v4df) __C),
1490 (__v4df) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001491}
1492
Craig Topper74c10e32018-07-09 19:00:16 +00001493static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001494_mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1495{
Gabor Buella70d8d512018-05-30 15:27:49 +00001496 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1497 __builtin_ia32_vfmaddps ((__v4sf) __A,
1498 -(__v4sf) __B,
1499 -(__v4sf) __C),
1500 (__v4sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001501}
1502
Craig Topper74c10e32018-07-09 19:00:16 +00001503static __inline__ __m128 __DEFAULT_FN_ATTRS128
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001504_mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1505{
Gabor Buella70d8d512018-05-30 15:27:49 +00001506 return (__m128) __builtin_ia32_selectps_128((__mmask8) __U,
1507 __builtin_ia32_vfmaddps ((__v4sf) __A,
1508 -(__v4sf) __B,
1509 -(__v4sf) __C),
1510 (__v4sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001511}
1512
Craig Topper74c10e32018-07-09 19:00:16 +00001513static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001514_mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1515{
Gabor Buella70d8d512018-05-30 15:27:49 +00001516 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1517 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1518 -(__v8sf) __B,
1519 -(__v8sf) __C),
1520 (__v8sf) __A);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001521}
1522
Craig Topper74c10e32018-07-09 19:00:16 +00001523static __inline__ __m256 __DEFAULT_FN_ATTRS256
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001524_mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1525{
Gabor Buella70d8d512018-05-30 15:27:49 +00001526 return (__m256) __builtin_ia32_selectps_256((__mmask8) __U,
1527 __builtin_ia32_vfmaddps256 ((__v8sf) __A,
1528 -(__v8sf) __B,
1529 -(__v8sf) __C),
1530 (__v8sf) __C);
Elena Demikhovskyc563c2c2015-06-29 09:20:57 +00001531}
1532
Craig Topper74c10e32018-07-09 19:00:16 +00001533static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00001534_mm_mask_add_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1535 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1536 (__v2df)_mm_add_pd(__A, __B),
1537 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001538}
1539
Craig Topper74c10e32018-07-09 19:00:16 +00001540static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00001541_mm_maskz_add_pd(__mmask8 __U, __m128d __A, __m128d __B) {
1542 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
1543 (__v2df)_mm_add_pd(__A, __B),
1544 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001545}
1546
Craig Topper74c10e32018-07-09 19:00:16 +00001547static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00001548_mm256_mask_add_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
1549 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1550 (__v4df)_mm256_add_pd(__A, __B),
1551 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001552}
1553
Craig Topper74c10e32018-07-09 19:00:16 +00001554static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00001555_mm256_maskz_add_pd(__mmask8 __U, __m256d __A, __m256d __B) {
1556 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
1557 (__v4df)_mm256_add_pd(__A, __B),
1558 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001559}
1560
Craig Topper74c10e32018-07-09 19:00:16 +00001561static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00001562_mm_mask_add_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
1563 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1564 (__v4sf)_mm_add_ps(__A, __B),
1565 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001566}
1567
Craig Topper74c10e32018-07-09 19:00:16 +00001568static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00001569_mm_maskz_add_ps(__mmask8 __U, __m128 __A, __m128 __B) {
1570 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1571 (__v4sf)_mm_add_ps(__A, __B),
1572 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001573}
1574
Craig Topper74c10e32018-07-09 19:00:16 +00001575static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00001576_mm256_mask_add_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
1577 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1578 (__v8sf)_mm256_add_ps(__A, __B),
1579 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001580}
1581
Craig Topper74c10e32018-07-09 19:00:16 +00001582static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00001583_mm256_maskz_add_ps(__mmask8 __U, __m256 __A, __m256 __B) {
1584 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1585 (__v8sf)_mm256_add_ps(__A, __B),
1586 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001587}
1588
Craig Topper74c10e32018-07-09 19:00:16 +00001589static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001590_mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001591 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001592 (__v4si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001593 (__v4si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001594}
1595
Craig Topper74c10e32018-07-09 19:00:16 +00001596static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001597_mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001598 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001599 (__v8si) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001600 (__v8si) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001601}
1602
Craig Topper74c10e32018-07-09 19:00:16 +00001603static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001604_mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001605 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001606 (__v2df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001607 (__v2df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001608}
1609
Craig Topper74c10e32018-07-09 19:00:16 +00001610static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001611_mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001612 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001613 (__v4df) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001614 (__v4df) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001615}
1616
Craig Topper74c10e32018-07-09 19:00:16 +00001617static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001618_mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001619 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001620 (__v4sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001621 (__v4sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001622}
1623
Craig Topper74c10e32018-07-09 19:00:16 +00001624static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001625_mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001626 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001627 (__v8sf) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001628 (__v8sf) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001629}
1630
Craig Topper74c10e32018-07-09 19:00:16 +00001631static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001632_mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001633 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001634 (__v2di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001635 (__v2di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001636}
1637
Craig Topper74c10e32018-07-09 19:00:16 +00001638static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001639_mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W) {
Igor Bregeraadb8762016-06-08 13:59:20 +00001640 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
Asaf Badouh74da3872015-07-28 08:26:14 +00001641 (__v4di) __W,
Igor Bregeraadb8762016-06-08 13:59:20 +00001642 (__v4di) __A);
Asaf Badouh74da3872015-07-28 08:26:14 +00001643}
1644
Craig Topper74c10e32018-07-09 19:00:16 +00001645static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001646_mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A) {
1647 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1648 (__v2df) __W,
1649 (__mmask8) __U);
1650}
1651
Craig Topper74c10e32018-07-09 19:00:16 +00001652static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001653_mm_maskz_compress_pd (__mmask8 __U, __m128d __A) {
1654 return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
1655 (__v2df)
1656 _mm_setzero_pd (),
1657 (__mmask8) __U);
1658}
1659
Craig Topper74c10e32018-07-09 19:00:16 +00001660static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001661_mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A) {
1662 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1663 (__v4df) __W,
1664 (__mmask8) __U);
1665}
1666
Craig Topper74c10e32018-07-09 19:00:16 +00001667static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001668_mm256_maskz_compress_pd (__mmask8 __U, __m256d __A) {
1669 return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
1670 (__v4df)
1671 _mm256_setzero_pd (),
1672 (__mmask8) __U);
1673}
1674
Craig Topper74c10e32018-07-09 19:00:16 +00001675static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001676_mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
1677 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1678 (__v2di) __W,
1679 (__mmask8) __U);
1680}
1681
Craig Topper74c10e32018-07-09 19:00:16 +00001682static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001683_mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A) {
1684 return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
1685 (__v2di)
1686 _mm_setzero_si128 (),
1687 (__mmask8) __U);
1688}
1689
Craig Topper74c10e32018-07-09 19:00:16 +00001690static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001691_mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
1692 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1693 (__v4di) __W,
1694 (__mmask8) __U);
1695}
1696
Craig Topper74c10e32018-07-09 19:00:16 +00001697static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001698_mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A) {
1699 return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
1700 (__v4di)
1701 _mm256_setzero_si256 (),
1702 (__mmask8) __U);
1703}
1704
Craig Topper74c10e32018-07-09 19:00:16 +00001705static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001706_mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A) {
1707 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1708 (__v4sf) __W,
1709 (__mmask8) __U);
1710}
1711
Craig Topper74c10e32018-07-09 19:00:16 +00001712static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001713_mm_maskz_compress_ps (__mmask8 __U, __m128 __A) {
1714 return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
1715 (__v4sf)
1716 _mm_setzero_ps (),
1717 (__mmask8) __U);
1718}
1719
Craig Topper74c10e32018-07-09 19:00:16 +00001720static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001721_mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A) {
1722 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1723 (__v8sf) __W,
1724 (__mmask8) __U);
1725}
1726
Craig Topper74c10e32018-07-09 19:00:16 +00001727static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001728_mm256_maskz_compress_ps (__mmask8 __U, __m256 __A) {
1729 return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
1730 (__v8sf)
1731 _mm256_setzero_ps (),
1732 (__mmask8) __U);
1733}
1734
Craig Topper74c10e32018-07-09 19:00:16 +00001735static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001736_mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
1737 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1738 (__v4si) __W,
1739 (__mmask8) __U);
1740}
1741
Craig Topper74c10e32018-07-09 19:00:16 +00001742static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001743_mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A) {
1744 return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
1745 (__v4si)
1746 _mm_setzero_si128 (),
1747 (__mmask8) __U);
1748}
1749
Craig Topper74c10e32018-07-09 19:00:16 +00001750static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001751_mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
1752 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1753 (__v8si) __W,
1754 (__mmask8) __U);
1755}
1756
Craig Topper74c10e32018-07-09 19:00:16 +00001757static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001758_mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A) {
1759 return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
1760 (__v8si)
1761 _mm256_setzero_si256 (),
1762 (__mmask8) __U);
1763}
1764
Craig Topper74c10e32018-07-09 19:00:16 +00001765static __inline__ void __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001766_mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A) {
1767 __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
1768 (__v2df) __A,
1769 (__mmask8) __U);
1770}
1771
Craig Topper74c10e32018-07-09 19:00:16 +00001772static __inline__ void __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001773_mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A) {
1774 __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
1775 (__v4df) __A,
1776 (__mmask8) __U);
1777}
1778
Craig Topper74c10e32018-07-09 19:00:16 +00001779static __inline__ void __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001780_mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A) {
1781 __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
1782 (__v2di) __A,
1783 (__mmask8) __U);
1784}
1785
Craig Topper74c10e32018-07-09 19:00:16 +00001786static __inline__ void __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001787_mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A) {
1788 __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
1789 (__v4di) __A,
1790 (__mmask8) __U);
1791}
1792
Craig Topper74c10e32018-07-09 19:00:16 +00001793static __inline__ void __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001794_mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A) {
1795 __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
1796 (__v4sf) __A,
1797 (__mmask8) __U);
1798}
1799
Craig Topper74c10e32018-07-09 19:00:16 +00001800static __inline__ void __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001801_mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A) {
1802 __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
1803 (__v8sf) __A,
1804 (__mmask8) __U);
1805}
1806
Craig Topper74c10e32018-07-09 19:00:16 +00001807static __inline__ void __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001808_mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A) {
1809 __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
1810 (__v4si) __A,
1811 (__mmask8) __U);
1812}
1813
Craig Topper74c10e32018-07-09 19:00:16 +00001814static __inline__ void __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001815_mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A) {
1816 __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
1817 (__v8si) __A,
1818 (__mmask8) __U);
1819}
1820
Craig Topper74c10e32018-07-09 19:00:16 +00001821static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001822_mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001823 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1824 (__v2df)_mm_cvtepi32_pd(__A),
1825 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001826}
1827
Craig Topper74c10e32018-07-09 19:00:16 +00001828static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001829_mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001830 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
1831 (__v2df)_mm_cvtepi32_pd(__A),
1832 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001833}
1834
Craig Topper74c10e32018-07-09 19:00:16 +00001835static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001836_mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001837 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1838 (__v4df)_mm256_cvtepi32_pd(__A),
1839 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001840}
1841
Craig Topper74c10e32018-07-09 19:00:16 +00001842static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001843_mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00001844 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
1845 (__v4df)_mm256_cvtepi32_pd(__A),
1846 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00001847}
1848
Craig Topper74c10e32018-07-09 19:00:16 +00001849static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001850_mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001851 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1852 (__v4sf)_mm_cvtepi32_ps(__A),
1853 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001854}
1855
Craig Topper74c10e32018-07-09 19:00:16 +00001856static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper00294702018-06-30 06:05:17 +00001857_mm_maskz_cvtepi32_ps (__mmask8 __U, __m128i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001858 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1859 (__v4sf)_mm_cvtepi32_ps(__A),
1860 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001861}
1862
Craig Topper74c10e32018-07-09 19:00:16 +00001863static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001864_mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001865 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1866 (__v8sf)_mm256_cvtepi32_ps(__A),
1867 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001868}
1869
Craig Topper74c10e32018-07-09 19:00:16 +00001870static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper00294702018-06-30 06:05:17 +00001871_mm256_maskz_cvtepi32_ps (__mmask8 __U, __m256i __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001872 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
1873 (__v8sf)_mm256_cvtepi32_ps(__A),
1874 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001875}
1876
Craig Topper74c10e32018-07-09 19:00:16 +00001877static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001878_mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
1879 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1880 (__v4si) __W,
1881 (__mmask8) __U);
1882}
1883
Craig Topper74c10e32018-07-09 19:00:16 +00001884static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001885_mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
1886 return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
1887 (__v4si)
1888 _mm_setzero_si128 (),
1889 (__mmask8) __U);
1890}
1891
Craig Topper74c10e32018-07-09 19:00:16 +00001892static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001893_mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001894 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1895 (__v4si)_mm256_cvtpd_epi32(__A),
1896 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001897}
1898
Craig Topper74c10e32018-07-09 19:00:16 +00001899static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001900_mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001901 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1902 (__v4si)_mm256_cvtpd_epi32(__A),
1903 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001904}
1905
Craig Topper74c10e32018-07-09 19:00:16 +00001906static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001907_mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
1908 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1909 (__v4sf) __W,
1910 (__mmask8) __U);
1911}
1912
Craig Topper74c10e32018-07-09 19:00:16 +00001913static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001914_mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
1915 return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
1916 (__v4sf)
1917 _mm_setzero_ps (),
1918 (__mmask8) __U);
1919}
1920
Craig Topper74c10e32018-07-09 19:00:16 +00001921static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001922_mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001923 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1924 (__v4sf)_mm256_cvtpd_ps(__A),
1925 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001926}
1927
Craig Topper74c10e32018-07-09 19:00:16 +00001928static __inline__ __m128 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001929_mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001930 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
1931 (__v4sf)_mm256_cvtpd_ps(__A),
1932 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00001933}
1934
Craig Topper74c10e32018-07-09 19:00:16 +00001935static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001936_mm_cvtpd_epu32 (__m128d __A) {
1937 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1938 (__v4si)
1939 _mm_setzero_si128 (),
1940 (__mmask8) -1);
1941}
1942
Craig Topper74c10e32018-07-09 19:00:16 +00001943static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001944_mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
1945 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1946 (__v4si) __W,
1947 (__mmask8) __U);
1948}
1949
Craig Topper74c10e32018-07-09 19:00:16 +00001950static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001951_mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
1952 return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
1953 (__v4si)
1954 _mm_setzero_si128 (),
1955 (__mmask8) __U);
1956}
1957
Craig Topper74c10e32018-07-09 19:00:16 +00001958static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001959_mm256_cvtpd_epu32 (__m256d __A) {
1960 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1961 (__v4si)
1962 _mm_setzero_si128 (),
1963 (__mmask8) -1);
1964}
1965
Craig Topper74c10e32018-07-09 19:00:16 +00001966static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001967_mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
1968 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1969 (__v4si) __W,
1970 (__mmask8) __U);
1971}
1972
Craig Topper74c10e32018-07-09 19:00:16 +00001973static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001974_mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
1975 return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
1976 (__v4si)
1977 _mm_setzero_si128 (),
1978 (__mmask8) __U);
1979}
1980
Craig Topper74c10e32018-07-09 19:00:16 +00001981static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001982_mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001983 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1984 (__v4si)_mm_cvtps_epi32(__A),
1985 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00001986}
1987
Craig Topper74c10e32018-07-09 19:00:16 +00001988static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00001989_mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001990 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1991 (__v4si)_mm_cvtps_epi32(__A),
1992 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00001993}
1994
Craig Topper74c10e32018-07-09 19:00:16 +00001995static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00001996_mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00001997 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1998 (__v8si)_mm256_cvtps_epi32(__A),
1999 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002000}
2001
Craig Topper74c10e32018-07-09 19:00:16 +00002002static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002003_mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002004 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2005 (__v8si)_mm256_cvtps_epi32(__A),
2006 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002007}
2008
Craig Topper74c10e32018-07-09 19:00:16 +00002009static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002010_mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002011 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2012 (__v2df)_mm_cvtps_pd(__A),
2013 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002014}
2015
Craig Topper74c10e32018-07-09 19:00:16 +00002016static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002017_mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002018 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2019 (__v2df)_mm_cvtps_pd(__A),
2020 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002021}
2022
Craig Topper74c10e32018-07-09 19:00:16 +00002023static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002024_mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002025 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2026 (__v4df)_mm256_cvtps_pd(__A),
2027 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002028}
2029
Craig Topper74c10e32018-07-09 19:00:16 +00002030static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002031_mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002032 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2033 (__v4df)_mm256_cvtps_pd(__A),
2034 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002035}
2036
Craig Topper74c10e32018-07-09 19:00:16 +00002037static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002038_mm_cvtps_epu32 (__m128 __A) {
2039 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2040 (__v4si)
2041 _mm_setzero_si128 (),
2042 (__mmask8) -1);
2043}
2044
Craig Topper74c10e32018-07-09 19:00:16 +00002045static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002046_mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2047 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2048 (__v4si) __W,
2049 (__mmask8) __U);
2050}
2051
Craig Topper74c10e32018-07-09 19:00:16 +00002052static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002053_mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
2054 return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2055 (__v4si)
2056 _mm_setzero_si128 (),
2057 (__mmask8) __U);
2058}
2059
Craig Topper74c10e32018-07-09 19:00:16 +00002060static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002061_mm256_cvtps_epu32 (__m256 __A) {
2062 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2063 (__v8si)
2064 _mm256_setzero_si256 (),
2065 (__mmask8) -1);
2066}
2067
Craig Topper74c10e32018-07-09 19:00:16 +00002068static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002069_mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2070 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2071 (__v8si) __W,
2072 (__mmask8) __U);
2073}
2074
Craig Topper74c10e32018-07-09 19:00:16 +00002075static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002076_mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2077 return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2078 (__v8si)
2079 _mm256_setzero_si256 (),
2080 (__mmask8) __U);
2081}
2082
Craig Topper74c10e32018-07-09 19:00:16 +00002083static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002084_mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2085 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2086 (__v4si) __W,
2087 (__mmask8) __U);
2088}
2089
Craig Topper74c10e32018-07-09 19:00:16 +00002090static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002091_mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2092 return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2093 (__v4si)
2094 _mm_setzero_si128 (),
2095 (__mmask8) __U);
2096}
2097
Craig Topper74c10e32018-07-09 19:00:16 +00002098static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002099_mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002100 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2101 (__v4si)_mm256_cvttpd_epi32(__A),
2102 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002103}
2104
Craig Topper74c10e32018-07-09 19:00:16 +00002105static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002106_mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002107 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2108 (__v4si)_mm256_cvttpd_epi32(__A),
2109 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002110}
2111
Craig Topper74c10e32018-07-09 19:00:16 +00002112static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002113_mm_cvttpd_epu32 (__m128d __A) {
2114 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2115 (__v4si)
2116 _mm_setzero_si128 (),
2117 (__mmask8) -1);
2118}
2119
Craig Topper74c10e32018-07-09 19:00:16 +00002120static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002121_mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2122 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2123 (__v4si) __W,
2124 (__mmask8) __U);
2125}
2126
Craig Topper74c10e32018-07-09 19:00:16 +00002127static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002128_mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2129 return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2130 (__v4si)
2131 _mm_setzero_si128 (),
2132 (__mmask8) __U);
2133}
2134
Craig Topper74c10e32018-07-09 19:00:16 +00002135static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002136_mm256_cvttpd_epu32 (__m256d __A) {
2137 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2138 (__v4si)
2139 _mm_setzero_si128 (),
2140 (__mmask8) -1);
2141}
2142
Craig Topper74c10e32018-07-09 19:00:16 +00002143static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002144_mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2145 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2146 (__v4si) __W,
2147 (__mmask8) __U);
2148}
2149
Craig Topper74c10e32018-07-09 19:00:16 +00002150static __inline__ __m128i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002151_mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2152 return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2153 (__v4si)
2154 _mm_setzero_si128 (),
2155 (__mmask8) __U);
2156}
2157
Craig Topper74c10e32018-07-09 19:00:16 +00002158static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002159_mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002160 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2161 (__v4si)_mm_cvttps_epi32(__A),
2162 (__v4si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002163}
2164
Craig Topper74c10e32018-07-09 19:00:16 +00002165static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002166_mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002167 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2168 (__v4si)_mm_cvttps_epi32(__A),
2169 (__v4si)_mm_setzero_si128());
Asaf Badouh74da3872015-07-28 08:26:14 +00002170}
2171
Craig Topper74c10e32018-07-09 19:00:16 +00002172static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002173_mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002174 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2175 (__v8si)_mm256_cvttps_epi32(__A),
2176 (__v8si)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002177}
2178
Craig Topper74c10e32018-07-09 19:00:16 +00002179static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002180_mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
Craig Topper21f66a32018-02-24 18:55:13 +00002181 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
2182 (__v8si)_mm256_cvttps_epi32(__A),
2183 (__v8si)_mm256_setzero_si256());
Asaf Badouh74da3872015-07-28 08:26:14 +00002184}
2185
Craig Topper74c10e32018-07-09 19:00:16 +00002186static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002187_mm_cvttps_epu32 (__m128 __A) {
2188 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2189 (__v4si)
2190 _mm_setzero_si128 (),
2191 (__mmask8) -1);
2192}
2193
Craig Topper74c10e32018-07-09 19:00:16 +00002194static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002195_mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2196 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2197 (__v4si) __W,
2198 (__mmask8) __U);
2199}
2200
Craig Topper74c10e32018-07-09 19:00:16 +00002201static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002202_mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2203 return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2204 (__v4si)
2205 _mm_setzero_si128 (),
2206 (__mmask8) __U);
2207}
2208
Craig Topper74c10e32018-07-09 19:00:16 +00002209static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002210_mm256_cvttps_epu32 (__m256 __A) {
2211 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2212 (__v8si)
2213 _mm256_setzero_si256 (),
2214 (__mmask8) -1);
2215}
2216
Craig Topper74c10e32018-07-09 19:00:16 +00002217static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002218_mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2219 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2220 (__v8si) __W,
2221 (__mmask8) __U);
2222}
2223
Craig Topper74c10e32018-07-09 19:00:16 +00002224static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002225_mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2226 return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2227 (__v8si)
2228 _mm256_setzero_si256 (),
2229 (__mmask8) __U);
2230}
2231
Craig Topper74c10e32018-07-09 19:00:16 +00002232static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002233_mm_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002234 return (__m128d) __builtin_convertvector(
2235 __builtin_shufflevector((__v4su)__A, (__v4su)__A, 0, 1), __v2df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002236}
2237
Craig Topper74c10e32018-07-09 19:00:16 +00002238static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002239_mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002240 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2241 (__v2df)_mm_cvtepu32_pd(__A),
2242 (__v2df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002243}
2244
Craig Topper74c10e32018-07-09 19:00:16 +00002245static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002246_mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002247 return (__m128d)__builtin_ia32_selectpd_128((__mmask8) __U,
2248 (__v2df)_mm_cvtepu32_pd(__A),
2249 (__v2df)_mm_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002250}
2251
Craig Topper74c10e32018-07-09 19:00:16 +00002252static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002253_mm256_cvtepu32_pd (__m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002254 return (__m256d)__builtin_convertvector((__v4su)__A, __v4df);
Asaf Badouh74da3872015-07-28 08:26:14 +00002255}
2256
Craig Topper74c10e32018-07-09 19:00:16 +00002257static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002258_mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002259 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2260 (__v4df)_mm256_cvtepu32_pd(__A),
2261 (__v4df)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002262}
2263
Craig Topper74c10e32018-07-09 19:00:16 +00002264static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002265_mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
Simon Pilgrim698528d2016-11-16 09:27:40 +00002266 return (__m256d)__builtin_ia32_selectpd_256((__mmask8) __U,
2267 (__v4df)_mm256_cvtepu32_pd(__A),
2268 (__v4df)_mm256_setzero_pd());
Asaf Badouh74da3872015-07-28 08:26:14 +00002269}
2270
Craig Topper74c10e32018-07-09 19:00:16 +00002271static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002272_mm_cvtepu32_ps (__m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002273 return (__m128)__builtin_convertvector((__v4su)__A, __v4sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002274}
2275
Craig Topper74c10e32018-07-09 19:00:16 +00002276static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002277_mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002278 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2279 (__v4sf)_mm_cvtepu32_ps(__A),
2280 (__v4sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002281}
2282
Craig Topper74c10e32018-07-09 19:00:16 +00002283static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh74da3872015-07-28 08:26:14 +00002284_mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002285 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2286 (__v4sf)_mm_cvtepu32_ps(__A),
2287 (__v4sf)_mm_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002288}
2289
Craig Topper74c10e32018-07-09 19:00:16 +00002290static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002291_mm256_cvtepu32_ps (__m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002292 return (__m256)__builtin_convertvector((__v8su)__A, __v8sf);
Asaf Badouh74da3872015-07-28 08:26:14 +00002293}
2294
Craig Topper74c10e32018-07-09 19:00:16 +00002295static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002296_mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002297 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2298 (__v8sf)_mm256_cvtepu32_ps(__A),
2299 (__v8sf)__W);
Asaf Badouh74da3872015-07-28 08:26:14 +00002300}
2301
Craig Topper74c10e32018-07-09 19:00:16 +00002302static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh74da3872015-07-28 08:26:14 +00002303_mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
Craig Topper842171d2018-05-21 20:19:17 +00002304 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2305 (__v8sf)_mm256_cvtepu32_ps(__A),
2306 (__v8sf)_mm256_setzero_ps());
Asaf Badouh74da3872015-07-28 08:26:14 +00002307}
2308
Craig Topper74c10e32018-07-09 19:00:16 +00002309static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002310_mm_mask_div_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2311 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2312 (__v2df)_mm_div_pd(__A, __B),
2313 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002314}
2315
Craig Topper74c10e32018-07-09 19:00:16 +00002316static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002317_mm_maskz_div_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2318 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2319 (__v2df)_mm_div_pd(__A, __B),
2320 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002321}
2322
Craig Topper74c10e32018-07-09 19:00:16 +00002323static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002324_mm256_mask_div_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2325 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2326 (__v4df)_mm256_div_pd(__A, __B),
2327 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002328}
2329
Craig Topper74c10e32018-07-09 19:00:16 +00002330static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002331_mm256_maskz_div_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2332 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2333 (__v4df)_mm256_div_pd(__A, __B),
2334 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002335}
2336
Craig Topper74c10e32018-07-09 19:00:16 +00002337static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002338_mm_mask_div_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2339 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2340 (__v4sf)_mm_div_ps(__A, __B),
2341 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002342}
2343
Craig Topper74c10e32018-07-09 19:00:16 +00002344static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002345_mm_maskz_div_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2346 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2347 (__v4sf)_mm_div_ps(__A, __B),
2348 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002349}
2350
Craig Topper74c10e32018-07-09 19:00:16 +00002351static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002352_mm256_mask_div_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2353 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2354 (__v8sf)_mm256_div_ps(__A, __B),
2355 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002356}
2357
Craig Topper74c10e32018-07-09 19:00:16 +00002358static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002359_mm256_maskz_div_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2360 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2361 (__v8sf)_mm256_div_ps(__A, __B),
2362 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002363}
2364
Craig Topper74c10e32018-07-09 19:00:16 +00002365static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002366_mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2367 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2368 (__v2df) __W,
2369 (__mmask8) __U);
2370}
2371
Craig Topper74c10e32018-07-09 19:00:16 +00002372static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002373_mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2374 return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2375 (__v2df)
2376 _mm_setzero_pd (),
2377 (__mmask8) __U);
2378}
2379
Craig Topper74c10e32018-07-09 19:00:16 +00002380static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002381_mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2382 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2383 (__v4df) __W,
2384 (__mmask8) __U);
2385}
2386
Craig Topper74c10e32018-07-09 19:00:16 +00002387static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002388_mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2389 return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2390 (__v4df)
2391 _mm256_setzero_pd (),
2392 (__mmask8) __U);
2393}
2394
Craig Topper74c10e32018-07-09 19:00:16 +00002395static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002396_mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2397 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2398 (__v2di) __W,
2399 (__mmask8) __U);
2400}
2401
Craig Topper74c10e32018-07-09 19:00:16 +00002402static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002403_mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2404 return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2405 (__v2di)
2406 _mm_setzero_si128 (),
2407 (__mmask8) __U);
2408}
2409
Craig Topper74c10e32018-07-09 19:00:16 +00002410static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002411_mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2412 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2413 (__v4di) __W,
2414 (__mmask8) __U);
2415}
2416
Craig Topper74c10e32018-07-09 19:00:16 +00002417static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002418_mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2419 return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2420 (__v4di)
2421 _mm256_setzero_si256 (),
2422 (__mmask8) __U);
2423}
2424
Craig Topper74c10e32018-07-09 19:00:16 +00002425static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002426_mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2427 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2428 (__v2df) __W,
2429 (__mmask8)
2430 __U);
2431}
2432
Craig Topper74c10e32018-07-09 19:00:16 +00002433static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002434_mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2435 return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2436 (__v2df)
2437 _mm_setzero_pd (),
2438 (__mmask8)
2439 __U);
2440}
2441
Craig Topper74c10e32018-07-09 19:00:16 +00002442static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002443_mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2444 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2445 (__v4df) __W,
2446 (__mmask8)
2447 __U);
2448}
2449
Craig Topper74c10e32018-07-09 19:00:16 +00002450static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002451_mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2452 return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2453 (__v4df)
2454 _mm256_setzero_pd (),
2455 (__mmask8)
2456 __U);
2457}
2458
Craig Topper74c10e32018-07-09 19:00:16 +00002459static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002460_mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2461 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2462 (__v2di) __W,
2463 (__mmask8)
2464 __U);
2465}
2466
Craig Topper74c10e32018-07-09 19:00:16 +00002467static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002468_mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2469 return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2470 (__v2di)
2471 _mm_setzero_si128 (),
2472 (__mmask8)
2473 __U);
2474}
2475
Craig Topper74c10e32018-07-09 19:00:16 +00002476static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002477_mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2478 void const *__P) {
2479 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2480 (__v4di) __W,
2481 (__mmask8)
2482 __U);
2483}
2484
Craig Topper74c10e32018-07-09 19:00:16 +00002485static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002486_mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2487 return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2488 (__v4di)
2489 _mm256_setzero_si256 (),
2490 (__mmask8)
2491 __U);
2492}
2493
Craig Topper74c10e32018-07-09 19:00:16 +00002494static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002495_mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2496 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2497 (__v4sf) __W,
2498 (__mmask8) __U);
2499}
2500
Craig Topper74c10e32018-07-09 19:00:16 +00002501static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002502_mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2503 return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2504 (__v4sf)
2505 _mm_setzero_ps (),
2506 (__mmask8)
2507 __U);
2508}
2509
Craig Topper74c10e32018-07-09 19:00:16 +00002510static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002511_mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2512 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2513 (__v8sf) __W,
2514 (__mmask8) __U);
2515}
2516
Craig Topper74c10e32018-07-09 19:00:16 +00002517static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002518_mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2519 return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2520 (__v8sf)
2521 _mm256_setzero_ps (),
2522 (__mmask8)
2523 __U);
2524}
2525
Craig Topper74c10e32018-07-09 19:00:16 +00002526static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002527_mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2528 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2529 (__v4si) __W,
2530 (__mmask8)
2531 __U);
2532}
2533
Craig Topper74c10e32018-07-09 19:00:16 +00002534static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002535_mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2536 return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2537 (__v4si)
2538 _mm_setzero_si128 (),
2539 (__mmask8) __U);
2540}
2541
Craig Topper74c10e32018-07-09 19:00:16 +00002542static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002543_mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2544 void const *__P) {
2545 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2546 (__v8si) __W,
2547 (__mmask8)
2548 __U);
2549}
2550
Craig Topper74c10e32018-07-09 19:00:16 +00002551static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002552_mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2553 return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2554 (__v8si)
2555 _mm256_setzero_si256 (),
2556 (__mmask8)
2557 __U);
2558}
2559
Craig Topper74c10e32018-07-09 19:00:16 +00002560static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002561_mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2562 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2563 (__v4sf) __W,
2564 (__mmask8) __U);
2565}
2566
Craig Topper74c10e32018-07-09 19:00:16 +00002567static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002568_mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2569 return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2570 (__v4sf)
2571 _mm_setzero_ps (),
2572 (__mmask8) __U);
2573}
2574
Craig Topper74c10e32018-07-09 19:00:16 +00002575static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002576_mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2577 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2578 (__v8sf) __W,
2579 (__mmask8) __U);
2580}
2581
Craig Topper74c10e32018-07-09 19:00:16 +00002582static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002583_mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
2584 return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2585 (__v8sf)
2586 _mm256_setzero_ps (),
2587 (__mmask8) __U);
2588}
2589
Craig Topper74c10e32018-07-09 19:00:16 +00002590static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002591_mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2592 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2593 (__v4si) __W,
2594 (__mmask8) __U);
2595}
2596
Craig Topper74c10e32018-07-09 19:00:16 +00002597static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002598_mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
2599 return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
2600 (__v4si)
2601 _mm_setzero_si128 (),
2602 (__mmask8) __U);
2603}
2604
Craig Topper74c10e32018-07-09 19:00:16 +00002605static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002606_mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2607 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2608 (__v8si) __W,
2609 (__mmask8) __U);
2610}
2611
Craig Topper74c10e32018-07-09 19:00:16 +00002612static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002613_mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
2614 return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
2615 (__v8si)
2616 _mm256_setzero_si256 (),
2617 (__mmask8) __U);
2618}
2619
Craig Topper74c10e32018-07-09 19:00:16 +00002620static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002621_mm_getexp_pd (__m128d __A) {
2622 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2623 (__v2df)
2624 _mm_setzero_pd (),
2625 (__mmask8) -1);
2626}
2627
Craig Topper74c10e32018-07-09 19:00:16 +00002628static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002629_mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2630 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2631 (__v2df) __W,
2632 (__mmask8) __U);
2633}
2634
Craig Topper74c10e32018-07-09 19:00:16 +00002635static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002636_mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
2637 return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
2638 (__v2df)
2639 _mm_setzero_pd (),
2640 (__mmask8) __U);
2641}
2642
Craig Topper74c10e32018-07-09 19:00:16 +00002643static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002644_mm256_getexp_pd (__m256d __A) {
2645 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2646 (__v4df)
2647 _mm256_setzero_pd (),
2648 (__mmask8) -1);
2649}
2650
Craig Topper74c10e32018-07-09 19:00:16 +00002651static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002652_mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2653 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2654 (__v4df) __W,
2655 (__mmask8) __U);
2656}
2657
Craig Topper74c10e32018-07-09 19:00:16 +00002658static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002659_mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
2660 return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
2661 (__v4df)
2662 _mm256_setzero_pd (),
2663 (__mmask8) __U);
2664}
2665
Craig Topper74c10e32018-07-09 19:00:16 +00002666static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002667_mm_getexp_ps (__m128 __A) {
2668 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2669 (__v4sf)
2670 _mm_setzero_ps (),
2671 (__mmask8) -1);
2672}
2673
Craig Topper74c10e32018-07-09 19:00:16 +00002674static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002675_mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2676 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2677 (__v4sf) __W,
2678 (__mmask8) __U);
2679}
2680
Craig Topper74c10e32018-07-09 19:00:16 +00002681static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002682_mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
2683 return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
2684 (__v4sf)
2685 _mm_setzero_ps (),
2686 (__mmask8) __U);
2687}
2688
Craig Topper74c10e32018-07-09 19:00:16 +00002689static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002690_mm256_getexp_ps (__m256 __A) {
2691 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2692 (__v8sf)
2693 _mm256_setzero_ps (),
2694 (__mmask8) -1);
2695}
2696
Craig Topper74c10e32018-07-09 19:00:16 +00002697static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002698_mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2699 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2700 (__v8sf) __W,
2701 (__mmask8) __U);
2702}
2703
Craig Topper74c10e32018-07-09 19:00:16 +00002704static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002705_mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
2706 return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
2707 (__v8sf)
2708 _mm256_setzero_ps (),
2709 (__mmask8) __U);
2710}
2711
Craig Topper74c10e32018-07-09 19:00:16 +00002712static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002713_mm_mask_max_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2714 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2715 (__v2df)_mm_max_pd(__A, __B),
2716 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002717}
2718
Craig Topper74c10e32018-07-09 19:00:16 +00002719static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002720_mm_maskz_max_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2721 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2722 (__v2df)_mm_max_pd(__A, __B),
2723 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002724}
2725
Craig Topper74c10e32018-07-09 19:00:16 +00002726static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002727_mm256_mask_max_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2728 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2729 (__v4df)_mm256_max_pd(__A, __B),
2730 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002731}
2732
Craig Topper74c10e32018-07-09 19:00:16 +00002733static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002734_mm256_maskz_max_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2735 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2736 (__v4df)_mm256_max_pd(__A, __B),
2737 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002738}
2739
Craig Topper74c10e32018-07-09 19:00:16 +00002740static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002741_mm_mask_max_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2742 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2743 (__v4sf)_mm_max_ps(__A, __B),
2744 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002745}
2746
Craig Topper74c10e32018-07-09 19:00:16 +00002747static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002748_mm_maskz_max_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2749 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2750 (__v4sf)_mm_max_ps(__A, __B),
2751 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002752}
2753
Craig Topper74c10e32018-07-09 19:00:16 +00002754static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002755_mm256_mask_max_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2756 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2757 (__v8sf)_mm256_max_ps(__A, __B),
2758 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002759}
2760
Craig Topper74c10e32018-07-09 19:00:16 +00002761static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002762_mm256_maskz_max_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2763 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2764 (__v8sf)_mm256_max_ps(__A, __B),
2765 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002766}
2767
Craig Topper74c10e32018-07-09 19:00:16 +00002768static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002769_mm_mask_min_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2770 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2771 (__v2df)_mm_min_pd(__A, __B),
2772 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002773}
2774
Craig Topper74c10e32018-07-09 19:00:16 +00002775static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002776_mm_maskz_min_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2777 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2778 (__v2df)_mm_min_pd(__A, __B),
2779 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002780}
2781
Craig Topper74c10e32018-07-09 19:00:16 +00002782static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002783_mm256_mask_min_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2784 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2785 (__v4df)_mm256_min_pd(__A, __B),
2786 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002787}
2788
Craig Topper74c10e32018-07-09 19:00:16 +00002789static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002790_mm256_maskz_min_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2791 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2792 (__v4df)_mm256_min_pd(__A, __B),
2793 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002794}
2795
Craig Topper74c10e32018-07-09 19:00:16 +00002796static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002797_mm_mask_min_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2798 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2799 (__v4sf)_mm_min_ps(__A, __B),
2800 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002801}
2802
Craig Topper74c10e32018-07-09 19:00:16 +00002803static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper160ca842016-10-29 19:02:03 +00002804_mm_maskz_min_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2805 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2806 (__v4sf)_mm_min_ps(__A, __B),
2807 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002808}
2809
Craig Topper74c10e32018-07-09 19:00:16 +00002810static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002811_mm256_mask_min_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2812 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2813 (__v8sf)_mm256_min_ps(__A, __B),
2814 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002815}
2816
Craig Topper74c10e32018-07-09 19:00:16 +00002817static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper160ca842016-10-29 19:02:03 +00002818_mm256_maskz_min_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2819 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2820 (__v8sf)_mm256_min_ps(__A, __B),
2821 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002822}
2823
Craig Topper74c10e32018-07-09 19:00:16 +00002824static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002825_mm_mask_mul_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2826 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2827 (__v2df)_mm_mul_pd(__A, __B),
2828 (__v2df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002829}
2830
Craig Topper74c10e32018-07-09 19:00:16 +00002831static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002832_mm_maskz_mul_pd(__mmask8 __U, __m128d __A, __m128d __B) {
2833 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
2834 (__v2df)_mm_mul_pd(__A, __B),
2835 (__v2df)_mm_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002836}
2837
Craig Topper74c10e32018-07-09 19:00:16 +00002838static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002839_mm256_mask_mul_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
2840 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2841 (__v4df)_mm256_mul_pd(__A, __B),
2842 (__v4df)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002843}
2844
Craig Topper74c10e32018-07-09 19:00:16 +00002845static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002846_mm256_maskz_mul_pd(__mmask8 __U, __m256d __A, __m256d __B) {
2847 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
2848 (__v4df)_mm256_mul_pd(__A, __B),
2849 (__v4df)_mm256_setzero_pd());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002850}
2851
Craig Topper74c10e32018-07-09 19:00:16 +00002852static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002853_mm_mask_mul_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2854 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2855 (__v4sf)_mm_mul_ps(__A, __B),
2856 (__v4sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002857}
2858
Craig Topper74c10e32018-07-09 19:00:16 +00002859static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper2dfab632016-09-04 18:30:17 +00002860_mm_maskz_mul_ps(__mmask8 __U, __m128 __A, __m128 __B) {
2861 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
2862 (__v4sf)_mm_mul_ps(__A, __B),
2863 (__v4sf)_mm_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002864}
2865
Craig Topper74c10e32018-07-09 19:00:16 +00002866static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002867_mm256_mask_mul_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2868 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2869 (__v8sf)_mm256_mul_ps(__A, __B),
2870 (__v8sf)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002871}
2872
Craig Topper74c10e32018-07-09 19:00:16 +00002873static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper2dfab632016-09-04 18:30:17 +00002874_mm256_maskz_mul_ps(__mmask8 __U, __m256 __A, __m256 __B) {
2875 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
2876 (__v8sf)_mm256_mul_ps(__A, __B),
2877 (__v8sf)_mm256_setzero_ps());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002878}
2879
Craig Topper74c10e32018-07-09 19:00:16 +00002880static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper78a9c402016-10-22 21:24:38 +00002881_mm_mask_abs_epi32(__m128i __W, __mmask8 __U, __m128i __A) {
2882 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2883 (__v4si)_mm_abs_epi32(__A),
2884 (__v4si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002885}
2886
Craig Topper74c10e32018-07-09 19:00:16 +00002887static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper78a9c402016-10-22 21:24:38 +00002888_mm_maskz_abs_epi32(__mmask8 __U, __m128i __A) {
2889 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
2890 (__v4si)_mm_abs_epi32(__A),
2891 (__v4si)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002892}
2893
Craig Topper74c10e32018-07-09 19:00:16 +00002894static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper78a9c402016-10-22 21:24:38 +00002895_mm256_mask_abs_epi32(__m256i __W, __mmask8 __U, __m256i __A) {
Craig Topper00294702018-06-30 06:05:17 +00002896 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
Craig Topper78a9c402016-10-22 21:24:38 +00002897 (__v8si)_mm256_abs_epi32(__A),
2898 (__v8si)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002899}
2900
Craig Topper74c10e32018-07-09 19:00:16 +00002901static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper78a9c402016-10-22 21:24:38 +00002902_mm256_maskz_abs_epi32(__mmask8 __U, __m256i __A) {
Craig Topper00294702018-06-30 06:05:17 +00002903 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
Craig Topper78a9c402016-10-22 21:24:38 +00002904 (__v8si)_mm256_abs_epi32(__A),
2905 (__v8si)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002906}
2907
Craig Topper74c10e32018-07-09 19:00:16 +00002908static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002909_mm_abs_epi64 (__m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002910 return (__m128i)__builtin_ia32_pabsq128((__v2di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002911}
2912
Craig Topper74c10e32018-07-09 19:00:16 +00002913static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002914_mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002915 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2916 (__v2di)_mm_abs_epi64(__A),
2917 (__v2di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002918}
2919
Craig Topper74c10e32018-07-09 19:00:16 +00002920static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002921_mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002922 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
2923 (__v2di)_mm_abs_epi64(__A),
2924 (__v2di)_mm_setzero_si128());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002925}
2926
Craig Topper74c10e32018-07-09 19:00:16 +00002927static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002928_mm256_abs_epi64 (__m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002929 return (__m256i)__builtin_ia32_pabsq256 ((__v4di)__A);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002930}
2931
Craig Topper74c10e32018-07-09 19:00:16 +00002932static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002933_mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002934 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2935 (__v4di)_mm256_abs_epi64(__A),
2936 (__v4di)__W);
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002937}
2938
Craig Topper74c10e32018-07-09 19:00:16 +00002939static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002940_mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
Craig Topperf2043b02018-05-23 04:51:54 +00002941 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
2942 (__v4di)_mm256_abs_epi64(__A),
2943 (__v4di)_mm256_setzero_si256());
Asaf Badouh78ee5cc2015-07-28 10:30:56 +00002944}
2945
Craig Topper74c10e32018-07-09 19:00:16 +00002946static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00002947_mm_maskz_max_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
2948 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2949 (__v4si)_mm_max_epi32(__A, __B),
2950 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002951}
2952
Craig Topper74c10e32018-07-09 19:00:16 +00002953static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00002954_mm_mask_max_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2955 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
2956 (__v4si)_mm_max_epi32(__A, __B),
2957 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002958}
2959
Craig Topper74c10e32018-07-09 19:00:16 +00002960static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00002961_mm256_maskz_max_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
2962 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2963 (__v8si)_mm256_max_epi32(__A, __B),
2964 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002965}
2966
Craig Topper74c10e32018-07-09 19:00:16 +00002967static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00002968_mm256_mask_max_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
2969 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
2970 (__v8si)_mm256_max_epi32(__A, __B),
2971 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002972}
2973
Craig Topper74c10e32018-07-09 19:00:16 +00002974static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002975_mm_max_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002976 return (__m128i)__builtin_ia32_pmaxsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002977}
2978
Craig Topper74c10e32018-07-09 19:00:16 +00002979static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf2043b02018-05-23 04:51:54 +00002980_mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
2981 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2982 (__v2di)_mm_max_epi64(__A, __B),
2983 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002984}
2985
Craig Topper74c10e32018-07-09 19:00:16 +00002986static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf2043b02018-05-23 04:51:54 +00002987_mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
2988 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
2989 (__v2di)_mm_max_epi64(__A, __B),
2990 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002991}
2992
Craig Topper74c10e32018-07-09 19:00:16 +00002993static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00002994_mm256_max_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00002995 return (__m256i)__builtin_ia32_pmaxsq256((__v4di)__A, (__v4di)__B);
2996}
2997
Craig Topper74c10e32018-07-09 19:00:16 +00002998static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf2043b02018-05-23 04:51:54 +00002999_mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3000 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3001 (__v4di)_mm256_max_epi64(__A, __B),
3002 (__v4di)_mm256_setzero_si256());
3003}
3004
Craig Topper74c10e32018-07-09 19:00:16 +00003005static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf2043b02018-05-23 04:51:54 +00003006_mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3007 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3008 (__v4di)_mm256_max_epi64(__A, __B),
3009 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003010}
3011
Craig Topper74c10e32018-07-09 19:00:16 +00003012static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00003013_mm_maskz_max_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3014 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3015 (__v4si)_mm_max_epu32(__A, __B),
3016 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003017}
3018
Craig Topper74c10e32018-07-09 19:00:16 +00003019static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00003020_mm_mask_max_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3021 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3022 (__v4si)_mm_max_epu32(__A, __B),
3023 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003024}
3025
Craig Topper74c10e32018-07-09 19:00:16 +00003026static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00003027_mm256_maskz_max_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3028 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3029 (__v8si)_mm256_max_epu32(__A, __B),
3030 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003031}
3032
Craig Topper74c10e32018-07-09 19:00:16 +00003033static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00003034_mm256_mask_max_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3035 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3036 (__v8si)_mm256_max_epu32(__A, __B),
3037 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003038}
3039
Craig Topper74c10e32018-07-09 19:00:16 +00003040static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003041_mm_max_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003042 return (__m128i)__builtin_ia32_pmaxuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003043}
3044
Craig Topper74c10e32018-07-09 19:00:16 +00003045static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf2043b02018-05-23 04:51:54 +00003046_mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3047 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3048 (__v2di)_mm_max_epu64(__A, __B),
3049 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003050}
3051
Craig Topper74c10e32018-07-09 19:00:16 +00003052static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf2043b02018-05-23 04:51:54 +00003053_mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3054 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3055 (__v2di)_mm_max_epu64(__A, __B),
3056 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003057}
3058
Craig Topper74c10e32018-07-09 19:00:16 +00003059static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003060_mm256_max_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003061 return (__m256i)__builtin_ia32_pmaxuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003062}
3063
Craig Topper74c10e32018-07-09 19:00:16 +00003064static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf2043b02018-05-23 04:51:54 +00003065_mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3066 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3067 (__v4di)_mm256_max_epu64(__A, __B),
3068 (__v4di)_mm256_setzero_si256());
3069}
3070
Craig Topper74c10e32018-07-09 19:00:16 +00003071static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf2043b02018-05-23 04:51:54 +00003072_mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3073 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3074 (__v4di)_mm256_max_epu64(__A, __B),
3075 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003076}
3077
Craig Topper74c10e32018-07-09 19:00:16 +00003078static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00003079_mm_maskz_min_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
3080 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3081 (__v4si)_mm_min_epi32(__A, __B),
3082 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003083}
3084
Craig Topper74c10e32018-07-09 19:00:16 +00003085static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00003086_mm_mask_min_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3087 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3088 (__v4si)_mm_min_epi32(__A, __B),
3089 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003090}
3091
Craig Topper74c10e32018-07-09 19:00:16 +00003092static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00003093_mm256_maskz_min_epi32(__mmask8 __M, __m256i __A, __m256i __B) {
3094 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3095 (__v8si)_mm256_min_epi32(__A, __B),
3096 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003097}
3098
Craig Topper74c10e32018-07-09 19:00:16 +00003099static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00003100_mm256_mask_min_epi32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3101 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3102 (__v8si)_mm256_min_epi32(__A, __B),
3103 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003104}
3105
Craig Topper74c10e32018-07-09 19:00:16 +00003106static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003107_mm_min_epi64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003108 return (__m128i)__builtin_ia32_pminsq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003109}
3110
Craig Topper74c10e32018-07-09 19:00:16 +00003111static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf2043b02018-05-23 04:51:54 +00003112_mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3113 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3114 (__v2di)_mm_min_epi64(__A, __B),
3115 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003116}
3117
Craig Topper74c10e32018-07-09 19:00:16 +00003118static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003119_mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003120 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3121 (__v2di)_mm_min_epi64(__A, __B),
3122 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003123}
3124
Craig Topper74c10e32018-07-09 19:00:16 +00003125static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003126_mm256_min_epi64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003127 return (__m256i)__builtin_ia32_pminsq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003128}
3129
Craig Topper74c10e32018-07-09 19:00:16 +00003130static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf2043b02018-05-23 04:51:54 +00003131_mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3132 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3133 (__v4di)_mm256_min_epi64(__A, __B),
3134 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003135}
3136
Craig Topper74c10e32018-07-09 19:00:16 +00003137static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003138_mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003139 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3140 (__v4di)_mm256_min_epi64(__A, __B),
3141 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003142}
3143
Craig Topper74c10e32018-07-09 19:00:16 +00003144static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00003145_mm_maskz_min_epu32(__mmask8 __M, __m128i __A, __m128i __B) {
3146 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3147 (__v4si)_mm_min_epu32(__A, __B),
3148 (__v4si)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003149}
3150
Craig Topper74c10e32018-07-09 19:00:16 +00003151static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Toppereee7c052016-10-23 23:57:30 +00003152_mm_mask_min_epu32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3153 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
3154 (__v4si)_mm_min_epu32(__A, __B),
3155 (__v4si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003156}
3157
Craig Topper74c10e32018-07-09 19:00:16 +00003158static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00003159_mm256_maskz_min_epu32(__mmask8 __M, __m256i __A, __m256i __B) {
3160 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3161 (__v8si)_mm256_min_epu32(__A, __B),
3162 (__v8si)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003163}
3164
Craig Topper74c10e32018-07-09 19:00:16 +00003165static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Toppereee7c052016-10-23 23:57:30 +00003166_mm256_mask_min_epu32(__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3167 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
3168 (__v8si)_mm256_min_epu32(__A, __B),
3169 (__v8si)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003170}
3171
Craig Topper74c10e32018-07-09 19:00:16 +00003172static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003173_mm_min_epu64 (__m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003174 return (__m128i)__builtin_ia32_pminuq128((__v2di)__A, (__v2di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003175}
3176
Craig Topper74c10e32018-07-09 19:00:16 +00003177static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperf2043b02018-05-23 04:51:54 +00003178_mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A, __m128i __B) {
3179 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3180 (__v2di)_mm_min_epu64(__A, __B),
3181 (__v2di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003182}
3183
Craig Topper74c10e32018-07-09 19:00:16 +00003184static __inline__ __m128i __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003185_mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003186 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__M,
3187 (__v2di)_mm_min_epu64(__A, __B),
3188 (__v2di)_mm_setzero_si128());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003189}
3190
Craig Topper74c10e32018-07-09 19:00:16 +00003191static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003192_mm256_min_epu64 (__m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003193 return (__m256i)__builtin_ia32_pminuq256((__v4di)__A, (__v4di)__B);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003194}
3195
Craig Topper74c10e32018-07-09 19:00:16 +00003196static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperf2043b02018-05-23 04:51:54 +00003197_mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A, __m256i __B) {
3198 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3199 (__v4di)_mm256_min_epu64(__A, __B),
3200 (__v4di)__W);
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003201}
3202
Craig Topper74c10e32018-07-09 19:00:16 +00003203static __inline__ __m256i __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003204_mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
Craig Topperf2043b02018-05-23 04:51:54 +00003205 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
3206 (__v4di)_mm256_min_epu64(__A, __B),
3207 (__v4di)_mm256_setzero_si256());
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003208}
3209
Craig Topperc6338672018-05-31 00:51:20 +00003210#define _mm_roundscale_pd(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003211 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3212 (int)(imm), \
3213 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003214 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003215
3216
Craig Topperc6338672018-05-31 00:51:20 +00003217#define _mm_mask_roundscale_pd(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003218 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3219 (int)(imm), \
3220 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003221 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003222
3223
Craig Topperc6338672018-05-31 00:51:20 +00003224#define _mm_maskz_roundscale_pd(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003225 (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3226 (int)(imm), \
3227 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003228 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003229
3230
Craig Topperc6338672018-05-31 00:51:20 +00003231#define _mm256_roundscale_pd(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003232 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3233 (int)(imm), \
3234 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003235 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003236
3237
Craig Topperc6338672018-05-31 00:51:20 +00003238#define _mm256_mask_roundscale_pd(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003239 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3240 (int)(imm), \
3241 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003242 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003243
3244
Craig Topperc6338672018-05-31 00:51:20 +00003245#define _mm256_maskz_roundscale_pd(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003246 (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3247 (int)(imm), \
3248 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00003249 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003250
Craig Topperc6338672018-05-31 00:51:20 +00003251#define _mm_roundscale_ps(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003252 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3253 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003254 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003255
3256
Craig Topperc6338672018-05-31 00:51:20 +00003257#define _mm_mask_roundscale_ps(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003258 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3259 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003260 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003261
3262
Craig Topperc6338672018-05-31 00:51:20 +00003263#define _mm_maskz_roundscale_ps(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003264 (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3265 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003266 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003267
Craig Topperc6338672018-05-31 00:51:20 +00003268#define _mm256_roundscale_ps(A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003269 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3270 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003271 (__mmask8)-1)
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003272
Craig Topperc6338672018-05-31 00:51:20 +00003273#define _mm256_mask_roundscale_ps(W, U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003274 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3275 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00003276 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003277
3278
Craig Topperc6338672018-05-31 00:51:20 +00003279#define _mm256_maskz_roundscale_ps(U, A, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00003280 (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3281 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00003282 (__mmask8)(U))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003283
Craig Topper74c10e32018-07-09 19:00:16 +00003284static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003285_mm_scalef_pd (__m128d __A, __m128d __B) {
3286 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3287 (__v2df) __B,
3288 (__v2df)
3289 _mm_setzero_pd (),
3290 (__mmask8) -1);
3291}
3292
Craig Topper74c10e32018-07-09 19:00:16 +00003293static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003294_mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3295 __m128d __B) {
3296 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3297 (__v2df) __B,
3298 (__v2df) __W,
3299 (__mmask8) __U);
3300}
3301
Craig Topper74c10e32018-07-09 19:00:16 +00003302static __inline__ __m128d __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003303_mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3304 return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3305 (__v2df) __B,
3306 (__v2df)
3307 _mm_setzero_pd (),
3308 (__mmask8) __U);
3309}
3310
Craig Topper74c10e32018-07-09 19:00:16 +00003311static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003312_mm256_scalef_pd (__m256d __A, __m256d __B) {
3313 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3314 (__v4df) __B,
3315 (__v4df)
3316 _mm256_setzero_pd (),
3317 (__mmask8) -1);
3318}
3319
Craig Topper74c10e32018-07-09 19:00:16 +00003320static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003321_mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3322 __m256d __B) {
3323 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3324 (__v4df) __B,
3325 (__v4df) __W,
3326 (__mmask8) __U);
3327}
3328
Craig Topper74c10e32018-07-09 19:00:16 +00003329static __inline__ __m256d __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003330_mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3331 return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3332 (__v4df) __B,
3333 (__v4df)
3334 _mm256_setzero_pd (),
3335 (__mmask8) __U);
3336}
3337
Craig Topper74c10e32018-07-09 19:00:16 +00003338static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003339_mm_scalef_ps (__m128 __A, __m128 __B) {
3340 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3341 (__v4sf) __B,
3342 (__v4sf)
3343 _mm_setzero_ps (),
3344 (__mmask8) -1);
3345}
3346
Craig Topper74c10e32018-07-09 19:00:16 +00003347static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003348_mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3349 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3350 (__v4sf) __B,
3351 (__v4sf) __W,
3352 (__mmask8) __U);
3353}
3354
Craig Topper74c10e32018-07-09 19:00:16 +00003355static __inline__ __m128 __DEFAULT_FN_ATTRS128
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003356_mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3357 return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3358 (__v4sf) __B,
3359 (__v4sf)
3360 _mm_setzero_ps (),
3361 (__mmask8) __U);
3362}
3363
Craig Topper74c10e32018-07-09 19:00:16 +00003364static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003365_mm256_scalef_ps (__m256 __A, __m256 __B) {
3366 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3367 (__v8sf) __B,
3368 (__v8sf)
3369 _mm256_setzero_ps (),
3370 (__mmask8) -1);
3371}
3372
Craig Topper74c10e32018-07-09 19:00:16 +00003373static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003374_mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3375 __m256 __B) {
3376 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3377 (__v8sf) __B,
3378 (__v8sf) __W,
3379 (__mmask8) __U);
3380}
3381
Craig Topper74c10e32018-07-09 19:00:16 +00003382static __inline__ __m256 __DEFAULT_FN_ATTRS256
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003383_mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3384 return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3385 (__v8sf) __B,
3386 (__v8sf)
3387 _mm256_setzero_ps (),
3388 (__mmask8) __U);
3389}
3390
Craig Topperc6338672018-05-31 00:51:20 +00003391#define _mm_i64scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003392 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
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_mask_i64scatter_pd(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003397 __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3398 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003399 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003400
Craig Topperc6338672018-05-31 00:51:20 +00003401#define _mm_i64scatter_epi64(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003402 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
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 _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003407 __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3408 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003409 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003410
Craig Topperc6338672018-05-31 00:51:20 +00003411#define _mm256_i64scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003412 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
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_mask_i64scatter_pd(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003417 __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3418 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003419 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003420
Craig Topperc6338672018-05-31 00:51:20 +00003421#define _mm256_i64scatter_epi64(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003422 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
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 _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003427 __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3428 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003429 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003430
Craig Topperc6338672018-05-31 00:51:20 +00003431#define _mm_i64scatter_ps(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003432 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
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_mask_i64scatter_ps(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003437 __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3438 (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003439 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003440
Craig Topperc6338672018-05-31 00:51:20 +00003441#define _mm_i64scatter_epi32(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003442 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
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 _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003447 __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3448 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003449 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003450
Craig Topperc6338672018-05-31 00:51:20 +00003451#define _mm256_i64scatter_ps(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003452 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
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_mask_i64scatter_ps(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003457 __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
3458 (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
Craig Topperc6338672018-05-31 00:51:20 +00003459 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003460
Craig Topperc6338672018-05-31 00:51:20 +00003461#define _mm256_i64scatter_epi32(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003462 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
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 _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003467 __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
3468 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003469 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003470
Craig Topperc6338672018-05-31 00:51:20 +00003471#define _mm_i32scatter_pd(addr, index, v1, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00003472 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
3473 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00003474 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003475
Craig Topperc6338672018-05-31 00:51:20 +00003476#define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) \
3477 __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
3478 (__v4si)(__m128i)(index), \
3479 (__v2df)(__m128d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003480
Craig Topperc6338672018-05-31 00:51:20 +00003481#define _mm_i32scatter_epi64(addr, index, v1, scale) \
3482 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
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 _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) \
3487 __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
3488 (__v4si)(__m128i)(index), \
3489 (__v2di)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003490
Craig Topperc6338672018-05-31 00:51:20 +00003491#define _mm256_i32scatter_pd(addr, index, v1, scale) \
3492 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
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_mask_i32scatter_pd(addr, mask, index, v1, scale) \
3497 __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
3498 (__v4si)(__m128i)(index), \
3499 (__v4df)(__m256d)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003500
Craig Topperc6338672018-05-31 00:51:20 +00003501#define _mm256_i32scatter_epi64(addr, index, v1, scale) \
3502 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
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 _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) \
3507 __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
3508 (__v4si)(__m128i)(index), \
3509 (__v4di)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003510
Craig Topperc6338672018-05-31 00:51:20 +00003511#define _mm_i32scatter_ps(addr, index, v1, scale) \
3512 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
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_mask_i32scatter_ps(addr, mask, index, v1, scale) \
3517 __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
3518 (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
3519 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003520
Craig Topperc6338672018-05-31 00:51:20 +00003521#define _mm_i32scatter_epi32(addr, index, v1, scale) \
3522 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
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 _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) \
3527 __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
3528 (__v4si)(__m128i)(index), \
3529 (__v4si)(__m128i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003530
Craig Topperc6338672018-05-31 00:51:20 +00003531#define _mm256_i32scatter_ps(addr, index, v1, scale) \
3532 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
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_mask_i32scatter_ps(addr, mask, index, v1, scale) \
3537 __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
3538 (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
3539 (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003540
Craig Topperc6338672018-05-31 00:51:20 +00003541#define _mm256_i32scatter_epi32(addr, index, v1, scale) \
3542 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
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#define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) \
3547 __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
3548 (__v8si)(__m256i)(index), \
3549 (__v8si)(__m256i)(v1), (int)(scale))
Asaf Badouhb7cf71b2015-07-28 11:14:09 +00003550
Craig Topper74c10e32018-07-09 19:00:16 +00003551 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003552 _mm_mask_sqrt_pd(__m128d __W, __mmask8 __U, __m128d __A) {
3553 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3554 (__v2df)_mm_sqrt_pd(__A),
3555 (__v2df)__W);
3556 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003557
Craig Topper74c10e32018-07-09 19:00:16 +00003558 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003559 _mm_maskz_sqrt_pd(__mmask8 __U, __m128d __A) {
3560 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3561 (__v2df)_mm_sqrt_pd(__A),
3562 (__v2df)_mm_setzero_pd());
3563 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003564
Craig Topper74c10e32018-07-09 19:00:16 +00003565 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003566 _mm256_mask_sqrt_pd(__m256d __W, __mmask8 __U, __m256d __A) {
3567 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3568 (__v4df)_mm256_sqrt_pd(__A),
3569 (__v4df)__W);
3570 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003571
Craig Topper74c10e32018-07-09 19:00:16 +00003572 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003573 _mm256_maskz_sqrt_pd(__mmask8 __U, __m256d __A) {
3574 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3575 (__v4df)_mm256_sqrt_pd(__A),
3576 (__v4df)_mm256_setzero_pd());
3577 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003578
Craig Topper74c10e32018-07-09 19:00:16 +00003579 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003580 _mm_mask_sqrt_ps(__m128 __W, __mmask8 __U, __m128 __A) {
3581 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3582 (__v4sf)_mm_sqrt_ps(__A),
3583 (__v4sf)__W);
3584 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003585
Craig Topper74c10e32018-07-09 19:00:16 +00003586 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003587 _mm_maskz_sqrt_ps(__mmask8 __U, __m128 __A) {
3588 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3589 (__v4sf)_mm_sqrt_ps(__A),
Craig Topper5cbeeed2018-07-07 17:03:32 +00003590 (__v4sf)_mm_setzero_ps());
Craig Topperc6338672018-05-31 00:51:20 +00003591 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003592
Craig Topper74c10e32018-07-09 19:00:16 +00003593 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003594 _mm256_mask_sqrt_ps(__m256 __W, __mmask8 __U, __m256 __A) {
3595 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3596 (__v8sf)_mm256_sqrt_ps(__A),
3597 (__v8sf)__W);
3598 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003599
Craig Topper74c10e32018-07-09 19:00:16 +00003600 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003601 _mm256_maskz_sqrt_ps(__mmask8 __U, __m256 __A) {
3602 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3603 (__v8sf)_mm256_sqrt_ps(__A),
3604 (__v8sf)_mm256_setzero_ps());
3605 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003606
Craig Topper74c10e32018-07-09 19:00:16 +00003607 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003608 _mm_mask_sub_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3609 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3610 (__v2df)_mm_sub_pd(__A, __B),
3611 (__v2df)__W);
3612 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003613
Craig Topper74c10e32018-07-09 19:00:16 +00003614 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003615 _mm_maskz_sub_pd(__mmask8 __U, __m128d __A, __m128d __B) {
3616 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
3617 (__v2df)_mm_sub_pd(__A, __B),
3618 (__v2df)_mm_setzero_pd());
3619 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003620
Craig Topper74c10e32018-07-09 19:00:16 +00003621 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003622 _mm256_mask_sub_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
3623 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3624 (__v4df)_mm256_sub_pd(__A, __B),
3625 (__v4df)__W);
3626 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003627
Craig Topper74c10e32018-07-09 19:00:16 +00003628 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003629 _mm256_maskz_sub_pd(__mmask8 __U, __m256d __A, __m256d __B) {
3630 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
3631 (__v4df)_mm256_sub_pd(__A, __B),
3632 (__v4df)_mm256_setzero_pd());
3633 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003634
Craig Topper74c10e32018-07-09 19:00:16 +00003635 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003636 _mm_mask_sub_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3637 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3638 (__v4sf)_mm_sub_ps(__A, __B),
3639 (__v4sf)__W);
3640 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003641
Craig Topper74c10e32018-07-09 19:00:16 +00003642 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003643 _mm_maskz_sub_ps(__mmask8 __U, __m128 __A, __m128 __B) {
3644 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
3645 (__v4sf)_mm_sub_ps(__A, __B),
3646 (__v4sf)_mm_setzero_ps());
3647 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003648
Craig Topper74c10e32018-07-09 19:00:16 +00003649 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003650 _mm256_mask_sub_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3651 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3652 (__v8sf)_mm256_sub_ps(__A, __B),
3653 (__v8sf)__W);
3654 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003655
Craig Topper74c10e32018-07-09 19:00:16 +00003656 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003657 _mm256_maskz_sub_ps(__mmask8 __U, __m256 __A, __m256 __B) {
3658 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
3659 (__v8sf)_mm256_sub_ps(__A, __B),
3660 (__v8sf)_mm256_setzero_ps());
3661 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003662
Craig Topper74c10e32018-07-09 19:00:16 +00003663 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003664 _mm_permutex2var_epi32(__m128i __A, __m128i __I, __m128i __B) {
3665 return (__m128i)__builtin_ia32_vpermi2vard128((__v4si) __A, (__v4si)__I,
3666 (__v4si)__B);
3667 }
Craig Topper68a272d2018-05-29 03:26:38 +00003668
Craig Topper74c10e32018-07-09 19:00:16 +00003669 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003670 _mm_mask_permutex2var_epi32(__m128i __A, __mmask8 __U, __m128i __I,
3671 __m128i __B) {
3672 return (__m128i)__builtin_ia32_selectd_128(__U,
3673 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3674 (__v4si)__A);
3675 }
Craig Topper68a272d2018-05-29 03:26:38 +00003676
Craig Topper74c10e32018-07-09 19:00:16 +00003677 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003678 _mm_mask2_permutex2var_epi32(__m128i __A, __m128i __I, __mmask8 __U,
3679 __m128i __B) {
3680 return (__m128i)__builtin_ia32_selectd_128(__U,
3681 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3682 (__v4si)__I);
3683 }
Craig Topper68a272d2018-05-29 03:26:38 +00003684
Craig Topper74c10e32018-07-09 19:00:16 +00003685 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003686 _mm_maskz_permutex2var_epi32(__mmask8 __U, __m128i __A, __m128i __I,
3687 __m128i __B) {
3688 return (__m128i)__builtin_ia32_selectd_128(__U,
3689 (__v4si)_mm_permutex2var_epi32(__A, __I, __B),
3690 (__v4si)_mm_setzero_si128());
3691 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003692
Craig Topper74c10e32018-07-09 19:00:16 +00003693 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003694 _mm256_permutex2var_epi32(__m256i __A, __m256i __I, __m256i __B) {
3695 return (__m256i)__builtin_ia32_vpermi2vard256((__v8si)__A, (__v8si) __I,
3696 (__v8si) __B);
3697 }
Craig Topper68a272d2018-05-29 03:26:38 +00003698
Craig Topper74c10e32018-07-09 19:00:16 +00003699 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003700 _mm256_mask_permutex2var_epi32(__m256i __A, __mmask8 __U, __m256i __I,
3701 __m256i __B) {
3702 return (__m256i)__builtin_ia32_selectd_256(__U,
3703 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3704 (__v8si)__A);
3705 }
Craig Topper68a272d2018-05-29 03:26:38 +00003706
Craig Topper74c10e32018-07-09 19:00:16 +00003707 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003708 _mm256_mask2_permutex2var_epi32(__m256i __A, __m256i __I, __mmask8 __U,
3709 __m256i __B) {
3710 return (__m256i)__builtin_ia32_selectd_256(__U,
3711 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3712 (__v8si)__I);
3713 }
Craig Topper68a272d2018-05-29 03:26:38 +00003714
Craig Topper74c10e32018-07-09 19:00:16 +00003715 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003716 _mm256_maskz_permutex2var_epi32(__mmask8 __U, __m256i __A, __m256i __I,
3717 __m256i __B) {
3718 return (__m256i)__builtin_ia32_selectd_256(__U,
3719 (__v8si)_mm256_permutex2var_epi32(__A, __I, __B),
3720 (__v8si)_mm256_setzero_si256());
3721 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003722
Craig Topper74c10e32018-07-09 19:00:16 +00003723 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003724 _mm_permutex2var_pd(__m128d __A, __m128i __I, __m128d __B) {
3725 return (__m128d)__builtin_ia32_vpermi2varpd128((__v2df)__A, (__v2di)__I,
3726 (__v2df)__B);
3727 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003728
Craig Topper74c10e32018-07-09 19:00:16 +00003729 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003730 _mm_mask_permutex2var_pd(__m128d __A, __mmask8 __U, __m128i __I, __m128d __B) {
3731 return (__m128d)__builtin_ia32_selectpd_128(__U,
3732 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3733 (__v2df)__A);
3734 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003735
Craig Topper74c10e32018-07-09 19:00:16 +00003736 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003737 _mm_mask2_permutex2var_pd(__m128d __A, __m128i __I, __mmask8 __U, __m128d __B) {
3738 return (__m128d)__builtin_ia32_selectpd_128(__U,
3739 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3740 (__v2df)(__m128d)__I);
3741 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003742
Craig Topper74c10e32018-07-09 19:00:16 +00003743 static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003744 _mm_maskz_permutex2var_pd(__mmask8 __U, __m128d __A, __m128i __I, __m128d __B) {
3745 return (__m128d)__builtin_ia32_selectpd_128(__U,
3746 (__v2df)_mm_permutex2var_pd(__A, __I, __B),
3747 (__v2df)_mm_setzero_pd());
3748 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003749
Craig Topper74c10e32018-07-09 19:00:16 +00003750 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003751 _mm256_permutex2var_pd(__m256d __A, __m256i __I, __m256d __B) {
3752 return (__m256d)__builtin_ia32_vpermi2varpd256((__v4df)__A, (__v4di)__I,
3753 (__v4df)__B);
3754 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003755
Craig Topper74c10e32018-07-09 19:00:16 +00003756 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003757 _mm256_mask_permutex2var_pd(__m256d __A, __mmask8 __U, __m256i __I,
3758 __m256d __B) {
3759 return (__m256d)__builtin_ia32_selectpd_256(__U,
3760 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3761 (__v4df)__A);
3762 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003763
Craig Topper74c10e32018-07-09 19:00:16 +00003764 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003765 _mm256_mask2_permutex2var_pd(__m256d __A, __m256i __I, __mmask8 __U,
3766 __m256d __B) {
3767 return (__m256d)__builtin_ia32_selectpd_256(__U,
3768 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3769 (__v4df)(__m256d)__I);
3770 }
Craig Topper68a272d2018-05-29 03:26:38 +00003771
Craig Topper74c10e32018-07-09 19:00:16 +00003772 static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003773 _mm256_maskz_permutex2var_pd(__mmask8 __U, __m256d __A, __m256i __I,
3774 __m256d __B) {
3775 return (__m256d)__builtin_ia32_selectpd_256(__U,
3776 (__v4df)_mm256_permutex2var_pd(__A, __I, __B),
3777 (__v4df)_mm256_setzero_pd());
3778 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003779
Craig Topper74c10e32018-07-09 19:00:16 +00003780 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003781 _mm_permutex2var_ps(__m128 __A, __m128i __I, __m128 __B) {
3782 return (__m128)__builtin_ia32_vpermi2varps128((__v4sf)__A, (__v4si)__I,
3783 (__v4sf)__B);
3784 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003785
Craig Topper74c10e32018-07-09 19:00:16 +00003786 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003787 _mm_mask_permutex2var_ps(__m128 __A, __mmask8 __U, __m128i __I, __m128 __B) {
3788 return (__m128)__builtin_ia32_selectps_128(__U,
3789 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3790 (__v4sf)__A);
3791 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003792
Craig Topper74c10e32018-07-09 19:00:16 +00003793 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003794 _mm_mask2_permutex2var_ps(__m128 __A, __m128i __I, __mmask8 __U, __m128 __B) {
3795 return (__m128)__builtin_ia32_selectps_128(__U,
3796 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3797 (__v4sf)(__m128)__I);
3798 }
Craig Topper68a272d2018-05-29 03:26:38 +00003799
Craig Topper74c10e32018-07-09 19:00:16 +00003800 static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003801 _mm_maskz_permutex2var_ps(__mmask8 __U, __m128 __A, __m128i __I, __m128 __B) {
3802 return (__m128)__builtin_ia32_selectps_128(__U,
3803 (__v4sf)_mm_permutex2var_ps(__A, __I, __B),
3804 (__v4sf)_mm_setzero_ps());
3805 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003806
Craig Topper74c10e32018-07-09 19:00:16 +00003807 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003808 _mm256_permutex2var_ps(__m256 __A, __m256i __I, __m256 __B) {
3809 return (__m256)__builtin_ia32_vpermi2varps256((__v8sf)__A, (__v8si)__I,
3810 (__v8sf) __B);
3811 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003812
Craig Topper74c10e32018-07-09 19:00:16 +00003813 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003814 _mm256_mask_permutex2var_ps(__m256 __A, __mmask8 __U, __m256i __I, __m256 __B) {
3815 return (__m256)__builtin_ia32_selectps_256(__U,
3816 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3817 (__v8sf)__A);
3818 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003819
Craig Topper74c10e32018-07-09 19:00:16 +00003820 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003821 _mm256_mask2_permutex2var_ps(__m256 __A, __m256i __I, __mmask8 __U,
3822 __m256 __B) {
3823 return (__m256)__builtin_ia32_selectps_256(__U,
3824 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3825 (__v8sf)(__m256)__I);
3826 }
Craig Topper68a272d2018-05-29 03:26:38 +00003827
Craig Topper74c10e32018-07-09 19:00:16 +00003828 static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003829 _mm256_maskz_permutex2var_ps(__mmask8 __U, __m256 __A, __m256i __I,
3830 __m256 __B) {
3831 return (__m256)__builtin_ia32_selectps_256(__U,
3832 (__v8sf)_mm256_permutex2var_ps(__A, __I, __B),
3833 (__v8sf)_mm256_setzero_ps());
3834 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003835
Craig Topper74c10e32018-07-09 19:00:16 +00003836 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003837 _mm_permutex2var_epi64(__m128i __A, __m128i __I, __m128i __B) {
3838 return (__m128i)__builtin_ia32_vpermi2varq128((__v2di)__A, (__v2di)__I,
3839 (__v2di)__B);
3840 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003841
Craig Topper74c10e32018-07-09 19:00:16 +00003842 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003843 _mm_mask_permutex2var_epi64(__m128i __A, __mmask8 __U, __m128i __I,
3844 __m128i __B) {
3845 return (__m128i)__builtin_ia32_selectq_128(__U,
3846 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3847 (__v2di)__A);
3848 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003849
Craig Topper74c10e32018-07-09 19:00:16 +00003850 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003851 _mm_mask2_permutex2var_epi64(__m128i __A, __m128i __I, __mmask8 __U,
3852 __m128i __B) {
3853 return (__m128i)__builtin_ia32_selectq_128(__U,
3854 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3855 (__v2di)__I);
3856 }
Craig Topper68a272d2018-05-29 03:26:38 +00003857
Craig Topper74c10e32018-07-09 19:00:16 +00003858 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003859 _mm_maskz_permutex2var_epi64(__mmask8 __U, __m128i __A, __m128i __I,
3860 __m128i __B) {
3861 return (__m128i)__builtin_ia32_selectq_128(__U,
3862 (__v2di)_mm_permutex2var_epi64(__A, __I, __B),
3863 (__v2di)_mm_setzero_si128());
3864 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003865
3866
Craig Topper74c10e32018-07-09 19:00:16 +00003867 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003868 _mm256_permutex2var_epi64(__m256i __A, __m256i __I, __m256i __B) {
3869 return (__m256i)__builtin_ia32_vpermi2varq256((__v4di)__A, (__v4di) __I,
3870 (__v4di) __B);
3871 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003872
Craig Topper74c10e32018-07-09 19:00:16 +00003873 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003874 _mm256_mask_permutex2var_epi64(__m256i __A, __mmask8 __U, __m256i __I,
3875 __m256i __B) {
3876 return (__m256i)__builtin_ia32_selectq_256(__U,
3877 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3878 (__v4di)__A);
3879 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003880
Craig Topper74c10e32018-07-09 19:00:16 +00003881 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003882 _mm256_mask2_permutex2var_epi64(__m256i __A, __m256i __I, __mmask8 __U,
3883 __m256i __B) {
3884 return (__m256i)__builtin_ia32_selectq_256(__U,
3885 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3886 (__v4di)__I);
3887 }
Craig Topper68a272d2018-05-29 03:26:38 +00003888
Craig Topper74c10e32018-07-09 19:00:16 +00003889 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003890 _mm256_maskz_permutex2var_epi64(__mmask8 __U, __m256i __A, __m256i __I,
3891 __m256i __B) {
3892 return (__m256i)__builtin_ia32_selectq_256(__U,
3893 (__v4di)_mm256_permutex2var_epi64(__A, __I, __B),
3894 (__v4di)_mm256_setzero_si256());
3895 }
Asaf Badouh93aa4c82015-07-28 12:04:40 +00003896
Craig Topper74c10e32018-07-09 19:00:16 +00003897 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003898 _mm_mask_cvtepi8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
3899 {
3900 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3901 (__v4si)_mm_cvtepi8_epi32(__A),
3902 (__v4si)__W);
3903 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003904
Craig Topper74c10e32018-07-09 19:00:16 +00003905 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003906 _mm_maskz_cvtepi8_epi32(__mmask8 __U, __m128i __A)
3907 {
3908 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3909 (__v4si)_mm_cvtepi8_epi32(__A),
3910 (__v4si)_mm_setzero_si128());
3911 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003912
Craig Topper74c10e32018-07-09 19:00:16 +00003913 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003914 _mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
3915 {
3916 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3917 (__v8si)_mm256_cvtepi8_epi32(__A),
3918 (__v8si)__W);
3919 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003920
Craig Topper74c10e32018-07-09 19:00:16 +00003921 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003922 _mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
3923 {
3924 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
3925 (__v8si)_mm256_cvtepi8_epi32(__A),
3926 (__v8si)_mm256_setzero_si256());
3927 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003928
Craig Topper74c10e32018-07-09 19:00:16 +00003929 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003930 _mm_mask_cvtepi8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
3931 {
3932 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3933 (__v2di)_mm_cvtepi8_epi64(__A),
3934 (__v2di)__W);
3935 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003936
Craig Topper74c10e32018-07-09 19:00:16 +00003937 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003938 _mm_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
3939 {
3940 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3941 (__v2di)_mm_cvtepi8_epi64(__A),
3942 (__v2di)_mm_setzero_si128());
3943 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003944
Craig Topper74c10e32018-07-09 19:00:16 +00003945 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003946 _mm256_mask_cvtepi8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
3947 {
3948 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3949 (__v4di)_mm256_cvtepi8_epi64(__A),
3950 (__v4di)__W);
3951 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003952
Craig Topper74c10e32018-07-09 19:00:16 +00003953 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003954 _mm256_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A)
3955 {
3956 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3957 (__v4di)_mm256_cvtepi8_epi64(__A),
3958 (__v4di)_mm256_setzero_si256());
3959 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003960
Craig Topper74c10e32018-07-09 19:00:16 +00003961 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003962 _mm_mask_cvtepi32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
3963 {
3964 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3965 (__v2di)_mm_cvtepi32_epi64(__X),
3966 (__v2di)__W);
3967 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003968
Craig Topper74c10e32018-07-09 19:00:16 +00003969 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003970 _mm_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
3971 {
3972 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
3973 (__v2di)_mm_cvtepi32_epi64(__X),
3974 (__v2di)_mm_setzero_si128());
3975 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003976
Craig Topper74c10e32018-07-09 19:00:16 +00003977 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003978 _mm256_mask_cvtepi32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
3979 {
3980 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3981 (__v4di)_mm256_cvtepi32_epi64(__X),
3982 (__v4di)__W);
3983 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003984
Craig Topper74c10e32018-07-09 19:00:16 +00003985 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00003986 _mm256_maskz_cvtepi32_epi64(__mmask8 __U, __m128i __X)
3987 {
3988 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
3989 (__v4di)_mm256_cvtepi32_epi64(__X),
3990 (__v4di)_mm256_setzero_si256());
3991 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00003992
Craig Topper74c10e32018-07-09 19:00:16 +00003993 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00003994 _mm_mask_cvtepi16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
3995 {
3996 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
3997 (__v4si)_mm_cvtepi16_epi32(__A),
3998 (__v4si)__W);
3999 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004000
Craig Topper74c10e32018-07-09 19:00:16 +00004001 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004002 _mm_maskz_cvtepi16_epi32(__mmask8 __U, __m128i __A)
4003 {
4004 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4005 (__v4si)_mm_cvtepi16_epi32(__A),
4006 (__v4si)_mm_setzero_si128());
4007 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004008
Craig Topper74c10e32018-07-09 19:00:16 +00004009 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004010 _mm256_mask_cvtepi16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4011 {
4012 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4013 (__v8si)_mm256_cvtepi16_epi32(__A),
4014 (__v8si)__W);
4015 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004016
Craig Topper74c10e32018-07-09 19:00:16 +00004017 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004018 _mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4019 {
4020 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4021 (__v8si)_mm256_cvtepi16_epi32(__A),
4022 (__v8si)_mm256_setzero_si256());
4023 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004024
Craig Topper74c10e32018-07-09 19:00:16 +00004025 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004026 _mm_mask_cvtepi16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4027 {
4028 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4029 (__v2di)_mm_cvtepi16_epi64(__A),
4030 (__v2di)__W);
4031 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004032
Craig Topper74c10e32018-07-09 19:00:16 +00004033 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004034 _mm_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4035 {
4036 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4037 (__v2di)_mm_cvtepi16_epi64(__A),
4038 (__v2di)_mm_setzero_si128());
4039 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004040
Craig Topper74c10e32018-07-09 19:00:16 +00004041 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004042 _mm256_mask_cvtepi16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4043 {
4044 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4045 (__v4di)_mm256_cvtepi16_epi64(__A),
4046 (__v4di)__W);
4047 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004048
Craig Topper74c10e32018-07-09 19:00:16 +00004049 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004050 _mm256_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A)
4051 {
4052 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4053 (__v4di)_mm256_cvtepi16_epi64(__A),
4054 (__v4di)_mm256_setzero_si256());
4055 }
Michael Zuckerman7cdb72f2016-02-18 09:09:34 +00004056
4057
Craig Topper74c10e32018-07-09 19:00:16 +00004058 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004059 _mm_mask_cvtepu8_epi32(__m128i __W, __mmask8 __U, __m128i __A)
4060 {
4061 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4062 (__v4si)_mm_cvtepu8_epi32(__A),
4063 (__v4si)__W);
4064 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004065
Craig Topper74c10e32018-07-09 19:00:16 +00004066 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004067 _mm_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
4068 {
4069 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4070 (__v4si)_mm_cvtepu8_epi32(__A),
4071 (__v4si)_mm_setzero_si128());
4072 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004073
Craig Topper74c10e32018-07-09 19:00:16 +00004074 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004075 _mm256_mask_cvtepu8_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4076 {
4077 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4078 (__v8si)_mm256_cvtepu8_epi32(__A),
4079 (__v8si)__W);
4080 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004081
Craig Topper74c10e32018-07-09 19:00:16 +00004082 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004083 _mm256_maskz_cvtepu8_epi32(__mmask8 __U, __m128i __A)
4084 {
4085 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4086 (__v8si)_mm256_cvtepu8_epi32(__A),
4087 (__v8si)_mm256_setzero_si256());
4088 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004089
Craig Topper74c10e32018-07-09 19:00:16 +00004090 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004091 _mm_mask_cvtepu8_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4092 {
4093 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4094 (__v2di)_mm_cvtepu8_epi64(__A),
4095 (__v2di)__W);
4096 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004097
Craig Topper74c10e32018-07-09 19:00:16 +00004098 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004099 _mm_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A)
4100 {
4101 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4102 (__v2di)_mm_cvtepu8_epi64(__A),
4103 (__v2di)_mm_setzero_si128());
4104 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004105
Craig Topper74c10e32018-07-09 19:00:16 +00004106 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004107 _mm256_mask_cvtepu8_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4108 {
4109 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4110 (__v4di)_mm256_cvtepu8_epi64(__A),
4111 (__v4di)__W);
4112 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004113
Craig Topper74c10e32018-07-09 19:00:16 +00004114 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004115 _mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4116 {
4117 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4118 (__v4di)_mm256_cvtepu8_epi64(__A),
4119 (__v4di)_mm256_setzero_si256());
4120 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004121
Craig Topper74c10e32018-07-09 19:00:16 +00004122 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004123 _mm_mask_cvtepu32_epi64(__m128i __W, __mmask8 __U, __m128i __X)
4124 {
4125 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4126 (__v2di)_mm_cvtepu32_epi64(__X),
4127 (__v2di)__W);
4128 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004129
Craig Topper74c10e32018-07-09 19:00:16 +00004130 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004131 _mm_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
4132 {
4133 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4134 (__v2di)_mm_cvtepu32_epi64(__X),
4135 (__v2di)_mm_setzero_si128());
4136 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004137
Craig Topper74c10e32018-07-09 19:00:16 +00004138 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004139 _mm256_mask_cvtepu32_epi64(__m256i __W, __mmask8 __U, __m128i __X)
4140 {
4141 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4142 (__v4di)_mm256_cvtepu32_epi64(__X),
4143 (__v4di)__W);
4144 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004145
Craig Topper74c10e32018-07-09 19:00:16 +00004146 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004147 _mm256_maskz_cvtepu32_epi64(__mmask8 __U, __m128i __X)
4148 {
4149 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4150 (__v4di)_mm256_cvtepu32_epi64(__X),
4151 (__v4di)_mm256_setzero_si256());
4152 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004153
Craig Topper74c10e32018-07-09 19:00:16 +00004154 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004155 _mm_mask_cvtepu16_epi32(__m128i __W, __mmask8 __U, __m128i __A)
4156 {
4157 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4158 (__v4si)_mm_cvtepu16_epi32(__A),
4159 (__v4si)__W);
4160 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004161
Craig Topper74c10e32018-07-09 19:00:16 +00004162 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004163 _mm_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
4164 {
4165 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4166 (__v4si)_mm_cvtepu16_epi32(__A),
4167 (__v4si)_mm_setzero_si128());
4168 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004169
Craig Topper74c10e32018-07-09 19:00:16 +00004170 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004171 _mm256_mask_cvtepu16_epi32(__m256i __W, __mmask8 __U, __m128i __A)
4172 {
4173 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4174 (__v8si)_mm256_cvtepu16_epi32(__A),
4175 (__v8si)__W);
4176 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004177
Craig Topper74c10e32018-07-09 19:00:16 +00004178 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004179 _mm256_maskz_cvtepu16_epi32(__mmask8 __U, __m128i __A)
4180 {
4181 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4182 (__v8si)_mm256_cvtepu16_epi32(__A),
4183 (__v8si)_mm256_setzero_si256());
4184 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004185
Craig Topper74c10e32018-07-09 19:00:16 +00004186 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004187 _mm_mask_cvtepu16_epi64(__m128i __W, __mmask8 __U, __m128i __A)
4188 {
4189 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4190 (__v2di)_mm_cvtepu16_epi64(__A),
4191 (__v2di)__W);
4192 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004193
Craig Topper74c10e32018-07-09 19:00:16 +00004194 static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topperc6338672018-05-31 00:51:20 +00004195 _mm_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4196 {
4197 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4198 (__v2di)_mm_cvtepu16_epi64(__A),
4199 (__v2di)_mm_setzero_si128());
4200 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004201
Craig Topper74c10e32018-07-09 19:00:16 +00004202 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004203 _mm256_mask_cvtepu16_epi64(__m256i __W, __mmask8 __U, __m128i __A)
4204 {
4205 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4206 (__v4di)_mm256_cvtepu16_epi64(__A),
4207 (__v4di)__W);
4208 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004209
Craig Topper74c10e32018-07-09 19:00:16 +00004210 static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topperc6338672018-05-31 00:51:20 +00004211 _mm256_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A)
4212 {
4213 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4214 (__v4di)_mm256_cvtepu16_epi64(__A),
4215 (__v4di)_mm256_setzero_si256());
4216 }
Michael Zuckerman7a33dce2016-02-21 14:00:11 +00004217
4218
Craig Topperc6338672018-05-31 00:51:20 +00004219#define _mm_rol_epi32(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004220 (__m128i)__builtin_ia32_prold128((__v4si)(__m128i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004221
Craig Topperc6338672018-05-31 00:51:20 +00004222#define _mm_mask_rol_epi32(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004223 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4224 (__v4si)_mm_rol_epi32((a), (b)), \
4225 (__v4si)(__m128i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004226
Craig Topperc6338672018-05-31 00:51:20 +00004227#define _mm_maskz_rol_epi32(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004228 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4229 (__v4si)_mm_rol_epi32((a), (b)), \
4230 (__v4si)_mm_setzero_si128())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004231
Craig Topperc6338672018-05-31 00:51:20 +00004232#define _mm256_rol_epi32(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004233 (__m256i)__builtin_ia32_prold256((__v8si)(__m256i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004234
Craig Topperc6338672018-05-31 00:51:20 +00004235#define _mm256_mask_rol_epi32(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004236 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4237 (__v8si)_mm256_rol_epi32((a), (b)), \
4238 (__v8si)(__m256i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004239
Craig Topperc6338672018-05-31 00:51:20 +00004240#define _mm256_maskz_rol_epi32(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004241 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4242 (__v8si)_mm256_rol_epi32((a), (b)), \
4243 (__v8si)_mm256_setzero_si256())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004244
Craig Topperc6338672018-05-31 00:51:20 +00004245#define _mm_rol_epi64(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004246 (__m128i)__builtin_ia32_prolq128((__v2di)(__m128i)(a), (int)(b))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004247
Craig Topperc6338672018-05-31 00:51:20 +00004248#define _mm_mask_rol_epi64(w, u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004249 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4250 (__v2di)_mm_rol_epi64((a), (b)), \
4251 (__v2di)(__m128i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004252
Craig Topperc6338672018-05-31 00:51:20 +00004253#define _mm_maskz_rol_epi64(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004254 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4255 (__v2di)_mm_rol_epi64((a), (b)), \
4256 (__v2di)_mm_setzero_si128())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004257
Craig Topperc6338672018-05-31 00:51:20 +00004258#define _mm256_rol_epi64(a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004259 (__m256i)__builtin_ia32_prolq256((__v4di)(__m256i)(a), (int)(b))
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) \
Craig Topper0e9de762018-06-30 01:32:14 +00004262 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4263 (__v4di)_mm256_rol_epi64((a), (b)), \
4264 (__v4di)(__m256i)(w))
Michael Zuckerman38a27272016-02-22 09:05:41 +00004265
Craig Topperc6338672018-05-31 00:51:20 +00004266#define _mm256_maskz_rol_epi64(u, a, b) \
Craig Topper0e9de762018-06-30 01:32:14 +00004267 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4268 (__v4di)_mm256_rol_epi64((a), (b)), \
4269 (__v4di)_mm256_setzero_si256())
Michael Zuckerman38a27272016-02-22 09:05:41 +00004270
Craig Topper74c10e32018-07-09 19:00:16 +00004271static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0231f162016-02-23 13:41:13 +00004272_mm_rolv_epi32 (__m128i __A, __m128i __B)
4273{
Craig Topper0e9de762018-06-30 01:32:14 +00004274 return (__m128i)__builtin_ia32_prolvd128((__v4si)__A, (__v4si)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004275}
4276
Craig Topper74c10e32018-07-09 19:00:16 +00004277static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e9de762018-06-30 01:32:14 +00004278_mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004279{
Craig Topper0e9de762018-06-30 01:32:14 +00004280 return (__m128i)__builtin_ia32_selectd_128(__U,
4281 (__v4si)_mm_rolv_epi32(__A, __B),
4282 (__v4si)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004283}
4284
Craig Topper74c10e32018-07-09 19:00:16 +00004285static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0231f162016-02-23 13:41:13 +00004286_mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4287{
Craig Topper0e9de762018-06-30 01:32:14 +00004288 return (__m128i)__builtin_ia32_selectd_128(__U,
4289 (__v4si)_mm_rolv_epi32(__A, __B),
4290 (__v4si)_mm_setzero_si128());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004291}
4292
Craig Topper74c10e32018-07-09 19:00:16 +00004293static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman0231f162016-02-23 13:41:13 +00004294_mm256_rolv_epi32 (__m256i __A, __m256i __B)
4295{
Craig Topper0e9de762018-06-30 01:32:14 +00004296 return (__m256i)__builtin_ia32_prolvd256((__v8si)__A, (__v8si)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004297}
4298
Craig Topper74c10e32018-07-09 19:00:16 +00004299static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e9de762018-06-30 01:32:14 +00004300_mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004301{
Craig Topper0e9de762018-06-30 01:32:14 +00004302 return (__m256i)__builtin_ia32_selectd_256(__U,
4303 (__v8si)_mm256_rolv_epi32(__A, __B),
4304 (__v8si)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004305}
4306
Craig Topper74c10e32018-07-09 19:00:16 +00004307static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman0231f162016-02-23 13:41:13 +00004308_mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4309{
Craig Topper0e9de762018-06-30 01:32:14 +00004310 return (__m256i)__builtin_ia32_selectd_256(__U,
4311 (__v8si)_mm256_rolv_epi32(__A, __B),
4312 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004313}
4314
Craig Topper74c10e32018-07-09 19:00:16 +00004315static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0231f162016-02-23 13:41:13 +00004316_mm_rolv_epi64 (__m128i __A, __m128i __B)
4317{
Craig Topper0e9de762018-06-30 01:32:14 +00004318 return (__m128i)__builtin_ia32_prolvq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004319}
4320
Craig Topper74c10e32018-07-09 19:00:16 +00004321static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e9de762018-06-30 01:32:14 +00004322_mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004323{
Craig Topper0e9de762018-06-30 01:32:14 +00004324 return (__m128i)__builtin_ia32_selectq_128(__U,
4325 (__v2di)_mm_rolv_epi64(__A, __B),
4326 (__v2di)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004327}
4328
Craig Topper74c10e32018-07-09 19:00:16 +00004329static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0231f162016-02-23 13:41:13 +00004330_mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4331{
Craig Topper0e9de762018-06-30 01:32:14 +00004332 return (__m128i)__builtin_ia32_selectq_128(__U,
4333 (__v2di)_mm_rolv_epi64(__A, __B),
4334 (__v2di)_mm_setzero_si128());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004335}
4336
Craig Topper74c10e32018-07-09 19:00:16 +00004337static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman0231f162016-02-23 13:41:13 +00004338_mm256_rolv_epi64 (__m256i __A, __m256i __B)
4339{
Craig Topper0e9de762018-06-30 01:32:14 +00004340 return (__m256i)__builtin_ia32_prolvq256((__v4di)__A, (__v4di)__B);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004341}
4342
Craig Topper74c10e32018-07-09 19:00:16 +00004343static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e9de762018-06-30 01:32:14 +00004344_mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman0231f162016-02-23 13:41:13 +00004345{
Craig Topper0e9de762018-06-30 01:32:14 +00004346 return (__m256i)__builtin_ia32_selectq_256(__U,
4347 (__v4di)_mm256_rolv_epi64(__A, __B),
4348 (__v4di)__W);
Michael Zuckerman0231f162016-02-23 13:41:13 +00004349}
4350
Craig Topper74c10e32018-07-09 19:00:16 +00004351static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman0231f162016-02-23 13:41:13 +00004352_mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4353{
Craig Topper0e9de762018-06-30 01:32:14 +00004354 return (__m256i)__builtin_ia32_selectq_256(__U,
4355 (__v4di)_mm256_rolv_epi64(__A, __B),
4356 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0231f162016-02-23 13:41:13 +00004357}
4358
Craig Topper0e9de762018-06-30 01:32:14 +00004359#define _mm_ror_epi32(a, b) \
4360 (__m128i)__builtin_ia32_prord128((__v4si)(__m128i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004361
Craig Topper0e9de762018-06-30 01:32:14 +00004362#define _mm_mask_ror_epi32(w, u, a, b) \
4363 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4364 (__v4si)_mm_ror_epi32((a), (b)), \
4365 (__v4si)(__m128i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004366
Craig Topper0e9de762018-06-30 01:32:14 +00004367#define _mm_maskz_ror_epi32(u, a, b) \
4368 (__m128i)__builtin_ia32_selectd_128((__mmask8)(u), \
4369 (__v4si)_mm_ror_epi32((a), (b)), \
4370 (__v4si)_mm_setzero_si128())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004371
Craig Topper0e9de762018-06-30 01:32:14 +00004372#define _mm256_ror_epi32(a, b) \
4373 (__m256i)__builtin_ia32_prord256((__v8si)(__m256i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004374
Craig Topper0e9de762018-06-30 01:32:14 +00004375#define _mm256_mask_ror_epi32(w, u, a, b) \
4376 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4377 (__v8si)_mm256_ror_epi32((a), (b)), \
4378 (__v8si)(__m256i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004379
Craig Topper0e9de762018-06-30 01:32:14 +00004380#define _mm256_maskz_ror_epi32(u, a, b) \
4381 (__m256i)__builtin_ia32_selectd_256((__mmask8)(u), \
4382 (__v8si)_mm256_ror_epi32((a), (b)), \
4383 (__v8si)_mm256_setzero_si256())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004384
Craig Topper0e9de762018-06-30 01:32:14 +00004385#define _mm_ror_epi64(a, b) \
4386 (__m128i)__builtin_ia32_prorq128((__v2di)(__m128i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004387
Craig Topper0e9de762018-06-30 01:32:14 +00004388#define _mm_mask_ror_epi64(w, u, a, b) \
4389 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4390 (__v2di)_mm_ror_epi64((a), (b)), \
4391 (__v2di)(__m128i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004392
Craig Topper0e9de762018-06-30 01:32:14 +00004393#define _mm_maskz_ror_epi64(u, a, b) \
4394 (__m128i)__builtin_ia32_selectq_128((__mmask8)(u), \
4395 (__v2di)_mm_ror_epi64((a), (b)), \
4396 (__v2di)_mm_setzero_si128())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004397
Craig Topper0e9de762018-06-30 01:32:14 +00004398#define _mm256_ror_epi64(a, b) \
4399 (__m256i)__builtin_ia32_prorq256((__v4di)(__m256i)(a), (int)(b))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004400
Craig Topper0e9de762018-06-30 01:32:14 +00004401#define _mm256_mask_ror_epi64(w, u, a, b) \
4402 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4403 (__v4di)_mm256_ror_epi64((a), (b)), \
4404 (__v4di)(__m256i)(w))
Michael Zuckerman0231f162016-02-23 13:41:13 +00004405
Craig Topper0e9de762018-06-30 01:32:14 +00004406#define _mm256_maskz_ror_epi64(u, a, b) \
4407 (__m256i)__builtin_ia32_selectq_256((__mmask8)(u), \
4408 (__v4di)_mm256_ror_epi64((a), (b)), \
4409 (__v4di)_mm256_setzero_si256())
Michael Zuckerman0231f162016-02-23 13:41:13 +00004410
Craig Topper74c10e32018-07-09 19:00:16 +00004411static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004412_mm_mask_sll_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004413{
Craig Topper66b2fd12016-10-31 04:30:51 +00004414 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4415 (__v4si)_mm_sll_epi32(__A, __B),
4416 (__v4si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004417}
4418
Craig Topper74c10e32018-07-09 19:00:16 +00004419static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004420_mm_maskz_sll_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004421{
Craig Topper66b2fd12016-10-31 04:30:51 +00004422 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4423 (__v4si)_mm_sll_epi32(__A, __B),
4424 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004425}
4426
Craig Topper74c10e32018-07-09 19:00:16 +00004427static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004428_mm256_mask_sll_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004429{
Craig Topper66b2fd12016-10-31 04:30:51 +00004430 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4431 (__v8si)_mm256_sll_epi32(__A, __B),
4432 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004433}
4434
Craig Topper74c10e32018-07-09 19:00:16 +00004435static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004436_mm256_maskz_sll_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004437{
Craig Topper66b2fd12016-10-31 04:30:51 +00004438 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4439 (__v8si)_mm256_sll_epi32(__A, __B),
4440 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004441}
4442
Craig Topper74c10e32018-07-09 19:00:16 +00004443static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004444_mm_mask_slli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004445{
Craig Topper66b2fd12016-10-31 04:30:51 +00004446 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4447 (__v4si)_mm_slli_epi32(__A, __B),
4448 (__v4si)__W);
4449}
4450
Craig Topper74c10e32018-07-09 19:00:16 +00004451static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004452_mm_maskz_slli_epi32(__mmask8 __U, __m128i __A, int __B)
4453{
4454 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4455 (__v4si)_mm_slli_epi32(__A, __B),
4456 (__v4si)_mm_setzero_si128());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004457}
4458
Craig Topper74c10e32018-07-09 19:00:16 +00004459static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004460_mm256_mask_slli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004461{
Craig Topper66b2fd12016-10-31 04:30:51 +00004462 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4463 (__v8si)_mm256_slli_epi32(__A, __B),
4464 (__v8si)__W);
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004465}
4466
Craig Topper74c10e32018-07-09 19:00:16 +00004467static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004468_mm256_maskz_slli_epi32(__mmask8 __U, __m256i __A, int __B)
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004469{
Craig Topper66b2fd12016-10-31 04:30:51 +00004470 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4471 (__v8si)_mm256_slli_epi32(__A, __B),
4472 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004473}
4474
Craig Topper74c10e32018-07-09 19:00:16 +00004475static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004476_mm_mask_sll_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4477{
4478 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4479 (__v2di)_mm_sll_epi64(__A, __B),
4480 (__v2di)__W);
4481}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004482
Craig Topper74c10e32018-07-09 19:00:16 +00004483static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004484_mm_maskz_sll_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4485{
4486 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4487 (__v2di)_mm_sll_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004488 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004489}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004490
Craig Topper74c10e32018-07-09 19:00:16 +00004491static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004492_mm256_mask_sll_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4493{
4494 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4495 (__v4di)_mm256_sll_epi64(__A, __B),
4496 (__v4di)__W);
4497}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004498
Craig Topper74c10e32018-07-09 19:00:16 +00004499static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004500_mm256_maskz_sll_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4501{
4502 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4503 (__v4di)_mm256_sll_epi64(__A, __B),
4504 (__v4di)_mm256_setzero_si256());
4505}
Michael Zuckerman1ac360c2016-03-01 11:38:16 +00004506
Craig Topper74c10e32018-07-09 19:00:16 +00004507static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004508_mm_mask_slli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4509{
4510 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4511 (__v2di)_mm_slli_epi64(__A, __B),
4512 (__v2di)__W);
4513}
4514
Craig Topper74c10e32018-07-09 19:00:16 +00004515static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004516_mm_maskz_slli_epi64(__mmask8 __U, __m128i __A, int __B)
4517{
4518 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4519 (__v2di)_mm_slli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004520 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004521}
4522
Craig Topper74c10e32018-07-09 19:00:16 +00004523static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004524_mm256_mask_slli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4525{
4526 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4527 (__v4di)_mm256_slli_epi64(__A, __B),
4528 (__v4di)__W);
4529}
4530
Craig Topper74c10e32018-07-09 19:00:16 +00004531static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004532_mm256_maskz_slli_epi64(__mmask8 __U, __m256i __A, int __B)
4533{
4534 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4535 (__v4di)_mm256_slli_epi64(__A, __B),
4536 (__v4di)_mm256_setzero_si256());
4537}
Michael Zuckerman0231f162016-02-23 13:41:13 +00004538
Craig Topper74c10e32018-07-09 19:00:16 +00004539static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane98cc742016-02-23 15:59:47 +00004540_mm_rorv_epi32 (__m128i __A, __m128i __B)
4541{
Craig Topper0e9de762018-06-30 01:32:14 +00004542 return (__m128i)__builtin_ia32_prorvd128((__v4si)__A, (__v4si)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004543}
4544
Craig Topper74c10e32018-07-09 19:00:16 +00004545static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e9de762018-06-30 01:32:14 +00004546_mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004547{
Craig Topper0e9de762018-06-30 01:32:14 +00004548 return (__m128i)__builtin_ia32_selectd_128(__U,
4549 (__v4si)_mm_rorv_epi32(__A, __B),
4550 (__v4si)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004551}
4552
Craig Topper74c10e32018-07-09 19:00:16 +00004553static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane98cc742016-02-23 15:59:47 +00004554_mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4555{
Craig Topper0e9de762018-06-30 01:32:14 +00004556 return (__m128i)__builtin_ia32_selectd_128(__U,
4557 (__v4si)_mm_rorv_epi32(__A, __B),
4558 (__v4si)_mm_setzero_si128());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004559}
4560
Craig Topper74c10e32018-07-09 19:00:16 +00004561static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane98cc742016-02-23 15:59:47 +00004562_mm256_rorv_epi32 (__m256i __A, __m256i __B)
4563{
Craig Topper0e9de762018-06-30 01:32:14 +00004564 return (__m256i)__builtin_ia32_prorvd256((__v8si)__A, (__v8si)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004565}
4566
Craig Topper74c10e32018-07-09 19:00:16 +00004567static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e9de762018-06-30 01:32:14 +00004568_mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004569{
Craig Topper0e9de762018-06-30 01:32:14 +00004570 return (__m256i)__builtin_ia32_selectd_256(__U,
4571 (__v8si)_mm256_rorv_epi32(__A, __B),
4572 (__v8si)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004573}
4574
Craig Topper74c10e32018-07-09 19:00:16 +00004575static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane98cc742016-02-23 15:59:47 +00004576_mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
4577{
Craig Topper0e9de762018-06-30 01:32:14 +00004578 return (__m256i)__builtin_ia32_selectd_256(__U,
4579 (__v8si)_mm256_rorv_epi32(__A, __B),
4580 (__v8si)_mm256_setzero_si256());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004581}
4582
Craig Topper74c10e32018-07-09 19:00:16 +00004583static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane98cc742016-02-23 15:59:47 +00004584_mm_rorv_epi64 (__m128i __A, __m128i __B)
4585{
Craig Topper0e9de762018-06-30 01:32:14 +00004586 return (__m128i)__builtin_ia32_prorvq128((__v2di)__A, (__v2di)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004587}
4588
Craig Topper74c10e32018-07-09 19:00:16 +00004589static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper0e9de762018-06-30 01:32:14 +00004590_mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004591{
Craig Topper0e9de762018-06-30 01:32:14 +00004592 return (__m128i)__builtin_ia32_selectq_128(__U,
4593 (__v2di)_mm_rorv_epi64(__A, __B),
4594 (__v2di)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004595}
4596
Craig Topper74c10e32018-07-09 19:00:16 +00004597static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane98cc742016-02-23 15:59:47 +00004598_mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
4599{
Craig Topper0e9de762018-06-30 01:32:14 +00004600 return (__m128i)__builtin_ia32_selectq_128(__U,
4601 (__v2di)_mm_rorv_epi64(__A, __B),
4602 (__v2di)_mm_setzero_si128());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004603}
4604
Craig Topper74c10e32018-07-09 19:00:16 +00004605static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane98cc742016-02-23 15:59:47 +00004606_mm256_rorv_epi64 (__m256i __A, __m256i __B)
4607{
Craig Topper0e9de762018-06-30 01:32:14 +00004608 return (__m256i)__builtin_ia32_prorvq256((__v4di)__A, (__v4di)__B);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004609}
4610
Craig Topper74c10e32018-07-09 19:00:16 +00004611static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper0e9de762018-06-30 01:32:14 +00004612_mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckermane98cc742016-02-23 15:59:47 +00004613{
Craig Topper0e9de762018-06-30 01:32:14 +00004614 return (__m256i)__builtin_ia32_selectq_256(__U,
4615 (__v4di)_mm256_rorv_epi64(__A, __B),
4616 (__v4di)__W);
Michael Zuckermane98cc742016-02-23 15:59:47 +00004617}
4618
Craig Topper74c10e32018-07-09 19:00:16 +00004619static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane98cc742016-02-23 15:59:47 +00004620_mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
4621{
Craig Topper0e9de762018-06-30 01:32:14 +00004622 return (__m256i)__builtin_ia32_selectq_256(__U,
4623 (__v4di)_mm256_rorv_epi64(__A, __B),
4624 (__v4di)_mm256_setzero_si256());
Michael Zuckermane98cc742016-02-23 15:59:47 +00004625}
4626
Craig Topper74c10e32018-07-09 19:00:16 +00004627static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004628_mm_mask_sllv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004629{
Craig Topper66b2fd12016-10-31 04:30:51 +00004630 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4631 (__v2di)_mm_sllv_epi64(__X, __Y),
4632 (__v2di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004633}
4634
Craig Topper74c10e32018-07-09 19:00:16 +00004635static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004636_mm_maskz_sllv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004637{
Craig Topper66b2fd12016-10-31 04:30:51 +00004638 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4639 (__v2di)_mm_sllv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004640 (__v2di)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004641}
4642
Craig Topper74c10e32018-07-09 19:00:16 +00004643static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004644_mm256_mask_sllv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004645{
Craig Topper66b2fd12016-10-31 04:30:51 +00004646 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4647 (__v4di)_mm256_sllv_epi64(__X, __Y),
4648 (__v4di)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004649}
4650
Craig Topper74c10e32018-07-09 19:00:16 +00004651static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004652_mm256_maskz_sllv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004653{
Craig Topper66b2fd12016-10-31 04:30:51 +00004654 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4655 (__v4di)_mm256_sllv_epi64(__X, __Y),
4656 (__v4di)_mm256_setzero_si256());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004657}
4658
Craig Topper74c10e32018-07-09 19:00:16 +00004659static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004660_mm_mask_sllv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004661{
Craig Topper66b2fd12016-10-31 04:30:51 +00004662 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4663 (__v4si)_mm_sllv_epi32(__X, __Y),
4664 (__v4si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004665}
4666
Craig Topper74c10e32018-07-09 19:00:16 +00004667static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004668_mm_maskz_sllv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004669{
Craig Topper66b2fd12016-10-31 04:30:51 +00004670 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4671 (__v4si)_mm_sllv_epi32(__X, __Y),
4672 (__v4si)_mm_setzero_si128());
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004673}
4674
Craig Topper74c10e32018-07-09 19:00:16 +00004675static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004676_mm256_mask_sllv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004677{
Craig Topper66b2fd12016-10-31 04:30:51 +00004678 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4679 (__v8si)_mm256_sllv_epi32(__X, __Y),
4680 (__v8si)__W);
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004681}
4682
Craig Topper74c10e32018-07-09 19:00:16 +00004683static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004684_mm256_maskz_sllv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckerman431b0e12016-02-28 07:39:34 +00004685{
Craig Topper66b2fd12016-10-31 04:30:51 +00004686 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4687 (__v8si)_mm256_sllv_epi32(__X, __Y),
4688 (__v8si)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004689}
4690
Craig Topper74c10e32018-07-09 19:00:16 +00004691static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004692_mm_mask_srlv_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004693{
Craig Topper66b2fd12016-10-31 04:30:51 +00004694 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4695 (__v2di)_mm_srlv_epi64(__X, __Y),
4696 (__v2di)__W);
Michael Zuckerman0165e762016-03-01 13:03:45 +00004697}
4698
Craig Topper74c10e32018-07-09 19:00:16 +00004699static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004700_mm_maskz_srlv_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004701{
Craig Topper66b2fd12016-10-31 04:30:51 +00004702 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4703 (__v2di)_mm_srlv_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004704 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004705}
4706
Craig Topper74c10e32018-07-09 19:00:16 +00004707static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004708_mm256_mask_srlv_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4709{
4710 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4711 (__v4di)_mm256_srlv_epi64(__X, __Y),
4712 (__v4di)__W);
4713}
4714
Craig Topper74c10e32018-07-09 19:00:16 +00004715static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004716_mm256_maskz_srlv_epi64(__mmask8 __U, __m256i __X, __m256i __Y)
4717{
4718 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4719 (__v4di)_mm256_srlv_epi64(__X, __Y),
4720 (__v4di)_mm256_setzero_si256());
Michael Zuckerman0165e762016-03-01 13:03:45 +00004721}
4722
Craig Topper74c10e32018-07-09 19:00:16 +00004723static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004724_mm_mask_srlv_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckerman0165e762016-03-01 13:03:45 +00004725{
Craig Topper66b2fd12016-10-31 04:30:51 +00004726 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4727 (__v4si)_mm_srlv_epi32(__X, __Y),
4728 (__v4si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004729}
4730
Craig Topper74c10e32018-07-09 19:00:16 +00004731static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004732_mm_maskz_srlv_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004733{
Craig Topper66b2fd12016-10-31 04:30:51 +00004734 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4735 (__v4si)_mm_srlv_epi32(__X, __Y),
4736 (__v4si)_mm_setzero_si128());
Michael Zuckermand176d742016-03-01 17:49:03 +00004737}
4738
Craig Topper74c10e32018-07-09 19:00:16 +00004739static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004740_mm256_mask_srlv_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004741{
Craig Topper66b2fd12016-10-31 04:30:51 +00004742 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4743 (__v8si)_mm256_srlv_epi32(__X, __Y),
4744 (__v8si)__W);
Michael Zuckermand176d742016-03-01 17:49:03 +00004745}
4746
Craig Topper74c10e32018-07-09 19:00:16 +00004747static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004748_mm256_maskz_srlv_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand176d742016-03-01 17:49:03 +00004749{
Craig Topper66b2fd12016-10-31 04:30:51 +00004750 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4751 (__v8si)_mm256_srlv_epi32(__X, __Y),
4752 (__v8si)_mm256_setzero_si256());
Michael Zuckermand176d742016-03-01 17:49:03 +00004753}
4754
Craig Topper74c10e32018-07-09 19:00:16 +00004755static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004756_mm_mask_srl_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand176d742016-03-01 17:49:03 +00004757{
Craig Topper66b2fd12016-10-31 04:30:51 +00004758 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4759 (__v4si)_mm_srl_epi32(__A, __B),
4760 (__v4si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004761}
4762
Craig Topper74c10e32018-07-09 19:00:16 +00004763static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004764_mm_maskz_srl_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004765{
Craig Topper66b2fd12016-10-31 04:30:51 +00004766 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4767 (__v4si)_mm_srl_epi32(__A, __B),
4768 (__v4si)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004769}
4770
Craig Topper74c10e32018-07-09 19:00:16 +00004771static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004772_mm256_mask_srl_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004773{
Craig Topper66b2fd12016-10-31 04:30:51 +00004774 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4775 (__v8si)_mm256_srl_epi32(__A, __B),
4776 (__v8si)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004777}
4778
Craig Topper74c10e32018-07-09 19:00:16 +00004779static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004780_mm256_maskz_srl_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004781{
Craig Topper66b2fd12016-10-31 04:30:51 +00004782 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4783 (__v8si)_mm256_srl_epi32(__A, __B),
4784 (__v8si)_mm256_setzero_si256());
4785}
4786
Craig Topper74c10e32018-07-09 19:00:16 +00004787static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004788_mm_mask_srli_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4789{
4790 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4791 (__v4si)_mm_srli_epi32(__A, __B),
4792 (__v4si)__W);
4793}
4794
Craig Topper74c10e32018-07-09 19:00:16 +00004795static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004796_mm_maskz_srli_epi32(__mmask8 __U, __m128i __A, int __B)
4797{
4798 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4799 (__v4si)_mm_srli_epi32(__A, __B),
4800 (__v4si)_mm_setzero_si128());
4801}
4802
Craig Topper74c10e32018-07-09 19:00:16 +00004803static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004804_mm256_mask_srli_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4805{
4806 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4807 (__v8si)_mm256_srli_epi32(__A, __B),
4808 (__v8si)__W);
4809}
4810
Craig Topper74c10e32018-07-09 19:00:16 +00004811static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004812_mm256_maskz_srli_epi32(__mmask8 __U, __m256i __A, int __B)
4813{
4814 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4815 (__v8si)_mm256_srli_epi32(__A, __B),
4816 (__v8si)_mm256_setzero_si256());
4817}
4818
Craig Topper74c10e32018-07-09 19:00:16 +00004819static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004820_mm_mask_srl_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
4821{
4822 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4823 (__v2di)_mm_srl_epi64(__A, __B),
4824 (__v2di)__W);
4825}
4826
Craig Topper74c10e32018-07-09 19:00:16 +00004827static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004828_mm_maskz_srl_epi64(__mmask8 __U, __m128i __A, __m128i __B)
4829{
4830 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4831 (__v2di)_mm_srl_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004832 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004833}
4834
Craig Topper74c10e32018-07-09 19:00:16 +00004835static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004836_mm256_mask_srl_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
4837{
4838 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4839 (__v4di)_mm256_srl_epi64(__A, __B),
4840 (__v4di)__W);
4841}
4842
Craig Topper74c10e32018-07-09 19:00:16 +00004843static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004844_mm256_maskz_srl_epi64(__mmask8 __U, __m256i __A, __m128i __B)
4845{
4846 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4847 (__v4di)_mm256_srl_epi64(__A, __B),
4848 (__v4di)_mm256_setzero_si256());
4849}
4850
Craig Topper74c10e32018-07-09 19:00:16 +00004851static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004852_mm_mask_srli_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __B)
4853{
4854 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4855 (__v2di)_mm_srli_epi64(__A, __B),
4856 (__v2di)__W);
4857}
4858
Craig Topper74c10e32018-07-09 19:00:16 +00004859static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004860_mm_maskz_srli_epi64(__mmask8 __U, __m128i __A, int __B)
4861{
4862 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4863 (__v2di)_mm_srli_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00004864 (__v2di)_mm_setzero_si128());
Craig Topper66b2fd12016-10-31 04:30:51 +00004865}
4866
Craig Topper74c10e32018-07-09 19:00:16 +00004867static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004868_mm256_mask_srli_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __B)
4869{
4870 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4871 (__v4di)_mm256_srli_epi64(__A, __B),
4872 (__v4di)__W);
4873}
4874
Craig Topper74c10e32018-07-09 19:00:16 +00004875static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004876_mm256_maskz_srli_epi64(__mmask8 __U, __m256i __A, int __B)
4877{
4878 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4879 (__v4di)_mm256_srli_epi64(__A, __B),
4880 (__v4di)_mm256_setzero_si256());
4881}
4882
Craig Topper74c10e32018-07-09 19:00:16 +00004883static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004884_mm_mask_srav_epi32(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
4885{
4886 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4887 (__v4si)_mm_srav_epi32(__X, __Y),
4888 (__v4si)__W);
4889}
4890
Craig Topper74c10e32018-07-09 19:00:16 +00004891static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00004892_mm_maskz_srav_epi32(__mmask8 __U, __m128i __X, __m128i __Y)
4893{
4894 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
4895 (__v4si)_mm_srav_epi32(__X, __Y),
4896 (__v4si)_mm_setzero_si128());
4897}
4898
Craig Topper74c10e32018-07-09 19:00:16 +00004899static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004900_mm256_mask_srav_epi32(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
4901{
4902 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4903 (__v8si)_mm256_srav_epi32(__X, __Y),
4904 (__v8si)__W);
4905}
4906
Craig Topper74c10e32018-07-09 19:00:16 +00004907static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00004908_mm256_maskz_srav_epi32(__mmask8 __U, __m256i __X, __m256i __Y)
4909{
4910 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
4911 (__v8si)_mm256_srav_epi32(__X, __Y),
4912 (__v8si)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004913}
4914
Craig Topper74c10e32018-07-09 19:00:16 +00004915static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper5e0709d2016-11-13 07:26:34 +00004916_mm_srav_epi64(__m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004917{
Craig Topper5e0709d2016-11-13 07:26:34 +00004918 return (__m128i)__builtin_ia32_psravq128((__v2di)__X, (__v2di)__Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004919}
4920
Craig Topper74c10e32018-07-09 19:00:16 +00004921static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper5e0709d2016-11-13 07:26:34 +00004922_mm_mask_srav_epi64(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004923{
Craig Topper5e0709d2016-11-13 07:26:34 +00004924 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4925 (__v2di)_mm_srav_epi64(__X, __Y),
4926 (__v2di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004927}
4928
Craig Topper74c10e32018-07-09 19:00:16 +00004929static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper5e0709d2016-11-13 07:26:34 +00004930_mm_maskz_srav_epi64(__mmask8 __U, __m128i __X, __m128i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004931{
Craig Topper5e0709d2016-11-13 07:26:34 +00004932 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
4933 (__v2di)_mm_srav_epi64(__X, __Y),
Craig Topperdff5b312018-05-30 18:02:11 +00004934 (__v2di)_mm_setzero_si128());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004935}
4936
Craig Topper74c10e32018-07-09 19:00:16 +00004937static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper5e0709d2016-11-13 07:26:34 +00004938_mm256_srav_epi64(__m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004939{
Craig Topper5e0709d2016-11-13 07:26:34 +00004940 return (__m256i)__builtin_ia32_psravq256((__v4di)__X, (__v4di) __Y);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004941}
4942
Craig Topper74c10e32018-07-09 19:00:16 +00004943static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper5e0709d2016-11-13 07:26:34 +00004944_mm256_mask_srav_epi64(__m256i __W, __mmask8 __U, __m256i __X, __m256i __Y)
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004945{
Craig Topper5e0709d2016-11-13 07:26:34 +00004946 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4947 (__v4di)_mm256_srav_epi64(__X, __Y),
4948 (__v4di)__W);
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004949}
4950
Craig Topper74c10e32018-07-09 19:00:16 +00004951static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004952_mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
4953{
Craig Topper5e0709d2016-11-13 07:26:34 +00004954 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
4955 (__v4di)_mm256_srav_epi64(__X, __Y),
4956 (__v4di)_mm256_setzero_si256());
Michael Zuckermand15c95a2016-03-02 09:05:46 +00004957}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004958
Craig Topper74c10e32018-07-09 19:00:16 +00004959static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane6542002016-05-23 08:01:48 +00004960_mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4961{
Igor Bregeraadb8762016-06-08 13:59:20 +00004962 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
4963 (__v4si) __A,
4964 (__v4si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00004965}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00004966
Craig Topper74c10e32018-07-09 19:00:16 +00004967static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane6542002016-05-23 08:01:48 +00004968_mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
4969{
Igor Bregeraadb8762016-06-08 13:59:20 +00004970 return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
4971 (__v4si) __A,
4972 (__v4si) _mm_setzero_si128 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00004973}
4974
4975
Craig Topper74c10e32018-07-09 19:00:16 +00004976static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane6542002016-05-23 08:01:48 +00004977_mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
4978{
Igor Bregeraadb8762016-06-08 13:59:20 +00004979 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
4980 (__v8si) __A,
4981 (__v8si) __W);
Michael Zuckermane6542002016-05-23 08:01:48 +00004982}
4983
Craig Topper74c10e32018-07-09 19:00:16 +00004984static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane6542002016-05-23 08:01:48 +00004985_mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
4986{
Igor Bregeraadb8762016-06-08 13:59:20 +00004987 return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
4988 (__v8si) __A,
4989 (__v8si) _mm256_setzero_si256 ());
Michael Zuckermane6542002016-05-23 08:01:48 +00004990}
4991
Craig Topper74c10e32018-07-09 19:00:16 +00004992static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane6542002016-05-23 08:01:48 +00004993_mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
4994{
4995 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
4996 (__v4si) __W,
4997 (__mmask8)
4998 __U);
4999}
5000
Craig Topper74c10e32018-07-09 19:00:16 +00005001static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane6542002016-05-23 08:01:48 +00005002_mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5003{
5004 return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5005 (__v4si)
5006 _mm_setzero_si128 (),
5007 (__mmask8)
5008 __U);
5009}
5010
Craig Topper74c10e32018-07-09 19:00:16 +00005011static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane6542002016-05-23 08:01:48 +00005012_mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5013{
5014 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5015 (__v8si) __W,
5016 (__mmask8)
5017 __U);
5018}
5019
Craig Topper74c10e32018-07-09 19:00:16 +00005020static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermane6542002016-05-23 08:01:48 +00005021_mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5022{
5023 return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5024 (__v8si)
5025 _mm256_setzero_si256 (),
5026 (__mmask8)
5027 __U);
5028}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005029
Craig Topper74c10e32018-07-09 19:00:16 +00005030static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005031_mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5032{
5033 __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5034 (__v4si) __A,
5035 (__mmask8) __U);
5036}
5037
Craig Topper74c10e32018-07-09 19:00:16 +00005038static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005039_mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5040{
5041 __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5042 (__v8si) __A,
5043 (__mmask8) __U);
5044}
5045
Craig Topper74c10e32018-07-09 19:00:16 +00005046static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005047_mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5048{
Igor Bregeraadb8762016-06-08 13:59:20 +00005049 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5050 (__v2di) __A,
5051 (__v2di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005052}
5053
Craig Topper74c10e32018-07-09 19:00:16 +00005054static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005055_mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5056{
Igor Bregeraadb8762016-06-08 13:59:20 +00005057 return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5058 (__v2di) __A,
Craig Topperdff5b312018-05-30 18:02:11 +00005059 (__v2di) _mm_setzero_si128 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005060}
5061
Craig Topper74c10e32018-07-09 19:00:16 +00005062static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005063_mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5064{
Igor Bregeraadb8762016-06-08 13:59:20 +00005065 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5066 (__v4di) __A,
5067 (__v4di) __W);
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005068}
5069
Craig Topper74c10e32018-07-09 19:00:16 +00005070static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005071_mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5072{
Igor Bregeraadb8762016-06-08 13:59:20 +00005073 return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5074 (__v4di) __A,
5075 (__v4di) _mm256_setzero_si256 ());
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005076}
5077
Craig Topper74c10e32018-07-09 19:00:16 +00005078static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005079_mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5080{
5081 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5082 (__v2di) __W,
5083 (__mmask8)
5084 __U);
5085}
5086
Craig Topper74c10e32018-07-09 19:00:16 +00005087static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005088_mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5089{
5090 return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5091 (__v2di)
Craig Topperdff5b312018-05-30 18:02:11 +00005092 _mm_setzero_si128 (),
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005093 (__mmask8)
5094 __U);
5095}
5096
Craig Topper74c10e32018-07-09 19:00:16 +00005097static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005098_mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5099{
5100 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5101 (__v4di) __W,
5102 (__mmask8)
5103 __U);
5104}
5105
Craig Topper74c10e32018-07-09 19:00:16 +00005106static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005107_mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5108{
5109 return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5110 (__v4di)
5111 _mm256_setzero_si256 (),
5112 (__mmask8)
5113 __U);
5114}
5115
Craig Topper74c10e32018-07-09 19:00:16 +00005116static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005117_mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5118{
5119 __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5120 (__v2di) __A,
5121 (__mmask8) __U);
5122}
5123
Craig Topper74c10e32018-07-09 19:00:16 +00005124static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005125_mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5126{
5127 __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5128 (__v4di) __A,
5129 (__mmask8) __U);
5130}
5131
Craig Topper74c10e32018-07-09 19:00:16 +00005132static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005133_mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5134{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005135 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5136 (__v2df)_mm_movedup_pd(__A),
5137 (__v2df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005138}
5139
Craig Topper74c10e32018-07-09 19:00:16 +00005140static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005141_mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5142{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005143 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5144 (__v2df)_mm_movedup_pd(__A),
5145 (__v2df)_mm_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005146}
5147
Craig Topper74c10e32018-07-09 19:00:16 +00005148static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005149_mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5150{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005151 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5152 (__v4df)_mm256_movedup_pd(__A),
5153 (__v4df)__W);
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005154}
5155
Craig Topper74c10e32018-07-09 19:00:16 +00005156static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005157_mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5158{
Simon Pilgrim275d7212016-07-02 17:16:25 +00005159 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5160 (__v4df)_mm256_movedup_pd(__A),
5161 (__v4df)_mm256_setzero_pd());
Michael Zuckerman0d67e4b2016-03-03 13:43:05 +00005162}
Michael Zuckermanffbb67a2016-03-03 09:26:01 +00005163
Craig Topper74c10e32018-07-09 19:00:16 +00005164static __inline__ __m128i __DEFAULT_FN_ATTRS128
Jina Nahias3ad702a2017-09-19 11:00:27 +00005165_mm_mask_set1_epi32(__m128i __O, __mmask8 __M, int __A)
5166{
5167 return (__m128i)__builtin_ia32_selectd_128(__M,
5168 (__v4si) _mm_set1_epi32(__A),
5169 (__v4si)__O);
5170}
Michael Zuckerman912be162016-03-07 08:29:10 +00005171
Craig Topper74c10e32018-07-09 19:00:16 +00005172static __inline__ __m128i __DEFAULT_FN_ATTRS128
Jina Nahias3ad702a2017-09-19 11:00:27 +00005173_mm_maskz_set1_epi32( __mmask8 __M, int __A)
5174{
5175 return (__m128i)__builtin_ia32_selectd_128(__M,
5176 (__v4si) _mm_set1_epi32(__A),
5177 (__v4si)_mm_setzero_si128());
5178}
Michael Zuckerman912be162016-03-07 08:29:10 +00005179
Craig Topper74c10e32018-07-09 19:00:16 +00005180static __inline__ __m256i __DEFAULT_FN_ATTRS256
Jina Nahias3ad702a2017-09-19 11:00:27 +00005181_mm256_mask_set1_epi32(__m256i __O, __mmask8 __M, int __A)
5182{
5183 return (__m256i)__builtin_ia32_selectd_256(__M,
5184 (__v8si) _mm256_set1_epi32(__A),
5185 (__v8si)__O);
5186}
Michael Zuckerman912be162016-03-07 08:29:10 +00005187
Craig Topper74c10e32018-07-09 19:00:16 +00005188static __inline__ __m256i __DEFAULT_FN_ATTRS256
Jina Nahias3ad702a2017-09-19 11:00:27 +00005189_mm256_maskz_set1_epi32( __mmask8 __M, int __A)
5190{
5191 return (__m256i)__builtin_ia32_selectd_256(__M,
5192 (__v8si) _mm256_set1_epi32(__A),
5193 (__v8si)_mm256_setzero_si256());
5194}
Michael Zuckerman912be162016-03-07 08:29:10 +00005195
Michael Zuckerman912be162016-03-07 08:29:10 +00005196
Craig Topper74c10e32018-07-09 19:00:16 +00005197static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman912be162016-03-07 08:29:10 +00005198_mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5199{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005200 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005201 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005202 (__v2di) __O);
Michael Zuckerman912be162016-03-07 08:29:10 +00005203}
5204
Craig Topper74c10e32018-07-09 19:00:16 +00005205static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman912be162016-03-07 08:29:10 +00005206_mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5207{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005208 return (__m128i) __builtin_ia32_selectq_128(__M,
Jina Nahias123c5992017-09-25 13:38:08 +00005209 (__v2di) _mm_set1_epi64x(__A),
Jina Nahias3ad702a2017-09-19 11:00:27 +00005210 (__v2di) _mm_setzero_si128());
Michael Zuckerman912be162016-03-07 08:29:10 +00005211}
5212
Craig Topper74c10e32018-07-09 19:00:16 +00005213static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman912be162016-03-07 08:29:10 +00005214_mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5215{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005216 return (__m256i) __builtin_ia32_selectq_256(__M,
5217 (__v4di) _mm256_set1_epi64x(__A),
5218 (__v4di) __O) ;
Michael Zuckerman912be162016-03-07 08:29:10 +00005219}
5220
Craig Topper74c10e32018-07-09 19:00:16 +00005221static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman912be162016-03-07 08:29:10 +00005222_mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
5223{
Jina Nahias3ad702a2017-09-19 11:00:27 +00005224 return (__m256i) __builtin_ia32_selectq_256(__M,
5225 (__v4di) _mm256_set1_epi64x(__A),
5226 (__v4di) _mm256_setzero_si256());
Michael Zuckerman912be162016-03-07 08:29:10 +00005227}
Michael Zuckermandef78752016-03-28 12:23:09 +00005228
Craig Topperc6338672018-05-31 00:51:20 +00005229#define _mm_fixupimm_pd(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005230 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5231 (__v2df)(__m128d)(B), \
5232 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005233 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005234
Craig Topperc6338672018-05-31 00:51:20 +00005235#define _mm_mask_fixupimm_pd(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005236 (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
5237 (__v2df)(__m128d)(B), \
5238 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005239 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005240
Craig Topperc6338672018-05-31 00:51:20 +00005241#define _mm_maskz_fixupimm_pd(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005242 (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
5243 (__v2df)(__m128d)(B), \
5244 (__v2di)(__m128i)(C), \
Craig Topperc6338672018-05-31 00:51:20 +00005245 (int)(imm), (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005246
Craig Topperc6338672018-05-31 00:51:20 +00005247#define _mm256_fixupimm_pd(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005248 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5249 (__v4df)(__m256d)(B), \
5250 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005251 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005252
Craig Topperc6338672018-05-31 00:51:20 +00005253#define _mm256_mask_fixupimm_pd(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005254 (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
5255 (__v4df)(__m256d)(B), \
5256 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005257 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005258
Craig Topperc6338672018-05-31 00:51:20 +00005259#define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005260 (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
5261 (__v4df)(__m256d)(B), \
5262 (__v4di)(__m256i)(C), \
Craig Topperc6338672018-05-31 00:51:20 +00005263 (int)(imm), (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005264
Craig Topperc6338672018-05-31 00:51:20 +00005265#define _mm_fixupimm_ps(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005266 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5267 (__v4sf)(__m128)(B), \
5268 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005269 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005270
Craig Topperc6338672018-05-31 00:51:20 +00005271#define _mm_mask_fixupimm_ps(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005272 (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
5273 (__v4sf)(__m128)(B), \
5274 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005275 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005276
Craig Topperc6338672018-05-31 00:51:20 +00005277#define _mm_maskz_fixupimm_ps(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005278 (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
5279 (__v4sf)(__m128)(B), \
5280 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005281 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005282
Craig Topperc6338672018-05-31 00:51:20 +00005283#define _mm256_fixupimm_ps(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005284 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5285 (__v8sf)(__m256)(B), \
5286 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005287 (__mmask8)-1)
Michael Zuckermandef78752016-03-28 12:23:09 +00005288
Craig Topperc6338672018-05-31 00:51:20 +00005289#define _mm256_mask_fixupimm_ps(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005290 (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
5291 (__v8sf)(__m256)(B), \
5292 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005293 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005294
Craig Topperc6338672018-05-31 00:51:20 +00005295#define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00005296 (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
5297 (__v8sf)(__m256)(B), \
5298 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00005299 (__mmask8)(U))
Michael Zuckermandef78752016-03-28 12:23:09 +00005300
Craig Topper74c10e32018-07-09 19:00:16 +00005301static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005302_mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
5303{
5304 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5305 (__v2df) __W,
5306 (__mmask8) __U);
5307}
5308
Craig Topper74c10e32018-07-09 19:00:16 +00005309static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005310_mm_maskz_load_pd (__mmask8 __U, void const *__P)
5311{
5312 return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
5313 (__v2df)
5314 _mm_setzero_pd (),
5315 (__mmask8) __U);
5316}
5317
Craig Topper74c10e32018-07-09 19:00:16 +00005318static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005319_mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
5320{
5321 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5322 (__v4df) __W,
5323 (__mmask8) __U);
5324}
5325
Craig Topper74c10e32018-07-09 19:00:16 +00005326static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005327_mm256_maskz_load_pd (__mmask8 __U, void const *__P)
5328{
5329 return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
5330 (__v4df)
5331 _mm256_setzero_pd (),
5332 (__mmask8) __U);
5333}
5334
Craig Topper74c10e32018-07-09 19:00:16 +00005335static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005336_mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
5337{
5338 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5339 (__v4sf) __W,
5340 (__mmask8) __U);
5341}
5342
Craig Topper74c10e32018-07-09 19:00:16 +00005343static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005344_mm_maskz_load_ps (__mmask8 __U, void const *__P)
5345{
5346 return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
5347 (__v4sf)
5348 _mm_setzero_ps (),
5349 (__mmask8) __U);
5350}
5351
Craig Topper74c10e32018-07-09 19:00:16 +00005352static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005353_mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
5354{
5355 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5356 (__v8sf) __W,
5357 (__mmask8) __U);
5358}
5359
Craig Topper74c10e32018-07-09 19:00:16 +00005360static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005361_mm256_maskz_load_ps (__mmask8 __U, void const *__P)
5362{
5363 return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
5364 (__v8sf)
5365 _mm256_setzero_ps (),
5366 (__mmask8) __U);
5367}
5368
Craig Topper74c10e32018-07-09 19:00:16 +00005369static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005370_mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5371{
5372 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5373 (__v2di) __W,
5374 (__mmask8) __U);
5375}
5376
Craig Topper74c10e32018-07-09 19:00:16 +00005377static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005378_mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5379{
5380 return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
5381 (__v2di)
5382 _mm_setzero_si128 (),
5383 (__mmask8) __U);
5384}
5385
Craig Topper74c10e32018-07-09 19:00:16 +00005386static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005387_mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5388{
5389 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5390 (__v4di) __W,
5391 (__mmask8) __U);
5392}
5393
Craig Topper74c10e32018-07-09 19:00:16 +00005394static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005395_mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
5396{
5397 return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
5398 (__v4di)
5399 _mm256_setzero_si256 (),
5400 (__mmask8) __U);
5401}
5402
Craig Topper74c10e32018-07-09 19:00:16 +00005403static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005404_mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5405{
5406 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5407 (__v4si) __W,
5408 (__mmask8) __U);
5409}
5410
Craig Topper74c10e32018-07-09 19:00:16 +00005411static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005412_mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5413{
5414 return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
5415 (__v4si)
5416 _mm_setzero_si128 (),
5417 (__mmask8) __U);
5418}
5419
Craig Topper74c10e32018-07-09 19:00:16 +00005420static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005421_mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5422{
5423 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5424 (__v8si) __W,
5425 (__mmask8) __U);
5426}
5427
Craig Topper74c10e32018-07-09 19:00:16 +00005428static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005429_mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
5430{
5431 return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
5432 (__v8si)
5433 _mm256_setzero_si256 (),
5434 (__mmask8) __U);
5435}
5436
Craig Topper74c10e32018-07-09 19:00:16 +00005437static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005438_mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
5439{
5440 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5441 (__v2df) __W,
5442 (__mmask8) __U);
5443}
5444
Craig Topper74c10e32018-07-09 19:00:16 +00005445static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005446_mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
5447{
5448 return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
5449 (__v2df)
5450 _mm_setzero_pd (),
5451 (__mmask8) __U);
5452}
5453
Craig Topper74c10e32018-07-09 19:00:16 +00005454static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005455_mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
5456{
5457 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5458 (__v4df) __W,
5459 (__mmask8) __U);
5460}
5461
Craig Topper74c10e32018-07-09 19:00:16 +00005462static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005463_mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
5464{
5465 return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
5466 (__v4df)
5467 _mm256_setzero_pd (),
5468 (__mmask8) __U);
5469}
5470
Craig Topper74c10e32018-07-09 19:00:16 +00005471static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005472_mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
5473{
5474 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5475 (__v4sf) __W,
5476 (__mmask8) __U);
5477}
5478
Craig Topper74c10e32018-07-09 19:00:16 +00005479static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermandef78752016-03-28 12:23:09 +00005480_mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
5481{
5482 return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
5483 (__v4sf)
5484 _mm_setzero_ps (),
5485 (__mmask8) __U);
5486}
5487
Craig Topper74c10e32018-07-09 19:00:16 +00005488static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005489_mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
5490{
5491 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5492 (__v8sf) __W,
5493 (__mmask8) __U);
5494}
5495
Craig Topper74c10e32018-07-09 19:00:16 +00005496static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermandef78752016-03-28 12:23:09 +00005497_mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
5498{
5499 return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
5500 (__v8sf)
5501 _mm256_setzero_ps (),
5502 (__mmask8) __U);
5503}
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005504
Craig Topper74c10e32018-07-09 19:00:16 +00005505static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005506_mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
5507{
5508 __builtin_ia32_storeapd128_mask ((__v2df *) __P,
5509 (__v2df) __A,
5510 (__mmask8) __U);
5511}
5512
Craig Topper74c10e32018-07-09 19:00:16 +00005513static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005514_mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
5515{
5516 __builtin_ia32_storeapd256_mask ((__v4df *) __P,
5517 (__v4df) __A,
5518 (__mmask8) __U);
5519}
5520
Craig Topper74c10e32018-07-09 19:00:16 +00005521static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005522_mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
5523{
5524 __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
5525 (__v4sf) __A,
5526 (__mmask8) __U);
5527}
5528
Craig Topper74c10e32018-07-09 19:00:16 +00005529static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005530_mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
5531{
5532 __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
5533 (__v8sf) __A,
5534 (__mmask8) __U);
5535}
5536
Craig Topper74c10e32018-07-09 19:00:16 +00005537static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005538_mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
5539{
5540 __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
5541 (__v2di) __A,
5542 (__mmask8) __U);
5543}
5544
Craig Topper74c10e32018-07-09 19:00:16 +00005545static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005546_mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
5547{
5548 __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
5549 (__v4di) __A,
5550 (__mmask8) __U);
5551}
5552
Craig Topper74c10e32018-07-09 19:00:16 +00005553static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005554_mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
5555{
5556 __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
5557 (__v4si) __A,
5558 (__mmask8) __U);
5559}
5560
Craig Topper74c10e32018-07-09 19:00:16 +00005561static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005562_mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
5563{
5564 __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
5565 (__v8si) __A,
5566 (__mmask8) __U);
5567}
5568
Craig Topper74c10e32018-07-09 19:00:16 +00005569static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005570_mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
5571{
5572 __builtin_ia32_storeupd128_mask ((__v2df *) __P,
5573 (__v2df) __A,
5574 (__mmask8) __U);
5575}
5576
Craig Topper74c10e32018-07-09 19:00:16 +00005577static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005578_mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
5579{
5580 __builtin_ia32_storeupd256_mask ((__v4df *) __P,
5581 (__v4df) __A,
5582 (__mmask8) __U);
5583}
5584
Craig Topper74c10e32018-07-09 19:00:16 +00005585static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005586_mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
5587{
5588 __builtin_ia32_storeups128_mask ((__v4sf *) __P,
5589 (__v4sf) __A,
5590 (__mmask8) __U);
5591}
5592
Craig Topper74c10e32018-07-09 19:00:16 +00005593static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermanfa7ccc52016-04-10 10:51:04 +00005594_mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
5595{
5596 __builtin_ia32_storeups256_mask ((__v8sf *) __P,
5597 (__v8sf) __A,
5598 (__mmask8) __U);
5599}
5600
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005601
Craig Topper74c10e32018-07-09 19:00:16 +00005602static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005603_mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005604{
Craig Topper79f53ca2016-06-23 06:36:42 +00005605 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5606 (__v2df)_mm_unpackhi_pd(__A, __B),
5607 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005608}
5609
Craig Topper74c10e32018-07-09 19:00:16 +00005610static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005611_mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005612{
Craig Topper79f53ca2016-06-23 06:36:42 +00005613 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5614 (__v2df)_mm_unpackhi_pd(__A, __B),
5615 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005616}
5617
Craig Topper74c10e32018-07-09 19:00:16 +00005618static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005619_mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005620{
Craig Topper79f53ca2016-06-23 06:36:42 +00005621 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5622 (__v4df)_mm256_unpackhi_pd(__A, __B),
5623 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005624}
5625
Craig Topper74c10e32018-07-09 19:00:16 +00005626static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005627_mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005628{
Craig Topper79f53ca2016-06-23 06:36:42 +00005629 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5630 (__v4df)_mm256_unpackhi_pd(__A, __B),
5631 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005632}
5633
Craig Topper74c10e32018-07-09 19:00:16 +00005634static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005635_mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005636{
Craig Topper79f53ca2016-06-23 06:36:42 +00005637 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5638 (__v4sf)_mm_unpackhi_ps(__A, __B),
5639 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005640}
5641
Craig Topper74c10e32018-07-09 19:00:16 +00005642static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005643_mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005644{
Craig Topper79f53ca2016-06-23 06:36:42 +00005645 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5646 (__v4sf)_mm_unpackhi_ps(__A, __B),
5647 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005648}
5649
Craig Topper74c10e32018-07-09 19:00:16 +00005650static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005651_mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005652{
Craig Topper79f53ca2016-06-23 06:36:42 +00005653 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5654 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5655 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005656}
5657
Craig Topper74c10e32018-07-09 19:00:16 +00005658static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005659_mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005660{
Craig Topper79f53ca2016-06-23 06:36:42 +00005661 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5662 (__v8sf)_mm256_unpackhi_ps(__A, __B),
5663 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005664}
5665
Craig Topper74c10e32018-07-09 19:00:16 +00005666static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005667_mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005668{
Craig Topper79f53ca2016-06-23 06:36:42 +00005669 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5670 (__v2df)_mm_unpacklo_pd(__A, __B),
5671 (__v2df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005672}
5673
Craig Topper74c10e32018-07-09 19:00:16 +00005674static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005675_mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005676{
Craig Topper79f53ca2016-06-23 06:36:42 +00005677 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5678 (__v2df)_mm_unpacklo_pd(__A, __B),
5679 (__v2df)_mm_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005680}
5681
Craig Topper74c10e32018-07-09 19:00:16 +00005682static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005683_mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005684{
Craig Topper79f53ca2016-06-23 06:36:42 +00005685 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5686 (__v4df)_mm256_unpacklo_pd(__A, __B),
5687 (__v4df)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005688}
5689
Craig Topper74c10e32018-07-09 19:00:16 +00005690static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005691_mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005692{
Craig Topper79f53ca2016-06-23 06:36:42 +00005693 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5694 (__v4df)_mm256_unpacklo_pd(__A, __B),
5695 (__v4df)_mm256_setzero_pd());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005696}
5697
Craig Topper74c10e32018-07-09 19:00:16 +00005698static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005699_mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005700{
Craig Topper79f53ca2016-06-23 06:36:42 +00005701 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5702 (__v4sf)_mm_unpacklo_ps(__A, __B),
5703 (__v4sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005704}
5705
Craig Topper74c10e32018-07-09 19:00:16 +00005706static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00005707_mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005708{
Craig Topper79f53ca2016-06-23 06:36:42 +00005709 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5710 (__v4sf)_mm_unpacklo_ps(__A, __B),
5711 (__v4sf)_mm_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005712}
5713
Craig Topper74c10e32018-07-09 19:00:16 +00005714static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005715_mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005716{
Craig Topper79f53ca2016-06-23 06:36:42 +00005717 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5718 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5719 (__v8sf)__W);
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005720}
5721
Craig Topper74c10e32018-07-09 19:00:16 +00005722static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00005723_mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005724{
Craig Topper79f53ca2016-06-23 06:36:42 +00005725 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5726 (__v8sf)_mm256_unpacklo_ps(__A, __B),
5727 (__v8sf)_mm256_setzero_ps());
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005728}
5729
Craig Topper74c10e32018-07-09 19:00:16 +00005730static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005731_mm_rcp14_pd (__m128d __A)
5732{
5733 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5734 (__v2df)
5735 _mm_setzero_pd (),
5736 (__mmask8) -1);
5737}
5738
Craig Topper74c10e32018-07-09 19:00:16 +00005739static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005740_mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
5741{
5742 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5743 (__v2df) __W,
5744 (__mmask8) __U);
5745}
5746
Craig Topper74c10e32018-07-09 19:00:16 +00005747static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005748_mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
5749{
5750 return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
5751 (__v2df)
5752 _mm_setzero_pd (),
5753 (__mmask8) __U);
5754}
5755
Craig Topper74c10e32018-07-09 19:00:16 +00005756static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005757_mm256_rcp14_pd (__m256d __A)
5758{
5759 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5760 (__v4df)
5761 _mm256_setzero_pd (),
5762 (__mmask8) -1);
5763}
5764
Craig Topper74c10e32018-07-09 19:00:16 +00005765static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005766_mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
5767{
5768 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5769 (__v4df) __W,
5770 (__mmask8) __U);
5771}
5772
Craig Topper74c10e32018-07-09 19:00:16 +00005773static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005774_mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
5775{
5776 return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
5777 (__v4df)
5778 _mm256_setzero_pd (),
5779 (__mmask8) __U);
5780}
5781
Craig Topper74c10e32018-07-09 19:00:16 +00005782static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005783_mm_rcp14_ps (__m128 __A)
5784{
5785 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5786 (__v4sf)
5787 _mm_setzero_ps (),
5788 (__mmask8) -1);
5789}
5790
Craig Topper74c10e32018-07-09 19:00:16 +00005791static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005792_mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
5793{
5794 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5795 (__v4sf) __W,
5796 (__mmask8) __U);
5797}
5798
Craig Topper74c10e32018-07-09 19:00:16 +00005799static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005800_mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
5801{
5802 return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
5803 (__v4sf)
5804 _mm_setzero_ps (),
5805 (__mmask8) __U);
5806}
5807
Craig Topper74c10e32018-07-09 19:00:16 +00005808static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005809_mm256_rcp14_ps (__m256 __A)
5810{
5811 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5812 (__v8sf)
5813 _mm256_setzero_ps (),
5814 (__mmask8) -1);
5815}
5816
Craig Topper74c10e32018-07-09 19:00:16 +00005817static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005818_mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
5819{
5820 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5821 (__v8sf) __W,
5822 (__mmask8) __U);
5823}
5824
Craig Topper74c10e32018-07-09 19:00:16 +00005825static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermancdd54c82016-04-10 12:54:23 +00005826_mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
5827{
5828 return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
5829 (__v8sf)
5830 _mm256_setzero_ps (),
5831 (__mmask8) __U);
5832}
5833
Craig Topperc6338672018-05-31 00:51:20 +00005834#define _mm_mask_permute_pd(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005835 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5836 (__v2df)_mm_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005837 (__v2df)(__m128d)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005838
Craig Topperc6338672018-05-31 00:51:20 +00005839#define _mm_maskz_permute_pd(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005840 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
5841 (__v2df)_mm_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005842 (__v2df)_mm_setzero_pd())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005843
Craig Topperc6338672018-05-31 00:51:20 +00005844#define _mm256_mask_permute_pd(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005845 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5846 (__v4df)_mm256_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005847 (__v4df)(__m256d)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005848
Craig Topperc6338672018-05-31 00:51:20 +00005849#define _mm256_maskz_permute_pd(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005850 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
5851 (__v4df)_mm256_permute_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005852 (__v4df)_mm256_setzero_pd())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005853
Craig Topperc6338672018-05-31 00:51:20 +00005854#define _mm_mask_permute_ps(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005855 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5856 (__v4sf)_mm_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005857 (__v4sf)(__m128)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005858
Craig Topperc6338672018-05-31 00:51:20 +00005859#define _mm_maskz_permute_ps(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005860 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
5861 (__v4sf)_mm_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005862 (__v4sf)_mm_setzero_ps())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005863
Craig Topperc6338672018-05-31 00:51:20 +00005864#define _mm256_mask_permute_ps(W, U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005865 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5866 (__v8sf)_mm256_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005867 (__v8sf)(__m256)(W))
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005868
Craig Topperc6338672018-05-31 00:51:20 +00005869#define _mm256_maskz_permute_ps(U, X, C) \
Craig Topperb3a44772016-07-02 05:36:43 +00005870 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
5871 (__v8sf)_mm256_permute_ps((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00005872 (__v8sf)_mm256_setzero_ps())
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005873
Craig Topper74c10e32018-07-09 19:00:16 +00005874static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper5391c982016-12-10 20:27:39 +00005875_mm_mask_permutevar_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005876{
Craig Topper5391c982016-12-10 20:27:39 +00005877 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5878 (__v2df)_mm_permutevar_pd(__A, __C),
5879 (__v2df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005880}
5881
Craig Topper74c10e32018-07-09 19:00:16 +00005882static __inline__ __m128d __DEFAULT_FN_ATTRS128
Craig Topper5391c982016-12-10 20:27:39 +00005883_mm_maskz_permutevar_pd(__mmask8 __U, __m128d __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005884{
Craig Topper5391c982016-12-10 20:27:39 +00005885 return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5886 (__v2df)_mm_permutevar_pd(__A, __C),
5887 (__v2df)_mm_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005888}
5889
Craig Topper74c10e32018-07-09 19:00:16 +00005890static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper5391c982016-12-10 20:27:39 +00005891_mm256_mask_permutevar_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005892{
Craig Topper5391c982016-12-10 20:27:39 +00005893 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5894 (__v4df)_mm256_permutevar_pd(__A, __C),
5895 (__v4df)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005896}
5897
Craig Topper74c10e32018-07-09 19:00:16 +00005898static __inline__ __m256d __DEFAULT_FN_ATTRS256
Craig Topper5391c982016-12-10 20:27:39 +00005899_mm256_maskz_permutevar_pd(__mmask8 __U, __m256d __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005900{
Craig Topper5391c982016-12-10 20:27:39 +00005901 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5902 (__v4df)_mm256_permutevar_pd(__A, __C),
5903 (__v4df)_mm256_setzero_pd());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005904}
5905
Craig Topper74c10e32018-07-09 19:00:16 +00005906static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper5391c982016-12-10 20:27:39 +00005907_mm_mask_permutevar_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005908{
Craig Topper5391c982016-12-10 20:27:39 +00005909 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5910 (__v4sf)_mm_permutevar_ps(__A, __C),
5911 (__v4sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005912}
5913
Craig Topper74c10e32018-07-09 19:00:16 +00005914static __inline__ __m128 __DEFAULT_FN_ATTRS128
Craig Topper5391c982016-12-10 20:27:39 +00005915_mm_maskz_permutevar_ps(__mmask8 __U, __m128 __A, __m128i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005916{
Craig Topper5391c982016-12-10 20:27:39 +00005917 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
5918 (__v4sf)_mm_permutevar_ps(__A, __C),
5919 (__v4sf)_mm_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005920}
5921
Craig Topper74c10e32018-07-09 19:00:16 +00005922static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper5391c982016-12-10 20:27:39 +00005923_mm256_mask_permutevar_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005924{
Craig Topper5391c982016-12-10 20:27:39 +00005925 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5926 (__v8sf)_mm256_permutevar_ps(__A, __C),
5927 (__v8sf)__W);
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005928}
5929
Craig Topper74c10e32018-07-09 19:00:16 +00005930static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper5391c982016-12-10 20:27:39 +00005931_mm256_maskz_permutevar_ps(__mmask8 __U, __m256 __A, __m256i __C)
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005932{
Craig Topper5391c982016-12-10 20:27:39 +00005933 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
5934 (__v8sf)_mm256_permutevar_ps(__A, __C),
5935 (__v8sf)_mm256_setzero_ps());
Michael Zuckermand8d2f622016-04-11 07:15:34 +00005936}
5937
Craig Topper74c10e32018-07-09 19:00:16 +00005938static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00005939_mm_test_epi32_mask (__m128i __A, __m128i __B)
5940{
Craig Topperdff5b312018-05-30 18:02:11 +00005941 return _mm_cmpneq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005942}
5943
Craig Topper74c10e32018-07-09 19:00:16 +00005944static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00005945_mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
5946{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005947 return _mm_mask_cmpneq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00005948 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005949}
5950
Craig Topper74c10e32018-07-09 19:00:16 +00005951static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00005952_mm256_test_epi32_mask (__m256i __A, __m256i __B)
5953{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005954 return _mm256_cmpneq_epi32_mask (_mm256_and_si256 (__A, __B),
5955 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005956}
5957
Craig Topper74c10e32018-07-09 19:00:16 +00005958static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00005959_mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
5960{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005961 return _mm256_mask_cmpneq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
5962 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005963}
5964
Craig Topper74c10e32018-07-09 19:00:16 +00005965static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00005966_mm_test_epi64_mask (__m128i __A, __m128i __B)
5967{
Craig Topperdff5b312018-05-30 18:02:11 +00005968 return _mm_cmpneq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005969}
5970
Craig Topper74c10e32018-07-09 19:00:16 +00005971static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00005972_mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
5973{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005974 return _mm_mask_cmpneq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00005975 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005976}
5977
Craig Topper74c10e32018-07-09 19:00:16 +00005978static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00005979_mm256_test_epi64_mask (__m256i __A, __m256i __B)
5980{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005981 return _mm256_cmpneq_epi64_mask (_mm256_and_si256 (__A, __B),
5982 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005983}
5984
Craig Topper74c10e32018-07-09 19:00:16 +00005985static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00005986_mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
5987{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00005988 return _mm256_mask_cmpneq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
5989 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00005990}
5991
Craig Topper74c10e32018-07-09 19:00:16 +00005992static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00005993_mm_testn_epi32_mask (__m128i __A, __m128i __B)
5994{
Craig Topperdff5b312018-05-30 18:02:11 +00005995 return _mm_cmpeq_epi32_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00005996}
5997
Craig Topper74c10e32018-07-09 19:00:16 +00005998static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00005999_mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6000{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006001 return _mm_mask_cmpeq_epi32_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006002 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006003}
6004
Craig Topper74c10e32018-07-09 19:00:16 +00006005static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00006006_mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6007{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006008 return _mm256_cmpeq_epi32_mask (_mm256_and_si256 (__A, __B),
6009 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006010}
6011
Craig Topper74c10e32018-07-09 19:00:16 +00006012static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00006013_mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6014{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006015 return _mm256_mask_cmpeq_epi32_mask (__U, _mm256_and_si256 (__A, __B),
6016 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006017}
6018
Craig Topper74c10e32018-07-09 19:00:16 +00006019static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00006020_mm_testn_epi64_mask (__m128i __A, __m128i __B)
6021{
Craig Topperdff5b312018-05-30 18:02:11 +00006022 return _mm_cmpeq_epi64_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006023}
6024
Craig Topper74c10e32018-07-09 19:00:16 +00006025static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
Michael Zuckerman07525092016-04-11 10:22:07 +00006026_mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6027{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006028 return _mm_mask_cmpeq_epi64_mask (__U, _mm_and_si128 (__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006029 _mm_setzero_si128());
Michael Zuckerman07525092016-04-11 10:22:07 +00006030}
6031
Craig Topper74c10e32018-07-09 19:00:16 +00006032static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00006033_mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6034{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006035 return _mm256_cmpeq_epi64_mask (_mm256_and_si256 (__A, __B),
6036 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006037}
6038
Craig Topper74c10e32018-07-09 19:00:16 +00006039static __inline__ __mmask8 __DEFAULT_FN_ATTRS256
Michael Zuckerman07525092016-04-11 10:22:07 +00006040_mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6041{
Uriel Korach5b2b71d2017-11-13 12:50:52 +00006042 return _mm256_mask_cmpeq_epi64_mask (__U, _mm256_and_si256 (__A, __B),
6043 _mm256_setzero_si256());
Michael Zuckerman07525092016-04-11 10:22:07 +00006044}
6045
Craig Topper74c10e32018-07-09 19:00:16 +00006046static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006047_mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006048{
Craig Topper79f53ca2016-06-23 06:36:42 +00006049 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6050 (__v4si)_mm_unpackhi_epi32(__A, __B),
6051 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006052}
6053
Craig Topper74c10e32018-07-09 19:00:16 +00006054static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006055_mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006056{
Craig Topper79f53ca2016-06-23 06:36:42 +00006057 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6058 (__v4si)_mm_unpackhi_epi32(__A, __B),
6059 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006060}
6061
Craig Topper74c10e32018-07-09 19:00:16 +00006062static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006063_mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006064{
Craig Topper79f53ca2016-06-23 06:36:42 +00006065 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6066 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6067 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006068}
6069
Craig Topper74c10e32018-07-09 19:00:16 +00006070static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006071_mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006072{
Craig Topper79f53ca2016-06-23 06:36:42 +00006073 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6074 (__v8si)_mm256_unpackhi_epi32(__A, __B),
6075 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006076}
6077
Craig Topper74c10e32018-07-09 19:00:16 +00006078static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006079_mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006080{
Craig Topper79f53ca2016-06-23 06:36:42 +00006081 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6082 (__v2di)_mm_unpackhi_epi64(__A, __B),
6083 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006084}
6085
Craig Topper74c10e32018-07-09 19:00:16 +00006086static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006087_mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006088{
Craig Topper79f53ca2016-06-23 06:36:42 +00006089 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6090 (__v2di)_mm_unpackhi_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006091 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006092}
6093
Craig Topper74c10e32018-07-09 19:00:16 +00006094static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006095_mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006096{
Craig Topper79f53ca2016-06-23 06:36:42 +00006097 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6098 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6099 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006100}
6101
Craig Topper74c10e32018-07-09 19:00:16 +00006102static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006103_mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006104{
Craig Topper79f53ca2016-06-23 06:36:42 +00006105 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6106 (__v4di)_mm256_unpackhi_epi64(__A, __B),
6107 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006108}
6109
Craig Topper74c10e32018-07-09 19:00:16 +00006110static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006111_mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006112{
Craig Topper79f53ca2016-06-23 06:36:42 +00006113 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6114 (__v4si)_mm_unpacklo_epi32(__A, __B),
6115 (__v4si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006116}
6117
Craig Topper74c10e32018-07-09 19:00:16 +00006118static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006119_mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006120{
Craig Topper79f53ca2016-06-23 06:36:42 +00006121 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6122 (__v4si)_mm_unpacklo_epi32(__A, __B),
6123 (__v4si)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006124}
6125
Craig Topper74c10e32018-07-09 19:00:16 +00006126static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006127_mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006128{
Craig Topper79f53ca2016-06-23 06:36:42 +00006129 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6130 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6131 (__v8si)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006132}
6133
Craig Topper74c10e32018-07-09 19:00:16 +00006134static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006135_mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006136{
Craig Topper79f53ca2016-06-23 06:36:42 +00006137 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6138 (__v8si)_mm256_unpacklo_epi32(__A, __B),
6139 (__v8si)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006140}
6141
Craig Topper74c10e32018-07-09 19:00:16 +00006142static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006143_mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006144{
Craig Topper79f53ca2016-06-23 06:36:42 +00006145 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6146 (__v2di)_mm_unpacklo_epi64(__A, __B),
6147 (__v2di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006148}
6149
Craig Topper74c10e32018-07-09 19:00:16 +00006150static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper79f53ca2016-06-23 06:36:42 +00006151_mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006152{
Craig Topper79f53ca2016-06-23 06:36:42 +00006153 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6154 (__v2di)_mm_unpacklo_epi64(__A, __B),
Craig Topperdff5b312018-05-30 18:02:11 +00006155 (__v2di)_mm_setzero_si128());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006156}
6157
Craig Topper74c10e32018-07-09 19:00:16 +00006158static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006159_mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006160{
Craig Topper79f53ca2016-06-23 06:36:42 +00006161 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6162 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6163 (__v4di)__W);
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006164}
6165
Craig Topper74c10e32018-07-09 19:00:16 +00006166static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper79f53ca2016-06-23 06:36:42 +00006167_mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006168{
Craig Topper79f53ca2016-06-23 06:36:42 +00006169 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6170 (__v4di)_mm256_unpacklo_epi64(__A, __B),
6171 (__v4di)_mm256_setzero_si256());
Michael Zuckerman1af947a2016-04-11 12:32:31 +00006172}
6173
Craig Topper74c10e32018-07-09 19:00:16 +00006174static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00006175_mm_mask_sra_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006176{
Craig Topper66b2fd12016-10-31 04:30:51 +00006177 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6178 (__v4si)_mm_sra_epi32(__A, __B),
6179 (__v4si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006180}
6181
Craig Topper74c10e32018-07-09 19:00:16 +00006182static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00006183_mm_maskz_sra_epi32(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006184{
Craig Topper66b2fd12016-10-31 04:30:51 +00006185 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6186 (__v4si)_mm_sra_epi32(__A, __B),
6187 (__v4si)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006188}
6189
Craig Topper74c10e32018-07-09 19:00:16 +00006190static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00006191_mm256_mask_sra_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006192{
Craig Topper66b2fd12016-10-31 04:30:51 +00006193 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6194 (__v8si)_mm256_sra_epi32(__A, __B),
6195 (__v8si)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006196}
6197
Craig Topper74c10e32018-07-09 19:00:16 +00006198static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00006199_mm256_maskz_sra_epi32(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006200{
Craig Topper66b2fd12016-10-31 04:30:51 +00006201 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6202 (__v8si)_mm256_sra_epi32(__A, __B),
6203 (__v8si)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006204}
6205
Craig Topper74c10e32018-07-09 19:00:16 +00006206static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00006207_mm_mask_srai_epi32(__m128i __W, __mmask8 __U, __m128i __A, int __B)
6208{
6209 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6210 (__v4si)_mm_srai_epi32(__A, __B),
6211 (__v4si)__W);
6212}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006213
Craig Topper74c10e32018-07-09 19:00:16 +00006214static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper66b2fd12016-10-31 04:30:51 +00006215_mm_maskz_srai_epi32(__mmask8 __U, __m128i __A, int __B)
6216{
6217 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6218 (__v4si)_mm_srai_epi32(__A, __B),
6219 (__v4si)_mm_setzero_si128());
6220}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006221
Craig Topper74c10e32018-07-09 19:00:16 +00006222static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00006223_mm256_mask_srai_epi32(__m256i __W, __mmask8 __U, __m256i __A, int __B)
6224{
6225 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6226 (__v8si)_mm256_srai_epi32(__A, __B),
6227 (__v8si)__W);
6228}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006229
Craig Topper74c10e32018-07-09 19:00:16 +00006230static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper66b2fd12016-10-31 04:30:51 +00006231_mm256_maskz_srai_epi32(__mmask8 __U, __m256i __A, int __B)
6232{
6233 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6234 (__v8si)_mm256_srai_epi32(__A, __B),
6235 (__v8si)_mm256_setzero_si256());
6236}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006237
Craig Topper74c10e32018-07-09 19:00:16 +00006238static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper1a441932016-11-12 07:16:59 +00006239_mm_sra_epi64(__m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006240{
Craig Topper1a441932016-11-12 07:16:59 +00006241 return (__m128i)__builtin_ia32_psraq128((__v2di)__A, (__v2di)__B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006242}
6243
Craig Topper74c10e32018-07-09 19:00:16 +00006244static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper1a441932016-11-12 07:16:59 +00006245_mm_mask_sra_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006246{
Craig Topper1a441932016-11-12 07:16:59 +00006247 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6248 (__v2di)_mm_sra_epi64(__A, __B), \
6249 (__v2di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006250}
6251
Craig Topper74c10e32018-07-09 19:00:16 +00006252static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper1a441932016-11-12 07:16:59 +00006253_mm_maskz_sra_epi64(__mmask8 __U, __m128i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006254{
Craig Topper1a441932016-11-12 07:16:59 +00006255 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6256 (__v2di)_mm_sra_epi64(__A, __B), \
Craig Topperdff5b312018-05-30 18:02:11 +00006257 (__v2di)_mm_setzero_si128());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006258}
6259
Craig Topper74c10e32018-07-09 19:00:16 +00006260static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper1a441932016-11-12 07:16:59 +00006261_mm256_sra_epi64(__m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006262{
Craig Topper1a441932016-11-12 07:16:59 +00006263 return (__m256i)__builtin_ia32_psraq256((__v4di) __A, (__v2di) __B);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006264}
6265
Craig Topper74c10e32018-07-09 19:00:16 +00006266static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper1a441932016-11-12 07:16:59 +00006267_mm256_mask_sra_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006268{
Craig Topper1a441932016-11-12 07:16:59 +00006269 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6270 (__v4di)_mm256_sra_epi64(__A, __B), \
6271 (__v4di)__W);
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006272}
6273
Craig Topper74c10e32018-07-09 19:00:16 +00006274static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper1a441932016-11-12 07:16:59 +00006275_mm256_maskz_sra_epi64(__mmask8 __U, __m256i __A, __m128i __B)
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006276{
Craig Topper1a441932016-11-12 07:16:59 +00006277 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6278 (__v4di)_mm256_sra_epi64(__A, __B), \
6279 (__v4di)_mm256_setzero_si256());
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006280}
6281
Craig Topper74c10e32018-07-09 19:00:16 +00006282static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper1a441932016-11-12 07:16:59 +00006283_mm_srai_epi64(__m128i __A, int __imm)
6284{
6285 return (__m128i)__builtin_ia32_psraqi128((__v2di)__A, __imm);
6286}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006287
Craig Topper74c10e32018-07-09 19:00:16 +00006288static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper1a441932016-11-12 07:16:59 +00006289_mm_mask_srai_epi64(__m128i __W, __mmask8 __U, __m128i __A, int __imm)
6290{
6291 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6292 (__v2di)_mm_srai_epi64(__A, __imm), \
6293 (__v2di)__W);
6294}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006295
Craig Topper74c10e32018-07-09 19:00:16 +00006296static __inline__ __m128i __DEFAULT_FN_ATTRS128
Craig Topper1a441932016-11-12 07:16:59 +00006297_mm_maskz_srai_epi64(__mmask8 __U, __m128i __A, int __imm)
6298{
6299 return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U, \
6300 (__v2di)_mm_srai_epi64(__A, __imm), \
Craig Topperdff5b312018-05-30 18:02:11 +00006301 (__v2di)_mm_setzero_si128());
Craig Topper1a441932016-11-12 07:16:59 +00006302}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006303
Craig Topper74c10e32018-07-09 19:00:16 +00006304static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper1a441932016-11-12 07:16:59 +00006305_mm256_srai_epi64(__m256i __A, int __imm)
6306{
6307 return (__m256i)__builtin_ia32_psraqi256((__v4di)__A, __imm);
6308}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006309
Craig Topper74c10e32018-07-09 19:00:16 +00006310static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper1a441932016-11-12 07:16:59 +00006311_mm256_mask_srai_epi64(__m256i __W, __mmask8 __U, __m256i __A, int __imm)
6312{
6313 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6314 (__v4di)_mm256_srai_epi64(__A, __imm), \
6315 (__v4di)__W);
6316}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006317
Craig Topper74c10e32018-07-09 19:00:16 +00006318static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper1a441932016-11-12 07:16:59 +00006319_mm256_maskz_srai_epi64(__mmask8 __U, __m256i __A, int __imm)
6320{
6321 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U, \
6322 (__v4di)_mm256_srai_epi64(__A, __imm), \
6323 (__v4di)_mm256_setzero_si256());
6324}
Michael Zuckerman6b5f4d82016-04-11 15:46:39 +00006325
Craig Topperc6338672018-05-31 00:51:20 +00006326#define _mm_ternarylogic_epi32(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006327 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6328 (__v4si)(__m128i)(B), \
6329 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006330 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006331
Craig Topperc6338672018-05-31 00:51:20 +00006332#define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006333 (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
6334 (__v4si)(__m128i)(B), \
6335 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006336 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006337
Craig Topperc6338672018-05-31 00:51:20 +00006338#define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006339 (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
6340 (__v4si)(__m128i)(B), \
6341 (__v4si)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006342 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006343
Craig Topperc6338672018-05-31 00:51:20 +00006344#define _mm256_ternarylogic_epi32(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006345 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6346 (__v8si)(__m256i)(B), \
6347 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006348 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006349
Craig Topperc6338672018-05-31 00:51:20 +00006350#define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006351 (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
6352 (__v8si)(__m256i)(B), \
6353 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006354 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006355
Craig Topperc6338672018-05-31 00:51:20 +00006356#define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006357 (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
6358 (__v8si)(__m256i)(B), \
6359 (__v8si)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006360 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006361
Craig Topperc6338672018-05-31 00:51:20 +00006362#define _mm_ternarylogic_epi64(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006363 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6364 (__v2di)(__m128i)(B), \
6365 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006366 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006367
Craig Topperc6338672018-05-31 00:51:20 +00006368#define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006369 (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
6370 (__v2di)(__m128i)(B), \
6371 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006372 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006373
Craig Topperc6338672018-05-31 00:51:20 +00006374#define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006375 (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
6376 (__v2di)(__m128i)(B), \
6377 (__v2di)(__m128i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006378 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006379
Craig Topperc6338672018-05-31 00:51:20 +00006380#define _mm256_ternarylogic_epi64(A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006381 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6382 (__v4di)(__m256i)(B), \
6383 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006384 (__mmask8)-1)
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006385
Craig Topperc6338672018-05-31 00:51:20 +00006386#define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006387 (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
6388 (__v4di)(__m256i)(B), \
6389 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006390 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006391
Craig Topperc6338672018-05-31 00:51:20 +00006392#define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) \
Craig Topperd2661882016-05-17 04:41:48 +00006393 (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
6394 (__v4di)(__m256i)(B), \
6395 (__v4di)(__m256i)(C), (int)(imm), \
Craig Topperc6338672018-05-31 00:51:20 +00006396 (__mmask8)(U))
Michael Zuckerman81f468c2016-04-11 17:04:21 +00006397
6398
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006399
Craig Topperc6338672018-05-31 00:51:20 +00006400#define _mm256_shuffle_f32x4(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006401 (__m256)__builtin_ia32_shuf_f32x4_256((__v8sf)(__m256)(A), \
6402 (__v8sf)(__m256)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006403
Craig Topperc6338672018-05-31 00:51:20 +00006404#define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006405 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6406 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006407 (__v8sf)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006408
Craig Topperc6338672018-05-31 00:51:20 +00006409#define _mm256_maskz_shuffle_f32x4(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006410 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6411 (__v8sf)_mm256_shuffle_f32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006412 (__v8sf)_mm256_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006413
Craig Topperc6338672018-05-31 00:51:20 +00006414#define _mm256_shuffle_f64x2(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006415 (__m256d)__builtin_ia32_shuf_f64x2_256((__v4df)(__m256d)(A), \
6416 (__v4df)(__m256d)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006417
Craig Topperc6338672018-05-31 00:51:20 +00006418#define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006419 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6420 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
Craig Topper5cbeeed2018-07-07 17:03:32 +00006421 (__v4df)(__m256d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006422
Craig Topperc6338672018-05-31 00:51:20 +00006423#define _mm256_maskz_shuffle_f64x2(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006424 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6425 (__v4df)_mm256_shuffle_f64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006426 (__v4df)_mm256_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006427
Craig Topperc6338672018-05-31 00:51:20 +00006428#define _mm256_shuffle_i32x4(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006429 (__m256i)__builtin_ia32_shuf_i32x4_256((__v8si)(__m256i)(A), \
6430 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006431
Craig Topperc6338672018-05-31 00:51:20 +00006432#define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006433 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6434 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
Craig Topper5cbeeed2018-07-07 17:03:32 +00006435 (__v8si)(__m256i)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006436
Craig Topperc6338672018-05-31 00:51:20 +00006437#define _mm256_maskz_shuffle_i32x4(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006438 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
6439 (__v8si)_mm256_shuffle_i32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006440 (__v8si)_mm256_setzero_si256())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006441
Craig Topperc6338672018-05-31 00:51:20 +00006442#define _mm256_shuffle_i64x2(A, B, imm) \
Craig Topper93921362018-06-07 23:03:08 +00006443 (__m256i)__builtin_ia32_shuf_i64x2_256((__v4di)(__m256i)(A), \
6444 (__v4di)(__m256i)(B), (int)(imm))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006445
Craig Topperc6338672018-05-31 00:51:20 +00006446#define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006447 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6448 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
Craig Topper5cbeeed2018-07-07 17:03:32 +00006449 (__v4di)(__m256i)(W))
Jina Nahiasdca97912017-11-13 09:15:31 +00006450
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006451
Craig Topperc6338672018-05-31 00:51:20 +00006452#define _mm256_maskz_shuffle_i64x2(U, A, B, imm) \
Jina Nahiasdca97912017-11-13 09:15:31 +00006453 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
6454 (__v4di)_mm256_shuffle_i64x2((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00006455 (__v4di)_mm256_setzero_si256())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006456
Craig Topperc6338672018-05-31 00:51:20 +00006457#define _mm_mask_shuffle_pd(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006458 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6459 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006460 (__v2df)(__m128d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006461
Craig Topperc6338672018-05-31 00:51:20 +00006462#define _mm_maskz_shuffle_pd(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006463 (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6464 (__v2df)_mm_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006465 (__v2df)_mm_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006466
Craig Topperc6338672018-05-31 00:51:20 +00006467#define _mm256_mask_shuffle_pd(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006468 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6469 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006470 (__v4df)(__m256d)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006471
Craig Topperc6338672018-05-31 00:51:20 +00006472#define _mm256_maskz_shuffle_pd(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006473 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6474 (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006475 (__v4df)_mm256_setzero_pd())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006476
Craig Topperc6338672018-05-31 00:51:20 +00006477#define _mm_mask_shuffle_ps(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006478 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6479 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006480 (__v4sf)(__m128)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006481
Craig Topperc6338672018-05-31 00:51:20 +00006482#define _mm_maskz_shuffle_ps(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006483 (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6484 (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006485 (__v4sf)_mm_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006486
Craig Topperc6338672018-05-31 00:51:20 +00006487#define _mm256_mask_shuffle_ps(W, U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006488 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6489 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006490 (__v8sf)(__m256)(W))
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006491
Craig Topperc6338672018-05-31 00:51:20 +00006492#define _mm256_maskz_shuffle_ps(U, A, B, M) \
Simon Pilgrim427154d2016-07-04 21:30:47 +00006493 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6494 (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
Craig Topperc6338672018-05-31 00:51:20 +00006495 (__v8sf)_mm256_setzero_ps())
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006496
Craig Topper74c10e32018-07-09 19:00:16 +00006497static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006498_mm_rsqrt14_pd (__m128d __A)
6499{
6500 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6501 (__v2df)
6502 _mm_setzero_pd (),
6503 (__mmask8) -1);
6504}
6505
Craig Topper74c10e32018-07-09 19:00:16 +00006506static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006507_mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6508{
6509 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6510 (__v2df) __W,
6511 (__mmask8) __U);
6512}
6513
Craig Topper74c10e32018-07-09 19:00:16 +00006514static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006515_mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
6516{
6517 return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
6518 (__v2df)
6519 _mm_setzero_pd (),
6520 (__mmask8) __U);
6521}
6522
Craig Topper74c10e32018-07-09 19:00:16 +00006523static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006524_mm256_rsqrt14_pd (__m256d __A)
6525{
6526 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6527 (__v4df)
6528 _mm256_setzero_pd (),
6529 (__mmask8) -1);
6530}
6531
Craig Topper74c10e32018-07-09 19:00:16 +00006532static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006533_mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6534{
6535 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6536 (__v4df) __W,
6537 (__mmask8) __U);
6538}
6539
Craig Topper74c10e32018-07-09 19:00:16 +00006540static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006541_mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
6542{
6543 return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
6544 (__v4df)
6545 _mm256_setzero_pd (),
6546 (__mmask8) __U);
6547}
6548
Craig Topper74c10e32018-07-09 19:00:16 +00006549static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006550_mm_rsqrt14_ps (__m128 __A)
6551{
6552 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6553 (__v4sf)
6554 _mm_setzero_ps (),
6555 (__mmask8) -1);
6556}
6557
Craig Topper74c10e32018-07-09 19:00:16 +00006558static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006559_mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6560{
6561 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6562 (__v4sf) __W,
6563 (__mmask8) __U);
6564}
6565
Craig Topper74c10e32018-07-09 19:00:16 +00006566static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006567_mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
6568{
6569 return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
6570 (__v4sf)
6571 _mm_setzero_ps (),
6572 (__mmask8) __U);
6573}
6574
Craig Topper74c10e32018-07-09 19:00:16 +00006575static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006576_mm256_rsqrt14_ps (__m256 __A)
6577{
6578 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6579 (__v8sf)
6580 _mm256_setzero_ps (),
6581 (__mmask8) -1);
6582}
6583
Craig Topper74c10e32018-07-09 19:00:16 +00006584static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006585_mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6586{
6587 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6588 (__v8sf) __W,
6589 (__mmask8) __U);
6590}
6591
Craig Topper74c10e32018-07-09 19:00:16 +00006592static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman04fb3bc2016-04-12 07:59:39 +00006593_mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
6594{
6595 return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
6596 (__v8sf)
6597 _mm256_setzero_ps (),
6598 (__mmask8) __U);
6599}
6600
Craig Topper74c10e32018-07-09 19:00:16 +00006601static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00006602_mm256_broadcast_f32x4(__m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006603{
Craig Topper367c86d2017-01-18 02:17:10 +00006604 return (__m256)__builtin_shufflevector((__v4sf)__A, (__v4sf)__A,
6605 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006606}
6607
Craig Topper74c10e32018-07-09 19:00:16 +00006608static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00006609_mm256_mask_broadcast_f32x4(__m256 __O, __mmask8 __M, __m128 __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006610{
Craig Topper367c86d2017-01-18 02:17:10 +00006611 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6612 (__v8sf)_mm256_broadcast_f32x4(__A),
6613 (__v8sf)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006614}
6615
Craig Topper74c10e32018-07-09 19:00:16 +00006616static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006617_mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
6618{
Craig Topper367c86d2017-01-18 02:17:10 +00006619 return (__m256)__builtin_ia32_selectps_256((__mmask8)__M,
6620 (__v8sf)_mm256_broadcast_f32x4(__A),
6621 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006622}
6623
Craig Topper74c10e32018-07-09 19:00:16 +00006624static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00006625_mm256_broadcast_i32x4(__m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006626{
Craig Topper367c86d2017-01-18 02:17:10 +00006627 return (__m256i)__builtin_shufflevector((__v4si)__A, (__v4si)__A,
6628 0, 1, 2, 3, 0, 1, 2, 3);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006629}
6630
Craig Topper74c10e32018-07-09 19:00:16 +00006631static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00006632_mm256_mask_broadcast_i32x4(__m256i __O, __mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006633{
Craig Topper367c86d2017-01-18 02:17:10 +00006634 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6635 (__v8si)_mm256_broadcast_i32x4(__A),
6636 (__v8si)__O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006637}
6638
Craig Topper74c10e32018-07-09 19:00:16 +00006639static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper367c86d2017-01-18 02:17:10 +00006640_mm256_maskz_broadcast_i32x4(__mmask8 __M, __m128i __A)
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006641{
Craig Topper367c86d2017-01-18 02:17:10 +00006642 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
6643 (__v8si)_mm256_broadcast_i32x4(__A),
6644 (__v8si)_mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006645}
6646
Craig Topper74c10e32018-07-09 19:00:16 +00006647static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006648_mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
6649{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006650 return (__m256d)__builtin_ia32_selectpd_256(__M,
6651 (__v4df) _mm256_broadcastsd_pd(__A),
6652 (__v4df) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006653}
6654
Craig Topper74c10e32018-07-09 19:00:16 +00006655static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006656_mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
6657{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006658 return (__m256d)__builtin_ia32_selectpd_256(__M,
6659 (__v4df) _mm256_broadcastsd_pd(__A),
6660 (__v4df) _mm256_setzero_pd());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006661}
6662
Craig Topper74c10e32018-07-09 19:00:16 +00006663static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006664_mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
6665{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006666 return (__m128)__builtin_ia32_selectps_128(__M,
6667 (__v4sf) _mm_broadcastss_ps(__A),
6668 (__v4sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006669}
6670
Craig Topper74c10e32018-07-09 19:00:16 +00006671static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006672_mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6673{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006674 return (__m128)__builtin_ia32_selectps_128(__M,
6675 (__v4sf) _mm_broadcastss_ps(__A),
6676 (__v4sf) _mm_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006677}
6678
Craig Topper74c10e32018-07-09 19:00:16 +00006679static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006680_mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
6681{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006682 return (__m256)__builtin_ia32_selectps_256(__M,
6683 (__v8sf) _mm256_broadcastss_ps(__A),
6684 (__v8sf) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006685}
6686
Craig Topper74c10e32018-07-09 19:00:16 +00006687static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006688_mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
6689{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006690 return (__m256)__builtin_ia32_selectps_256(__M,
6691 (__v8sf) _mm256_broadcastss_ps(__A),
6692 (__v8sf) _mm256_setzero_ps());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006693}
6694
Craig Topper74c10e32018-07-09 19:00:16 +00006695static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006696_mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6697{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006698 return (__m128i)__builtin_ia32_selectd_128(__M,
6699 (__v4si) _mm_broadcastd_epi32(__A),
6700 (__v4si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006701}
6702
Craig Topper74c10e32018-07-09 19:00:16 +00006703static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006704_mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6705{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006706 return (__m128i)__builtin_ia32_selectd_128(__M,
6707 (__v4si) _mm_broadcastd_epi32(__A),
6708 (__v4si) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006709}
6710
Craig Topper74c10e32018-07-09 19:00:16 +00006711static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006712_mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
6713{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006714 return (__m256i)__builtin_ia32_selectd_256(__M,
6715 (__v8si) _mm256_broadcastd_epi32(__A),
6716 (__v8si) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006717}
6718
Craig Topper74c10e32018-07-09 19:00:16 +00006719static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006720_mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
6721{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006722 return (__m256i)__builtin_ia32_selectd_256(__M,
6723 (__v8si) _mm256_broadcastd_epi32(__A),
6724 (__v8si) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006725}
6726
Craig Topper74c10e32018-07-09 19:00:16 +00006727static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006728_mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
6729{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006730 return (__m128i)__builtin_ia32_selectq_128(__M,
6731 (__v2di) _mm_broadcastq_epi64(__A),
6732 (__v2di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006733}
6734
Craig Topper74c10e32018-07-09 19:00:16 +00006735static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006736_mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6737{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006738 return (__m128i)__builtin_ia32_selectq_128(__M,
6739 (__v2di) _mm_broadcastq_epi64(__A),
6740 (__v2di) _mm_setzero_si128());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006741}
6742
Craig Topper74c10e32018-07-09 19:00:16 +00006743static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006744_mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
6745{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006746 return (__m256i)__builtin_ia32_selectq_256(__M,
6747 (__v4di) _mm256_broadcastq_epi64(__A),
6748 (__v4di) __O);
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006749}
6750
Craig Topper74c10e32018-07-09 19:00:16 +00006751static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006752_mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
6753{
Simon Pilgrimf5a88372016-07-05 12:59:33 +00006754 return (__m256i)__builtin_ia32_selectq_256(__M,
6755 (__v4di) _mm256_broadcastq_epi64(__A),
6756 (__v4di) _mm256_setzero_si256());
Michael Zuckermanc2b61282016-04-13 12:58:01 +00006757}
6758
Craig Topper74c10e32018-07-09 19:00:16 +00006759static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006760_mm_cvtsepi32_epi8 (__m128i __A)
6761{
6762 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6763 (__v16qi)_mm_undefined_si128(),
6764 (__mmask8) -1);
6765}
6766
Craig Topper74c10e32018-07-09 19:00:16 +00006767static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006768_mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6769{
6770 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6771 (__v16qi) __O, __M);
6772}
6773
Craig Topper74c10e32018-07-09 19:00:16 +00006774static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006775_mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
6776{
6777 return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
6778 (__v16qi) _mm_setzero_si128 (),
6779 __M);
6780}
6781
Craig Topper74c10e32018-07-09 19:00:16 +00006782static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006783_mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6784{
6785 __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
6786}
6787
Craig Topper74c10e32018-07-09 19:00:16 +00006788static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006789_mm256_cvtsepi32_epi8 (__m256i __A)
6790{
6791 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6792 (__v16qi)_mm_undefined_si128(),
6793 (__mmask8) -1);
6794}
6795
Craig Topper74c10e32018-07-09 19:00:16 +00006796static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006797_mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6798{
6799 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6800 (__v16qi) __O, __M);
6801}
6802
Craig Topper74c10e32018-07-09 19:00:16 +00006803static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006804_mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
6805{
6806 return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
6807 (__v16qi) _mm_setzero_si128 (),
6808 __M);
6809}
6810
Craig Topper74c10e32018-07-09 19:00:16 +00006811static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006812_mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6813{
6814 __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
6815}
6816
Craig Topper74c10e32018-07-09 19:00:16 +00006817static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006818_mm_cvtsepi32_epi16 (__m128i __A)
6819{
6820 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6821 (__v8hi)_mm_setzero_si128 (),
6822 (__mmask8) -1);
6823}
6824
Craig Topper74c10e32018-07-09 19:00:16 +00006825static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006826_mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
6827{
6828 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6829 (__v8hi)__O,
6830 __M);
6831}
6832
Craig Topper74c10e32018-07-09 19:00:16 +00006833static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006834_mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
6835{
6836 return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
6837 (__v8hi) _mm_setzero_si128 (),
6838 __M);
6839}
6840
Craig Topper74c10e32018-07-09 19:00:16 +00006841static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006842_mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
6843{
6844 __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
6845}
6846
Craig Topper74c10e32018-07-09 19:00:16 +00006847static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006848_mm256_cvtsepi32_epi16 (__m256i __A)
6849{
6850 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6851 (__v8hi)_mm_undefined_si128(),
6852 (__mmask8) -1);
6853}
6854
Craig Topper74c10e32018-07-09 19:00:16 +00006855static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006856_mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
6857{
6858 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6859 (__v8hi) __O, __M);
6860}
6861
Craig Topper74c10e32018-07-09 19:00:16 +00006862static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006863_mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
6864{
6865 return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
6866 (__v8hi) _mm_setzero_si128 (),
6867 __M);
6868}
6869
Craig Topper74c10e32018-07-09 19:00:16 +00006870static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006871_mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
6872{
6873 __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
6874}
6875
Craig Topper74c10e32018-07-09 19:00:16 +00006876static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006877_mm_cvtsepi64_epi8 (__m128i __A)
6878{
6879 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6880 (__v16qi)_mm_undefined_si128(),
6881 (__mmask8) -1);
6882}
6883
Craig Topper74c10e32018-07-09 19:00:16 +00006884static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006885_mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
6886{
6887 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6888 (__v16qi) __O, __M);
6889}
6890
Craig Topper74c10e32018-07-09 19:00:16 +00006891static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006892_mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
6893{
6894 return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
6895 (__v16qi) _mm_setzero_si128 (),
6896 __M);
6897}
6898
Craig Topper74c10e32018-07-09 19:00:16 +00006899static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006900_mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
6901{
6902 __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
6903}
6904
Craig Topper74c10e32018-07-09 19:00:16 +00006905static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006906_mm256_cvtsepi64_epi8 (__m256i __A)
6907{
6908 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6909 (__v16qi)_mm_undefined_si128(),
6910 (__mmask8) -1);
6911}
6912
Craig Topper74c10e32018-07-09 19:00:16 +00006913static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006914_mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
6915{
6916 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6917 (__v16qi) __O, __M);
6918}
6919
Craig Topper74c10e32018-07-09 19:00:16 +00006920static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006921_mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
6922{
6923 return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
6924 (__v16qi) _mm_setzero_si128 (),
6925 __M);
6926}
6927
Craig Topper74c10e32018-07-09 19:00:16 +00006928static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006929_mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
6930{
6931 __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
6932}
6933
Craig Topper74c10e32018-07-09 19:00:16 +00006934static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006935_mm_cvtsepi64_epi32 (__m128i __A)
6936{
6937 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6938 (__v4si)_mm_undefined_si128(),
6939 (__mmask8) -1);
6940}
6941
Craig Topper74c10e32018-07-09 19:00:16 +00006942static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006943_mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
6944{
6945 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6946 (__v4si) __O, __M);
6947}
6948
Craig Topper74c10e32018-07-09 19:00:16 +00006949static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006950_mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
6951{
6952 return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
6953 (__v4si) _mm_setzero_si128 (),
6954 __M);
6955}
6956
Craig Topper74c10e32018-07-09 19:00:16 +00006957static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006958_mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
6959{
6960 __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
6961}
6962
Craig Topper74c10e32018-07-09 19:00:16 +00006963static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006964_mm256_cvtsepi64_epi32 (__m256i __A)
6965{
6966 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6967 (__v4si)_mm_undefined_si128(),
6968 (__mmask8) -1);
6969}
6970
Craig Topper74c10e32018-07-09 19:00:16 +00006971static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006972_mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
6973{
6974 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6975 (__v4si)__O,
6976 __M);
6977}
6978
Craig Topper74c10e32018-07-09 19:00:16 +00006979static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006980_mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
6981{
6982 return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
6983 (__v4si) _mm_setzero_si128 (),
6984 __M);
6985}
6986
Craig Topper74c10e32018-07-09 19:00:16 +00006987static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00006988_mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
6989{
6990 __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
6991}
6992
Craig Topper74c10e32018-07-09 19:00:16 +00006993static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00006994_mm_cvtsepi64_epi16 (__m128i __A)
6995{
6996 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
6997 (__v8hi)_mm_undefined_si128(),
6998 (__mmask8) -1);
6999}
7000
Craig Topper74c10e32018-07-09 19:00:16 +00007001static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00007002_mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7003{
7004 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7005 (__v8hi) __O, __M);
7006}
7007
Craig Topper74c10e32018-07-09 19:00:16 +00007008static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00007009_mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7010{
7011 return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7012 (__v8hi) _mm_setzero_si128 (),
7013 __M);
7014}
7015
Craig Topper74c10e32018-07-09 19:00:16 +00007016static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermane1680612016-04-13 15:02:04 +00007017_mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7018{
7019 __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7020}
7021
Craig Topper74c10e32018-07-09 19:00:16 +00007022static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00007023_mm256_cvtsepi64_epi16 (__m256i __A)
7024{
7025 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7026 (__v8hi)_mm_undefined_si128(),
7027 (__mmask8) -1);
7028}
7029
Craig Topper74c10e32018-07-09 19:00:16 +00007030static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00007031_mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7032{
7033 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7034 (__v8hi) __O, __M);
7035}
7036
Craig Topper74c10e32018-07-09 19:00:16 +00007037static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00007038_mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7039{
7040 return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7041 (__v8hi) _mm_setzero_si128 (),
7042 __M);
7043}
7044
Craig Topper74c10e32018-07-09 19:00:16 +00007045static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermane1680612016-04-13 15:02:04 +00007046_mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7047{
7048 __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7049}
7050
Craig Topper74c10e32018-07-09 19:00:16 +00007051static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007052_mm_cvtusepi32_epi8 (__m128i __A)
7053{
7054 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7055 (__v16qi)_mm_undefined_si128(),
7056 (__mmask8) -1);
7057}
7058
Craig Topper74c10e32018-07-09 19:00:16 +00007059static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007060_mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7061{
7062 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7063 (__v16qi) __O,
7064 __M);
7065}
7066
Craig Topper74c10e32018-07-09 19:00:16 +00007067static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007068_mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7069{
7070 return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7071 (__v16qi) _mm_setzero_si128 (),
7072 __M);
7073}
7074
Craig Topper74c10e32018-07-09 19:00:16 +00007075static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007076_mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7077{
7078 __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7079}
7080
Craig Topper74c10e32018-07-09 19:00:16 +00007081static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007082_mm256_cvtusepi32_epi8 (__m256i __A)
7083{
7084 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7085 (__v16qi)_mm_undefined_si128(),
7086 (__mmask8) -1);
7087}
7088
Craig Topper74c10e32018-07-09 19:00:16 +00007089static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007090_mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7091{
7092 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7093 (__v16qi) __O,
7094 __M);
7095}
7096
Craig Topper74c10e32018-07-09 19:00:16 +00007097static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007098_mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7099{
7100 return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7101 (__v16qi) _mm_setzero_si128 (),
7102 __M);
7103}
7104
Craig Topper74c10e32018-07-09 19:00:16 +00007105static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007106_mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7107{
7108 __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7109}
7110
Craig Topper74c10e32018-07-09 19:00:16 +00007111static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007112_mm_cvtusepi32_epi16 (__m128i __A)
7113{
7114 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7115 (__v8hi)_mm_undefined_si128(),
7116 (__mmask8) -1);
7117}
7118
Craig Topper74c10e32018-07-09 19:00:16 +00007119static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007120_mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7121{
7122 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7123 (__v8hi) __O, __M);
7124}
7125
Craig Topper74c10e32018-07-09 19:00:16 +00007126static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007127_mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7128{
7129 return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7130 (__v8hi) _mm_setzero_si128 (),
7131 __M);
7132}
7133
Craig Topper74c10e32018-07-09 19:00:16 +00007134static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007135_mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7136{
7137 __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7138}
7139
Craig Topper74c10e32018-07-09 19:00:16 +00007140static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007141_mm256_cvtusepi32_epi16 (__m256i __A)
7142{
7143 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7144 (__v8hi) _mm_undefined_si128(),
7145 (__mmask8) -1);
7146}
7147
Craig Topper74c10e32018-07-09 19:00:16 +00007148static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007149_mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7150{
7151 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7152 (__v8hi) __O, __M);
7153}
7154
Craig Topper74c10e32018-07-09 19:00:16 +00007155static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007156_mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7157{
7158 return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7159 (__v8hi) _mm_setzero_si128 (),
7160 __M);
7161}
7162
Craig Topper74c10e32018-07-09 19:00:16 +00007163static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007164_mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7165{
7166 __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7167}
7168
Craig Topper74c10e32018-07-09 19:00:16 +00007169static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007170_mm_cvtusepi64_epi8 (__m128i __A)
7171{
7172 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7173 (__v16qi)_mm_undefined_si128(),
7174 (__mmask8) -1);
7175}
7176
Craig Topper74c10e32018-07-09 19:00:16 +00007177static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007178_mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7179{
7180 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7181 (__v16qi) __O,
7182 __M);
7183}
7184
Craig Topper74c10e32018-07-09 19:00:16 +00007185static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007186_mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
7187{
7188 return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
7189 (__v16qi) _mm_setzero_si128 (),
7190 __M);
7191}
7192
Craig Topper74c10e32018-07-09 19:00:16 +00007193static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007194_mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7195{
7196 __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7197}
7198
Craig Topper74c10e32018-07-09 19:00:16 +00007199static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007200_mm256_cvtusepi64_epi8 (__m256i __A)
7201{
7202 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7203 (__v16qi)_mm_undefined_si128(),
7204 (__mmask8) -1);
7205}
7206
Craig Topper74c10e32018-07-09 19:00:16 +00007207static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007208_mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7209{
7210 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7211 (__v16qi) __O,
7212 __M);
7213}
7214
Craig Topper74c10e32018-07-09 19:00:16 +00007215static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007216_mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
7217{
7218 return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
7219 (__v16qi) _mm_setzero_si128 (),
7220 __M);
7221}
7222
Craig Topper74c10e32018-07-09 19:00:16 +00007223static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007224_mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7225{
7226 __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7227}
7228
Craig Topper74c10e32018-07-09 19:00:16 +00007229static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007230_mm_cvtusepi64_epi32 (__m128i __A)
7231{
7232 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7233 (__v4si)_mm_undefined_si128(),
7234 (__mmask8) -1);
7235}
7236
Craig Topper74c10e32018-07-09 19:00:16 +00007237static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007238_mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7239{
7240 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7241 (__v4si) __O, __M);
7242}
7243
Craig Topper74c10e32018-07-09 19:00:16 +00007244static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007245_mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
7246{
7247 return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
7248 (__v4si) _mm_setzero_si128 (),
7249 __M);
7250}
7251
Craig Topper74c10e32018-07-09 19:00:16 +00007252static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007253_mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7254{
7255 __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7256}
7257
Craig Topper74c10e32018-07-09 19:00:16 +00007258static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007259_mm256_cvtusepi64_epi32 (__m256i __A)
7260{
7261 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7262 (__v4si)_mm_undefined_si128(),
7263 (__mmask8) -1);
7264}
7265
Craig Topper74c10e32018-07-09 19:00:16 +00007266static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007267_mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7268{
7269 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7270 (__v4si) __O, __M);
7271}
7272
Craig Topper74c10e32018-07-09 19:00:16 +00007273static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007274_mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
7275{
7276 return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
7277 (__v4si) _mm_setzero_si128 (),
7278 __M);
7279}
7280
Craig Topper74c10e32018-07-09 19:00:16 +00007281static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007282_mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7283{
7284 __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7285}
7286
Craig Topper74c10e32018-07-09 19:00:16 +00007287static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007288_mm_cvtusepi64_epi16 (__m128i __A)
7289{
7290 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7291 (__v8hi)_mm_undefined_si128(),
7292 (__mmask8) -1);
7293}
7294
Craig Topper74c10e32018-07-09 19:00:16 +00007295static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007296_mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7297{
7298 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7299 (__v8hi) __O, __M);
7300}
7301
Craig Topper74c10e32018-07-09 19:00:16 +00007302static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007303_mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
7304{
7305 return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
7306 (__v8hi) _mm_setzero_si128 (),
7307 __M);
7308}
7309
Craig Topper74c10e32018-07-09 19:00:16 +00007310static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckermand8715312016-04-14 06:48:09 +00007311_mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7312{
7313 __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7314}
7315
Craig Topper74c10e32018-07-09 19:00:16 +00007316static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007317_mm256_cvtusepi64_epi16 (__m256i __A)
7318{
7319 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7320 (__v8hi)_mm_undefined_si128(),
7321 (__mmask8) -1);
7322}
7323
Craig Topper74c10e32018-07-09 19:00:16 +00007324static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007325_mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7326{
7327 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7328 (__v8hi) __O, __M);
7329}
7330
Craig Topper74c10e32018-07-09 19:00:16 +00007331static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007332_mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
7333{
7334 return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
7335 (__v8hi) _mm_setzero_si128 (),
7336 __M);
7337}
7338
Craig Topper74c10e32018-07-09 19:00:16 +00007339static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckermand8715312016-04-14 06:48:09 +00007340_mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7341{
Craig Topper819f2a22018-05-30 17:23:45 +00007342 __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
Michael Zuckermand8715312016-04-14 06:48:09 +00007343}
7344
Craig Topper74c10e32018-07-09 19:00:16 +00007345static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007346_mm_cvtepi32_epi8 (__m128i __A)
7347{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007348 return (__m128i)__builtin_shufflevector(
7349 __builtin_convertvector((__v4si)__A, __v4qi), (__v4qi){0, 0, 0, 0}, 0, 1,
7350 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007351}
7352
Craig Topper74c10e32018-07-09 19:00:16 +00007353static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007354_mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7355{
7356 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7357 (__v16qi) __O, __M);
7358}
7359
Craig Topper74c10e32018-07-09 19:00:16 +00007360static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007361_mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
7362{
7363 return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
7364 (__v16qi)
7365 _mm_setzero_si128 (),
7366 __M);
7367}
7368
Craig Topper74c10e32018-07-09 19:00:16 +00007369static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007370_mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7371{
7372 __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7373}
7374
Craig Topper74c10e32018-07-09 19:00:16 +00007375static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007376_mm256_cvtepi32_epi8 (__m256i __A)
7377{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007378 return (__m128i)__builtin_shufflevector(
7379 __builtin_convertvector((__v8si)__A, __v8qi),
7380 (__v8qi){0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
7381 12, 13, 14, 15);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007382}
7383
Craig Topper74c10e32018-07-09 19:00:16 +00007384static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007385_mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7386{
7387 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7388 (__v16qi) __O, __M);
7389}
7390
Craig Topper74c10e32018-07-09 19:00:16 +00007391static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007392_mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
7393{
7394 return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
7395 (__v16qi) _mm_setzero_si128 (),
7396 __M);
7397}
7398
Craig Topper74c10e32018-07-09 19:00:16 +00007399static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007400_mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7401{
7402 __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7403}
7404
Craig Topper74c10e32018-07-09 19:00:16 +00007405static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007406_mm_cvtepi32_epi16 (__m128i __A)
7407{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007408 return (__m128i)__builtin_shufflevector(
7409 __builtin_convertvector((__v4si)__A, __v4hi), (__v4hi){0, 0, 0, 0}, 0, 1,
7410 2, 3, 4, 5, 6, 7);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007411}
7412
Craig Topper74c10e32018-07-09 19:00:16 +00007413static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007414_mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7415{
7416 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7417 (__v8hi) __O, __M);
7418}
7419
Craig Topper74c10e32018-07-09 19:00:16 +00007420static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007421_mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
7422{
7423 return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
7424 (__v8hi) _mm_setzero_si128 (),
7425 __M);
7426}
7427
Craig Topper74c10e32018-07-09 19:00:16 +00007428static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007429_mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7430{
7431 __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7432}
7433
Craig Topper74c10e32018-07-09 19:00:16 +00007434static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007435_mm256_cvtepi32_epi16 (__m256i __A)
7436{
Craig Topper25de41c2018-05-14 17:50:40 +00007437 return (__m128i)__builtin_convertvector((__v8si)__A, __v8hi);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007438}
7439
Craig Topper74c10e32018-07-09 19:00:16 +00007440static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007441_mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7442{
Craig Topper9d146bb2018-05-15 03:17:52 +00007443 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7444 (__v8hi) __O, __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007445}
7446
Craig Topper74c10e32018-07-09 19:00:16 +00007447static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007448_mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
7449{
Craig Topper9d146bb2018-05-15 03:17:52 +00007450 return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
7451 (__v8hi) _mm_setzero_si128 (),
7452 __M);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007453}
7454
Craig Topper74c10e32018-07-09 19:00:16 +00007455static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007456_mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7457{
7458 __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7459}
7460
Craig Topper74c10e32018-07-09 19:00:16 +00007461static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007462_mm_cvtepi64_epi8 (__m128i __A)
7463{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007464 return (__m128i)__builtin_shufflevector(
7465 __builtin_convertvector((__v2di)__A, __v2qi), (__v2qi){0, 0}, 0, 1, 2, 3,
7466 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007467}
7468
Craig Topper74c10e32018-07-09 19:00:16 +00007469static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007470_mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7471{
7472 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7473 (__v16qi) __O, __M);
7474}
7475
Craig Topper74c10e32018-07-09 19:00:16 +00007476static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007477_mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
7478{
7479 return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
7480 (__v16qi) _mm_setzero_si128 (),
7481 __M);
7482}
7483
Craig Topper74c10e32018-07-09 19:00:16 +00007484static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007485_mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7486{
7487 __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7488}
7489
Craig Topper74c10e32018-07-09 19:00:16 +00007490static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007491_mm256_cvtepi64_epi8 (__m256i __A)
7492{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007493 return (__m128i)__builtin_shufflevector(
7494 __builtin_convertvector((__v4di)__A, __v4qi), (__v4qi){0, 0, 0, 0}, 0, 1,
7495 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007496}
7497
Craig Topper74c10e32018-07-09 19:00:16 +00007498static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007499_mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7500{
7501 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7502 (__v16qi) __O, __M);
7503}
7504
Craig Topper74c10e32018-07-09 19:00:16 +00007505static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007506_mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
7507{
7508 return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
7509 (__v16qi) _mm_setzero_si128 (),
7510 __M);
7511}
7512
Craig Topper74c10e32018-07-09 19:00:16 +00007513static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007514_mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7515{
7516 __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7517}
7518
Craig Topper74c10e32018-07-09 19:00:16 +00007519static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007520_mm_cvtepi64_epi32 (__m128i __A)
7521{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007522 return (__m128i)__builtin_shufflevector(
7523 __builtin_convertvector((__v2di)__A, __v2si), (__v2si){0, 0}, 0, 1, 2, 3);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007524}
7525
Craig Topper74c10e32018-07-09 19:00:16 +00007526static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007527_mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7528{
7529 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7530 (__v4si) __O, __M);
7531}
7532
Craig Topper74c10e32018-07-09 19:00:16 +00007533static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007534_mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
7535{
7536 return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
7537 (__v4si) _mm_setzero_si128 (),
7538 __M);
7539}
7540
Craig Topper74c10e32018-07-09 19:00:16 +00007541static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007542_mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7543{
7544 __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7545}
7546
Craig Topper74c10e32018-07-09 19:00:16 +00007547static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007548_mm256_cvtepi64_epi32 (__m256i __A)
7549{
Craig Topper25de41c2018-05-14 17:50:40 +00007550 return (__m128i)__builtin_convertvector((__v4di)__A, __v4si);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007551}
7552
Craig Topper74c10e32018-07-09 19:00:16 +00007553static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007554_mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7555{
Craig Topper25de41c2018-05-14 17:50:40 +00007556 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7557 (__v4si)_mm256_cvtepi64_epi32(__A),
7558 (__v4si)__O);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007559}
7560
Craig Topper74c10e32018-07-09 19:00:16 +00007561static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007562_mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
7563{
Craig Topper25de41c2018-05-14 17:50:40 +00007564 return (__m128i)__builtin_ia32_selectd_128((__mmask8)__M,
7565 (__v4si)_mm256_cvtepi64_epi32(__A),
7566 (__v4si)_mm_setzero_si128());
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007567}
7568
Craig Topper74c10e32018-07-09 19:00:16 +00007569static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007570_mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7571{
7572 __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7573}
7574
Craig Topper74c10e32018-07-09 19:00:16 +00007575static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007576_mm_cvtepi64_epi16 (__m128i __A)
7577{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007578 return (__m128i)__builtin_shufflevector(
7579 __builtin_convertvector((__v2di)__A, __v2hi), (__v2hi){0, 0}, 0, 1, 2, 3,
7580 3, 3, 3, 3);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007581}
7582
Craig Topper74c10e32018-07-09 19:00:16 +00007583static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007584_mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7585{
7586 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7587 (__v8hi)__O,
7588 __M);
7589}
7590
Craig Topper74c10e32018-07-09 19:00:16 +00007591static __inline__ __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007592_mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
7593{
7594 return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
7595 (__v8hi) _mm_setzero_si128 (),
7596 __M);
7597}
7598
Craig Topper74c10e32018-07-09 19:00:16 +00007599static __inline__ void __DEFAULT_FN_ATTRS128
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007600_mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7601{
7602 __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7603}
7604
Craig Topper74c10e32018-07-09 19:00:16 +00007605static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007606_mm256_cvtepi64_epi16 (__m256i __A)
7607{
Mikhail Dvoretckiid1bf9ef2018-07-10 08:22:44 +00007608 return (__m128i)__builtin_shufflevector(
7609 __builtin_convertvector((__v4di)__A, __v4hi), (__v4hi){0, 0, 0, 0}, 0, 1,
7610 2, 3, 4, 5, 6, 7);
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007611}
7612
Craig Topper74c10e32018-07-09 19:00:16 +00007613static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007614_mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7615{
7616 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7617 (__v8hi) __O, __M);
7618}
7619
Craig Topper74c10e32018-07-09 19:00:16 +00007620static __inline__ __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007621_mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
7622{
7623 return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
7624 (__v8hi) _mm_setzero_si128 (),
7625 __M);
7626}
7627
Craig Topper74c10e32018-07-09 19:00:16 +00007628static __inline__ void __DEFAULT_FN_ATTRS256
Michael Zuckerman0a3508a2016-04-14 07:56:51 +00007629_mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7630{
7631 __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7632}
7633
Craig Topperc6338672018-05-31 00:51:20 +00007634#define _mm256_extractf32x4_ps(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007635 (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
7636 (int)(imm), \
7637 (__v4sf)_mm_undefined_ps(), \
7638 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007639
Craig Topperc6338672018-05-31 00:51:20 +00007640#define _mm256_mask_extractf32x4_ps(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007641 (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
7642 (int)(imm), \
7643 (__v4sf)(__m128)(W), \
7644 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007645
Craig Topperc6338672018-05-31 00:51:20 +00007646#define _mm256_maskz_extractf32x4_ps(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007647 (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
7648 (int)(imm), \
7649 (__v4sf)_mm_setzero_ps(), \
7650 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007651
Craig Topperc6338672018-05-31 00:51:20 +00007652#define _mm256_extracti32x4_epi32(A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007653 (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
7654 (int)(imm), \
7655 (__v4si)_mm_undefined_si128(), \
7656 (__mmask8)-1)
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007657
Craig Topperc6338672018-05-31 00:51:20 +00007658#define _mm256_mask_extracti32x4_epi32(W, U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007659 (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
7660 (int)(imm), \
7661 (__v4si)(__m128i)(W), \
7662 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007663
Craig Topperc6338672018-05-31 00:51:20 +00007664#define _mm256_maskz_extracti32x4_epi32(U, A, imm) \
Craig Topper5f50f3382018-06-08 21:50:07 +00007665 (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
7666 (int)(imm), \
7667 (__v4si)_mm_setzero_si128(), \
7668 (__mmask8)(U))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007669
Craig Topperc6338672018-05-31 00:51:20 +00007670#define _mm256_insertf32x4(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007671 (__m256)__builtin_ia32_insertf32x4_256((__v8sf)(__m256)(A), \
7672 (__v4sf)(__m128)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007673
Craig Topperc6338672018-05-31 00:51:20 +00007674#define _mm256_mask_insertf32x4(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007675 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7676 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007677 (__v8sf)(__m256)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007678
Craig Topperc6338672018-05-31 00:51:20 +00007679#define _mm256_maskz_insertf32x4(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007680 (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7681 (__v8sf)_mm256_insertf32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007682 (__v8sf)_mm256_setzero_ps())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007683
Craig Topperc6338672018-05-31 00:51:20 +00007684#define _mm256_inserti32x4(A, B, imm) \
Craig Topper3428bee2018-06-08 03:24:47 +00007685 (__m256i)__builtin_ia32_inserti32x4_256((__v8si)(__m256i)(A), \
7686 (__v4si)(__m128i)(B), (int)(imm))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007687
Craig Topperc6338672018-05-31 00:51:20 +00007688#define _mm256_mask_inserti32x4(W, U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007689 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7690 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
Craig Toppercbf39292018-05-31 01:24:40 +00007691 (__v8si)(__m256i)(W))
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007692
Craig Topperc6338672018-05-31 00:51:20 +00007693#define _mm256_maskz_inserti32x4(U, A, B, imm) \
Craig Topper08bf53f2016-11-01 05:47:56 +00007694 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7695 (__v8si)_mm256_inserti32x4((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007696 (__v8si)_mm256_setzero_si256())
Michael Zuckermanef2979a2016-04-19 15:18:23 +00007697
Craig Topperc6338672018-05-31 00:51:20 +00007698#define _mm_getmant_pd(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007699 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7700 (int)(((C)<<2) | (B)), \
7701 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007702 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007703
Craig Topperc6338672018-05-31 00:51:20 +00007704#define _mm_mask_getmant_pd(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007705 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7706 (int)(((C)<<2) | (B)), \
7707 (__v2df)(__m128d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007708 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007709
Craig Topperc6338672018-05-31 00:51:20 +00007710#define _mm_maskz_getmant_pd(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007711 (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
7712 (int)(((C)<<2) | (B)), \
7713 (__v2df)_mm_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007714 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007715
Craig Topperc6338672018-05-31 00:51:20 +00007716#define _mm256_getmant_pd(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007717 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7718 (int)(((C)<<2) | (B)), \
7719 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007720 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007721
Craig Topperc6338672018-05-31 00:51:20 +00007722#define _mm256_mask_getmant_pd(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007723 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7724 (int)(((C)<<2) | (B)), \
7725 (__v4df)(__m256d)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007726 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007727
Craig Topperc6338672018-05-31 00:51:20 +00007728#define _mm256_maskz_getmant_pd(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007729 (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
7730 (int)(((C)<<2) | (B)), \
7731 (__v4df)_mm256_setzero_pd(), \
Craig Topperc6338672018-05-31 00:51:20 +00007732 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007733
Craig Topperc6338672018-05-31 00:51:20 +00007734#define _mm_getmant_ps(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007735 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7736 (int)(((C)<<2) | (B)), \
7737 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007738 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007739
Craig Topperc6338672018-05-31 00:51:20 +00007740#define _mm_mask_getmant_ps(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007741 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7742 (int)(((C)<<2) | (B)), \
7743 (__v4sf)(__m128)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007744 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007745
Craig Topperc6338672018-05-31 00:51:20 +00007746#define _mm_maskz_getmant_ps(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007747 (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
7748 (int)(((C)<<2) | (B)), \
7749 (__v4sf)_mm_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007750 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007751
Craig Topperc6338672018-05-31 00:51:20 +00007752#define _mm256_getmant_ps(A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007753 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7754 (int)(((C)<<2) | (B)), \
7755 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007756 (__mmask8)-1)
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007757
Craig Topperc6338672018-05-31 00:51:20 +00007758#define _mm256_mask_getmant_ps(W, U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007759 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7760 (int)(((C)<<2) | (B)), \
7761 (__v8sf)(__m256)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00007762 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007763
Craig Topperc6338672018-05-31 00:51:20 +00007764#define _mm256_maskz_getmant_ps(U, A, B, C) \
Craig Topperd2661882016-05-17 04:41:48 +00007765 (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
7766 (int)(((C)<<2) | (B)), \
7767 (__v8sf)_mm256_setzero_ps(), \
Craig Topperc6338672018-05-31 00:51:20 +00007768 (__mmask8)(U))
Michael Zuckerman6fa512c2016-04-19 17:10:29 +00007769
Craig Topperc6338672018-05-31 00:51:20 +00007770#define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007771 (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
7772 (double const *)(addr), \
7773 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007774 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007775
Craig Topperc6338672018-05-31 00:51:20 +00007776#define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007777 (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
7778 (long long const *)(addr), \
7779 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007780 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007781
Craig Topperc6338672018-05-31 00:51:20 +00007782#define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007783 (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
7784 (double const *)(addr), \
7785 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007786 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007787
Craig Topperc6338672018-05-31 00:51:20 +00007788#define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007789 (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
7790 (long long const *)(addr), \
7791 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007792 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007793
Craig Topperc6338672018-05-31 00:51:20 +00007794#define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007795 (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
7796 (float const *)(addr), \
7797 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007798 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007799
Craig Topperc6338672018-05-31 00:51:20 +00007800#define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007801 (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
7802 (int const *)(addr), \
7803 (__v2di)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007804 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007805
Craig Topperc6338672018-05-31 00:51:20 +00007806#define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007807 (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
7808 (float const *)(addr), \
7809 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007810 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007811
Craig Topperc6338672018-05-31 00:51:20 +00007812#define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007813 (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
7814 (int const *)(addr), \
7815 (__v4di)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007816 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007817
Craig Topperc6338672018-05-31 00:51:20 +00007818#define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007819 (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
7820 (double const *)(addr), \
7821 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007822 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007823
Craig Topperc6338672018-05-31 00:51:20 +00007824#define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007825 (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
7826 (long long const *)(addr), \
7827 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007828 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007829
Craig Topperc6338672018-05-31 00:51:20 +00007830#define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007831 (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
7832 (double const *)(addr), \
7833 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007834 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007835
Craig Topperc6338672018-05-31 00:51:20 +00007836#define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007837 (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
7838 (long long const *)(addr), \
7839 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007840 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007841
Craig Topperc6338672018-05-31 00:51:20 +00007842#define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007843 (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
7844 (float const *)(addr), \
7845 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007846 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007847
Craig Topperc6338672018-05-31 00:51:20 +00007848#define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007849 (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
7850 (int const *)(addr), \
7851 (__v4si)(__m128i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007852 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007853
Craig Topperc6338672018-05-31 00:51:20 +00007854#define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007855 (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
7856 (float const *)(addr), \
7857 (__v8si)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007858 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007859
Craig Topperc6338672018-05-31 00:51:20 +00007860#define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) \
Craig Topperd2661882016-05-17 04:41:48 +00007861 (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
7862 (int const *)(addr), \
7863 (__v8si)(__m256i)(index), \
Craig Topperc6338672018-05-31 00:51:20 +00007864 (__mmask8)(mask), (int)(scale))
Michael Zuckerman4fa96af2016-04-21 12:47:27 +00007865
Craig Topperc6338672018-05-31 00:51:20 +00007866#define _mm256_permutex_pd(X, C) \
Craig Topper03f4f042018-06-08 18:00:25 +00007867 (__m256d)__builtin_ia32_permdf256((__v4df)(__m256d)(X), (int)(C))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007868
Craig Topperc6338672018-05-31 00:51:20 +00007869#define _mm256_mask_permutex_pd(W, U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007870 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7871 (__v4df)_mm256_permutex_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007872 (__v4df)(__m256d)(W))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007873
Craig Topperc6338672018-05-31 00:51:20 +00007874#define _mm256_maskz_permutex_pd(U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007875 (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7876 (__v4df)_mm256_permutex_pd((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007877 (__v4df)_mm256_setzero_pd())
Michael Zuckerman8938e832016-04-25 05:32:35 +00007878
Craig Topperc6338672018-05-31 00:51:20 +00007879#define _mm256_permutex_epi64(X, C) \
Craig Topper5cbeeed2018-07-07 17:03:32 +00007880 (__m256i)__builtin_ia32_permdi256((__v4di)(__m256i)(X), (int)(C))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007881
Craig Topperc6338672018-05-31 00:51:20 +00007882#define _mm256_mask_permutex_epi64(W, U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007883 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7884 (__v4di)_mm256_permutex_epi64((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007885 (__v4di)(__m256i)(W))
Michael Zuckerman8938e832016-04-25 05:32:35 +00007886
Craig Topperc6338672018-05-31 00:51:20 +00007887#define _mm256_maskz_permutex_epi64(U, X, C) \
Simon Pilgrim30db8112016-07-04 13:34:44 +00007888 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
7889 (__v4di)_mm256_permutex_epi64((X), (C)), \
Craig Topperc6338672018-05-31 00:51:20 +00007890 (__v4di)_mm256_setzero_si256())
Michael Zuckerman8938e832016-04-25 05:32:35 +00007891
Craig Topper74c10e32018-07-09 19:00:16 +00007892static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman8938e832016-04-25 05:32:35 +00007893_mm256_permutexvar_pd (__m256i __X, __m256d __Y)
7894{
Craig Topper55b40672018-05-20 23:34:10 +00007895 return (__m256d)__builtin_ia32_permvardf256((__v4df)__Y, (__v4di)__X);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007896}
7897
Craig Topper74c10e32018-07-09 19:00:16 +00007898static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman8938e832016-04-25 05:32:35 +00007899_mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
7900 __m256d __Y)
7901{
Craig Topper55b40672018-05-20 23:34:10 +00007902 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7903 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7904 (__v4df)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007905}
7906
Craig Topper74c10e32018-07-09 19:00:16 +00007907static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman8938e832016-04-25 05:32:35 +00007908_mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
7909{
Craig Topper55b40672018-05-20 23:34:10 +00007910 return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
7911 (__v4df)_mm256_permutexvar_pd(__X, __Y),
7912 (__v4df)_mm256_setzero_pd());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007913}
7914
Craig Topper74c10e32018-07-09 19:00:16 +00007915static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckermana72b49ef2016-07-05 11:30:31 +00007916_mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007917{
Craig Topper55b40672018-05-20 23:34:10 +00007918 return (__m256i)__builtin_ia32_permvardi256((__v4di) __Y, (__v4di) __X);
7919}
7920
Craig Topper74c10e32018-07-09 19:00:16 +00007921static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper55b40672018-05-20 23:34:10 +00007922_mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
7923{
7924 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7925 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7926 (__v4di)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007927}
7928
Craig Topper74c10e32018-07-09 19:00:16 +00007929static __inline__ __m256i __DEFAULT_FN_ATTRS256
Michael Zuckerman8938e832016-04-25 05:32:35 +00007930_mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
7931 __m256i __Y)
7932{
Craig Topper55b40672018-05-20 23:34:10 +00007933 return (__m256i)__builtin_ia32_selectq_256((__mmask8)__M,
7934 (__v4di)_mm256_permutexvar_epi64(__X, __Y),
7935 (__v4di)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007936}
7937
Craig Topper5dc6ca82018-02-24 06:46:42 +00007938#define _mm256_permutexvar_ps(A, B) _mm256_permutevar8x32_ps((B), (A))
7939
Craig Topper74c10e32018-07-09 19:00:16 +00007940static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper5dc6ca82018-02-24 06:46:42 +00007941_mm256_mask_permutexvar_ps(__m256 __W, __mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007942{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007943 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
7944 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
7945 (__v8sf)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007946}
7947
Craig Topper74c10e32018-07-09 19:00:16 +00007948static __inline__ __m256 __DEFAULT_FN_ATTRS256
Craig Topper5dc6ca82018-02-24 06:46:42 +00007949_mm256_maskz_permutexvar_ps(__mmask8 __U, __m256i __X, __m256 __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007950{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007951 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
7952 (__v8sf)_mm256_permutexvar_ps(__X, __Y),
7953 (__v8sf)_mm256_setzero_ps());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007954}
7955
Craig Topper5dc6ca82018-02-24 06:46:42 +00007956#define _mm256_permutexvar_epi32(A, B) _mm256_permutevar8x32_epi32((B), (A))
7957
Craig Topper74c10e32018-07-09 19:00:16 +00007958static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper5dc6ca82018-02-24 06:46:42 +00007959_mm256_mask_permutexvar_epi32(__m256i __W, __mmask8 __M, __m256i __X,
7960 __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007961{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007962 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
7963 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
7964 (__v8si)__W);
Michael Zuckerman8938e832016-04-25 05:32:35 +00007965}
7966
Craig Topper74c10e32018-07-09 19:00:16 +00007967static __inline__ __m256i __DEFAULT_FN_ATTRS256
Craig Topper5dc6ca82018-02-24 06:46:42 +00007968_mm256_maskz_permutexvar_epi32(__mmask8 __M, __m256i __X, __m256i __Y)
Michael Zuckerman8938e832016-04-25 05:32:35 +00007969{
Craig Topper5dc6ca82018-02-24 06:46:42 +00007970 return (__m256i)__builtin_ia32_selectd_256((__mmask8)__M,
7971 (__v8si)_mm256_permutexvar_epi32(__X, __Y),
7972 (__v8si)_mm256_setzero_si256());
Michael Zuckerman8938e832016-04-25 05:32:35 +00007973}
7974
Craig Topperc6338672018-05-31 00:51:20 +00007975#define _mm_alignr_epi32(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00007976 (__m128i)__builtin_ia32_alignd128((__v4si)(__m128i)(A), \
7977 (__v4si)(__m128i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007978
Craig Topperc6338672018-05-31 00:51:20 +00007979#define _mm_mask_alignr_epi32(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007980 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
7981 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007982 (__v4si)(__m128i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007983
Craig Topperc6338672018-05-31 00:51:20 +00007984#define _mm_maskz_alignr_epi32(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007985 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
7986 (__v4si)_mm_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007987 (__v4si)_mm_setzero_si128())
Michael Zuckerman533e0652016-04-28 12:47:30 +00007988
Craig Topperc6338672018-05-31 00:51:20 +00007989#define _mm256_alignr_epi32(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00007990 (__m256i)__builtin_ia32_alignd256((__v8si)(__m256i)(A), \
7991 (__v8si)(__m256i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007992
Craig Topperc6338672018-05-31 00:51:20 +00007993#define _mm256_mask_alignr_epi32(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007994 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
7995 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00007996 (__v8si)(__m256i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00007997
Craig Topperc6338672018-05-31 00:51:20 +00007998#define _mm256_maskz_alignr_epi32(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00007999 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8000 (__v8si)_mm256_alignr_epi32((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008001 (__v8si)_mm256_setzero_si256())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008002
Craig Topperc6338672018-05-31 00:51:20 +00008003#define _mm_alignr_epi64(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008004 (__m128i)__builtin_ia32_alignq128((__v2di)(__m128i)(A), \
8005 (__v2di)(__m128i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008006
Craig Topperc6338672018-05-31 00:51:20 +00008007#define _mm_mask_alignr_epi64(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008008 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8009 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008010 (__v2di)(__m128i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008011
Craig Topperc6338672018-05-31 00:51:20 +00008012#define _mm_maskz_alignr_epi64(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008013 (__m128i)__builtin_ia32_selectq_128((__mmask8)(U), \
8014 (__v2di)_mm_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008015 (__v2di)_mm_setzero_si128())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008016
Craig Topperc6338672018-05-31 00:51:20 +00008017#define _mm256_alignr_epi64(A, B, imm) \
Craig Toppere56819e2018-06-07 21:27:41 +00008018 (__m256i)__builtin_ia32_alignq256((__v4di)(__m256i)(A), \
8019 (__v4di)(__m256i)(B), (int)(imm))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008020
Craig Topperc6338672018-05-31 00:51:20 +00008021#define _mm256_mask_alignr_epi64(W, U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008022 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8023 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008024 (__v4di)(__m256i)(W))
Michael Zuckerman533e0652016-04-28 12:47:30 +00008025
Craig Topperc6338672018-05-31 00:51:20 +00008026#define _mm256_maskz_alignr_epi64(U, A, B, imm) \
Craig Topper6aefe002016-11-23 01:47:12 +00008027 (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8028 (__v4di)_mm256_alignr_epi64((A), (B), (imm)), \
Craig Topperc6338672018-05-31 00:51:20 +00008029 (__v4di)_mm256_setzero_si256())
Michael Zuckerman533e0652016-04-28 12:47:30 +00008030
Craig Topper74c10e32018-07-09 19:00:16 +00008031static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008032_mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8033{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008034 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8035 (__v4sf)_mm_movehdup_ps(__A),
8036 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008037}
8038
Craig Topper74c10e32018-07-09 19:00:16 +00008039static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008040_mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8041{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008042 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8043 (__v4sf)_mm_movehdup_ps(__A),
8044 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008045}
8046
Craig Topper74c10e32018-07-09 19:00:16 +00008047static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008048_mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8049{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008050 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8051 (__v8sf)_mm256_movehdup_ps(__A),
8052 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008053}
8054
Craig Topper74c10e32018-07-09 19:00:16 +00008055static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008056_mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8057{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008058 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8059 (__v8sf)_mm256_movehdup_ps(__A),
8060 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008061}
8062
Craig Topper74c10e32018-07-09 19:00:16 +00008063static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008064_mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8065{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008066 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8067 (__v4sf)_mm_moveldup_ps(__A),
8068 (__v4sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008069}
8070
Craig Topper74c10e32018-07-09 19:00:16 +00008071static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008072_mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8073{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008074 return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8075 (__v4sf)_mm_moveldup_ps(__A),
8076 (__v4sf)_mm_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008077}
8078
Craig Topper74c10e32018-07-09 19:00:16 +00008079static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008080_mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8081{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008082 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8083 (__v8sf)_mm256_moveldup_ps(__A),
8084 (__v8sf)__W);
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008085}
8086
Craig Topper74c10e32018-07-09 19:00:16 +00008087static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008088_mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8089{
Simon Pilgrim275d7212016-07-02 17:16:25 +00008090 return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8091 (__v8sf)_mm256_moveldup_ps(__A),
8092 (__v8sf)_mm256_setzero_ps());
Michael Zuckermanac1e5192016-05-01 14:43:43 +00008093}
8094
Craig Topperc6338672018-05-31 00:51:20 +00008095#define _mm256_mask_shuffle_epi32(W, U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008096 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8097 (__v8si)_mm256_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008098 (__v8si)(__m256i)(W))
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008099
Craig Topperc6338672018-05-31 00:51:20 +00008100#define _mm256_maskz_shuffle_epi32(U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008101 (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
8102 (__v8si)_mm256_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008103 (__v8si)_mm256_setzero_si256())
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008104
Craig Topperc6338672018-05-31 00:51:20 +00008105#define _mm_mask_shuffle_epi32(W, U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008106 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8107 (__v4si)_mm_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008108 (__v4si)(__m128i)(W))
Michael Zuckermanc62f27e2016-05-02 07:35:27 +00008109
Craig Topperc6338672018-05-31 00:51:20 +00008110#define _mm_maskz_shuffle_epi32(U, A, I) \
Craig Topper7cc92632016-06-11 12:50:19 +00008111 (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
8112 (__v4si)_mm_shuffle_epi32((A), (I)), \
Craig Topperc6338672018-05-31 00:51:20 +00008113 (__v4si)_mm_setzero_si128())
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008114
Craig Topper74c10e32018-07-09 19:00:16 +00008115static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008116_mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
8117{
Igor Bregeraadb8762016-06-08 13:59:20 +00008118 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8119 (__v2df) __A,
8120 (__v2df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008121}
8122
Craig Topper74c10e32018-07-09 19:00:16 +00008123static __inline__ __m128d __DEFAULT_FN_ATTRS128
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008124_mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
8125{
Igor Bregeraadb8762016-06-08 13:59:20 +00008126 return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
8127 (__v2df) __A,
8128 (__v2df) _mm_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008129}
8130
Craig Topper74c10e32018-07-09 19:00:16 +00008131static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008132_mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
8133{
Igor Bregeraadb8762016-06-08 13:59:20 +00008134 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8135 (__v4df) __A,
8136 (__v4df) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008137}
8138
Craig Topper74c10e32018-07-09 19:00:16 +00008139static __inline__ __m256d __DEFAULT_FN_ATTRS256
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008140_mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
8141{
Igor Bregeraadb8762016-06-08 13:59:20 +00008142 return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
8143 (__v4df) __A,
8144 (__v4df) _mm256_setzero_pd ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008145}
8146
Craig Topper74c10e32018-07-09 19:00:16 +00008147static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008148_mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
8149{
Igor Bregeraadb8762016-06-08 13:59:20 +00008150 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8151 (__v4sf) __A,
8152 (__v4sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008153}
8154
Craig Topper74c10e32018-07-09 19:00:16 +00008155static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008156_mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
8157{
Igor Bregeraadb8762016-06-08 13:59:20 +00008158 return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
8159 (__v4sf) __A,
8160 (__v4sf) _mm_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008161}
8162
Craig Topper74c10e32018-07-09 19:00:16 +00008163static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008164_mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
8165{
Igor Bregeraadb8762016-06-08 13:59:20 +00008166 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8167 (__v8sf) __A,
8168 (__v8sf) __W);
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008169}
8170
Craig Topper74c10e32018-07-09 19:00:16 +00008171static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008172_mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
8173{
Igor Bregeraadb8762016-06-08 13:59:20 +00008174 return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
8175 (__v8sf) __A,
8176 (__v8sf) _mm256_setzero_ps ());
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008177}
8178
Craig Topper74c10e32018-07-09 19:00:16 +00008179static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008180_mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
8181{
8182 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8183 (__v4sf) __W,
8184 (__mmask8) __U);
8185}
8186
Craig Topper74c10e32018-07-09 19:00:16 +00008187static __inline__ __m128 __DEFAULT_FN_ATTRS128
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008188_mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8189{
8190 return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
8191 (__v4sf)
8192 _mm_setzero_ps (),
8193 (__mmask8) __U);
8194}
8195
Craig Topper74c10e32018-07-09 19:00:16 +00008196static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008197_mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
8198{
8199 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8200 (__v8sf) __W,
8201 (__mmask8) __U);
8202}
8203
Craig Topper74c10e32018-07-09 19:00:16 +00008204static __inline__ __m256 __DEFAULT_FN_ATTRS256
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008205_mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
8206{
8207 return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
8208 (__v8sf)
8209 _mm256_setzero_ps (),
8210 (__mmask8) __U);
8211}
8212
Craig Topper74c10e32018-07-09 19:00:16 +00008213static __inline __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008214_mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
8215{
8216 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8217 (__v8hi) __W,
8218 (__mmask8) __U);
8219}
8220
Craig Topper74c10e32018-07-09 19:00:16 +00008221static __inline __m128i __DEFAULT_FN_ATTRS128
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008222_mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
8223{
8224 return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
8225 (__v8hi) _mm_setzero_si128 (),
8226 (__mmask8) __U);
8227}
8228
Craig Topperc6338672018-05-31 00:51:20 +00008229#define _mm_mask_cvt_roundps_ph(W, U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008230 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8231 (__v8hi)(__m128i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00008232 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008233
Craig Topperc6338672018-05-31 00:51:20 +00008234#define _mm_maskz_cvt_roundps_ph(U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008235 (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
8236 (__v8hi)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00008237 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008238
Craig Topper74c10e32018-07-09 19:00:16 +00008239static __inline __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008240_mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
8241{
8242 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8243 (__v8hi) __W,
8244 (__mmask8) __U);
8245}
8246
Craig Topper74c10e32018-07-09 19:00:16 +00008247static __inline __m128i __DEFAULT_FN_ATTRS256
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008248_mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
8249{
8250 return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
8251 (__v8hi) _mm_setzero_si128(),
8252 (__mmask8) __U);
8253}
Craig Topperc6338672018-05-31 00:51:20 +00008254#define _mm256_mask_cvt_roundps_ph(W, U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008255 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8256 (__v8hi)(__m128i)(W), \
Craig Topperc6338672018-05-31 00:51:20 +00008257 (__mmask8)(U))
Michael Zuckerman8bfb7772016-05-03 12:45:04 +00008258
Craig Topperc6338672018-05-31 00:51:20 +00008259#define _mm256_maskz_cvt_roundps_ph(U, A, I) \
Craig Topperd2661882016-05-17 04:41:48 +00008260 (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
8261 (__v8hi)_mm_setzero_si128(), \
Craig Topperc6338672018-05-31 00:51:20 +00008262 (__mmask8)(U))
Michael Zuckerman5f0e96e2016-05-02 14:02:01 +00008263
Michael Zuckerman9e7d0a92016-06-02 07:44:08 +00008264
Craig Topper74c10e32018-07-09 19:00:16 +00008265#undef __DEFAULT_FN_ATTRS128
8266#undef __DEFAULT_FN_ATTRS256
Eric Christopher4d1851682015-06-17 07:09:20 +00008267
Robert Khasanovb9f3a912014-10-08 17:18:13 +00008268#endif /* __AVX512VLINTRIN_H */