Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

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