1 /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
8 any later version.
9
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
18
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
23
24 #ifndef _IMMINTRIN_H_INCLUDED
25 #error "Never use <avx512fp16vlintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef __AVX512FP16VLINTRIN_H_INCLUDED
29 #define __AVX512FP16VLINTRIN_H_INCLUDED
30
31 #if !defined(__AVX512VL__) || !defined(__AVX512FP16__)
32 #pragma GCC push_options
33 #pragma GCC target("avx512fp16,avx512vl")
34 #define __DISABLE_AVX512FP16VL__
35 #endif /* __AVX512FP16VL__ */
36
37 extern __inline __m128
38 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_castph_ps(__m128h __a)39 _mm_castph_ps (__m128h __a)
40 {
41 return (__m128) __a;
42 }
43
44 extern __inline __m256
45 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castph_ps(__m256h __a)46 _mm256_castph_ps (__m256h __a)
47 {
48 return (__m256) __a;
49 }
50
51 extern __inline __m128d
52 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_castph_pd(__m128h __a)53 _mm_castph_pd (__m128h __a)
54 {
55 return (__m128d) __a;
56 }
57
58 extern __inline __m256d
59 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castph_pd(__m256h __a)60 _mm256_castph_pd (__m256h __a)
61 {
62 return (__m256d) __a;
63 }
64
65 extern __inline __m128i
66 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_castph_si128(__m128h __a)67 _mm_castph_si128 (__m128h __a)
68 {
69 return (__m128i) __a;
70 }
71
72 extern __inline __m256i
73 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castph_si256(__m256h __a)74 _mm256_castph_si256 (__m256h __a)
75 {
76 return (__m256i) __a;
77 }
78
79 extern __inline __m128h
80 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_castps_ph(__m128 __a)81 _mm_castps_ph (__m128 __a)
82 {
83 return (__m128h) __a;
84 }
85
86 extern __inline __m256h
87 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castps_ph(__m256 __a)88 _mm256_castps_ph (__m256 __a)
89 {
90 return (__m256h) __a;
91 }
92
93 extern __inline __m128h
94 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_castpd_ph(__m128d __a)95 _mm_castpd_ph (__m128d __a)
96 {
97 return (__m128h) __a;
98 }
99
100 extern __inline __m256h
101 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castpd_ph(__m256d __a)102 _mm256_castpd_ph (__m256d __a)
103 {
104 return (__m256h) __a;
105 }
106
107 extern __inline __m128h
108 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_castsi128_ph(__m128i __a)109 _mm_castsi128_ph (__m128i __a)
110 {
111 return (__m128h) __a;
112 }
113
114 extern __inline __m256h
115 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castsi256_ph(__m256i __a)116 _mm256_castsi256_ph (__m256i __a)
117 {
118 return (__m256h) __a;
119 }
120
121 extern __inline __m128h
122 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castph256_ph128(__m256h __A)123 _mm256_castph256_ph128 (__m256h __A)
124 {
125 union
126 {
127 __m128h __a[2];
128 __m256h __v;
129 } __u = { .__v = __A };
130 return __u.__a[0];
131 }
132
133 extern __inline __m256h
134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_castph128_ph256(__m128h __A)135 _mm256_castph128_ph256 (__m128h __A)
136 {
137 union
138 {
139 __m128h __a[2];
140 __m256h __v;
141 } __u;
142 __u.__a[0] = __A;
143 return __u.__v;
144 }
145
146 extern __inline __m256h
147 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_zextph128_ph256(__m128h __A)148 _mm256_zextph128_ph256 (__m128h __A)
149 {
150 return (__m256h) _mm256_insertf128_ps (_mm256_setzero_ps (),
151 (__m128) __A, 0);
152 }
153
154 extern __inline __m256h
155 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_conj_pch(__m256h __A)156 _mm256_conj_pch (__m256h __A)
157 {
158 return (__m256h) _mm256_xor_epi32 ((__m256i) __A, _mm256_set1_epi32 (1<<31));
159 }
160
161 extern __inline __m256h
162 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_conj_pch(__m256h __W,__mmask8 __U,__m256h __A)163 _mm256_mask_conj_pch (__m256h __W, __mmask8 __U, __m256h __A)
164 {
165 return (__m256h) __builtin_ia32_movaps256_mask ((__v8sf)
166 _mm256_conj_pch (__A),
167 (__v8sf) __W,
168 (__mmask8) __U);
169 }
170
171 extern __inline __m256h
172 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_conj_pch(__mmask8 __U,__m256h __A)173 _mm256_maskz_conj_pch (__mmask8 __U, __m256h __A)
174 {
175 return (__m256h) __builtin_ia32_movaps256_mask ((__v8sf)
176 _mm256_conj_pch (__A),
177 (__v8sf)
178 _mm256_setzero_ps (),
179 (__mmask8) __U);
180 }
181
182 extern __inline __m128h
183 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_conj_pch(__m128h __A)184 _mm_conj_pch (__m128h __A)
185 {
186 return (__m128h) _mm_xor_epi32 ((__m128i) __A, _mm_set1_epi32 (1<<31));
187 }
188
189 extern __inline __m128h
190 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_conj_pch(__m128h __W,__mmask8 __U,__m128h __A)191 _mm_mask_conj_pch (__m128h __W, __mmask8 __U, __m128h __A)
192 {
193 return (__m128h) __builtin_ia32_movaps128_mask ((__v4sf) _mm_conj_pch (__A),
194 (__v4sf) __W,
195 (__mmask8) __U);
196 }
197
198 extern __inline __m128h
199 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_conj_pch(__mmask8 __U,__m128h __A)200 _mm_maskz_conj_pch (__mmask8 __U, __m128h __A)
201 {
202 return (__m128h) __builtin_ia32_movaps128_mask ((__v4sf) _mm_conj_pch (__A),
203 (__v4sf) _mm_setzero_ps (),
204 (__mmask8) __U);
205 }
206
207 /* Intrinsics v[add,sub,mul,div]ph. */
208 extern __inline __m128h
209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_add_ph(__m128h __A,__m128h __B)210 _mm_add_ph (__m128h __A, __m128h __B)
211 {
212 return (__m128h) ((__v8hf) __A + (__v8hf) __B);
213 }
214
215 extern __inline __m256h
216 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_add_ph(__m256h __A,__m256h __B)217 _mm256_add_ph (__m256h __A, __m256h __B)
218 {
219 return (__m256h) ((__v16hf) __A + (__v16hf) __B);
220 }
221
222 extern __inline __m128h
223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_add_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)224 _mm_mask_add_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
225 {
226 return __builtin_ia32_addph128_mask (__C, __D, __A, __B);
227 }
228
229 extern __inline __m256h
230 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_add_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)231 _mm256_mask_add_ph (__m256h __A, __mmask16 __B, __m256h __C, __m256h __D)
232 {
233 return __builtin_ia32_addph256_mask (__C, __D, __A, __B);
234 }
235
236 extern __inline __m128h
237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_add_ph(__mmask8 __A,__m128h __B,__m128h __C)238 _mm_maskz_add_ph (__mmask8 __A, __m128h __B, __m128h __C)
239 {
240 return __builtin_ia32_addph128_mask (__B, __C, _mm_setzero_ph (),
241 __A);
242 }
243
244 extern __inline __m256h
245 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_add_ph(__mmask16 __A,__m256h __B,__m256h __C)246 _mm256_maskz_add_ph (__mmask16 __A, __m256h __B, __m256h __C)
247 {
248 return __builtin_ia32_addph256_mask (__B, __C,
249 _mm256_setzero_ph (), __A);
250 }
251
252 extern __inline __m128h
253 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_sub_ph(__m128h __A,__m128h __B)254 _mm_sub_ph (__m128h __A, __m128h __B)
255 {
256 return (__m128h) ((__v8hf) __A - (__v8hf) __B);
257 }
258
259 extern __inline __m256h
260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_sub_ph(__m256h __A,__m256h __B)261 _mm256_sub_ph (__m256h __A, __m256h __B)
262 {
263 return (__m256h) ((__v16hf) __A - (__v16hf) __B);
264 }
265
266 extern __inline __m128h
267 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_sub_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)268 _mm_mask_sub_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
269 {
270 return __builtin_ia32_subph128_mask (__C, __D, __A, __B);
271 }
272
273 extern __inline __m256h
274 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_sub_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)275 _mm256_mask_sub_ph (__m256h __A, __mmask16 __B, __m256h __C, __m256h __D)
276 {
277 return __builtin_ia32_subph256_mask (__C, __D, __A, __B);
278 }
279
280 extern __inline __m128h
281 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_sub_ph(__mmask8 __A,__m128h __B,__m128h __C)282 _mm_maskz_sub_ph (__mmask8 __A, __m128h __B, __m128h __C)
283 {
284 return __builtin_ia32_subph128_mask (__B, __C, _mm_setzero_ph (),
285 __A);
286 }
287
288 extern __inline __m256h
289 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_sub_ph(__mmask16 __A,__m256h __B,__m256h __C)290 _mm256_maskz_sub_ph (__mmask16 __A, __m256h __B, __m256h __C)
291 {
292 return __builtin_ia32_subph256_mask (__B, __C,
293 _mm256_setzero_ph (), __A);
294 }
295
296 extern __inline __m128h
297 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mul_ph(__m128h __A,__m128h __B)298 _mm_mul_ph (__m128h __A, __m128h __B)
299 {
300 return (__m128h) ((__v8hf) __A * (__v8hf) __B);
301 }
302
303 extern __inline __m256h
304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mul_ph(__m256h __A,__m256h __B)305 _mm256_mul_ph (__m256h __A, __m256h __B)
306 {
307 return (__m256h) ((__v16hf) __A * (__v16hf) __B);
308 }
309
310 extern __inline __m128h
311 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_mul_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)312 _mm_mask_mul_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
313 {
314 return __builtin_ia32_mulph128_mask (__C, __D, __A, __B);
315 }
316
317 extern __inline __m256h
318 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_mul_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)319 _mm256_mask_mul_ph (__m256h __A, __mmask16 __B, __m256h __C, __m256h __D)
320 {
321 return __builtin_ia32_mulph256_mask (__C, __D, __A, __B);
322 }
323
324 extern __inline __m128h
325 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_mul_ph(__mmask8 __A,__m128h __B,__m128h __C)326 _mm_maskz_mul_ph (__mmask8 __A, __m128h __B, __m128h __C)
327 {
328 return __builtin_ia32_mulph128_mask (__B, __C, _mm_setzero_ph (),
329 __A);
330 }
331
332 extern __inline __m256h
333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_mul_ph(__mmask16 __A,__m256h __B,__m256h __C)334 _mm256_maskz_mul_ph (__mmask16 __A, __m256h __B, __m256h __C)
335 {
336 return __builtin_ia32_mulph256_mask (__B, __C,
337 _mm256_setzero_ph (), __A);
338 }
339
340 extern __inline __m128h
341 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_div_ph(__m128h __A,__m128h __B)342 _mm_div_ph (__m128h __A, __m128h __B)
343 {
344 return (__m128h) ((__v8hf) __A / (__v8hf) __B);
345 }
346
347 extern __inline __m256h
348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_div_ph(__m256h __A,__m256h __B)349 _mm256_div_ph (__m256h __A, __m256h __B)
350 {
351 return (__m256h) ((__v16hf) __A / (__v16hf) __B);
352 }
353
354 extern __inline __m128h
355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_div_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)356 _mm_mask_div_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
357 {
358 return __builtin_ia32_divph128_mask (__C, __D, __A, __B);
359 }
360
361 extern __inline __m256h
362 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_div_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)363 _mm256_mask_div_ph (__m256h __A, __mmask16 __B, __m256h __C, __m256h __D)
364 {
365 return __builtin_ia32_divph256_mask (__C, __D, __A, __B);
366 }
367
368 extern __inline __m128h
369 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_div_ph(__mmask8 __A,__m128h __B,__m128h __C)370 _mm_maskz_div_ph (__mmask8 __A, __m128h __B, __m128h __C)
371 {
372 return __builtin_ia32_divph128_mask (__B, __C, _mm_setzero_ph (),
373 __A);
374 }
375
376 extern __inline __m256h
377 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_div_ph(__mmask16 __A,__m256h __B,__m256h __C)378 _mm256_maskz_div_ph (__mmask16 __A, __m256h __B, __m256h __C)
379 {
380 return __builtin_ia32_divph256_mask (__B, __C,
381 _mm256_setzero_ph (), __A);
382 }
383
384 /* Intrinsics v[max,min]ph. */
385 extern __inline __m128h
386 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_max_ph(__m128h __A,__m128h __B)387 _mm_max_ph (__m128h __A, __m128h __B)
388 {
389 return __builtin_ia32_maxph128_mask (__A, __B,
390 _mm_setzero_ph (),
391 (__mmask8) -1);
392 }
393
394 extern __inline __m256h
395 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_max_ph(__m256h __A,__m256h __B)396 _mm256_max_ph (__m256h __A, __m256h __B)
397 {
398 return __builtin_ia32_maxph256_mask (__A, __B,
399 _mm256_setzero_ph (),
400 (__mmask16) -1);
401 }
402
403 extern __inline __m128h
404 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_max_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)405 _mm_mask_max_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
406 {
407 return __builtin_ia32_maxph128_mask (__C, __D, __A, __B);
408 }
409
410 extern __inline __m256h
411 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_max_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)412 _mm256_mask_max_ph (__m256h __A, __mmask16 __B, __m256h __C, __m256h __D)
413 {
414 return __builtin_ia32_maxph256_mask (__C, __D, __A, __B);
415 }
416
417 extern __inline __m128h
418 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_max_ph(__mmask8 __A,__m128h __B,__m128h __C)419 _mm_maskz_max_ph (__mmask8 __A, __m128h __B, __m128h __C)
420 {
421 return __builtin_ia32_maxph128_mask (__B, __C, _mm_setzero_ph (),
422 __A);
423 }
424
425 extern __inline __m256h
426 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_max_ph(__mmask16 __A,__m256h __B,__m256h __C)427 _mm256_maskz_max_ph (__mmask16 __A, __m256h __B, __m256h __C)
428 {
429 return __builtin_ia32_maxph256_mask (__B, __C,
430 _mm256_setzero_ph (), __A);
431 }
432
433 extern __inline __m128h
434 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_min_ph(__m128h __A,__m128h __B)435 _mm_min_ph (__m128h __A, __m128h __B)
436 {
437 return __builtin_ia32_minph128_mask (__A, __B,
438 _mm_setzero_ph (),
439 (__mmask8) -1);
440 }
441
442 extern __inline __m256h
443 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_min_ph(__m256h __A,__m256h __B)444 _mm256_min_ph (__m256h __A, __m256h __B)
445 {
446 return __builtin_ia32_minph256_mask (__A, __B,
447 _mm256_setzero_ph (),
448 (__mmask16) -1);
449 }
450
451 extern __inline __m128h
452 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_min_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)453 _mm_mask_min_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
454 {
455 return __builtin_ia32_minph128_mask (__C, __D, __A, __B);
456 }
457
458 extern __inline __m256h
459 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_min_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)460 _mm256_mask_min_ph (__m256h __A, __mmask16 __B, __m256h __C, __m256h __D)
461 {
462 return __builtin_ia32_minph256_mask (__C, __D, __A, __B);
463 }
464
465 extern __inline __m128h
466 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_min_ph(__mmask8 __A,__m128h __B,__m128h __C)467 _mm_maskz_min_ph (__mmask8 __A, __m128h __B, __m128h __C)
468 {
469 return __builtin_ia32_minph128_mask (__B, __C, _mm_setzero_ph (),
470 __A);
471 }
472
473 extern __inline __m256h
474 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_min_ph(__mmask16 __A,__m256h __B,__m256h __C)475 _mm256_maskz_min_ph (__mmask16 __A, __m256h __B, __m256h __C)
476 {
477 return __builtin_ia32_minph256_mask (__B, __C,
478 _mm256_setzero_ph (), __A);
479 }
480
481 extern __inline __m128h
482 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_abs_ph(__m128h __A)483 _mm_abs_ph (__m128h __A)
484 {
485 return (__m128h) _mm_and_si128 ( _mm_set1_epi32 (0x7FFF7FFF),
486 (__m128i) __A);
487 }
488
489 extern __inline __m256h
490 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_abs_ph(__m256h __A)491 _mm256_abs_ph (__m256h __A)
492 {
493 return (__m256h) _mm256_and_si256 ( _mm256_set1_epi32 (0x7FFF7FFF),
494 (__m256i) __A);
495 }
496
497 /* vcmpph */
498 #ifdef __OPTIMIZE
499 extern __inline __mmask8
500 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cmp_ph_mask(__m128h __A,__m128h __B,const int __C)501 _mm_cmp_ph_mask (__m128h __A, __m128h __B, const int __C)
502 {
503 return (__mmask8) __builtin_ia32_cmpph128_mask (__A, __B, __C,
504 (__mmask8) -1);
505 }
506
507 extern __inline __mmask8
508 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cmp_ph_mask(__mmask8 __A,__m128h __B,__m128h __C,const int __D)509 _mm_mask_cmp_ph_mask (__mmask8 __A, __m128h __B, __m128h __C,
510 const int __D)
511 {
512 return (__mmask8) __builtin_ia32_cmpph128_mask (__B, __C, __D, __A);
513 }
514
515 extern __inline __mmask16
516 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cmp_ph_mask(__m256h __A,__m256h __B,const int __C)517 _mm_cmp_ph_mask (__m256h __A, __m256h __B, const int __C)
518 {
519 return (__mmask16) __builtin_ia32_cmpph256_mask (__A, __B, __C,
520 (__mmask16) -1);
521 }
522
523 extern __inline __mmask16
524 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cmp_ph_mask(__mmask16 __A,__m256h __B,__m256h __C,const int __D)525 _mm_mask_cmp_ph_mask (__mmask16 __A, __m256h __B, __m256h __C,
526 const int __D)
527 {
528 return (__mmask16) __builtin_ia32_cmpph256_mask (__B, __C, __D,
529 __A);
530 }
531
532 #else
533 #define _mm_cmp_ph_mask(A, B, C) \
534 (__builtin_ia32_cmpph128_mask ((A), (B), (C), (-1)))
535
536 #define _mm_mask_cmp_ph_mask(A, B, C, D) \
537 (__builtin_ia32_cmpph128_mask ((B), (C), (D), (A)))
538
539 #define _mm256_cmp_ph_mask(A, B, C) \
540 (__builtin_ia32_cmpph256_mask ((A), (B), (C), (-1)))
541
542 #define _mm256_mask_cmp_ph_mask(A, B, C, D) \
543 (__builtin_ia32_cmpph256_mask ((B), (C), (D), (A)))
544
545 #endif /* __OPTIMIZE__ */
546
547 /* Intrinsics vsqrtph. */
548 extern __inline __m128h
549 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_sqrt_ph(__m128h __A)550 _mm_sqrt_ph (__m128h __A)
551 {
552 return __builtin_ia32_sqrtph128_mask (__A, _mm_setzero_ph (),
553 (__mmask8) -1);
554 }
555
556 extern __inline __m256h
557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_sqrt_ph(__m256h __A)558 _mm256_sqrt_ph (__m256h __A)
559 {
560 return __builtin_ia32_sqrtph256_mask (__A, _mm256_setzero_ph (),
561 (__mmask16) -1);
562 }
563
564 extern __inline __m128h
565 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_sqrt_ph(__m128h __A,__mmask8 __B,__m128h __C)566 _mm_mask_sqrt_ph (__m128h __A, __mmask8 __B, __m128h __C)
567 {
568 return __builtin_ia32_sqrtph128_mask (__C, __A, __B);
569 }
570
571 extern __inline __m256h
572 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_sqrt_ph(__m256h __A,__mmask16 __B,__m256h __C)573 _mm256_mask_sqrt_ph (__m256h __A, __mmask16 __B, __m256h __C)
574 {
575 return __builtin_ia32_sqrtph256_mask (__C, __A, __B);
576 }
577
578 extern __inline __m128h
579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_sqrt_ph(__mmask8 __A,__m128h __B)580 _mm_maskz_sqrt_ph (__mmask8 __A, __m128h __B)
581 {
582 return __builtin_ia32_sqrtph128_mask (__B, _mm_setzero_ph (),
583 __A);
584 }
585
586 extern __inline __m256h
587 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_sqrt_ph(__mmask16 __A,__m256h __B)588 _mm256_maskz_sqrt_ph (__mmask16 __A, __m256h __B)
589 {
590 return __builtin_ia32_sqrtph256_mask (__B, _mm256_setzero_ph (),
591 __A);
592 }
593
594 /* Intrinsics vrsqrtph. */
595 extern __inline __m128h
596 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_rsqrt_ph(__m128h __A)597 _mm_rsqrt_ph (__m128h __A)
598 {
599 return __builtin_ia32_rsqrtph128_mask (__A, _mm_setzero_ph (),
600 (__mmask8) -1);
601 }
602
603 extern __inline __m256h
604 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_rsqrt_ph(__m256h __A)605 _mm256_rsqrt_ph (__m256h __A)
606 {
607 return __builtin_ia32_rsqrtph256_mask (__A, _mm256_setzero_ph (),
608 (__mmask16) -1);
609 }
610
611 extern __inline __m128h
612 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_rsqrt_ph(__m128h __A,__mmask8 __B,__m128h __C)613 _mm_mask_rsqrt_ph (__m128h __A, __mmask8 __B, __m128h __C)
614 {
615 return __builtin_ia32_rsqrtph128_mask (__C, __A, __B);
616 }
617
618 extern __inline __m256h
619 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_rsqrt_ph(__m256h __A,__mmask16 __B,__m256h __C)620 _mm256_mask_rsqrt_ph (__m256h __A, __mmask16 __B, __m256h __C)
621 {
622 return __builtin_ia32_rsqrtph256_mask (__C, __A, __B);
623 }
624
625 extern __inline __m128h
626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_rsqrt_ph(__mmask8 __A,__m128h __B)627 _mm_maskz_rsqrt_ph (__mmask8 __A, __m128h __B)
628 {
629 return __builtin_ia32_rsqrtph128_mask (__B, _mm_setzero_ph (), __A);
630 }
631
632 extern __inline __m256h
633 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_rsqrt_ph(__mmask16 __A,__m256h __B)634 _mm256_maskz_rsqrt_ph (__mmask16 __A, __m256h __B)
635 {
636 return __builtin_ia32_rsqrtph256_mask (__B, _mm256_setzero_ph (),
637 __A);
638 }
639
640 /* Intrinsics vrcpph. */
641 extern __inline __m128h
642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_rcp_ph(__m128h __A)643 _mm_rcp_ph (__m128h __A)
644 {
645 return __builtin_ia32_rcpph128_mask (__A, _mm_setzero_ph (),
646 (__mmask8) -1);
647 }
648
649 extern __inline __m256h
650 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_rcp_ph(__m256h __A)651 _mm256_rcp_ph (__m256h __A)
652 {
653 return __builtin_ia32_rcpph256_mask (__A, _mm256_setzero_ph (),
654 (__mmask16) -1);
655 }
656
657 extern __inline __m128h
658 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_rcp_ph(__m128h __A,__mmask8 __B,__m128h __C)659 _mm_mask_rcp_ph (__m128h __A, __mmask8 __B, __m128h __C)
660 {
661 return __builtin_ia32_rcpph128_mask (__C, __A, __B);
662 }
663
664 extern __inline __m256h
665 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_rcp_ph(__m256h __A,__mmask16 __B,__m256h __C)666 _mm256_mask_rcp_ph (__m256h __A, __mmask16 __B, __m256h __C)
667 {
668 return __builtin_ia32_rcpph256_mask (__C, __A, __B);
669 }
670
671 extern __inline __m128h
672 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_rcp_ph(__mmask8 __A,__m128h __B)673 _mm_maskz_rcp_ph (__mmask8 __A, __m128h __B)
674 {
675 return __builtin_ia32_rcpph128_mask (__B, _mm_setzero_ph (), __A);
676 }
677
678 extern __inline __m256h
679 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_rcp_ph(__mmask16 __A,__m256h __B)680 _mm256_maskz_rcp_ph (__mmask16 __A, __m256h __B)
681 {
682 return __builtin_ia32_rcpph256_mask (__B, _mm256_setzero_ph (),
683 __A);
684 }
685
686 /* Intrinsics vscalefph. */
687 extern __inline __m128h
688 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_scalef_ph(__m128h __A,__m128h __B)689 _mm_scalef_ph (__m128h __A, __m128h __B)
690 {
691 return __builtin_ia32_scalefph128_mask (__A, __B,
692 _mm_setzero_ph (),
693 (__mmask8) -1);
694 }
695
696 extern __inline __m256h
697 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_scalef_ph(__m256h __A,__m256h __B)698 _mm256_scalef_ph (__m256h __A, __m256h __B)
699 {
700 return __builtin_ia32_scalefph256_mask (__A, __B,
701 _mm256_setzero_ph (),
702 (__mmask16) -1);
703 }
704
705 extern __inline __m128h
706 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_scalef_ph(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)707 _mm_mask_scalef_ph (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
708 {
709 return __builtin_ia32_scalefph128_mask (__C, __D, __A, __B);
710 }
711
712 extern __inline __m256h
713 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_scalef_ph(__m256h __A,__mmask16 __B,__m256h __C,__m256h __D)714 _mm256_mask_scalef_ph (__m256h __A, __mmask16 __B, __m256h __C,
715 __m256h __D)
716 {
717 return __builtin_ia32_scalefph256_mask (__C, __D, __A, __B);
718 }
719
720 extern __inline __m128h
721 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_scalef_ph(__mmask8 __A,__m128h __B,__m128h __C)722 _mm_maskz_scalef_ph (__mmask8 __A, __m128h __B, __m128h __C)
723 {
724 return __builtin_ia32_scalefph128_mask (__B, __C,
725 _mm_setzero_ph (), __A);
726 }
727
728 extern __inline __m256h
729 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_scalef_ph(__mmask16 __A,__m256h __B,__m256h __C)730 _mm256_maskz_scalef_ph (__mmask16 __A, __m256h __B, __m256h __C)
731 {
732 return __builtin_ia32_scalefph256_mask (__B, __C,
733 _mm256_setzero_ph (),
734 __A);
735 }
736
737 /* Intrinsics vreduceph. */
738 #ifdef __OPTIMIZE__
739 extern __inline __m128h
740 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_reduce_ph(__m128h __A,int __B)741 _mm_reduce_ph (__m128h __A, int __B)
742 {
743 return __builtin_ia32_reduceph128_mask (__A, __B,
744 _mm_setzero_ph (),
745 (__mmask8) -1);
746 }
747
748 extern __inline __m128h
749 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_reduce_ph(__m128h __A,__mmask8 __B,__m128h __C,int __D)750 _mm_mask_reduce_ph (__m128h __A, __mmask8 __B, __m128h __C, int __D)
751 {
752 return __builtin_ia32_reduceph128_mask (__C, __D, __A, __B);
753 }
754
755 extern __inline __m128h
756 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_reduce_ph(__mmask8 __A,__m128h __B,int __C)757 _mm_maskz_reduce_ph (__mmask8 __A, __m128h __B, int __C)
758 {
759 return __builtin_ia32_reduceph128_mask (__B, __C,
760 _mm_setzero_ph (), __A);
761 }
762
763 extern __inline __m256h
764 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_reduce_ph(__m256h __A,int __B)765 _mm256_reduce_ph (__m256h __A, int __B)
766 {
767 return __builtin_ia32_reduceph256_mask (__A, __B,
768 _mm256_setzero_ph (),
769 (__mmask16) -1);
770 }
771
772 extern __inline __m256h
773 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_reduce_ph(__m256h __A,__mmask16 __B,__m256h __C,int __D)774 _mm256_mask_reduce_ph (__m256h __A, __mmask16 __B, __m256h __C, int __D)
775 {
776 return __builtin_ia32_reduceph256_mask (__C, __D, __A, __B);
777 }
778
779 extern __inline __m256h
780 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_reduce_ph(__mmask16 __A,__m256h __B,int __C)781 _mm256_maskz_reduce_ph (__mmask16 __A, __m256h __B, int __C)
782 {
783 return __builtin_ia32_reduceph256_mask (__B, __C,
784 _mm256_setzero_ph (),
785 __A);
786 }
787
788 #else
789 #define _mm_reduce_ph(A, B) \
790 (__builtin_ia32_reduceph128_mask ((A), (B), \
791 _mm_setzero_ph (), \
792 ((__mmask8)-1)))
793
794 #define _mm_mask_reduce_ph(A, B, C, D) \
795 (__builtin_ia32_reduceph128_mask ((C), (D), (A), (B)))
796
797 #define _mm_maskz_reduce_ph(A, B, C) \
798 (__builtin_ia32_reduceph128_mask ((B), (C), _mm_setzero_ph (), (A)))
799
800 #define _mm256_reduce_ph(A, B) \
801 (__builtin_ia32_reduceph256_mask ((A), (B), \
802 _mm256_setzero_ph (), \
803 ((__mmask16)-1)))
804
805 #define _mm256_mask_reduce_ph(A, B, C, D) \
806 (__builtin_ia32_reduceph256_mask ((C), (D), (A), (B)))
807
808 #define _mm256_maskz_reduce_ph(A, B, C) \
809 (__builtin_ia32_reduceph256_mask ((B), (C), _mm256_setzero_ph (), (A)))
810
811 #endif /* __OPTIMIZE__ */
812
813 /* Intrinsics vrndscaleph. */
814 #ifdef __OPTIMIZE__
815 extern __inline __m128h
816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_roundscale_ph(__m128h __A,int __B)817 _mm_roundscale_ph (__m128h __A, int __B)
818 {
819 return __builtin_ia32_rndscaleph128_mask (__A, __B,
820 _mm_setzero_ph (),
821 (__mmask8) -1);
822 }
823
824 extern __inline __m128h
825 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_roundscale_ph(__m128h __A,__mmask8 __B,__m128h __C,int __D)826 _mm_mask_roundscale_ph (__m128h __A, __mmask8 __B, __m128h __C, int __D)
827 {
828 return __builtin_ia32_rndscaleph128_mask (__C, __D, __A, __B);
829 }
830
831 extern __inline __m128h
832 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_roundscale_ph(__mmask8 __A,__m128h __B,int __C)833 _mm_maskz_roundscale_ph (__mmask8 __A, __m128h __B, int __C)
834 {
835 return __builtin_ia32_rndscaleph128_mask (__B, __C,
836 _mm_setzero_ph (), __A);
837 }
838
839 extern __inline __m256h
840 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_roundscale_ph(__m256h __A,int __B)841 _mm256_roundscale_ph (__m256h __A, int __B)
842 {
843 return __builtin_ia32_rndscaleph256_mask (__A, __B,
844 _mm256_setzero_ph (),
845 (__mmask16) -1);
846 }
847
848 extern __inline __m256h
849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_roundscale_ph(__m256h __A,__mmask16 __B,__m256h __C,int __D)850 _mm256_mask_roundscale_ph (__m256h __A, __mmask16 __B, __m256h __C,
851 int __D)
852 {
853 return __builtin_ia32_rndscaleph256_mask (__C, __D, __A, __B);
854 }
855
856 extern __inline __m256h
857 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_roundscale_ph(__mmask16 __A,__m256h __B,int __C)858 _mm256_maskz_roundscale_ph (__mmask16 __A, __m256h __B, int __C)
859 {
860 return __builtin_ia32_rndscaleph256_mask (__B, __C,
861 _mm256_setzero_ph (),
862 __A);
863 }
864
865 #else
866 #define _mm_roundscale_ph(A, B) \
867 (__builtin_ia32_rndscaleph128_mask ((A), (B), _mm_setzero_ph (), \
868 ((__mmask8)-1)))
869
870 #define _mm_mask_roundscale_ph(A, B, C, D) \
871 (__builtin_ia32_rndscaleph128_mask ((C), (D), (A), (B)))
872
873 #define _mm_maskz_roundscale_ph(A, B, C) \
874 (__builtin_ia32_rndscaleph128_mask ((B), (C), _mm_setzero_ph (), (A)))
875
876 #define _mm256_roundscale_ph(A, B) \
877 (__builtin_ia32_rndscaleph256_mask ((A), (B), \
878 _mm256_setzero_ph(), \
879 ((__mmask16)-1)))
880
881 #define _mm256_mask_roundscale_ph(A, B, C, D) \
882 (__builtin_ia32_rndscaleph256_mask ((C), (D), (A), (B)))
883
884 #define _mm256_maskz_roundscale_ph(A, B, C) \
885 (__builtin_ia32_rndscaleph256_mask ((B), (C), \
886 _mm256_setzero_ph (), (A)))
887
888 #endif /* __OPTIMIZE__ */
889
890 /* Intrinsics vfpclassph. */
891 #ifdef __OPTIMIZE__
892 extern __inline __mmask8
893 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fpclass_ph_mask(__mmask8 __U,__m128h __A,const int __imm)894 _mm_mask_fpclass_ph_mask (__mmask8 __U, __m128h __A, const int __imm)
895 {
896 return (__mmask8) __builtin_ia32_fpclassph128_mask ((__v8hf) __A,
897 __imm, __U);
898 }
899
900 extern __inline __mmask8
901 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fpclass_ph_mask(__m128h __A,const int __imm)902 _mm_fpclass_ph_mask (__m128h __A, const int __imm)
903 {
904 return (__mmask8) __builtin_ia32_fpclassph128_mask ((__v8hf) __A,
905 __imm,
906 (__mmask8) -1);
907 }
908
909 extern __inline __mmask16
910 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fpclass_ph_mask(__mmask16 __U,__m256h __A,const int __imm)911 _mm256_mask_fpclass_ph_mask (__mmask16 __U, __m256h __A, const int __imm)
912 {
913 return (__mmask16) __builtin_ia32_fpclassph256_mask ((__v16hf) __A,
914 __imm, __U);
915 }
916
917 extern __inline __mmask16
918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fpclass_ph_mask(__m256h __A,const int __imm)919 _mm256_fpclass_ph_mask (__m256h __A, const int __imm)
920 {
921 return (__mmask16) __builtin_ia32_fpclassph256_mask ((__v16hf) __A,
922 __imm,
923 (__mmask16) -1);
924 }
925
926 #else
927 #define _mm_fpclass_ph_mask(X, C) \
928 ((__mmask8) __builtin_ia32_fpclassph128_mask ((__v8hf) (__m128h) (X), \
929 (int) (C),(__mmask8)-1))
930
931 #define _mm_mask_fpclass_ph_mask(u, X, C) \
932 ((__mmask8) __builtin_ia32_fpclassph128_mask ((__v8hf) (__m128h) (X), \
933 (int) (C),(__mmask8)(u)))
934
935 #define _mm256_fpclass_ph_mask(X, C) \
936 ((__mmask16) __builtin_ia32_fpclassph256_mask ((__v16hf) (__m256h) (X), \
937 (int) (C),(__mmask16)-1))
938
939 #define _mm256_mask_fpclass_ph_mask(u, X, C) \
940 ((__mmask16) __builtin_ia32_fpclassph256_mask ((__v16hf) (__m256h) (X), \
941 (int) (C),(__mmask16)(u)))
942 #endif /* __OPTIMIZE__ */
943
944 /* Intrinsics vgetexpph, vgetexpsh. */
945 extern __inline __m256h
946 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_getexp_ph(__m256h __A)947 _mm256_getexp_ph (__m256h __A)
948 {
949 return (__m256h) __builtin_ia32_getexpph256_mask ((__v16hf) __A,
950 (__v16hf)
951 _mm256_setzero_ph (),
952 (__mmask16) -1);
953 }
954
955 extern __inline __m256h
956 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_getexp_ph(__m256h __W,__mmask16 __U,__m256h __A)957 _mm256_mask_getexp_ph (__m256h __W, __mmask16 __U, __m256h __A)
958 {
959 return (__m256h) __builtin_ia32_getexpph256_mask ((__v16hf) __A,
960 (__v16hf) __W,
961 (__mmask16) __U);
962 }
963
964 extern __inline __m256h
965 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_getexp_ph(__mmask16 __U,__m256h __A)966 _mm256_maskz_getexp_ph (__mmask16 __U, __m256h __A)
967 {
968 return (__m256h) __builtin_ia32_getexpph256_mask ((__v16hf) __A,
969 (__v16hf)
970 _mm256_setzero_ph (),
971 (__mmask16) __U);
972 }
973
974 extern __inline __m128h
975 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_getexp_ph(__m128h __A)976 _mm_getexp_ph (__m128h __A)
977 {
978 return (__m128h) __builtin_ia32_getexpph128_mask ((__v8hf) __A,
979 (__v8hf)
980 _mm_setzero_ph (),
981 (__mmask8) -1);
982 }
983
984 extern __inline __m128h
985 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_getexp_ph(__m128h __W,__mmask8 __U,__m128h __A)986 _mm_mask_getexp_ph (__m128h __W, __mmask8 __U, __m128h __A)
987 {
988 return (__m128h) __builtin_ia32_getexpph128_mask ((__v8hf) __A,
989 (__v8hf) __W,
990 (__mmask8) __U);
991 }
992
993 extern __inline __m128h
994 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_getexp_ph(__mmask8 __U,__m128h __A)995 _mm_maskz_getexp_ph (__mmask8 __U, __m128h __A)
996 {
997 return (__m128h) __builtin_ia32_getexpph128_mask ((__v8hf) __A,
998 (__v8hf)
999 _mm_setzero_ph (),
1000 (__mmask8) __U);
1001 }
1002
1003
1004 /* Intrinsics vgetmantph, vgetmantsh. */
1005 #ifdef __OPTIMIZE__
1006 extern __inline __m256h
1007 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_getmant_ph(__m256h __A,_MM_MANTISSA_NORM_ENUM __B,_MM_MANTISSA_SIGN_ENUM __C)1008 _mm256_getmant_ph (__m256h __A, _MM_MANTISSA_NORM_ENUM __B,
1009 _MM_MANTISSA_SIGN_ENUM __C)
1010 {
1011 return (__m256h) __builtin_ia32_getmantph256_mask ((__v16hf) __A,
1012 (__C << 2) | __B,
1013 (__v16hf)
1014 _mm256_setzero_ph (),
1015 (__mmask16) -1);
1016 }
1017
1018 extern __inline __m256h
1019 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_getmant_ph(__m256h __W,__mmask16 __U,__m256h __A,_MM_MANTISSA_NORM_ENUM __B,_MM_MANTISSA_SIGN_ENUM __C)1020 _mm256_mask_getmant_ph (__m256h __W, __mmask16 __U, __m256h __A,
1021 _MM_MANTISSA_NORM_ENUM __B,
1022 _MM_MANTISSA_SIGN_ENUM __C)
1023 {
1024 return (__m256h) __builtin_ia32_getmantph256_mask ((__v16hf) __A,
1025 (__C << 2) | __B,
1026 (__v16hf) __W,
1027 (__mmask16) __U);
1028 }
1029
1030 extern __inline __m256h
1031 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_getmant_ph(__mmask16 __U,__m256h __A,_MM_MANTISSA_NORM_ENUM __B,_MM_MANTISSA_SIGN_ENUM __C)1032 _mm256_maskz_getmant_ph (__mmask16 __U, __m256h __A,
1033 _MM_MANTISSA_NORM_ENUM __B,
1034 _MM_MANTISSA_SIGN_ENUM __C)
1035 {
1036 return (__m256h) __builtin_ia32_getmantph256_mask ((__v16hf) __A,
1037 (__C << 2) | __B,
1038 (__v16hf)
1039 _mm256_setzero_ph (),
1040 (__mmask16) __U);
1041 }
1042
1043 extern __inline __m128h
1044 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_getmant_ph(__m128h __A,_MM_MANTISSA_NORM_ENUM __B,_MM_MANTISSA_SIGN_ENUM __C)1045 _mm_getmant_ph (__m128h __A, _MM_MANTISSA_NORM_ENUM __B,
1046 _MM_MANTISSA_SIGN_ENUM __C)
1047 {
1048 return (__m128h) __builtin_ia32_getmantph128_mask ((__v8hf) __A,
1049 (__C << 2) | __B,
1050 (__v8hf)
1051 _mm_setzero_ph (),
1052 (__mmask8) -1);
1053 }
1054
1055 extern __inline __m128h
1056 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_getmant_ph(__m128h __W,__mmask8 __U,__m128h __A,_MM_MANTISSA_NORM_ENUM __B,_MM_MANTISSA_SIGN_ENUM __C)1057 _mm_mask_getmant_ph (__m128h __W, __mmask8 __U, __m128h __A,
1058 _MM_MANTISSA_NORM_ENUM __B,
1059 _MM_MANTISSA_SIGN_ENUM __C)
1060 {
1061 return (__m128h) __builtin_ia32_getmantph128_mask ((__v8hf) __A,
1062 (__C << 2) | __B,
1063 (__v8hf) __W,
1064 (__mmask8) __U);
1065 }
1066
1067 extern __inline __m128h
1068 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_getmant_ph(__mmask8 __U,__m128h __A,_MM_MANTISSA_NORM_ENUM __B,_MM_MANTISSA_SIGN_ENUM __C)1069 _mm_maskz_getmant_ph (__mmask8 __U, __m128h __A,
1070 _MM_MANTISSA_NORM_ENUM __B,
1071 _MM_MANTISSA_SIGN_ENUM __C)
1072 {
1073 return (__m128h) __builtin_ia32_getmantph128_mask ((__v8hf) __A,
1074 (__C << 2) | __B,
1075 (__v8hf)
1076 _mm_setzero_ph (),
1077 (__mmask8) __U);
1078 }
1079
1080 #else
1081 #define _mm256_getmant_ph(X, B, C) \
1082 ((__m256h) __builtin_ia32_getmantph256_mask ((__v16hf)(__m256h) (X), \
1083 (int)(((C)<<2) | (B)), \
1084 (__v16hf)(__m256h)_mm256_setzero_ph (), \
1085 (__mmask16)-1))
1086
1087 #define _mm256_mask_getmant_ph(W, U, X, B, C) \
1088 ((__m256h) __builtin_ia32_getmantph256_mask ((__v16hf)(__m256h) (X), \
1089 (int)(((C)<<2) | (B)), \
1090 (__v16hf)(__m256h)(W), \
1091 (__mmask16)(U)))
1092
1093 #define _mm256_maskz_getmant_ph(U, X, B, C) \
1094 ((__m256h) __builtin_ia32_getmantph256_mask ((__v16hf)(__m256h) (X), \
1095 (int)(((C)<<2) | (B)), \
1096 (__v16hf)(__m256h)_mm256_setzero_ph (), \
1097 (__mmask16)(U)))
1098
1099 #define _mm_getmant_ph(X, B, C) \
1100 ((__m128h) __builtin_ia32_getmantph128_mask ((__v8hf)(__m128h) (X), \
1101 (int)(((C)<<2) | (B)), \
1102 (__v8hf)(__m128h)_mm_setzero_ph (), \
1103 (__mmask8)-1))
1104
1105 #define _mm_mask_getmant_ph(W, U, X, B, C) \
1106 ((__m128h) __builtin_ia32_getmantph128_mask ((__v8hf)(__m128h) (X), \
1107 (int)(((C)<<2) | (B)), \
1108 (__v8hf)(__m128h)(W), \
1109 (__mmask8)(U)))
1110
1111 #define _mm_maskz_getmant_ph(U, X, B, C) \
1112 ((__m128h) __builtin_ia32_getmantph128_mask ((__v8hf)(__m128h) (X), \
1113 (int)(((C)<<2) | (B)), \
1114 (__v8hf)(__m128h)_mm_setzero_ph (), \
1115 (__mmask8)(U)))
1116
1117 #endif /* __OPTIMIZE__ */
1118
1119 /* Intrinsics vcvtph2dq. */
1120 extern __inline __m128i
1121 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_epi32(__m128h __A)1122 _mm_cvtph_epi32 (__m128h __A)
1123 {
1124 return (__m128i)
1125 __builtin_ia32_vcvtph2dq128_mask (__A,
1126 (__v4si)
1127 _mm_setzero_si128 (),
1128 (__mmask8) -1);
1129 }
1130
1131 extern __inline __m128i
1132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_epi32(__m128i __A,__mmask8 __B,__m128h __C)1133 _mm_mask_cvtph_epi32 (__m128i __A, __mmask8 __B, __m128h __C)
1134 {
1135 return (__m128i)
1136 __builtin_ia32_vcvtph2dq128_mask (__C, ( __v4si) __A, __B);
1137 }
1138
1139 extern __inline __m128i
1140 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_epi32(__mmask8 __A,__m128h __B)1141 _mm_maskz_cvtph_epi32 (__mmask8 __A, __m128h __B)
1142 {
1143 return (__m128i)
1144 __builtin_ia32_vcvtph2dq128_mask (__B,
1145 (__v4si) _mm_setzero_si128 (),
1146 __A);
1147 }
1148
1149 extern __inline __m256i
1150 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_epi32(__m128h __A)1151 _mm256_cvtph_epi32 (__m128h __A)
1152 {
1153 return (__m256i)
1154 __builtin_ia32_vcvtph2dq256_mask (__A,
1155 (__v8si)
1156 _mm256_setzero_si256 (),
1157 (__mmask8) -1);
1158 }
1159
1160 extern __inline __m256i
1161 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_epi32(__m256i __A,__mmask8 __B,__m128h __C)1162 _mm256_mask_cvtph_epi32 (__m256i __A, __mmask8 __B, __m128h __C)
1163 {
1164 return (__m256i)
1165 __builtin_ia32_vcvtph2dq256_mask (__C, ( __v8si) __A, __B);
1166 }
1167
1168 extern __inline __m256i
1169 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_epi32(__mmask8 __A,__m128h __B)1170 _mm256_maskz_cvtph_epi32 (__mmask8 __A, __m128h __B)
1171 {
1172 return (__m256i)
1173 __builtin_ia32_vcvtph2dq256_mask (__B,
1174 (__v8si)
1175 _mm256_setzero_si256 (),
1176 __A);
1177 }
1178
1179 /* Intrinsics vcvtph2udq. */
1180 extern __inline __m128i
1181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_epu32(__m128h __A)1182 _mm_cvtph_epu32 (__m128h __A)
1183 {
1184 return (__m128i)
1185 __builtin_ia32_vcvtph2udq128_mask (__A,
1186 (__v4si)
1187 _mm_setzero_si128 (),
1188 (__mmask8) -1);
1189 }
1190
1191 extern __inline __m128i
1192 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_epu32(__m128i __A,__mmask8 __B,__m128h __C)1193 _mm_mask_cvtph_epu32 (__m128i __A, __mmask8 __B, __m128h __C)
1194 {
1195 return (__m128i)
1196 __builtin_ia32_vcvtph2udq128_mask (__C, ( __v4si) __A, __B);
1197 }
1198
1199 extern __inline __m128i
1200 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_epu32(__mmask8 __A,__m128h __B)1201 _mm_maskz_cvtph_epu32 (__mmask8 __A, __m128h __B)
1202 {
1203 return (__m128i)
1204 __builtin_ia32_vcvtph2udq128_mask (__B,
1205 (__v4si)
1206 _mm_setzero_si128 (),
1207 __A);
1208 }
1209
1210 extern __inline __m256i
1211 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_epu32(__m128h __A)1212 _mm256_cvtph_epu32 (__m128h __A)
1213 {
1214 return (__m256i)
1215 __builtin_ia32_vcvtph2udq256_mask (__A,
1216 (__v8si)
1217 _mm256_setzero_si256 (),
1218 (__mmask8) -1);
1219 }
1220
1221 extern __inline __m256i
1222 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_epu32(__m256i __A,__mmask8 __B,__m128h __C)1223 _mm256_mask_cvtph_epu32 (__m256i __A, __mmask8 __B, __m128h __C)
1224 {
1225 return (__m256i)
1226 __builtin_ia32_vcvtph2udq256_mask (__C, ( __v8si) __A, __B);
1227 }
1228
1229 extern __inline __m256i
1230 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_epu32(__mmask8 __A,__m128h __B)1231 _mm256_maskz_cvtph_epu32 (__mmask8 __A, __m128h __B)
1232 {
1233 return (__m256i)
1234 __builtin_ia32_vcvtph2udq256_mask (__B,
1235 (__v8si) _mm256_setzero_si256 (),
1236 __A);
1237 }
1238
1239 /* Intrinsics vcvttph2dq. */
1240 extern __inline __m128i
1241 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvttph_epi32(__m128h __A)1242 _mm_cvttph_epi32 (__m128h __A)
1243 {
1244 return (__m128i)
1245 __builtin_ia32_vcvttph2dq128_mask (__A,
1246 (__v4si) _mm_setzero_si128 (),
1247 (__mmask8) -1);
1248 }
1249
1250 extern __inline __m128i
1251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvttph_epi32(__m128i __A,__mmask8 __B,__m128h __C)1252 _mm_mask_cvttph_epi32 (__m128i __A, __mmask8 __B, __m128h __C)
1253 {
1254 return (__m128i)__builtin_ia32_vcvttph2dq128_mask (__C,
1255 ( __v4si) __A,
1256 __B);
1257 }
1258
1259 extern __inline __m128i
1260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvttph_epi32(__mmask8 __A,__m128h __B)1261 _mm_maskz_cvttph_epi32 (__mmask8 __A, __m128h __B)
1262 {
1263 return (__m128i)
1264 __builtin_ia32_vcvttph2dq128_mask (__B,
1265 (__v4si) _mm_setzero_si128 (),
1266 __A);
1267 }
1268
1269 extern __inline __m256i
1270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvttph_epi32(__m128h __A)1271 _mm256_cvttph_epi32 (__m128h __A)
1272 {
1273 return (__m256i)
1274 __builtin_ia32_vcvttph2dq256_mask (__A,
1275 (__v8si)
1276 _mm256_setzero_si256 (),
1277 (__mmask8) -1);
1278 }
1279
1280 extern __inline __m256i
1281 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvttph_epi32(__m256i __A,__mmask8 __B,__m128h __C)1282 _mm256_mask_cvttph_epi32 (__m256i __A, __mmask8 __B, __m128h __C)
1283 {
1284 return (__m256i)
1285 __builtin_ia32_vcvttph2dq256_mask (__C,
1286 ( __v8si) __A,
1287 __B);
1288 }
1289
1290 extern __inline __m256i
1291 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvttph_epi32(__mmask8 __A,__m128h __B)1292 _mm256_maskz_cvttph_epi32 (__mmask8 __A, __m128h __B)
1293 {
1294 return (__m256i)
1295 __builtin_ia32_vcvttph2dq256_mask (__B,
1296 (__v8si)
1297 _mm256_setzero_si256 (),
1298 __A);
1299 }
1300
1301 /* Intrinsics vcvttph2udq. */
1302 extern __inline __m128i
1303 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvttph_epu32(__m128h __A)1304 _mm_cvttph_epu32 (__m128h __A)
1305 {
1306 return (__m128i)
1307 __builtin_ia32_vcvttph2udq128_mask (__A,
1308 (__v4si)
1309 _mm_setzero_si128 (),
1310 (__mmask8) -1);
1311 }
1312
1313 extern __inline __m128i
1314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvttph_epu32(__m128i __A,__mmask8 __B,__m128h __C)1315 _mm_mask_cvttph_epu32 (__m128i __A, __mmask8 __B, __m128h __C)
1316 {
1317 return (__m128i)
1318 __builtin_ia32_vcvttph2udq128_mask (__C,
1319 ( __v4si) __A,
1320 __B);
1321 }
1322
1323 extern __inline __m128i
1324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvttph_epu32(__mmask8 __A,__m128h __B)1325 _mm_maskz_cvttph_epu32 (__mmask8 __A, __m128h __B)
1326 {
1327 return (__m128i)
1328 __builtin_ia32_vcvttph2udq128_mask (__B,
1329 (__v4si)
1330 _mm_setzero_si128 (),
1331 __A);
1332 }
1333
1334 extern __inline __m256i
1335 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvttph_epu32(__m128h __A)1336 _mm256_cvttph_epu32 (__m128h __A)
1337 {
1338 return (__m256i)
1339 __builtin_ia32_vcvttph2udq256_mask (__A,
1340 (__v8si)
1341 _mm256_setzero_si256 (), (__mmask8) -1);
1342 }
1343
1344 extern __inline __m256i
1345 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvttph_epu32(__m256i __A,__mmask8 __B,__m128h __C)1346 _mm256_mask_cvttph_epu32 (__m256i __A, __mmask8 __B, __m128h __C)
1347 {
1348 return (__m256i)
1349 __builtin_ia32_vcvttph2udq256_mask (__C,
1350 ( __v8si) __A,
1351 __B);
1352 }
1353
1354 extern __inline __m256i
1355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvttph_epu32(__mmask8 __A,__m128h __B)1356 _mm256_maskz_cvttph_epu32 (__mmask8 __A, __m128h __B)
1357 {
1358 return (__m256i)
1359 __builtin_ia32_vcvttph2udq256_mask (__B,
1360 (__v8si)
1361 _mm256_setzero_si256 (),
1362 __A);
1363 }
1364
1365 /* Intrinsics vcvtdq2ph. */
1366 extern __inline __m128h
1367 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtepi32_ph(__m128i __A)1368 _mm_cvtepi32_ph (__m128i __A)
1369 {
1370 return __builtin_ia32_vcvtdq2ph128_mask ((__v4si) __A,
1371 _mm_setzero_ph (),
1372 (__mmask8) -1);
1373 }
1374
1375 extern __inline __m128h
1376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtepi32_ph(__m128h __A,__mmask8 __B,__m128i __C)1377 _mm_mask_cvtepi32_ph (__m128h __A, __mmask8 __B, __m128i __C)
1378 {
1379 return __builtin_ia32_vcvtdq2ph128_mask ((__v4si) __C, __A, __B);
1380 }
1381
1382 extern __inline __m128h
1383 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtepi32_ph(__mmask8 __A,__m128i __B)1384 _mm_maskz_cvtepi32_ph (__mmask8 __A, __m128i __B)
1385 {
1386 return __builtin_ia32_vcvtdq2ph128_mask ((__v4si) __B,
1387 _mm_setzero_ph (),
1388 __A);
1389 }
1390
1391 extern __inline __m128h
1392 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtepi32_ph(__m256i __A)1393 _mm256_cvtepi32_ph (__m256i __A)
1394 {
1395 return __builtin_ia32_vcvtdq2ph256_mask ((__v8si) __A,
1396 _mm_setzero_ph (),
1397 (__mmask8) -1);
1398 }
1399
1400 extern __inline __m128h
1401 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtepi32_ph(__m128h __A,__mmask8 __B,__m256i __C)1402 _mm256_mask_cvtepi32_ph (__m128h __A, __mmask8 __B, __m256i __C)
1403 {
1404 return __builtin_ia32_vcvtdq2ph256_mask ((__v8si) __C, __A, __B);
1405 }
1406
1407 extern __inline __m128h
1408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtepi32_ph(__mmask8 __A,__m256i __B)1409 _mm256_maskz_cvtepi32_ph (__mmask8 __A, __m256i __B)
1410 {
1411 return __builtin_ia32_vcvtdq2ph256_mask ((__v8si) __B,
1412 _mm_setzero_ph (),
1413 __A);
1414 }
1415
1416 /* Intrinsics vcvtudq2ph. */
1417 extern __inline __m128h
1418 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtepu32_ph(__m128i __A)1419 _mm_cvtepu32_ph (__m128i __A)
1420 {
1421 return __builtin_ia32_vcvtudq2ph128_mask ((__v4si) __A,
1422 _mm_setzero_ph (),
1423 (__mmask8) -1);
1424 }
1425
1426 extern __inline __m128h
1427 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtepu32_ph(__m128h __A,__mmask8 __B,__m128i __C)1428 _mm_mask_cvtepu32_ph (__m128h __A, __mmask8 __B, __m128i __C)
1429 {
1430 return __builtin_ia32_vcvtudq2ph128_mask ((__v4si) __C,
1431 __A,
1432 __B);
1433 }
1434
1435 extern __inline __m128h
1436 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtepu32_ph(__mmask8 __A,__m128i __B)1437 _mm_maskz_cvtepu32_ph (__mmask8 __A, __m128i __B)
1438 {
1439 return __builtin_ia32_vcvtudq2ph128_mask ((__v4si) __B,
1440 _mm_setzero_ph (),
1441 __A);
1442 }
1443
1444 extern __inline __m128h
1445 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtepu32_ph(__m256i __A)1446 _mm256_cvtepu32_ph (__m256i __A)
1447 {
1448 return __builtin_ia32_vcvtudq2ph256_mask ((__v8si) __A,
1449 _mm_setzero_ph (),
1450 (__mmask8) -1);
1451 }
1452
1453 extern __inline __m128h
1454 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtepu32_ph(__m128h __A,__mmask8 __B,__m256i __C)1455 _mm256_mask_cvtepu32_ph (__m128h __A, __mmask8 __B, __m256i __C)
1456 {
1457 return __builtin_ia32_vcvtudq2ph256_mask ((__v8si) __C, __A, __B);
1458 }
1459
1460 extern __inline __m128h
1461 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtepu32_ph(__mmask8 __A,__m256i __B)1462 _mm256_maskz_cvtepu32_ph (__mmask8 __A, __m256i __B)
1463 {
1464 return __builtin_ia32_vcvtudq2ph256_mask ((__v8si) __B,
1465 _mm_setzero_ph (),
1466 __A);
1467 }
1468
1469 /* Intrinsics vcvtph2qq. */
1470 extern __inline __m128i
1471 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_epi64(__m128h __A)1472 _mm_cvtph_epi64 (__m128h __A)
1473 {
1474 return
1475 __builtin_ia32_vcvtph2qq128_mask (__A,
1476 _mm_setzero_si128 (),
1477 (__mmask8) -1);
1478 }
1479
1480 extern __inline __m128i
1481 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_epi64(__m128i __A,__mmask8 __B,__m128h __C)1482 _mm_mask_cvtph_epi64 (__m128i __A, __mmask8 __B, __m128h __C)
1483 {
1484 return __builtin_ia32_vcvtph2qq128_mask (__C, __A, __B);
1485 }
1486
1487 extern __inline __m128i
1488 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_epi64(__mmask8 __A,__m128h __B)1489 _mm_maskz_cvtph_epi64 (__mmask8 __A, __m128h __B)
1490 {
1491 return __builtin_ia32_vcvtph2qq128_mask (__B,
1492 _mm_setzero_si128 (),
1493 __A);
1494 }
1495
1496 extern __inline __m256i
1497 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_epi64(__m128h __A)1498 _mm256_cvtph_epi64 (__m128h __A)
1499 {
1500 return __builtin_ia32_vcvtph2qq256_mask (__A,
1501 _mm256_setzero_si256 (),
1502 (__mmask8) -1);
1503 }
1504
1505 extern __inline __m256i
1506 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_epi64(__m256i __A,__mmask8 __B,__m128h __C)1507 _mm256_mask_cvtph_epi64 (__m256i __A, __mmask8 __B, __m128h __C)
1508 {
1509 return __builtin_ia32_vcvtph2qq256_mask (__C, __A, __B);
1510 }
1511
1512 extern __inline __m256i
1513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_epi64(__mmask8 __A,__m128h __B)1514 _mm256_maskz_cvtph_epi64 (__mmask8 __A, __m128h __B)
1515 {
1516 return __builtin_ia32_vcvtph2qq256_mask (__B,
1517 _mm256_setzero_si256 (),
1518 __A);
1519 }
1520
1521 /* Intrinsics vcvtph2uqq. */
1522 extern __inline __m128i
1523 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_epu64(__m128h __A)1524 _mm_cvtph_epu64 (__m128h __A)
1525 {
1526 return __builtin_ia32_vcvtph2uqq128_mask (__A,
1527 _mm_setzero_si128 (),
1528 (__mmask8) -1);
1529 }
1530
1531 extern __inline __m128i
1532 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_epu64(__m128i __A,__mmask8 __B,__m128h __C)1533 _mm_mask_cvtph_epu64 (__m128i __A, __mmask8 __B, __m128h __C)
1534 {
1535 return __builtin_ia32_vcvtph2uqq128_mask (__C, __A, __B);
1536 }
1537
1538 extern __inline __m128i
1539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_epu64(__mmask8 __A,__m128h __B)1540 _mm_maskz_cvtph_epu64 (__mmask8 __A, __m128h __B)
1541 {
1542 return __builtin_ia32_vcvtph2uqq128_mask (__B,
1543 _mm_setzero_si128 (),
1544 __A);
1545 }
1546
1547 extern __inline __m256i
1548 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_epu64(__m128h __A)1549 _mm256_cvtph_epu64 (__m128h __A)
1550 {
1551 return __builtin_ia32_vcvtph2uqq256_mask (__A,
1552 _mm256_setzero_si256 (),
1553 (__mmask8) -1);
1554 }
1555
1556 extern __inline __m256i
1557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_epu64(__m256i __A,__mmask8 __B,__m128h __C)1558 _mm256_mask_cvtph_epu64 (__m256i __A, __mmask8 __B, __m128h __C)
1559 {
1560 return __builtin_ia32_vcvtph2uqq256_mask (__C, __A, __B);
1561 }
1562
1563 extern __inline __m256i
1564 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_epu64(__mmask8 __A,__m128h __B)1565 _mm256_maskz_cvtph_epu64 (__mmask8 __A, __m128h __B)
1566 {
1567 return __builtin_ia32_vcvtph2uqq256_mask (__B,
1568 _mm256_setzero_si256 (),
1569 __A);
1570 }
1571
1572 /* Intrinsics vcvttph2qq. */
1573 extern __inline __m128i
1574 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvttph_epi64(__m128h __A)1575 _mm_cvttph_epi64 (__m128h __A)
1576 {
1577 return __builtin_ia32_vcvttph2qq128_mask (__A,
1578 _mm_setzero_si128 (),
1579 (__mmask8) -1);
1580 }
1581
1582 extern __inline __m128i
1583 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvttph_epi64(__m128i __A,__mmask8 __B,__m128h __C)1584 _mm_mask_cvttph_epi64 (__m128i __A, __mmask8 __B, __m128h __C)
1585 {
1586 return __builtin_ia32_vcvttph2qq128_mask (__C,
1587 __A,
1588 __B);
1589 }
1590
1591 extern __inline __m128i
1592 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvttph_epi64(__mmask8 __A,__m128h __B)1593 _mm_maskz_cvttph_epi64 (__mmask8 __A, __m128h __B)
1594 {
1595 return __builtin_ia32_vcvttph2qq128_mask (__B,
1596 _mm_setzero_si128 (),
1597 __A);
1598 }
1599
1600 extern __inline __m256i
1601 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvttph_epi64(__m128h __A)1602 _mm256_cvttph_epi64 (__m128h __A)
1603 {
1604 return __builtin_ia32_vcvttph2qq256_mask (__A,
1605 _mm256_setzero_si256 (),
1606 (__mmask8) -1);
1607 }
1608
1609 extern __inline __m256i
1610 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvttph_epi64(__m256i __A,__mmask8 __B,__m128h __C)1611 _mm256_mask_cvttph_epi64 (__m256i __A, __mmask8 __B, __m128h __C)
1612 {
1613 return __builtin_ia32_vcvttph2qq256_mask (__C,
1614 __A,
1615 __B);
1616 }
1617
1618 extern __inline __m256i
1619 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvttph_epi64(__mmask8 __A,__m128h __B)1620 _mm256_maskz_cvttph_epi64 (__mmask8 __A, __m128h __B)
1621 {
1622 return __builtin_ia32_vcvttph2qq256_mask (__B,
1623 _mm256_setzero_si256 (),
1624 __A);
1625 }
1626
1627 /* Intrinsics vcvttph2uqq. */
1628 extern __inline __m128i
1629 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvttph_epu64(__m128h __A)1630 _mm_cvttph_epu64 (__m128h __A)
1631 {
1632 return __builtin_ia32_vcvttph2uqq128_mask (__A,
1633 _mm_setzero_si128 (),
1634 (__mmask8) -1);
1635 }
1636
1637 extern __inline __m128i
1638 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvttph_epu64(__m128i __A,__mmask8 __B,__m128h __C)1639 _mm_mask_cvttph_epu64 (__m128i __A, __mmask8 __B, __m128h __C)
1640 {
1641 return __builtin_ia32_vcvttph2uqq128_mask (__C,
1642 __A,
1643 __B);
1644 }
1645
1646 extern __inline __m128i
1647 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvttph_epu64(__mmask8 __A,__m128h __B)1648 _mm_maskz_cvttph_epu64 (__mmask8 __A, __m128h __B)
1649 {
1650 return __builtin_ia32_vcvttph2uqq128_mask (__B,
1651 _mm_setzero_si128 (),
1652 __A);
1653 }
1654
1655 extern __inline __m256i
1656 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvttph_epu64(__m128h __A)1657 _mm256_cvttph_epu64 (__m128h __A)
1658 {
1659 return __builtin_ia32_vcvttph2uqq256_mask (__A,
1660 _mm256_setzero_si256 (),
1661 (__mmask8) -1);
1662 }
1663
1664 extern __inline __m256i
1665 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvttph_epu64(__m256i __A,__mmask8 __B,__m128h __C)1666 _mm256_mask_cvttph_epu64 (__m256i __A, __mmask8 __B, __m128h __C)
1667 {
1668 return __builtin_ia32_vcvttph2uqq256_mask (__C,
1669 __A,
1670 __B);
1671 }
1672
1673 extern __inline __m256i
1674 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvttph_epu64(__mmask8 __A,__m128h __B)1675 _mm256_maskz_cvttph_epu64 (__mmask8 __A, __m128h __B)
1676 {
1677 return __builtin_ia32_vcvttph2uqq256_mask (__B,
1678 _mm256_setzero_si256 (),
1679 __A);
1680 }
1681
1682 /* Intrinsics vcvtqq2ph. */
1683 extern __inline __m128h
1684 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtepi64_ph(__m128i __A)1685 _mm_cvtepi64_ph (__m128i __A)
1686 {
1687 return __builtin_ia32_vcvtqq2ph128_mask ((__v2di) __A,
1688 _mm_setzero_ph (),
1689 (__mmask8) -1);
1690 }
1691
1692 extern __inline __m128h
1693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtepi64_ph(__m128h __A,__mmask8 __B,__m128i __C)1694 _mm_mask_cvtepi64_ph (__m128h __A, __mmask8 __B, __m128i __C)
1695 {
1696 return __builtin_ia32_vcvtqq2ph128_mask ((__v2di) __C, __A, __B);
1697 }
1698
1699 extern __inline __m128h
1700 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtepi64_ph(__mmask8 __A,__m128i __B)1701 _mm_maskz_cvtepi64_ph (__mmask8 __A, __m128i __B)
1702 {
1703 return __builtin_ia32_vcvtqq2ph128_mask ((__v2di) __B,
1704 _mm_setzero_ph (),
1705 __A);
1706 }
1707
1708 extern __inline __m128h
1709 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtepi64_ph(__m256i __A)1710 _mm256_cvtepi64_ph (__m256i __A)
1711 {
1712 return __builtin_ia32_vcvtqq2ph256_mask ((__v4di) __A,
1713 _mm_setzero_ph (),
1714 (__mmask8) -1);
1715 }
1716
1717 extern __inline __m128h
1718 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtepi64_ph(__m128h __A,__mmask8 __B,__m256i __C)1719 _mm256_mask_cvtepi64_ph (__m128h __A, __mmask8 __B, __m256i __C)
1720 {
1721 return __builtin_ia32_vcvtqq2ph256_mask ((__v4di) __C, __A, __B);
1722 }
1723
1724 extern __inline __m128h
1725 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtepi64_ph(__mmask8 __A,__m256i __B)1726 _mm256_maskz_cvtepi64_ph (__mmask8 __A, __m256i __B)
1727 {
1728 return __builtin_ia32_vcvtqq2ph256_mask ((__v4di) __B,
1729 _mm_setzero_ph (),
1730 __A);
1731 }
1732
1733 /* Intrinsics vcvtuqq2ph. */
1734 extern __inline __m128h
1735 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtepu64_ph(__m128i __A)1736 _mm_cvtepu64_ph (__m128i __A)
1737 {
1738 return __builtin_ia32_vcvtuqq2ph128_mask ((__v2di) __A,
1739 _mm_setzero_ph (),
1740 (__mmask8) -1);
1741 }
1742
1743 extern __inline __m128h
1744 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtepu64_ph(__m128h __A,__mmask8 __B,__m128i __C)1745 _mm_mask_cvtepu64_ph (__m128h __A, __mmask8 __B, __m128i __C)
1746 {
1747 return __builtin_ia32_vcvtuqq2ph128_mask ((__v2di) __C, __A, __B);
1748 }
1749
1750 extern __inline __m128h
1751 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtepu64_ph(__mmask8 __A,__m128i __B)1752 _mm_maskz_cvtepu64_ph (__mmask8 __A, __m128i __B)
1753 {
1754 return __builtin_ia32_vcvtuqq2ph128_mask ((__v2di) __B,
1755 _mm_setzero_ph (),
1756 __A);
1757 }
1758
1759 extern __inline __m128h
1760 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtepu64_ph(__m256i __A)1761 _mm256_cvtepu64_ph (__m256i __A)
1762 {
1763 return __builtin_ia32_vcvtuqq2ph256_mask ((__v4di) __A,
1764 _mm_setzero_ph (),
1765 (__mmask8) -1);
1766 }
1767
1768 extern __inline __m128h
1769 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtepu64_ph(__m128h __A,__mmask8 __B,__m256i __C)1770 _mm256_mask_cvtepu64_ph (__m128h __A, __mmask8 __B, __m256i __C)
1771 {
1772 return __builtin_ia32_vcvtuqq2ph256_mask ((__v4di) __C, __A, __B);
1773 }
1774
1775 extern __inline __m128h
1776 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtepu64_ph(__mmask8 __A,__m256i __B)1777 _mm256_maskz_cvtepu64_ph (__mmask8 __A, __m256i __B)
1778 {
1779 return __builtin_ia32_vcvtuqq2ph256_mask ((__v4di) __B,
1780 _mm_setzero_ph (),
1781 __A);
1782 }
1783
1784 /* Intrinsics vcvtph2w. */
1785 extern __inline __m128i
1786 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_epi16(__m128h __A)1787 _mm_cvtph_epi16 (__m128h __A)
1788 {
1789 return (__m128i)
1790 __builtin_ia32_vcvtph2w128_mask (__A,
1791 (__v8hi)
1792 _mm_setzero_si128 (),
1793 (__mmask8) -1);
1794 }
1795
1796 extern __inline __m128i
1797 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_epi16(__m128i __A,__mmask8 __B,__m128h __C)1798 _mm_mask_cvtph_epi16 (__m128i __A, __mmask8 __B, __m128h __C)
1799 {
1800 return (__m128i)
1801 __builtin_ia32_vcvtph2w128_mask (__C, ( __v8hi) __A, __B);
1802 }
1803
1804 extern __inline __m128i
1805 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_epi16(__mmask8 __A,__m128h __B)1806 _mm_maskz_cvtph_epi16 (__mmask8 __A, __m128h __B)
1807 {
1808 return (__m128i)
1809 __builtin_ia32_vcvtph2w128_mask (__B,
1810 (__v8hi)
1811 _mm_setzero_si128 (),
1812 __A);
1813 }
1814
1815 extern __inline __m256i
1816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_epi16(__m256h __A)1817 _mm256_cvtph_epi16 (__m256h __A)
1818 {
1819 return (__m256i)
1820 __builtin_ia32_vcvtph2w256_mask (__A,
1821 (__v16hi)
1822 _mm256_setzero_si256 (),
1823 (__mmask16) -1);
1824 }
1825
1826 extern __inline __m256i
1827 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_epi16(__m256i __A,__mmask16 __B,__m256h __C)1828 _mm256_mask_cvtph_epi16 (__m256i __A, __mmask16 __B, __m256h __C)
1829 {
1830 return (__m256i)
1831 __builtin_ia32_vcvtph2w256_mask (__C, ( __v16hi) __A, __B);
1832 }
1833
1834 extern __inline __m256i
1835 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_epi16(__mmask16 __A,__m256h __B)1836 _mm256_maskz_cvtph_epi16 (__mmask16 __A, __m256h __B)
1837 {
1838 return (__m256i)
1839 __builtin_ia32_vcvtph2w256_mask (__B,
1840 (__v16hi)
1841 _mm256_setzero_si256 (),
1842 __A);
1843 }
1844
1845 /* Intrinsics vcvtph2uw. */
1846 extern __inline __m128i
1847 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_epu16(__m128h __A)1848 _mm_cvtph_epu16 (__m128h __A)
1849 {
1850 return (__m128i)
1851 __builtin_ia32_vcvtph2uw128_mask (__A,
1852 (__v8hi)
1853 _mm_setzero_si128 (),
1854 (__mmask8) -1);
1855 }
1856
1857 extern __inline __m128i
1858 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_epu16(__m128i __A,__mmask8 __B,__m128h __C)1859 _mm_mask_cvtph_epu16 (__m128i __A, __mmask8 __B, __m128h __C)
1860 {
1861 return (__m128i)
1862 __builtin_ia32_vcvtph2uw128_mask (__C, ( __v8hi) __A, __B);
1863 }
1864
1865 extern __inline __m128i
1866 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_epu16(__mmask8 __A,__m128h __B)1867 _mm_maskz_cvtph_epu16 (__mmask8 __A, __m128h __B)
1868 {
1869 return (__m128i)
1870 __builtin_ia32_vcvtph2uw128_mask (__B,
1871 (__v8hi)
1872 _mm_setzero_si128 (),
1873 __A);
1874 }
1875
1876 extern __inline __m256i
1877 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_epu16(__m256h __A)1878 _mm256_cvtph_epu16 (__m256h __A)
1879 {
1880 return (__m256i)
1881 __builtin_ia32_vcvtph2uw256_mask (__A,
1882 (__v16hi)
1883 _mm256_setzero_si256 (),
1884 (__mmask16) -1);
1885 }
1886
1887 extern __inline __m256i
1888 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_epu16(__m256i __A,__mmask16 __B,__m256h __C)1889 _mm256_mask_cvtph_epu16 (__m256i __A, __mmask16 __B, __m256h __C)
1890 {
1891 return (__m256i)
1892 __builtin_ia32_vcvtph2uw256_mask (__C, ( __v16hi) __A, __B);
1893 }
1894
1895 extern __inline __m256i
1896 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_epu16(__mmask16 __A,__m256h __B)1897 _mm256_maskz_cvtph_epu16 (__mmask16 __A, __m256h __B)
1898 {
1899 return (__m256i)
1900 __builtin_ia32_vcvtph2uw256_mask (__B,
1901 (__v16hi)
1902 _mm256_setzero_si256 (),
1903 __A);
1904 }
1905
1906 /* Intrinsics vcvttph2w. */
1907 extern __inline __m128i
1908 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvttph_epi16(__m128h __A)1909 _mm_cvttph_epi16 (__m128h __A)
1910 {
1911 return (__m128i)
1912 __builtin_ia32_vcvttph2w128_mask (__A,
1913 (__v8hi)
1914 _mm_setzero_si128 (),
1915 (__mmask8) -1);
1916 }
1917
1918 extern __inline __m128i
1919 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvttph_epi16(__m128i __A,__mmask8 __B,__m128h __C)1920 _mm_mask_cvttph_epi16 (__m128i __A, __mmask8 __B, __m128h __C)
1921 {
1922 return (__m128i)
1923 __builtin_ia32_vcvttph2w128_mask (__C,
1924 ( __v8hi) __A,
1925 __B);
1926 }
1927
1928 extern __inline __m128i
1929 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvttph_epi16(__mmask8 __A,__m128h __B)1930 _mm_maskz_cvttph_epi16 (__mmask8 __A, __m128h __B)
1931 {
1932 return (__m128i)
1933 __builtin_ia32_vcvttph2w128_mask (__B,
1934 (__v8hi)
1935 _mm_setzero_si128 (),
1936 __A);
1937 }
1938
1939 extern __inline __m256i
1940 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvttph_epi16(__m256h __A)1941 _mm256_cvttph_epi16 (__m256h __A)
1942 {
1943 return (__m256i)
1944 __builtin_ia32_vcvttph2w256_mask (__A,
1945 (__v16hi)
1946 _mm256_setzero_si256 (),
1947 (__mmask16) -1);
1948 }
1949
1950 extern __inline __m256i
1951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvttph_epi16(__m256i __A,__mmask16 __B,__m256h __C)1952 _mm256_mask_cvttph_epi16 (__m256i __A, __mmask16 __B, __m256h __C)
1953 {
1954 return (__m256i)
1955 __builtin_ia32_vcvttph2w256_mask (__C,
1956 ( __v16hi) __A,
1957 __B);
1958 }
1959
1960 extern __inline __m256i
1961 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvttph_epi16(__mmask16 __A,__m256h __B)1962 _mm256_maskz_cvttph_epi16 (__mmask16 __A, __m256h __B)
1963 {
1964 return (__m256i)
1965 __builtin_ia32_vcvttph2w256_mask (__B,
1966 (__v16hi)
1967 _mm256_setzero_si256 (),
1968 __A);
1969 }
1970
1971 /* Intrinsics vcvttph2uw. */
1972 extern __inline __m128i
1973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvttph_epu16(__m128h __A)1974 _mm_cvttph_epu16 (__m128h __A)
1975 {
1976 return (__m128i)
1977 __builtin_ia32_vcvttph2uw128_mask (__A,
1978 (__v8hi)
1979 _mm_setzero_si128 (),
1980 (__mmask8) -1);
1981 }
1982
1983 extern __inline __m128i
1984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvttph_epu16(__m128i __A,__mmask8 __B,__m128h __C)1985 _mm_mask_cvttph_epu16 (__m128i __A, __mmask8 __B, __m128h __C)
1986 {
1987 return (__m128i)
1988 __builtin_ia32_vcvttph2uw128_mask (__C,
1989 ( __v8hi) __A,
1990 __B);
1991 }
1992
1993 extern __inline __m128i
1994 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvttph_epu16(__mmask8 __A,__m128h __B)1995 _mm_maskz_cvttph_epu16 (__mmask8 __A, __m128h __B)
1996 {
1997 return (__m128i)
1998 __builtin_ia32_vcvttph2uw128_mask (__B,
1999 (__v8hi)
2000 _mm_setzero_si128 (),
2001 __A);
2002 }
2003
2004 extern __inline __m256i
2005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvttph_epu16(__m256h __A)2006 _mm256_cvttph_epu16 (__m256h __A)
2007 {
2008 return (__m256i)
2009 __builtin_ia32_vcvttph2uw256_mask (__A,
2010 (__v16hi)
2011 _mm256_setzero_si256 (),
2012 (__mmask16) -1);
2013 }
2014
2015 extern __inline __m256i
2016 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvttph_epu16(__m256i __A,__mmask16 __B,__m256h __C)2017 _mm256_mask_cvttph_epu16 (__m256i __A, __mmask16 __B, __m256h __C)
2018 {
2019 return (__m256i)
2020 __builtin_ia32_vcvttph2uw256_mask (__C,
2021 ( __v16hi) __A,
2022 __B);
2023 }
2024
2025 extern __inline __m256i
2026 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvttph_epu16(__mmask16 __A,__m256h __B)2027 _mm256_maskz_cvttph_epu16 (__mmask16 __A, __m256h __B)
2028 {
2029 return (__m256i)
2030 __builtin_ia32_vcvttph2uw256_mask (__B,
2031 (__v16hi) _mm256_setzero_si256 (),
2032 __A);
2033 }
2034
2035 /* Intrinsics vcvtw2ph. */
2036 extern __inline __m128h
2037 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtepi16_ph(__m128i __A)2038 _mm_cvtepi16_ph (__m128i __A)
2039 {
2040 return __builtin_ia32_vcvtw2ph128_mask ((__v8hi) __A,
2041 _mm_setzero_ph (),
2042 (__mmask8) -1);
2043 }
2044
2045 extern __inline __m128h
2046 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtepi16_ph(__m128h __A,__mmask8 __B,__m128i __C)2047 _mm_mask_cvtepi16_ph (__m128h __A, __mmask8 __B, __m128i __C)
2048 {
2049 return __builtin_ia32_vcvtw2ph128_mask ((__v8hi) __C,
2050 __A,
2051 __B);
2052 }
2053
2054 extern __inline __m128h
2055 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtepi16_ph(__mmask8 __A,__m128i __B)2056 _mm_maskz_cvtepi16_ph (__mmask8 __A, __m128i __B)
2057 {
2058 return __builtin_ia32_vcvtw2ph128_mask ((__v8hi) __B,
2059 _mm_setzero_ph (),
2060 __A);
2061 }
2062
2063 extern __inline __m256h
2064 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtepi16_ph(__m256i __A)2065 _mm256_cvtepi16_ph (__m256i __A)
2066 {
2067 return __builtin_ia32_vcvtw2ph256_mask ((__v16hi) __A,
2068 _mm256_setzero_ph (),
2069 (__mmask16) -1);
2070 }
2071
2072 extern __inline __m256h
2073 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtepi16_ph(__m256h __A,__mmask16 __B,__m256i __C)2074 _mm256_mask_cvtepi16_ph (__m256h __A, __mmask16 __B, __m256i __C)
2075 {
2076 return __builtin_ia32_vcvtw2ph256_mask ((__v16hi) __C,
2077 __A,
2078 __B);
2079 }
2080
2081 extern __inline __m256h
2082 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtepi16_ph(__mmask16 __A,__m256i __B)2083 _mm256_maskz_cvtepi16_ph (__mmask16 __A, __m256i __B)
2084 {
2085 return __builtin_ia32_vcvtw2ph256_mask ((__v16hi) __B,
2086 _mm256_setzero_ph (),
2087 __A);
2088 }
2089
2090 /* Intrinsics vcvtuw2ph. */
2091 extern __inline __m128h
2092 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtepu16_ph(__m128i __A)2093 _mm_cvtepu16_ph (__m128i __A)
2094 {
2095 return __builtin_ia32_vcvtuw2ph128_mask ((__v8hi) __A,
2096 _mm_setzero_ph (),
2097 (__mmask8) -1);
2098 }
2099
2100 extern __inline __m128h
2101 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtepu16_ph(__m128h __A,__mmask8 __B,__m128i __C)2102 _mm_mask_cvtepu16_ph (__m128h __A, __mmask8 __B, __m128i __C)
2103 {
2104 return __builtin_ia32_vcvtuw2ph128_mask ((__v8hi) __C, __A, __B);
2105 }
2106
2107 extern __inline __m128h
2108 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtepu16_ph(__mmask8 __A,__m128i __B)2109 _mm_maskz_cvtepu16_ph (__mmask8 __A, __m128i __B)
2110 {
2111 return __builtin_ia32_vcvtuw2ph128_mask ((__v8hi) __B,
2112 _mm_setzero_ph (),
2113 __A);
2114 }
2115
2116 extern __inline __m256h
2117 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtepu16_ph(__m256i __A)2118 _mm256_cvtepu16_ph (__m256i __A)
2119 {
2120 return __builtin_ia32_vcvtuw2ph256_mask ((__v16hi) __A,
2121 _mm256_setzero_ph (),
2122 (__mmask16) -1);
2123 }
2124
2125 extern __inline __m256h
2126 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtepu16_ph(__m256h __A,__mmask16 __B,__m256i __C)2127 _mm256_mask_cvtepu16_ph (__m256h __A, __mmask16 __B, __m256i __C)
2128 {
2129 return __builtin_ia32_vcvtuw2ph256_mask ((__v16hi) __C, __A, __B);
2130 }
2131
2132 extern __inline __m256h
2133 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtepu16_ph(__mmask16 __A,__m256i __B)2134 _mm256_maskz_cvtepu16_ph (__mmask16 __A, __m256i __B)
2135 {
2136 return __builtin_ia32_vcvtuw2ph256_mask ((__v16hi) __B,
2137 _mm256_setzero_ph (),
2138 __A);
2139 }
2140
2141 /* Intrinsics vcvtph2pd. */
2142 extern __inline __m128d
2143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtph_pd(__m128h __A)2144 _mm_cvtph_pd (__m128h __A)
2145 {
2146 return __builtin_ia32_vcvtph2pd128_mask (__A,
2147 _mm_setzero_pd (),
2148 (__mmask8) -1);
2149 }
2150
2151 extern __inline __m128d
2152 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtph_pd(__m128d __A,__mmask8 __B,__m128h __C)2153 _mm_mask_cvtph_pd (__m128d __A, __mmask8 __B, __m128h __C)
2154 {
2155 return __builtin_ia32_vcvtph2pd128_mask (__C, __A, __B);
2156 }
2157
2158 extern __inline __m128d
2159 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtph_pd(__mmask8 __A,__m128h __B)2160 _mm_maskz_cvtph_pd (__mmask8 __A, __m128h __B)
2161 {
2162 return __builtin_ia32_vcvtph2pd128_mask (__B, _mm_setzero_pd (), __A);
2163 }
2164
2165 extern __inline __m256d
2166 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtph_pd(__m128h __A)2167 _mm256_cvtph_pd (__m128h __A)
2168 {
2169 return __builtin_ia32_vcvtph2pd256_mask (__A,
2170 _mm256_setzero_pd (),
2171 (__mmask8) -1);
2172 }
2173
2174 extern __inline __m256d
2175 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtph_pd(__m256d __A,__mmask8 __B,__m128h __C)2176 _mm256_mask_cvtph_pd (__m256d __A, __mmask8 __B, __m128h __C)
2177 {
2178 return __builtin_ia32_vcvtph2pd256_mask (__C, __A, __B);
2179 }
2180
2181 extern __inline __m256d
2182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtph_pd(__mmask8 __A,__m128h __B)2183 _mm256_maskz_cvtph_pd (__mmask8 __A, __m128h __B)
2184 {
2185 return __builtin_ia32_vcvtph2pd256_mask (__B,
2186 _mm256_setzero_pd (),
2187 __A);
2188 }
2189
2190 /* Intrinsics vcvtph2ps. */
2191 extern __inline __m128
2192 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtxph_ps(__m128h __A)2193 _mm_cvtxph_ps (__m128h __A)
2194 {
2195 return __builtin_ia32_vcvtph2psx128_mask (__A,
2196 _mm_setzero_ps (),
2197 (__mmask8) -1);
2198 }
2199
2200 extern __inline __m128
2201 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtxph_ps(__m128 __A,__mmask8 __B,__m128h __C)2202 _mm_mask_cvtxph_ps (__m128 __A, __mmask8 __B, __m128h __C)
2203 {
2204 return __builtin_ia32_vcvtph2psx128_mask (__C, __A, __B);
2205 }
2206
2207 extern __inline __m128
2208 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtxph_ps(__mmask8 __A,__m128h __B)2209 _mm_maskz_cvtxph_ps (__mmask8 __A, __m128h __B)
2210 {
2211 return __builtin_ia32_vcvtph2psx128_mask (__B, _mm_setzero_ps (), __A);
2212 }
2213
2214 extern __inline __m256
2215 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtxph_ps(__m128h __A)2216 _mm256_cvtxph_ps (__m128h __A)
2217 {
2218 return __builtin_ia32_vcvtph2psx256_mask (__A,
2219 _mm256_setzero_ps (),
2220 (__mmask8) -1);
2221 }
2222
2223 extern __inline __m256
2224 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtxph_ps(__m256 __A,__mmask8 __B,__m128h __C)2225 _mm256_mask_cvtxph_ps (__m256 __A, __mmask8 __B, __m128h __C)
2226 {
2227 return __builtin_ia32_vcvtph2psx256_mask (__C, __A, __B);
2228 }
2229
2230 extern __inline __m256
2231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtxph_ps(__mmask8 __A,__m128h __B)2232 _mm256_maskz_cvtxph_ps (__mmask8 __A, __m128h __B)
2233 {
2234 return __builtin_ia32_vcvtph2psx256_mask (__B,
2235 _mm256_setzero_ps (),
2236 __A);
2237 }
2238
2239 /* Intrinsics vcvtxps2ph. */
2240 extern __inline __m128h
2241 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtxps_ph(__m128 __A)2242 _mm_cvtxps_ph (__m128 __A)
2243 {
2244 return __builtin_ia32_vcvtps2phx128_mask ((__v4sf) __A,
2245 _mm_setzero_ph (),
2246 (__mmask8) -1);
2247 }
2248
2249 extern __inline __m128h
2250 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtxps_ph(__m128h __A,__mmask8 __B,__m128 __C)2251 _mm_mask_cvtxps_ph (__m128h __A, __mmask8 __B, __m128 __C)
2252 {
2253 return __builtin_ia32_vcvtps2phx128_mask ((__v4sf) __C, __A, __B);
2254 }
2255
2256 extern __inline __m128h
2257 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtxps_ph(__mmask8 __A,__m128 __B)2258 _mm_maskz_cvtxps_ph (__mmask8 __A, __m128 __B)
2259 {
2260 return __builtin_ia32_vcvtps2phx128_mask ((__v4sf) __B,
2261 _mm_setzero_ph (),
2262 __A);
2263 }
2264
2265 extern __inline __m128h
2266 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtxps_ph(__m256 __A)2267 _mm256_cvtxps_ph (__m256 __A)
2268 {
2269 return __builtin_ia32_vcvtps2phx256_mask ((__v8sf) __A,
2270 _mm_setzero_ph (),
2271 (__mmask8) -1);
2272 }
2273
2274 extern __inline __m128h
2275 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtxps_ph(__m128h __A,__mmask8 __B,__m256 __C)2276 _mm256_mask_cvtxps_ph (__m128h __A, __mmask8 __B, __m256 __C)
2277 {
2278 return __builtin_ia32_vcvtps2phx256_mask ((__v8sf) __C, __A, __B);
2279 }
2280
2281 extern __inline __m128h
2282 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtxps_ph(__mmask8 __A,__m256 __B)2283 _mm256_maskz_cvtxps_ph (__mmask8 __A, __m256 __B)
2284 {
2285 return __builtin_ia32_vcvtps2phx256_mask ((__v8sf) __B,
2286 _mm_setzero_ph (),
2287 __A);
2288 }
2289
2290 /* Intrinsics vcvtpd2ph. */
2291 extern __inline __m128h
2292 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_cvtpd_ph(__m128d __A)2293 _mm_cvtpd_ph (__m128d __A)
2294 {
2295 return __builtin_ia32_vcvtpd2ph128_mask ((__v2df) __A,
2296 _mm_setzero_ph (),
2297 (__mmask8) -1);
2298 }
2299
2300 extern __inline __m128h
2301 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_cvtpd_ph(__m128h __A,__mmask8 __B,__m128d __C)2302 _mm_mask_cvtpd_ph (__m128h __A, __mmask8 __B, __m128d __C)
2303 {
2304 return __builtin_ia32_vcvtpd2ph128_mask ((__v2df) __C, __A, __B);
2305 }
2306
2307 extern __inline __m128h
2308 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_cvtpd_ph(__mmask8 __A,__m128d __B)2309 _mm_maskz_cvtpd_ph (__mmask8 __A, __m128d __B)
2310 {
2311 return __builtin_ia32_vcvtpd2ph128_mask ((__v2df) __B,
2312 _mm_setzero_ph (),
2313 __A);
2314 }
2315
2316 extern __inline __m128h
2317 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_cvtpd_ph(__m256d __A)2318 _mm256_cvtpd_ph (__m256d __A)
2319 {
2320 return __builtin_ia32_vcvtpd2ph256_mask ((__v4df) __A,
2321 _mm_setzero_ph (),
2322 (__mmask8) -1);
2323 }
2324
2325 extern __inline __m128h
2326 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_cvtpd_ph(__m128h __A,__mmask8 __B,__m256d __C)2327 _mm256_mask_cvtpd_ph (__m128h __A, __mmask8 __B, __m256d __C)
2328 {
2329 return __builtin_ia32_vcvtpd2ph256_mask ((__v4df) __C, __A, __B);
2330 }
2331
2332 extern __inline __m128h
2333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_cvtpd_ph(__mmask8 __A,__m256d __B)2334 _mm256_maskz_cvtpd_ph (__mmask8 __A, __m256d __B)
2335 {
2336 return __builtin_ia32_vcvtpd2ph256_mask ((__v4df) __B,
2337 _mm_setzero_ph (),
2338 __A);
2339 }
2340
2341 /* Intrinsics vfmaddsub[132,213,231]ph. */
2342 extern __inline __m256h
2343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fmaddsub_ph(__m256h __A,__m256h __B,__m256h __C)2344 _mm256_fmaddsub_ph (__m256h __A, __m256h __B, __m256h __C)
2345 {
2346 return (__m256h)__builtin_ia32_vfmaddsubph256_mask ((__v16hf)__A,
2347 (__v16hf)__B,
2348 (__v16hf)__C,
2349 (__mmask16)-1);
2350 }
2351
2352 extern __inline __m256h
2353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fmaddsub_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2354 _mm256_mask_fmaddsub_ph (__m256h __A, __mmask16 __U, __m256h __B,
2355 __m256h __C)
2356 {
2357 return (__m256h) __builtin_ia32_vfmaddsubph256_mask ((__v16hf) __A,
2358 (__v16hf) __B,
2359 (__v16hf) __C,
2360 (__mmask16) __U);
2361 }
2362
2363 extern __inline __m256h
2364 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fmaddsub_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2365 _mm256_mask3_fmaddsub_ph (__m256h __A, __m256h __B, __m256h __C,
2366 __mmask16 __U)
2367 {
2368 return (__m256h) __builtin_ia32_vfmaddsubph256_mask3 ((__v16hf) __A,
2369 (__v16hf) __B,
2370 (__v16hf) __C,
2371 (__mmask16)
2372 __U);
2373 }
2374
2375 extern __inline __m256h
2376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fmaddsub_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2377 _mm256_maskz_fmaddsub_ph (__mmask16 __U, __m256h __A, __m256h __B,
2378 __m256h __C)
2379 {
2380 return (__m256h) __builtin_ia32_vfmaddsubph256_maskz ((__v16hf) __A,
2381 (__v16hf) __B,
2382 (__v16hf) __C,
2383 (__mmask16)
2384 __U);
2385 }
2386
2387 extern __inline __m128h
2388 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fmaddsub_ph(__m128h __A,__m128h __B,__m128h __C)2389 _mm_fmaddsub_ph (__m128h __A, __m128h __B, __m128h __C)
2390 {
2391 return (__m128h)__builtin_ia32_vfmaddsubph128_mask ((__v8hf)__A,
2392 (__v8hf)__B,
2393 (__v8hf)__C,
2394 (__mmask8)-1);
2395 }
2396
2397 extern __inline __m128h
2398 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fmaddsub_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2399 _mm_mask_fmaddsub_ph (__m128h __A, __mmask8 __U, __m128h __B,
2400 __m128h __C)
2401 {
2402 return (__m128h) __builtin_ia32_vfmaddsubph128_mask ((__v8hf) __A,
2403 (__v8hf) __B,
2404 (__v8hf) __C,
2405 (__mmask8) __U);
2406 }
2407
2408 extern __inline __m128h
2409 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fmaddsub_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2410 _mm_mask3_fmaddsub_ph (__m128h __A, __m128h __B, __m128h __C,
2411 __mmask8 __U)
2412 {
2413 return (__m128h) __builtin_ia32_vfmaddsubph128_mask3 ((__v8hf) __A,
2414 (__v8hf) __B,
2415 (__v8hf) __C,
2416 (__mmask8)
2417 __U);
2418 }
2419
2420 extern __inline __m128h
2421 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fmaddsub_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2422 _mm_maskz_fmaddsub_ph (__mmask8 __U, __m128h __A, __m128h __B,
2423 __m128h __C)
2424 {
2425 return (__m128h) __builtin_ia32_vfmaddsubph128_maskz ((__v8hf) __A,
2426 (__v8hf) __B,
2427 (__v8hf) __C,
2428 (__mmask8)
2429 __U);
2430 }
2431
2432 /* Intrinsics vfmsubadd[132,213,231]ph. */
2433 extern __inline __m256h
2434 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fmsubadd_ph(__m256h __A,__m256h __B,__m256h __C)2435 _mm256_fmsubadd_ph (__m256h __A, __m256h __B, __m256h __C)
2436 {
2437 return (__m256h) __builtin_ia32_vfmsubaddph256_mask ((__v16hf) __A,
2438 (__v16hf) __B,
2439 (__v16hf) __C,
2440 (__mmask16) -1);
2441 }
2442
2443 extern __inline __m256h
2444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fmsubadd_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2445 _mm256_mask_fmsubadd_ph (__m256h __A, __mmask16 __U, __m256h __B,
2446 __m256h __C)
2447 {
2448 return (__m256h) __builtin_ia32_vfmsubaddph256_mask ((__v16hf) __A,
2449 (__v16hf) __B,
2450 (__v16hf) __C,
2451 (__mmask16) __U);
2452 }
2453
2454 extern __inline __m256h
2455 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fmsubadd_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2456 _mm256_mask3_fmsubadd_ph (__m256h __A, __m256h __B, __m256h __C,
2457 __mmask16 __U)
2458 {
2459 return (__m256h) __builtin_ia32_vfmsubaddph256_mask3 ((__v16hf) __A,
2460 (__v16hf) __B,
2461 (__v16hf) __C,
2462 (__mmask16)
2463 __U);
2464 }
2465
2466 extern __inline __m256h
2467 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fmsubadd_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2468 _mm256_maskz_fmsubadd_ph (__mmask16 __U, __m256h __A, __m256h __B,
2469 __m256h __C)
2470 {
2471 return (__m256h) __builtin_ia32_vfmsubaddph256_maskz ((__v16hf) __A,
2472 (__v16hf) __B,
2473 (__v16hf) __C,
2474 (__mmask16)
2475 __U);
2476 }
2477
2478 extern __inline __m128h
2479 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fmsubadd_ph(__m128h __A,__m128h __B,__m128h __C)2480 _mm_fmsubadd_ph (__m128h __A, __m128h __B, __m128h __C)
2481 {
2482 return (__m128h) __builtin_ia32_vfmsubaddph128_mask ((__v8hf) __A,
2483 (__v8hf) __B,
2484 (__v8hf) __C,
2485 (__mmask8) -1);
2486 }
2487
2488 extern __inline __m128h
2489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fmsubadd_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2490 _mm_mask_fmsubadd_ph (__m128h __A, __mmask8 __U, __m128h __B,
2491 __m128h __C)
2492 {
2493 return (__m128h) __builtin_ia32_vfmsubaddph128_mask ((__v8hf) __A,
2494 (__v8hf) __B,
2495 (__v8hf) __C,
2496 (__mmask8) __U);
2497 }
2498
2499 extern __inline __m128h
2500 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fmsubadd_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2501 _mm_mask3_fmsubadd_ph (__m128h __A, __m128h __B, __m128h __C,
2502 __mmask8 __U)
2503 {
2504 return (__m128h) __builtin_ia32_vfmsubaddph128_mask3 ((__v8hf) __A,
2505 (__v8hf) __B,
2506 (__v8hf) __C,
2507 (__mmask8)
2508 __U);
2509 }
2510
2511 extern __inline __m128h
2512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fmsubadd_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2513 _mm_maskz_fmsubadd_ph (__mmask8 __U, __m128h __A, __m128h __B,
2514 __m128h __C)
2515 {
2516 return (__m128h) __builtin_ia32_vfmsubaddph128_maskz ((__v8hf) __A,
2517 (__v8hf) __B,
2518 (__v8hf) __C,
2519 (__mmask8)
2520 __U);
2521 }
2522
2523 /* Intrinsics vfmadd[132,213,231]ph. */
2524 extern __inline __m256h
2525 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fmadd_ph(__m256h __A,__m256h __B,__m256h __C)2526 _mm256_fmadd_ph (__m256h __A, __m256h __B, __m256h __C)
2527 {
2528 return (__m256h) __builtin_ia32_vfmaddph256_mask ((__v16hf) __A,
2529 (__v16hf) __B,
2530 (__v16hf) __C,
2531 (__mmask16) -1);
2532 }
2533
2534 extern __inline __m256h
2535 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fmadd_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2536 _mm256_mask_fmadd_ph (__m256h __A, __mmask16 __U, __m256h __B,
2537 __m256h __C)
2538 {
2539 return (__m256h) __builtin_ia32_vfmaddph256_mask ((__v16hf) __A,
2540 (__v16hf) __B,
2541 (__v16hf) __C,
2542 (__mmask16) __U);
2543 }
2544
2545 extern __inline __m256h
2546 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fmadd_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2547 _mm256_mask3_fmadd_ph (__m256h __A, __m256h __B, __m256h __C,
2548 __mmask16 __U)
2549 {
2550 return (__m256h) __builtin_ia32_vfmaddph256_mask3 ((__v16hf) __A,
2551 (__v16hf) __B,
2552 (__v16hf) __C,
2553 (__mmask16)
2554 __U);
2555 }
2556
2557 extern __inline __m256h
2558 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fmadd_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2559 _mm256_maskz_fmadd_ph (__mmask16 __U, __m256h __A, __m256h __B,
2560 __m256h __C)
2561 {
2562 return (__m256h) __builtin_ia32_vfmaddph256_maskz ((__v16hf) __A,
2563 (__v16hf) __B,
2564 (__v16hf) __C,
2565 (__mmask16)
2566 __U);
2567 }
2568
2569 extern __inline __m128h
2570 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fmadd_ph(__m128h __A,__m128h __B,__m128h __C)2571 _mm_fmadd_ph (__m128h __A, __m128h __B, __m128h __C)
2572 {
2573 return (__m128h) __builtin_ia32_vfmaddph128_mask ((__v8hf) __A,
2574 (__v8hf) __B,
2575 (__v8hf) __C,
2576 (__mmask8) -1);
2577 }
2578
2579 extern __inline __m128h
2580 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fmadd_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2581 _mm_mask_fmadd_ph (__m128h __A, __mmask8 __U, __m128h __B,
2582 __m128h __C)
2583 {
2584 return (__m128h) __builtin_ia32_vfmaddph128_mask ((__v8hf) __A,
2585 (__v8hf) __B,
2586 (__v8hf) __C,
2587 (__mmask8) __U);
2588 }
2589
2590 extern __inline __m128h
2591 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fmadd_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2592 _mm_mask3_fmadd_ph (__m128h __A, __m128h __B, __m128h __C,
2593 __mmask8 __U)
2594 {
2595 return (__m128h) __builtin_ia32_vfmaddph128_mask3 ((__v8hf) __A,
2596 (__v8hf) __B,
2597 (__v8hf) __C,
2598 (__mmask8)
2599 __U);
2600 }
2601
2602 extern __inline __m128h
2603 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fmadd_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2604 _mm_maskz_fmadd_ph (__mmask8 __U, __m128h __A, __m128h __B,
2605 __m128h __C)
2606 {
2607 return (__m128h) __builtin_ia32_vfmaddph128_maskz ((__v8hf) __A,
2608 (__v8hf) __B,
2609 (__v8hf) __C,
2610 (__mmask8)
2611 __U);
2612 }
2613
2614 /* Intrinsics vfnmadd[132,213,231]ph. */
2615 extern __inline __m256h
2616 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fnmadd_ph(__m256h __A,__m256h __B,__m256h __C)2617 _mm256_fnmadd_ph (__m256h __A, __m256h __B, __m256h __C)
2618 {
2619 return (__m256h) __builtin_ia32_vfnmaddph256_mask ((__v16hf) __A,
2620 (__v16hf) __B,
2621 (__v16hf) __C,
2622 (__mmask16) -1);
2623 }
2624
2625 extern __inline __m256h
2626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fnmadd_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2627 _mm256_mask_fnmadd_ph (__m256h __A, __mmask16 __U, __m256h __B,
2628 __m256h __C)
2629 {
2630 return (__m256h) __builtin_ia32_vfnmaddph256_mask ((__v16hf) __A,
2631 (__v16hf) __B,
2632 (__v16hf) __C,
2633 (__mmask16) __U);
2634 }
2635
2636 extern __inline __m256h
2637 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fnmadd_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2638 _mm256_mask3_fnmadd_ph (__m256h __A, __m256h __B, __m256h __C,
2639 __mmask16 __U)
2640 {
2641 return (__m256h) __builtin_ia32_vfnmaddph256_mask3 ((__v16hf) __A,
2642 (__v16hf) __B,
2643 (__v16hf) __C,
2644 (__mmask16)
2645 __U);
2646 }
2647
2648 extern __inline __m256h
2649 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fnmadd_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2650 _mm256_maskz_fnmadd_ph (__mmask16 __U, __m256h __A, __m256h __B,
2651 __m256h __C)
2652 {
2653 return (__m256h) __builtin_ia32_vfnmaddph256_maskz ((__v16hf) __A,
2654 (__v16hf) __B,
2655 (__v16hf) __C,
2656 (__mmask16)
2657 __U);
2658 }
2659
2660 extern __inline __m128h
2661 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fnmadd_ph(__m128h __A,__m128h __B,__m128h __C)2662 _mm_fnmadd_ph (__m128h __A, __m128h __B, __m128h __C)
2663 {
2664 return (__m128h) __builtin_ia32_vfnmaddph128_mask ((__v8hf) __A,
2665 (__v8hf) __B,
2666 (__v8hf) __C,
2667 (__mmask8) -1);
2668 }
2669
2670 extern __inline __m128h
2671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fnmadd_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2672 _mm_mask_fnmadd_ph (__m128h __A, __mmask8 __U, __m128h __B,
2673 __m128h __C)
2674 {
2675 return (__m128h) __builtin_ia32_vfnmaddph128_mask ((__v8hf) __A,
2676 (__v8hf) __B,
2677 (__v8hf) __C,
2678 (__mmask8) __U);
2679 }
2680
2681 extern __inline __m128h
2682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fnmadd_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2683 _mm_mask3_fnmadd_ph (__m128h __A, __m128h __B, __m128h __C,
2684 __mmask8 __U)
2685 {
2686 return (__m128h) __builtin_ia32_vfnmaddph128_mask3 ((__v8hf) __A,
2687 (__v8hf) __B,
2688 (__v8hf) __C,
2689 (__mmask8)
2690 __U);
2691 }
2692
2693 extern __inline __m128h
2694 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fnmadd_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2695 _mm_maskz_fnmadd_ph (__mmask8 __U, __m128h __A, __m128h __B,
2696 __m128h __C)
2697 {
2698 return (__m128h) __builtin_ia32_vfnmaddph128_maskz ((__v8hf) __A,
2699 (__v8hf) __B,
2700 (__v8hf) __C,
2701 (__mmask8)
2702 __U);
2703 }
2704
2705 /* Intrinsics vfmsub[132,213,231]ph. */
2706 extern __inline __m256h
2707 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fmsub_ph(__m256h __A,__m256h __B,__m256h __C)2708 _mm256_fmsub_ph (__m256h __A, __m256h __B, __m256h __C)
2709 {
2710 return (__m256h) __builtin_ia32_vfmsubph256_mask ((__v16hf) __A,
2711 (__v16hf) __B,
2712 (__v16hf) __C,
2713 (__mmask16) -1);
2714 }
2715
2716 extern __inline __m256h
2717 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fmsub_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2718 _mm256_mask_fmsub_ph (__m256h __A, __mmask16 __U, __m256h __B,
2719 __m256h __C)
2720 {
2721 return (__m256h) __builtin_ia32_vfmsubph256_mask ((__v16hf) __A,
2722 (__v16hf) __B,
2723 (__v16hf) __C,
2724 (__mmask16) __U);
2725 }
2726
2727 extern __inline __m256h
2728 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fmsub_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2729 _mm256_mask3_fmsub_ph (__m256h __A, __m256h __B, __m256h __C,
2730 __mmask16 __U)
2731 {
2732 return (__m256h) __builtin_ia32_vfmsubph256_mask3 ((__v16hf) __A,
2733 (__v16hf) __B,
2734 (__v16hf) __C,
2735 (__mmask16)
2736 __U);
2737 }
2738
2739 extern __inline __m256h
2740 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fmsub_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2741 _mm256_maskz_fmsub_ph (__mmask16 __U, __m256h __A, __m256h __B,
2742 __m256h __C)
2743 {
2744 return (__m256h) __builtin_ia32_vfmsubph256_maskz ((__v16hf) __A,
2745 (__v16hf) __B,
2746 (__v16hf) __C,
2747 (__mmask16)
2748 __U);
2749 }
2750
2751 extern __inline __m128h
2752 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fmsub_ph(__m128h __A,__m128h __B,__m128h __C)2753 _mm_fmsub_ph (__m128h __A, __m128h __B, __m128h __C)
2754 {
2755 return (__m128h) __builtin_ia32_vfmsubph128_mask ((__v8hf) __A,
2756 (__v8hf) __B,
2757 (__v8hf) __C,
2758 (__mmask8) -1);
2759 }
2760
2761 extern __inline __m128h
2762 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fmsub_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2763 _mm_mask_fmsub_ph (__m128h __A, __mmask8 __U, __m128h __B,
2764 __m128h __C)
2765 {
2766 return (__m128h) __builtin_ia32_vfmsubph128_mask ((__v8hf) __A,
2767 (__v8hf) __B,
2768 (__v8hf) __C,
2769 (__mmask8) __U);
2770 }
2771
2772 extern __inline __m128h
2773 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fmsub_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2774 _mm_mask3_fmsub_ph (__m128h __A, __m128h __B, __m128h __C,
2775 __mmask8 __U)
2776 {
2777 return (__m128h) __builtin_ia32_vfmsubph128_mask3 ((__v8hf) __A,
2778 (__v8hf) __B,
2779 (__v8hf) __C,
2780 (__mmask8)
2781 __U);
2782 }
2783
2784 extern __inline __m128h
2785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fmsub_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2786 _mm_maskz_fmsub_ph (__mmask8 __U, __m128h __A, __m128h __B,
2787 __m128h __C)
2788 {
2789 return (__m128h) __builtin_ia32_vfmsubph128_maskz ((__v8hf) __A,
2790 (__v8hf) __B,
2791 (__v8hf) __C,
2792 (__mmask8)
2793 __U);
2794 }
2795
2796 /* Intrinsics vfnmsub[132,213,231]ph. */
2797 extern __inline __m256h
2798 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fnmsub_ph(__m256h __A,__m256h __B,__m256h __C)2799 _mm256_fnmsub_ph (__m256h __A, __m256h __B, __m256h __C)
2800 {
2801 return (__m256h) __builtin_ia32_vfnmsubph256_mask ((__v16hf) __A,
2802 (__v16hf) __B,
2803 (__v16hf) __C,
2804 (__mmask16) -1);
2805 }
2806
2807 extern __inline __m256h
2808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fnmsub_ph(__m256h __A,__mmask16 __U,__m256h __B,__m256h __C)2809 _mm256_mask_fnmsub_ph (__m256h __A, __mmask16 __U, __m256h __B,
2810 __m256h __C)
2811 {
2812 return (__m256h) __builtin_ia32_vfnmsubph256_mask ((__v16hf) __A,
2813 (__v16hf) __B,
2814 (__v16hf) __C,
2815 (__mmask16) __U);
2816 }
2817
2818 extern __inline __m256h
2819 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fnmsub_ph(__m256h __A,__m256h __B,__m256h __C,__mmask16 __U)2820 _mm256_mask3_fnmsub_ph (__m256h __A, __m256h __B, __m256h __C,
2821 __mmask16 __U)
2822 {
2823 return (__m256h) __builtin_ia32_vfnmsubph256_mask3 ((__v16hf) __A,
2824 (__v16hf) __B,
2825 (__v16hf) __C,
2826 (__mmask16)
2827 __U);
2828 }
2829
2830 extern __inline __m256h
2831 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fnmsub_ph(__mmask16 __U,__m256h __A,__m256h __B,__m256h __C)2832 _mm256_maskz_fnmsub_ph (__mmask16 __U, __m256h __A, __m256h __B,
2833 __m256h __C)
2834 {
2835 return (__m256h) __builtin_ia32_vfnmsubph256_maskz ((__v16hf) __A,
2836 (__v16hf) __B,
2837 (__v16hf) __C,
2838 (__mmask16)
2839 __U);
2840 }
2841
2842 extern __inline __m128h
2843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fnmsub_ph(__m128h __A,__m128h __B,__m128h __C)2844 _mm_fnmsub_ph (__m128h __A, __m128h __B, __m128h __C)
2845 {
2846 return (__m128h) __builtin_ia32_vfnmsubph128_mask ((__v8hf) __A,
2847 (__v8hf) __B,
2848 (__v8hf) __C,
2849 (__mmask8) -1);
2850 }
2851
2852 extern __inline __m128h
2853 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fnmsub_ph(__m128h __A,__mmask8 __U,__m128h __B,__m128h __C)2854 _mm_mask_fnmsub_ph (__m128h __A, __mmask8 __U, __m128h __B,
2855 __m128h __C)
2856 {
2857 return (__m128h) __builtin_ia32_vfnmsubph128_mask ((__v8hf) __A,
2858 (__v8hf) __B,
2859 (__v8hf) __C,
2860 (__mmask8) __U);
2861 }
2862
2863 extern __inline __m128h
2864 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fnmsub_ph(__m128h __A,__m128h __B,__m128h __C,__mmask8 __U)2865 _mm_mask3_fnmsub_ph (__m128h __A, __m128h __B, __m128h __C,
2866 __mmask8 __U)
2867 {
2868 return (__m128h) __builtin_ia32_vfnmsubph128_mask3 ((__v8hf) __A,
2869 (__v8hf) __B,
2870 (__v8hf) __C,
2871 (__mmask8)
2872 __U);
2873 }
2874
2875 extern __inline __m128h
2876 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fnmsub_ph(__mmask8 __U,__m128h __A,__m128h __B,__m128h __C)2877 _mm_maskz_fnmsub_ph (__mmask8 __U, __m128h __A, __m128h __B,
2878 __m128h __C)
2879 {
2880 return (__m128h) __builtin_ia32_vfnmsubph128_maskz ((__v8hf) __A,
2881 (__v8hf) __B,
2882 (__v8hf) __C,
2883 (__mmask8)
2884 __U);
2885 }
2886
2887 /* Intrinsics vf[,c]maddcph. */
2888 extern __inline __m128h
2889 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fmadd_pch(__m128h __A,__m128h __B,__m128h __C)2890 _mm_fmadd_pch (__m128h __A, __m128h __B, __m128h __C)
2891 {
2892 return (__m128h) __builtin_ia32_vfmaddcph128 ((__v8hf) __A,
2893 (__v8hf) __B,
2894 (__v8hf) __C);
2895 }
2896
2897 extern __inline __m128h
2898 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fmadd_pch(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)2899 _mm_mask_fmadd_pch (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
2900 {
2901 return (__m128h)
2902 __builtin_ia32_vfmaddcph128_mask ((__v8hf) __A,
2903 (__v8hf) __C,
2904 (__v8hf) __D, __B);
2905 }
2906
2907 extern __inline __m128h
2908 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fmadd_pch(__m128h __A,__m128h __B,__m128h __C,__mmask8 __D)2909 _mm_mask3_fmadd_pch (__m128h __A, __m128h __B, __m128h __C, __mmask8 __D)
2910 {
2911 return (__m128h)
2912 __builtin_ia32_vfmaddcph128_mask3 ((__v8hf) __A,
2913 (__v8hf) __B,
2914 (__v8hf) __C, __D);
2915 }
2916
2917 extern __inline __m128h
2918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fmadd_pch(__mmask8 __A,__m128h __B,__m128h __C,__m128h __D)2919 _mm_maskz_fmadd_pch (__mmask8 __A, __m128h __B, __m128h __C, __m128h __D)
2920 {
2921 return (__m128h) __builtin_ia32_vfmaddcph128_maskz ((__v8hf) __B,
2922 (__v8hf) __C,
2923 (__v8hf) __D, __A);
2924 }
2925
2926 extern __inline __m256h
2927 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fmadd_pch(__m256h __A,__m256h __B,__m256h __C)2928 _mm256_fmadd_pch (__m256h __A, __m256h __B, __m256h __C)
2929 {
2930 return (__m256h) __builtin_ia32_vfmaddcph256 ((__v16hf) __A,
2931 (__v16hf) __B,
2932 (__v16hf) __C);
2933 }
2934
2935 extern __inline __m256h
2936 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fmadd_pch(__m256h __A,__mmask8 __B,__m256h __C,__m256h __D)2937 _mm256_mask_fmadd_pch (__m256h __A, __mmask8 __B, __m256h __C, __m256h __D)
2938 {
2939 return (__m256h)
2940 __builtin_ia32_vfmaddcph256_mask ((__v16hf) __A,
2941 (__v16hf) __C,
2942 (__v16hf) __D, __B);
2943 }
2944
2945 extern __inline __m256h
2946 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fmadd_pch(__m256h __A,__m256h __B,__m256h __C,__mmask8 __D)2947 _mm256_mask3_fmadd_pch (__m256h __A, __m256h __B, __m256h __C, __mmask8 __D)
2948 {
2949 return (__m256h)
2950 __builtin_ia32_vfmaddcph256_mask3 ((__v16hf) __A,
2951 (__v16hf) __B,
2952 (__v16hf) __C, __D);
2953 }
2954
2955 extern __inline __m256h
2956 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fmadd_pch(__mmask8 __A,__m256h __B,__m256h __C,__m256h __D)2957 _mm256_maskz_fmadd_pch (__mmask8 __A, __m256h __B, __m256h __C, __m256h __D)
2958 {
2959 return (__m256h)__builtin_ia32_vfmaddcph256_maskz ((__v16hf) __B,
2960 (__v16hf) __C,
2961 (__v16hf) __D, __A);
2962 }
2963
2964 extern __inline __m128h
2965 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fcmadd_pch(__m128h __A,__m128h __B,__m128h __C)2966 _mm_fcmadd_pch (__m128h __A, __m128h __B, __m128h __C)
2967 {
2968 return (__m128h) __builtin_ia32_vfcmaddcph128 ((__v8hf) __A,
2969 (__v8hf) __B,
2970 (__v8hf) __C);
2971 }
2972
2973 extern __inline __m128h
2974 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fcmadd_pch(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)2975 _mm_mask_fcmadd_pch (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
2976 {
2977 return (__m128h)
2978 __builtin_ia32_vfcmaddcph128_mask ((__v8hf) __A,
2979 (__v8hf) __C,
2980 (__v8hf) __D, __B);
2981 }
2982
2983 extern __inline __m128h
2984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask3_fcmadd_pch(__m128h __A,__m128h __B,__m128h __C,__mmask8 __D)2985 _mm_mask3_fcmadd_pch (__m128h __A, __m128h __B, __m128h __C, __mmask8 __D)
2986 {
2987 return (__m128h)
2988 __builtin_ia32_vfcmaddcph128_mask3 ((__v8hf) __A,
2989 (__v8hf) __B,
2990 (__v8hf) __C, __D);
2991 }
2992
2993 extern __inline __m128h
2994 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fcmadd_pch(__mmask8 __A,__m128h __B,__m128h __C,__m128h __D)2995 _mm_maskz_fcmadd_pch (__mmask8 __A, __m128h __B, __m128h __C, __m128h __D)
2996 {
2997 return (__m128h)__builtin_ia32_vfcmaddcph128_maskz ((__v8hf) __B,
2998 (__v8hf) __C,
2999 (__v8hf) __D, __A);
3000 }
3001
3002 extern __inline __m256h
3003 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fcmadd_pch(__m256h __A,__m256h __B,__m256h __C)3004 _mm256_fcmadd_pch (__m256h __A, __m256h __B, __m256h __C)
3005 {
3006 return (__m256h) __builtin_ia32_vfcmaddcph256 ((__v16hf) __A,
3007 (__v16hf) __B,
3008 (__v16hf) __C);
3009 }
3010
3011 extern __inline __m256h
3012 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fcmadd_pch(__m256h __A,__mmask8 __B,__m256h __C,__m256h __D)3013 _mm256_mask_fcmadd_pch (__m256h __A, __mmask8 __B, __m256h __C, __m256h __D)
3014 {
3015 return (__m256h)
3016 __builtin_ia32_vfcmaddcph256_mask ((__v16hf) __A,
3017 (__v16hf) __C,
3018 (__v16hf) __D, __B);
3019 }
3020
3021 extern __inline __m256h
3022 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask3_fcmadd_pch(__m256h __A,__m256h __B,__m256h __C,__mmask8 __D)3023 _mm256_mask3_fcmadd_pch (__m256h __A, __m256h __B, __m256h __C, __mmask8 __D)
3024 {
3025 return (__m256h)
3026 __builtin_ia32_vfcmaddcph256_mask3 ((__v16hf) __A,
3027 (__v16hf) __B,
3028 (__v16hf) __C, __D);
3029 }
3030
3031 extern __inline __m256h
3032 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fcmadd_pch(__mmask8 __A,__m256h __B,__m256h __C,__m256h __D)3033 _mm256_maskz_fcmadd_pch (__mmask8 __A, __m256h __B, __m256h __C, __m256h __D)
3034 {
3035 return (__m256h) __builtin_ia32_vfcmaddcph256_maskz ((__v16hf) __B,
3036 (__v16hf) __C,
3037 (__v16hf) __D, __A);
3038 }
3039
3040 /* Intrinsics vf[,c]mulcph. */
3041 extern __inline __m128h
3042 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fmul_pch(__m128h __A,__m128h __B)3043 _mm_fmul_pch (__m128h __A, __m128h __B)
3044 {
3045 return (__m128h) __builtin_ia32_vfmulcph128 ((__v8hf) __A, (__v8hf) __B);
3046 }
3047
3048 extern __inline __m128h
3049 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fmul_pch(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)3050 _mm_mask_fmul_pch (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
3051 {
3052 return (__m128h) __builtin_ia32_vfmulcph128_mask ((__v8hf) __C,
3053 (__v8hf) __D,
3054 (__v8hf) __A, __B);
3055 }
3056
3057 extern __inline __m128h
3058 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fmul_pch(__mmask8 __A,__m128h __B,__m128h __C)3059 _mm_maskz_fmul_pch (__mmask8 __A, __m128h __B, __m128h __C)
3060 {
3061 return (__m128h) __builtin_ia32_vfmulcph128_mask ((__v8hf) __B,
3062 (__v8hf) __C,
3063 _mm_setzero_ph (),
3064 __A);
3065 }
3066
3067 extern __inline __m256h
3068 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fmul_pch(__m256h __A,__m256h __B)3069 _mm256_fmul_pch (__m256h __A, __m256h __B)
3070 {
3071 return (__m256h) __builtin_ia32_vfmulcph256 ((__v16hf) __A,
3072 (__v16hf) __B);
3073 }
3074
3075 extern __inline __m256h
3076 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fmul_pch(__m256h __A,__mmask8 __B,__m256h __C,__m256h __D)3077 _mm256_mask_fmul_pch (__m256h __A, __mmask8 __B, __m256h __C, __m256h __D)
3078 {
3079 return (__m256h) __builtin_ia32_vfmulcph256_mask ((__v16hf) __C,
3080 (__v16hf) __D,
3081 (__v16hf) __A, __B);
3082 }
3083
3084 extern __inline __m256h
3085 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fmul_pch(__mmask8 __A,__m256h __B,__m256h __C)3086 _mm256_maskz_fmul_pch (__mmask8 __A, __m256h __B, __m256h __C)
3087 {
3088 return (__m256h) __builtin_ia32_vfmulcph256_mask ((__v16hf) __B,
3089 (__v16hf) __C,
3090 _mm256_setzero_ph (),
3091 __A);
3092 }
3093
3094 extern __inline __m128h
3095 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_fcmul_pch(__m128h __A,__m128h __B)3096 _mm_fcmul_pch (__m128h __A, __m128h __B)
3097 {
3098 return (__m128h) __builtin_ia32_vfcmulcph128 ((__v8hf) __A,
3099 (__v8hf) __B);
3100 }
3101
3102 extern __inline __m128h
3103 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_fcmul_pch(__m128h __A,__mmask8 __B,__m128h __C,__m128h __D)3104 _mm_mask_fcmul_pch (__m128h __A, __mmask8 __B, __m128h __C, __m128h __D)
3105 {
3106 return (__m128h) __builtin_ia32_vfcmulcph128_mask ((__v8hf) __C,
3107 (__v8hf) __D,
3108 (__v8hf) __A, __B);
3109 }
3110
3111 extern __inline __m128h
3112 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_maskz_fcmul_pch(__mmask8 __A,__m128h __B,__m128h __C)3113 _mm_maskz_fcmul_pch (__mmask8 __A, __m128h __B, __m128h __C)
3114 {
3115 return (__m128h) __builtin_ia32_vfcmulcph128_mask ((__v8hf) __B,
3116 (__v8hf) __C,
3117 _mm_setzero_ph (),
3118 __A);
3119 }
3120
3121 extern __inline __m256h
3122 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_fcmul_pch(__m256h __A,__m256h __B)3123 _mm256_fcmul_pch (__m256h __A, __m256h __B)
3124 {
3125 return (__m256h) __builtin_ia32_vfcmulcph256 ((__v16hf) __A, (__v16hf) __B);
3126 }
3127
3128 extern __inline __m256h
3129 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_fcmul_pch(__m256h __A,__mmask8 __B,__m256h __C,__m256h __D)3130 _mm256_mask_fcmul_pch (__m256h __A, __mmask8 __B, __m256h __C, __m256h __D)
3131 {
3132 return (__m256h) __builtin_ia32_vfcmulcph256_mask ((__v16hf) __C,
3133 (__v16hf) __D,
3134 (__v16hf) __A, __B);
3135 }
3136
3137 extern __inline __m256h
3138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_maskz_fcmul_pch(__mmask8 __A,__m256h __B,__m256h __C)3139 _mm256_maskz_fcmul_pch (__mmask8 __A, __m256h __B, __m256h __C)
3140 {
3141 return (__m256h) __builtin_ia32_vfcmulcph256_mask ((__v16hf) __B,
3142 (__v16hf) __C,
3143 _mm256_setzero_ph (),
3144 __A);
3145 }
3146
3147 #define _MM256_REDUCE_OP(op) \
3148 __m128h __T1 = (__m128h) _mm256_extractf128_pd ((__m256d) __A, 0); \
3149 __m128h __T2 = (__m128h) _mm256_extractf128_pd ((__m256d) __A, 1); \
3150 __m128h __T3 = (__T1 op __T2); \
3151 __m128h __T4 = (__m128h) __builtin_shuffle (__T3, \
3152 (__v8hi) { 4, 5, 6, 7, 0, 1, 2, 3 }); \
3153 __m128h __T5 = (__T3) op (__T4); \
3154 __m128h __T6 = (__m128h) __builtin_shuffle (__T5, \
3155 (__v8hi) { 2, 3, 0, 1, 4, 5, 6, 7 }); \
3156 __m128h __T7 = __T5 op __T6; \
3157 return __T7[0] op __T7[1]
3158
3159 extern __inline _Float16
3160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_reduce_add_ph(__m256h __A)3161 _mm256_reduce_add_ph (__m256h __A)
3162 {
3163 _MM256_REDUCE_OP (+);
3164 }
3165
3166 extern __inline _Float16
3167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_reduce_mul_ph(__m256h __A)3168 _mm256_reduce_mul_ph (__m256h __A)
3169 {
3170 _MM256_REDUCE_OP (*);
3171 }
3172
3173 #undef _MM256_REDUCE_OP
3174 #define _MM256_REDUCE_OP(op) \
3175 __m128h __T1 = (__m128h) _mm256_extractf128_pd ((__m256d) __A, 0); \
3176 __m128h __T2 = (__m128h) _mm256_extractf128_pd ((__m256d) __A, 1); \
3177 __m128h __T3 = _mm_##op (__T1, __T2); \
3178 __m128h __T4 = (__m128h) __builtin_shuffle (__T3, \
3179 (__v8hi) { 2, 3, 0, 1, 6, 7, 4, 5 }); \
3180 __m128h __T5 = _mm_##op (__T3, __T4); \
3181 __m128h __T6 = (__m128h) __builtin_shuffle (__T5, (__v8hi) { 4, 5 }); \
3182 __m128h __T7 = _mm_##op (__T5, __T6); \
3183 __m128h __T8 = (__m128h) __builtin_shuffle (__T7, (__v8hi) { 1, 0 }); \
3184 __m128h __T9 = _mm_##op (__T7, __T8); \
3185 return __T9[0]
3186
3187 extern __inline _Float16
3188 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_reduce_min_ph(__m256h __A)3189 _mm256_reduce_min_ph (__m256h __A)
3190 {
3191 _MM256_REDUCE_OP (min_ph);
3192 }
3193
3194 extern __inline _Float16
3195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_reduce_max_ph(__m256h __A)3196 _mm256_reduce_max_ph (__m256h __A)
3197 {
3198 _MM256_REDUCE_OP (max_ph);
3199 }
3200
3201 #define _MM_REDUCE_OP(op) \
3202 __m128h __T1 = (__m128h) __builtin_shuffle (__A, \
3203 (__v8hi) { 4, 5, 6, 7, 0, 1, 2, 3 }); \
3204 __m128h __T2 = (__A) op (__T1); \
3205 __m128h __T3 = (__m128h) __builtin_shuffle (__T2, \
3206 (__v8hi){ 2, 3, 0, 1, 4, 5, 6, 7 }); \
3207 __m128h __T4 = __T2 op __T3; \
3208 return __T4[0] op __T4[1]
3209
3210 extern __inline _Float16
3211 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_reduce_add_ph(__m128h __A)3212 _mm_reduce_add_ph (__m128h __A)
3213 {
3214 _MM_REDUCE_OP (+);
3215 }
3216
3217 extern __inline _Float16
3218 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_reduce_mul_ph(__m128h __A)3219 _mm_reduce_mul_ph (__m128h __A)
3220 {
3221 _MM_REDUCE_OP (*);
3222 }
3223
3224 #undef _MM_REDUCE_OP
3225 #define _MM_REDUCE_OP(op) \
3226 __m128h __T1 = (__m128h) __builtin_shuffle (__A, \
3227 (__v8hi) { 2, 3, 0, 1, 6, 7, 4, 5 }); \
3228 __m128h __T2 = _mm_##op (__A, __T1); \
3229 __m128h __T3 = (__m128h) __builtin_shuffle (__T2, (__v8hi){ 4, 5 }); \
3230 __m128h __T4 = _mm_##op (__T2, __T3); \
3231 __m128h __T5 = (__m128h) __builtin_shuffle (__T4, (__v8hi){ 1, 0 }); \
3232 __m128h __T6 = _mm_##op (__T4, __T5); \
3233 return __T6[0]
3234
3235 extern __inline _Float16
3236 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_reduce_min_ph(__m128h __A)3237 _mm_reduce_min_ph (__m128h __A)
3238 {
3239 _MM_REDUCE_OP (min_ph);
3240 }
3241
3242 extern __inline _Float16
3243 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_reduce_max_ph(__m128h __A)3244 _mm_reduce_max_ph (__m128h __A)
3245 {
3246 _MM_REDUCE_OP (max_ph);
3247 }
3248
3249 #undef _MM256_REDUCE_OP
3250 #undef _MM_REDUCE_OP
3251
3252 extern __inline __m256h
3253 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_mask_blend_ph(__mmask16 __U,__m256h __A,__m256h __W)3254 _mm256_mask_blend_ph (__mmask16 __U, __m256h __A, __m256h __W)
3255 {
3256 return (__m256h) __builtin_ia32_movdquhi256_mask ((__v16hi) __W,
3257 (__v16hi) __A,
3258 (__mmask16) __U);
3259
3260 }
3261
3262 extern __inline __m256h
3263 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_permutex2var_ph(__m256h __A,__m256i __I,__m256h __B)3264 _mm256_permutex2var_ph (__m256h __A, __m256i __I, __m256h __B)
3265 {
3266 return (__m256h) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
3267 (__v16hi) __I,
3268 (__v16hi) __B,
3269 (__mmask16)-1);
3270 }
3271
3272 extern __inline __m256h
3273 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_permutexvar_ph(__m256i __A,__m256h __B)3274 _mm256_permutexvar_ph (__m256i __A, __m256h __B)
3275 {
3276 return (__m256h) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3277 (__v16hi) __A,
3278 (__v16hi)
3279 (_mm256_setzero_ph ()),
3280 (__mmask16)-1);
3281 }
3282
3283 extern __inline __m128h
3284 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_mask_blend_ph(__mmask8 __U,__m128h __A,__m128h __W)3285 _mm_mask_blend_ph (__mmask8 __U, __m128h __A, __m128h __W)
3286 {
3287 return (__m128h) __builtin_ia32_movdquhi128_mask ((__v8hi) __W,
3288 (__v8hi) __A,
3289 (__mmask8) __U);
3290
3291 }
3292
3293 extern __inline __m128h
3294 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_permutex2var_ph(__m128h __A,__m128i __I,__m128h __B)3295 _mm_permutex2var_ph (__m128h __A, __m128i __I, __m128h __B)
3296 {
3297 return (__m128h) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
3298 (__v8hi) __I,
3299 (__v8hi) __B,
3300 (__mmask8)-1);
3301 }
3302
3303 extern __inline __m128h
3304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_permutexvar_ph(__m128i __A,__m128h __B)3305 _mm_permutexvar_ph (__m128i __A, __m128h __B)
3306 {
3307 return (__m128h) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3308 (__v8hi) __A,
3309 (__v8hi)
3310 (_mm_setzero_ph ()),
3311 (__mmask8)-1);
3312 }
3313
3314 extern __inline __m256h
3315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm256_set1_pch(_Float16 _Complex __A)3316 _mm256_set1_pch (_Float16 _Complex __A)
3317 {
3318 union
3319 {
3320 _Float16 _Complex __a;
3321 float __b;
3322 } __u = { .__a = __A };
3323
3324 return (__m256h) _mm256_set1_ps (__u.__b);
3325 }
3326
3327 extern __inline __m128h
3328 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
_mm_set1_pch(_Float16 _Complex __A)3329 _mm_set1_pch (_Float16 _Complex __A)
3330 {
3331 union
3332 {
3333 _Float16 _Complex __a;
3334 float __b;
3335 } __u = { .__a = __A };
3336
3337 return (__m128h) _mm_set1_ps (__u.__b);
3338 }
3339
3340 // intrinsics below are alias for f*mul_*ch
3341 #define _mm_mul_pch(A, B) _mm_fmul_pch ((A), (B))
3342 #define _mm_mask_mul_pch(W, U, A, B) _mm_mask_fmul_pch ((W), (U), (A), (B))
3343 #define _mm_maskz_mul_pch(U, A, B) _mm_maskz_fmul_pch ((U), (A), (B))
3344 #define _mm256_mul_pch(A, B) _mm256_fmul_pch ((A), (B))
3345 #define _mm256_mask_mul_pch(W, U, A, B) \
3346 _mm256_mask_fmul_pch ((W), (U), (A), (B))
3347 #define _mm256_maskz_mul_pch(U, A, B) _mm256_maskz_fmul_pch ((U), (A), (B))
3348
3349 #define _mm_cmul_pch(A, B) _mm_fcmul_pch ((A), (B))
3350 #define _mm_mask_cmul_pch(W, U, A, B) _mm_mask_fcmul_pch ((W), (U), (A), (B))
3351 #define _mm_maskz_cmul_pch(U, A, B) _mm_maskz_fcmul_pch ((U), (A), (B))
3352 #define _mm256_cmul_pch(A, B) _mm256_fcmul_pch ((A), (B))
3353 #define _mm256_mask_cmul_pch(W, U, A, B) \
3354 _mm256_mask_fcmul_pch ((W), (U), (A), (B))
3355 #define _mm256_maskz_cmul_pch(U, A, B) _mm256_maskz_fcmul_pch((U), (A), (B))
3356
3357 #ifdef __DISABLE_AVX512FP16VL__
3358 #undef __DISABLE_AVX512FP16VL__
3359 #pragma GCC pop_options
3360 #endif /* __DISABLE_AVX512FP16VL__ */
3361
3362 #endif /* __AVX512FP16VLINTRIN_H_INCLUDED */
3363