Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

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

  1. /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW 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.  
  10. #ifndef __IMMINTRIN_H
  11. #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
  12. #endif
  13.  
  14. #ifndef __AVX512VLBWINTRIN_H
  15. #define __AVX512VLBWINTRIN_H
  16.  
  17. /* Define the default attributes for the functions in this file. */
  18. #define __DEFAULT_FN_ATTRS128 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"), __min_vector_width__(128)))
  19. #define __DEFAULT_FN_ATTRS256 __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw"), __min_vector_width__(256)))
  20.  
  21. /* Integer compare */
  22.  
  23. #define _mm_cmp_epi8_mask(a, b, p) \
  24.   ((__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
  25.                                           (__v16qi)(__m128i)(b), (int)(p), \
  26.                                           (__mmask16)-1))
  27.  
  28. #define _mm_mask_cmp_epi8_mask(m, a, b, p) \
  29.   ((__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
  30.                                           (__v16qi)(__m128i)(b), (int)(p), \
  31.                                           (__mmask16)(m)))
  32.  
  33. #define _mm_cmp_epu8_mask(a, b, p) \
  34.   ((__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
  35.                                            (__v16qi)(__m128i)(b), (int)(p), \
  36.                                            (__mmask16)-1))
  37.  
  38. #define _mm_mask_cmp_epu8_mask(m, a, b, p) \
  39.   ((__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
  40.                                            (__v16qi)(__m128i)(b), (int)(p), \
  41.                                            (__mmask16)(m)))
  42.  
  43. #define _mm256_cmp_epi8_mask(a, b, p) \
  44.   ((__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
  45.                                           (__v32qi)(__m256i)(b), (int)(p), \
  46.                                           (__mmask32)-1))
  47.  
  48. #define _mm256_mask_cmp_epi8_mask(m, a, b, p) \
  49.   ((__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
  50.                                           (__v32qi)(__m256i)(b), (int)(p), \
  51.                                           (__mmask32)(m)))
  52.  
  53. #define _mm256_cmp_epu8_mask(a, b, p) \
  54.   ((__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
  55.                                            (__v32qi)(__m256i)(b), (int)(p), \
  56.                                            (__mmask32)-1))
  57.  
  58. #define _mm256_mask_cmp_epu8_mask(m, a, b, p) \
  59.   ((__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
  60.                                            (__v32qi)(__m256i)(b), (int)(p), \
  61.                                            (__mmask32)(m)))
  62.  
  63. #define _mm_cmp_epi16_mask(a, b, p) \
  64.   ((__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
  65.                                          (__v8hi)(__m128i)(b), (int)(p), \
  66.                                          (__mmask8)-1))
  67.  
  68. #define _mm_mask_cmp_epi16_mask(m, a, b, p) \
  69.   ((__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
  70.                                          (__v8hi)(__m128i)(b), (int)(p), \
  71.                                          (__mmask8)(m)))
  72.  
  73. #define _mm_cmp_epu16_mask(a, b, p) \
  74.   ((__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
  75.                                           (__v8hi)(__m128i)(b), (int)(p), \
  76.                                           (__mmask8)-1))
  77.  
  78. #define _mm_mask_cmp_epu16_mask(m, a, b, p) \
  79.   ((__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
  80.                                           (__v8hi)(__m128i)(b), (int)(p), \
  81.                                           (__mmask8)(m)))
  82.  
  83. #define _mm256_cmp_epi16_mask(a, b, p) \
  84.   ((__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
  85.                                           (__v16hi)(__m256i)(b), (int)(p), \
  86.                                           (__mmask16)-1))
  87.  
  88. #define _mm256_mask_cmp_epi16_mask(m, a, b, p) \
  89.   ((__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
  90.                                           (__v16hi)(__m256i)(b), (int)(p), \
  91.                                           (__mmask16)(m)))
  92.  
  93. #define _mm256_cmp_epu16_mask(a, b, p) \
  94.   ((__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
  95.                                            (__v16hi)(__m256i)(b), (int)(p), \
  96.                                            (__mmask16)-1))
  97.  
  98. #define _mm256_mask_cmp_epu16_mask(m, a, b, p) \
  99.   ((__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
  100.                                            (__v16hi)(__m256i)(b), (int)(p), \
  101.                                            (__mmask16)(m)))
  102.  
  103. #define _mm_cmpeq_epi8_mask(A, B) \
  104.     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
  105. #define _mm_mask_cmpeq_epi8_mask(k, A, B) \
  106.     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
  107. #define _mm_cmpge_epi8_mask(A, B) \
  108.     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
  109. #define _mm_mask_cmpge_epi8_mask(k, A, B) \
  110.     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
  111. #define _mm_cmpgt_epi8_mask(A, B) \
  112.     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
  113. #define _mm_mask_cmpgt_epi8_mask(k, A, B) \
  114.     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
  115. #define _mm_cmple_epi8_mask(A, B) \
  116.     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
  117. #define _mm_mask_cmple_epi8_mask(k, A, B) \
  118.     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
  119. #define _mm_cmplt_epi8_mask(A, B) \
  120.     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
  121. #define _mm_mask_cmplt_epi8_mask(k, A, B) \
  122.     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
  123. #define _mm_cmpneq_epi8_mask(A, B) \
  124.     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
  125. #define _mm_mask_cmpneq_epi8_mask(k, A, B) \
  126.     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
  127.  
  128. #define _mm256_cmpeq_epi8_mask(A, B) \
  129.     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
  130. #define _mm256_mask_cmpeq_epi8_mask(k, A, B) \
  131.     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
  132. #define _mm256_cmpge_epi8_mask(A, B) \
  133.     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
  134. #define _mm256_mask_cmpge_epi8_mask(k, A, B) \
  135.     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
  136. #define _mm256_cmpgt_epi8_mask(A, B) \
  137.     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
  138. #define _mm256_mask_cmpgt_epi8_mask(k, A, B) \
  139.     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
  140. #define _mm256_cmple_epi8_mask(A, B) \
  141.     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
  142. #define _mm256_mask_cmple_epi8_mask(k, A, B) \
  143.     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
  144. #define _mm256_cmplt_epi8_mask(A, B) \
  145.     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
  146. #define _mm256_mask_cmplt_epi8_mask(k, A, B) \
  147.     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
  148. #define _mm256_cmpneq_epi8_mask(A, B) \
  149.     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
  150. #define _mm256_mask_cmpneq_epi8_mask(k, A, B) \
  151.     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
  152.  
  153. #define _mm_cmpeq_epu8_mask(A, B) \
  154.     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
  155. #define _mm_mask_cmpeq_epu8_mask(k, A, B) \
  156.     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
  157. #define _mm_cmpge_epu8_mask(A, B) \
  158.     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
  159. #define _mm_mask_cmpge_epu8_mask(k, A, B) \
  160.     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
  161. #define _mm_cmpgt_epu8_mask(A, B) \
  162.     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
  163. #define _mm_mask_cmpgt_epu8_mask(k, A, B) \
  164.     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
  165. #define _mm_cmple_epu8_mask(A, B) \
  166.     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
  167. #define _mm_mask_cmple_epu8_mask(k, A, B) \
  168.     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
  169. #define _mm_cmplt_epu8_mask(A, B) \
  170.     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
  171. #define _mm_mask_cmplt_epu8_mask(k, A, B) \
  172.     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
  173. #define _mm_cmpneq_epu8_mask(A, B) \
  174.     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
  175. #define _mm_mask_cmpneq_epu8_mask(k, A, B) \
  176.     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
  177.  
  178. #define _mm256_cmpeq_epu8_mask(A, B) \
  179.     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
  180. #define _mm256_mask_cmpeq_epu8_mask(k, A, B) \
  181.     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
  182. #define _mm256_cmpge_epu8_mask(A, B) \
  183.     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
  184. #define _mm256_mask_cmpge_epu8_mask(k, A, B) \
  185.     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
  186. #define _mm256_cmpgt_epu8_mask(A, B) \
  187.     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
  188. #define _mm256_mask_cmpgt_epu8_mask(k, A, B) \
  189.     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
  190. #define _mm256_cmple_epu8_mask(A, B) \
  191.     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
  192. #define _mm256_mask_cmple_epu8_mask(k, A, B) \
  193.     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
  194. #define _mm256_cmplt_epu8_mask(A, B) \
  195.     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
  196. #define _mm256_mask_cmplt_epu8_mask(k, A, B) \
  197.     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
  198. #define _mm256_cmpneq_epu8_mask(A, B) \
  199.     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
  200. #define _mm256_mask_cmpneq_epu8_mask(k, A, B) \
  201.     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
  202.  
  203. #define _mm_cmpeq_epi16_mask(A, B) \
  204.     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
  205. #define _mm_mask_cmpeq_epi16_mask(k, A, B) \
  206.     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
  207. #define _mm_cmpge_epi16_mask(A, B) \
  208.     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
  209. #define _mm_mask_cmpge_epi16_mask(k, A, B) \
  210.     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
  211. #define _mm_cmpgt_epi16_mask(A, B) \
  212.     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
  213. #define _mm_mask_cmpgt_epi16_mask(k, A, B) \
  214.     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
  215. #define _mm_cmple_epi16_mask(A, B) \
  216.     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
  217. #define _mm_mask_cmple_epi16_mask(k, A, B) \
  218.     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
  219. #define _mm_cmplt_epi16_mask(A, B) \
  220.     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
  221. #define _mm_mask_cmplt_epi16_mask(k, A, B) \
  222.     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
  223. #define _mm_cmpneq_epi16_mask(A, B) \
  224.     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
  225. #define _mm_mask_cmpneq_epi16_mask(k, A, B) \
  226.     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
  227.  
  228. #define _mm256_cmpeq_epi16_mask(A, B) \
  229.     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
  230. #define _mm256_mask_cmpeq_epi16_mask(k, A, B) \
  231.     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
  232. #define _mm256_cmpge_epi16_mask(A, B) \
  233.     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
  234. #define _mm256_mask_cmpge_epi16_mask(k, A, B) \
  235.     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
  236. #define _mm256_cmpgt_epi16_mask(A, B) \
  237.     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
  238. #define _mm256_mask_cmpgt_epi16_mask(k, A, B) \
  239.     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
  240. #define _mm256_cmple_epi16_mask(A, B) \
  241.     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
  242. #define _mm256_mask_cmple_epi16_mask(k, A, B) \
  243.     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
  244. #define _mm256_cmplt_epi16_mask(A, B) \
  245.     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
  246. #define _mm256_mask_cmplt_epi16_mask(k, A, B) \
  247.     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
  248. #define _mm256_cmpneq_epi16_mask(A, B) \
  249.     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
  250. #define _mm256_mask_cmpneq_epi16_mask(k, A, B) \
  251.     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
  252.  
  253. #define _mm_cmpeq_epu16_mask(A, B) \
  254.     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
  255. #define _mm_mask_cmpeq_epu16_mask(k, A, B) \
  256.     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
  257. #define _mm_cmpge_epu16_mask(A, B) \
  258.     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
  259. #define _mm_mask_cmpge_epu16_mask(k, A, B) \
  260.     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
  261. #define _mm_cmpgt_epu16_mask(A, B) \
  262.     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
  263. #define _mm_mask_cmpgt_epu16_mask(k, A, B) \
  264.     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
  265. #define _mm_cmple_epu16_mask(A, B) \
  266.     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
  267. #define _mm_mask_cmple_epu16_mask(k, A, B) \
  268.     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
  269. #define _mm_cmplt_epu16_mask(A, B) \
  270.     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
  271. #define _mm_mask_cmplt_epu16_mask(k, A, B) \
  272.     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
  273. #define _mm_cmpneq_epu16_mask(A, B) \
  274.     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
  275. #define _mm_mask_cmpneq_epu16_mask(k, A, B) \
  276.     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
  277.  
  278. #define _mm256_cmpeq_epu16_mask(A, B) \
  279.     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
  280. #define _mm256_mask_cmpeq_epu16_mask(k, A, B) \
  281.     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
  282. #define _mm256_cmpge_epu16_mask(A, B) \
  283.     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
  284. #define _mm256_mask_cmpge_epu16_mask(k, A, B) \
  285.     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
  286. #define _mm256_cmpgt_epu16_mask(A, B) \
  287.     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
  288. #define _mm256_mask_cmpgt_epu16_mask(k, A, B) \
  289.     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
  290. #define _mm256_cmple_epu16_mask(A, B) \
  291.     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
  292. #define _mm256_mask_cmple_epu16_mask(k, A, B) \
  293.     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
  294. #define _mm256_cmplt_epu16_mask(A, B) \
  295.     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
  296. #define _mm256_mask_cmplt_epu16_mask(k, A, B) \
  297.     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
  298. #define _mm256_cmpneq_epu16_mask(A, B) \
  299.     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
  300. #define _mm256_mask_cmpneq_epu16_mask(k, A, B) \
  301.     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
  302.  
  303. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  304. _mm256_mask_add_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
  305.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  306.                                              (__v32qi)_mm256_add_epi8(__A, __B),
  307.                                              (__v32qi)__W);
  308. }
  309.  
  310. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  311. _mm256_maskz_add_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  312.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  313.                                              (__v32qi)_mm256_add_epi8(__A, __B),
  314.                                              (__v32qi)_mm256_setzero_si256());
  315. }
  316.  
  317. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  318. _mm256_mask_add_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  319.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  320.                                              (__v16hi)_mm256_add_epi16(__A, __B),
  321.                                              (__v16hi)__W);
  322. }
  323.  
  324. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  325. _mm256_maskz_add_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  326.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  327.                                              (__v16hi)_mm256_add_epi16(__A, __B),
  328.                                              (__v16hi)_mm256_setzero_si256());
  329. }
  330.  
  331. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  332. _mm256_mask_sub_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
  333.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  334.                                              (__v32qi)_mm256_sub_epi8(__A, __B),
  335.                                              (__v32qi)__W);
  336. }
  337.  
  338. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  339. _mm256_maskz_sub_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  340.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  341.                                              (__v32qi)_mm256_sub_epi8(__A, __B),
  342.                                              (__v32qi)_mm256_setzero_si256());
  343. }
  344.  
  345. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  346. _mm256_mask_sub_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  347.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  348.                                              (__v16hi)_mm256_sub_epi16(__A, __B),
  349.                                              (__v16hi)__W);
  350. }
  351.  
  352. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  353. _mm256_maskz_sub_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  354.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  355.                                              (__v16hi)_mm256_sub_epi16(__A, __B),
  356.                                              (__v16hi)_mm256_setzero_si256());
  357. }
  358.  
  359. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  360. _mm_mask_add_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  361.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  362.                                              (__v16qi)_mm_add_epi8(__A, __B),
  363.                                              (__v16qi)__W);
  364. }
  365.  
  366. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  367. _mm_maskz_add_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  368.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  369.                                              (__v16qi)_mm_add_epi8(__A, __B),
  370.                                              (__v16qi)_mm_setzero_si128());
  371. }
  372.  
  373. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  374. _mm_mask_add_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  375.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  376.                                              (__v8hi)_mm_add_epi16(__A, __B),
  377.                                              (__v8hi)__W);
  378. }
  379.  
  380. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  381. _mm_maskz_add_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  382.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  383.                                              (__v8hi)_mm_add_epi16(__A, __B),
  384.                                              (__v8hi)_mm_setzero_si128());
  385. }
  386.  
  387. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  388. _mm_mask_sub_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  389.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  390.                                              (__v16qi)_mm_sub_epi8(__A, __B),
  391.                                              (__v16qi)__W);
  392. }
  393.  
  394. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  395. _mm_maskz_sub_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  396.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  397.                                              (__v16qi)_mm_sub_epi8(__A, __B),
  398.                                              (__v16qi)_mm_setzero_si128());
  399. }
  400.  
  401. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  402. _mm_mask_sub_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  403.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  404.                                              (__v8hi)_mm_sub_epi16(__A, __B),
  405.                                              (__v8hi)__W);
  406. }
  407.  
  408. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  409. _mm_maskz_sub_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  410.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  411.                                              (__v8hi)_mm_sub_epi16(__A, __B),
  412.                                              (__v8hi)_mm_setzero_si128());
  413. }
  414.  
  415. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  416. _mm256_mask_mullo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  417.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  418.                                              (__v16hi)_mm256_mullo_epi16(__A, __B),
  419.                                              (__v16hi)__W);
  420. }
  421.  
  422. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  423. _mm256_maskz_mullo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  424.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  425.                                              (__v16hi)_mm256_mullo_epi16(__A, __B),
  426.                                              (__v16hi)_mm256_setzero_si256());
  427. }
  428.  
  429. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  430. _mm_mask_mullo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  431.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  432.                                              (__v8hi)_mm_mullo_epi16(__A, __B),
  433.                                              (__v8hi)__W);
  434. }
  435.  
  436. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  437. _mm_maskz_mullo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  438.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  439.                                              (__v8hi)_mm_mullo_epi16(__A, __B),
  440.                                              (__v8hi)_mm_setzero_si128());
  441. }
  442.  
  443. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  444. _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
  445. {
  446.   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
  447.               (__v16qi) __W,
  448.               (__v16qi) __A);
  449. }
  450.  
  451. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  452. _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
  453. {
  454.   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
  455.                (__v32qi) __W,
  456.                (__v32qi) __A);
  457. }
  458.  
  459. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  460. _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
  461. {
  462.   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
  463.                (__v8hi) __W,
  464.                (__v8hi) __A);
  465. }
  466.  
  467. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  468. _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
  469. {
  470.   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
  471.                (__v16hi) __W,
  472.                (__v16hi) __A);
  473. }
  474.  
  475. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  476. _mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A)
  477. {
  478.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  479.                                              (__v16qi)_mm_abs_epi8(__A),
  480.                                              (__v16qi)__W);
  481. }
  482.  
  483. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  484. _mm_maskz_abs_epi8(__mmask16 __U, __m128i __A)
  485. {
  486.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  487.                                              (__v16qi)_mm_abs_epi8(__A),
  488.                                              (__v16qi)_mm_setzero_si128());
  489. }
  490.  
  491. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  492. _mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A)
  493. {
  494.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  495.                                              (__v32qi)_mm256_abs_epi8(__A),
  496.                                              (__v32qi)__W);
  497. }
  498.  
  499. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  500. _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
  501. {
  502.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  503.                                              (__v32qi)_mm256_abs_epi8(__A),
  504.                                              (__v32qi)_mm256_setzero_si256());
  505. }
  506.  
  507. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  508. _mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A)
  509. {
  510.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  511.                                              (__v8hi)_mm_abs_epi16(__A),
  512.                                              (__v8hi)__W);
  513. }
  514.  
  515. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  516. _mm_maskz_abs_epi16(__mmask8 __U, __m128i __A)
  517. {
  518.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  519.                                              (__v8hi)_mm_abs_epi16(__A),
  520.                                              (__v8hi)_mm_setzero_si128());
  521. }
  522.  
  523. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  524. _mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A)
  525. {
  526.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  527.                                              (__v16hi)_mm256_abs_epi16(__A),
  528.                                              (__v16hi)__W);
  529. }
  530.  
  531. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  532. _mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A)
  533. {
  534.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  535.                                              (__v16hi)_mm256_abs_epi16(__A),
  536.                                              (__v16hi)_mm256_setzero_si256());
  537. }
  538.  
  539. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  540. _mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
  541.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  542.                                              (__v8hi)_mm_packs_epi32(__A, __B),
  543.                                              (__v8hi)_mm_setzero_si128());
  544. }
  545.  
  546. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  547. _mm_mask_packs_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  548. {
  549.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  550.                                              (__v8hi)_mm_packs_epi32(__A, __B),
  551.                                              (__v8hi)__W);
  552. }
  553.  
  554. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  555. _mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B)
  556. {
  557.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  558.                                           (__v16hi)_mm256_packs_epi32(__A, __B),
  559.                                           (__v16hi)_mm256_setzero_si256());
  560. }
  561.  
  562. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  563. _mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  564. {
  565.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  566.                                           (__v16hi)_mm256_packs_epi32(__A, __B),
  567.                                           (__v16hi)__W);
  568. }
  569.  
  570. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  571. _mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B)
  572. {
  573.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  574.                                              (__v16qi)_mm_packs_epi16(__A, __B),
  575.                                              (__v16qi)_mm_setzero_si128());
  576. }
  577.  
  578. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  579. _mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  580. {
  581.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  582.                                              (__v16qi)_mm_packs_epi16(__A, __B),
  583.                                              (__v16qi)__W);
  584. }
  585.  
  586. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  587. _mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B)
  588. {
  589.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  590.                                           (__v32qi)_mm256_packs_epi16(__A, __B),
  591.                                           (__v32qi)_mm256_setzero_si256());
  592. }
  593.  
  594. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  595. _mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  596. {
  597.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  598.                                           (__v32qi)_mm256_packs_epi16(__A, __B),
  599.                                           (__v32qi)__W);
  600. }
  601.  
  602. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  603. _mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B)
  604. {
  605.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  606.                                              (__v8hi)_mm_packus_epi32(__A, __B),
  607.                                              (__v8hi)_mm_setzero_si128());
  608. }
  609.  
  610. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  611. _mm_mask_packus_epi32(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  612. {
  613.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  614.                                              (__v8hi)_mm_packus_epi32(__A, __B),
  615.                                              (__v8hi)__W);
  616. }
  617.  
  618. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  619. _mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B)
  620. {
  621.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  622.                                          (__v16hi)_mm256_packus_epi32(__A, __B),
  623.                                          (__v16hi)_mm256_setzero_si256());
  624. }
  625.  
  626. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  627. _mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  628. {
  629.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  630.                                          (__v16hi)_mm256_packus_epi32(__A, __B),
  631.                                          (__v16hi)__W);
  632. }
  633.  
  634. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  635. _mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B)
  636. {
  637.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  638.                                             (__v16qi)_mm_packus_epi16(__A, __B),
  639.                                             (__v16qi)_mm_setzero_si128());
  640. }
  641.  
  642. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  643. _mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  644. {
  645.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  646.                                             (__v16qi)_mm_packus_epi16(__A, __B),
  647.                                             (__v16qi)__W);
  648. }
  649.  
  650. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  651. _mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B)
  652. {
  653.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  654.                                          (__v32qi)_mm256_packus_epi16(__A, __B),
  655.                                          (__v32qi)_mm256_setzero_si256());
  656. }
  657.  
  658. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  659. _mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  660. {
  661.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  662.                                          (__v32qi)_mm256_packus_epi16(__A, __B),
  663.                                          (__v32qi)__W);
  664. }
  665.  
  666. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  667. _mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  668. {
  669.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  670.                                              (__v16qi)_mm_adds_epi8(__A, __B),
  671.                                              (__v16qi)__W);
  672. }
  673.  
  674. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  675. _mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B)
  676. {
  677.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  678.                                              (__v16qi)_mm_adds_epi8(__A, __B),
  679.                                              (__v16qi)_mm_setzero_si128());
  680. }
  681.  
  682. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  683. _mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  684. {
  685.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  686.                                             (__v32qi)_mm256_adds_epi8(__A, __B),
  687.                                             (__v32qi)__W);
  688. }
  689.  
  690. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  691. _mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B)
  692. {
  693.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  694.                                             (__v32qi)_mm256_adds_epi8(__A, __B),
  695.                                             (__v32qi)_mm256_setzero_si256());
  696. }
  697.  
  698. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  699. _mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  700. {
  701.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  702.                                              (__v8hi)_mm_adds_epi16(__A, __B),
  703.                                              (__v8hi)__W);
  704. }
  705.  
  706. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  707. _mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  708. {
  709.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  710.                                              (__v8hi)_mm_adds_epi16(__A, __B),
  711.                                              (__v8hi)_mm_setzero_si128());
  712. }
  713.  
  714. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  715. _mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  716. {
  717.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  718.                                            (__v16hi)_mm256_adds_epi16(__A, __B),
  719.                                            (__v16hi)__W);
  720. }
  721.  
  722. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  723. _mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  724. {
  725.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  726.                                            (__v16hi)_mm256_adds_epi16(__A, __B),
  727.                                            (__v16hi)_mm256_setzero_si256());
  728. }
  729.  
  730. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  731. _mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  732. {
  733.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  734.                                              (__v16qi)_mm_adds_epu8(__A, __B),
  735.                                              (__v16qi)__W);
  736. }
  737.  
  738. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  739. _mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B)
  740. {
  741.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  742.                                              (__v16qi)_mm_adds_epu8(__A, __B),
  743.                                              (__v16qi)_mm_setzero_si128());
  744. }
  745.  
  746. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  747. _mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  748. {
  749.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  750.                                             (__v32qi)_mm256_adds_epu8(__A, __B),
  751.                                             (__v32qi)__W);
  752. }
  753.  
  754. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  755. _mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B)
  756. {
  757.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  758.                                             (__v32qi)_mm256_adds_epu8(__A, __B),
  759.                                             (__v32qi)_mm256_setzero_si256());
  760. }
  761.  
  762. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  763. _mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  764. {
  765.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  766.                                              (__v8hi)_mm_adds_epu16(__A, __B),
  767.                                              (__v8hi)__W);
  768. }
  769.  
  770. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  771. _mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B)
  772. {
  773.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  774.                                              (__v8hi)_mm_adds_epu16(__A, __B),
  775.                                              (__v8hi)_mm_setzero_si128());
  776. }
  777.  
  778. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  779. _mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  780. {
  781.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  782.                                            (__v16hi)_mm256_adds_epu16(__A, __B),
  783.                                            (__v16hi)__W);
  784. }
  785.  
  786. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  787. _mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B)
  788. {
  789.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  790.                                            (__v16hi)_mm256_adds_epu16(__A, __B),
  791.                                            (__v16hi)_mm256_setzero_si256());
  792. }
  793.  
  794. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  795. _mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  796. {
  797.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  798.                                              (__v16qi)_mm_avg_epu8(__A, __B),
  799.                                              (__v16qi)__W);
  800. }
  801.  
  802. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  803. _mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B)
  804. {
  805.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  806.                                              (__v16qi)_mm_avg_epu8(__A, __B),
  807.                                              (__v16qi)_mm_setzero_si128());
  808. }
  809.  
  810. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  811. _mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  812. {
  813.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  814.                                              (__v32qi)_mm256_avg_epu8(__A, __B),
  815.                                              (__v32qi)__W);
  816. }
  817.  
  818. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  819. _mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B)
  820. {
  821.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  822.                                              (__v32qi)_mm256_avg_epu8(__A, __B),
  823.                                              (__v32qi)_mm256_setzero_si256());
  824. }
  825.  
  826. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  827. _mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  828. {
  829.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  830.                                              (__v8hi)_mm_avg_epu16(__A, __B),
  831.                                              (__v8hi)__W);
  832. }
  833.  
  834. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  835. _mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B)
  836. {
  837.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  838.                                              (__v8hi)_mm_avg_epu16(__A, __B),
  839.                                              (__v8hi)_mm_setzero_si128());
  840. }
  841.  
  842. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  843. _mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  844. {
  845.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  846.                                             (__v16hi)_mm256_avg_epu16(__A, __B),
  847.                                             (__v16hi)__W);
  848. }
  849.  
  850. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  851. _mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B)
  852. {
  853.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  854.                                             (__v16hi)_mm256_avg_epu16(__A, __B),
  855.                                             (__v16hi)_mm256_setzero_si256());
  856. }
  857.  
  858. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  859. _mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B)
  860. {
  861.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  862.                                              (__v16qi)_mm_max_epi8(__A, __B),
  863.                                              (__v16qi)_mm_setzero_si128());
  864. }
  865.  
  866. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  867. _mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  868. {
  869.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  870.                                              (__v16qi)_mm_max_epi8(__A, __B),
  871.                                              (__v16qi)__W);
  872. }
  873.  
  874. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  875. _mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B)
  876. {
  877.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  878.                                              (__v32qi)_mm256_max_epi8(__A, __B),
  879.                                              (__v32qi)_mm256_setzero_si256());
  880. }
  881.  
  882. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  883. _mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  884. {
  885.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  886.                                              (__v32qi)_mm256_max_epi8(__A, __B),
  887.                                              (__v32qi)__W);
  888. }
  889.  
  890. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  891. _mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B)
  892. {
  893.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  894.                                              (__v8hi)_mm_max_epi16(__A, __B),
  895.                                              (__v8hi)_mm_setzero_si128());
  896. }
  897.  
  898. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  899. _mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  900. {
  901.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  902.                                              (__v8hi)_mm_max_epi16(__A, __B),
  903.                                              (__v8hi)__W);
  904. }
  905.  
  906. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  907. _mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B)
  908. {
  909.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  910.                                             (__v16hi)_mm256_max_epi16(__A, __B),
  911.                                             (__v16hi)_mm256_setzero_si256());
  912. }
  913.  
  914. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  915. _mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  916. {
  917.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  918.                                             (__v16hi)_mm256_max_epi16(__A, __B),
  919.                                             (__v16hi)__W);
  920. }
  921.  
  922. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  923. _mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B)
  924. {
  925.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  926.                                              (__v16qi)_mm_max_epu8(__A, __B),
  927.                                              (__v16qi)_mm_setzero_si128());
  928. }
  929.  
  930. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  931. _mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  932. {
  933.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  934.                                              (__v16qi)_mm_max_epu8(__A, __B),
  935.                                              (__v16qi)__W);
  936. }
  937.  
  938. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  939. _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
  940. {
  941.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  942.                                              (__v32qi)_mm256_max_epu8(__A, __B),
  943.                                              (__v32qi)_mm256_setzero_si256());
  944. }
  945.  
  946. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  947. _mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  948. {
  949.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  950.                                              (__v32qi)_mm256_max_epu8(__A, __B),
  951.                                              (__v32qi)__W);
  952. }
  953.  
  954. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  955. _mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B)
  956. {
  957.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  958.                                              (__v8hi)_mm_max_epu16(__A, __B),
  959.                                              (__v8hi)_mm_setzero_si128());
  960. }
  961.  
  962. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  963. _mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  964. {
  965.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  966.                                              (__v8hi)_mm_max_epu16(__A, __B),
  967.                                              (__v8hi)__W);
  968. }
  969.  
  970. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  971. _mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B)
  972. {
  973.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  974.                                             (__v16hi)_mm256_max_epu16(__A, __B),
  975.                                             (__v16hi)_mm256_setzero_si256());
  976. }
  977.  
  978. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  979. _mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  980. {
  981.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  982.                                             (__v16hi)_mm256_max_epu16(__A, __B),
  983.                                             (__v16hi)__W);
  984. }
  985.  
  986. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  987. _mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B)
  988. {
  989.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  990.                                              (__v16qi)_mm_min_epi8(__A, __B),
  991.                                              (__v16qi)_mm_setzero_si128());
  992. }
  993.  
  994. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  995. _mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  996. {
  997.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  998.                                              (__v16qi)_mm_min_epi8(__A, __B),
  999.                                              (__v16qi)__W);
  1000. }
  1001.  
  1002. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1003. _mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B)
  1004. {
  1005.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  1006.                                              (__v32qi)_mm256_min_epi8(__A, __B),
  1007.                                              (__v32qi)_mm256_setzero_si256());
  1008. }
  1009.  
  1010. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1011. _mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  1012. {
  1013.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  1014.                                              (__v32qi)_mm256_min_epi8(__A, __B),
  1015.                                              (__v32qi)__W);
  1016. }
  1017.  
  1018. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1019. _mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B)
  1020. {
  1021.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  1022.                                              (__v8hi)_mm_min_epi16(__A, __B),
  1023.                                              (__v8hi)_mm_setzero_si128());
  1024. }
  1025.  
  1026. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1027. _mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  1028. {
  1029.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  1030.                                              (__v8hi)_mm_min_epi16(__A, __B),
  1031.                                              (__v8hi)__W);
  1032. }
  1033.  
  1034. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1035. _mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B)
  1036. {
  1037.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  1038.                                             (__v16hi)_mm256_min_epi16(__A, __B),
  1039.                                             (__v16hi)_mm256_setzero_si256());
  1040. }
  1041.  
  1042. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1043. _mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  1044. {
  1045.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  1046.                                             (__v16hi)_mm256_min_epi16(__A, __B),
  1047.                                             (__v16hi)__W);
  1048. }
  1049.  
  1050. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1051. _mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B)
  1052. {
  1053.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  1054.                                              (__v16qi)_mm_min_epu8(__A, __B),
  1055.                                              (__v16qi)_mm_setzero_si128());
  1056. }
  1057.  
  1058. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1059. _mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
  1060. {
  1061.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  1062.                                              (__v16qi)_mm_min_epu8(__A, __B),
  1063.                                              (__v16qi)__W);
  1064. }
  1065.  
  1066. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1067. _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
  1068. {
  1069.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  1070.                                              (__v32qi)_mm256_min_epu8(__A, __B),
  1071.                                              (__v32qi)_mm256_setzero_si256());
  1072. }
  1073.  
  1074. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1075. _mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
  1076. {
  1077.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
  1078.                                              (__v32qi)_mm256_min_epu8(__A, __B),
  1079.                                              (__v32qi)__W);
  1080. }
  1081.  
  1082. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1083. _mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B)
  1084. {
  1085.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  1086.                                              (__v8hi)_mm_min_epu16(__A, __B),
  1087.                                              (__v8hi)_mm_setzero_si128());
  1088. }
  1089.  
  1090. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1091. _mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
  1092. {
  1093.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  1094.                                              (__v8hi)_mm_min_epu16(__A, __B),
  1095.                                              (__v8hi)__W);
  1096. }
  1097.  
  1098. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1099. _mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B)
  1100. {
  1101.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  1102.                                             (__v16hi)_mm256_min_epu16(__A, __B),
  1103.                                             (__v16hi)_mm256_setzero_si256());
  1104. }
  1105.  
  1106. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1107. _mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
  1108. {
  1109.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  1110.                                             (__v16hi)_mm256_min_epu16(__A, __B),
  1111.                                             (__v16hi)__W);
  1112. }
  1113.  
  1114. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1115. _mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  1116. {
  1117.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1118.                                             (__v16qi)_mm_shuffle_epi8(__A, __B),
  1119.                                             (__v16qi)__W);
  1120. }
  1121.  
  1122. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1123. _mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B)
  1124. {
  1125.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1126.                                             (__v16qi)_mm_shuffle_epi8(__A, __B),
  1127.                                             (__v16qi)_mm_setzero_si128());
  1128. }
  1129.  
  1130. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1131. _mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  1132. {
  1133.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1134.                                          (__v32qi)_mm256_shuffle_epi8(__A, __B),
  1135.                                          (__v32qi)__W);
  1136. }
  1137.  
  1138. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1139. _mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B)
  1140. {
  1141.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1142.                                          (__v32qi)_mm256_shuffle_epi8(__A, __B),
  1143.                                          (__v32qi)_mm256_setzero_si256());
  1144. }
  1145.  
  1146. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1147. _mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  1148. {
  1149.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1150.                                              (__v16qi)_mm_subs_epi8(__A, __B),
  1151.                                              (__v16qi)__W);
  1152. }
  1153.  
  1154. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1155. _mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B)
  1156. {
  1157.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1158.                                              (__v16qi)_mm_subs_epi8(__A, __B),
  1159.                                              (__v16qi)_mm_setzero_si128());
  1160. }
  1161.  
  1162. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1163. _mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  1164. {
  1165.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1166.                                             (__v32qi)_mm256_subs_epi8(__A, __B),
  1167.                                             (__v32qi)__W);
  1168. }
  1169.  
  1170. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1171. _mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B)
  1172. {
  1173.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1174.                                             (__v32qi)_mm256_subs_epi8(__A, __B),
  1175.                                             (__v32qi)_mm256_setzero_si256());
  1176. }
  1177.  
  1178. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1179. _mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1180. {
  1181.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1182.                                              (__v8hi)_mm_subs_epi16(__A, __B),
  1183.                                              (__v8hi)__W);
  1184. }
  1185.  
  1186. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1187. _mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1188. {
  1189.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1190.                                              (__v8hi)_mm_subs_epi16(__A, __B),
  1191.                                              (__v8hi)_mm_setzero_si128());
  1192. }
  1193.  
  1194. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1195. _mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1196. {
  1197.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1198.                                            (__v16hi)_mm256_subs_epi16(__A, __B),
  1199.                                            (__v16hi)__W);
  1200. }
  1201.  
  1202. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1203. _mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1204. {
  1205.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1206.                                            (__v16hi)_mm256_subs_epi16(__A, __B),
  1207.                                            (__v16hi)_mm256_setzero_si256());
  1208. }
  1209.  
  1210. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1211. _mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
  1212. {
  1213.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1214.                                              (__v16qi)_mm_subs_epu8(__A, __B),
  1215.                                              (__v16qi)__W);
  1216. }
  1217.  
  1218. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1219. _mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B)
  1220. {
  1221.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1222.                                              (__v16qi)_mm_subs_epu8(__A, __B),
  1223.                                              (__v16qi)_mm_setzero_si128());
  1224. }
  1225.  
  1226. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1227. _mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
  1228. {
  1229.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1230.                                             (__v32qi)_mm256_subs_epu8(__A, __B),
  1231.                                             (__v32qi)__W);
  1232. }
  1233.  
  1234. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1235. _mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B)
  1236. {
  1237.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1238.                                             (__v32qi)_mm256_subs_epu8(__A, __B),
  1239.                                             (__v32qi)_mm256_setzero_si256());
  1240. }
  1241.  
  1242. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1243. _mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1244. {
  1245.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1246.                                              (__v8hi)_mm_subs_epu16(__A, __B),
  1247.                                              (__v8hi)__W);
  1248. }
  1249.  
  1250. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1251. _mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B)
  1252. {
  1253.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1254.                                              (__v8hi)_mm_subs_epu16(__A, __B),
  1255.                                              (__v8hi)_mm_setzero_si128());
  1256. }
  1257.  
  1258. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1259. _mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A,
  1260.       __m256i __B) {
  1261.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1262.                                            (__v16hi)_mm256_subs_epu16(__A, __B),
  1263.                                            (__v16hi)__W);
  1264. }
  1265.  
  1266. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1267. _mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B)
  1268. {
  1269.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1270.                                            (__v16hi)_mm256_subs_epu16(__A, __B),
  1271.                                            (__v16hi)_mm256_setzero_si256());
  1272. }
  1273.  
  1274. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1275. _mm_permutex2var_epi16(__m128i __A, __m128i __I, __m128i __B)
  1276. {
  1277.   return (__m128i)__builtin_ia32_vpermi2varhi128((__v8hi)__A, (__v8hi)__I,
  1278.                                                  (__v8hi) __B);
  1279. }
  1280.  
  1281. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1282. _mm_mask_permutex2var_epi16(__m128i __A, __mmask8 __U, __m128i __I,
  1283.                             __m128i __B)
  1284. {
  1285.   return (__m128i)__builtin_ia32_selectw_128(__U,
  1286.                                   (__v8hi)_mm_permutex2var_epi16(__A, __I, __B),
  1287.                                   (__v8hi)__A);
  1288. }
  1289.  
  1290. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1291. _mm_mask2_permutex2var_epi16(__m128i __A, __m128i __I, __mmask8 __U,
  1292.                              __m128i __B)
  1293. {
  1294.   return (__m128i)__builtin_ia32_selectw_128(__U,
  1295.                                   (__v8hi)_mm_permutex2var_epi16(__A, __I, __B),
  1296.                                   (__v8hi)__I);
  1297. }
  1298.  
  1299. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1300. _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
  1301.             __m128i __B)
  1302. {
  1303.   return (__m128i)__builtin_ia32_selectw_128(__U,
  1304.                                   (__v8hi)_mm_permutex2var_epi16(__A, __I, __B),
  1305.                                   (__v8hi)_mm_setzero_si128());
  1306. }
  1307.  
  1308. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1309. _mm256_permutex2var_epi16(__m256i __A, __m256i __I, __m256i __B)
  1310. {
  1311.   return (__m256i)__builtin_ia32_vpermi2varhi256((__v16hi)__A, (__v16hi)__I,
  1312.                                                  (__v16hi)__B);
  1313. }
  1314.  
  1315. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1316. _mm256_mask_permutex2var_epi16(__m256i __A, __mmask16 __U, __m256i __I,
  1317.                                __m256i __B)
  1318. {
  1319.   return (__m256i)__builtin_ia32_selectw_256(__U,
  1320.                               (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B),
  1321.                               (__v16hi)__A);
  1322. }
  1323.  
  1324. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1325. _mm256_mask2_permutex2var_epi16(__m256i __A, __m256i __I, __mmask16 __U,
  1326.                                 __m256i __B)
  1327. {
  1328.   return (__m256i)__builtin_ia32_selectw_256(__U,
  1329.                               (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B),
  1330.                               (__v16hi)__I);
  1331. }
  1332.  
  1333. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1334. _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A, __m256i __I,
  1335.                                  __m256i __B)
  1336. {
  1337.   return (__m256i)__builtin_ia32_selectw_256(__U,
  1338.                               (__v16hi)_mm256_permutex2var_epi16(__A, __I, __B),
  1339.                               (__v16hi)_mm256_setzero_si256());
  1340. }
  1341.  
  1342. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1343. _mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
  1344.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1345.                                             (__v8hi)_mm_maddubs_epi16(__X, __Y),
  1346.                                             (__v8hi)__W);
  1347. }
  1348.  
  1349. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1350. _mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
  1351.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1352.                                             (__v8hi)_mm_maddubs_epi16(__X, __Y),
  1353.                                             (__v8hi)_mm_setzero_si128());
  1354. }
  1355.  
  1356. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1357. _mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X,
  1358.                           __m256i __Y) {
  1359.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1360.                                         (__v16hi)_mm256_maddubs_epi16(__X, __Y),
  1361.                                         (__v16hi)__W);
  1362. }
  1363.  
  1364. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1365. _mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
  1366.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1367.                                         (__v16hi)_mm256_maddubs_epi16(__X, __Y),
  1368.                                         (__v16hi)_mm256_setzero_si256());
  1369. }
  1370.  
  1371. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1372. _mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1373.   return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
  1374.                                              (__v4si)_mm_madd_epi16(__A, __B),
  1375.                                              (__v4si)__W);
  1376. }
  1377.  
  1378. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1379. _mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1380.   return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
  1381.                                              (__v4si)_mm_madd_epi16(__A, __B),
  1382.                                              (__v4si)_mm_setzero_si128());
  1383. }
  1384.  
  1385. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1386. _mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
  1387.   return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
  1388.                                             (__v8si)_mm256_madd_epi16(__A, __B),
  1389.                                             (__v8si)__W);
  1390. }
  1391.  
  1392. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1393. _mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
  1394.   return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
  1395.                                             (__v8si)_mm256_madd_epi16(__A, __B),
  1396.                                             (__v8si)_mm256_setzero_si256());
  1397. }
  1398.  
  1399. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1400. _mm_cvtsepi16_epi8 (__m128i __A) {
  1401.   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  1402.                (__v16qi) _mm_setzero_si128(),
  1403.                (__mmask8) -1);
  1404. }
  1405.  
  1406. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1407. _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
  1408.   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  1409.                (__v16qi) __O,
  1410.                 __M);
  1411. }
  1412.  
  1413. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1414. _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
  1415.   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
  1416.                (__v16qi) _mm_setzero_si128(),
  1417.                __M);
  1418. }
  1419.  
  1420. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1421. _mm256_cvtsepi16_epi8 (__m256i __A) {
  1422.   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  1423.                (__v16qi) _mm_setzero_si128(),
  1424.                (__mmask16) -1);
  1425. }
  1426.  
  1427. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1428. _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
  1429.   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  1430.                (__v16qi) __O,
  1431.                 __M);
  1432. }
  1433.  
  1434. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1435. _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
  1436.   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
  1437.                (__v16qi) _mm_setzero_si128(),
  1438.                __M);
  1439. }
  1440.  
  1441. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1442. _mm_cvtusepi16_epi8 (__m128i __A) {
  1443.   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  1444.                 (__v16qi) _mm_setzero_si128(),
  1445.                 (__mmask8) -1);
  1446. }
  1447.  
  1448. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1449. _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
  1450.   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  1451.                 (__v16qi) __O,
  1452.                 __M);
  1453. }
  1454.  
  1455. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1456. _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
  1457.   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
  1458.                 (__v16qi) _mm_setzero_si128(),
  1459.                 __M);
  1460. }
  1461.  
  1462. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1463. _mm256_cvtusepi16_epi8 (__m256i __A) {
  1464.   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  1465.                 (__v16qi) _mm_setzero_si128(),
  1466.                 (__mmask16) -1);
  1467. }
  1468.  
  1469. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1470. _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
  1471.   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  1472.                 (__v16qi) __O,
  1473.                 __M);
  1474. }
  1475.  
  1476. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1477. _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
  1478.   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
  1479.                 (__v16qi) _mm_setzero_si128(),
  1480.                 __M);
  1481. }
  1482.  
  1483. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1484. _mm_cvtepi16_epi8 (__m128i __A) {
  1485.   return (__m128i)__builtin_shufflevector(
  1486.       __builtin_convertvector((__v8hi)__A, __v8qi),
  1487.       (__v8qi){0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
  1488.       12, 13, 14, 15);
  1489. }
  1490.  
  1491. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1492. _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
  1493.   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  1494.                (__v16qi) __O,
  1495.                __M);
  1496. }
  1497.  
  1498. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1499. _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
  1500.   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
  1501.                (__v16qi) _mm_setzero_si128(),
  1502.                __M);
  1503. }
  1504.  
  1505. static __inline__ void __DEFAULT_FN_ATTRS128
  1506. _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  1507. {
  1508.   __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
  1509. }
  1510.  
  1511.  
  1512. static __inline__ void __DEFAULT_FN_ATTRS128
  1513. _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  1514. {
  1515.   __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
  1516. }
  1517.  
  1518. static __inline__ void __DEFAULT_FN_ATTRS128
  1519. _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
  1520. {
  1521.   __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
  1522. }
  1523.  
  1524. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1525. _mm256_cvtepi16_epi8 (__m256i __A) {
  1526.   return (__m128i)__builtin_convertvector((__v16hi) __A, __v16qi);
  1527. }
  1528.  
  1529. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1530. _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
  1531.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  1532.                                              (__v16qi)_mm256_cvtepi16_epi8(__A),
  1533.                                              (__v16qi)__O);
  1534. }
  1535.  
  1536. static __inline__ __m128i __DEFAULT_FN_ATTRS256
  1537. _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
  1538.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
  1539.                                              (__v16qi)_mm256_cvtepi16_epi8(__A),
  1540.                                              (__v16qi)_mm_setzero_si128());
  1541. }
  1542.  
  1543. static __inline__ void __DEFAULT_FN_ATTRS256
  1544. _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
  1545. {
  1546.   __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
  1547. }
  1548.  
  1549. static __inline__ void __DEFAULT_FN_ATTRS256
  1550. _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
  1551. {
  1552.   __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
  1553. }
  1554.  
  1555. static __inline__ void __DEFAULT_FN_ATTRS256
  1556. _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
  1557. {
  1558.   __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M);
  1559. }
  1560.  
  1561. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1562. _mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
  1563.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1564.                                              (__v8hi)_mm_mulhrs_epi16(__X, __Y),
  1565.                                              (__v8hi)__W);
  1566. }
  1567.  
  1568. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1569. _mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
  1570.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1571.                                              (__v8hi)_mm_mulhrs_epi16(__X, __Y),
  1572.                                              (__v8hi)_mm_setzero_si128());
  1573. }
  1574.  
  1575. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1576. _mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
  1577.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1578.                                          (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
  1579.                                          (__v16hi)__W);
  1580. }
  1581.  
  1582. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1583. _mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
  1584.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1585.                                          (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
  1586.                                          (__v16hi)_mm256_setzero_si256());
  1587. }
  1588.  
  1589. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1590. _mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1591.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1592.                                              (__v8hi)_mm_mulhi_epu16(__A, __B),
  1593.                                              (__v8hi)__W);
  1594. }
  1595.  
  1596. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1597. _mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
  1598.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1599.                                              (__v8hi)_mm_mulhi_epu16(__A, __B),
  1600.                                              (__v8hi)_mm_setzero_si128());
  1601. }
  1602.  
  1603. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1604. _mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1605.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1606.                                           (__v16hi)_mm256_mulhi_epu16(__A, __B),
  1607.                                           (__v16hi)__W);
  1608. }
  1609.  
  1610. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1611. _mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
  1612.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1613.                                           (__v16hi)_mm256_mulhi_epu16(__A, __B),
  1614.                                           (__v16hi)_mm256_setzero_si256());
  1615. }
  1616.  
  1617. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1618. _mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1619.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1620.                                              (__v8hi)_mm_mulhi_epi16(__A, __B),
  1621.                                              (__v8hi)__W);
  1622. }
  1623.  
  1624. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1625. _mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1626.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1627.                                              (__v8hi)_mm_mulhi_epi16(__A, __B),
  1628.                                              (__v8hi)_mm_setzero_si128());
  1629. }
  1630.  
  1631. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1632. _mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1633.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1634.                                           (__v16hi)_mm256_mulhi_epi16(__A, __B),
  1635.                                           (__v16hi)__W);
  1636. }
  1637.  
  1638. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1639. _mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  1640.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1641.                                           (__v16hi)_mm256_mulhi_epi16(__A, __B),
  1642.                                           (__v16hi)_mm256_setzero_si256());
  1643. }
  1644.  
  1645. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1646. _mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  1647.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1648.                                            (__v16qi)_mm_unpackhi_epi8(__A, __B),
  1649.                                            (__v16qi)__W);
  1650. }
  1651.  
  1652. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1653. _mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  1654.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1655.                                            (__v16qi)_mm_unpackhi_epi8(__A, __B),
  1656.                                            (__v16qi)_mm_setzero_si128());
  1657. }
  1658.  
  1659. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1660. _mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
  1661.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1662.                                         (__v32qi)_mm256_unpackhi_epi8(__A, __B),
  1663.                                         (__v32qi)__W);
  1664. }
  1665.  
  1666. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1667. _mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  1668.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1669.                                         (__v32qi)_mm256_unpackhi_epi8(__A, __B),
  1670.                                         (__v32qi)_mm256_setzero_si256());
  1671. }
  1672.  
  1673. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1674. _mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1675.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1676.                                            (__v8hi)_mm_unpackhi_epi16(__A, __B),
  1677.                                            (__v8hi)__W);
  1678. }
  1679.  
  1680. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1681. _mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1682.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1683.                                            (__v8hi)_mm_unpackhi_epi16(__A, __B),
  1684.                                            (__v8hi) _mm_setzero_si128());
  1685. }
  1686.  
  1687. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1688. _mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1689.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1690.                                        (__v16hi)_mm256_unpackhi_epi16(__A, __B),
  1691.                                        (__v16hi)__W);
  1692. }
  1693.  
  1694. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1695. _mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  1696.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1697.                                        (__v16hi)_mm256_unpackhi_epi16(__A, __B),
  1698.                                        (__v16hi)_mm256_setzero_si256());
  1699. }
  1700.  
  1701. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1702. _mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
  1703.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1704.                                            (__v16qi)_mm_unpacklo_epi8(__A, __B),
  1705.                                            (__v16qi)__W);
  1706. }
  1707.  
  1708. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1709. _mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
  1710.   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
  1711.                                            (__v16qi)_mm_unpacklo_epi8(__A, __B),
  1712.                                            (__v16qi)_mm_setzero_si128());
  1713. }
  1714.  
  1715. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1716. _mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
  1717.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1718.                                         (__v32qi)_mm256_unpacklo_epi8(__A, __B),
  1719.                                         (__v32qi)__W);
  1720. }
  1721.  
  1722. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1723. _mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
  1724.   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
  1725.                                         (__v32qi)_mm256_unpacklo_epi8(__A, __B),
  1726.                                         (__v32qi)_mm256_setzero_si256());
  1727. }
  1728.  
  1729. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1730. _mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
  1731.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1732.                                            (__v8hi)_mm_unpacklo_epi16(__A, __B),
  1733.                                            (__v8hi)__W);
  1734. }
  1735.  
  1736. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1737. _mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
  1738.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1739.                                            (__v8hi)_mm_unpacklo_epi16(__A, __B),
  1740.                                            (__v8hi) _mm_setzero_si128());
  1741. }
  1742.  
  1743. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1744. _mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
  1745.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1746.                                        (__v16hi)_mm256_unpacklo_epi16(__A, __B),
  1747.                                        (__v16hi)__W);
  1748. }
  1749.  
  1750. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1751. _mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
  1752.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1753.                                        (__v16hi)_mm256_unpacklo_epi16(__A, __B),
  1754.                                        (__v16hi)_mm256_setzero_si256());
  1755. }
  1756.  
  1757. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1758. _mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
  1759. {
  1760.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1761.                                              (__v8hi)_mm_cvtepi8_epi16(__A),
  1762.                                              (__v8hi)__W);
  1763. }
  1764.  
  1765. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1766. _mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A)
  1767. {
  1768.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1769.                                              (__v8hi)_mm_cvtepi8_epi16(__A),
  1770.                                              (__v8hi)_mm_setzero_si128());
  1771. }
  1772.  
  1773. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1774. _mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
  1775. {
  1776.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1777.                                              (__v16hi)_mm256_cvtepi8_epi16(__A),
  1778.                                              (__v16hi)__W);
  1779. }
  1780.  
  1781. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1782. _mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A)
  1783. {
  1784.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1785.                                              (__v16hi)_mm256_cvtepi8_epi16(__A),
  1786.                                              (__v16hi)_mm256_setzero_si256());
  1787. }
  1788.  
  1789.  
  1790. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1791. _mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
  1792. {
  1793.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1794.                                              (__v8hi)_mm_cvtepu8_epi16(__A),
  1795.                                              (__v8hi)__W);
  1796. }
  1797.  
  1798. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1799. _mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A)
  1800. {
  1801.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1802.                                              (__v8hi)_mm_cvtepu8_epi16(__A),
  1803.                                              (__v8hi)_mm_setzero_si128());
  1804. }
  1805.  
  1806. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1807. _mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
  1808. {
  1809.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1810.                                              (__v16hi)_mm256_cvtepu8_epi16(__A),
  1811.                                              (__v16hi)__W);
  1812. }
  1813.  
  1814. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1815. _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
  1816. {
  1817.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1818.                                              (__v16hi)_mm256_cvtepu8_epi16(__A),
  1819.                                              (__v16hi)_mm256_setzero_si256());
  1820. }
  1821.  
  1822.  
  1823. #define _mm_mask_shufflehi_epi16(W, U, A, imm) \
  1824.   ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1825.                                        (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
  1826.                                        (__v8hi)(__m128i)(W)))
  1827.  
  1828. #define _mm_maskz_shufflehi_epi16(U, A, imm) \
  1829.   ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1830.                                        (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
  1831.                                        (__v8hi)_mm_setzero_si128()))
  1832.  
  1833. #define _mm256_mask_shufflehi_epi16(W, U, A, imm) \
  1834.   ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1835.                                        (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
  1836.                                        (__v16hi)(__m256i)(W)))
  1837.  
  1838. #define _mm256_maskz_shufflehi_epi16(U, A, imm) \
  1839.   ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1840.                                        (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
  1841.                                        (__v16hi)_mm256_setzero_si256()))
  1842.  
  1843. #define _mm_mask_shufflelo_epi16(W, U, A, imm) \
  1844.   ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1845.                                        (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
  1846.                                        (__v8hi)(__m128i)(W)))
  1847.  
  1848. #define _mm_maskz_shufflelo_epi16(U, A, imm) \
  1849.   ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  1850.                                        (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
  1851.                                        (__v8hi)_mm_setzero_si128()))
  1852.  
  1853. #define _mm256_mask_shufflelo_epi16(W, U, A, imm) \
  1854.   ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1855.                                        (__v16hi)_mm256_shufflelo_epi16((A), \
  1856.                                                                        (imm)), \
  1857.                                        (__v16hi)(__m256i)(W)))
  1858.  
  1859. #define _mm256_maskz_shufflelo_epi16(U, A, imm) \
  1860.   ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  1861.                                        (__v16hi)_mm256_shufflelo_epi16((A), \
  1862.                                                                        (imm)), \
  1863.                                        (__v16hi)_mm256_setzero_si256()))
  1864.  
  1865. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1866. _mm256_sllv_epi16(__m256i __A, __m256i __B)
  1867. {
  1868.   return (__m256i)__builtin_ia32_psllv16hi((__v16hi)__A, (__v16hi)__B);
  1869. }
  1870.  
  1871. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1872. _mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1873. {
  1874.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1875.                                            (__v16hi)_mm256_sllv_epi16(__A, __B),
  1876.                                            (__v16hi)__W);
  1877. }
  1878.  
  1879. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1880. _mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1881. {
  1882.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1883.                                            (__v16hi)_mm256_sllv_epi16(__A, __B),
  1884.                                            (__v16hi)_mm256_setzero_si256());
  1885. }
  1886.  
  1887. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1888. _mm_sllv_epi16(__m128i __A, __m128i __B)
  1889. {
  1890.   return (__m128i)__builtin_ia32_psllv8hi((__v8hi)__A, (__v8hi)__B);
  1891. }
  1892.  
  1893. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1894. _mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1895. {
  1896.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1897.                                              (__v8hi)_mm_sllv_epi16(__A, __B),
  1898.                                              (__v8hi)__W);
  1899. }
  1900.  
  1901. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1902. _mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  1903. {
  1904.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1905.                                              (__v8hi)_mm_sllv_epi16(__A, __B),
  1906.                                              (__v8hi)_mm_setzero_si128());
  1907. }
  1908.  
  1909. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1910. _mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  1911. {
  1912.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1913.                                              (__v8hi)_mm_sll_epi16(__A, __B),
  1914.                                              (__v8hi)__W);
  1915. }
  1916.  
  1917. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1918. _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  1919. {
  1920.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1921.                                              (__v8hi)_mm_sll_epi16(__A, __B),
  1922.                                              (__v8hi)_mm_setzero_si128());
  1923. }
  1924.  
  1925. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1926. _mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
  1927. {
  1928.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1929.                                           (__v16hi)_mm256_sll_epi16(__A, __B),
  1930.                                           (__v16hi)__W);
  1931. }
  1932.  
  1933. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1934. _mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B)
  1935. {
  1936.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1937.                                           (__v16hi)_mm256_sll_epi16(__A, __B),
  1938.                                           (__v16hi)_mm256_setzero_si256());
  1939. }
  1940.  
  1941. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1942. _mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B)
  1943. {
  1944.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1945.                                              (__v8hi)_mm_slli_epi16(__A, (int)__B),
  1946.                                              (__v8hi)__W);
  1947. }
  1948.  
  1949. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1950. _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, unsigned int __B)
  1951. {
  1952.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  1953.                                              (__v8hi)_mm_slli_epi16(__A, (int)__B),
  1954.                                              (__v8hi)_mm_setzero_si128());
  1955. }
  1956.  
  1957. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1958. _mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A,
  1959.                        unsigned int __B)
  1960. {
  1961.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1962.                                          (__v16hi)_mm256_slli_epi16(__A, (int)__B),
  1963.                                          (__v16hi)__W);
  1964. }
  1965.  
  1966. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1967. _mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A, unsigned int __B)
  1968. {
  1969.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1970.                                          (__v16hi)_mm256_slli_epi16(__A, (int)__B),
  1971.                                          (__v16hi)_mm256_setzero_si256());
  1972. }
  1973.  
  1974. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1975. _mm256_srlv_epi16(__m256i __A, __m256i __B)
  1976. {
  1977.   return (__m256i)__builtin_ia32_psrlv16hi((__v16hi)__A, (__v16hi)__B);
  1978. }
  1979.  
  1980. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1981. _mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  1982. {
  1983.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1984.                                            (__v16hi)_mm256_srlv_epi16(__A, __B),
  1985.                                            (__v16hi)__W);
  1986. }
  1987.  
  1988. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  1989. _mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  1990. {
  1991.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  1992.                                            (__v16hi)_mm256_srlv_epi16(__A, __B),
  1993.                                            (__v16hi)_mm256_setzero_si256());
  1994. }
  1995.  
  1996. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  1997. _mm_srlv_epi16(__m128i __A, __m128i __B)
  1998. {
  1999.   return (__m128i)__builtin_ia32_psrlv8hi((__v8hi)__A, (__v8hi)__B);
  2000. }
  2001.  
  2002. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2003. _mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  2004. {
  2005.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2006.                                              (__v8hi)_mm_srlv_epi16(__A, __B),
  2007.                                              (__v8hi)__W);
  2008. }
  2009.  
  2010. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2011. _mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  2012. {
  2013.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2014.                                              (__v8hi)_mm_srlv_epi16(__A, __B),
  2015.                                              (__v8hi)_mm_setzero_si128());
  2016. }
  2017.  
  2018. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2019. _mm256_srav_epi16(__m256i __A, __m256i __B)
  2020. {
  2021.   return (__m256i)__builtin_ia32_psrav16hi((__v16hi)__A, (__v16hi)__B);
  2022. }
  2023.  
  2024. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2025. _mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
  2026. {
  2027.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2028.                                            (__v16hi)_mm256_srav_epi16(__A, __B),
  2029.                                            (__v16hi)__W);
  2030. }
  2031.  
  2032. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2033. _mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B)
  2034. {
  2035.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2036.                                            (__v16hi)_mm256_srav_epi16(__A, __B),
  2037.                                            (__v16hi)_mm256_setzero_si256());
  2038. }
  2039.  
  2040. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2041. _mm_srav_epi16(__m128i __A, __m128i __B)
  2042. {
  2043.   return (__m128i)__builtin_ia32_psrav8hi((__v8hi)__A, (__v8hi)__B);
  2044. }
  2045.  
  2046. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2047. _mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  2048. {
  2049.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2050.                                              (__v8hi)_mm_srav_epi16(__A, __B),
  2051.                                              (__v8hi)__W);
  2052. }
  2053.  
  2054. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2055. _mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  2056. {
  2057.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2058.                                              (__v8hi)_mm_srav_epi16(__A, __B),
  2059.                                              (__v8hi)_mm_setzero_si128());
  2060. }
  2061.  
  2062. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2063. _mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  2064. {
  2065.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2066.                                              (__v8hi)_mm_sra_epi16(__A, __B),
  2067.                                              (__v8hi)__W);
  2068. }
  2069.  
  2070. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2071. _mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B)
  2072. {
  2073.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2074.                                              (__v8hi)_mm_sra_epi16(__A, __B),
  2075.                                              (__v8hi)_mm_setzero_si128());
  2076. }
  2077.  
  2078. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2079. _mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
  2080. {
  2081.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2082.                                           (__v16hi)_mm256_sra_epi16(__A, __B),
  2083.                                           (__v16hi)__W);
  2084. }
  2085.  
  2086. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2087. _mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B)
  2088. {
  2089.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2090.                                           (__v16hi)_mm256_sra_epi16(__A, __B),
  2091.                                           (__v16hi)_mm256_setzero_si256());
  2092. }
  2093.  
  2094. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2095. _mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A, unsigned int __B)
  2096. {
  2097.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2098.                                              (__v8hi)_mm_srai_epi16(__A, (int)__B),
  2099.                                              (__v8hi)__W);
  2100. }
  2101.  
  2102. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2103. _mm_maskz_srai_epi16(__mmask8 __U, __m128i __A, unsigned int __B)
  2104. {
  2105.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2106.                                              (__v8hi)_mm_srai_epi16(__A, (int)__B),
  2107.                                              (__v8hi)_mm_setzero_si128());
  2108. }
  2109.  
  2110. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2111. _mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A,
  2112.                        unsigned int __B)
  2113. {
  2114.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2115.                                          (__v16hi)_mm256_srai_epi16(__A, (int)__B),
  2116.                                          (__v16hi)__W);
  2117. }
  2118.  
  2119. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2120. _mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A, unsigned int __B)
  2121. {
  2122.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2123.                                          (__v16hi)_mm256_srai_epi16(__A, (int)__B),
  2124.                                          (__v16hi)_mm256_setzero_si256());
  2125. }
  2126.  
  2127. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2128. _mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
  2129. {
  2130.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2131.                                              (__v8hi)_mm_srl_epi16(__A, __B),
  2132.                                              (__v8hi)__W);
  2133. }
  2134.  
  2135. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2136. _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
  2137. {
  2138.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2139.                                              (__v8hi)_mm_srl_epi16(__A, __B),
  2140.                                              (__v8hi)_mm_setzero_si128());
  2141. }
  2142.  
  2143. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2144. _mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
  2145. {
  2146.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2147.                                           (__v16hi)_mm256_srl_epi16(__A, __B),
  2148.                                           (__v16hi)__W);
  2149. }
  2150.  
  2151. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2152. _mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B)
  2153. {
  2154.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2155.                                           (__v16hi)_mm256_srl_epi16(__A, __B),
  2156.                                           (__v16hi)_mm256_setzero_si256());
  2157. }
  2158.  
  2159. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2160. _mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
  2161. {
  2162.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2163.                                              (__v8hi)_mm_srli_epi16(__A, __B),
  2164.                                              (__v8hi)__W);
  2165. }
  2166.  
  2167. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2168. _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, int __B)
  2169. {
  2170.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
  2171.                                              (__v8hi)_mm_srli_epi16(__A, __B),
  2172.                                              (__v8hi)_mm_setzero_si128());
  2173. }
  2174.  
  2175. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2176. _mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
  2177. {
  2178.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2179.                                          (__v16hi)_mm256_srli_epi16(__A, __B),
  2180.                                          (__v16hi)__W);
  2181. }
  2182.  
  2183. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2184. _mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A, int __B)
  2185. {
  2186.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
  2187.                                          (__v16hi)_mm256_srli_epi16(__A, __B),
  2188.                                          (__v16hi)_mm256_setzero_si256());
  2189. }
  2190.  
  2191. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2192. _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
  2193. {
  2194.   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
  2195.                 (__v8hi) __A,
  2196.                 (__v8hi) __W);
  2197. }
  2198.  
  2199. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2200. _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
  2201. {
  2202.   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
  2203.                 (__v8hi) __A,
  2204.                 (__v8hi) _mm_setzero_si128 ());
  2205. }
  2206.  
  2207. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2208. _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
  2209. {
  2210.   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
  2211.                 (__v16hi) __A,
  2212.                 (__v16hi) __W);
  2213. }
  2214.  
  2215. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2216. _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
  2217. {
  2218.   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
  2219.                 (__v16hi) __A,
  2220.                 (__v16hi) _mm256_setzero_si256 ());
  2221. }
  2222.  
  2223. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2224. _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
  2225. {
  2226.   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
  2227.                 (__v16qi) __A,
  2228.                 (__v16qi) __W);
  2229. }
  2230.  
  2231. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2232. _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
  2233. {
  2234.   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
  2235.                 (__v16qi) __A,
  2236.                 (__v16qi) _mm_setzero_si128 ());
  2237. }
  2238.  
  2239. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2240. _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
  2241. {
  2242.   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
  2243.                 (__v32qi) __A,
  2244.                 (__v32qi) __W);
  2245. }
  2246.  
  2247. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2248. _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
  2249. {
  2250.   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
  2251.                 (__v32qi) __A,
  2252.                 (__v32qi) _mm256_setzero_si256 ());
  2253. }
  2254.  
  2255.  
  2256. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2257. _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
  2258. {
  2259.   return (__m128i) __builtin_ia32_selectb_128(__M,
  2260.                                               (__v16qi) _mm_set1_epi8(__A),
  2261.                                               (__v16qi) __O);
  2262. }
  2263.  
  2264. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2265. _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
  2266. {
  2267.  return (__m128i) __builtin_ia32_selectb_128(__M,
  2268.                                              (__v16qi) _mm_set1_epi8(__A),
  2269.                                              (__v16qi) _mm_setzero_si128());
  2270. }
  2271.  
  2272. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2273. _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
  2274. {
  2275.   return (__m256i) __builtin_ia32_selectb_256(__M,
  2276.                                               (__v32qi) _mm256_set1_epi8(__A),
  2277.                                               (__v32qi) __O);
  2278. }
  2279.  
  2280. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2281. _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
  2282. {
  2283.   return (__m256i) __builtin_ia32_selectb_256(__M,
  2284.                                               (__v32qi) _mm256_set1_epi8(__A),
  2285.                                               (__v32qi) _mm256_setzero_si256());
  2286. }
  2287.  
  2288. static __inline __m128i __DEFAULT_FN_ATTRS128
  2289. _mm_loadu_epi16 (void const *__P)
  2290. {
  2291.   struct __loadu_epi16 {
  2292.     __m128i_u __v;
  2293.   } __attribute__((__packed__, __may_alias__));
  2294.   return ((const struct __loadu_epi16*)__P)->__v;
  2295. }
  2296.  
  2297. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2298. _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
  2299. {
  2300.   return (__m128i) __builtin_ia32_loaddquhi128_mask ((const __v8hi *) __P,
  2301.                  (__v8hi) __W,
  2302.                  (__mmask8) __U);
  2303. }
  2304.  
  2305. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2306. _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
  2307. {
  2308.   return (__m128i) __builtin_ia32_loaddquhi128_mask ((const __v8hi *) __P,
  2309.                  (__v8hi)
  2310.                  _mm_setzero_si128 (),
  2311.                  (__mmask8) __U);
  2312. }
  2313.  
  2314. static __inline __m256i __DEFAULT_FN_ATTRS256
  2315. _mm256_loadu_epi16 (void const *__P)
  2316. {
  2317.   struct __loadu_epi16 {
  2318.     __m256i_u __v;
  2319.   } __attribute__((__packed__, __may_alias__));
  2320.   return ((const struct __loadu_epi16*)__P)->__v;
  2321. }
  2322.  
  2323. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2324. _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
  2325. {
  2326.   return (__m256i) __builtin_ia32_loaddquhi256_mask ((const __v16hi *) __P,
  2327.                  (__v16hi) __W,
  2328.                  (__mmask16) __U);
  2329. }
  2330.  
  2331. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2332. _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
  2333. {
  2334.   return (__m256i) __builtin_ia32_loaddquhi256_mask ((const __v16hi *) __P,
  2335.                  (__v16hi)
  2336.                  _mm256_setzero_si256 (),
  2337.                  (__mmask16) __U);
  2338. }
  2339.  
  2340. static __inline __m128i __DEFAULT_FN_ATTRS128
  2341. _mm_loadu_epi8 (void const *__P)
  2342. {
  2343.   struct __loadu_epi8 {
  2344.     __m128i_u __v;
  2345.   } __attribute__((__packed__, __may_alias__));
  2346.   return ((const struct __loadu_epi8*)__P)->__v;
  2347. }
  2348.  
  2349. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2350. _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
  2351. {
  2352.   return (__m128i) __builtin_ia32_loaddquqi128_mask ((const __v16qi *) __P,
  2353.                  (__v16qi) __W,
  2354.                  (__mmask16) __U);
  2355. }
  2356.  
  2357. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2358. _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
  2359. {
  2360.   return (__m128i) __builtin_ia32_loaddquqi128_mask ((const __v16qi *) __P,
  2361.                  (__v16qi)
  2362.                  _mm_setzero_si128 (),
  2363.                  (__mmask16) __U);
  2364. }
  2365.  
  2366. static __inline __m256i __DEFAULT_FN_ATTRS256
  2367. _mm256_loadu_epi8 (void const *__P)
  2368. {
  2369.   struct __loadu_epi8 {
  2370.     __m256i_u __v;
  2371.   } __attribute__((__packed__, __may_alias__));
  2372.   return ((const struct __loadu_epi8*)__P)->__v;
  2373. }
  2374.  
  2375. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2376. _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
  2377. {
  2378.   return (__m256i) __builtin_ia32_loaddquqi256_mask ((const __v32qi *) __P,
  2379.                  (__v32qi) __W,
  2380.                  (__mmask32) __U);
  2381. }
  2382.  
  2383. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2384. _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
  2385. {
  2386.   return (__m256i) __builtin_ia32_loaddquqi256_mask ((const __v32qi *) __P,
  2387.                  (__v32qi)
  2388.                  _mm256_setzero_si256 (),
  2389.                  (__mmask32) __U);
  2390. }
  2391.  
  2392. static __inline void __DEFAULT_FN_ATTRS128
  2393. _mm_storeu_epi16 (void *__P, __m128i __A)
  2394. {
  2395.   struct __storeu_epi16 {
  2396.     __m128i_u __v;
  2397.   } __attribute__((__packed__, __may_alias__));
  2398.   ((struct __storeu_epi16*)__P)->__v = __A;
  2399. }
  2400.  
  2401. static __inline__ void __DEFAULT_FN_ATTRS128
  2402. _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
  2403. {
  2404.   __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
  2405.              (__v8hi) __A,
  2406.              (__mmask8) __U);
  2407. }
  2408.  
  2409. static __inline void __DEFAULT_FN_ATTRS256
  2410. _mm256_storeu_epi16 (void *__P, __m256i __A)
  2411. {
  2412.   struct __storeu_epi16 {
  2413.     __m256i_u __v;
  2414.   } __attribute__((__packed__, __may_alias__));
  2415.   ((struct __storeu_epi16*)__P)->__v = __A;
  2416. }
  2417.  
  2418. static __inline__ void __DEFAULT_FN_ATTRS256
  2419. _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
  2420. {
  2421.   __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
  2422.              (__v16hi) __A,
  2423.              (__mmask16) __U);
  2424. }
  2425.  
  2426. static __inline void __DEFAULT_FN_ATTRS128
  2427. _mm_storeu_epi8 (void *__P, __m128i __A)
  2428. {
  2429.   struct __storeu_epi8 {
  2430.     __m128i_u __v;
  2431.   } __attribute__((__packed__, __may_alias__));
  2432.   ((struct __storeu_epi8*)__P)->__v = __A;
  2433. }
  2434.  
  2435. static __inline__ void __DEFAULT_FN_ATTRS128
  2436. _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
  2437. {
  2438.   __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
  2439.              (__v16qi) __A,
  2440.              (__mmask16) __U);
  2441. }
  2442.  
  2443. static __inline void __DEFAULT_FN_ATTRS256
  2444. _mm256_storeu_epi8 (void *__P, __m256i __A)
  2445. {
  2446.   struct __storeu_epi8 {
  2447.     __m256i_u __v;
  2448.   } __attribute__((__packed__, __may_alias__));
  2449.   ((struct __storeu_epi8*)__P)->__v = __A;
  2450. }
  2451.  
  2452. static __inline__ void __DEFAULT_FN_ATTRS256
  2453. _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
  2454. {
  2455.   __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
  2456.              (__v32qi) __A,
  2457.              (__mmask32) __U);
  2458. }
  2459.  
  2460. static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
  2461. _mm_test_epi8_mask (__m128i __A, __m128i __B)
  2462. {
  2463.   return _mm_cmpneq_epi8_mask (_mm_and_si128(__A, __B), _mm_setzero_si128());
  2464. }
  2465.  
  2466. static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
  2467. _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2468. {
  2469.   return _mm_mask_cmpneq_epi8_mask (__U, _mm_and_si128 (__A, __B),
  2470.                                     _mm_setzero_si128());
  2471. }
  2472.  
  2473. static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
  2474. _mm256_test_epi8_mask (__m256i __A, __m256i __B)
  2475. {
  2476.   return _mm256_cmpneq_epi8_mask (_mm256_and_si256(__A, __B),
  2477.                                   _mm256_setzero_si256());
  2478. }
  2479.  
  2480. static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
  2481. _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2482. {
  2483.   return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B),
  2484.                                        _mm256_setzero_si256());
  2485. }
  2486.  
  2487. static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
  2488. _mm_test_epi16_mask (__m128i __A, __m128i __B)
  2489. {
  2490.   return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
  2491. }
  2492.  
  2493. static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
  2494. _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2495. {
  2496.   return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B),
  2497.                                      _mm_setzero_si128());
  2498. }
  2499.  
  2500. static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
  2501. _mm256_test_epi16_mask (__m256i __A, __m256i __B)
  2502. {
  2503.   return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B),
  2504.                                    _mm256_setzero_si256 ());
  2505. }
  2506.  
  2507. static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
  2508. _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  2509. {
  2510.   return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B),
  2511.                                         _mm256_setzero_si256());
  2512. }
  2513.  
  2514. static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
  2515. _mm_testn_epi8_mask (__m128i __A, __m128i __B)
  2516. {
  2517.   return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
  2518. }
  2519.  
  2520. static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
  2521. _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
  2522. {
  2523.   return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B),
  2524.                                   _mm_setzero_si128());
  2525. }
  2526.  
  2527. static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
  2528. _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
  2529. {
  2530.   return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B),
  2531.                                  _mm256_setzero_si256());
  2532. }
  2533.  
  2534. static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
  2535. _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
  2536. {
  2537.   return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B),
  2538.                                       _mm256_setzero_si256());
  2539. }
  2540.  
  2541. static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
  2542. _mm_testn_epi16_mask (__m128i __A, __m128i __B)
  2543. {
  2544.   return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_si128());
  2545. }
  2546.  
  2547. static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
  2548. _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
  2549. {
  2550.   return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_si128());
  2551. }
  2552.  
  2553. static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
  2554. _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
  2555. {
  2556.   return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B),
  2557.                                   _mm256_setzero_si256());
  2558. }
  2559.  
  2560. static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
  2561. _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
  2562. {
  2563.   return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B),
  2564.                                        _mm256_setzero_si256());
  2565. }
  2566.  
  2567. static __inline__ __mmask16 __DEFAULT_FN_ATTRS128
  2568. _mm_movepi8_mask (__m128i __A)
  2569. {
  2570.   return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
  2571. }
  2572.  
  2573. static __inline__ __mmask32 __DEFAULT_FN_ATTRS256
  2574. _mm256_movepi8_mask (__m256i __A)
  2575. {
  2576.   return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
  2577. }
  2578.  
  2579. static __inline__ __mmask8 __DEFAULT_FN_ATTRS128
  2580. _mm_movepi16_mask (__m128i __A)
  2581. {
  2582.   return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
  2583. }
  2584.  
  2585. static __inline__ __mmask16 __DEFAULT_FN_ATTRS256
  2586. _mm256_movepi16_mask (__m256i __A)
  2587. {
  2588.   return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
  2589. }
  2590.  
  2591. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2592. _mm_movm_epi8 (__mmask16 __A)
  2593. {
  2594.   return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
  2595. }
  2596.  
  2597. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2598. _mm256_movm_epi8 (__mmask32 __A)
  2599. {
  2600.   return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
  2601. }
  2602.  
  2603. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2604. _mm_movm_epi16 (__mmask8 __A)
  2605. {
  2606.   return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
  2607. }
  2608.  
  2609. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2610. _mm256_movm_epi16 (__mmask16 __A)
  2611. {
  2612.   return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
  2613. }
  2614.  
  2615. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2616. _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
  2617. {
  2618.   return (__m128i)__builtin_ia32_selectb_128(__M,
  2619.                                              (__v16qi) _mm_broadcastb_epi8(__A),
  2620.                                              (__v16qi) __O);
  2621. }
  2622.  
  2623. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2624. _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
  2625. {
  2626.   return (__m128i)__builtin_ia32_selectb_128(__M,
  2627.                                              (__v16qi) _mm_broadcastb_epi8(__A),
  2628.                                              (__v16qi) _mm_setzero_si128());
  2629. }
  2630.  
  2631. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2632. _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
  2633. {
  2634.   return (__m256i)__builtin_ia32_selectb_256(__M,
  2635.                                              (__v32qi) _mm256_broadcastb_epi8(__A),
  2636.                                              (__v32qi) __O);
  2637. }
  2638.  
  2639. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2640. _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
  2641. {
  2642.   return (__m256i)__builtin_ia32_selectb_256(__M,
  2643.                                              (__v32qi) _mm256_broadcastb_epi8(__A),
  2644.                                              (__v32qi) _mm256_setzero_si256());
  2645. }
  2646.  
  2647. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2648. _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
  2649. {
  2650.   return (__m128i)__builtin_ia32_selectw_128(__M,
  2651.                                              (__v8hi) _mm_broadcastw_epi16(__A),
  2652.                                              (__v8hi) __O);
  2653. }
  2654.  
  2655. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2656. _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
  2657. {
  2658.   return (__m128i)__builtin_ia32_selectw_128(__M,
  2659.                                              (__v8hi) _mm_broadcastw_epi16(__A),
  2660.                                              (__v8hi) _mm_setzero_si128());
  2661. }
  2662.  
  2663. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2664. _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
  2665. {
  2666.   return (__m256i)__builtin_ia32_selectw_256(__M,
  2667.                                              (__v16hi) _mm256_broadcastw_epi16(__A),
  2668.                                              (__v16hi) __O);
  2669. }
  2670.  
  2671. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2672. _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
  2673. {
  2674.   return (__m256i)__builtin_ia32_selectw_256(__M,
  2675.                                              (__v16hi) _mm256_broadcastw_epi16(__A),
  2676.                                              (__v16hi) _mm256_setzero_si256());
  2677. }
  2678.  
  2679. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2680. _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
  2681. {
  2682.   return (__m256i) __builtin_ia32_selectw_256 (__M,
  2683.                                                (__v16hi) _mm256_set1_epi16(__A),
  2684.                                                (__v16hi) __O);
  2685. }
  2686.  
  2687. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2688. _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
  2689. {
  2690.   return (__m256i) __builtin_ia32_selectw_256(__M,
  2691.                                               (__v16hi)_mm256_set1_epi16(__A),
  2692.                                               (__v16hi) _mm256_setzero_si256());
  2693. }
  2694.  
  2695. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2696. _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
  2697. {
  2698.   return (__m128i) __builtin_ia32_selectw_128(__M,
  2699.                                               (__v8hi) _mm_set1_epi16(__A),
  2700.                                               (__v8hi) __O);
  2701. }
  2702.  
  2703. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2704. _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
  2705. {
  2706.   return (__m128i) __builtin_ia32_selectw_128(__M,
  2707.                                               (__v8hi) _mm_set1_epi16(__A),
  2708.                                               (__v8hi) _mm_setzero_si128());
  2709. }
  2710.  
  2711. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2712. _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
  2713. {
  2714.   return (__m128i)__builtin_ia32_permvarhi128((__v8hi) __B, (__v8hi) __A);
  2715. }
  2716.  
  2717. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2718. _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
  2719. {
  2720.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  2721.                                         (__v8hi)_mm_permutexvar_epi16(__A, __B),
  2722.                                         (__v8hi) _mm_setzero_si128());
  2723. }
  2724.  
  2725. static __inline__ __m128i __DEFAULT_FN_ATTRS128
  2726. _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
  2727.           __m128i __B)
  2728. {
  2729.   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
  2730.                                         (__v8hi)_mm_permutexvar_epi16(__A, __B),
  2731.                                         (__v8hi)__W);
  2732. }
  2733.  
  2734. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2735. _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
  2736. {
  2737.   return (__m256i)__builtin_ia32_permvarhi256((__v16hi) __B, (__v16hi) __A);
  2738. }
  2739.  
  2740. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2741. _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
  2742.         __m256i __B)
  2743. {
  2744.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  2745.                                     (__v16hi)_mm256_permutexvar_epi16(__A, __B),
  2746.                                     (__v16hi)_mm256_setzero_si256());
  2747. }
  2748.  
  2749. static __inline__ __m256i __DEFAULT_FN_ATTRS256
  2750. _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
  2751.              __m256i __B)
  2752. {
  2753.   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
  2754.                                     (__v16hi)_mm256_permutexvar_epi16(__A, __B),
  2755.                                     (__v16hi)__W);
  2756. }
  2757.  
  2758. #define _mm_mask_alignr_epi8(W, U, A, B, N) \
  2759.   ((__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
  2760.                                  (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
  2761.                                  (__v16qi)(__m128i)(W)))
  2762.  
  2763. #define _mm_maskz_alignr_epi8(U, A, B, N) \
  2764.   ((__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
  2765.                                  (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
  2766.                                  (__v16qi)_mm_setzero_si128()))
  2767.  
  2768. #define _mm256_mask_alignr_epi8(W, U, A, B, N) \
  2769.   ((__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
  2770.                               (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
  2771.                               (__v32qi)(__m256i)(W)))
  2772.  
  2773. #define _mm256_maskz_alignr_epi8(U, A, B, N) \
  2774.   ((__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
  2775.                               (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
  2776.                               (__v32qi)_mm256_setzero_si256()))
  2777.  
  2778. #define _mm_dbsad_epu8(A, B, imm) \
  2779.   ((__m128i)__builtin_ia32_dbpsadbw128((__v16qi)(__m128i)(A), \
  2780.                                        (__v16qi)(__m128i)(B), (int)(imm)))
  2781.  
  2782. #define _mm_mask_dbsad_epu8(W, U, A, B, imm) \
  2783.   ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  2784.                                       (__v8hi)_mm_dbsad_epu8((A), (B), (imm)), \
  2785.                                       (__v8hi)(__m128i)(W)))
  2786.  
  2787. #define _mm_maskz_dbsad_epu8(U, A, B, imm) \
  2788.   ((__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
  2789.                                       (__v8hi)_mm_dbsad_epu8((A), (B), (imm)), \
  2790.                                       (__v8hi)_mm_setzero_si128()))
  2791.  
  2792. #define _mm256_dbsad_epu8(A, B, imm) \
  2793.   ((__m256i)__builtin_ia32_dbpsadbw256((__v32qi)(__m256i)(A), \
  2794.                                        (__v32qi)(__m256i)(B), (int)(imm)))
  2795.  
  2796. #define _mm256_mask_dbsad_epu8(W, U, A, B, imm) \
  2797.   ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  2798.                                   (__v16hi)_mm256_dbsad_epu8((A), (B), (imm)), \
  2799.                                   (__v16hi)(__m256i)(W)))
  2800.  
  2801. #define _mm256_maskz_dbsad_epu8(U, A, B, imm) \
  2802.   ((__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
  2803.                                   (__v16hi)_mm256_dbsad_epu8((A), (B), (imm)), \
  2804.                                   (__v16hi)_mm256_setzero_si256()))
  2805.  
  2806. static __inline__ short __DEFAULT_FN_ATTRS128
  2807. _mm_reduce_add_epi16(__m128i __W) {
  2808.   return __builtin_reduce_add((__v8hi)__W);
  2809. }
  2810.  
  2811. static __inline__ short __DEFAULT_FN_ATTRS128
  2812. _mm_reduce_mul_epi16(__m128i __W) {
  2813.   return __builtin_reduce_mul((__v8hi)__W);
  2814. }
  2815.  
  2816. static __inline__ short __DEFAULT_FN_ATTRS128
  2817. _mm_reduce_and_epi16(__m128i __W) {
  2818.   return __builtin_reduce_and((__v8hi)__W);
  2819. }
  2820.  
  2821. static __inline__ short __DEFAULT_FN_ATTRS128
  2822. _mm_reduce_or_epi16(__m128i __W) {
  2823.   return __builtin_reduce_or((__v8hi)__W);
  2824. }
  2825.  
  2826. static __inline__ short __DEFAULT_FN_ATTRS128
  2827. _mm_mask_reduce_add_epi16( __mmask8 __M, __m128i __W) {
  2828.   __W = _mm_maskz_mov_epi16(__M, __W);
  2829.   return __builtin_reduce_add((__v8hi)__W);
  2830. }
  2831.  
  2832. static __inline__ short __DEFAULT_FN_ATTRS128
  2833. _mm_mask_reduce_mul_epi16( __mmask8 __M, __m128i __W) {
  2834.   __W = _mm_mask_mov_epi16(_mm_set1_epi16(1), __M, __W);
  2835.   return __builtin_reduce_mul((__v8hi)__W);
  2836. }
  2837.  
  2838. static __inline__ short __DEFAULT_FN_ATTRS128
  2839. _mm_mask_reduce_and_epi16( __mmask8 __M, __m128i __W) {
  2840.   __W = _mm_mask_mov_epi16(_mm_set1_epi16(-1), __M, __W);
  2841.   return __builtin_reduce_and((__v8hi)__W);
  2842. }
  2843.  
  2844. static __inline__ short __DEFAULT_FN_ATTRS128
  2845. _mm_mask_reduce_or_epi16(__mmask8 __M, __m128i __W) {
  2846.   __W = _mm_maskz_mov_epi16(__M, __W);
  2847.   return __builtin_reduce_or((__v8hi)__W);
  2848. }
  2849.  
  2850. static __inline__ short __DEFAULT_FN_ATTRS128
  2851. _mm_reduce_max_epi16(__m128i __V) {
  2852.   return __builtin_reduce_max((__v8hi)__V);
  2853. }
  2854.  
  2855. static __inline__ unsigned short __DEFAULT_FN_ATTRS128
  2856. _mm_reduce_max_epu16(__m128i __V) {
  2857.   return __builtin_reduce_max((__v8hu)__V);
  2858. }
  2859.  
  2860. static __inline__ short __DEFAULT_FN_ATTRS128
  2861. _mm_reduce_min_epi16(__m128i __V) {
  2862.   return __builtin_reduce_min((__v8hi)__V);
  2863. }
  2864.  
  2865. static __inline__ unsigned short __DEFAULT_FN_ATTRS128
  2866. _mm_reduce_min_epu16(__m128i __V) {
  2867.   return __builtin_reduce_min((__v8hu)__V);
  2868. }
  2869.  
  2870. static __inline__ short __DEFAULT_FN_ATTRS128
  2871. _mm_mask_reduce_max_epi16(__mmask16 __M, __m128i __V) {
  2872.   __V = _mm_mask_mov_epi16(_mm_set1_epi16(-32767-1), __M, __V);
  2873.   return __builtin_reduce_max((__v8hi)__V);
  2874. }
  2875.  
  2876. static __inline__ unsigned short __DEFAULT_FN_ATTRS128
  2877. _mm_mask_reduce_max_epu16(__mmask16 __M, __m128i __V) {
  2878.   __V = _mm_maskz_mov_epi16(__M, __V);
  2879.   return __builtin_reduce_max((__v8hu)__V);
  2880. }
  2881.  
  2882. static __inline__ short __DEFAULT_FN_ATTRS128
  2883. _mm_mask_reduce_min_epi16(__mmask16 __M, __m128i __V) {
  2884.   __V = _mm_mask_mov_epi16(_mm_set1_epi16(32767), __M, __V);
  2885.   return __builtin_reduce_min((__v8hi)__V);
  2886. }
  2887.  
  2888. static __inline__ unsigned short __DEFAULT_FN_ATTRS128
  2889. _mm_mask_reduce_min_epu16(__mmask16 __M, __m128i __V) {
  2890.   __V = _mm_mask_mov_epi16(_mm_set1_epi16(-1), __M, __V);
  2891.   return __builtin_reduce_min((__v8hu)__V);
  2892. }
  2893.  
  2894. static __inline__ short __DEFAULT_FN_ATTRS256
  2895. _mm256_reduce_add_epi16(__m256i __W) {
  2896.   return __builtin_reduce_add((__v16hi)__W);
  2897. }
  2898.  
  2899. static __inline__ short __DEFAULT_FN_ATTRS256
  2900. _mm256_reduce_mul_epi16(__m256i __W) {
  2901.   return __builtin_reduce_mul((__v16hi)__W);
  2902. }
  2903.  
  2904. static __inline__ short __DEFAULT_FN_ATTRS256
  2905. _mm256_reduce_and_epi16(__m256i __W) {
  2906.   return __builtin_reduce_and((__v16hi)__W);
  2907. }
  2908.  
  2909. static __inline__ short __DEFAULT_FN_ATTRS256
  2910. _mm256_reduce_or_epi16(__m256i __W) {
  2911.   return __builtin_reduce_or((__v16hi)__W);
  2912. }
  2913.  
  2914. static __inline__ short __DEFAULT_FN_ATTRS256
  2915. _mm256_mask_reduce_add_epi16( __mmask16 __M, __m256i __W) {
  2916.   __W = _mm256_maskz_mov_epi16(__M, __W);
  2917.   return __builtin_reduce_add((__v16hi)__W);
  2918. }
  2919.  
  2920. static __inline__ short __DEFAULT_FN_ATTRS256
  2921. _mm256_mask_reduce_mul_epi16( __mmask16 __M, __m256i __W) {
  2922.   __W = _mm256_mask_mov_epi16(_mm256_set1_epi16(1), __M, __W);
  2923.   return __builtin_reduce_mul((__v16hi)__W);
  2924. }
  2925.  
  2926. static __inline__ short __DEFAULT_FN_ATTRS256
  2927. _mm256_mask_reduce_and_epi16( __mmask16 __M, __m256i __W) {
  2928.   __W = _mm256_mask_mov_epi16(_mm256_set1_epi16(-1), __M, __W);
  2929.   return __builtin_reduce_and((__v16hi)__W);
  2930. }
  2931.  
  2932. static __inline__ short __DEFAULT_FN_ATTRS256
  2933. _mm256_mask_reduce_or_epi16(__mmask16 __M, __m256i __W) {
  2934.   __W = _mm256_maskz_mov_epi16(__M, __W);
  2935.   return __builtin_reduce_or((__v16hi)__W);
  2936. }
  2937.  
  2938. static __inline__ short __DEFAULT_FN_ATTRS256
  2939. _mm256_reduce_max_epi16(__m256i __V) {
  2940.   return __builtin_reduce_max((__v16hi)__V);
  2941. }
  2942.  
  2943. static __inline__ unsigned short __DEFAULT_FN_ATTRS256
  2944. _mm256_reduce_max_epu16(__m256i __V) {
  2945.   return __builtin_reduce_max((__v16hu)__V);
  2946. }
  2947.  
  2948. static __inline__ short __DEFAULT_FN_ATTRS256
  2949. _mm256_reduce_min_epi16(__m256i __V) {
  2950.   return __builtin_reduce_min((__v16hi)__V);
  2951. }
  2952.  
  2953. static __inline__ unsigned short __DEFAULT_FN_ATTRS256
  2954. _mm256_reduce_min_epu16(__m256i __V) {
  2955.   return __builtin_reduce_min((__v16hu)__V);
  2956. }
  2957.  
  2958. static __inline__ short __DEFAULT_FN_ATTRS256
  2959. _mm256_mask_reduce_max_epi16(__mmask16 __M, __m256i __V) {
  2960.   __V = _mm256_mask_mov_epi16(_mm256_set1_epi16(-32767-1), __M, __V);
  2961.   return __builtin_reduce_max((__v16hi)__V);
  2962. }
  2963.  
  2964. static __inline__ unsigned short __DEFAULT_FN_ATTRS256
  2965. _mm256_mask_reduce_max_epu16(__mmask16 __M, __m256i __V) {
  2966.   __V = _mm256_maskz_mov_epi16(__M, __V);
  2967.   return __builtin_reduce_max((__v16hu)__V);
  2968. }
  2969.  
  2970. static __inline__ short __DEFAULT_FN_ATTRS256
  2971. _mm256_mask_reduce_min_epi16(__mmask16 __M, __m256i __V) {
  2972.   __V = _mm256_mask_mov_epi16(_mm256_set1_epi16(32767), __M, __V);
  2973.   return __builtin_reduce_min((__v16hi)__V);
  2974. }
  2975.  
  2976. static __inline__ unsigned short __DEFAULT_FN_ATTRS256
  2977. _mm256_mask_reduce_min_epu16(__mmask16 __M, __m256i __V) {
  2978.   __V = _mm256_mask_mov_epi16(_mm256_set1_epi16(-1), __M, __V);
  2979.   return __builtin_reduce_min((__v16hu)__V);
  2980. }
  2981.  
  2982. static __inline__ signed char __DEFAULT_FN_ATTRS128
  2983. _mm_reduce_add_epi8(__m128i __W) {
  2984.   return __builtin_reduce_add((__v16qs)__W);
  2985. }
  2986.  
  2987. static __inline__ signed char __DEFAULT_FN_ATTRS128
  2988. _mm_reduce_mul_epi8(__m128i __W) {
  2989.   return __builtin_reduce_mul((__v16qs)__W);
  2990. }
  2991.  
  2992. static __inline__ signed char __DEFAULT_FN_ATTRS128
  2993. _mm_reduce_and_epi8(__m128i __W) {
  2994.   return __builtin_reduce_and((__v16qs)__W);
  2995. }
  2996.  
  2997. static __inline__ signed char __DEFAULT_FN_ATTRS128
  2998. _mm_reduce_or_epi8(__m128i __W) {
  2999.   return __builtin_reduce_or((__v16qs)__W);
  3000. }
  3001.  
  3002. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3003. _mm_mask_reduce_add_epi8(__mmask16 __M, __m128i __W) {
  3004.   __W = _mm_maskz_mov_epi8(__M, __W);
  3005.   return __builtin_reduce_add((__v16qs)__W);
  3006. }
  3007.  
  3008. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3009. _mm_mask_reduce_mul_epi8(__mmask16 __M, __m128i __W) {
  3010.   __W = _mm_mask_mov_epi8(_mm_set1_epi8(1), __M, __W);
  3011.   return __builtin_reduce_mul((__v16qs)__W);
  3012. }
  3013.  
  3014. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3015. _mm_mask_reduce_and_epi8(__mmask16 __M, __m128i __W) {
  3016.   __W = _mm_mask_mov_epi8(_mm_set1_epi8(-1), __M, __W);
  3017.   return __builtin_reduce_and((__v16qs)__W);
  3018. }
  3019.  
  3020. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3021. _mm_mask_reduce_or_epi8(__mmask16 __M, __m128i __W) {
  3022.   __W = _mm_maskz_mov_epi8(__M, __W);
  3023.   return __builtin_reduce_or((__v16qs)__W);
  3024. }
  3025.  
  3026. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3027. _mm_reduce_max_epi8(__m128i __V) {
  3028.   return __builtin_reduce_max((__v16qs)__V);
  3029. }
  3030.  
  3031. static __inline__ unsigned char __DEFAULT_FN_ATTRS128
  3032. _mm_reduce_max_epu8(__m128i __V) {
  3033.   return __builtin_reduce_max((__v16qu)__V);
  3034. }
  3035.  
  3036. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3037. _mm_reduce_min_epi8(__m128i __V) {
  3038.   return __builtin_reduce_min((__v16qs)__V);
  3039. }
  3040.  
  3041. static __inline__ unsigned char __DEFAULT_FN_ATTRS128
  3042. _mm_reduce_min_epu8(__m128i __V) {
  3043.   return __builtin_reduce_min((__v16qu)__V);
  3044. }
  3045.  
  3046. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3047. _mm_mask_reduce_max_epi8(__mmask16 __M, __m128i __V) {
  3048.   __V = _mm_mask_mov_epi8(_mm_set1_epi8(-127-1), __M, __V);
  3049.   return __builtin_reduce_max((__v16qs)__V);
  3050. }
  3051.  
  3052. static __inline__ unsigned char __DEFAULT_FN_ATTRS128
  3053. _mm_mask_reduce_max_epu8(__mmask16 __M, __m128i __V) {
  3054.   __V = _mm_maskz_mov_epi8(__M, __V);
  3055.   return __builtin_reduce_max((__v16qu)__V);
  3056. }
  3057.  
  3058. static __inline__ signed char __DEFAULT_FN_ATTRS128
  3059. _mm_mask_reduce_min_epi8(__mmask16 __M, __m128i __V) {
  3060.   __V = _mm_mask_mov_epi8(_mm_set1_epi8(127), __M, __V);
  3061.   return __builtin_reduce_min((__v16qs)__V);
  3062. }
  3063.  
  3064. static __inline__ unsigned char __DEFAULT_FN_ATTRS128
  3065. _mm_mask_reduce_min_epu8(__mmask16 __M, __m128i __V) {
  3066.   __V = _mm_mask_mov_epi8(_mm_set1_epi8(-1), __M, __V);
  3067.   return __builtin_reduce_min((__v16qu)__V);
  3068. }
  3069.  
  3070. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3071. _mm256_reduce_add_epi8(__m256i __W) {
  3072.   return __builtin_reduce_add((__v32qs)__W);
  3073. }
  3074.  
  3075. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3076. _mm256_reduce_mul_epi8(__m256i __W) {
  3077.   return __builtin_reduce_mul((__v32qs)__W);
  3078. }
  3079.  
  3080. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3081. _mm256_reduce_and_epi8(__m256i __W) {
  3082.   return __builtin_reduce_and((__v32qs)__W);
  3083. }
  3084.  
  3085. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3086. _mm256_reduce_or_epi8(__m256i __W) {
  3087.   return __builtin_reduce_or((__v32qs)__W);
  3088. }
  3089.  
  3090. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3091. _mm256_mask_reduce_add_epi8(__mmask32 __M, __m256i __W) {
  3092.   __W = _mm256_maskz_mov_epi8(__M, __W);
  3093.   return __builtin_reduce_add((__v32qs)__W);
  3094. }
  3095.  
  3096. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3097. _mm256_mask_reduce_mul_epi8(__mmask32 __M, __m256i __W) {
  3098.   __W = _mm256_mask_mov_epi8(_mm256_set1_epi8(1), __M, __W);
  3099.   return __builtin_reduce_mul((__v32qs)__W);
  3100. }
  3101.  
  3102. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3103. _mm256_mask_reduce_and_epi8(__mmask32 __M, __m256i __W) {
  3104.   __W = _mm256_mask_mov_epi8(_mm256_set1_epi8(-1), __M, __W);
  3105.   return __builtin_reduce_and((__v32qs)__W);
  3106. }
  3107.  
  3108. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3109. _mm256_mask_reduce_or_epi8(__mmask32 __M, __m256i __W) {
  3110.   __W = _mm256_maskz_mov_epi8(__M, __W);
  3111.   return __builtin_reduce_or((__v32qs)__W);
  3112. }
  3113.  
  3114. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3115. _mm256_reduce_max_epi8(__m256i __V) {
  3116.   return __builtin_reduce_max((__v32qs)__V);
  3117. }
  3118.  
  3119. static __inline__ unsigned char __DEFAULT_FN_ATTRS256
  3120. _mm256_reduce_max_epu8(__m256i __V) {
  3121.   return __builtin_reduce_max((__v32qu)__V);
  3122. }
  3123.  
  3124. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3125. _mm256_reduce_min_epi8(__m256i __V) {
  3126.   return __builtin_reduce_min((__v32qs)__V);
  3127. }
  3128.  
  3129. static __inline__ unsigned char __DEFAULT_FN_ATTRS256
  3130. _mm256_reduce_min_epu8(__m256i __V) {
  3131.   return __builtin_reduce_min((__v32qu)__V);
  3132. }
  3133.  
  3134. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3135. _mm256_mask_reduce_max_epi8(__mmask32 __M, __m256i __V) {
  3136.   __V = _mm256_mask_mov_epi8(_mm256_set1_epi8(-127-1), __M, __V);
  3137.   return __builtin_reduce_max((__v32qs)__V);
  3138. }
  3139.  
  3140. static __inline__ unsigned char __DEFAULT_FN_ATTRS256
  3141. _mm256_mask_reduce_max_epu8(__mmask32 __M, __m256i __V) {
  3142.   __V = _mm256_maskz_mov_epi8(__M, __V);
  3143.   return __builtin_reduce_max((__v32qu)__V);
  3144. }
  3145.  
  3146. static __inline__ signed char __DEFAULT_FN_ATTRS256
  3147. _mm256_mask_reduce_min_epi8(__mmask32 __M, __m256i __V) {
  3148.   __V = _mm256_mask_mov_epi8(_mm256_set1_epi8(127), __M, __V);
  3149.   return __builtin_reduce_min((__v32qs)__V);
  3150. }
  3151.  
  3152. static __inline__ unsigned char __DEFAULT_FN_ATTRS256
  3153. _mm256_mask_reduce_min_epu8(__mmask32 __M, __m256i __V) {
  3154.   __V = _mm256_mask_mov_epi8(_mm256_set1_epi8(-1), __M, __V);
  3155.   return __builtin_reduce_min((__v32qu)__V);
  3156. }
  3157.  
  3158. #undef __DEFAULT_FN_ATTRS128
  3159. #undef __DEFAULT_FN_ATTRS256
  3160.  
  3161. #endif /* __AVX512VLBWINTRIN_H */
  3162.