xref: /freebsd/contrib/llvm-project/clang/lib/Headers/avx512vlfp16intrin.h (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1 /*===---------- avx512vlfp16intrin.h - AVX512-FP16 intrinsics --------------===
2  *
3  * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4  * See https://llvm.org/LICENSE.txt for license information.
5  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6  *
7  *===-----------------------------------------------------------------------===
8  */
9 #ifndef __IMMINTRIN_H
10 #error                                                                         \
11     "Never use <avx512vlfp16intrin.h> directly; include <immintrin.h> instead."
12 #endif
13 
14 #ifdef __SSE2__
15 
16 #ifndef __AVX512VLFP16INTRIN_H
17 #define __AVX512VLFP16INTRIN_H
18 
19 /* Define the default attributes for the functions in this file. */
20 #define __DEFAULT_FN_ATTRS256                                                  \
21   __attribute__((__always_inline__, __nodebug__,                               \
22                  __target__("avx512fp16,avx512vl,no-evex512"),                 \
23                  __min_vector_width__(256)))
24 #define __DEFAULT_FN_ATTRS128                                                  \
25   __attribute__((__always_inline__, __nodebug__,                               \
26                  __target__("avx512fp16,avx512vl,no-evex512"),                 \
27                  __min_vector_width__(128)))
28 
29 static __inline__ _Float16 __DEFAULT_FN_ATTRS128 _mm_cvtsh_h(__m128h __a) {
30   return __a[0];
31 }
32 
33 static __inline__ _Float16 __DEFAULT_FN_ATTRS256 _mm256_cvtsh_h(__m256h __a) {
34   return __a[0];
35 }
36 
37 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_set_sh(_Float16 __h) {
38   return __extension__(__m128h){__h, 0, 0, 0, 0, 0, 0, 0};
39 }
40 
41 static __inline __m128h __DEFAULT_FN_ATTRS128 _mm_set1_ph(_Float16 __h) {
42   return (__m128h)(__v8hf){__h, __h, __h, __h, __h, __h, __h, __h};
43 }
44 
45 static __inline __m256h __DEFAULT_FN_ATTRS256 _mm256_set1_ph(_Float16 __h) {
46   return (__m256h)(__v16hf){__h, __h, __h, __h, __h, __h, __h, __h,
47                             __h, __h, __h, __h, __h, __h, __h, __h};
48 }
49 
50 static __inline __m128h __DEFAULT_FN_ATTRS128
51 _mm_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
52            _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8) {
53   return (__m128h)(__v8hf){__h8, __h7, __h6, __h5, __h4, __h3, __h2, __h1};
54 }
55 
56 static __inline __m256h __DEFAULT_FN_ATTRS256
57 _mm256_set1_pch(_Float16 _Complex h) {
58   return (__m256h)_mm256_set1_ps(__builtin_bit_cast(float, h));
59 }
60 
61 static __inline __m128h __DEFAULT_FN_ATTRS128
62 _mm_set1_pch(_Float16 _Complex h) {
63   return (__m128h)_mm_set1_ps(__builtin_bit_cast(float, h));
64 }
65 
66 static __inline __m256h __DEFAULT_FN_ATTRS256
67 _mm256_set_ph(_Float16 __h1, _Float16 __h2, _Float16 __h3, _Float16 __h4,
68               _Float16 __h5, _Float16 __h6, _Float16 __h7, _Float16 __h8,
69               _Float16 __h9, _Float16 __h10, _Float16 __h11, _Float16 __h12,
70               _Float16 __h13, _Float16 __h14, _Float16 __h15, _Float16 __h16) {
71   return (__m256h)(__v16hf){__h16, __h15, __h14, __h13, __h12, __h11,
72                             __h10, __h9,  __h8,  __h7,  __h6,  __h5,
73                             __h4,  __h3,  __h2,  __h1};
74 }
75 
76 #define _mm_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8)                            \
77   _mm_set_ph((h8), (h7), (h6), (h5), (h4), (h3), (h2), (h1))
78 
79 #define _mm256_setr_ph(h1, h2, h3, h4, h5, h6, h7, h8, h9, h10, h11, h12, h13, \
80                        h14, h15, h16)                                          \
81   _mm256_set_ph((h16), (h15), (h14), (h13), (h12), (h11), (h10), (h9), (h8),   \
82                 (h7), (h6), (h5), (h4), (h3), (h2), (h1))
83 
84 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_add_ph(__m256h __A,
85                                                               __m256h __B) {
86   return (__m256h)((__v16hf)__A + (__v16hf)__B);
87 }
88 
89 static __inline__ __m256h __DEFAULT_FN_ATTRS256
90 _mm256_mask_add_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
91   return (__m256h)__builtin_ia32_selectph_256(
92       __U, (__v16hf)_mm256_add_ph(__A, __B), (__v16hf)__W);
93 }
94 
95 static __inline__ __m256h __DEFAULT_FN_ATTRS256
96 _mm256_maskz_add_ph(__mmask16 __U, __m256h __A, __m256h __B) {
97   return (__m256h)__builtin_ia32_selectph_256(
98       __U, (__v16hf)_mm256_add_ph(__A, __B), (__v16hf)_mm256_setzero_ph());
99 }
100 
101 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_add_ph(__m128h __A,
102                                                            __m128h __B) {
103   return (__m128h)((__v8hf)__A + (__v8hf)__B);
104 }
105 
106 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_add_ph(__m128h __W,
107                                                                 __mmask8 __U,
108                                                                 __m128h __A,
109                                                                 __m128h __B) {
110   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_add_ph(__A, __B),
111                                               (__v8hf)__W);
112 }
113 
114 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_add_ph(__mmask8 __U,
115                                                                  __m128h __A,
116                                                                  __m128h __B) {
117   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_add_ph(__A, __B),
118                                               (__v8hf)_mm_setzero_ph());
119 }
120 
121 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_sub_ph(__m256h __A,
122                                                               __m256h __B) {
123   return (__m256h)((__v16hf)__A - (__v16hf)__B);
124 }
125 
126 static __inline__ __m256h __DEFAULT_FN_ATTRS256
127 _mm256_mask_sub_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
128   return (__m256h)__builtin_ia32_selectph_256(
129       __U, (__v16hf)_mm256_sub_ph(__A, __B), (__v16hf)__W);
130 }
131 
132 static __inline__ __m256h __DEFAULT_FN_ATTRS256
133 _mm256_maskz_sub_ph(__mmask16 __U, __m256h __A, __m256h __B) {
134   return (__m256h)__builtin_ia32_selectph_256(
135       __U, (__v16hf)_mm256_sub_ph(__A, __B), (__v16hf)_mm256_setzero_ph());
136 }
137 
138 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_sub_ph(__m128h __A,
139                                                            __m128h __B) {
140   return (__m128h)((__v8hf)__A - (__v8hf)__B);
141 }
142 
143 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_sub_ph(__m128h __W,
144                                                                 __mmask8 __U,
145                                                                 __m128h __A,
146                                                                 __m128h __B) {
147   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_sub_ph(__A, __B),
148                                               (__v8hf)__W);
149 }
150 
151 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_sub_ph(__mmask8 __U,
152                                                                  __m128h __A,
153                                                                  __m128h __B) {
154   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_sub_ph(__A, __B),
155                                               (__v8hf)_mm_setzero_ph());
156 }
157 
158 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_mul_ph(__m256h __A,
159                                                               __m256h __B) {
160   return (__m256h)((__v16hf)__A * (__v16hf)__B);
161 }
162 
163 static __inline__ __m256h __DEFAULT_FN_ATTRS256
164 _mm256_mask_mul_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
165   return (__m256h)__builtin_ia32_selectph_256(
166       __U, (__v16hf)_mm256_mul_ph(__A, __B), (__v16hf)__W);
167 }
168 
169 static __inline__ __m256h __DEFAULT_FN_ATTRS256
170 _mm256_maskz_mul_ph(__mmask16 __U, __m256h __A, __m256h __B) {
171   return (__m256h)__builtin_ia32_selectph_256(
172       __U, (__v16hf)_mm256_mul_ph(__A, __B), (__v16hf)_mm256_setzero_ph());
173 }
174 
175 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mul_ph(__m128h __A,
176                                                            __m128h __B) {
177   return (__m128h)((__v8hf)__A * (__v8hf)__B);
178 }
179 
180 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_mul_ph(__m128h __W,
181                                                                 __mmask8 __U,
182                                                                 __m128h __A,
183                                                                 __m128h __B) {
184   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_mul_ph(__A, __B),
185                                               (__v8hf)__W);
186 }
187 
188 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_mul_ph(__mmask8 __U,
189                                                                  __m128h __A,
190                                                                  __m128h __B) {
191   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_mul_ph(__A, __B),
192                                               (__v8hf)_mm_setzero_ph());
193 }
194 
195 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_div_ph(__m256h __A,
196                                                               __m256h __B) {
197   return (__m256h)((__v16hf)__A / (__v16hf)__B);
198 }
199 
200 static __inline__ __m256h __DEFAULT_FN_ATTRS256
201 _mm256_mask_div_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
202   return (__m256h)__builtin_ia32_selectph_256(
203       __U, (__v16hf)_mm256_div_ph(__A, __B), (__v16hf)__W);
204 }
205 
206 static __inline__ __m256h __DEFAULT_FN_ATTRS256
207 _mm256_maskz_div_ph(__mmask16 __U, __m256h __A, __m256h __B) {
208   return (__m256h)__builtin_ia32_selectph_256(
209       __U, (__v16hf)_mm256_div_ph(__A, __B), (__v16hf)_mm256_setzero_ph());
210 }
211 
212 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_div_ph(__m128h __A,
213                                                            __m128h __B) {
214   return (__m128h)((__v8hf)__A / (__v8hf)__B);
215 }
216 
217 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_div_ph(__m128h __W,
218                                                                 __mmask8 __U,
219                                                                 __m128h __A,
220                                                                 __m128h __B) {
221   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_div_ph(__A, __B),
222                                               (__v8hf)__W);
223 }
224 
225 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_div_ph(__mmask8 __U,
226                                                                  __m128h __A,
227                                                                  __m128h __B) {
228   return (__m128h)__builtin_ia32_selectph_128(__U, (__v8hf)_mm_div_ph(__A, __B),
229                                               (__v8hf)_mm_setzero_ph());
230 }
231 
232 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_min_ph(__m256h __A,
233                                                               __m256h __B) {
234   return (__m256h)__builtin_ia32_minph256((__v16hf)__A, (__v16hf)__B);
235 }
236 
237 static __inline__ __m256h __DEFAULT_FN_ATTRS256
238 _mm256_mask_min_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
239   return (__m256h)__builtin_ia32_selectph_256(
240       (__mmask16)__U,
241       (__v16hf)__builtin_ia32_minph256((__v16hf)__A, (__v16hf)__B),
242       (__v16hf)__W);
243 }
244 
245 static __inline__ __m256h __DEFAULT_FN_ATTRS256
246 _mm256_maskz_min_ph(__mmask16 __U, __m256h __A, __m256h __B) {
247   return (__m256h)__builtin_ia32_selectph_256(
248       (__mmask16)__U,
249       (__v16hf)__builtin_ia32_minph256((__v16hf)__A, (__v16hf)__B),
250       (__v16hf)_mm256_setzero_ph());
251 }
252 
253 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_min_ph(__m128h __A,
254                                                            __m128h __B) {
255   return (__m128h)__builtin_ia32_minph128((__v8hf)__A, (__v8hf)__B);
256 }
257 
258 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_min_ph(__m128h __W,
259                                                                 __mmask8 __U,
260                                                                 __m128h __A,
261                                                                 __m128h __B) {
262   return (__m128h)__builtin_ia32_selectph_128(
263       (__mmask8)__U, (__v8hf)__builtin_ia32_minph128((__v8hf)__A, (__v8hf)__B),
264       (__v8hf)__W);
265 }
266 
267 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_min_ph(__mmask8 __U,
268                                                                  __m128h __A,
269                                                                  __m128h __B) {
270   return (__m128h)__builtin_ia32_selectph_128(
271       (__mmask8)__U, (__v8hf)__builtin_ia32_minph128((__v8hf)__A, (__v8hf)__B),
272       (__v8hf)_mm_setzero_ph());
273 }
274 
275 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_max_ph(__m256h __A,
276                                                               __m256h __B) {
277   return (__m256h)__builtin_ia32_maxph256((__v16hf)__A, (__v16hf)__B);
278 }
279 
280 static __inline__ __m256h __DEFAULT_FN_ATTRS256
281 _mm256_mask_max_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
282   return (__m256h)__builtin_ia32_selectph_256(
283       (__mmask16)__U,
284       (__v16hf)__builtin_ia32_maxph256((__v16hf)__A, (__v16hf)__B),
285       (__v16hf)__W);
286 }
287 
288 static __inline__ __m256h __DEFAULT_FN_ATTRS256
289 _mm256_maskz_max_ph(__mmask16 __U, __m256h __A, __m256h __B) {
290   return (__m256h)__builtin_ia32_selectph_256(
291       (__mmask16)__U,
292       (__v16hf)__builtin_ia32_maxph256((__v16hf)__A, (__v16hf)__B),
293       (__v16hf)_mm256_setzero_ph());
294 }
295 
296 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_max_ph(__m128h __A,
297                                                            __m128h __B) {
298   return (__m128h)__builtin_ia32_maxph128((__v8hf)__A, (__v8hf)__B);
299 }
300 
301 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_max_ph(__m128h __W,
302                                                                 __mmask8 __U,
303                                                                 __m128h __A,
304                                                                 __m128h __B) {
305   return (__m128h)__builtin_ia32_selectph_128(
306       (__mmask8)__U, (__v8hf)__builtin_ia32_maxph128((__v8hf)__A, (__v8hf)__B),
307       (__v8hf)__W);
308 }
309 
310 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_max_ph(__mmask8 __U,
311                                                                  __m128h __A,
312                                                                  __m128h __B) {
313   return (__m128h)__builtin_ia32_selectph_128(
314       (__mmask8)__U, (__v8hf)__builtin_ia32_maxph128((__v8hf)__A, (__v8hf)__B),
315       (__v8hf)_mm_setzero_ph());
316 }
317 
318 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_abs_ph(__m256h __A) {
319   return (__m256h)_mm256_and_epi32(_mm256_set1_epi32(0x7FFF7FFF), (__m256i)__A);
320 }
321 
322 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_abs_ph(__m128h __A) {
323   return (__m128h)_mm_and_epi32(_mm_set1_epi32(0x7FFF7FFF), (__m128i)__A);
324 }
325 
326 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_conj_pch(__m256h __A) {
327   return (__m256h)_mm256_xor_ps((__m256)__A, _mm256_set1_ps(-0.0f));
328 }
329 
330 static __inline__ __m256h __DEFAULT_FN_ATTRS256
331 _mm256_mask_conj_pch(__m256h __W, __mmask8 __U, __m256h __A) {
332   return (__m256h)__builtin_ia32_selectps_256(
333       (__mmask8)__U, (__v8sf)_mm256_conj_pch(__A), (__v8sf)__W);
334 }
335 
336 static __inline__ __m256h __DEFAULT_FN_ATTRS256
337 _mm256_maskz_conj_pch(__mmask8 __U, __m256h __A) {
338   return (__m256h)__builtin_ia32_selectps_256(
339       (__mmask8)__U, (__v8sf)_mm256_conj_pch(__A), (__v8sf)_mm256_setzero_ps());
340 }
341 
342 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_conj_pch(__m128h __A) {
343   return (__m128h)_mm_xor_ps((__m128)__A, _mm_set1_ps(-0.0f));
344 }
345 
346 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_conj_pch(__m128h __W,
347                                                                   __mmask8 __U,
348                                                                   __m128h __A) {
349   return (__m128h)__builtin_ia32_selectps_128(
350       (__mmask8)__U, (__v4sf)_mm_conj_pch(__A), (__v4sf)__W);
351 }
352 
353 static __inline__ __m128h __DEFAULT_FN_ATTRS128
354 _mm_maskz_conj_pch(__mmask8 __U, __m128h __A) {
355   return (__m128h)__builtin_ia32_selectps_128(
356       (__mmask8)__U, (__v4sf)_mm_conj_pch(__A), (__v4sf)_mm_setzero_ps());
357 }
358 
359 #define _mm256_cmp_ph_mask(a, b, p)                                            \
360   ((__mmask16)__builtin_ia32_cmpph256_mask(                                    \
361       (__v16hf)(__m256h)(a), (__v16hf)(__m256h)(b), (int)(p), (__mmask16)-1))
362 
363 #define _mm256_mask_cmp_ph_mask(m, a, b, p)                                    \
364   ((__mmask16)__builtin_ia32_cmpph256_mask(                                    \
365       (__v16hf)(__m256h)(a), (__v16hf)(__m256h)(b), (int)(p), (__mmask16)(m)))
366 
367 #define _mm_cmp_ph_mask(a, b, p)                                               \
368   ((__mmask8)__builtin_ia32_cmpph128_mask(                                     \
369       (__v8hf)(__m128h)(a), (__v8hf)(__m128h)(b), (int)(p), (__mmask8)-1))
370 
371 #define _mm_mask_cmp_ph_mask(m, a, b, p)                                       \
372   ((__mmask8)__builtin_ia32_cmpph128_mask(                                     \
373       (__v8hf)(__m128h)(a), (__v8hf)(__m128h)(b), (int)(p), (__mmask8)(m)))
374 
375 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_rcp_ph(__m256h __A) {
376   return (__m256h)__builtin_ia32_rcpph256_mask(
377       (__v16hf)__A, (__v16hf)_mm256_undefined_ph(), (__mmask16)-1);
378 }
379 
380 static __inline__ __m256h __DEFAULT_FN_ATTRS256
381 _mm256_mask_rcp_ph(__m256h __W, __mmask16 __U, __m256h __A) {
382   return (__m256h)__builtin_ia32_rcpph256_mask((__v16hf)__A, (__v16hf)__W,
383                                                (__mmask16)__U);
384 }
385 
386 static __inline__ __m256h __DEFAULT_FN_ATTRS256
387 _mm256_maskz_rcp_ph(__mmask16 __U, __m256h __A) {
388   return (__m256h)__builtin_ia32_rcpph256_mask(
389       (__v16hf)__A, (__v16hf)_mm256_setzero_ph(), (__mmask16)__U);
390 }
391 
392 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_rcp_ph(__m128h __A) {
393   return (__m128h)__builtin_ia32_rcpph128_mask(
394       (__v8hf)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
395 }
396 
397 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_rcp_ph(__m128h __W,
398                                                                 __mmask8 __U,
399                                                                 __m128h __A) {
400   return (__m128h)__builtin_ia32_rcpph128_mask((__v8hf)__A, (__v8hf)__W,
401                                                (__mmask8)__U);
402 }
403 
404 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_rcp_ph(__mmask8 __U,
405                                                                  __m128h __A) {
406   return (__m128h)__builtin_ia32_rcpph128_mask(
407       (__v8hf)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
408 }
409 
410 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_rsqrt_ph(__m256h __A) {
411   return (__m256h)__builtin_ia32_rsqrtph256_mask(
412       (__v16hf)__A, (__v16hf)_mm256_undefined_ph(), (__mmask16)-1);
413 }
414 
415 static __inline__ __m256h __DEFAULT_FN_ATTRS256
416 _mm256_mask_rsqrt_ph(__m256h __W, __mmask16 __U, __m256h __A) {
417   return (__m256h)__builtin_ia32_rsqrtph256_mask((__v16hf)__A, (__v16hf)__W,
418                                                  (__mmask16)__U);
419 }
420 
421 static __inline__ __m256h __DEFAULT_FN_ATTRS256
422 _mm256_maskz_rsqrt_ph(__mmask16 __U, __m256h __A) {
423   return (__m256h)__builtin_ia32_rsqrtph256_mask(
424       (__v16hf)__A, (__v16hf)_mm256_setzero_ph(), (__mmask16)__U);
425 }
426 
427 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_rsqrt_ph(__m128h __A) {
428   return (__m128h)__builtin_ia32_rsqrtph128_mask(
429       (__v8hf)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
430 }
431 
432 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_rsqrt_ph(__m128h __W,
433                                                                   __mmask8 __U,
434                                                                   __m128h __A) {
435   return (__m128h)__builtin_ia32_rsqrtph128_mask((__v8hf)__A, (__v8hf)__W,
436                                                  (__mmask8)__U);
437 }
438 
439 static __inline__ __m128h __DEFAULT_FN_ATTRS128
440 _mm_maskz_rsqrt_ph(__mmask8 __U, __m128h __A) {
441   return (__m128h)__builtin_ia32_rsqrtph128_mask(
442       (__v8hf)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
443 }
444 
445 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_getexp_ph(__m128h __A) {
446   return (__m128h)__builtin_ia32_getexpph128_mask(
447       (__v8hf)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)-1);
448 }
449 
450 static __inline__ __m128h __DEFAULT_FN_ATTRS128
451 _mm_mask_getexp_ph(__m128h __W, __mmask8 __U, __m128h __A) {
452   return (__m128h)__builtin_ia32_getexpph128_mask((__v8hf)__A, (__v8hf)__W,
453                                                   (__mmask8)__U);
454 }
455 
456 static __inline__ __m128h __DEFAULT_FN_ATTRS128
457 _mm_maskz_getexp_ph(__mmask8 __U, __m128h __A) {
458   return (__m128h)__builtin_ia32_getexpph128_mask(
459       (__v8hf)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
460 }
461 
462 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_getexp_ph(__m256h __A) {
463   return (__m256h)__builtin_ia32_getexpph256_mask(
464       (__v16hf)__A, (__v16hf)_mm256_setzero_ph(), (__mmask16)-1);
465 }
466 
467 static __inline__ __m256h __DEFAULT_FN_ATTRS256
468 _mm256_mask_getexp_ph(__m256h __W, __mmask16 __U, __m256h __A) {
469   return (__m256h)__builtin_ia32_getexpph256_mask((__v16hf)__A, (__v16hf)__W,
470                                                   (__mmask16)__U);
471 }
472 
473 static __inline__ __m256h __DEFAULT_FN_ATTRS256
474 _mm256_maskz_getexp_ph(__mmask16 __U, __m256h __A) {
475   return (__m256h)__builtin_ia32_getexpph256_mask(
476       (__v16hf)__A, (__v16hf)_mm256_setzero_ph(), (__mmask16)__U);
477 }
478 
479 #define _mm_getmant_ph(A, B, C)                                                \
480   ((__m128h)__builtin_ia32_getmantph128_mask(                                  \
481       (__v8hf)(__m128h)(A), (int)(((C) << 2) | (B)), (__v8hf)_mm_setzero_ph(), \
482       (__mmask8)-1))
483 
484 #define _mm_mask_getmant_ph(W, U, A, B, C)                                     \
485   ((__m128h)__builtin_ia32_getmantph128_mask(                                  \
486       (__v8hf)(__m128h)(A), (int)(((C) << 2) | (B)), (__v8hf)(__m128h)(W),     \
487       (__mmask8)(U)))
488 
489 #define _mm_maskz_getmant_ph(U, A, B, C)                                       \
490   ((__m128h)__builtin_ia32_getmantph128_mask(                                  \
491       (__v8hf)(__m128h)(A), (int)(((C) << 2) | (B)), (__v8hf)_mm_setzero_ph(), \
492       (__mmask8)(U)))
493 
494 #define _mm256_getmant_ph(A, B, C)                                             \
495   ((__m256h)__builtin_ia32_getmantph256_mask(                                  \
496       (__v16hf)(__m256h)(A), (int)(((C) << 2) | (B)),                          \
497       (__v16hf)_mm256_setzero_ph(), (__mmask16)-1))
498 
499 #define _mm256_mask_getmant_ph(W, U, A, B, C)                                  \
500   ((__m256h)__builtin_ia32_getmantph256_mask(                                  \
501       (__v16hf)(__m256h)(A), (int)(((C) << 2) | (B)), (__v16hf)(__m256h)(W),   \
502       (__mmask16)(U)))
503 
504 #define _mm256_maskz_getmant_ph(U, A, B, C)                                    \
505   ((__m256h)__builtin_ia32_getmantph256_mask(                                  \
506       (__v16hf)(__m256h)(A), (int)(((C) << 2) | (B)),                          \
507       (__v16hf)_mm256_setzero_ph(), (__mmask16)(U)))
508 
509 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_scalef_ph(__m128h __A,
510                                                               __m128h __B) {
511   return (__m128h)__builtin_ia32_scalefph128_mask(
512       (__v8hf)__A, (__v8hf)__B, (__v8hf)_mm_setzero_ph(), (__mmask8)-1);
513 }
514 
515 static __inline__ __m128h __DEFAULT_FN_ATTRS128
516 _mm_mask_scalef_ph(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
517   return (__m128h)__builtin_ia32_scalefph128_mask((__v8hf)__A, (__v8hf)__B,
518                                                   (__v8hf)__W, (__mmask8)__U);
519 }
520 
521 static __inline__ __m128h __DEFAULT_FN_ATTRS128
522 _mm_maskz_scalef_ph(__mmask8 __U, __m128h __A, __m128h __B) {
523   return (__m128h)__builtin_ia32_scalefph128_mask(
524       (__v8hf)__A, (__v8hf)__B, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
525 }
526 
527 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_scalef_ph(__m256h __A,
528                                                                  __m256h __B) {
529   return (__m256h)__builtin_ia32_scalefph256_mask(
530       (__v16hf)__A, (__v16hf)__B, (__v16hf)_mm256_setzero_ph(), (__mmask16)-1);
531 }
532 
533 static __inline__ __m256h __DEFAULT_FN_ATTRS256
534 _mm256_mask_scalef_ph(__m256h __W, __mmask16 __U, __m256h __A, __m256h __B) {
535   return (__m256h)__builtin_ia32_scalefph256_mask((__v16hf)__A, (__v16hf)__B,
536                                                   (__v16hf)__W, (__mmask16)__U);
537 }
538 
539 static __inline__ __m256h __DEFAULT_FN_ATTRS256
540 _mm256_maskz_scalef_ph(__mmask16 __U, __m256h __A, __m256h __B) {
541   return (__m256h)__builtin_ia32_scalefph256_mask(
542       (__v16hf)__A, (__v16hf)__B, (__v16hf)_mm256_setzero_ph(), (__mmask16)__U);
543 }
544 
545 #define _mm_roundscale_ph(A, imm)                                              \
546   ((__m128h)__builtin_ia32_rndscaleph_128_mask(                                \
547       (__v8hf)(__m128h)(A), (int)(imm), (__v8hf)_mm_setzero_ph(),              \
548       (__mmask8)-1))
549 
550 #define _mm_mask_roundscale_ph(W, U, A, imm)                                   \
551   ((__m128h)__builtin_ia32_rndscaleph_128_mask(                                \
552       (__v8hf)(__m128h)(A), (int)(imm), (__v8hf)(__m128h)(W), (__mmask8)(U)))
553 
554 #define _mm_maskz_roundscale_ph(U, A, imm)                                     \
555   ((__m128h)__builtin_ia32_rndscaleph_128_mask(                                \
556       (__v8hf)(__m128h)(A), (int)(imm), (__v8hf)_mm_setzero_ph(),              \
557       (__mmask8)(U)))
558 
559 #define _mm256_roundscale_ph(A, imm)                                           \
560   ((__m256h)__builtin_ia32_rndscaleph_256_mask(                                \
561       (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)_mm256_setzero_ph(),         \
562       (__mmask16)-1))
563 
564 #define _mm256_mask_roundscale_ph(W, U, A, imm)                                \
565   ((__m256h)__builtin_ia32_rndscaleph_256_mask(                                \
566       (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)(__m256h)(W),                \
567       (__mmask16)(U)))
568 
569 #define _mm256_maskz_roundscale_ph(U, A, imm)                                  \
570   ((__m256h)__builtin_ia32_rndscaleph_256_mask(                                \
571       (__v16hf)(__m256h)(A), (int)(imm), (__v16hf)_mm256_setzero_ph(),         \
572       (__mmask16)(U)))
573 
574 #define _mm_reduce_ph(A, imm)                                                  \
575   ((__m128h)__builtin_ia32_reduceph128_mask((__v8hf)(__m128h)(A), (int)(imm),  \
576                                             (__v8hf)_mm_setzero_ph(),          \
577                                             (__mmask8)-1))
578 
579 #define _mm_mask_reduce_ph(W, U, A, imm)                                       \
580   ((__m128h)__builtin_ia32_reduceph128_mask(                                   \
581       (__v8hf)(__m128h)(A), (int)(imm), (__v8hf)(__m128h)(W), (__mmask8)(U)))
582 
583 #define _mm_maskz_reduce_ph(U, A, imm)                                         \
584   ((__m128h)__builtin_ia32_reduceph128_mask((__v8hf)(__m128h)(A), (int)(imm),  \
585                                             (__v8hf)_mm_setzero_ph(),          \
586                                             (__mmask8)(U)))
587 
588 #define _mm256_reduce_ph(A, imm)                                               \
589   ((__m256h)__builtin_ia32_reduceph256_mask((__v16hf)(__m256h)(A), (int)(imm), \
590                                             (__v16hf)_mm256_setzero_ph(),      \
591                                             (__mmask16)-1))
592 
593 #define _mm256_mask_reduce_ph(W, U, A, imm)                                    \
594   ((__m256h)__builtin_ia32_reduceph256_mask((__v16hf)(__m256h)(A), (int)(imm), \
595                                             (__v16hf)(__m256h)(W),             \
596                                             (__mmask16)(U)))
597 
598 #define _mm256_maskz_reduce_ph(U, A, imm)                                      \
599   ((__m256h)__builtin_ia32_reduceph256_mask((__v16hf)(__m256h)(A), (int)(imm), \
600                                             (__v16hf)_mm256_setzero_ph(),      \
601                                             (__mmask16)(U)))
602 
603 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_sqrt_ph(__m128h __a) {
604   return __builtin_ia32_sqrtph((__v8hf)__a);
605 }
606 
607 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_sqrt_ph(__m128h __W,
608                                                                  __mmask8 __U,
609                                                                  __m128h __A) {
610   return (__m128h)__builtin_ia32_selectph_128(
611       (__mmask8)__U, (__v8hf)_mm_sqrt_ph(__A), (__v8hf)__W);
612 }
613 
614 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_maskz_sqrt_ph(__mmask8 __U,
615                                                                   __m128h __A) {
616   return (__m128h)__builtin_ia32_selectph_128(
617       (__mmask8)__U, (__v8hf)_mm_sqrt_ph(__A), (__v8hf)_mm_setzero_ph());
618 }
619 
620 static __inline __m256h __DEFAULT_FN_ATTRS256 _mm256_sqrt_ph(__m256h __a) {
621   return (__m256h)__builtin_ia32_sqrtph256((__v16hf)__a);
622 }
623 
624 static __inline__ __m256h __DEFAULT_FN_ATTRS256
625 _mm256_mask_sqrt_ph(__m256h __W, __mmask16 __U, __m256h __A) {
626   return (__m256h)__builtin_ia32_selectph_256(
627       (__mmask16)__U, (__v16hf)_mm256_sqrt_ph(__A), (__v16hf)__W);
628 }
629 
630 static __inline__ __m256h __DEFAULT_FN_ATTRS256
631 _mm256_maskz_sqrt_ph(__mmask16 __U, __m256h __A) {
632   return (__m256h)__builtin_ia32_selectph_256((__mmask16)__U,
633                                               (__v16hf)_mm256_sqrt_ph(__A),
634                                               (__v16hf)_mm256_setzero_ph());
635 }
636 
637 #define _mm_mask_fpclass_ph_mask(U, A, imm)                                    \
638   ((__mmask8)__builtin_ia32_fpclassph128_mask((__v8hf)(__m128h)(A),            \
639                                               (int)(imm), (__mmask8)(U)))
640 
641 #define _mm_fpclass_ph_mask(A, imm)                                            \
642   ((__mmask8)__builtin_ia32_fpclassph128_mask((__v8hf)(__m128h)(A),            \
643                                               (int)(imm), (__mmask8)-1))
644 
645 #define _mm256_mask_fpclass_ph_mask(U, A, imm)                                 \
646   ((__mmask16)__builtin_ia32_fpclassph256_mask((__v16hf)(__m256h)(A),          \
647                                                (int)(imm), (__mmask16)(U)))
648 
649 #define _mm256_fpclass_ph_mask(A, imm)                                         \
650   ((__mmask16)__builtin_ia32_fpclassph256_mask((__v16hf)(__m256h)(A),          \
651                                                (int)(imm), (__mmask16)-1))
652 
653 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtpd_ph(__m128d __A) {
654   return (__m128h)__builtin_ia32_vcvtpd2ph128_mask(
655       (__v2df)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
656 }
657 
658 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_cvtpd_ph(__m128h __W,
659                                                                   __mmask8 __U,
660                                                                   __m128d __A) {
661   return (__m128h)__builtin_ia32_vcvtpd2ph128_mask((__v2df)__A, (__v8hf)__W,
662                                                    (__mmask8)__U);
663 }
664 
665 static __inline__ __m128h __DEFAULT_FN_ATTRS128
666 _mm_maskz_cvtpd_ph(__mmask8 __U, __m128d __A) {
667   return (__m128h)__builtin_ia32_vcvtpd2ph128_mask(
668       (__v2df)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
669 }
670 
671 static __inline__ __m128h __DEFAULT_FN_ATTRS256 _mm256_cvtpd_ph(__m256d __A) {
672   return (__m128h)__builtin_ia32_vcvtpd2ph256_mask(
673       (__v4df)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
674 }
675 
676 static __inline__ __m128h __DEFAULT_FN_ATTRS256
677 _mm256_mask_cvtpd_ph(__m128h __W, __mmask8 __U, __m256d __A) {
678   return (__m128h)__builtin_ia32_vcvtpd2ph256_mask((__v4df)__A, (__v8hf)__W,
679                                                    (__mmask8)__U);
680 }
681 
682 static __inline__ __m128h __DEFAULT_FN_ATTRS256
683 _mm256_maskz_cvtpd_ph(__mmask8 __U, __m256d __A) {
684   return (__m128h)__builtin_ia32_vcvtpd2ph256_mask(
685       (__v4df)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
686 }
687 
688 static __inline__ __m128d __DEFAULT_FN_ATTRS128 _mm_cvtph_pd(__m128h __A) {
689   return (__m128d)__builtin_ia32_vcvtph2pd128_mask(
690       (__v8hf)__A, (__v2df)_mm_undefined_pd(), (__mmask8)-1);
691 }
692 
693 static __inline__ __m128d __DEFAULT_FN_ATTRS128 _mm_mask_cvtph_pd(__m128d __W,
694                                                                   __mmask8 __U,
695                                                                   __m128h __A) {
696   return (__m128d)__builtin_ia32_vcvtph2pd128_mask((__v8hf)__A, (__v2df)__W,
697                                                    (__mmask8)__U);
698 }
699 
700 static __inline__ __m128d __DEFAULT_FN_ATTRS128
701 _mm_maskz_cvtph_pd(__mmask8 __U, __m128h __A) {
702   return (__m128d)__builtin_ia32_vcvtph2pd128_mask(
703       (__v8hf)__A, (__v2df)_mm_setzero_pd(), (__mmask8)__U);
704 }
705 
706 static __inline__ __m256d __DEFAULT_FN_ATTRS256 _mm256_cvtph_pd(__m128h __A) {
707   return (__m256d)__builtin_ia32_vcvtph2pd256_mask(
708       (__v8hf)__A, (__v4df)_mm256_undefined_pd(), (__mmask8)-1);
709 }
710 
711 static __inline__ __m256d __DEFAULT_FN_ATTRS256
712 _mm256_mask_cvtph_pd(__m256d __W, __mmask8 __U, __m128h __A) {
713   return (__m256d)__builtin_ia32_vcvtph2pd256_mask((__v8hf)__A, (__v4df)__W,
714                                                    (__mmask8)__U);
715 }
716 
717 static __inline__ __m256d __DEFAULT_FN_ATTRS256
718 _mm256_maskz_cvtph_pd(__mmask8 __U, __m128h __A) {
719   return (__m256d)__builtin_ia32_vcvtph2pd256_mask(
720       (__v8hf)__A, (__v4df)_mm256_setzero_pd(), (__mmask8)__U);
721 }
722 
723 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_epi16(__m128h __A) {
724   return (__m128i)__builtin_ia32_vcvtph2w128_mask(
725       (__v8hf)__A, (__v8hi)_mm_undefined_si128(), (__mmask8)-1);
726 }
727 
728 static __inline__ __m128i __DEFAULT_FN_ATTRS128
729 _mm_mask_cvtph_epi16(__m128i __W, __mmask8 __U, __m128h __A) {
730   return (__m128i)__builtin_ia32_vcvtph2w128_mask((__v8hf)__A, (__v8hi)__W,
731                                                   (__mmask8)__U);
732 }
733 
734 static __inline__ __m128i __DEFAULT_FN_ATTRS128
735 _mm_maskz_cvtph_epi16(__mmask8 __U, __m128h __A) {
736   return (__m128i)__builtin_ia32_vcvtph2w128_mask(
737       (__v8hf)__A, (__v8hi)_mm_setzero_si128(), (__mmask8)__U);
738 }
739 
740 static __inline__ __m256i __DEFAULT_FN_ATTRS256
741 _mm256_cvtph_epi16(__m256h __A) {
742   return (__m256i)__builtin_ia32_vcvtph2w256_mask(
743       (__v16hf)__A, (__v16hi)_mm256_undefined_si256(), (__mmask16)-1);
744 }
745 
746 static __inline__ __m256i __DEFAULT_FN_ATTRS256
747 _mm256_mask_cvtph_epi16(__m256i __W, __mmask16 __U, __m256h __A) {
748   return (__m256i)__builtin_ia32_vcvtph2w256_mask((__v16hf)__A, (__v16hi)__W,
749                                                   (__mmask16)__U);
750 }
751 
752 static __inline__ __m256i __DEFAULT_FN_ATTRS256
753 _mm256_maskz_cvtph_epi16(__mmask16 __U, __m256h __A) {
754   return (__m256i)__builtin_ia32_vcvtph2w256_mask(
755       (__v16hf)__A, (__v16hi)_mm256_setzero_si256(), (__mmask16)__U);
756 }
757 
758 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttph_epi16(__m128h __A) {
759   return (__m128i)__builtin_ia32_vcvttph2w128_mask(
760       (__v8hf)__A, (__v8hi)_mm_undefined_si128(), (__mmask8)-1);
761 }
762 
763 static __inline__ __m128i __DEFAULT_FN_ATTRS128
764 _mm_mask_cvttph_epi16(__m128i __W, __mmask8 __U, __m128h __A) {
765   return (__m128i)__builtin_ia32_vcvttph2w128_mask((__v8hf)__A, (__v8hi)__W,
766                                                    (__mmask8)__U);
767 }
768 
769 static __inline__ __m128i __DEFAULT_FN_ATTRS128
770 _mm_maskz_cvttph_epi16(__mmask8 __U, __m128h __A) {
771   return (__m128i)__builtin_ia32_vcvttph2w128_mask(
772       (__v8hf)__A, (__v8hi)_mm_setzero_si128(), (__mmask8)__U);
773 }
774 
775 static __inline__ __m256i __DEFAULT_FN_ATTRS256
776 _mm256_cvttph_epi16(__m256h __A) {
777   return (__m256i)__builtin_ia32_vcvttph2w256_mask(
778       (__v16hf)__A, (__v16hi)_mm256_undefined_si256(), (__mmask16)-1);
779 }
780 
781 static __inline__ __m256i __DEFAULT_FN_ATTRS256
782 _mm256_mask_cvttph_epi16(__m256i __W, __mmask16 __U, __m256h __A) {
783   return (__m256i)__builtin_ia32_vcvttph2w256_mask((__v16hf)__A, (__v16hi)__W,
784                                                    (__mmask16)__U);
785 }
786 
787 static __inline__ __m256i __DEFAULT_FN_ATTRS256
788 _mm256_maskz_cvttph_epi16(__mmask16 __U, __m256h __A) {
789   return (__m256i)__builtin_ia32_vcvttph2w256_mask(
790       (__v16hf)__A, (__v16hi)_mm256_setzero_si256(), (__mmask16)__U);
791 }
792 
793 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepi16_ph(__m128i __A) {
794   return (__m128h) __builtin_convertvector((__v8hi)__A, __v8hf);
795 }
796 
797 static __inline__ __m128h __DEFAULT_FN_ATTRS128
798 _mm_mask_cvtepi16_ph(__m128h __W, __mmask8 __U, __m128i __A) {
799   return (__m128h)__builtin_ia32_selectph_128(
800       (__mmask8)__U, (__v8hf)_mm_cvtepi16_ph(__A), (__v8hf)__W);
801 }
802 
803 static __inline__ __m128h __DEFAULT_FN_ATTRS128
804 _mm_maskz_cvtepi16_ph(__mmask8 __U, __m128i __A) {
805   return (__m128h)__builtin_ia32_selectph_128(
806       (__mmask8)__U, (__v8hf)_mm_cvtepi16_ph(__A), (__v8hf)_mm_setzero_ph());
807 }
808 
809 static __inline__ __m256h __DEFAULT_FN_ATTRS256
810 _mm256_cvtepi16_ph(__m256i __A) {
811   return (__m256h) __builtin_convertvector((__v16hi)__A, __v16hf);
812 }
813 
814 static __inline__ __m256h __DEFAULT_FN_ATTRS256
815 _mm256_mask_cvtepi16_ph(__m256h __W, __mmask16 __U, __m256i __A) {
816   return (__m256h)__builtin_ia32_selectph_256(
817       (__mmask16)__U, (__v16hf)_mm256_cvtepi16_ph(__A), (__v16hf)__W);
818 }
819 
820 static __inline__ __m256h __DEFAULT_FN_ATTRS256
821 _mm256_maskz_cvtepi16_ph(__mmask16 __U, __m256i __A) {
822   return (__m256h)__builtin_ia32_selectph_256((__mmask16)__U,
823                                               (__v16hf)_mm256_cvtepi16_ph(__A),
824                                               (__v16hf)_mm256_setzero_ph());
825 }
826 
827 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_epu16(__m128h __A) {
828   return (__m128i)__builtin_ia32_vcvtph2uw128_mask(
829       (__v8hf)__A, (__v8hu)_mm_undefined_si128(), (__mmask8)-1);
830 }
831 
832 static __inline__ __m128i __DEFAULT_FN_ATTRS128
833 _mm_mask_cvtph_epu16(__m128i __W, __mmask8 __U, __m128h __A) {
834   return (__m128i)__builtin_ia32_vcvtph2uw128_mask((__v8hf)__A, (__v8hu)__W,
835                                                    (__mmask8)__U);
836 }
837 
838 static __inline__ __m128i __DEFAULT_FN_ATTRS128
839 _mm_maskz_cvtph_epu16(__mmask8 __U, __m128h __A) {
840   return (__m128i)__builtin_ia32_vcvtph2uw128_mask(
841       (__v8hf)__A, (__v8hu)_mm_setzero_si128(), (__mmask8)__U);
842 }
843 
844 static __inline__ __m256i __DEFAULT_FN_ATTRS256
845 _mm256_cvtph_epu16(__m256h __A) {
846   return (__m256i)__builtin_ia32_vcvtph2uw256_mask(
847       (__v16hf)__A, (__v16hu)_mm256_undefined_si256(), (__mmask16)-1);
848 }
849 
850 static __inline__ __m256i __DEFAULT_FN_ATTRS256
851 _mm256_mask_cvtph_epu16(__m256i __W, __mmask16 __U, __m256h __A) {
852   return (__m256i)__builtin_ia32_vcvtph2uw256_mask((__v16hf)__A, (__v16hu)__W,
853                                                    (__mmask16)__U);
854 }
855 
856 static __inline__ __m256i __DEFAULT_FN_ATTRS256
857 _mm256_maskz_cvtph_epu16(__mmask16 __U, __m256h __A) {
858   return (__m256i)__builtin_ia32_vcvtph2uw256_mask(
859       (__v16hf)__A, (__v16hu)_mm256_setzero_si256(), (__mmask16)__U);
860 }
861 
862 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttph_epu16(__m128h __A) {
863   return (__m128i)__builtin_ia32_vcvttph2uw128_mask(
864       (__v8hf)__A, (__v8hu)_mm_undefined_si128(), (__mmask8)-1);
865 }
866 
867 static __inline__ __m128i __DEFAULT_FN_ATTRS128
868 _mm_mask_cvttph_epu16(__m128i __W, __mmask8 __U, __m128h __A) {
869   return (__m128i)__builtin_ia32_vcvttph2uw128_mask((__v8hf)__A, (__v8hu)__W,
870                                                     (__mmask8)__U);
871 }
872 
873 static __inline__ __m128i __DEFAULT_FN_ATTRS128
874 _mm_maskz_cvttph_epu16(__mmask8 __U, __m128h __A) {
875   return (__m128i)__builtin_ia32_vcvttph2uw128_mask(
876       (__v8hf)__A, (__v8hu)_mm_setzero_si128(), (__mmask8)__U);
877 }
878 
879 static __inline__ __m256i __DEFAULT_FN_ATTRS256
880 _mm256_cvttph_epu16(__m256h __A) {
881   return (__m256i)__builtin_ia32_vcvttph2uw256_mask(
882       (__v16hf)__A, (__v16hu)_mm256_undefined_si256(), (__mmask16)-1);
883 }
884 
885 static __inline__ __m256i __DEFAULT_FN_ATTRS256
886 _mm256_mask_cvttph_epu16(__m256i __W, __mmask16 __U, __m256h __A) {
887   return (__m256i)__builtin_ia32_vcvttph2uw256_mask((__v16hf)__A, (__v16hu)__W,
888                                                     (__mmask16)__U);
889 }
890 
891 static __inline__ __m256i __DEFAULT_FN_ATTRS256
892 _mm256_maskz_cvttph_epu16(__mmask16 __U, __m256h __A) {
893   return (__m256i)__builtin_ia32_vcvttph2uw256_mask(
894       (__v16hf)__A, (__v16hu)_mm256_setzero_si256(), (__mmask16)__U);
895 }
896 
897 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepu16_ph(__m128i __A) {
898   return (__m128h) __builtin_convertvector((__v8hu)__A, __v8hf);
899 }
900 
901 static __inline__ __m128h __DEFAULT_FN_ATTRS128
902 _mm_mask_cvtepu16_ph(__m128h __W, __mmask8 __U, __m128i __A) {
903   return (__m128h)__builtin_ia32_selectph_128(
904       (__mmask8)__U, (__v8hf)_mm_cvtepu16_ph(__A), (__v8hf)__W);
905 }
906 
907 static __inline__ __m128h __DEFAULT_FN_ATTRS128
908 _mm_maskz_cvtepu16_ph(__mmask8 __U, __m128i __A) {
909   return (__m128h)__builtin_ia32_selectph_128(
910       (__mmask8)__U, (__v8hf)_mm_cvtepu16_ph(__A), (__v8hf)_mm_setzero_ph());
911 }
912 
913 static __inline__ __m256h __DEFAULT_FN_ATTRS256
914 _mm256_cvtepu16_ph(__m256i __A) {
915   return (__m256h) __builtin_convertvector((__v16hu)__A, __v16hf);
916 }
917 
918 static __inline__ __m256h __DEFAULT_FN_ATTRS256
919 _mm256_mask_cvtepu16_ph(__m256h __W, __mmask16 __U, __m256i __A) {
920   return (__m256h)__builtin_ia32_selectph_256(
921       (__mmask16)__U, (__v16hf)_mm256_cvtepu16_ph(__A), (__v16hf)__W);
922 }
923 
924 static __inline__ __m256h __DEFAULT_FN_ATTRS256
925 _mm256_maskz_cvtepu16_ph(__mmask16 __U, __m256i __A) {
926   return (__m256h)__builtin_ia32_selectph_256((__mmask16)__U,
927                                               (__v16hf)_mm256_cvtepu16_ph(__A),
928                                               (__v16hf)_mm256_setzero_ph());
929 }
930 
931 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_epi32(__m128h __A) {
932   return (__m128i)__builtin_ia32_vcvtph2dq128_mask(
933       (__v8hf)__A, (__v4si)_mm_undefined_si128(), (__mmask8)-1);
934 }
935 
936 static __inline__ __m128i __DEFAULT_FN_ATTRS128
937 _mm_mask_cvtph_epi32(__m128i __W, __mmask8 __U, __m128h __A) {
938   return (__m128i)__builtin_ia32_vcvtph2dq128_mask((__v8hf)__A, (__v4si)__W,
939                                                    (__mmask8)__U);
940 }
941 
942 static __inline__ __m128i __DEFAULT_FN_ATTRS128
943 _mm_maskz_cvtph_epi32(__mmask8 __U, __m128h __A) {
944   return (__m128i)__builtin_ia32_vcvtph2dq128_mask(
945       (__v8hf)__A, (__v4si)_mm_setzero_si128(), (__mmask8)__U);
946 }
947 
948 static __inline__ __m256i __DEFAULT_FN_ATTRS256
949 _mm256_cvtph_epi32(__m128h __A) {
950   return (__m256i)__builtin_ia32_vcvtph2dq256_mask(
951       (__v8hf)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1);
952 }
953 
954 static __inline__ __m256i __DEFAULT_FN_ATTRS256
955 _mm256_mask_cvtph_epi32(__m256i __W, __mmask8 __U, __m128h __A) {
956   return (__m256i)__builtin_ia32_vcvtph2dq256_mask((__v8hf)__A, (__v8si)__W,
957                                                    (__mmask8)__U);
958 }
959 
960 static __inline__ __m256i __DEFAULT_FN_ATTRS256
961 _mm256_maskz_cvtph_epi32(__mmask8 __U, __m128h __A) {
962   return (__m256i)__builtin_ia32_vcvtph2dq256_mask(
963       (__v8hf)__A, (__v8si)_mm256_setzero_si256(), (__mmask8)__U);
964 }
965 
966 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_epu32(__m128h __A) {
967   return (__m128i)__builtin_ia32_vcvtph2udq128_mask(
968       (__v8hf)__A, (__v4su)_mm_undefined_si128(), (__mmask8)-1);
969 }
970 
971 static __inline__ __m128i __DEFAULT_FN_ATTRS128
972 _mm_mask_cvtph_epu32(__m128i __W, __mmask8 __U, __m128h __A) {
973   return (__m128i)__builtin_ia32_vcvtph2udq128_mask((__v8hf)__A, (__v4su)__W,
974                                                     (__mmask8)__U);
975 }
976 
977 static __inline__ __m128i __DEFAULT_FN_ATTRS128
978 _mm_maskz_cvtph_epu32(__mmask8 __U, __m128h __A) {
979   return (__m128i)__builtin_ia32_vcvtph2udq128_mask(
980       (__v8hf)__A, (__v4su)_mm_setzero_si128(), (__mmask8)__U);
981 }
982 
983 static __inline__ __m256i __DEFAULT_FN_ATTRS256
984 _mm256_cvtph_epu32(__m128h __A) {
985   return (__m256i)__builtin_ia32_vcvtph2udq256_mask(
986       (__v8hf)__A, (__v8su)_mm256_undefined_si256(), (__mmask8)-1);
987 }
988 
989 static __inline__ __m256i __DEFAULT_FN_ATTRS256
990 _mm256_mask_cvtph_epu32(__m256i __W, __mmask8 __U, __m128h __A) {
991   return (__m256i)__builtin_ia32_vcvtph2udq256_mask((__v8hf)__A, (__v8su)__W,
992                                                     (__mmask8)__U);
993 }
994 
995 static __inline__ __m256i __DEFAULT_FN_ATTRS256
996 _mm256_maskz_cvtph_epu32(__mmask8 __U, __m128h __A) {
997   return (__m256i)__builtin_ia32_vcvtph2udq256_mask(
998       (__v8hf)__A, (__v8su)_mm256_setzero_si256(), (__mmask8)__U);
999 }
1000 
1001 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepi32_ph(__m128i __A) {
1002   return (__m128h)__builtin_ia32_vcvtdq2ph128_mask(
1003       (__v4si)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1004 }
1005 
1006 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1007 _mm_mask_cvtepi32_ph(__m128h __W, __mmask8 __U, __m128i __A) {
1008   return (__m128h)__builtin_ia32_vcvtdq2ph128_mask((__v4si)__A, (__v8hf)__W,
1009                                                    (__mmask8)__U);
1010 }
1011 
1012 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1013 _mm_maskz_cvtepi32_ph(__mmask8 __U, __m128i __A) {
1014   return (__m128h)__builtin_ia32_vcvtdq2ph128_mask(
1015       (__v4si)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1016 }
1017 
1018 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1019 _mm256_cvtepi32_ph(__m256i __A) {
1020   return (__m128h) __builtin_convertvector((__v8si)__A, __v8hf);
1021 }
1022 
1023 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1024 _mm256_mask_cvtepi32_ph(__m128h __W, __mmask8 __U, __m256i __A) {
1025   return (__m128h)__builtin_ia32_selectph_128(
1026       (__mmask8)__U, (__v8hf)_mm256_cvtepi32_ph(__A), (__v8hf)__W);
1027 }
1028 
1029 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1030 _mm256_maskz_cvtepi32_ph(__mmask8 __U, __m256i __A) {
1031   return (__m128h)__builtin_ia32_selectph_128(
1032       (__mmask8)__U, (__v8hf)_mm256_cvtepi32_ph(__A), (__v8hf)_mm_setzero_ph());
1033 }
1034 
1035 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepu32_ph(__m128i __A) {
1036   return (__m128h)__builtin_ia32_vcvtudq2ph128_mask(
1037       (__v4su)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1038 }
1039 
1040 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1041 _mm_mask_cvtepu32_ph(__m128h __W, __mmask8 __U, __m128i __A) {
1042   return (__m128h)__builtin_ia32_vcvtudq2ph128_mask((__v4su)__A, (__v8hf)__W,
1043                                                     (__mmask8)__U);
1044 }
1045 
1046 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1047 _mm_maskz_cvtepu32_ph(__mmask8 __U, __m128i __A) {
1048   return (__m128h)__builtin_ia32_vcvtudq2ph128_mask(
1049       (__v4su)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1050 }
1051 
1052 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1053 _mm256_cvtepu32_ph(__m256i __A) {
1054   return (__m128h) __builtin_convertvector((__v8su)__A, __v8hf);
1055 }
1056 
1057 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1058 _mm256_mask_cvtepu32_ph(__m128h __W, __mmask8 __U, __m256i __A) {
1059   return (__m128h)__builtin_ia32_selectph_128(
1060       (__mmask8)__U, (__v8hf)_mm256_cvtepu32_ph(__A), (__v8hf)__W);
1061 }
1062 
1063 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1064 _mm256_maskz_cvtepu32_ph(__mmask8 __U, __m256i __A) {
1065   return (__m128h)__builtin_ia32_selectph_128(
1066       (__mmask8)__U, (__v8hf)_mm256_cvtepu32_ph(__A), (__v8hf)_mm_setzero_ph());
1067 }
1068 
1069 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttph_epi32(__m128h __A) {
1070   return (__m128i)__builtin_ia32_vcvttph2dq128_mask(
1071       (__v8hf)__A, (__v4si)_mm_undefined_si128(), (__mmask8)-1);
1072 }
1073 
1074 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1075 _mm_mask_cvttph_epi32(__m128i __W, __mmask8 __U, __m128h __A) {
1076   return (__m128i)__builtin_ia32_vcvttph2dq128_mask((__v8hf)__A, (__v4si)__W,
1077                                                     (__mmask8)__U);
1078 }
1079 
1080 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1081 _mm_maskz_cvttph_epi32(__mmask8 __U, __m128h __A) {
1082   return (__m128i)__builtin_ia32_vcvttph2dq128_mask(
1083       (__v8hf)__A, (__v4si)_mm_setzero_si128(), (__mmask8)__U);
1084 }
1085 
1086 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1087 _mm256_cvttph_epi32(__m128h __A) {
1088   return (__m256i)__builtin_ia32_vcvttph2dq256_mask(
1089       (__v8hf)__A, (__v8si)_mm256_undefined_si256(), (__mmask8)-1);
1090 }
1091 
1092 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1093 _mm256_mask_cvttph_epi32(__m256i __W, __mmask8 __U, __m128h __A) {
1094   return (__m256i)__builtin_ia32_vcvttph2dq256_mask((__v8hf)__A, (__v8si)__W,
1095                                                     (__mmask8)__U);
1096 }
1097 
1098 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1099 _mm256_maskz_cvttph_epi32(__mmask8 __U, __m128h __A) {
1100   return (__m256i)__builtin_ia32_vcvttph2dq256_mask(
1101       (__v8hf)__A, (__v8si)_mm256_setzero_si256(), (__mmask8)__U);
1102 }
1103 
1104 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttph_epu32(__m128h __A) {
1105   return (__m128i)__builtin_ia32_vcvttph2udq128_mask(
1106       (__v8hf)__A, (__v4su)_mm_undefined_si128(), (__mmask8)-1);
1107 }
1108 
1109 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1110 _mm_mask_cvttph_epu32(__m128i __W, __mmask8 __U, __m128h __A) {
1111   return (__m128i)__builtin_ia32_vcvttph2udq128_mask((__v8hf)__A, (__v4su)__W,
1112                                                      (__mmask8)__U);
1113 }
1114 
1115 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1116 _mm_maskz_cvttph_epu32(__mmask8 __U, __m128h __A) {
1117   return (__m128i)__builtin_ia32_vcvttph2udq128_mask(
1118       (__v8hf)__A, (__v4su)_mm_setzero_si128(), (__mmask8)__U);
1119 }
1120 
1121 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1122 _mm256_cvttph_epu32(__m128h __A) {
1123   return (__m256i)__builtin_ia32_vcvttph2udq256_mask(
1124       (__v8hf)__A, (__v8su)_mm256_undefined_si256(), (__mmask8)-1);
1125 }
1126 
1127 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1128 _mm256_mask_cvttph_epu32(__m256i __W, __mmask8 __U, __m128h __A) {
1129   return (__m256i)__builtin_ia32_vcvttph2udq256_mask((__v8hf)__A, (__v8su)__W,
1130                                                      (__mmask8)__U);
1131 }
1132 
1133 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1134 _mm256_maskz_cvttph_epu32(__mmask8 __U, __m128h __A) {
1135   return (__m256i)__builtin_ia32_vcvttph2udq256_mask(
1136       (__v8hf)__A, (__v8su)_mm256_setzero_si256(), (__mmask8)__U);
1137 }
1138 
1139 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepi64_ph(__m128i __A) {
1140   return (__m128h)__builtin_ia32_vcvtqq2ph128_mask(
1141       (__v2di)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1142 }
1143 
1144 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1145 _mm_mask_cvtepi64_ph(__m128h __W, __mmask8 __U, __m128i __A) {
1146   return (__m128h)__builtin_ia32_vcvtqq2ph128_mask((__v2di)__A, (__v8hf)__W,
1147                                                    (__mmask8)__U);
1148 }
1149 
1150 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1151 _mm_maskz_cvtepi64_ph(__mmask8 __U, __m128i __A) {
1152   return (__m128h)__builtin_ia32_vcvtqq2ph128_mask(
1153       (__v2di)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1154 }
1155 
1156 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1157 _mm256_cvtepi64_ph(__m256i __A) {
1158   return (__m128h)__builtin_ia32_vcvtqq2ph256_mask(
1159       (__v4di)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1160 }
1161 
1162 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1163 _mm256_mask_cvtepi64_ph(__m128h __W, __mmask8 __U, __m256i __A) {
1164   return (__m128h)__builtin_ia32_vcvtqq2ph256_mask((__v4di)__A, (__v8hf)__W,
1165                                                    (__mmask8)__U);
1166 }
1167 
1168 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1169 _mm256_maskz_cvtepi64_ph(__mmask8 __U, __m256i __A) {
1170   return (__m128h)__builtin_ia32_vcvtqq2ph256_mask(
1171       (__v4di)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1172 }
1173 
1174 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_epi64(__m128h __A) {
1175   return (__m128i)__builtin_ia32_vcvtph2qq128_mask(
1176       (__v8hf)__A, (__v2di)_mm_undefined_si128(), (__mmask8)-1);
1177 }
1178 
1179 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1180 _mm_mask_cvtph_epi64(__m128i __W, __mmask8 __U, __m128h __A) {
1181   return (__m128i)__builtin_ia32_vcvtph2qq128_mask((__v8hf)__A, (__v2di)__W,
1182                                                    (__mmask8)__U);
1183 }
1184 
1185 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1186 _mm_maskz_cvtph_epi64(__mmask8 __U, __m128h __A) {
1187   return (__m128i)__builtin_ia32_vcvtph2qq128_mask(
1188       (__v8hf)__A, (__v2di)_mm_setzero_si128(), (__mmask8)__U);
1189 }
1190 
1191 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1192 _mm256_cvtph_epi64(__m128h __A) {
1193   return (__m256i)__builtin_ia32_vcvtph2qq256_mask(
1194       (__v8hf)__A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1);
1195 }
1196 
1197 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1198 _mm256_mask_cvtph_epi64(__m256i __W, __mmask8 __U, __m128h __A) {
1199   return (__m256i)__builtin_ia32_vcvtph2qq256_mask((__v8hf)__A, (__v4di)__W,
1200                                                    (__mmask8)__U);
1201 }
1202 
1203 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1204 _mm256_maskz_cvtph_epi64(__mmask8 __U, __m128h __A) {
1205   return (__m256i)__builtin_ia32_vcvtph2qq256_mask(
1206       (__v8hf)__A, (__v4di)_mm256_setzero_si256(), (__mmask8)__U);
1207 }
1208 
1209 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtepu64_ph(__m128i __A) {
1210   return (__m128h)__builtin_ia32_vcvtuqq2ph128_mask(
1211       (__v2du)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1212 }
1213 
1214 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1215 _mm_mask_cvtepu64_ph(__m128h __W, __mmask8 __U, __m128i __A) {
1216   return (__m128h)__builtin_ia32_vcvtuqq2ph128_mask((__v2du)__A, (__v8hf)__W,
1217                                                     (__mmask8)__U);
1218 }
1219 
1220 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1221 _mm_maskz_cvtepu64_ph(__mmask8 __U, __m128i __A) {
1222   return (__m128h)__builtin_ia32_vcvtuqq2ph128_mask(
1223       (__v2du)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1224 }
1225 
1226 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1227 _mm256_cvtepu64_ph(__m256i __A) {
1228   return (__m128h)__builtin_ia32_vcvtuqq2ph256_mask(
1229       (__v4du)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1230 }
1231 
1232 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1233 _mm256_mask_cvtepu64_ph(__m128h __W, __mmask8 __U, __m256i __A) {
1234   return (__m128h)__builtin_ia32_vcvtuqq2ph256_mask((__v4du)__A, (__v8hf)__W,
1235                                                     (__mmask8)__U);
1236 }
1237 
1238 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1239 _mm256_maskz_cvtepu64_ph(__mmask8 __U, __m256i __A) {
1240   return (__m128h)__builtin_ia32_vcvtuqq2ph256_mask(
1241       (__v4du)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1242 }
1243 
1244 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvtph_epu64(__m128h __A) {
1245   return (__m128i)__builtin_ia32_vcvtph2uqq128_mask(
1246       (__v8hf)__A, (__v2du)_mm_undefined_si128(), (__mmask8)-1);
1247 }
1248 
1249 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1250 _mm_mask_cvtph_epu64(__m128i __W, __mmask8 __U, __m128h __A) {
1251   return (__m128i)__builtin_ia32_vcvtph2uqq128_mask((__v8hf)__A, (__v2du)__W,
1252                                                     (__mmask8)__U);
1253 }
1254 
1255 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1256 _mm_maskz_cvtph_epu64(__mmask8 __U, __m128h __A) {
1257   return (__m128i)__builtin_ia32_vcvtph2uqq128_mask(
1258       (__v8hf)__A, (__v2du)_mm_setzero_si128(), (__mmask8)__U);
1259 }
1260 
1261 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1262 _mm256_cvtph_epu64(__m128h __A) {
1263   return (__m256i)__builtin_ia32_vcvtph2uqq256_mask(
1264       (__v8hf)__A, (__v4du)_mm256_undefined_si256(), (__mmask8)-1);
1265 }
1266 
1267 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1268 _mm256_mask_cvtph_epu64(__m256i __W, __mmask8 __U, __m128h __A) {
1269   return (__m256i)__builtin_ia32_vcvtph2uqq256_mask((__v8hf)__A, (__v4du)__W,
1270                                                     (__mmask8)__U);
1271 }
1272 
1273 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1274 _mm256_maskz_cvtph_epu64(__mmask8 __U, __m128h __A) {
1275   return (__m256i)__builtin_ia32_vcvtph2uqq256_mask(
1276       (__v8hf)__A, (__v4du)_mm256_setzero_si256(), (__mmask8)__U);
1277 }
1278 
1279 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttph_epi64(__m128h __A) {
1280   return (__m128i)__builtin_ia32_vcvttph2qq128_mask(
1281       (__v8hf)__A, (__v2di)_mm_undefined_si128(), (__mmask8)-1);
1282 }
1283 
1284 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1285 _mm_mask_cvttph_epi64(__m128i __W, __mmask8 __U, __m128h __A) {
1286   return (__m128i)__builtin_ia32_vcvttph2qq128_mask((__v8hf)__A, (__v2di)__W,
1287                                                     (__mmask8)__U);
1288 }
1289 
1290 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1291 _mm_maskz_cvttph_epi64(__mmask8 __U, __m128h __A) {
1292   return (__m128i)__builtin_ia32_vcvttph2qq128_mask(
1293       (__v8hf)__A, (__v2di)_mm_setzero_si128(), (__mmask8)__U);
1294 }
1295 
1296 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1297 _mm256_cvttph_epi64(__m128h __A) {
1298   return (__m256i)__builtin_ia32_vcvttph2qq256_mask(
1299       (__v8hf)__A, (__v4di)_mm256_undefined_si256(), (__mmask8)-1);
1300 }
1301 
1302 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1303 _mm256_mask_cvttph_epi64(__m256i __W, __mmask8 __U, __m128h __A) {
1304   return (__m256i)__builtin_ia32_vcvttph2qq256_mask((__v8hf)__A, (__v4di)__W,
1305                                                     (__mmask8)__U);
1306 }
1307 
1308 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1309 _mm256_maskz_cvttph_epi64(__mmask8 __U, __m128h __A) {
1310   return (__m256i)__builtin_ia32_vcvttph2qq256_mask(
1311       (__v8hf)__A, (__v4di)_mm256_setzero_si256(), (__mmask8)__U);
1312 }
1313 
1314 static __inline__ __m128i __DEFAULT_FN_ATTRS128 _mm_cvttph_epu64(__m128h __A) {
1315   return (__m128i)__builtin_ia32_vcvttph2uqq128_mask(
1316       (__v8hf)__A, (__v2du)_mm_undefined_si128(), (__mmask8)-1);
1317 }
1318 
1319 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1320 _mm_mask_cvttph_epu64(__m128i __W, __mmask8 __U, __m128h __A) {
1321   return (__m128i)__builtin_ia32_vcvttph2uqq128_mask((__v8hf)__A, (__v2du)__W,
1322                                                      (__mmask8)__U);
1323 }
1324 
1325 static __inline__ __m128i __DEFAULT_FN_ATTRS128
1326 _mm_maskz_cvttph_epu64(__mmask8 __U, __m128h __A) {
1327   return (__m128i)__builtin_ia32_vcvttph2uqq128_mask(
1328       (__v8hf)__A, (__v2du)_mm_setzero_si128(), (__mmask8)__U);
1329 }
1330 
1331 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1332 _mm256_cvttph_epu64(__m128h __A) {
1333   return (__m256i)__builtin_ia32_vcvttph2uqq256_mask(
1334       (__v8hf)__A, (__v4du)_mm256_undefined_si256(), (__mmask8)-1);
1335 }
1336 
1337 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1338 _mm256_mask_cvttph_epu64(__m256i __W, __mmask8 __U, __m128h __A) {
1339   return (__m256i)__builtin_ia32_vcvttph2uqq256_mask((__v8hf)__A, (__v4du)__W,
1340                                                      (__mmask8)__U);
1341 }
1342 
1343 static __inline__ __m256i __DEFAULT_FN_ATTRS256
1344 _mm256_maskz_cvttph_epu64(__mmask8 __U, __m128h __A) {
1345   return (__m256i)__builtin_ia32_vcvttph2uqq256_mask(
1346       (__v8hf)__A, (__v4du)_mm256_setzero_si256(), (__mmask8)__U);
1347 }
1348 
1349 static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_cvtxph_ps(__m128h __A) {
1350   return (__m128)__builtin_ia32_vcvtph2psx128_mask(
1351       (__v8hf)__A, (__v4sf)_mm_undefined_ps(), (__mmask8)-1);
1352 }
1353 
1354 static __inline__ __m128 __DEFAULT_FN_ATTRS128 _mm_mask_cvtxph_ps(__m128 __W,
1355                                                                   __mmask8 __U,
1356                                                                   __m128h __A) {
1357   return (__m128)__builtin_ia32_vcvtph2psx128_mask((__v8hf)__A, (__v4sf)__W,
1358                                                    (__mmask8)__U);
1359 }
1360 
1361 static __inline__ __m128 __DEFAULT_FN_ATTRS128
1362 _mm_maskz_cvtxph_ps(__mmask8 __U, __m128h __A) {
1363   return (__m128)__builtin_ia32_vcvtph2psx128_mask(
1364       (__v8hf)__A, (__v4sf)_mm_setzero_ps(), (__mmask8)__U);
1365 }
1366 
1367 static __inline__ __m256 __DEFAULT_FN_ATTRS256 _mm256_cvtxph_ps(__m128h __A) {
1368   return (__m256)__builtin_ia32_vcvtph2psx256_mask(
1369       (__v8hf)__A, (__v8sf)_mm256_undefined_ps(), (__mmask8)-1);
1370 }
1371 
1372 static __inline__ __m256 __DEFAULT_FN_ATTRS256
1373 _mm256_mask_cvtxph_ps(__m256 __W, __mmask8 __U, __m128h __A) {
1374   return (__m256)__builtin_ia32_vcvtph2psx256_mask((__v8hf)__A, (__v8sf)__W,
1375                                                    (__mmask8)__U);
1376 }
1377 
1378 static __inline__ __m256 __DEFAULT_FN_ATTRS256
1379 _mm256_maskz_cvtxph_ps(__mmask8 __U, __m128h __A) {
1380   return (__m256)__builtin_ia32_vcvtph2psx256_mask(
1381       (__v8hf)__A, (__v8sf)_mm256_setzero_ps(), (__mmask8)__U);
1382 }
1383 
1384 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_cvtxps_ph(__m128 __A) {
1385   return (__m128h)__builtin_ia32_vcvtps2phx128_mask(
1386       (__v4sf)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1387 }
1388 
1389 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_cvtxps_ph(__m128h __W,
1390                                                                    __mmask8 __U,
1391                                                                    __m128 __A) {
1392   return (__m128h)__builtin_ia32_vcvtps2phx128_mask((__v4sf)__A, (__v8hf)__W,
1393                                                     (__mmask8)__U);
1394 }
1395 
1396 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1397 _mm_maskz_cvtxps_ph(__mmask8 __U, __m128 __A) {
1398   return (__m128h)__builtin_ia32_vcvtps2phx128_mask(
1399       (__v4sf)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1400 }
1401 
1402 static __inline__ __m128h __DEFAULT_FN_ATTRS256 _mm256_cvtxps_ph(__m256 __A) {
1403   return (__m128h)__builtin_ia32_vcvtps2phx256_mask(
1404       (__v8sf)__A, (__v8hf)_mm_undefined_ph(), (__mmask8)-1);
1405 }
1406 
1407 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1408 _mm256_mask_cvtxps_ph(__m128h __W, __mmask8 __U, __m256 __A) {
1409   return (__m128h)__builtin_ia32_vcvtps2phx256_mask((__v8sf)__A, (__v8hf)__W,
1410                                                     (__mmask8)__U);
1411 }
1412 
1413 static __inline__ __m128h __DEFAULT_FN_ATTRS256
1414 _mm256_maskz_cvtxps_ph(__mmask8 __U, __m256 __A) {
1415   return (__m128h)__builtin_ia32_vcvtps2phx256_mask(
1416       (__v8sf)__A, (__v8hf)_mm_setzero_ph(), (__mmask8)__U);
1417 }
1418 
1419 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fmadd_ph(__m128h __A,
1420                                                              __m128h __B,
1421                                                              __m128h __C) {
1422   return (__m128h)__builtin_ia32_vfmaddph((__v8hf)__A, (__v8hf)__B,
1423                                           (__v8hf)__C);
1424 }
1425 
1426 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_fmadd_ph(__m128h __A,
1427                                                                   __mmask8 __U,
1428                                                                   __m128h __B,
1429                                                                   __m128h __C) {
1430   return (__m128h)__builtin_ia32_selectph_128(
1431       (__mmask8)__U,
1432       __builtin_ia32_vfmaddph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1433       (__v8hf)__A);
1434 }
1435 
1436 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1437 _mm_mask3_fmadd_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1438   return (__m128h)__builtin_ia32_selectph_128(
1439       (__mmask8)__U,
1440       __builtin_ia32_vfmaddph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1441       (__v8hf)__C);
1442 }
1443 
1444 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1445 _mm_maskz_fmadd_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1446   return (__m128h)__builtin_ia32_selectph_128(
1447       (__mmask8)__U,
1448       __builtin_ia32_vfmaddph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1449       (__v8hf)_mm_setzero_ph());
1450 }
1451 
1452 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fmsub_ph(__m128h __A,
1453                                                              __m128h __B,
1454                                                              __m128h __C) {
1455   return (__m128h)__builtin_ia32_vfmaddph((__v8hf)__A, (__v8hf)__B,
1456                                           -(__v8hf)__C);
1457 }
1458 
1459 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_fmsub_ph(__m128h __A,
1460                                                                   __mmask8 __U,
1461                                                                   __m128h __B,
1462                                                                   __m128h __C) {
1463   return (__m128h)__builtin_ia32_selectph_128(
1464       (__mmask8)__U, _mm_fmsub_ph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1465       (__v8hf)__A);
1466 }
1467 
1468 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1469 _mm_maskz_fmsub_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1470   return (__m128h)__builtin_ia32_selectph_128(
1471       (__mmask8)__U, _mm_fmsub_ph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1472       (__v8hf)_mm_setzero_ph());
1473 }
1474 
1475 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1476 _mm_mask3_fnmadd_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1477   return (__m128h)__builtin_ia32_selectph_128(
1478       (__mmask8)__U,
1479       __builtin_ia32_vfmaddph(-(__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1480       (__v8hf)__C);
1481 }
1482 
1483 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1484 _mm_maskz_fnmadd_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1485   return (__m128h)__builtin_ia32_selectph_128(
1486       (__mmask8)__U,
1487       __builtin_ia32_vfmaddph(-(__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1488       (__v8hf)_mm_setzero_ph());
1489 }
1490 
1491 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1492 _mm_maskz_fnmsub_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1493   return (__m128h)__builtin_ia32_selectph_128(
1494       (__mmask8)__U,
1495       __builtin_ia32_vfmaddph(-(__v8hf)__A, (__v8hf)__B, -(__v8hf)__C),
1496       (__v8hf)_mm_setzero_ph());
1497 }
1498 
1499 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fmadd_ph(__m256h __A,
1500                                                                 __m256h __B,
1501                                                                 __m256h __C) {
1502   return (__m256h)__builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B,
1503                                              (__v16hf)__C);
1504 }
1505 
1506 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1507 _mm256_mask_fmadd_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
1508   return (__m256h)__builtin_ia32_selectph_256(
1509       (__mmask16)__U,
1510       __builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1511       (__v16hf)__A);
1512 }
1513 
1514 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1515 _mm256_mask3_fmadd_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
1516   return (__m256h)__builtin_ia32_selectph_256(
1517       (__mmask16)__U,
1518       __builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1519       (__v16hf)__C);
1520 }
1521 
1522 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1523 _mm256_maskz_fmadd_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
1524   return (__m256h)__builtin_ia32_selectph_256(
1525       (__mmask16)__U,
1526       __builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1527       (__v16hf)_mm256_setzero_ph());
1528 }
1529 
1530 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fmsub_ph(__m256h __A,
1531                                                                 __m256h __B,
1532                                                                 __m256h __C) {
1533   return (__m256h)__builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B,
1534                                              -(__v16hf)__C);
1535 }
1536 
1537 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1538 _mm256_mask_fmsub_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
1539   return (__m256h)__builtin_ia32_selectph_256(
1540       (__mmask16)__U,
1541       __builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1542       (__v16hf)__A);
1543 }
1544 
1545 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1546 _mm256_maskz_fmsub_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
1547   return (__m256h)__builtin_ia32_selectph_256(
1548       (__mmask16)__U,
1549       __builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1550       (__v16hf)_mm256_setzero_ph());
1551 }
1552 
1553 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1554 _mm256_mask3_fnmadd_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
1555   return (__m256h)__builtin_ia32_selectph_256(
1556       (__mmask16)__U,
1557       __builtin_ia32_vfmaddph256(-(__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1558       (__v16hf)__C);
1559 }
1560 
1561 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1562 _mm256_maskz_fnmadd_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
1563   return (__m256h)__builtin_ia32_selectph_256(
1564       (__mmask16)__U,
1565       __builtin_ia32_vfmaddph256(-(__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1566       (__v16hf)_mm256_setzero_ph());
1567 }
1568 
1569 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1570 _mm256_maskz_fnmsub_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
1571   return (__m256h)__builtin_ia32_selectph_256(
1572       (__mmask16)__U,
1573       __builtin_ia32_vfmaddph256(-(__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1574       (__v16hf)_mm256_setzero_ph());
1575 }
1576 
1577 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fmaddsub_ph(__m128h __A,
1578                                                                 __m128h __B,
1579                                                                 __m128h __C) {
1580   return (__m128h)__builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B,
1581                                              (__v8hf)__C);
1582 }
1583 
1584 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1585 _mm_mask_fmaddsub_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
1586   return (__m128h)__builtin_ia32_selectph_128(
1587       (__mmask8)__U,
1588       __builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1589       (__v8hf)__A);
1590 }
1591 
1592 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1593 _mm_mask3_fmaddsub_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1594   return (__m128h)__builtin_ia32_selectph_128(
1595       (__mmask8)__U,
1596       __builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1597       (__v8hf)__C);
1598 }
1599 
1600 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1601 _mm_maskz_fmaddsub_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1602   return (__m128h)__builtin_ia32_selectph_128(
1603       (__mmask8)__U,
1604       __builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B, (__v8hf)__C),
1605       (__v8hf)_mm_setzero_ph());
1606 }
1607 
1608 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fmsubadd_ph(__m128h __A,
1609                                                                 __m128h __B,
1610                                                                 __m128h __C) {
1611   return (__m128h)__builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B,
1612                                              -(__v8hf)__C);
1613 }
1614 
1615 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1616 _mm_mask_fmsubadd_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
1617   return (__m128h)__builtin_ia32_selectph_128(
1618       (__mmask8)__U,
1619       __builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B, -(__v8hf)__C),
1620       (__v8hf)__A);
1621 }
1622 
1623 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1624 _mm_maskz_fmsubadd_ph(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1625   return (__m128h)__builtin_ia32_selectph_128(
1626       (__mmask8)__U,
1627       __builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B, -(__v8hf)__C),
1628       (__v8hf)_mm_setzero_ph());
1629 }
1630 
1631 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1632 _mm256_fmaddsub_ph(__m256h __A, __m256h __B, __m256h __C) {
1633   return (__m256h)__builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B,
1634                                                 (__v16hf)__C);
1635 }
1636 
1637 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1638 _mm256_mask_fmaddsub_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
1639   return (__m256h)__builtin_ia32_selectph_256(
1640       (__mmask16)__U,
1641       __builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1642       (__v16hf)__A);
1643 }
1644 
1645 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1646 _mm256_mask3_fmaddsub_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
1647   return (__m256h)__builtin_ia32_selectph_256(
1648       (__mmask16)__U,
1649       __builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1650       (__v16hf)__C);
1651 }
1652 
1653 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1654 _mm256_maskz_fmaddsub_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
1655   return (__m256h)__builtin_ia32_selectph_256(
1656       (__mmask16)__U,
1657       __builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B, (__v16hf)__C),
1658       (__v16hf)_mm256_setzero_ph());
1659 }
1660 
1661 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1662 _mm256_fmsubadd_ph(__m256h __A, __m256h __B, __m256h __C) {
1663   return (__m256h)__builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B,
1664                                                 -(__v16hf)__C);
1665 }
1666 
1667 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1668 _mm256_mask_fmsubadd_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
1669   return (__m256h)__builtin_ia32_selectph_256(
1670       (__mmask16)__U,
1671       __builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1672       (__v16hf)__A);
1673 }
1674 
1675 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1676 _mm256_maskz_fmsubadd_ph(__mmask16 __U, __m256h __A, __m256h __B, __m256h __C) {
1677   return (__m256h)__builtin_ia32_selectph_256(
1678       (__mmask16)__U,
1679       __builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1680       (__v16hf)_mm256_setzero_ph());
1681 }
1682 
1683 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1684 _mm_mask3_fmsub_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1685   return (__m128h)__builtin_ia32_selectph_128(
1686       (__mmask8)__U,
1687       __builtin_ia32_vfmaddph((__v8hf)__A, (__v8hf)__B, -(__v8hf)__C),
1688       (__v8hf)__C);
1689 }
1690 
1691 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1692 _mm256_mask3_fmsub_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
1693   return (__m256h)__builtin_ia32_selectph_256(
1694       (__mmask16)__U,
1695       __builtin_ia32_vfmaddph256((__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1696       (__v16hf)__C);
1697 }
1698 
1699 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1700 _mm_mask3_fmsubadd_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1701   return (__m128h)__builtin_ia32_selectph_128(
1702       (__mmask8)__U,
1703       __builtin_ia32_vfmaddsubph((__v8hf)__A, (__v8hf)__B, -(__v8hf)__C),
1704       (__v8hf)__C);
1705 }
1706 
1707 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1708 _mm256_mask3_fmsubadd_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
1709   return (__m256h)__builtin_ia32_selectph_256(
1710       (__mmask16)__U,
1711       __builtin_ia32_vfmaddsubph256((__v16hf)__A, (__v16hf)__B, -(__v16hf)__C),
1712       (__v16hf)__C);
1713 }
1714 
1715 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fnmadd_ph(__m128h __A,
1716                                                               __m128h __B,
1717                                                               __m128h __C) {
1718   return (__m128h)__builtin_ia32_vfmaddph((__v8hf)__A, -(__v8hf)__B,
1719                                           (__v8hf)__C);
1720 }
1721 
1722 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1723 _mm_mask_fnmadd_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
1724   return (__m128h)__builtin_ia32_selectph_128(
1725       (__mmask8)__U,
1726       __builtin_ia32_vfmaddph((__v8hf)__A, -(__v8hf)__B, (__v8hf)__C),
1727       (__v8hf)__A);
1728 }
1729 
1730 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fnmadd_ph(__m256h __A,
1731                                                                  __m256h __B,
1732                                                                  __m256h __C) {
1733   return (__m256h)__builtin_ia32_vfmaddph256((__v16hf)__A, -(__v16hf)__B,
1734                                              (__v16hf)__C);
1735 }
1736 
1737 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1738 _mm256_mask_fnmadd_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
1739   return (__m256h)__builtin_ia32_selectph_256(
1740       (__mmask16)__U,
1741       __builtin_ia32_vfmaddph256((__v16hf)__A, -(__v16hf)__B, (__v16hf)__C),
1742       (__v16hf)__A);
1743 }
1744 
1745 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fnmsub_ph(__m128h __A,
1746                                                               __m128h __B,
1747                                                               __m128h __C) {
1748   return (__m128h)__builtin_ia32_vfmaddph((__v8hf)__A, -(__v8hf)__B,
1749                                           -(__v8hf)__C);
1750 }
1751 
1752 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1753 _mm_mask_fnmsub_ph(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
1754   return (__m128h)__builtin_ia32_selectph_128(
1755       (__mmask8)__U,
1756       __builtin_ia32_vfmaddph((__v8hf)__A, -(__v8hf)__B, -(__v8hf)__C),
1757       (__v8hf)__A);
1758 }
1759 
1760 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1761 _mm_mask3_fnmsub_ph(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1762   return (__m128h)__builtin_ia32_selectph_128(
1763       (__mmask8)__U,
1764       __builtin_ia32_vfmaddph((__v8hf)__A, -(__v8hf)__B, -(__v8hf)__C),
1765       (__v8hf)__C);
1766 }
1767 
1768 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fnmsub_ph(__m256h __A,
1769                                                                  __m256h __B,
1770                                                                  __m256h __C) {
1771   return (__m256h)__builtin_ia32_vfmaddph256((__v16hf)__A, -(__v16hf)__B,
1772                                              -(__v16hf)__C);
1773 }
1774 
1775 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1776 _mm256_mask_fnmsub_ph(__m256h __A, __mmask16 __U, __m256h __B, __m256h __C) {
1777   return (__m256h)__builtin_ia32_selectph_256(
1778       (__mmask16)__U,
1779       __builtin_ia32_vfmaddph256((__v16hf)__A, -(__v16hf)__B, -(__v16hf)__C),
1780       (__v16hf)__A);
1781 }
1782 
1783 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1784 _mm256_mask3_fnmsub_ph(__m256h __A, __m256h __B, __m256h __C, __mmask16 __U) {
1785   return (__m256h)__builtin_ia32_selectph_256(
1786       (__mmask16)__U,
1787       __builtin_ia32_vfmaddph256((__v16hf)__A, -(__v16hf)__B, -(__v16hf)__C),
1788       (__v16hf)__C);
1789 }
1790 
1791 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fcmul_pch(__m128h __A,
1792                                                               __m128h __B) {
1793   return (__m128h)__builtin_ia32_vfcmulcph128_mask(
1794       (__v4sf)__A, (__v4sf)__B, (__v4sf)_mm_undefined_ph(), (__mmask8)-1);
1795 }
1796 
1797 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1798 _mm_mask_fcmul_pch(__m128h __W, __mmask8 __U, __m128h __A, __m128h __B) {
1799   return (__m128h)__builtin_ia32_vfcmulcph128_mask((__v4sf)__A, (__v4sf)__B,
1800                                                    (__v4sf)__W, (__mmask8)__U);
1801 }
1802 
1803 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1804 _mm_maskz_fcmul_pch(__mmask8 __U, __m128h __A, __m128h __B) {
1805   return (__m128h)__builtin_ia32_vfcmulcph128_mask(
1806       (__v4sf)__A, (__v4sf)__B, (__v4sf)_mm_setzero_ph(), (__mmask8)__U);
1807 }
1808 
1809 static __inline__ __m256h __DEFAULT_FN_ATTRS128 _mm256_fcmul_pch(__m256h __A,
1810                                                                  __m256h __B) {
1811   return (__m256h)__builtin_ia32_vfcmulcph256_mask(
1812       (__v8sf)__A, (__v8sf)__B, (__v8sf)_mm256_undefined_ph(), (__mmask8)-1);
1813 }
1814 
1815 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1816 _mm256_mask_fcmul_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) {
1817   return (__m256h)__builtin_ia32_vfcmulcph256_mask((__v8sf)__A, (__v8sf)__B,
1818                                                    (__v8sf)__W, (__mmask8)__U);
1819 }
1820 
1821 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1822 _mm256_maskz_fcmul_pch(__mmask8 __U, __m256h __A, __m256h __B) {
1823   return (__m256h)__builtin_ia32_vfcmulcph256_mask(
1824       (__v8sf)__A, (__v8sf)__B, (__v8sf)_mm256_setzero_ph(), (__mmask8)__U);
1825 }
1826 
1827 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fcmadd_pch(__m128h __A,
1828                                                                __m128h __B,
1829                                                                __m128h __C) {
1830   return (__m128h)__builtin_ia32_vfcmaddcph128_mask((__v4sf)__A, (__v4sf)__B,
1831                                                     (__v4sf)__C, (__mmask8)-1);
1832 }
1833 
1834 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1835 _mm_mask_fcmadd_pch(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
1836   return (__m128h)__builtin_ia32_selectps_128(
1837       __U,
1838       __builtin_ia32_vfcmaddcph128_mask((__v4sf)__A, (__v4sf)(__m128h)__B,
1839                                         (__v4sf)__C, (__mmask8)__U),
1840       (__v4sf)__A);
1841 }
1842 
1843 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1844 _mm_mask3_fcmadd_pch(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1845   return (__m128h)__builtin_ia32_vfcmaddcph128_mask((__v4sf)__A, (__v4sf)__B,
1846                                                     (__v4sf)__C, (__mmask8)__U);
1847 }
1848 
1849 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1850 _mm_maskz_fcmadd_pch(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1851   return (__m128h)__builtin_ia32_vfcmaddcph128_maskz(
1852       (__v4sf)__A, (__v4sf)__B, (__v4sf)__C, (__mmask8)__U);
1853 }
1854 
1855 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fcmadd_pch(__m256h __A,
1856                                                                   __m256h __B,
1857                                                                   __m256h __C) {
1858   return (__m256h)__builtin_ia32_vfcmaddcph256_mask((__v8sf)__A, (__v8sf)__B,
1859                                                     (__v8sf)__C, (__mmask8)-1);
1860 }
1861 
1862 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1863 _mm256_mask_fcmadd_pch(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) {
1864   return (__m256h)__builtin_ia32_selectps_256(
1865       __U,
1866       __builtin_ia32_vfcmaddcph256_mask((__v8sf)__A, (__v8sf)__B, (__v8sf)__C,
1867                                         (__mmask8)__U),
1868       (__v8sf)__A);
1869 }
1870 
1871 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1872 _mm256_mask3_fcmadd_pch(__m256h __A, __m256h __B, __m256h __C, __mmask8 __U) {
1873   return (__m256h)__builtin_ia32_vfcmaddcph256_mask((__v8sf)__A, (__v8sf)__B,
1874                                                     (__v8sf)__C, (__mmask8)__U);
1875 }
1876 
1877 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1878 _mm256_maskz_fcmadd_pch(__mmask8 __U, __m256h __A, __m256h __B, __m256h __C) {
1879   return (__m256h)__builtin_ia32_vfcmaddcph256_maskz(
1880       (__v8sf)__A, (__v8sf)__B, (__v8sf)__C, (__mmask8)__U);
1881 }
1882 
1883 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fmul_pch(__m128h __A,
1884                                                              __m128h __B) {
1885   return (__m128h)__builtin_ia32_vfmulcph128_mask(
1886       (__v4sf)__A, (__v4sf)__B, (__v4sf)_mm_undefined_ph(), (__mmask8)-1);
1887 }
1888 
1889 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_fmul_pch(__m128h __W,
1890                                                                   __mmask8 __U,
1891                                                                   __m128h __A,
1892                                                                   __m128h __B) {
1893   return (__m128h)__builtin_ia32_vfmulcph128_mask((__v4sf)__A, (__v4sf)__B,
1894                                                   (__v4sf)__W, (__mmask8)__U);
1895 }
1896 
1897 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1898 _mm_maskz_fmul_pch(__mmask8 __U, __m128h __A, __m128h __B) {
1899   return (__m128h)__builtin_ia32_vfmulcph128_mask(
1900       (__v4sf)__A, (__v4sf)__B, (__v4sf)_mm_setzero_ph(), (__mmask8)__U);
1901 }
1902 
1903 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fmul_pch(__m256h __A,
1904                                                                 __m256h __B) {
1905   return (__m256h)__builtin_ia32_vfmulcph256_mask(
1906       (__v8sf)__A, (__v8sf)__B, (__v8sf)_mm256_undefined_ph(), (__mmask8)-1);
1907 }
1908 
1909 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1910 _mm256_mask_fmul_pch(__m256h __W, __mmask8 __U, __m256h __A, __m256h __B) {
1911   return (__m256h)__builtin_ia32_vfmulcph256_mask((__v8sf)__A, (__v8sf)__B,
1912                                                   (__v8sf)__W, (__mmask8)__U);
1913 }
1914 
1915 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1916 _mm256_maskz_fmul_pch(__mmask8 __U, __m256h __A, __m256h __B) {
1917   return (__m256h)__builtin_ia32_vfmulcph256_mask(
1918       (__v8sf)__A, (__v8sf)__B, (__v8sf)_mm256_setzero_ph(), (__mmask8)__U);
1919 }
1920 
1921 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_fmadd_pch(__m128h __A,
1922                                                               __m128h __B,
1923                                                               __m128h __C) {
1924   return (__m128h)__builtin_ia32_vfmaddcph128_mask((__v4sf)__A, (__v4sf)__B,
1925                                                    (__v4sf)__C, (__mmask8)-1);
1926 }
1927 
1928 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1929 _mm_mask_fmadd_pch(__m128h __A, __mmask8 __U, __m128h __B, __m128h __C) {
1930   return (__m128h)__builtin_ia32_selectps_128(
1931       __U,
1932       __builtin_ia32_vfmaddcph128_mask((__v4sf)__A, (__v4sf)__B, (__v4sf)__C,
1933                                        (__mmask8)__U),
1934       (__v4sf)__A);
1935 }
1936 
1937 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1938 _mm_mask3_fmadd_pch(__m128h __A, __m128h __B, __m128h __C, __mmask8 __U) {
1939   return (__m128h)__builtin_ia32_vfmaddcph128_mask((__v4sf)__A, (__v4sf)__B,
1940                                                    (__v4sf)__C, (__mmask8)__U);
1941 }
1942 
1943 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1944 _mm_maskz_fmadd_pch(__mmask8 __U, __m128h __A, __m128h __B, __m128h __C) {
1945   return (__m128h)__builtin_ia32_vfmaddcph128_maskz((__v4sf)__A, (__v4sf)__B,
1946                                                     (__v4sf)__C, (__mmask8)__U);
1947 }
1948 
1949 static __inline__ __m256h __DEFAULT_FN_ATTRS256 _mm256_fmadd_pch(__m256h __A,
1950                                                                  __m256h __B,
1951                                                                  __m256h __C) {
1952   return (__m256h)__builtin_ia32_vfmaddcph256_mask((__v8sf)__A, (__v8sf)__B,
1953                                                    (__v8sf)__C, (__mmask8)-1);
1954 }
1955 
1956 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1957 _mm256_mask_fmadd_pch(__m256h __A, __mmask8 __U, __m256h __B, __m256h __C) {
1958   return (__m256h)__builtin_ia32_selectps_256(
1959       __U,
1960       __builtin_ia32_vfmaddcph256_mask((__v8sf)__A, (__v8sf)__B, (__v8sf)__C,
1961                                        (__mmask8)__U),
1962       (__v8sf)__A);
1963 }
1964 
1965 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1966 _mm256_mask3_fmadd_pch(__m256h __A, __m256h __B, __m256h __C, __mmask8 __U) {
1967   return (__m256h)__builtin_ia32_vfmaddcph256_mask((__v8sf)__A, (__v8sf)__B,
1968                                                    (__v8sf)__C, (__mmask8)__U);
1969 }
1970 
1971 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1972 _mm256_maskz_fmadd_pch(__mmask8 __U, __m256h __A, __m256h __B, __m256h __C) {
1973   return (__m256h)__builtin_ia32_vfmaddcph256_maskz((__v8sf)__A, (__v8sf)__B,
1974                                                     (__v8sf)__C, (__mmask8)__U);
1975 }
1976 
1977 static __inline__ __m128h __DEFAULT_FN_ATTRS128 _mm_mask_blend_ph(__mmask8 __U,
1978                                                                   __m128h __A,
1979                                                                   __m128h __W) {
1980   return (__m128h)__builtin_ia32_selectph_128((__mmask8)__U, (__v8hf)__W,
1981                                               (__v8hf)__A);
1982 }
1983 
1984 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1985 _mm256_mask_blend_ph(__mmask16 __U, __m256h __A, __m256h __W) {
1986   return (__m256h)__builtin_ia32_selectph_256((__mmask16)__U, (__v16hf)__W,
1987                                               (__v16hf)__A);
1988 }
1989 
1990 static __inline__ __m128h __DEFAULT_FN_ATTRS128
1991 _mm_permutex2var_ph(__m128h __A, __m128i __I, __m128h __B) {
1992   return (__m128h)__builtin_ia32_vpermi2varhi128((__v8hi)__A, (__v8hi)__I,
1993                                                  (__v8hi)__B);
1994 }
1995 
1996 static __inline__ __m256h __DEFAULT_FN_ATTRS256
1997 _mm256_permutex2var_ph(__m256h __A, __m256i __I, __m256h __B) {
1998   return (__m256h)__builtin_ia32_vpermi2varhi256((__v16hi)__A, (__v16hi)__I,
1999                                                  (__v16hi)__B);
2000 }
2001 
2002 static __inline__ __m128h __DEFAULT_FN_ATTRS128
2003 _mm_permutexvar_ph(__m128i __A, __m128h __B) {
2004   return (__m128h)__builtin_ia32_permvarhi128((__v8hi)__B, (__v8hi)__A);
2005 }
2006 
2007 static __inline__ __m256h __DEFAULT_FN_ATTRS256
2008 _mm256_permutexvar_ph(__m256i __A, __m256h __B) {
2009   return (__m256h)__builtin_ia32_permvarhi256((__v16hi)__B, (__v16hi)__A);
2010 }
2011 
2012 static __inline__ _Float16 __DEFAULT_FN_ATTRS256
2013 _mm256_reduce_add_ph(__m256h __W) {
2014   return __builtin_ia32_reduce_fadd_ph256(-0.0f16, __W);
2015 }
2016 
2017 static __inline__ _Float16 __DEFAULT_FN_ATTRS256
2018 _mm256_reduce_mul_ph(__m256h __W) {
2019   return __builtin_ia32_reduce_fmul_ph256(1.0f16, __W);
2020 }
2021 
2022 static __inline__ _Float16 __DEFAULT_FN_ATTRS256
2023 _mm256_reduce_max_ph(__m256h __V) {
2024   return __builtin_ia32_reduce_fmax_ph256(__V);
2025 }
2026 
2027 static __inline__ _Float16 __DEFAULT_FN_ATTRS256
2028 _mm256_reduce_min_ph(__m256h __V) {
2029   return __builtin_ia32_reduce_fmin_ph256(__V);
2030 }
2031 
2032 static __inline__ _Float16 __DEFAULT_FN_ATTRS128
2033 _mm_reduce_add_ph(__m128h __W) {
2034   return __builtin_ia32_reduce_fadd_ph128(-0.0f16, __W);
2035 }
2036 
2037 static __inline__ _Float16 __DEFAULT_FN_ATTRS128
2038 _mm_reduce_mul_ph(__m128h __W) {
2039   return __builtin_ia32_reduce_fmul_ph128(1.0f16, __W);
2040 }
2041 
2042 static __inline__ _Float16 __DEFAULT_FN_ATTRS128
2043 _mm_reduce_max_ph(__m128h __V) {
2044   return __builtin_ia32_reduce_fmax_ph128(__V);
2045 }
2046 
2047 static __inline__ _Float16 __DEFAULT_FN_ATTRS128
2048 _mm_reduce_min_ph(__m128h __V) {
2049   return __builtin_ia32_reduce_fmin_ph128(__V);
2050 }
2051 
2052 // intrinsics below are alias for f*mul_*ch
2053 #define _mm_mul_pch(A, B) _mm_fmul_pch(A, B)
2054 #define _mm_mask_mul_pch(W, U, A, B) _mm_mask_fmul_pch(W, U, A, B)
2055 #define _mm_maskz_mul_pch(U, A, B) _mm_maskz_fmul_pch(U, A, B)
2056 #define _mm256_mul_pch(A, B) _mm256_fmul_pch(A, B)
2057 #define _mm256_mask_mul_pch(W, U, A, B) _mm256_mask_fmul_pch(W, U, A, B)
2058 #define _mm256_maskz_mul_pch(U, A, B) _mm256_maskz_fmul_pch(U, A, B)
2059 
2060 #define _mm_cmul_pch(A, B) _mm_fcmul_pch(A, B)
2061 #define _mm_mask_cmul_pch(W, U, A, B) _mm_mask_fcmul_pch(W, U, A, B)
2062 #define _mm_maskz_cmul_pch(U, A, B) _mm_maskz_fcmul_pch(U, A, B)
2063 #define _mm256_cmul_pch(A, B) _mm256_fcmul_pch(A, B)
2064 #define _mm256_mask_cmul_pch(W, U, A, B) _mm256_mask_fcmul_pch(W, U, A, B)
2065 #define _mm256_maskz_cmul_pch(U, A, B) _mm256_maskz_fcmul_pch(U, A, B)
2066 
2067 #undef __DEFAULT_FN_ATTRS128
2068 #undef __DEFAULT_FN_ATTRS256
2069 
2070 #endif
2071 #endif
2072