master
   1/*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
   2 *
   3 *
   4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
   5 * See https://llvm.org/LICENSE.txt for license information.
   6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
   7 *
   8 *===-----------------------------------------------------------------------===
   9 */
  10#ifndef __IMMINTRIN_H
  11#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
  12#endif
  13
  14#ifndef __AVX512BWINTRIN_H
  15#define __AVX512BWINTRIN_H
  16
  17typedef unsigned int __mmask32;
  18typedef unsigned long long __mmask64;
  19
  20/* Define the default attributes for the functions in this file. */
  21#define __DEFAULT_FN_ATTRS512                                                  \
  22  __attribute__((__always_inline__, __nodebug__,                               \
  23                 __target__("avx512bw,evex512"), __min_vector_width__(512)))
  24#define __DEFAULT_FN_ATTRS                                                     \
  25  __attribute__((__always_inline__, __nodebug__,                               \
  26                 __target__("avx512bw,no-evex512")))
  27
  28static __inline __mmask32 __DEFAULT_FN_ATTRS
  29_knot_mask32(__mmask32 __M)
  30{
  31  return __builtin_ia32_knotsi(__M);
  32}
  33
  34static __inline __mmask64 __DEFAULT_FN_ATTRS _knot_mask64(__mmask64 __M) {
  35  return __builtin_ia32_knotdi(__M);
  36}
  37
  38static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  39_kand_mask32(__mmask32 __A, __mmask32 __B)
  40{
  41  return (__mmask32)__builtin_ia32_kandsi((__mmask32)__A, (__mmask32)__B);
  42}
  43
  44static __inline__ __mmask64 __DEFAULT_FN_ATTRS _kand_mask64(__mmask64 __A,
  45                                                            __mmask64 __B) {
  46  return (__mmask64)__builtin_ia32_kanddi((__mmask64)__A, (__mmask64)__B);
  47}
  48
  49static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  50_kandn_mask32(__mmask32 __A, __mmask32 __B)
  51{
  52  return (__mmask32)__builtin_ia32_kandnsi((__mmask32)__A, (__mmask32)__B);
  53}
  54
  55static __inline__ __mmask64 __DEFAULT_FN_ATTRS _kandn_mask64(__mmask64 __A,
  56                                                             __mmask64 __B) {
  57  return (__mmask64)__builtin_ia32_kandndi((__mmask64)__A, (__mmask64)__B);
  58}
  59
  60static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  61_kor_mask32(__mmask32 __A, __mmask32 __B)
  62{
  63  return (__mmask32)__builtin_ia32_korsi((__mmask32)__A, (__mmask32)__B);
  64}
  65
  66static __inline__ __mmask64 __DEFAULT_FN_ATTRS _kor_mask64(__mmask64 __A,
  67                                                           __mmask64 __B) {
  68  return (__mmask64)__builtin_ia32_kordi((__mmask64)__A, (__mmask64)__B);
  69}
  70
  71static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  72_kxnor_mask32(__mmask32 __A, __mmask32 __B)
  73{
  74  return (__mmask32)__builtin_ia32_kxnorsi((__mmask32)__A, (__mmask32)__B);
  75}
  76
  77static __inline__ __mmask64 __DEFAULT_FN_ATTRS _kxnor_mask64(__mmask64 __A,
  78                                                             __mmask64 __B) {
  79  return (__mmask64)__builtin_ia32_kxnordi((__mmask64)__A, (__mmask64)__B);
  80}
  81
  82static __inline__ __mmask32 __DEFAULT_FN_ATTRS
  83_kxor_mask32(__mmask32 __A, __mmask32 __B)
  84{
  85  return (__mmask32)__builtin_ia32_kxorsi((__mmask32)__A, (__mmask32)__B);
  86}
  87
  88static __inline__ __mmask64 __DEFAULT_FN_ATTRS _kxor_mask64(__mmask64 __A,
  89                                                            __mmask64 __B) {
  90  return (__mmask64)__builtin_ia32_kxordi((__mmask64)__A, (__mmask64)__B);
  91}
  92
  93static __inline__ unsigned char __DEFAULT_FN_ATTRS
  94_kortestc_mask32_u8(__mmask32 __A, __mmask32 __B)
  95{
  96  return (unsigned char)__builtin_ia32_kortestcsi(__A, __B);
  97}
  98
  99static __inline__ unsigned char __DEFAULT_FN_ATTRS
 100_kortestz_mask32_u8(__mmask32 __A, __mmask32 __B)
 101{
 102  return (unsigned char)__builtin_ia32_kortestzsi(__A, __B);
 103}
 104
 105static __inline__ unsigned char __DEFAULT_FN_ATTRS
 106_kortest_mask32_u8(__mmask32 __A, __mmask32 __B, unsigned char *__C) {
 107  *__C = (unsigned char)__builtin_ia32_kortestcsi(__A, __B);
 108  return (unsigned char)__builtin_ia32_kortestzsi(__A, __B);
 109}
 110
 111static __inline__ unsigned char __DEFAULT_FN_ATTRS
 112_kortestc_mask64_u8(__mmask64 __A, __mmask64 __B) {
 113  return (unsigned char)__builtin_ia32_kortestcdi(__A, __B);
 114}
 115
 116static __inline__ unsigned char __DEFAULT_FN_ATTRS
 117_kortestz_mask64_u8(__mmask64 __A, __mmask64 __B) {
 118  return (unsigned char)__builtin_ia32_kortestzdi(__A, __B);
 119}
 120
 121static __inline__ unsigned char __DEFAULT_FN_ATTRS
 122_kortest_mask64_u8(__mmask64 __A, __mmask64 __B, unsigned char *__C) {
 123  *__C = (unsigned char)__builtin_ia32_kortestcdi(__A, __B);
 124  return (unsigned char)__builtin_ia32_kortestzdi(__A, __B);
 125}
 126
 127static __inline__ unsigned char __DEFAULT_FN_ATTRS
 128_ktestc_mask32_u8(__mmask32 __A, __mmask32 __B)
 129{
 130  return (unsigned char)__builtin_ia32_ktestcsi(__A, __B);
 131}
 132
 133static __inline__ unsigned char __DEFAULT_FN_ATTRS
 134_ktestz_mask32_u8(__mmask32 __A, __mmask32 __B)
 135{
 136  return (unsigned char)__builtin_ia32_ktestzsi(__A, __B);
 137}
 138
 139static __inline__ unsigned char __DEFAULT_FN_ATTRS
 140_ktest_mask32_u8(__mmask32 __A, __mmask32 __B, unsigned char *__C) {
 141  *__C = (unsigned char)__builtin_ia32_ktestcsi(__A, __B);
 142  return (unsigned char)__builtin_ia32_ktestzsi(__A, __B);
 143}
 144
 145static __inline__ unsigned char __DEFAULT_FN_ATTRS
 146_ktestc_mask64_u8(__mmask64 __A, __mmask64 __B) {
 147  return (unsigned char)__builtin_ia32_ktestcdi(__A, __B);
 148}
 149
 150static __inline__ unsigned char __DEFAULT_FN_ATTRS
 151_ktestz_mask64_u8(__mmask64 __A, __mmask64 __B) {
 152  return (unsigned char)__builtin_ia32_ktestzdi(__A, __B);
 153}
 154
 155static __inline__ unsigned char __DEFAULT_FN_ATTRS
 156_ktest_mask64_u8(__mmask64 __A, __mmask64 __B, unsigned char *__C) {
 157  *__C = (unsigned char)__builtin_ia32_ktestcdi(__A, __B);
 158  return (unsigned char)__builtin_ia32_ktestzdi(__A, __B);
 159}
 160
 161static __inline__ __mmask32 __DEFAULT_FN_ATTRS
 162_kadd_mask32(__mmask32 __A, __mmask32 __B)
 163{
 164  return (__mmask32)__builtin_ia32_kaddsi((__mmask32)__A, (__mmask32)__B);
 165}
 166
 167static __inline__ __mmask64 __DEFAULT_FN_ATTRS _kadd_mask64(__mmask64 __A,
 168                                                            __mmask64 __B) {
 169  return (__mmask64)__builtin_ia32_kadddi((__mmask64)__A, (__mmask64)__B);
 170}
 171
 172#define _kshiftli_mask32(A, I) \
 173  ((__mmask32)__builtin_ia32_kshiftlisi((__mmask32)(A), (unsigned int)(I)))
 174
 175#define _kshiftri_mask32(A, I) \
 176  ((__mmask32)__builtin_ia32_kshiftrisi((__mmask32)(A), (unsigned int)(I)))
 177
 178#define _kshiftli_mask64(A, I) \
 179  ((__mmask64)__builtin_ia32_kshiftlidi((__mmask64)(A), (unsigned int)(I)))
 180
 181#define _kshiftri_mask64(A, I) \
 182  ((__mmask64)__builtin_ia32_kshiftridi((__mmask64)(A), (unsigned int)(I)))
 183
 184static __inline__ unsigned int __DEFAULT_FN_ATTRS
 185_cvtmask32_u32(__mmask32 __A) {
 186  return (unsigned int)__builtin_ia32_kmovd((__mmask32)__A);
 187}
 188
 189static __inline__ unsigned long long __DEFAULT_FN_ATTRS
 190_cvtmask64_u64(__mmask64 __A) {
 191  return (unsigned long long)__builtin_ia32_kmovq((__mmask64)__A);
 192}
 193
 194static __inline__ __mmask32 __DEFAULT_FN_ATTRS
 195_cvtu32_mask32(unsigned int __A) {
 196  return (__mmask32)__builtin_ia32_kmovd((__mmask32)__A);
 197}
 198
 199static __inline__ __mmask64 __DEFAULT_FN_ATTRS
 200_cvtu64_mask64(unsigned long long __A) {
 201  return (__mmask64)__builtin_ia32_kmovq((__mmask64)__A);
 202}
 203
 204static __inline__ __mmask32 __DEFAULT_FN_ATTRS
 205_load_mask32(__mmask32 *__A) {
 206  return (__mmask32)__builtin_ia32_kmovd(*(__mmask32 *)__A);
 207}
 208
 209static __inline__ __mmask64 __DEFAULT_FN_ATTRS _load_mask64(__mmask64 *__A) {
 210  return (__mmask64)__builtin_ia32_kmovq(*(__mmask64 *)__A);
 211}
 212
 213static __inline__ void __DEFAULT_FN_ATTRS
 214_store_mask32(__mmask32 *__A, __mmask32 __B) {
 215  *(__mmask32 *)__A = __builtin_ia32_kmovd((__mmask32)__B);
 216}
 217
 218static __inline__ void __DEFAULT_FN_ATTRS _store_mask64(__mmask64 *__A,
 219                                                        __mmask64 __B) {
 220  *(__mmask64 *)__A = __builtin_ia32_kmovq((__mmask64)__B);
 221}
 222
 223/* Integer compare */
 224
 225#define _mm512_cmp_epi8_mask(a, b, p) \
 226  ((__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
 227                                          (__v64qi)(__m512i)(b), (int)(p), \
 228                                          (__mmask64)-1))
 229
 230#define _mm512_mask_cmp_epi8_mask(m, a, b, p) \
 231  ((__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
 232                                          (__v64qi)(__m512i)(b), (int)(p), \
 233                                          (__mmask64)(m)))
 234
 235#define _mm512_cmp_epu8_mask(a, b, p) \
 236  ((__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
 237                                           (__v64qi)(__m512i)(b), (int)(p), \
 238                                           (__mmask64)-1))
 239
 240#define _mm512_mask_cmp_epu8_mask(m, a, b, p) \
 241  ((__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
 242                                           (__v64qi)(__m512i)(b), (int)(p), \
 243                                           (__mmask64)(m)))
 244
 245#define _mm512_cmp_epi16_mask(a, b, p) \
 246  ((__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
 247                                          (__v32hi)(__m512i)(b), (int)(p), \
 248                                          (__mmask32)-1))
 249
 250#define _mm512_mask_cmp_epi16_mask(m, a, b, p) \
 251  ((__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
 252                                          (__v32hi)(__m512i)(b), (int)(p), \
 253                                          (__mmask32)(m)))
 254
 255#define _mm512_cmp_epu16_mask(a, b, p) \
 256  ((__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
 257                                           (__v32hi)(__m512i)(b), (int)(p), \
 258                                           (__mmask32)-1))
 259
 260#define _mm512_mask_cmp_epu16_mask(m, a, b, p) \
 261  ((__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
 262                                           (__v32hi)(__m512i)(b), (int)(p), \
 263                                           (__mmask32)(m)))
 264
 265#define _mm512_cmpeq_epi8_mask(A, B) \
 266    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
 267#define _mm512_mask_cmpeq_epi8_mask(k, A, B) \
 268    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
 269#define _mm512_cmpge_epi8_mask(A, B) \
 270    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
 271#define _mm512_mask_cmpge_epi8_mask(k, A, B) \
 272    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
 273#define _mm512_cmpgt_epi8_mask(A, B) \
 274    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
 275#define _mm512_mask_cmpgt_epi8_mask(k, A, B) \
 276    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
 277#define _mm512_cmple_epi8_mask(A, B) \
 278    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
 279#define _mm512_mask_cmple_epi8_mask(k, A, B) \
 280    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
 281#define _mm512_cmplt_epi8_mask(A, B) \
 282    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
 283#define _mm512_mask_cmplt_epi8_mask(k, A, B) \
 284    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
 285#define _mm512_cmpneq_epi8_mask(A, B) \
 286    _mm512_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
 287#define _mm512_mask_cmpneq_epi8_mask(k, A, B) \
 288    _mm512_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
 289
 290#define _mm512_cmpeq_epu8_mask(A, B) \
 291    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
 292#define _mm512_mask_cmpeq_epu8_mask(k, A, B) \
 293    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
 294#define _mm512_cmpge_epu8_mask(A, B) \
 295    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
 296#define _mm512_mask_cmpge_epu8_mask(k, A, B) \
 297    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
 298#define _mm512_cmpgt_epu8_mask(A, B) \
 299    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
 300#define _mm512_mask_cmpgt_epu8_mask(k, A, B) \
 301    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
 302#define _mm512_cmple_epu8_mask(A, B) \
 303    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
 304#define _mm512_mask_cmple_epu8_mask(k, A, B) \
 305    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
 306#define _mm512_cmplt_epu8_mask(A, B) \
 307    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
 308#define _mm512_mask_cmplt_epu8_mask(k, A, B) \
 309    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
 310#define _mm512_cmpneq_epu8_mask(A, B) \
 311    _mm512_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
 312#define _mm512_mask_cmpneq_epu8_mask(k, A, B) \
 313    _mm512_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
 314
 315#define _mm512_cmpeq_epi16_mask(A, B) \
 316    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
 317#define _mm512_mask_cmpeq_epi16_mask(k, A, B) \
 318    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
 319#define _mm512_cmpge_epi16_mask(A, B) \
 320    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
 321#define _mm512_mask_cmpge_epi16_mask(k, A, B) \
 322    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
 323#define _mm512_cmpgt_epi16_mask(A, B) \
 324    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
 325#define _mm512_mask_cmpgt_epi16_mask(k, A, B) \
 326    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
 327#define _mm512_cmple_epi16_mask(A, B) \
 328    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
 329#define _mm512_mask_cmple_epi16_mask(k, A, B) \
 330    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
 331#define _mm512_cmplt_epi16_mask(A, B) \
 332    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
 333#define _mm512_mask_cmplt_epi16_mask(k, A, B) \
 334    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
 335#define _mm512_cmpneq_epi16_mask(A, B) \
 336    _mm512_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
 337#define _mm512_mask_cmpneq_epi16_mask(k, A, B) \
 338    _mm512_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
 339
 340#define _mm512_cmpeq_epu16_mask(A, B) \
 341    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
 342#define _mm512_mask_cmpeq_epu16_mask(k, A, B) \
 343    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
 344#define _mm512_cmpge_epu16_mask(A, B) \
 345    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
 346#define _mm512_mask_cmpge_epu16_mask(k, A, B) \
 347    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
 348#define _mm512_cmpgt_epu16_mask(A, B) \
 349    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
 350#define _mm512_mask_cmpgt_epu16_mask(k, A, B) \
 351    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
 352#define _mm512_cmple_epu16_mask(A, B) \
 353    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
 354#define _mm512_mask_cmple_epu16_mask(k, A, B) \
 355    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
 356#define _mm512_cmplt_epu16_mask(A, B) \
 357    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
 358#define _mm512_mask_cmplt_epu16_mask(k, A, B) \
 359    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
 360#define _mm512_cmpneq_epu16_mask(A, B) \
 361    _mm512_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
 362#define _mm512_mask_cmpneq_epu16_mask(k, A, B) \
 363    _mm512_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
 364
 365static __inline__ __m512i __DEFAULT_FN_ATTRS512
 366_mm512_add_epi8 (__m512i __A, __m512i __B) {
 367  return (__m512i) ((__v64qu) __A + (__v64qu) __B);
 368}
 369
 370static __inline__ __m512i __DEFAULT_FN_ATTRS512
 371_mm512_mask_add_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
 372  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 373                                             (__v64qi)_mm512_add_epi8(__A, __B),
 374                                             (__v64qi)__W);
 375}
 376
 377static __inline__ __m512i __DEFAULT_FN_ATTRS512
 378_mm512_maskz_add_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
 379  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 380                                             (__v64qi)_mm512_add_epi8(__A, __B),
 381                                             (__v64qi)_mm512_setzero_si512());
 382}
 383
 384static __inline__ __m512i __DEFAULT_FN_ATTRS512
 385_mm512_sub_epi8 (__m512i __A, __m512i __B) {
 386  return (__m512i) ((__v64qu) __A - (__v64qu) __B);
 387}
 388
 389static __inline__ __m512i __DEFAULT_FN_ATTRS512
 390_mm512_mask_sub_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
 391  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 392                                             (__v64qi)_mm512_sub_epi8(__A, __B),
 393                                             (__v64qi)__W);
 394}
 395
 396static __inline__ __m512i __DEFAULT_FN_ATTRS512
 397_mm512_maskz_sub_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
 398  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 399                                             (__v64qi)_mm512_sub_epi8(__A, __B),
 400                                             (__v64qi)_mm512_setzero_si512());
 401}
 402
 403static __inline__ __m512i __DEFAULT_FN_ATTRS512
 404_mm512_add_epi16 (__m512i __A, __m512i __B) {
 405  return (__m512i) ((__v32hu) __A + (__v32hu) __B);
 406}
 407
 408static __inline__ __m512i __DEFAULT_FN_ATTRS512
 409_mm512_mask_add_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
 410  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 411                                             (__v32hi)_mm512_add_epi16(__A, __B),
 412                                             (__v32hi)__W);
 413}
 414
 415static __inline__ __m512i __DEFAULT_FN_ATTRS512
 416_mm512_maskz_add_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
 417  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 418                                             (__v32hi)_mm512_add_epi16(__A, __B),
 419                                             (__v32hi)_mm512_setzero_si512());
 420}
 421
 422static __inline__ __m512i __DEFAULT_FN_ATTRS512
 423_mm512_sub_epi16 (__m512i __A, __m512i __B) {
 424  return (__m512i) ((__v32hu) __A - (__v32hu) __B);
 425}
 426
 427static __inline__ __m512i __DEFAULT_FN_ATTRS512
 428_mm512_mask_sub_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
 429  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 430                                             (__v32hi)_mm512_sub_epi16(__A, __B),
 431                                             (__v32hi)__W);
 432}
 433
 434static __inline__ __m512i __DEFAULT_FN_ATTRS512
 435_mm512_maskz_sub_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
 436  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 437                                             (__v32hi)_mm512_sub_epi16(__A, __B),
 438                                             (__v32hi)_mm512_setzero_si512());
 439}
 440
 441static __inline__ __m512i __DEFAULT_FN_ATTRS512
 442_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
 443  return (__m512i) ((__v32hu) __A * (__v32hu) __B);
 444}
 445
 446static __inline__ __m512i __DEFAULT_FN_ATTRS512
 447_mm512_mask_mullo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
 448  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 449                                             (__v32hi)_mm512_mullo_epi16(__A, __B),
 450                                             (__v32hi)__W);
 451}
 452
 453static __inline__ __m512i __DEFAULT_FN_ATTRS512
 454_mm512_maskz_mullo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
 455  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 456                                             (__v32hi)_mm512_mullo_epi16(__A, __B),
 457                                             (__v32hi)_mm512_setzero_si512());
 458}
 459
 460static __inline__ __m512i __DEFAULT_FN_ATTRS512
 461_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
 462{
 463  return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
 464              (__v64qi) __W,
 465              (__v64qi) __A);
 466}
 467
 468static __inline__ __m512i __DEFAULT_FN_ATTRS512
 469_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
 470{
 471  return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
 472              (__v32hi) __W,
 473              (__v32hi) __A);
 474}
 475
 476static __inline__ __m512i __DEFAULT_FN_ATTRS512
 477_mm512_abs_epi8 (__m512i __A)
 478{
 479  return (__m512i)__builtin_elementwise_abs((__v64qs)__A);
 480}
 481
 482static __inline__ __m512i __DEFAULT_FN_ATTRS512
 483_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
 484{
 485  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 486                                             (__v64qi)_mm512_abs_epi8(__A),
 487                                             (__v64qi)__W);
 488}
 489
 490static __inline__ __m512i __DEFAULT_FN_ATTRS512
 491_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
 492{
 493  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 494                                             (__v64qi)_mm512_abs_epi8(__A),
 495                                             (__v64qi)_mm512_setzero_si512());
 496}
 497
 498static __inline__ __m512i __DEFAULT_FN_ATTRS512
 499_mm512_abs_epi16 (__m512i __A)
 500{
 501  return (__m512i)__builtin_elementwise_abs((__v32hi)__A);
 502}
 503
 504static __inline__ __m512i __DEFAULT_FN_ATTRS512
 505_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
 506{
 507  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 508                                             (__v32hi)_mm512_abs_epi16(__A),
 509                                             (__v32hi)__W);
 510}
 511
 512static __inline__ __m512i __DEFAULT_FN_ATTRS512
 513_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
 514{
 515  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 516                                             (__v32hi)_mm512_abs_epi16(__A),
 517                                             (__v32hi)_mm512_setzero_si512());
 518}
 519
 520static __inline__ __m512i __DEFAULT_FN_ATTRS512
 521_mm512_packs_epi32(__m512i __A, __m512i __B)
 522{
 523  return (__m512i)__builtin_ia32_packssdw512((__v16si)__A, (__v16si)__B);
 524}
 525
 526static __inline__ __m512i __DEFAULT_FN_ATTRS512
 527_mm512_maskz_packs_epi32(__mmask32 __M, __m512i __A, __m512i __B)
 528{
 529  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 530                                       (__v32hi)_mm512_packs_epi32(__A, __B),
 531                                       (__v32hi)_mm512_setzero_si512());
 532}
 533
 534static __inline__ __m512i __DEFAULT_FN_ATTRS512
 535_mm512_mask_packs_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
 536{
 537  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 538                                       (__v32hi)_mm512_packs_epi32(__A, __B),
 539                                       (__v32hi)__W);
 540}
 541
 542static __inline__ __m512i __DEFAULT_FN_ATTRS512
 543_mm512_packs_epi16(__m512i __A, __m512i __B)
 544{
 545  return (__m512i)__builtin_ia32_packsswb512((__v32hi)__A, (__v32hi) __B);
 546}
 547
 548static __inline__ __m512i __DEFAULT_FN_ATTRS512
 549_mm512_mask_packs_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
 550{
 551  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 552                                        (__v64qi)_mm512_packs_epi16(__A, __B),
 553                                        (__v64qi)__W);
 554}
 555
 556static __inline__ __m512i __DEFAULT_FN_ATTRS512
 557_mm512_maskz_packs_epi16(__mmask64 __M, __m512i __A, __m512i __B)
 558{
 559  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 560                                        (__v64qi)_mm512_packs_epi16(__A, __B),
 561                                        (__v64qi)_mm512_setzero_si512());
 562}
 563
 564static __inline__ __m512i __DEFAULT_FN_ATTRS512
 565_mm512_packus_epi32(__m512i __A, __m512i __B)
 566{
 567  return (__m512i)__builtin_ia32_packusdw512((__v16si) __A, (__v16si) __B);
 568}
 569
 570static __inline__ __m512i __DEFAULT_FN_ATTRS512
 571_mm512_maskz_packus_epi32(__mmask32 __M, __m512i __A, __m512i __B)
 572{
 573  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 574                                       (__v32hi)_mm512_packus_epi32(__A, __B),
 575                                       (__v32hi)_mm512_setzero_si512());
 576}
 577
 578static __inline__ __m512i __DEFAULT_FN_ATTRS512
 579_mm512_mask_packus_epi32(__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
 580{
 581  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 582                                       (__v32hi)_mm512_packus_epi32(__A, __B),
 583                                       (__v32hi)__W);
 584}
 585
 586static __inline__ __m512i __DEFAULT_FN_ATTRS512
 587_mm512_packus_epi16(__m512i __A, __m512i __B)
 588{
 589  return (__m512i)__builtin_ia32_packuswb512((__v32hi) __A, (__v32hi) __B);
 590}
 591
 592static __inline__ __m512i __DEFAULT_FN_ATTRS512
 593_mm512_mask_packus_epi16(__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
 594{
 595  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 596                                        (__v64qi)_mm512_packus_epi16(__A, __B),
 597                                        (__v64qi)__W);
 598}
 599
 600static __inline__ __m512i __DEFAULT_FN_ATTRS512
 601_mm512_maskz_packus_epi16(__mmask64 __M, __m512i __A, __m512i __B)
 602{
 603  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 604                                        (__v64qi)_mm512_packus_epi16(__A, __B),
 605                                        (__v64qi)_mm512_setzero_si512());
 606}
 607
 608static __inline__ __m512i __DEFAULT_FN_ATTRS512
 609_mm512_adds_epi8 (__m512i __A, __m512i __B)
 610{
 611  return (__m512i)__builtin_elementwise_add_sat((__v64qs)__A, (__v64qs)__B);
 612}
 613
 614static __inline__ __m512i __DEFAULT_FN_ATTRS512
 615_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
 616{
 617  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 618                                        (__v64qi)_mm512_adds_epi8(__A, __B),
 619                                        (__v64qi)__W);
 620}
 621
 622static __inline__ __m512i __DEFAULT_FN_ATTRS512
 623_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
 624{
 625  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 626                                        (__v64qi)_mm512_adds_epi8(__A, __B),
 627                                        (__v64qi)_mm512_setzero_si512());
 628}
 629
 630static __inline__ __m512i __DEFAULT_FN_ATTRS512
 631_mm512_adds_epi16 (__m512i __A, __m512i __B)
 632{
 633  return (__m512i)__builtin_elementwise_add_sat((__v32hi)__A, (__v32hi)__B);
 634}
 635
 636static __inline__ __m512i __DEFAULT_FN_ATTRS512
 637_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
 638{
 639  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 640                                        (__v32hi)_mm512_adds_epi16(__A, __B),
 641                                        (__v32hi)__W);
 642}
 643
 644static __inline__ __m512i __DEFAULT_FN_ATTRS512
 645_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
 646{
 647  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 648                                        (__v32hi)_mm512_adds_epi16(__A, __B),
 649                                        (__v32hi)_mm512_setzero_si512());
 650}
 651
 652static __inline__ __m512i __DEFAULT_FN_ATTRS512
 653_mm512_adds_epu8 (__m512i __A, __m512i __B)
 654{
 655  return (__m512i)__builtin_elementwise_add_sat((__v64qu) __A, (__v64qu) __B);
 656}
 657
 658static __inline__ __m512i __DEFAULT_FN_ATTRS512
 659_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
 660{
 661  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 662                                        (__v64qi)_mm512_adds_epu8(__A, __B),
 663                                        (__v64qi)__W);
 664}
 665
 666static __inline__ __m512i __DEFAULT_FN_ATTRS512
 667_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
 668{
 669  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 670                                        (__v64qi)_mm512_adds_epu8(__A, __B),
 671                                        (__v64qi)_mm512_setzero_si512());
 672}
 673
 674static __inline__ __m512i __DEFAULT_FN_ATTRS512
 675_mm512_adds_epu16 (__m512i __A, __m512i __B)
 676{
 677  return (__m512i)__builtin_elementwise_add_sat((__v32hu) __A, (__v32hu) __B);
 678}
 679
 680static __inline__ __m512i __DEFAULT_FN_ATTRS512
 681_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
 682{
 683  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 684                                        (__v32hi)_mm512_adds_epu16(__A, __B),
 685                                        (__v32hi)__W);
 686}
 687
 688static __inline__ __m512i __DEFAULT_FN_ATTRS512
 689_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
 690{
 691  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 692                                        (__v32hi)_mm512_adds_epu16(__A, __B),
 693                                        (__v32hi)_mm512_setzero_si512());
 694}
 695
 696static __inline__ __m512i __DEFAULT_FN_ATTRS512
 697_mm512_avg_epu8 (__m512i __A, __m512i __B)
 698{
 699  return (__m512i)__builtin_ia32_pavgb512((__v64qi)__A, (__v64qi)__B);
 700}
 701
 702static __inline__ __m512i __DEFAULT_FN_ATTRS512
 703_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
 704          __m512i __B)
 705{
 706  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 707              (__v64qi)_mm512_avg_epu8(__A, __B),
 708              (__v64qi)__W);
 709}
 710
 711static __inline__ __m512i __DEFAULT_FN_ATTRS512
 712_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
 713{
 714  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 715              (__v64qi)_mm512_avg_epu8(__A, __B),
 716              (__v64qi)_mm512_setzero_si512());
 717}
 718
 719static __inline__ __m512i __DEFAULT_FN_ATTRS512
 720_mm512_avg_epu16 (__m512i __A, __m512i __B)
 721{
 722  return (__m512i)__builtin_ia32_pavgw512((__v32hi)__A, (__v32hi)__B);
 723}
 724
 725static __inline__ __m512i __DEFAULT_FN_ATTRS512
 726_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
 727           __m512i __B)
 728{
 729  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 730              (__v32hi)_mm512_avg_epu16(__A, __B),
 731              (__v32hi)__W);
 732}
 733
 734static __inline__ __m512i __DEFAULT_FN_ATTRS512
 735_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
 736{
 737  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 738              (__v32hi)_mm512_avg_epu16(__A, __B),
 739              (__v32hi) _mm512_setzero_si512());
 740}
 741
 742static __inline__ __m512i __DEFAULT_FN_ATTRS512
 743_mm512_max_epi8 (__m512i __A, __m512i __B)
 744{
 745  return (__m512i)__builtin_elementwise_max((__v64qs) __A, (__v64qs) __B);
 746}
 747
 748static __inline__ __m512i __DEFAULT_FN_ATTRS512
 749_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
 750{
 751  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 752                                             (__v64qi)_mm512_max_epi8(__A, __B),
 753                                             (__v64qi)_mm512_setzero_si512());
 754}
 755
 756static __inline__ __m512i __DEFAULT_FN_ATTRS512
 757_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
 758{
 759  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 760                                             (__v64qi)_mm512_max_epi8(__A, __B),
 761                                             (__v64qi)__W);
 762}
 763
 764static __inline__ __m512i __DEFAULT_FN_ATTRS512
 765_mm512_max_epi16 (__m512i __A, __m512i __B)
 766{
 767  return (__m512i)__builtin_elementwise_max((__v32hi) __A, (__v32hi) __B);
 768}
 769
 770static __inline__ __m512i __DEFAULT_FN_ATTRS512
 771_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
 772{
 773  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 774                                            (__v32hi)_mm512_max_epi16(__A, __B),
 775                                            (__v32hi)_mm512_setzero_si512());
 776}
 777
 778static __inline__ __m512i __DEFAULT_FN_ATTRS512
 779_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
 780           __m512i __B)
 781{
 782  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 783                                            (__v32hi)_mm512_max_epi16(__A, __B),
 784                                            (__v32hi)__W);
 785}
 786
 787static __inline__ __m512i __DEFAULT_FN_ATTRS512
 788_mm512_max_epu8 (__m512i __A, __m512i __B)
 789{
 790  return (__m512i)__builtin_elementwise_max((__v64qu)__A, (__v64qu)__B);
 791}
 792
 793static __inline__ __m512i __DEFAULT_FN_ATTRS512
 794_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
 795{
 796  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 797                                             (__v64qi)_mm512_max_epu8(__A, __B),
 798                                             (__v64qi)_mm512_setzero_si512());
 799}
 800
 801static __inline__ __m512i __DEFAULT_FN_ATTRS512
 802_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
 803{
 804  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 805                                             (__v64qi)_mm512_max_epu8(__A, __B),
 806                                             (__v64qi)__W);
 807}
 808
 809static __inline__ __m512i __DEFAULT_FN_ATTRS512
 810_mm512_max_epu16 (__m512i __A, __m512i __B)
 811{
 812  return (__m512i)__builtin_elementwise_max((__v32hu)__A, (__v32hu)__B);
 813}
 814
 815static __inline__ __m512i __DEFAULT_FN_ATTRS512
 816_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
 817{
 818  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 819                                            (__v32hi)_mm512_max_epu16(__A, __B),
 820                                            (__v32hi)_mm512_setzero_si512());
 821}
 822
 823static __inline__ __m512i __DEFAULT_FN_ATTRS512
 824_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
 825{
 826  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 827                                            (__v32hi)_mm512_max_epu16(__A, __B),
 828                                            (__v32hi)__W);
 829}
 830
 831static __inline__ __m512i __DEFAULT_FN_ATTRS512
 832_mm512_min_epi8 (__m512i __A, __m512i __B)
 833{
 834  return (__m512i)__builtin_elementwise_min((__v64qs) __A, (__v64qs) __B);
 835}
 836
 837static __inline__ __m512i __DEFAULT_FN_ATTRS512
 838_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
 839{
 840  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 841                                             (__v64qi)_mm512_min_epi8(__A, __B),
 842                                             (__v64qi)_mm512_setzero_si512());
 843}
 844
 845static __inline__ __m512i __DEFAULT_FN_ATTRS512
 846_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
 847{
 848  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 849                                             (__v64qi)_mm512_min_epi8(__A, __B),
 850                                             (__v64qi)__W);
 851}
 852
 853static __inline__ __m512i __DEFAULT_FN_ATTRS512
 854_mm512_min_epi16 (__m512i __A, __m512i __B)
 855{
 856  return (__m512i)__builtin_elementwise_min((__v32hi) __A, (__v32hi) __B);
 857}
 858
 859static __inline__ __m512i __DEFAULT_FN_ATTRS512
 860_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
 861{
 862  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 863                                            (__v32hi)_mm512_min_epi16(__A, __B),
 864                                            (__v32hi)_mm512_setzero_si512());
 865}
 866
 867static __inline__ __m512i __DEFAULT_FN_ATTRS512
 868_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
 869{
 870  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 871                                            (__v32hi)_mm512_min_epi16(__A, __B),
 872                                            (__v32hi)__W);
 873}
 874
 875static __inline__ __m512i __DEFAULT_FN_ATTRS512
 876_mm512_min_epu8 (__m512i __A, __m512i __B)
 877{
 878  return (__m512i)__builtin_elementwise_min((__v64qu)__A, (__v64qu)__B);
 879}
 880
 881static __inline__ __m512i __DEFAULT_FN_ATTRS512
 882_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
 883{
 884  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 885                                             (__v64qi)_mm512_min_epu8(__A, __B),
 886                                             (__v64qi)_mm512_setzero_si512());
 887}
 888
 889static __inline__ __m512i __DEFAULT_FN_ATTRS512
 890_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A, __m512i __B)
 891{
 892  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M,
 893                                             (__v64qi)_mm512_min_epu8(__A, __B),
 894                                             (__v64qi)__W);
 895}
 896
 897static __inline__ __m512i __DEFAULT_FN_ATTRS512
 898_mm512_min_epu16 (__m512i __A, __m512i __B)
 899{
 900  return (__m512i)__builtin_elementwise_min((__v32hu)__A, (__v32hu)__B);
 901}
 902
 903static __inline__ __m512i __DEFAULT_FN_ATTRS512
 904_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
 905{
 906  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 907                                            (__v32hi)_mm512_min_epu16(__A, __B),
 908                                            (__v32hi)_mm512_setzero_si512());
 909}
 910
 911static __inline__ __m512i __DEFAULT_FN_ATTRS512
 912_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A, __m512i __B)
 913{
 914  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
 915                                            (__v32hi)_mm512_min_epu16(__A, __B),
 916                                            (__v32hi)__W);
 917}
 918
 919static __inline__ __m512i __DEFAULT_FN_ATTRS512
 920_mm512_shuffle_epi8(__m512i __A, __m512i __B)
 921{
 922  return (__m512i)__builtin_ia32_pshufb512((__v64qi)__A,(__v64qi)__B);
 923}
 924
 925static __inline__ __m512i __DEFAULT_FN_ATTRS512
 926_mm512_mask_shuffle_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
 927{
 928  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 929                                         (__v64qi)_mm512_shuffle_epi8(__A, __B),
 930                                         (__v64qi)__W);
 931}
 932
 933static __inline__ __m512i __DEFAULT_FN_ATTRS512
 934_mm512_maskz_shuffle_epi8(__mmask64 __U, __m512i __A, __m512i __B)
 935{
 936  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 937                                         (__v64qi)_mm512_shuffle_epi8(__A, __B),
 938                                         (__v64qi)_mm512_setzero_si512());
 939}
 940
 941static __inline__ __m512i __DEFAULT_FN_ATTRS512
 942_mm512_subs_epi8 (__m512i __A, __m512i __B)
 943{
 944  return (__m512i)__builtin_elementwise_sub_sat((__v64qs)__A, (__v64qs)__B);
 945}
 946
 947static __inline__ __m512i __DEFAULT_FN_ATTRS512
 948_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
 949{
 950  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 951                                        (__v64qi)_mm512_subs_epi8(__A, __B),
 952                                        (__v64qi)__W);
 953}
 954
 955static __inline__ __m512i __DEFAULT_FN_ATTRS512
 956_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
 957{
 958  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 959                                        (__v64qi)_mm512_subs_epi8(__A, __B),
 960                                        (__v64qi)_mm512_setzero_si512());
 961}
 962
 963static __inline__ __m512i __DEFAULT_FN_ATTRS512
 964_mm512_subs_epi16 (__m512i __A, __m512i __B)
 965{
 966  return (__m512i)__builtin_elementwise_sub_sat((__v32hi)__A, (__v32hi)__B);
 967}
 968
 969static __inline__ __m512i __DEFAULT_FN_ATTRS512
 970_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
 971{
 972  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 973                                        (__v32hi)_mm512_subs_epi16(__A, __B),
 974                                        (__v32hi)__W);
 975}
 976
 977static __inline__ __m512i __DEFAULT_FN_ATTRS512
 978_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
 979{
 980  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
 981                                        (__v32hi)_mm512_subs_epi16(__A, __B),
 982                                        (__v32hi)_mm512_setzero_si512());
 983}
 984
 985static __inline__ __m512i __DEFAULT_FN_ATTRS512
 986_mm512_subs_epu8 (__m512i __A, __m512i __B)
 987{
 988  return (__m512i)__builtin_elementwise_sub_sat((__v64qu) __A, (__v64qu) __B);
 989}
 990
 991static __inline__ __m512i __DEFAULT_FN_ATTRS512
 992_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B)
 993{
 994  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
 995                                        (__v64qi)_mm512_subs_epu8(__A, __B),
 996                                        (__v64qi)__W);
 997}
 998
 999static __inline__ __m512i __DEFAULT_FN_ATTRS512
1000_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1001{
1002  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1003                                        (__v64qi)_mm512_subs_epu8(__A, __B),
1004                                        (__v64qi)_mm512_setzero_si512());
1005}
1006
1007static __inline__ __m512i __DEFAULT_FN_ATTRS512
1008_mm512_subs_epu16 (__m512i __A, __m512i __B)
1009{
1010  return (__m512i)__builtin_elementwise_sub_sat((__v32hu) __A, (__v32hu) __B);
1011}
1012
1013static __inline__ __m512i __DEFAULT_FN_ATTRS512
1014_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1015{
1016  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1017                                        (__v32hi)_mm512_subs_epu16(__A, __B),
1018                                        (__v32hi)__W);
1019}
1020
1021static __inline__ __m512i __DEFAULT_FN_ATTRS512
1022_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1023{
1024  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1025                                        (__v32hi)_mm512_subs_epu16(__A, __B),
1026                                        (__v32hi)_mm512_setzero_si512());
1027}
1028
1029static __inline__ __m512i __DEFAULT_FN_ATTRS512
1030_mm512_permutex2var_epi16(__m512i __A, __m512i __I, __m512i __B)
1031{
1032  return (__m512i)__builtin_ia32_vpermi2varhi512((__v32hi)__A, (__v32hi)__I,
1033                                                 (__v32hi)__B);
1034}
1035
1036static __inline__ __m512i __DEFAULT_FN_ATTRS512
1037_mm512_mask_permutex2var_epi16(__m512i __A, __mmask32 __U, __m512i __I,
1038                               __m512i __B)
1039{
1040  return (__m512i)__builtin_ia32_selectw_512(__U,
1041                              (__v32hi)_mm512_permutex2var_epi16(__A, __I, __B),
1042                              (__v32hi)__A);
1043}
1044
1045static __inline__ __m512i __DEFAULT_FN_ATTRS512
1046_mm512_mask2_permutex2var_epi16(__m512i __A, __m512i __I, __mmask32 __U,
1047                                __m512i __B)
1048{
1049  return (__m512i)__builtin_ia32_selectw_512(__U,
1050                              (__v32hi)_mm512_permutex2var_epi16(__A, __I, __B),
1051                              (__v32hi)__I);
1052}
1053
1054static __inline__ __m512i __DEFAULT_FN_ATTRS512
1055_mm512_maskz_permutex2var_epi16(__mmask32 __U, __m512i __A, __m512i __I,
1056                                __m512i __B)
1057{
1058  return (__m512i)__builtin_ia32_selectw_512(__U,
1059                              (__v32hi)_mm512_permutex2var_epi16(__A, __I, __B),
1060                              (__v32hi)_mm512_setzero_si512());
1061}
1062
1063static __inline__ __m512i __DEFAULT_FN_ATTRS512
1064_mm512_mulhrs_epi16(__m512i __A, __m512i __B)
1065{
1066  return (__m512i)__builtin_ia32_pmulhrsw512((__v32hi)__A, (__v32hi)__B);
1067}
1068
1069static __inline__ __m512i __DEFAULT_FN_ATTRS512
1070_mm512_mask_mulhrs_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1071{
1072  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1073                                         (__v32hi)_mm512_mulhrs_epi16(__A, __B),
1074                                         (__v32hi)__W);
1075}
1076
1077static __inline__ __m512i __DEFAULT_FN_ATTRS512
1078_mm512_maskz_mulhrs_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1079{
1080  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1081                                         (__v32hi)_mm512_mulhrs_epi16(__A, __B),
1082                                         (__v32hi)_mm512_setzero_si512());
1083}
1084
1085static __inline__ __m512i __DEFAULT_FN_ATTRS512
1086_mm512_mulhi_epi16(__m512i __A, __m512i __B)
1087{
1088  return (__m512i)__builtin_ia32_pmulhw512((__v32hi) __A, (__v32hi) __B);
1089}
1090
1091static __inline__ __m512i __DEFAULT_FN_ATTRS512
1092_mm512_mask_mulhi_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1093       __m512i __B)
1094{
1095  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1096                                          (__v32hi)_mm512_mulhi_epi16(__A, __B),
1097                                          (__v32hi)__W);
1098}
1099
1100static __inline__ __m512i __DEFAULT_FN_ATTRS512
1101_mm512_maskz_mulhi_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1102{
1103  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1104                                          (__v32hi)_mm512_mulhi_epi16(__A, __B),
1105                                          (__v32hi)_mm512_setzero_si512());
1106}
1107
1108static __inline__ __m512i __DEFAULT_FN_ATTRS512
1109_mm512_mulhi_epu16(__m512i __A, __m512i __B)
1110{
1111  return (__m512i)__builtin_ia32_pmulhuw512((__v32hi) __A, (__v32hi) __B);
1112}
1113
1114static __inline__ __m512i __DEFAULT_FN_ATTRS512
1115_mm512_mask_mulhi_epu16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1116{
1117  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1118                                          (__v32hi)_mm512_mulhi_epu16(__A, __B),
1119                                          (__v32hi)__W);
1120}
1121
1122static __inline__ __m512i __DEFAULT_FN_ATTRS512
1123_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1124{
1125  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1126                                          (__v32hi)_mm512_mulhi_epu16(__A, __B),
1127                                          (__v32hi)_mm512_setzero_si512());
1128}
1129
1130static __inline__ __m512i __DEFAULT_FN_ATTRS512
1131_mm512_maddubs_epi16(__m512i __X, __m512i __Y) {
1132  return (__m512i)__builtin_ia32_pmaddubsw512((__v64qi)__X, (__v64qi)__Y);
1133}
1134
1135static __inline__ __m512i __DEFAULT_FN_ATTRS512
1136_mm512_mask_maddubs_epi16(__m512i __W, __mmask32 __U, __m512i __X,
1137                          __m512i __Y) {
1138  return (__m512i)__builtin_ia32_selectw_512((__mmask32) __U,
1139                                        (__v32hi)_mm512_maddubs_epi16(__X, __Y),
1140                                        (__v32hi)__W);
1141}
1142
1143static __inline__ __m512i __DEFAULT_FN_ATTRS512
1144_mm512_maskz_maddubs_epi16(__mmask32 __U, __m512i __X, __m512i __Y) {
1145  return (__m512i)__builtin_ia32_selectw_512((__mmask32) __U,
1146                                        (__v32hi)_mm512_maddubs_epi16(__X, __Y),
1147                                        (__v32hi)_mm512_setzero_si512());
1148}
1149
1150static __inline__ __m512i __DEFAULT_FN_ATTRS512
1151_mm512_madd_epi16(__m512i __A, __m512i __B) {
1152  return (__m512i)__builtin_ia32_pmaddwd512((__v32hi)__A, (__v32hi)__B);
1153}
1154
1155static __inline__ __m512i __DEFAULT_FN_ATTRS512
1156_mm512_mask_madd_epi16(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) {
1157  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
1158                                           (__v16si)_mm512_madd_epi16(__A, __B),
1159                                           (__v16si)__W);
1160}
1161
1162static __inline__ __m512i __DEFAULT_FN_ATTRS512
1163_mm512_maskz_madd_epi16(__mmask16 __U, __m512i __A, __m512i __B) {
1164  return (__m512i)__builtin_ia32_selectd_512((__mmask16)__U,
1165                                           (__v16si)_mm512_madd_epi16(__A, __B),
1166                                           (__v16si)_mm512_setzero_si512());
1167}
1168
1169static __inline__ __m256i __DEFAULT_FN_ATTRS512
1170_mm512_cvtsepi16_epi8 (__m512i __A) {
1171  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1172               (__v32qi)_mm256_setzero_si256(),
1173               (__mmask32) -1);
1174}
1175
1176static __inline__ __m256i __DEFAULT_FN_ATTRS512
1177_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1178  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1179               (__v32qi)__O,
1180               __M);
1181}
1182
1183static __inline__ __m256i __DEFAULT_FN_ATTRS512
1184_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1185  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1186               (__v32qi) _mm256_setzero_si256(),
1187               __M);
1188}
1189
1190static __inline__ __m256i __DEFAULT_FN_ATTRS512
1191_mm512_cvtusepi16_epi8 (__m512i __A) {
1192  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1193                (__v32qi) _mm256_setzero_si256(),
1194                (__mmask32) -1);
1195}
1196
1197static __inline__ __m256i __DEFAULT_FN_ATTRS512
1198_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1199  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1200                (__v32qi) __O,
1201                __M);
1202}
1203
1204static __inline__ __m256i __DEFAULT_FN_ATTRS512
1205_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1206  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1207                (__v32qi) _mm256_setzero_si256(),
1208                __M);
1209}
1210
1211static __inline__ __m256i __DEFAULT_FN_ATTRS512
1212_mm512_cvtepi16_epi8 (__m512i __A) {
1213  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1214              (__v32qi) _mm256_undefined_si256(),
1215              (__mmask32) -1);
1216}
1217
1218static __inline__ __m256i __DEFAULT_FN_ATTRS512
1219_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1220  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1221              (__v32qi) __O,
1222              __M);
1223}
1224
1225static __inline__ __m256i __DEFAULT_FN_ATTRS512
1226_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1227  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1228              (__v32qi) _mm256_setzero_si256(),
1229              __M);
1230}
1231
1232static __inline__ void __DEFAULT_FN_ATTRS512
1233_mm512_mask_cvtepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1234{
1235  __builtin_ia32_pmovwb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1236}
1237
1238static __inline__ void __DEFAULT_FN_ATTRS512
1239_mm512_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1240{
1241  __builtin_ia32_pmovswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1242}
1243
1244static __inline__ void __DEFAULT_FN_ATTRS512
1245_mm512_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask32 __M, __m512i __A)
1246{
1247  __builtin_ia32_pmovuswb512mem_mask ((__v32qi *) __P, (__v32hi) __A, __M);
1248}
1249
1250static __inline__ __m512i __DEFAULT_FN_ATTRS512
1251_mm512_unpackhi_epi8(__m512i __A, __m512i __B) {
1252  return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1253                                          8,  64+8,   9, 64+9,
1254                                          10, 64+10, 11, 64+11,
1255                                          12, 64+12, 13, 64+13,
1256                                          14, 64+14, 15, 64+15,
1257                                          24, 64+24, 25, 64+25,
1258                                          26, 64+26, 27, 64+27,
1259                                          28, 64+28, 29, 64+29,
1260                                          30, 64+30, 31, 64+31,
1261                                          40, 64+40, 41, 64+41,
1262                                          42, 64+42, 43, 64+43,
1263                                          44, 64+44, 45, 64+45,
1264                                          46, 64+46, 47, 64+47,
1265                                          56, 64+56, 57, 64+57,
1266                                          58, 64+58, 59, 64+59,
1267                                          60, 64+60, 61, 64+61,
1268                                          62, 64+62, 63, 64+63);
1269}
1270
1271static __inline__ __m512i __DEFAULT_FN_ATTRS512
1272_mm512_mask_unpackhi_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1273  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1274                                        (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1275                                        (__v64qi)__W);
1276}
1277
1278static __inline__ __m512i __DEFAULT_FN_ATTRS512
1279_mm512_maskz_unpackhi_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1280  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1281                                        (__v64qi)_mm512_unpackhi_epi8(__A, __B),
1282                                        (__v64qi)_mm512_setzero_si512());
1283}
1284
1285static __inline__ __m512i __DEFAULT_FN_ATTRS512
1286_mm512_unpackhi_epi16(__m512i __A, __m512i __B) {
1287  return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1288                                          4,  32+4,   5, 32+5,
1289                                          6,  32+6,   7, 32+7,
1290                                          12, 32+12, 13, 32+13,
1291                                          14, 32+14, 15, 32+15,
1292                                          20, 32+20, 21, 32+21,
1293                                          22, 32+22, 23, 32+23,
1294                                          28, 32+28, 29, 32+29,
1295                                          30, 32+30, 31, 32+31);
1296}
1297
1298static __inline__ __m512i __DEFAULT_FN_ATTRS512
1299_mm512_mask_unpackhi_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1300  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1301                                       (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1302                                       (__v32hi)__W);
1303}
1304
1305static __inline__ __m512i __DEFAULT_FN_ATTRS512
1306_mm512_maskz_unpackhi_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1307  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1308                                       (__v32hi)_mm512_unpackhi_epi16(__A, __B),
1309                                       (__v32hi)_mm512_setzero_si512());
1310}
1311
1312static __inline__ __m512i __DEFAULT_FN_ATTRS512
1313_mm512_unpacklo_epi8(__m512i __A, __m512i __B) {
1314  return (__m512i)__builtin_shufflevector((__v64qi)__A, (__v64qi)__B,
1315                                          0,  64+0,   1, 64+1,
1316                                          2,  64+2,   3, 64+3,
1317                                          4,  64+4,   5, 64+5,
1318                                          6,  64+6,   7, 64+7,
1319                                          16, 64+16, 17, 64+17,
1320                                          18, 64+18, 19, 64+19,
1321                                          20, 64+20, 21, 64+21,
1322                                          22, 64+22, 23, 64+23,
1323                                          32, 64+32, 33, 64+33,
1324                                          34, 64+34, 35, 64+35,
1325                                          36, 64+36, 37, 64+37,
1326                                          38, 64+38, 39, 64+39,
1327                                          48, 64+48, 49, 64+49,
1328                                          50, 64+50, 51, 64+51,
1329                                          52, 64+52, 53, 64+53,
1330                                          54, 64+54, 55, 64+55);
1331}
1332
1333static __inline__ __m512i __DEFAULT_FN_ATTRS512
1334_mm512_mask_unpacklo_epi8(__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
1335  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1336                                        (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1337                                        (__v64qi)__W);
1338}
1339
1340static __inline__ __m512i __DEFAULT_FN_ATTRS512
1341_mm512_maskz_unpacklo_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
1342  return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
1343                                        (__v64qi)_mm512_unpacklo_epi8(__A, __B),
1344                                        (__v64qi)_mm512_setzero_si512());
1345}
1346
1347static __inline__ __m512i __DEFAULT_FN_ATTRS512
1348_mm512_unpacklo_epi16(__m512i __A, __m512i __B) {
1349  return (__m512i)__builtin_shufflevector((__v32hi)__A, (__v32hi)__B,
1350                                          0,  32+0,   1, 32+1,
1351                                          2,  32+2,   3, 32+3,
1352                                          8,  32+8,   9, 32+9,
1353                                          10, 32+10, 11, 32+11,
1354                                          16, 32+16, 17, 32+17,
1355                                          18, 32+18, 19, 32+19,
1356                                          24, 32+24, 25, 32+25,
1357                                          26, 32+26, 27, 32+27);
1358}
1359
1360static __inline__ __m512i __DEFAULT_FN_ATTRS512
1361_mm512_mask_unpacklo_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
1362  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1363                                       (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1364                                       (__v32hi)__W);
1365}
1366
1367static __inline__ __m512i __DEFAULT_FN_ATTRS512
1368_mm512_maskz_unpacklo_epi16(__mmask32 __U, __m512i __A, __m512i __B) {
1369  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1370                                       (__v32hi)_mm512_unpacklo_epi16(__A, __B),
1371                                       (__v32hi)_mm512_setzero_si512());
1372}
1373
1374static __inline__ __m512i __DEFAULT_FN_ATTRS512
1375_mm512_cvtepi8_epi16(__m256i __A)
1376{
1377  /* This function always performs a signed extension, but __v32qi is a char
1378     which may be signed or unsigned, so use __v32qs. */
1379  return (__m512i)__builtin_convertvector((__v32qs)__A, __v32hi);
1380}
1381
1382static __inline__ __m512i __DEFAULT_FN_ATTRS512
1383_mm512_mask_cvtepi8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1384{
1385  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1386                                             (__v32hi)_mm512_cvtepi8_epi16(__A),
1387                                             (__v32hi)__W);
1388}
1389
1390static __inline__ __m512i __DEFAULT_FN_ATTRS512
1391_mm512_maskz_cvtepi8_epi16(__mmask32 __U, __m256i __A)
1392{
1393  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1394                                             (__v32hi)_mm512_cvtepi8_epi16(__A),
1395                                             (__v32hi)_mm512_setzero_si512());
1396}
1397
1398static __inline__ __m512i __DEFAULT_FN_ATTRS512
1399_mm512_cvtepu8_epi16(__m256i __A)
1400{
1401  return (__m512i)__builtin_convertvector((__v32qu)__A, __v32hi);
1402}
1403
1404static __inline__ __m512i __DEFAULT_FN_ATTRS512
1405_mm512_mask_cvtepu8_epi16(__m512i __W, __mmask32 __U, __m256i __A)
1406{
1407  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1408                                             (__v32hi)_mm512_cvtepu8_epi16(__A),
1409                                             (__v32hi)__W);
1410}
1411
1412static __inline__ __m512i __DEFAULT_FN_ATTRS512
1413_mm512_maskz_cvtepu8_epi16(__mmask32 __U, __m256i __A)
1414{
1415  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1416                                             (__v32hi)_mm512_cvtepu8_epi16(__A),
1417                                             (__v32hi)_mm512_setzero_si512());
1418}
1419
1420
1421#define _mm512_shufflehi_epi16(A, imm) \
1422  ((__m512i)__builtin_ia32_pshufhw512((__v32hi)(__m512i)(A), (int)(imm)))
1423
1424#define _mm512_mask_shufflehi_epi16(W, U, A, imm) \
1425  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1426                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1427                                                                       (imm)), \
1428                                       (__v32hi)(__m512i)(W)))
1429
1430#define _mm512_maskz_shufflehi_epi16(U, A, imm) \
1431  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1432                                       (__v32hi)_mm512_shufflehi_epi16((A), \
1433                                                                       (imm)), \
1434                                       (__v32hi)_mm512_setzero_si512()))
1435
1436#define _mm512_shufflelo_epi16(A, imm) \
1437  ((__m512i)__builtin_ia32_pshuflw512((__v32hi)(__m512i)(A), (int)(imm)))
1438
1439
1440#define _mm512_mask_shufflelo_epi16(W, U, A, imm) \
1441  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1442                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1443                                                                       (imm)), \
1444                                       (__v32hi)(__m512i)(W)))
1445
1446
1447#define _mm512_maskz_shufflelo_epi16(U, A, imm) \
1448  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1449                                       (__v32hi)_mm512_shufflelo_epi16((A), \
1450                                                                       (imm)), \
1451                                       (__v32hi)_mm512_setzero_si512()))
1452
1453static __inline__ __m512i __DEFAULT_FN_ATTRS512
1454_mm512_sllv_epi16(__m512i __A, __m512i __B)
1455{
1456  return (__m512i)__builtin_ia32_psllv32hi((__v32hi) __A, (__v32hi) __B);
1457}
1458
1459static __inline__ __m512i __DEFAULT_FN_ATTRS512
1460_mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1461{
1462  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1463                                           (__v32hi)_mm512_sllv_epi16(__A, __B),
1464                                           (__v32hi)__W);
1465}
1466
1467static __inline__ __m512i __DEFAULT_FN_ATTRS512
1468_mm512_maskz_sllv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1469{
1470  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1471                                           (__v32hi)_mm512_sllv_epi16(__A, __B),
1472                                           (__v32hi)_mm512_setzero_si512());
1473}
1474
1475static __inline__ __m512i __DEFAULT_FN_ATTRS512
1476_mm512_sll_epi16(__m512i __A, __m128i __B)
1477{
1478  return (__m512i)__builtin_ia32_psllw512((__v32hi) __A, (__v8hi) __B);
1479}
1480
1481static __inline__ __m512i __DEFAULT_FN_ATTRS512
1482_mm512_mask_sll_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1483{
1484  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1485                                          (__v32hi)_mm512_sll_epi16(__A, __B),
1486                                          (__v32hi)__W);
1487}
1488
1489static __inline__ __m512i __DEFAULT_FN_ATTRS512
1490_mm512_maskz_sll_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1491{
1492  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1493                                          (__v32hi)_mm512_sll_epi16(__A, __B),
1494                                          (__v32hi)_mm512_setzero_si512());
1495}
1496
1497static __inline__ __m512i __DEFAULT_FN_ATTRS512
1498_mm512_slli_epi16(__m512i __A, unsigned int __B)
1499{
1500  return (__m512i)__builtin_ia32_psllwi512((__v32hi)__A, (int)__B);
1501}
1502
1503static __inline__ __m512i __DEFAULT_FN_ATTRS512
1504_mm512_mask_slli_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1505                       unsigned int __B)
1506{
1507  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1508                                         (__v32hi)_mm512_slli_epi16(__A, __B),
1509                                         (__v32hi)__W);
1510}
1511
1512static __inline__ __m512i __DEFAULT_FN_ATTRS512
1513_mm512_maskz_slli_epi16(__mmask32 __U, __m512i __A, unsigned int __B)
1514{
1515  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1516                                         (__v32hi)_mm512_slli_epi16(__A, __B),
1517                                         (__v32hi)_mm512_setzero_si512());
1518}
1519
1520#define _mm512_bslli_epi128(a, imm) \
1521  ((__m512i)__builtin_ia32_pslldqi512_byteshift((__v8di)(__m512i)(a), (int)(imm)))
1522
1523static __inline__ __m512i __DEFAULT_FN_ATTRS512
1524_mm512_srlv_epi16(__m512i __A, __m512i __B)
1525{
1526  return (__m512i)__builtin_ia32_psrlv32hi((__v32hi)__A, (__v32hi)__B);
1527}
1528
1529static __inline__ __m512i __DEFAULT_FN_ATTRS512
1530_mm512_mask_srlv_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1531{
1532  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1533                                           (__v32hi)_mm512_srlv_epi16(__A, __B),
1534                                           (__v32hi)__W);
1535}
1536
1537static __inline__ __m512i __DEFAULT_FN_ATTRS512
1538_mm512_maskz_srlv_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1539{
1540  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1541                                           (__v32hi)_mm512_srlv_epi16(__A, __B),
1542                                           (__v32hi)_mm512_setzero_si512());
1543}
1544
1545static __inline__ __m512i __DEFAULT_FN_ATTRS512
1546_mm512_srav_epi16(__m512i __A, __m512i __B)
1547{
1548  return (__m512i)__builtin_ia32_psrav32hi((__v32hi)__A, (__v32hi)__B);
1549}
1550
1551static __inline__ __m512i __DEFAULT_FN_ATTRS512
1552_mm512_mask_srav_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m512i __B)
1553{
1554  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1555                                           (__v32hi)_mm512_srav_epi16(__A, __B),
1556                                           (__v32hi)__W);
1557}
1558
1559static __inline__ __m512i __DEFAULT_FN_ATTRS512
1560_mm512_maskz_srav_epi16(__mmask32 __U, __m512i __A, __m512i __B)
1561{
1562  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1563                                           (__v32hi)_mm512_srav_epi16(__A, __B),
1564                                           (__v32hi)_mm512_setzero_si512());
1565}
1566
1567static __inline__ __m512i __DEFAULT_FN_ATTRS512
1568_mm512_sra_epi16(__m512i __A, __m128i __B)
1569{
1570  return (__m512i)__builtin_ia32_psraw512((__v32hi) __A, (__v8hi) __B);
1571}
1572
1573static __inline__ __m512i __DEFAULT_FN_ATTRS512
1574_mm512_mask_sra_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1575{
1576  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1577                                          (__v32hi)_mm512_sra_epi16(__A, __B),
1578                                          (__v32hi)__W);
1579}
1580
1581static __inline__ __m512i __DEFAULT_FN_ATTRS512
1582_mm512_maskz_sra_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1583{
1584  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1585                                          (__v32hi)_mm512_sra_epi16(__A, __B),
1586                                          (__v32hi)_mm512_setzero_si512());
1587}
1588
1589static __inline__ __m512i __DEFAULT_FN_ATTRS512
1590_mm512_srai_epi16(__m512i __A, unsigned int __B)
1591{
1592  return (__m512i)__builtin_ia32_psrawi512((__v32hi)__A, (int)__B);
1593}
1594
1595static __inline__ __m512i __DEFAULT_FN_ATTRS512
1596_mm512_mask_srai_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1597                       unsigned int __B)
1598{
1599  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1600                                         (__v32hi)_mm512_srai_epi16(__A, __B),
1601                                         (__v32hi)__W);
1602}
1603
1604static __inline__ __m512i __DEFAULT_FN_ATTRS512
1605_mm512_maskz_srai_epi16(__mmask32 __U, __m512i __A, unsigned int __B)
1606{
1607  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1608                                         (__v32hi)_mm512_srai_epi16(__A, __B),
1609                                         (__v32hi)_mm512_setzero_si512());
1610}
1611
1612static __inline__ __m512i __DEFAULT_FN_ATTRS512
1613_mm512_srl_epi16(__m512i __A, __m128i __B)
1614{
1615  return (__m512i)__builtin_ia32_psrlw512((__v32hi) __A, (__v8hi) __B);
1616}
1617
1618static __inline__ __m512i __DEFAULT_FN_ATTRS512
1619_mm512_mask_srl_epi16(__m512i __W, __mmask32 __U, __m512i __A, __m128i __B)
1620{
1621  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1622                                          (__v32hi)_mm512_srl_epi16(__A, __B),
1623                                          (__v32hi)__W);
1624}
1625
1626static __inline__ __m512i __DEFAULT_FN_ATTRS512
1627_mm512_maskz_srl_epi16(__mmask32 __U, __m512i __A, __m128i __B)
1628{
1629  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1630                                          (__v32hi)_mm512_srl_epi16(__A, __B),
1631                                          (__v32hi)_mm512_setzero_si512());
1632}
1633
1634static __inline__ __m512i __DEFAULT_FN_ATTRS512
1635_mm512_srli_epi16(__m512i __A, unsigned int __B)
1636{
1637  return (__m512i)__builtin_ia32_psrlwi512((__v32hi)__A, (int)__B);
1638}
1639
1640static __inline__ __m512i __DEFAULT_FN_ATTRS512
1641_mm512_mask_srli_epi16(__m512i __W, __mmask32 __U, __m512i __A,
1642                       unsigned int __B)
1643{
1644  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1645                                         (__v32hi)_mm512_srli_epi16(__A, __B),
1646                                         (__v32hi)__W);
1647}
1648
1649static __inline__ __m512i __DEFAULT_FN_ATTRS512
1650_mm512_maskz_srli_epi16(__mmask32 __U, __m512i __A, int __B)
1651{
1652  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__U,
1653                                         (__v32hi)_mm512_srli_epi16(__A, (unsigned int)__B),
1654                                         (__v32hi)_mm512_setzero_si512());
1655}
1656
1657#define _mm512_bsrli_epi128(a, imm) \
1658  ((__m512i)__builtin_ia32_psrldqi512_byteshift((__v8di)(__m512i)(a), (int)(imm)))
1659
1660static __inline__ __m512i __DEFAULT_FN_ATTRS512
1661_mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
1662{
1663  return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
1664                (__v32hi) __A,
1665                (__v32hi) __W);
1666}
1667
1668static __inline__ __m512i __DEFAULT_FN_ATTRS512
1669_mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
1670{
1671  return (__m512i) __builtin_ia32_selectw_512 ((__mmask32) __U,
1672                (__v32hi) __A,
1673                (__v32hi) _mm512_setzero_si512 ());
1674}
1675
1676static __inline__ __m512i __DEFAULT_FN_ATTRS512
1677_mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
1678{
1679  return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
1680                (__v64qi) __A,
1681                (__v64qi) __W);
1682}
1683
1684static __inline__ __m512i __DEFAULT_FN_ATTRS512
1685_mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
1686{
1687  return (__m512i) __builtin_ia32_selectb_512 ((__mmask64) __U,
1688                (__v64qi) __A,
1689                (__v64qi) _mm512_setzero_si512 ());
1690}
1691
1692static __inline__ __m512i __DEFAULT_FN_ATTRS512
1693_mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
1694{
1695  return (__m512i) __builtin_ia32_selectb_512(__M,
1696                                              (__v64qi)_mm512_set1_epi8(__A),
1697                                              (__v64qi) __O);
1698}
1699
1700static __inline__ __m512i __DEFAULT_FN_ATTRS512
1701_mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
1702{
1703  return (__m512i) __builtin_ia32_selectb_512(__M,
1704                                              (__v64qi) _mm512_set1_epi8(__A),
1705                                              (__v64qi) _mm512_setzero_si512());
1706}
1707
1708static __inline__ __mmask64 __DEFAULT_FN_ATTRS _mm512_kunpackd(__mmask64 __A,
1709                                                               __mmask64 __B) {
1710  return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
1711                (__mmask64) __B);
1712}
1713
1714static __inline__ __mmask32 __DEFAULT_FN_ATTRS
1715_mm512_kunpackw (__mmask32 __A, __mmask32 __B)
1716{
1717  return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
1718                (__mmask32) __B);
1719}
1720
1721static __inline __m512i __DEFAULT_FN_ATTRS512
1722_mm512_loadu_epi16 (void const *__P)
1723{
1724  struct __loadu_epi16 {
1725    __m512i_u __v;
1726  } __attribute__((__packed__, __may_alias__));
1727  return ((const struct __loadu_epi16*)__P)->__v;
1728}
1729
1730static __inline__ __m512i __DEFAULT_FN_ATTRS512
1731_mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
1732{
1733  return (__m512i) __builtin_ia32_loaddquhi512_mask ((const __v32hi *) __P,
1734                 (__v32hi) __W,
1735                 (__mmask32) __U);
1736}
1737
1738static __inline__ __m512i __DEFAULT_FN_ATTRS512
1739_mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
1740{
1741  return (__m512i) __builtin_ia32_loaddquhi512_mask ((const __v32hi *) __P,
1742                 (__v32hi)
1743                 _mm512_setzero_si512 (),
1744                 (__mmask32) __U);
1745}
1746
1747static __inline __m512i __DEFAULT_FN_ATTRS512
1748_mm512_loadu_epi8 (void const *__P)
1749{
1750  struct __loadu_epi8 {
1751    __m512i_u __v;
1752  } __attribute__((__packed__, __may_alias__));
1753  return ((const struct __loadu_epi8*)__P)->__v;
1754}
1755
1756static __inline__ __m512i __DEFAULT_FN_ATTRS512
1757_mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
1758{
1759  return (__m512i) __builtin_ia32_loaddquqi512_mask ((const __v64qi *) __P,
1760                 (__v64qi) __W,
1761                 (__mmask64) __U);
1762}
1763
1764static __inline__ __m512i __DEFAULT_FN_ATTRS512
1765_mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
1766{
1767  return (__m512i) __builtin_ia32_loaddquqi512_mask ((const __v64qi *) __P,
1768                 (__v64qi)
1769                 _mm512_setzero_si512 (),
1770                 (__mmask64) __U);
1771}
1772
1773static __inline void __DEFAULT_FN_ATTRS512
1774_mm512_storeu_epi16 (void *__P, __m512i __A)
1775{
1776  struct __storeu_epi16 {
1777    __m512i_u __v;
1778  } __attribute__((__packed__, __may_alias__));
1779  ((struct __storeu_epi16*)__P)->__v = __A;
1780}
1781
1782static __inline__ void __DEFAULT_FN_ATTRS512
1783_mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
1784{
1785  __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
1786             (__v32hi) __A,
1787             (__mmask32) __U);
1788}
1789
1790static __inline void __DEFAULT_FN_ATTRS512
1791_mm512_storeu_epi8 (void *__P, __m512i __A)
1792{
1793  struct __storeu_epi8 {
1794    __m512i_u __v;
1795  } __attribute__((__packed__, __may_alias__));
1796  ((struct __storeu_epi8*)__P)->__v = __A;
1797}
1798
1799static __inline__ void __DEFAULT_FN_ATTRS512
1800_mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
1801{
1802  __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
1803             (__v64qi) __A,
1804             (__mmask64) __U);
1805}
1806
1807static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1808_mm512_test_epi8_mask (__m512i __A, __m512i __B)
1809{
1810  return _mm512_cmpneq_epi8_mask (_mm512_and_epi32 (__A, __B),
1811                                  _mm512_setzero_si512());
1812}
1813
1814static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1815_mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1816{
1817  return _mm512_mask_cmpneq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1818                                       _mm512_setzero_si512());
1819}
1820
1821static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1822_mm512_test_epi16_mask (__m512i __A, __m512i __B)
1823{
1824  return _mm512_cmpneq_epi16_mask (_mm512_and_epi32 (__A, __B),
1825                                   _mm512_setzero_si512());
1826}
1827
1828static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1829_mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1830{
1831  return _mm512_mask_cmpneq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1832                                        _mm512_setzero_si512());
1833}
1834
1835static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1836_mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1837{
1838  return _mm512_cmpeq_epi8_mask (_mm512_and_epi32 (__A, __B), _mm512_setzero_si512());
1839}
1840
1841static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1842_mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1843{
1844  return _mm512_mask_cmpeq_epi8_mask (__U, _mm512_and_epi32 (__A, __B),
1845                                      _mm512_setzero_si512());
1846}
1847
1848static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1849_mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1850{
1851  return _mm512_cmpeq_epi16_mask (_mm512_and_epi32 (__A, __B),
1852                                  _mm512_setzero_si512());
1853}
1854
1855static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1856_mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1857{
1858  return _mm512_mask_cmpeq_epi16_mask (__U, _mm512_and_epi32 (__A, __B),
1859                                       _mm512_setzero_si512());
1860}
1861
1862static __inline__ __mmask64 __DEFAULT_FN_ATTRS512
1863_mm512_movepi8_mask (__m512i __A)
1864{
1865  return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1866}
1867
1868static __inline__ __mmask32 __DEFAULT_FN_ATTRS512
1869_mm512_movepi16_mask (__m512i __A)
1870{
1871  return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1872}
1873
1874static __inline__ __m512i __DEFAULT_FN_ATTRS512
1875_mm512_movm_epi8 (__mmask64 __A)
1876{
1877  return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1878}
1879
1880static __inline__ __m512i __DEFAULT_FN_ATTRS512
1881_mm512_movm_epi16 (__mmask32 __A)
1882{
1883  return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1884}
1885
1886static __inline__ __m512i __DEFAULT_FN_ATTRS512
1887_mm512_broadcastb_epi8 (__m128i __A)
1888{
1889  return (__m512i)__builtin_shufflevector((__v16qi) __A, (__v16qi) __A,
1890                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1891                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1892                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1893                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1894}
1895
1896static __inline__ __m512i __DEFAULT_FN_ATTRS512
1897_mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
1898{
1899  return (__m512i)__builtin_ia32_selectb_512(__M,
1900                                             (__v64qi) _mm512_broadcastb_epi8(__A),
1901                                             (__v64qi) __O);
1902}
1903
1904static __inline__ __m512i __DEFAULT_FN_ATTRS512
1905_mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
1906{
1907  return (__m512i)__builtin_ia32_selectb_512(__M,
1908                                             (__v64qi) _mm512_broadcastb_epi8(__A),
1909                                             (__v64qi) _mm512_setzero_si512());
1910}
1911
1912static __inline__ __m512i __DEFAULT_FN_ATTRS512
1913_mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
1914{
1915  return (__m512i) __builtin_ia32_selectw_512(__M,
1916                                              (__v32hi) _mm512_set1_epi16(__A),
1917                                              (__v32hi) __O);
1918}
1919
1920static __inline__ __m512i __DEFAULT_FN_ATTRS512
1921_mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
1922{
1923  return (__m512i) __builtin_ia32_selectw_512(__M,
1924                                              (__v32hi) _mm512_set1_epi16(__A),
1925                                              (__v32hi) _mm512_setzero_si512());
1926}
1927
1928static __inline__ __m512i __DEFAULT_FN_ATTRS512
1929_mm512_broadcastw_epi16 (__m128i __A)
1930{
1931  return (__m512i)__builtin_shufflevector((__v8hi) __A, (__v8hi) __A,
1932                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1933                                          0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
1934}
1935
1936static __inline__ __m512i __DEFAULT_FN_ATTRS512
1937_mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
1938{
1939  return (__m512i)__builtin_ia32_selectw_512(__M,
1940                                             (__v32hi) _mm512_broadcastw_epi16(__A),
1941                                             (__v32hi) __O);
1942}
1943
1944static __inline__ __m512i __DEFAULT_FN_ATTRS512
1945_mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
1946{
1947  return (__m512i)__builtin_ia32_selectw_512(__M,
1948                                             (__v32hi) _mm512_broadcastw_epi16(__A),
1949                                             (__v32hi) _mm512_setzero_si512());
1950}
1951
1952static __inline__ __m512i __DEFAULT_FN_ATTRS512
1953_mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
1954{
1955  return (__m512i)__builtin_ia32_permvarhi512((__v32hi)__B, (__v32hi)__A);
1956}
1957
1958static __inline__ __m512i __DEFAULT_FN_ATTRS512
1959_mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
1960        __m512i __B)
1961{
1962  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
1963                                    (__v32hi)_mm512_permutexvar_epi16(__A, __B),
1964                                    (__v32hi)_mm512_setzero_si512());
1965}
1966
1967static __inline__ __m512i __DEFAULT_FN_ATTRS512
1968_mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1969             __m512i __B)
1970{
1971  return (__m512i)__builtin_ia32_selectw_512((__mmask32)__M,
1972                                    (__v32hi)_mm512_permutexvar_epi16(__A, __B),
1973                                    (__v32hi)__W);
1974}
1975
1976#define _mm512_alignr_epi8(A, B, N) \
1977  ((__m512i)__builtin_ia32_palignr512((__v64qi)(__m512i)(A), \
1978                                      (__v64qi)(__m512i)(B), (int)(N)))
1979
1980#define _mm512_mask_alignr_epi8(W, U, A, B, N) \
1981  ((__m512i)__builtin_ia32_selectb_512((__mmask64)(U), \
1982                              (__v64qi)_mm512_alignr_epi8((A), (B), (int)(N)), \
1983                              (__v64qi)(__m512i)(W)))
1984
1985#define _mm512_maskz_alignr_epi8(U, A, B, N) \
1986  ((__m512i)__builtin_ia32_selectb_512((__mmask64)(U), \
1987                              (__v64qi)_mm512_alignr_epi8((A), (B), (int)(N)), \
1988                              (__v64qi)(__m512i)_mm512_setzero_si512()))
1989
1990#define _mm512_dbsad_epu8(A, B, imm) \
1991  ((__m512i)__builtin_ia32_dbpsadbw512((__v64qi)(__m512i)(A), \
1992                                       (__v64qi)(__m512i)(B), (int)(imm)))
1993
1994#define _mm512_mask_dbsad_epu8(W, U, A, B, imm) \
1995  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
1996                                  (__v32hi)_mm512_dbsad_epu8((A), (B), (imm)), \
1997                                  (__v32hi)(__m512i)(W)))
1998
1999#define _mm512_maskz_dbsad_epu8(U, A, B, imm) \
2000  ((__m512i)__builtin_ia32_selectw_512((__mmask32)(U), \
2001                                  (__v32hi)_mm512_dbsad_epu8((A), (B), (imm)), \
2002                                  (__v32hi)_mm512_setzero_si512()))
2003
2004static __inline__ __m512i __DEFAULT_FN_ATTRS512
2005_mm512_sad_epu8 (__m512i __A, __m512i __B)
2006{
2007 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
2008               (__v64qi) __B);
2009}
2010
2011#undef __DEFAULT_FN_ATTRS512
2012#undef __DEFAULT_FN_ATTRS
2013
2014#endif