(root)/
gcc-13.2.0/
gcc/
config/
i386/
avx512vlbwintrin.h
       1  /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
       2  
       3     This file is part of GCC.
       4  
       5     GCC is free software; you can redistribute it and/or modify
       6     it under the terms of the GNU General Public License as published by
       7     the Free Software Foundation; either version 3, or (at your option)
       8     any later version.
       9  
      10     GCC is distributed in the hope that it will be useful,
      11     but WITHOUT ANY WARRANTY; without even the implied warranty of
      12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13     GNU General Public License for more details.
      14  
      15     Under Section 7 of GPL version 3, you are granted additional
      16     permissions described in the GCC Runtime Library Exception, version
      17     3.1, as published by the Free Software Foundation.
      18  
      19     You should have received a copy of the GNU General Public License and
      20     a copy of the GCC Runtime Library Exception along with this program;
      21     see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      22     <http://www.gnu.org/licenses/>.  */
      23  
      24  #ifndef _IMMINTRIN_H_INCLUDED
      25  #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
      26  #endif
      27  
      28  #ifndef _AVX512VLBWINTRIN_H_INCLUDED
      29  #define _AVX512VLBWINTRIN_H_INCLUDED
      30  
      31  #if !defined(__AVX512VL__) || !defined(__AVX512BW__)
      32  #pragma GCC push_options
      33  #pragma GCC target("avx512vl,avx512bw")
      34  #define __DISABLE_AVX512VLBW__
      35  #endif /* __AVX512VLBW__ */
      36  
      37  /* Internal data types for implementing the intrinsics.  */
      38  typedef short __v16hi_u __attribute__ ((__vector_size__ (32),	\
      39  					__may_alias__, __aligned__ (1)));
      40  typedef short __v8hi_u __attribute__ ((__vector_size__ (16),	\
      41  				       __may_alias__, __aligned__ (1)));
      42  typedef char __v32qi_u __attribute__ ((__vector_size__ (32),	\
      43  				       __may_alias__, __aligned__ (1)));
      44  typedef char __v16qi_u __attribute__ ((__vector_size__ (16),	\
      45  				       __may_alias__, __aligned__ (1)));
      46  
      47  extern __inline __m256i
      48  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
      49  _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
      50  {
      51    return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
      52  						    (__v32qi) __W,
      53  						    (__mmask32) __U);
      54  }
      55  
      56  extern __inline __m256i
      57  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
      58  _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
      59  {
      60    return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
      61  						    (__v32qi)
      62  						    _mm256_setzero_si256 (),
      63  						    (__mmask32) __U);
      64  }
      65  
      66  extern __inline __m128i
      67  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
      68  _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
      69  {
      70    return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
      71  						    (__v16qi) __W,
      72  						    (__mmask16) __U);
      73  }
      74  
      75  extern __inline __m128i
      76  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
      77  _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
      78  {
      79    return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
      80  						    (__v16qi)
      81  						    _mm_setzero_si128 (),
      82  						    (__mmask16) __U);
      83  }
      84  
      85  extern __inline void
      86  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
      87  _mm256_storeu_epi8 (void *__P, __m256i __A)
      88  {
      89    *(__v32qi_u *) __P = (__v32qi_u) __A;
      90  }
      91  
      92  extern __inline void
      93  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
      94  _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
      95  {
      96    __builtin_ia32_storedquqi256_mask ((char *) __P,
      97  				     (__v32qi) __A,
      98  				     (__mmask32) __U);
      99  }
     100  
     101  extern __inline void
     102  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     103  _mm_storeu_epi8 (void *__P, __m128i __A)
     104  {
     105    *(__v16qi_u *) __P = (__v16qi_u) __A;
     106  }
     107  
     108  extern __inline void
     109  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     110  _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
     111  {
     112    __builtin_ia32_storedquqi128_mask ((char *) __P,
     113  				     (__v16qi) __A,
     114  				     (__mmask16) __U);
     115  }
     116  
     117  extern __inline __m256i
     118  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     119  _mm256_loadu_epi16 (void const *__P)
     120  {
     121    return (__m256i) (*(__v16hi_u *) __P);
     122  }
     123  
     124  extern __inline __m256i
     125  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     126  _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
     127  {
     128    return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
     129  						     (__v16hi) __W,
     130  						     (__mmask16) __U);
     131  }
     132  
     133  extern __inline __m256i
     134  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     135  _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
     136  {
     137    return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
     138  						     (__v16hi)
     139  						     _mm256_setzero_si256 (),
     140  						     (__mmask16) __U);
     141  }
     142  
     143  extern __inline __m128i
     144  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     145  _mm_loadu_epi16 (void const *__P)
     146  {
     147    return (__m128i) (*(__v8hi_u *) __P);
     148  }
     149  
     150  extern __inline __m128i
     151  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     152  _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
     153  {
     154    return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
     155  						     (__v8hi) __W,
     156  						     (__mmask8) __U);
     157  }
     158  
     159  extern __inline __m128i
     160  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     161  _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
     162  {
     163    return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
     164  						     (__v8hi)
     165  						     _mm_setzero_si128 (),
     166  						     (__mmask8) __U);
     167  }
     168  
     169  
     170  extern __inline __m256i
     171  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     172  _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
     173  {
     174    return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
     175  						    (__v16hi) __W,
     176  						    (__mmask16) __U);
     177  }
     178  
     179  extern __inline __m256i
     180  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     181  _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
     182  {
     183    return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
     184  						    (__v16hi)
     185  						    _mm256_setzero_si256 (),
     186  						    (__mmask16) __U);
     187  }
     188  
     189  extern __inline __m128i
     190  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     191  _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
     192  {
     193    return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
     194  						    (__v8hi) __W,
     195  						    (__mmask8) __U);
     196  }
     197  
     198  extern __inline __m128i
     199  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     200  _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
     201  {
     202    return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
     203  						    (__v8hi)
     204  						    _mm_setzero_si128 (),
     205  						    (__mmask8) __U);
     206  }
     207  
     208  extern __inline __m256i
     209  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     210  _mm256_loadu_epi8 (void const *__P)
     211  {
     212    return (__m256i) (*(__v32qi_u *) __P);
     213  }
     214  
     215  extern __inline __m256i
     216  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     217  _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
     218  {
     219    return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
     220  						     (__v32qi) __W,
     221  						     (__mmask32) __U);
     222  }
     223  
     224  extern __inline __m256i
     225  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     226  _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
     227  {
     228    return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
     229  						     (__v32qi)
     230  						     _mm256_setzero_si256 (),
     231  						     (__mmask32) __U);
     232  }
     233  
     234  extern __inline __m128i
     235  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     236  _mm_loadu_epi8 (void const *__P)
     237  {
     238    return (__m128i) (*(__v16qi_u *) __P);
     239  }
     240  
     241  extern __inline __m128i
     242  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     243  _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
     244  {
     245    return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
     246  						     (__v16qi) __W,
     247  						     (__mmask16) __U);
     248  }
     249  
     250  extern __inline __m128i
     251  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     252  _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
     253  {
     254    return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
     255  						     (__v16qi)
     256  						     _mm_setzero_si128 (),
     257  						     (__mmask16) __U);
     258  }
     259  
     260  extern __inline __m128i
     261  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     262  _mm256_cvtepi16_epi8 (__m256i __A)
     263  {
     264  
     265    return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
     266  						  (__v16qi)_mm_undefined_si128(),
     267  						  (__mmask16) -1);
     268  }
     269  
     270  extern __inline void
     271  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     272  _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
     273  {
     274    __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
     275  }
     276  
     277  extern __inline __m128i
     278  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     279  _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
     280  {
     281    return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
     282  						  (__v16qi) __O, __M);
     283  }
     284  
     285  extern __inline __m128i
     286  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     287  _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A)
     288  {
     289    return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
     290  						  (__v16qi)
     291  						  _mm_setzero_si128 (),
     292  						  __M);
     293  }
     294  
     295  extern __inline __m128i
     296  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     297  _mm_cvtsepi16_epi8 (__m128i __A)
     298  {
     299  
     300    return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
     301  						   (__v16qi)_mm_undefined_si128(),
     302  						   (__mmask8) -1);
     303  }
     304  
     305  extern __inline void
     306  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     307  _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
     308  {
     309    __builtin_ia32_pmovswb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
     310  }
     311  
     312  extern __inline __m128i
     313  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     314  _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
     315  {
     316    return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
     317  						   (__v16qi) __O, __M);
     318  }
     319  
     320  extern __inline __m128i
     321  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     322  _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A)
     323  {
     324    return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
     325  						   (__v16qi)
     326  						   _mm_setzero_si128 (),
     327  						   __M);
     328  }
     329  
     330  extern __inline __m128i
     331  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     332  _mm256_cvtsepi16_epi8 (__m256i __A)
     333  {
     334  
     335    return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
     336  						   (__v16qi)_mm_undefined_si128(),
     337  						   (__mmask16) -1);
     338  }
     339  
     340  extern __inline void
     341  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     342  _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
     343  {
     344    __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
     345  }
     346  
     347  extern __inline __m128i
     348  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     349  _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
     350  {
     351    return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
     352  						   (__v16qi) __O, __M);
     353  }
     354  
     355  extern __inline __m128i
     356  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     357  _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A)
     358  {
     359    return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
     360  						   (__v16qi)
     361  						   _mm_setzero_si128 (),
     362  						   __M);
     363  }
     364  
     365  extern __inline __m128i
     366  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     367  _mm_cvtusepi16_epi8 (__m128i __A)
     368  {
     369  
     370    return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
     371  						    (__v16qi)_mm_undefined_si128(),
     372  						    (__mmask8) -1);
     373  }
     374  
     375  extern __inline void
     376  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     377  _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
     378  {
     379    __builtin_ia32_pmovuswb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
     380  }
     381  
     382  extern __inline __m128i
     383  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     384  _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
     385  {
     386    return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
     387  						    (__v16qi) __O,
     388  						    __M);
     389  }
     390  
     391  extern __inline __m128i
     392  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     393  _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A)
     394  {
     395    return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
     396  						    (__v16qi)
     397  						    _mm_setzero_si128 (),
     398  						    __M);
     399  }
     400  
     401  extern __inline __m128i
     402  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     403  _mm256_cvtusepi16_epi8 (__m256i __A)
     404  {
     405  
     406    return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
     407  						    (__v16qi)_mm_undefined_si128(),
     408  						    (__mmask16) -1);
     409  }
     410  
     411  extern __inline void
     412  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     413  _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
     414  {
     415    __builtin_ia32_pmovuswb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
     416  }
     417  
     418  extern __inline __m128i
     419  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     420  _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
     421  {
     422    return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
     423  						    (__v16qi) __O,
     424  						    __M);
     425  }
     426  
     427  extern __inline __m128i
     428  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     429  _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A)
     430  {
     431    return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
     432  						    (__v16qi)
     433  						    _mm_setzero_si128 (),
     434  						    __M);
     435  }
     436  
     437  extern __inline __m256i
     438  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     439  _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
     440  {
     441    return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
     442  						       (__v32qi) __O,
     443  						       __M);
     444  }
     445  
     446  extern __inline __m256i
     447  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     448  _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
     449  {
     450    return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
     451  						       (__v32qi)
     452  						       _mm256_setzero_si256 (),
     453  						       __M);
     454  }
     455  
     456  extern __inline __m256i
     457  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     458  _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
     459  {
     460    return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
     461  							   (__v32qi) __O,
     462  							   __M);
     463  }
     464  
     465  extern __inline __m256i
     466  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     467  _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
     468  {
     469    return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
     470  							   (__v32qi)
     471  							   _mm256_setzero_si256 (),
     472  							   __M);
     473  }
     474  
     475  extern __inline __m128i
     476  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     477  _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
     478  {
     479    return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
     480  						       (__v16qi) __O,
     481  						       __M);
     482  }
     483  
     484  extern __inline __m128i
     485  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     486  _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
     487  {
     488    return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
     489  						       (__v16qi)
     490  						       _mm_setzero_si128 (),
     491  						       __M);
     492  }
     493  
     494  extern __inline __m128i
     495  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     496  _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
     497  {
     498    return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
     499  							   (__v16qi) __O,
     500  							   __M);
     501  }
     502  
     503  extern __inline __m128i
     504  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     505  _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
     506  {
     507    return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
     508  							   (__v16qi)
     509  							   _mm_setzero_si128 (),
     510  							   __M);
     511  }
     512  
     513  extern __inline __m256i
     514  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     515  _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
     516  {
     517    return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
     518  						       (__v16hi) __O,
     519  						       __M);
     520  }
     521  
     522  extern __inline __m256i
     523  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     524  _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
     525  {
     526    return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
     527  						       (__v16hi)
     528  						       _mm256_setzero_si256 (),
     529  						       __M);
     530  }
     531  
     532  extern __inline __m256i
     533  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     534  _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
     535  {
     536    return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
     537  							   (__v16hi) __O,
     538  							   __M);
     539  }
     540  
     541  extern __inline __m256i
     542  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     543  _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
     544  {
     545    return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
     546  							   (__v16hi)
     547  							   _mm256_setzero_si256 (),
     548  							   __M);
     549  }
     550  
     551  extern __inline __m128i
     552  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     553  _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
     554  {
     555    return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
     556  						       (__v8hi) __O,
     557  						       __M);
     558  }
     559  
     560  extern __inline __m128i
     561  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     562  _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
     563  {
     564    return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
     565  						       (__v8hi)
     566  						       _mm_setzero_si128 (),
     567  						       __M);
     568  }
     569  
     570  extern __inline __m128i
     571  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     572  _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
     573  {
     574    return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
     575  							   (__v8hi) __O,
     576  							   __M);
     577  }
     578  
     579  extern __inline __m128i
     580  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     581  _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
     582  {
     583    return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
     584  							   (__v8hi)
     585  							   _mm_setzero_si128 (),
     586  							   __M);
     587  }
     588  
     589  extern __inline __m256i
     590  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     591  _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
     592  {
     593    return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
     594  						     (__v16hi) __A,
     595  						     (__v16hi)
     596  						     _mm256_setzero_si256 (),
     597  						     (__mmask16) -1);
     598  }
     599  
     600  extern __inline __m256i
     601  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     602  _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
     603  				__m256i __B)
     604  {
     605    return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
     606  						     (__v16hi) __A,
     607  						     (__v16hi)
     608  						     _mm256_setzero_si256 (),
     609  						     (__mmask16) __M);
     610  }
     611  
     612  extern __inline __m256i
     613  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     614  _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
     615  			       __m256i __B)
     616  {
     617    return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
     618  						     (__v16hi) __A,
     619  						     (__v16hi) __W,
     620  						     (__mmask16) __M);
     621  }
     622  
     623  extern __inline __m128i
     624  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     625  _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
     626  {
     627    return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
     628  						     (__v8hi) __A,
     629  						     (__v8hi)
     630  						     _mm_setzero_si128 (),
     631  						     (__mmask8) -1);
     632  }
     633  
     634  extern __inline __m128i
     635  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     636  _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
     637  {
     638    return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
     639  						     (__v8hi) __A,
     640  						     (__v8hi)
     641  						     _mm_setzero_si128 (),
     642  						     (__mmask8) __M);
     643  }
     644  
     645  extern __inline __m128i
     646  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     647  _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
     648  			    __m128i __B)
     649  {
     650    return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
     651  						     (__v8hi) __A,
     652  						     (__v8hi) __W,
     653  						     (__mmask8) __M);
     654  }
     655  
     656  extern __inline __m256i
     657  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     658  _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
     659  {
     660    return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
     661  							/* idx */ ,
     662  							(__v16hi) __A,
     663  							(__v16hi) __B,
     664  							(__mmask16) -1);
     665  }
     666  
     667  extern __inline __m256i
     668  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     669  _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
     670  				__m256i __I, __m256i __B)
     671  {
     672    return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
     673  							/* idx */ ,
     674  							(__v16hi) __A,
     675  							(__v16hi) __B,
     676  							(__mmask16)
     677  							__U);
     678  }
     679  
     680  extern __inline __m256i
     681  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     682  _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
     683  				 __mmask16 __U, __m256i __B)
     684  {
     685    return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
     686  							(__v16hi) __I
     687  							/* idx */ ,
     688  							(__v16hi) __B,
     689  							(__mmask16)
     690  							__U);
     691  }
     692  
     693  extern __inline __m256i
     694  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     695  _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
     696  				 __m256i __I, __m256i __B)
     697  {
     698    return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I
     699  							 /* idx */ ,
     700  							 (__v16hi) __A,
     701  							 (__v16hi) __B,
     702  							 (__mmask16)
     703  							 __U);
     704  }
     705  
     706  extern __inline __m128i
     707  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     708  _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
     709  {
     710    return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
     711  							/* idx */ ,
     712  							(__v8hi) __A,
     713  							(__v8hi) __B,
     714  							(__mmask8) -1);
     715  }
     716  
     717  extern __inline __m128i
     718  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     719  _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
     720  			     __m128i __B)
     721  {
     722    return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
     723  							/* idx */ ,
     724  							(__v8hi) __A,
     725  							(__v8hi) __B,
     726  							(__mmask8)
     727  							__U);
     728  }
     729  
     730  extern __inline __m128i
     731  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     732  _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
     733  			      __m128i __B)
     734  {
     735    return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
     736  							(__v8hi) __I
     737  							/* idx */ ,
     738  							(__v8hi) __B,
     739  							(__mmask8)
     740  							__U);
     741  }
     742  
     743  extern __inline __m128i
     744  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     745  _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
     746  			      __m128i __B)
     747  {
     748    return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I
     749  							 /* idx */ ,
     750  							 (__v8hi) __A,
     751  							 (__v8hi) __B,
     752  							 (__mmask8)
     753  							 __U);
     754  }
     755  
     756  extern __inline __m256i
     757  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     758  _mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
     759  			   __m256i __Y)
     760  {
     761    return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
     762  						     (__v32qi) __Y,
     763  						     (__v16hi) __W,
     764  						     (__mmask16) __U);
     765  }
     766  
     767  extern __inline __m256i
     768  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     769  _mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
     770  {
     771    return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
     772  						     (__v32qi) __Y,
     773  						     (__v16hi)
     774  						     _mm256_setzero_si256 (),
     775  						     (__mmask16) __U);
     776  }
     777  
     778  extern __inline __m128i
     779  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     780  _mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
     781  			__m128i __Y)
     782  {
     783    return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
     784  						     (__v16qi) __Y,
     785  						     (__v8hi) __W,
     786  						     (__mmask8) __U);
     787  }
     788  
     789  extern __inline __m128i
     790  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     791  _mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
     792  {
     793    return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
     794  						     (__v16qi) __Y,
     795  						     (__v8hi)
     796  						     _mm_setzero_si128 (),
     797  						     (__mmask8) __U);
     798  }
     799  
     800  extern __inline __m256i
     801  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     802  _mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A,
     803  			__m256i __B)
     804  {
     805    return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
     806  						   (__v16hi) __B,
     807  						   (__v8si) __W,
     808  						   (__mmask8) __U);
     809  }
     810  
     811  extern __inline __m256i
     812  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     813  _mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B)
     814  {
     815    return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
     816  						   (__v16hi) __B,
     817  						   (__v8si)
     818  						   _mm256_setzero_si256 (),
     819  						   (__mmask8) __U);
     820  }
     821  
     822  extern __inline __m128i
     823  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     824  _mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
     825  		     __m128i __B)
     826  {
     827    return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
     828  						   (__v8hi) __B,
     829  						   (__v4si) __W,
     830  						   (__mmask8) __U);
     831  }
     832  
     833  extern __inline __m128i
     834  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     835  _mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
     836  {
     837    return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
     838  						   (__v8hi) __B,
     839  						   (__v4si)
     840  						   _mm_setzero_si128 (),
     841  						   (__mmask8) __U);
     842  }
     843  
     844  extern __inline __mmask16
     845  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     846  _mm_movepi8_mask (__m128i __A)
     847  {
     848    return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
     849  }
     850  
     851  extern __inline __mmask32
     852  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     853  _mm256_movepi8_mask (__m256i __A)
     854  {
     855    return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
     856  }
     857  
     858  extern __inline __mmask8
     859  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     860  _mm_movepi16_mask (__m128i __A)
     861  {
     862    return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
     863  }
     864  
     865  extern __inline __mmask16
     866  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     867  _mm256_movepi16_mask (__m256i __A)
     868  {
     869    return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
     870  }
     871  
     872  extern __inline __m128i
     873  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     874  _mm_movm_epi8 (__mmask16 __A)
     875  {
     876    return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
     877  }
     878  
     879  extern __inline __m256i
     880  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     881  _mm256_movm_epi8 (__mmask32 __A)
     882  {
     883    return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
     884  }
     885  
     886  extern __inline __m128i
     887  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     888  _mm_movm_epi16 (__mmask8 __A)
     889  {
     890    return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
     891  }
     892  
     893  extern __inline __m256i
     894  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     895  _mm256_movm_epi16 (__mmask16 __A)
     896  {
     897    return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
     898  }
     899  
     900  extern __inline __mmask16
     901  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     902  _mm_test_epi8_mask (__m128i __A, __m128i __B)
     903  {
     904    return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
     905  						(__v16qi) __B,
     906  						(__mmask16) -1);
     907  }
     908  
     909  extern __inline __mmask16
     910  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     911  _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
     912  {
     913    return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
     914  						(__v16qi) __B, __U);
     915  }
     916  
     917  extern __inline __mmask32
     918  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     919  _mm256_test_epi8_mask (__m256i __A, __m256i __B)
     920  {
     921    return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
     922  						(__v32qi) __B,
     923  						(__mmask32) -1);
     924  }
     925  
     926  extern __inline __mmask32
     927  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     928  _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
     929  {
     930    return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
     931  						(__v32qi) __B, __U);
     932  }
     933  
     934  extern __inline __mmask8
     935  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     936  _mm_test_epi16_mask (__m128i __A, __m128i __B)
     937  {
     938    return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
     939  					       (__v8hi) __B,
     940  					       (__mmask8) -1);
     941  }
     942  
     943  extern __inline __mmask8
     944  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     945  _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
     946  {
     947    return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
     948  					       (__v8hi) __B, __U);
     949  }
     950  
     951  extern __inline __mmask16
     952  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     953  _mm256_test_epi16_mask (__m256i __A, __m256i __B)
     954  {
     955    return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
     956  						(__v16hi) __B,
     957  						(__mmask16) -1);
     958  }
     959  
     960  extern __inline __mmask16
     961  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     962  _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
     963  {
     964    return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
     965  						(__v16hi) __B, __U);
     966  }
     967  
     968  extern __inline __m256i
     969  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     970  _mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
     971  {
     972    return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
     973  						  (__v16hi) __B,
     974  						  (__v16hi)
     975  						  _mm256_setzero_si256 (),
     976  						  (__mmask16) __M);
     977  }
     978  
     979  extern __inline __m256i
     980  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     981  _mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
     982  		       __m256i __B)
     983  {
     984    return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
     985  						  (__v16hi) __B,
     986  						  (__v16hi) __W,
     987  						  (__mmask16) __M);
     988  }
     989  
     990  extern __inline __m128i
     991  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     992  _mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
     993  {
     994    return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
     995  						  (__v8hi) __B,
     996  						  (__v8hi)
     997  						  _mm_setzero_si128 (),
     998  						  (__mmask8) __M);
     999  }
    1000  
    1001  extern __inline __m128i
    1002  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1003  _mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
    1004  		    __m128i __B)
    1005  {
    1006    return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
    1007  						  (__v8hi) __B,
    1008  						  (__v8hi) __W,
    1009  						  (__mmask8) __M);
    1010  }
    1011  
    1012  extern __inline __m256i
    1013  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1014  _mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
    1015  {
    1016    return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
    1017  						  (__v16hi) __B,
    1018  						  (__v16hi)
    1019  						  _mm256_setzero_si256 (),
    1020  						  (__mmask16) __M);
    1021  }
    1022  
    1023  extern __inline __m256i
    1024  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1025  _mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
    1026  		       __m256i __B)
    1027  {
    1028    return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
    1029  						  (__v16hi) __B,
    1030  						  (__v16hi) __W,
    1031  						  (__mmask16) __M);
    1032  }
    1033  
    1034  extern __inline __m256i
    1035  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1036  _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
    1037  {
    1038    return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
    1039  						  (__v32qi) __B,
    1040  						  (__v32qi)
    1041  						  _mm256_setzero_si256 (),
    1042  						  (__mmask32) __M);
    1043  }
    1044  
    1045  extern __inline __m256i
    1046  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1047  _mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
    1048  		      __m256i __B)
    1049  {
    1050    return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
    1051  						  (__v32qi) __B,
    1052  						  (__v32qi) __W,
    1053  						  (__mmask32) __M);
    1054  }
    1055  
    1056  extern __inline __m128i
    1057  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1058  _mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
    1059  {
    1060    return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
    1061  						  (__v16qi) __B,
    1062  						  (__v16qi)
    1063  						  _mm_setzero_si128 (),
    1064  						  (__mmask16) __M);
    1065  }
    1066  
    1067  extern __inline __m128i
    1068  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1069  _mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
    1070  		   __m128i __B)
    1071  {
    1072    return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
    1073  						  (__v16qi) __B,
    1074  						  (__v16qi) __W,
    1075  						  (__mmask16) __M);
    1076  }
    1077  
    1078  extern __inline __m256i
    1079  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1080  _mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
    1081  {
    1082    return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
    1083  						  (__v32qi) __B,
    1084  						  (__v32qi)
    1085  						  _mm256_setzero_si256 (),
    1086  						  (__mmask32) __M);
    1087  }
    1088  
    1089  extern __inline __m256i
    1090  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1091  _mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
    1092  		      __m256i __B)
    1093  {
    1094    return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
    1095  						  (__v32qi) __B,
    1096  						  (__v32qi) __W,
    1097  						  (__mmask32) __M);
    1098  }
    1099  
    1100  extern __inline __m128i
    1101  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1102  _mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
    1103  {
    1104    return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
    1105  						  (__v16qi) __B,
    1106  						  (__v16qi)
    1107  						  _mm_setzero_si128 (),
    1108  						  (__mmask16) __M);
    1109  }
    1110  
    1111  extern __inline __m128i
    1112  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1113  _mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
    1114  		   __m128i __B)
    1115  {
    1116    return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
    1117  						  (__v16qi) __B,
    1118  						  (__v16qi) __W,
    1119  						  (__mmask16) __M);
    1120  }
    1121  
    1122  extern __inline __m256i
    1123  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1124  _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
    1125  {
    1126    return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
    1127  						  (__v32qi) __B,
    1128  						  (__v32qi)
    1129  						  _mm256_setzero_si256 (),
    1130  						  (__mmask32) __M);
    1131  }
    1132  
    1133  extern __inline __m256i
    1134  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1135  _mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
    1136  		      __m256i __B)
    1137  {
    1138    return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
    1139  						  (__v32qi) __B,
    1140  						  (__v32qi) __W,
    1141  						  (__mmask32) __M);
    1142  }
    1143  
    1144  extern __inline __m128i
    1145  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1146  _mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
    1147  {
    1148    return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
    1149  						  (__v16qi) __B,
    1150  						  (__v16qi)
    1151  						  _mm_setzero_si128 (),
    1152  						  (__mmask16) __M);
    1153  }
    1154  
    1155  extern __inline __m128i
    1156  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1157  _mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
    1158  		   __m128i __B)
    1159  {
    1160    return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
    1161  						  (__v16qi) __B,
    1162  						  (__v16qi) __W,
    1163  						  (__mmask16) __M);
    1164  }
    1165  
    1166  extern __inline __m256i
    1167  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1168  _mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
    1169  {
    1170    return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
    1171  						  (__v32qi) __B,
    1172  						  (__v32qi)
    1173  						  _mm256_setzero_si256 (),
    1174  						  (__mmask32) __M);
    1175  }
    1176  
    1177  extern __inline __m256i
    1178  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1179  _mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
    1180  		      __m256i __B)
    1181  {
    1182    return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
    1183  						  (__v32qi) __B,
    1184  						  (__v32qi) __W,
    1185  						  (__mmask32) __M);
    1186  }
    1187  
    1188  extern __inline __m128i
    1189  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1190  _mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
    1191  {
    1192    return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
    1193  						  (__v16qi) __B,
    1194  						  (__v16qi)
    1195  						  _mm_setzero_si128 (),
    1196  						  (__mmask16) __M);
    1197  }
    1198  
    1199  extern __inline __m128i
    1200  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1201  _mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
    1202  		   __m128i __B)
    1203  {
    1204    return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
    1205  						  (__v16qi) __B,
    1206  						  (__v16qi) __W,
    1207  						  (__mmask16) __M);
    1208  }
    1209  
    1210  extern __inline __m256i
    1211  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1212  _mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
    1213  {
    1214    return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
    1215  						  (__v16hi) __B,
    1216  						  (__v16hi)
    1217  						  _mm256_setzero_si256 (),
    1218  						  (__mmask16) __M);
    1219  }
    1220  
    1221  extern __inline __m256i
    1222  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1223  _mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
    1224  		       __m256i __B)
    1225  {
    1226    return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
    1227  						  (__v16hi) __B,
    1228  						  (__v16hi) __W,
    1229  						  (__mmask16) __M);
    1230  }
    1231  
    1232  extern __inline __m128i
    1233  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1234  _mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
    1235  {
    1236    return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
    1237  						  (__v8hi) __B,
    1238  						  (__v8hi)
    1239  						  _mm_setzero_si128 (),
    1240  						  (__mmask8) __M);
    1241  }
    1242  
    1243  extern __inline __m128i
    1244  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1245  _mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
    1246  		    __m128i __B)
    1247  {
    1248    return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
    1249  						  (__v8hi) __B,
    1250  						  (__v8hi) __W,
    1251  						  (__mmask8) __M);
    1252  }
    1253  
    1254  extern __inline __m256i
    1255  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1256  _mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
    1257  {
    1258    return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
    1259  						  (__v16hi) __B,
    1260  						  (__v16hi)
    1261  						  _mm256_setzero_si256 (),
    1262  						  (__mmask16) __M);
    1263  }
    1264  
    1265  extern __inline __m256i
    1266  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1267  _mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
    1268  		       __m256i __B)
    1269  {
    1270    return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
    1271  						  (__v16hi) __B,
    1272  						  (__v16hi) __W,
    1273  						  (__mmask16) __M);
    1274  }
    1275  
    1276  extern __inline __m128i
    1277  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1278  _mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
    1279  {
    1280    return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
    1281  						  (__v8hi) __B,
    1282  						  (__v8hi)
    1283  						  _mm_setzero_si128 (),
    1284  						  (__mmask8) __M);
    1285  }
    1286  
    1287  extern __inline __m128i
    1288  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1289  _mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
    1290  		    __m128i __B)
    1291  {
    1292    return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
    1293  						  (__v8hi) __B,
    1294  						  (__v8hi) __W,
    1295  						  (__mmask8) __M);
    1296  }
    1297  
    1298  extern __inline __m128i
    1299  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1300  _mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
    1301  {
    1302    return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
    1303  						  (__v8hi) __B,
    1304  						  (__v8hi)
    1305  						  _mm_setzero_si128 (),
    1306  						  (__mmask8) __M);
    1307  }
    1308  
    1309  extern __inline __m128i
    1310  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1311  _mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
    1312  		    __m128i __B)
    1313  {
    1314    return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
    1315  						  (__v8hi) __B,
    1316  						  (__v8hi) __W,
    1317  						  (__mmask8) __M);
    1318  }
    1319  
    1320  #ifdef __OPTIMIZE__
    1321  extern __inline __m256i
    1322  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1323  _mm256_mask_alignr_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    1324  			 __m256i __B, const int __N)
    1325  {
    1326    return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
    1327  						   (__v4di) __B,
    1328  						   __N * 8,
    1329  						   (__v4di) __W,
    1330  						   (__mmask32) __U);
    1331  }
    1332  
    1333  extern __inline __m256i
    1334  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1335  _mm256_maskz_alignr_epi8 (__mmask32 __U, __m256i __A, __m256i __B,
    1336  			  const int __N)
    1337  {
    1338    return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
    1339  						   (__v4di) __B,
    1340  						   __N * 8,
    1341  						   (__v4di)
    1342  						   _mm256_setzero_si256 (),
    1343  						   (__mmask32) __U);
    1344  }
    1345  
    1346  extern __inline __m128i
    1347  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1348  _mm_mask_alignr_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    1349  		      __m128i __B, const int __N)
    1350  {
    1351    return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
    1352  						   (__v2di) __B,
    1353  						   __N * 8,
    1354  						   (__v2di) __W,
    1355  						   (__mmask16) __U);
    1356  }
    1357  
    1358  extern __inline __m128i
    1359  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1360  _mm_maskz_alignr_epi8 (__mmask16 __U, __m128i __A, __m128i __B,
    1361  		       const int __N)
    1362  {
    1363    return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
    1364  						   (__v2di) __B,
    1365  						   __N * 8,
    1366  						   (__v2di)
    1367  						   _mm_setzero_si128 (),
    1368  						   (__mmask16) __U);
    1369  }
    1370  
    1371  extern __inline __m256i
    1372  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1373  _mm256_dbsad_epu8 (__m256i __A, __m256i __B, const int __imm)
    1374  {
    1375    return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
    1376  						    (__v32qi) __B,
    1377  						    __imm,
    1378  						    (__v16hi)
    1379  						    _mm256_setzero_si256 (),
    1380  						    (__mmask16) -1);
    1381  }
    1382  
    1383  extern __inline __m256i
    1384  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1385  _mm256_mask_dbsad_epu8 (__m256i __W, __mmask16 __U, __m256i __A,
    1386  			__m256i __B, const int __imm)
    1387  {
    1388    return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
    1389  						    (__v32qi) __B,
    1390  						    __imm,
    1391  						    (__v16hi) __W,
    1392  						    (__mmask16) __U);
    1393  }
    1394  
    1395  extern __inline __m256i
    1396  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1397  _mm256_maskz_dbsad_epu8 (__mmask16 __U, __m256i __A, __m256i __B,
    1398  			 const int __imm)
    1399  {
    1400    return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
    1401  						    (__v32qi) __B,
    1402  						    __imm,
    1403  						    (__v16hi)
    1404  						    _mm256_setzero_si256 (),
    1405  						    (__mmask16) __U);
    1406  }
    1407  
    1408  extern __inline __m128i
    1409  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1410  _mm_dbsad_epu8 (__m128i __A, __m128i __B, const int __imm)
    1411  {
    1412    return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
    1413  						    (__v16qi) __B,
    1414  						    __imm,
    1415  						    (__v8hi)
    1416  						    _mm_setzero_si128 (),
    1417  						    (__mmask8) -1);
    1418  }
    1419  
    1420  extern __inline __m128i
    1421  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1422  _mm_mask_dbsad_epu8 (__m128i __W, __mmask8 __U, __m128i __A,
    1423  		     __m128i __B, const int __imm)
    1424  {
    1425    return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
    1426  						    (__v16qi) __B,
    1427  						    __imm,
    1428  						    (__v8hi) __W,
    1429  						    (__mmask8) __U);
    1430  }
    1431  
    1432  extern __inline __m128i
    1433  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1434  _mm_maskz_dbsad_epu8 (__mmask8 __U, __m128i __A, __m128i __B,
    1435  		      const int __imm)
    1436  {
    1437    return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
    1438  						    (__v16qi) __B,
    1439  						    __imm,
    1440  						    (__v8hi)
    1441  						    _mm_setzero_si128 (),
    1442  						    (__mmask8) __U);
    1443  }
    1444  
    1445  extern __inline __m128i
    1446  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1447  _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
    1448  {
    1449    return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A,
    1450  						    (__v8hi) __W,
    1451  						    (__mmask8) __U);
    1452  }
    1453  
    1454  extern __inline __m128i
    1455  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1456  _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
    1457  {
    1458    return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A,
    1459  						    (__v16qi) __W,
    1460  						    (__mmask16) __U);
    1461  }
    1462  
    1463  extern __inline __m256i
    1464  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1465  _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
    1466  {
    1467    return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A,
    1468  						    (__v16hi) __W,
    1469  						    (__mmask16) __U);
    1470  }
    1471  
    1472  extern __inline __m256i
    1473  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1474  _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
    1475  {
    1476    return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A,
    1477  						    (__v32qi) __W,
    1478  						    (__mmask32) __U);
    1479  }
    1480  
    1481  extern __inline __mmask8
    1482  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1483  _mm_mask_cmp_epi16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
    1484  			 const int __P)
    1485  {
    1486    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    1487  						 (__v8hi) __Y, __P,
    1488  						 (__mmask8) __U);
    1489  }
    1490  
    1491  extern __inline __mmask8
    1492  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1493  _mm_cmp_epi16_mask (__m128i __X, __m128i __Y, const int __P)
    1494  {
    1495    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    1496  						 (__v8hi) __Y, __P,
    1497  						 (__mmask8) -1);
    1498  }
    1499  
    1500  extern __inline __mmask16
    1501  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1502  _mm256_mask_cmp_epi16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
    1503  			    const int __P)
    1504  {
    1505    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    1506  						  (__v16hi) __Y, __P,
    1507  						  (__mmask16) __U);
    1508  }
    1509  
    1510  extern __inline __mmask16
    1511  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1512  _mm256_cmp_epi16_mask (__m256i __X, __m256i __Y, const int __P)
    1513  {
    1514    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    1515  						  (__v16hi) __Y, __P,
    1516  						  (__mmask16) -1);
    1517  }
    1518  
    1519  extern __inline __mmask16
    1520  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1521  _mm_mask_cmp_epi8_mask (__mmask16 __U, __m128i __X, __m128i __Y,
    1522  			const int __P)
    1523  {
    1524    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    1525  						  (__v16qi) __Y, __P,
    1526  						  (__mmask16) __U);
    1527  }
    1528  
    1529  extern __inline __mmask16
    1530  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1531  _mm_cmp_epi8_mask (__m128i __X, __m128i __Y, const int __P)
    1532  {
    1533    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    1534  						  (__v16qi) __Y, __P,
    1535  						  (__mmask16) -1);
    1536  }
    1537  
    1538  extern __inline __mmask32
    1539  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1540  _mm256_mask_cmp_epi8_mask (__mmask32 __U, __m256i __X, __m256i __Y,
    1541  			   const int __P)
    1542  {
    1543    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    1544  						  (__v32qi) __Y, __P,
    1545  						  (__mmask32) __U);
    1546  }
    1547  
    1548  extern __inline __mmask32
    1549  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1550  _mm256_cmp_epi8_mask (__m256i __X, __m256i __Y, const int __P)
    1551  {
    1552    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    1553  						  (__v32qi) __Y, __P,
    1554  						  (__mmask32) -1);
    1555  }
    1556  
    1557  extern __inline __mmask8
    1558  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1559  _mm_mask_cmp_epu16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
    1560  			 const int __P)
    1561  {
    1562    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    1563  						  (__v8hi) __Y, __P,
    1564  						  (__mmask8) __U);
    1565  }
    1566  
    1567  extern __inline __mmask8
    1568  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1569  _mm_cmp_epu16_mask (__m128i __X, __m128i __Y, const int __P)
    1570  {
    1571    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    1572  						  (__v8hi) __Y, __P,
    1573  						  (__mmask8) -1);
    1574  }
    1575  
    1576  extern __inline __mmask16
    1577  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1578  _mm256_mask_cmp_epu16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
    1579  			    const int __P)
    1580  {
    1581    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    1582  						   (__v16hi) __Y, __P,
    1583  						   (__mmask16) __U);
    1584  }
    1585  
    1586  extern __inline __mmask16
    1587  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1588  _mm256_cmp_epu16_mask (__m256i __X, __m256i __Y, const int __P)
    1589  {
    1590    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    1591  						   (__v16hi) __Y, __P,
    1592  						   (__mmask16) -1);
    1593  }
    1594  
    1595  extern __inline __mmask16
    1596  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1597  _mm_mask_cmp_epu8_mask (__mmask16 __U, __m128i __X, __m128i __Y,
    1598  			const int __P)
    1599  {
    1600    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    1601  						   (__v16qi) __Y, __P,
    1602  						   (__mmask16) __U);
    1603  }
    1604  
    1605  extern __inline __mmask16
    1606  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1607  _mm_cmp_epu8_mask (__m128i __X, __m128i __Y, const int __P)
    1608  {
    1609    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    1610  						   (__v16qi) __Y, __P,
    1611  						   (__mmask16) -1);
    1612  }
    1613  
    1614  extern __inline __mmask32
    1615  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1616  _mm256_mask_cmp_epu8_mask (__mmask32 __U, __m256i __X, __m256i __Y,
    1617  			   const int __P)
    1618  {
    1619    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    1620  						   (__v32qi) __Y, __P,
    1621  						   (__mmask32) __U);
    1622  }
    1623  
    1624  extern __inline __mmask32
    1625  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1626  _mm256_cmp_epu8_mask (__m256i __X, __m256i __Y, const int __P)
    1627  {
    1628    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    1629  						   (__v32qi) __Y, __P,
    1630  						   (__mmask32) -1);
    1631  }
    1632  
    1633  extern __inline __m256i
    1634  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1635  _mm256_mask_srli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    1636  			const int __imm)
    1637  {
    1638    return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
    1639  						  (__v16hi) __W,
    1640  						  (__mmask16) __U);
    1641  }
    1642  
    1643  extern __inline __m256i
    1644  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1645  _mm256_maskz_srli_epi16 (__mmask16 __U, __m256i __A, const int __imm)
    1646  {
    1647    return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
    1648  						  (__v16hi)
    1649  						  _mm256_setzero_si256 (),
    1650  						  (__mmask16) __U);
    1651  }
    1652  
    1653  extern __inline __m128i
    1654  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1655  _mm_mask_srli_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    1656  		     const int __imm)
    1657  {
    1658    return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
    1659  						  (__v8hi) __W,
    1660  						  (__mmask8) __U);
    1661  }
    1662  
    1663  extern __inline __m128i
    1664  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1665  _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, const int __imm)
    1666  {
    1667    return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
    1668  						  (__v8hi)
    1669  						  _mm_setzero_si128 (),
    1670  						  (__mmask8) __U);
    1671  }
    1672  
    1673  extern __inline __m256i
    1674  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1675  _mm256_mask_shufflehi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    1676  			     const int __imm)
    1677  {
    1678    return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
    1679  						   __imm,
    1680  						   (__v16hi) __W,
    1681  						   (__mmask16) __U);
    1682  }
    1683  
    1684  extern __inline __m256i
    1685  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1686  _mm256_maskz_shufflehi_epi16 (__mmask16 __U, __m256i __A,
    1687  			      const int __imm)
    1688  {
    1689    return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
    1690  						   __imm,
    1691  						   (__v16hi)
    1692  						   _mm256_setzero_si256 (),
    1693  						   (__mmask16) __U);
    1694  }
    1695  
    1696  extern __inline __m128i
    1697  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1698  _mm_mask_shufflehi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    1699  			  const int __imm)
    1700  {
    1701    return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
    1702  						   (__v8hi) __W,
    1703  						   (__mmask8) __U);
    1704  }
    1705  
    1706  extern __inline __m128i
    1707  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1708  _mm_maskz_shufflehi_epi16 (__mmask8 __U, __m128i __A, const int __imm)
    1709  {
    1710    return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
    1711  						   (__v8hi)
    1712  						   _mm_setzero_si128 (),
    1713  						   (__mmask8) __U);
    1714  }
    1715  
    1716  extern __inline __m256i
    1717  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1718  _mm256_mask_shufflelo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    1719  			     const int __imm)
    1720  {
    1721    return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
    1722  						   __imm,
    1723  						   (__v16hi) __W,
    1724  						   (__mmask16) __U);
    1725  }
    1726  
    1727  extern __inline __m256i
    1728  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1729  _mm256_maskz_shufflelo_epi16 (__mmask16 __U, __m256i __A,
    1730  			      const int __imm)
    1731  {
    1732    return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
    1733  						   __imm,
    1734  						   (__v16hi)
    1735  						   _mm256_setzero_si256 (),
    1736  						   (__mmask16) __U);
    1737  }
    1738  
    1739  extern __inline __m128i
    1740  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1741  _mm_mask_shufflelo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    1742  			  const int __imm)
    1743  {
    1744    return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
    1745  						   (__v8hi) __W,
    1746  						   (__mmask8) __U);
    1747  }
    1748  
    1749  extern __inline __m128i
    1750  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1751  _mm_maskz_shufflelo_epi16 (__mmask8 __U, __m128i __A, const int __imm)
    1752  {
    1753    return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
    1754  						   (__v8hi)
    1755  						   _mm_setzero_si128 (),
    1756  						   (__mmask8) __U);
    1757  }
    1758  
    1759  extern __inline __m256i
    1760  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1761  _mm256_mask_srai_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    1762  			const int __imm)
    1763  {
    1764    return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
    1765  						  (__v16hi) __W,
    1766  						  (__mmask16) __U);
    1767  }
    1768  
    1769  extern __inline __m256i
    1770  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1771  _mm256_maskz_srai_epi16 (__mmask16 __U, __m256i __A, const int __imm)
    1772  {
    1773    return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
    1774  						  (__v16hi)
    1775  						  _mm256_setzero_si256 (),
    1776  						  (__mmask16) __U);
    1777  }
    1778  
    1779  extern __inline __m128i
    1780  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1781  _mm_mask_srai_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    1782  		     const int __imm)
    1783  {
    1784    return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
    1785  						  (__v8hi) __W,
    1786  						  (__mmask8) __U);
    1787  }
    1788  
    1789  extern __inline __m128i
    1790  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1791  _mm_maskz_srai_epi16 (__mmask8 __U, __m128i __A, const int __imm)
    1792  {
    1793    return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
    1794  						  (__v8hi)
    1795  						  _mm_setzero_si128 (),
    1796  						  (__mmask8) __U);
    1797  }
    1798  
    1799  extern __inline __m256i
    1800  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1801  _mm256_mask_slli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    1802  			int __B)
    1803  {
    1804    return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
    1805  						  (__v16hi) __W,
    1806  						  (__mmask16) __U);
    1807  }
    1808  
    1809  extern __inline __m256i
    1810  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1811  _mm256_maskz_slli_epi16 (__mmask16 __U, __m256i __A, int __B)
    1812  {
    1813    return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
    1814  						  (__v16hi)
    1815  						  _mm256_setzero_si256 (),
    1816  						  (__mmask16) __U);
    1817  }
    1818  
    1819  extern __inline __m128i
    1820  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1821  _mm_mask_slli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
    1822  {
    1823    return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
    1824  						  (__v8hi) __W,
    1825  						  (__mmask8) __U);
    1826  }
    1827  
    1828  extern __inline __m128i
    1829  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    1830  _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
    1831  {
    1832    return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
    1833  						  (__v8hi)
    1834  						  _mm_setzero_si128 (),
    1835  						  (__mmask8) __U);
    1836  }
    1837  
    1838  #else
    1839  #define _mm256_mask_alignr_epi8(W, U, X, Y, N)					    \
    1840    ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X),		    \
    1841  					    (__v4di)(__m256i)(Y), (int)((N) * 8),   \
    1842  					    (__v4di)(__m256i)(X), (__mmask32)(U)))
    1843  
    1844  #define _mm256_mask_srli_epi16(W, U, A, B)                              \
    1845    ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A),      \
    1846      (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
    1847  
    1848  #define _mm256_maskz_srli_epi16(U, A, B)                                \
    1849    ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A),      \
    1850      (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
    1851  
    1852  #define _mm_mask_srli_epi16(W, U, A, B)                                 \
    1853    ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A),       \
    1854      (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
    1855  
    1856  #define _mm_maskz_srli_epi16(U, A, B)                                   \
    1857    ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A),       \
    1858      (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
    1859  
    1860  #define _mm256_mask_srai_epi16(W, U, A, B)                              \
    1861    ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A),      \
    1862      (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
    1863  
    1864  #define _mm256_maskz_srai_epi16(U, A, B)                                \
    1865    ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A),      \
    1866      (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
    1867  
    1868  #define _mm_mask_srai_epi16(W, U, A, B)                                 \
    1869    ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A),       \
    1870      (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
    1871  
    1872  #define _mm_maskz_srai_epi16(U, A, B)                                   \
    1873    ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A),       \
    1874      (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
    1875  
    1876  #define _mm256_mask_shufflehi_epi16(W, U, A, B)                                     \
    1877    ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
    1878                                               (__v16hi)(__m256i)(W),                 \
    1879                                               (__mmask16)(U)))
    1880  
    1881  #define _mm256_maskz_shufflehi_epi16(U, A, B)                                       \
    1882    ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
    1883                                               (__v16hi)(__m256i)_mm256_setzero_si256 (), \
    1884                                               (__mmask16)(U)))
    1885  
    1886  #define _mm_mask_shufflehi_epi16(W, U, A, B)                                        \
    1887    ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
    1888                                               (__v8hi)(__m128i)(W),                  \
    1889                                               (__mmask8)(U)))
    1890  
    1891  #define _mm_maskz_shufflehi_epi16(U, A, B)                                          \
    1892    ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
    1893  					     (__v8hi)(__m128i)_mm_setzero_si128 (), \
    1894                                               (__mmask8)(U)))
    1895  
    1896  #define _mm256_mask_shufflelo_epi16(W, U, A, B)                                     \
    1897    ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
    1898                                               (__v16hi)(__m256i)(W),                 \
    1899                                               (__mmask16)(U)))
    1900  
    1901  #define _mm256_maskz_shufflelo_epi16(U, A, B)                                       \
    1902    ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
    1903                                               (__v16hi)(__m256i)_mm256_setzero_si256 (), \
    1904                                               (__mmask16)(U)))
    1905  
    1906  #define _mm_mask_shufflelo_epi16(W, U, A, B)                                        \
    1907    ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
    1908                                               (__v8hi)(__m128i)(W),                  \
    1909                                               (__mmask8)(U)))
    1910  
    1911  #define _mm_maskz_shufflelo_epi16(U, A, B)                                          \
    1912    ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
    1913  					     (__v8hi)(__m128i)_mm_setzero_si128 (), \
    1914                                               (__mmask8)(U)))
    1915  
    1916  #define _mm256_maskz_alignr_epi8(U, X, Y, N)					    \
    1917    ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X),		    \
    1918  					    (__v4di)(__m256i)(Y), (int)((N) * 8),   \
    1919  					    (__v4di)(__m256i)_mm256_setzero_si256 (),   \
    1920  					    (__mmask32)(U)))
    1921  
    1922  #define _mm_mask_alignr_epi8(W, U, X, Y, N)					    \
    1923    ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X),		    \
    1924  					    (__v2di)(__m128i)(Y), (int)((N) * 8),   \
    1925  					    (__v2di)(__m128i)(X), (__mmask16)(U)))
    1926  
    1927  #define _mm_maskz_alignr_epi8(U, X, Y, N)					    \
    1928    ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X),		    \
    1929  					    (__v2di)(__m128i)(Y), (int)((N) * 8),   \
    1930  					    (__v2di)(__m128i)_mm_setzero_si128 (),  \
    1931  					    (__mmask16)(U)))
    1932  
    1933  #define _mm_mask_slli_epi16(W, U, X, C)					  \
    1934    ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
    1935      (__v8hi)(__m128i)(W),\
    1936      (__mmask8)(U)))
    1937  
    1938  #define _mm_maskz_slli_epi16(U, X, C)					  \
    1939    ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
    1940      (__v8hi)(__m128i)_mm_setzero_si128 (),\
    1941      (__mmask8)(U)))
    1942  
    1943  #define _mm256_dbsad_epu8(X, Y, C)                                                  \
    1944    ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
    1945                                                (__v32qi)(__m256i) (Y), (int) (C),    \
    1946                                                (__v16hi)(__m256i)_mm256_setzero_si256(),\
    1947                                                (__mmask16)-1))
    1948  
    1949  #define _mm256_mask_slli_epi16(W, U, X, C)                                 \
    1950    ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
    1951      (__v16hi)(__m256i)(W),\
    1952      (__mmask16)(U)))
    1953  
    1954  #define _mm256_maskz_slli_epi16(U, X, C)                                   \
    1955    ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
    1956      (__v16hi)(__m256i)_mm256_setzero_si256 (),\
    1957      (__mmask16)(U)))
    1958  
    1959  #define _mm256_mask_dbsad_epu8(W, U, X, Y, C)                                       \
    1960    ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
    1961                                                (__v32qi)(__m256i) (Y), (int) (C),    \
    1962                                                (__v16hi)(__m256i)(W),                \
    1963                                                (__mmask16)(U)))
    1964  
    1965  #define _mm256_maskz_dbsad_epu8(U, X, Y, C)                                         \
    1966    ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
    1967                                                (__v32qi)(__m256i) (Y), (int) (C),    \
    1968                                                (__v16hi)(__m256i)_mm256_setzero_si256(),\
    1969                                                (__mmask16)(U)))
    1970  
    1971  #define _mm_dbsad_epu8(X, Y, C)                                                     \
    1972    ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
    1973                                                (__v16qi)(__m128i) (Y), (int) (C),    \
    1974                                                (__v8hi)(__m128i)_mm_setzero_si128(), \
    1975                                                (__mmask8)-1))
    1976  
    1977  #define _mm_mask_dbsad_epu8(W, U, X, Y, C)                                          \
    1978    ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
    1979                                                (__v16qi)(__m128i) (Y), (int) (C),    \
    1980                                                (__v8hi)(__m128i)(W),                 \
    1981                                                (__mmask8)(U)))
    1982  
    1983  #define _mm_maskz_dbsad_epu8(U, X, Y, C)                                            \
    1984    ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
    1985                                                (__v16qi)(__m128i) (Y), (int) (C),    \
    1986                                                (__v8hi)(__m128i)_mm_setzero_si128(), \
    1987                                                (__mmask8)(U)))
    1988  
    1989  #define _mm_mask_blend_epi16(__U, __A, __W)			      \
    1990    ((__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) (__A),	      \
    1991  						    (__v8hi) (__W),   \
    1992  						    (__mmask8) (__U)))
    1993  
    1994  #define _mm_mask_blend_epi8(__U, __A, __W)			      \
    1995    ((__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) (__A),	      \
    1996  						    (__v16qi) (__W),  \
    1997  						    (__mmask16) (__U)))
    1998  
    1999  #define _mm256_mask_blend_epi16(__U, __A, __W)			      \
    2000    ((__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) (__A),	      \
    2001  						    (__v16hi) (__W),  \
    2002  						    (__mmask16) (__U)))
    2003  
    2004  #define _mm256_mask_blend_epi8(__U, __A, __W)			      \
    2005    ((__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) (__A),	      \
    2006  						    (__v32qi) (__W),  \
    2007  						    (__mmask32) (__U)))
    2008  
    2009  #define _mm_cmp_epi16_mask(X, Y, P)				\
    2010    ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X),	\
    2011  					    (__v8hi)(__m128i)(Y), (int)(P),\
    2012  					    (__mmask8)(-1)))
    2013  
    2014  #define _mm_cmp_epi8_mask(X, Y, P)				\
    2015    ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X),	\
    2016  					    (__v16qi)(__m128i)(Y), (int)(P),\
    2017  					    (__mmask16)(-1)))
    2018  
    2019  #define _mm256_cmp_epi16_mask(X, Y, P)				\
    2020    ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X),	\
    2021  					    (__v16hi)(__m256i)(Y), (int)(P),\
    2022  					    (__mmask16)(-1)))
    2023  
    2024  #define _mm256_cmp_epi8_mask(X, Y, P)				\
    2025    ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X),	\
    2026  					    (__v32qi)(__m256i)(Y), (int)(P),\
    2027  					    (__mmask32)(-1)))
    2028  
    2029  #define _mm_cmp_epu16_mask(X, Y, P)				\
    2030    ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X),	\
    2031  					    (__v8hi)(__m128i)(Y), (int)(P),\
    2032  					    (__mmask8)(-1)))
    2033  
    2034  #define _mm_cmp_epu8_mask(X, Y, P)				\
    2035    ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X),	\
    2036  					    (__v16qi)(__m128i)(Y), (int)(P),\
    2037  					    (__mmask16)(-1)))
    2038  
    2039  #define _mm256_cmp_epu16_mask(X, Y, P)				\
    2040    ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X),	\
    2041  					    (__v16hi)(__m256i)(Y), (int)(P),\
    2042  					    (__mmask16)(-1)))
    2043  
    2044  #define _mm256_cmp_epu8_mask(X, Y, P)				\
    2045    ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X),	\
    2046  					    (__v32qi)(__m256i)(Y), (int)(P),\
    2047  					    (__mmask32)-1))
    2048  
    2049  #define _mm_mask_cmp_epi16_mask(M, X, Y, P)				\
    2050    ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X),	\
    2051  					    (__v8hi)(__m128i)(Y), (int)(P),\
    2052  					    (__mmask8)(M)))
    2053  
    2054  #define _mm_mask_cmp_epi8_mask(M, X, Y, P)				\
    2055    ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X),	\
    2056  					    (__v16qi)(__m128i)(Y), (int)(P),\
    2057  					    (__mmask16)(M)))
    2058  
    2059  #define _mm256_mask_cmp_epi16_mask(M, X, Y, P)				\
    2060    ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X),	\
    2061  					    (__v16hi)(__m256i)(Y), (int)(P),\
    2062  					    (__mmask16)(M)))
    2063  
    2064  #define _mm256_mask_cmp_epi8_mask(M, X, Y, P)				\
    2065    ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X),	\
    2066  					    (__v32qi)(__m256i)(Y), (int)(P),\
    2067  					    (__mmask32)(M)))
    2068  
    2069  #define _mm_mask_cmp_epu16_mask(M, X, Y, P)				\
    2070    ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X),	\
    2071  					    (__v8hi)(__m128i)(Y), (int)(P),\
    2072  					    (__mmask8)(M)))
    2073  
    2074  #define _mm_mask_cmp_epu8_mask(M, X, Y, P)				\
    2075    ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X),	\
    2076  					    (__v16qi)(__m128i)(Y), (int)(P),\
    2077  					    (__mmask16)(M)))
    2078  
    2079  #define _mm256_mask_cmp_epu16_mask(M, X, Y, P)				\
    2080    ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X),	\
    2081  					    (__v16hi)(__m256i)(Y), (int)(P),\
    2082  					    (__mmask16)(M)))
    2083  
    2084  #define _mm256_mask_cmp_epu8_mask(M, X, Y, P)				\
    2085    ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X),	\
    2086  					    (__v32qi)(__m256i)(Y), (int)(P),\
    2087  					    (__mmask32)(M)))
    2088  #endif
    2089  
    2090  extern __inline __mmask32
    2091    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2092  _mm256_cmpneq_epi8_mask (__m256i __X, __m256i __Y)
    2093  {
    2094    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    2095  						  (__v32qi) __Y, 4,
    2096  						  (__mmask32) -1);
    2097  }
    2098  
    2099  extern __inline __mmask32
    2100    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2101  _mm256_cmplt_epi8_mask (__m256i __X, __m256i __Y)
    2102  {
    2103    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    2104  						  (__v32qi) __Y, 1,
    2105  						  (__mmask32) -1);
    2106  }
    2107  
    2108  extern __inline __mmask32
    2109    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2110  _mm256_cmpge_epi8_mask (__m256i __X, __m256i __Y)
    2111  {
    2112    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    2113  						  (__v32qi) __Y, 5,
    2114  						  (__mmask32) -1);
    2115  }
    2116  
    2117  extern __inline __mmask32
    2118    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2119  _mm256_cmple_epi8_mask (__m256i __X, __m256i __Y)
    2120  {
    2121    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    2122  						  (__v32qi) __Y, 2,
    2123  						  (__mmask32) -1);
    2124  }
    2125  
    2126  extern __inline __mmask16
    2127    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2128  _mm256_cmpneq_epi16_mask (__m256i __X, __m256i __Y)
    2129  {
    2130    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    2131  						  (__v16hi) __Y, 4,
    2132  						  (__mmask16) -1);
    2133  }
    2134  
    2135  extern __inline __mmask16
    2136    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2137  _mm256_cmplt_epi16_mask (__m256i __X, __m256i __Y)
    2138  {
    2139    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    2140  						  (__v16hi) __Y, 1,
    2141  						  (__mmask16) -1);
    2142  }
    2143  
    2144  extern __inline __mmask16
    2145    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2146  _mm256_cmpge_epi16_mask (__m256i __X, __m256i __Y)
    2147  {
    2148    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    2149  						  (__v16hi) __Y, 5,
    2150  						  (__mmask16) -1);
    2151  }
    2152  
    2153  extern __inline __mmask16
    2154    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2155  _mm256_cmple_epi16_mask (__m256i __X, __m256i __Y)
    2156  {
    2157    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    2158  						  (__v16hi) __Y, 2,
    2159  						  (__mmask16) -1);
    2160  }
    2161  
    2162  extern __inline __mmask16
    2163    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2164  _mm_cmpneq_epu8_mask (__m128i __X, __m128i __Y)
    2165  {
    2166    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    2167  						   (__v16qi) __Y, 4,
    2168  						   (__mmask16) -1);
    2169  }
    2170  
    2171  extern __inline __mmask16
    2172    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2173  _mm_cmplt_epu8_mask (__m128i __X, __m128i __Y)
    2174  {
    2175    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    2176  						   (__v16qi) __Y, 1,
    2177  						   (__mmask16) -1);
    2178  }
    2179  
    2180  extern __inline __mmask16
    2181    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2182  _mm_cmpge_epu8_mask (__m128i __X, __m128i __Y)
    2183  {
    2184    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    2185  						   (__v16qi) __Y, 5,
    2186  						   (__mmask16) -1);
    2187  }
    2188  
    2189  extern __inline __mmask16
    2190    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2191  _mm_cmple_epu8_mask (__m128i __X, __m128i __Y)
    2192  {
    2193    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    2194  						   (__v16qi) __Y, 2,
    2195  						   (__mmask16) -1);
    2196  }
    2197  
    2198  extern __inline __mmask8
    2199    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2200  _mm_cmpneq_epu16_mask (__m128i __X, __m128i __Y)
    2201  {
    2202    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    2203  						  (__v8hi) __Y, 4,
    2204  						  (__mmask8) -1);
    2205  }
    2206  
    2207  extern __inline __mmask8
    2208    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2209  _mm_cmplt_epu16_mask (__m128i __X, __m128i __Y)
    2210  {
    2211    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    2212  						  (__v8hi) __Y, 1,
    2213  						  (__mmask8) -1);
    2214  }
    2215  
    2216  extern __inline __mmask8
    2217    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2218  _mm_cmpge_epu16_mask (__m128i __X, __m128i __Y)
    2219  {
    2220    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    2221  						  (__v8hi) __Y, 5,
    2222  						  (__mmask8) -1);
    2223  }
    2224  
    2225  extern __inline __mmask8
    2226    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2227  _mm_cmple_epu16_mask (__m128i __X, __m128i __Y)
    2228  {
    2229    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    2230  						  (__v8hi) __Y, 2,
    2231  						  (__mmask8) -1);
    2232  }
    2233  
    2234  extern __inline __mmask16
    2235    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2236  _mm_cmpneq_epi8_mask (__m128i __X, __m128i __Y)
    2237  {
    2238    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    2239  						  (__v16qi) __Y, 4,
    2240  						  (__mmask16) -1);
    2241  }
    2242  
    2243  extern __inline __mmask16
    2244    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2245  _mm_cmplt_epi8_mask (__m128i __X, __m128i __Y)
    2246  {
    2247    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    2248  						  (__v16qi) __Y, 1,
    2249  						  (__mmask16) -1);
    2250  }
    2251  
    2252  extern __inline __mmask16
    2253    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2254  _mm_cmpge_epi8_mask (__m128i __X, __m128i __Y)
    2255  {
    2256    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    2257  						  (__v16qi) __Y, 5,
    2258  						  (__mmask16) -1);
    2259  }
    2260  
    2261  extern __inline __mmask16
    2262    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2263  _mm_cmple_epi8_mask (__m128i __X, __m128i __Y)
    2264  {
    2265    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    2266  						  (__v16qi) __Y, 2,
    2267  						  (__mmask16) -1);
    2268  }
    2269  
    2270  extern __inline __mmask8
    2271    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2272  _mm_cmpneq_epi16_mask (__m128i __X, __m128i __Y)
    2273  {
    2274    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    2275  						 (__v8hi) __Y, 4,
    2276  						 (__mmask8) -1);
    2277  }
    2278  
    2279  extern __inline __mmask8
    2280    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2281  _mm_cmplt_epi16_mask (__m128i __X, __m128i __Y)
    2282  {
    2283    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    2284  						 (__v8hi) __Y, 1,
    2285  						 (__mmask8) -1);
    2286  }
    2287  
    2288  extern __inline __mmask8
    2289    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2290  _mm_cmpge_epi16_mask (__m128i __X, __m128i __Y)
    2291  {
    2292    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    2293  						 (__v8hi) __Y, 5,
    2294  						 (__mmask8) -1);
    2295  }
    2296  
    2297  extern __inline __mmask8
    2298    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2299  _mm_cmple_epi16_mask (__m128i __X, __m128i __Y)
    2300  {
    2301    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    2302  						 (__v8hi) __Y, 2,
    2303  						 (__mmask8) -1);
    2304  }
    2305  
    2306  extern __inline __m256i
    2307  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2308  _mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
    2309  			  __m256i __Y)
    2310  {
    2311    return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
    2312  						    (__v16hi) __Y,
    2313  						    (__v16hi) __W,
    2314  						    (__mmask16) __U);
    2315  }
    2316  
    2317  extern __inline __m256i
    2318  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2319  _mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
    2320  {
    2321    return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
    2322  						    (__v16hi) __Y,
    2323  						    (__v16hi)
    2324  						    _mm256_setzero_si256 (),
    2325  						    (__mmask16) __U);
    2326  }
    2327  
    2328  extern __inline __m256i
    2329  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2330  _mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
    2331  			 __m256i __B)
    2332  {
    2333    return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
    2334  						   (__v16hi) __B,
    2335  						   (__v16hi) __W,
    2336  						   (__mmask16) __U);
    2337  }
    2338  
    2339  extern __inline __m256i
    2340  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2341  _mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
    2342  {
    2343    return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
    2344  						   (__v16hi) __B,
    2345  						   (__v16hi)
    2346  						   _mm256_setzero_si256 (),
    2347  						   (__mmask16) __U);
    2348  }
    2349  
    2350  extern __inline __m256i
    2351  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2352  _mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    2353  			 __m256i __B)
    2354  {
    2355    return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
    2356  						  (__v16hi) __B,
    2357  						  (__v16hi) __W,
    2358  						  (__mmask16) __U);
    2359  }
    2360  
    2361  extern __inline __m256i
    2362  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2363  _mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    2364  {
    2365    return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
    2366  						  (__v16hi) __B,
    2367  						  (__v16hi)
    2368  						  _mm256_setzero_si256 (),
    2369  						  (__mmask16) __U);
    2370  }
    2371  
    2372  extern __inline __m128i
    2373  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2374  _mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    2375  		      __m128i __B)
    2376  {
    2377    return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
    2378  						  (__v8hi) __B,
    2379  						  (__v8hi) __W,
    2380  						  (__mmask8) __U);
    2381  }
    2382  
    2383  extern __inline __m128i
    2384  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2385  _mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    2386  {
    2387    return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
    2388  						  (__v8hi) __B,
    2389  						  (__v8hi)
    2390  						  _mm_setzero_si128 (),
    2391  						  (__mmask8) __U);
    2392  }
    2393  
    2394  extern __inline __m128i
    2395  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2396  _mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
    2397  		      __m128i __B)
    2398  {
    2399    return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
    2400  						   (__v8hi) __B,
    2401  						   (__v8hi) __W,
    2402  						   (__mmask8) __U);
    2403  }
    2404  
    2405  extern __inline __m128i
    2406  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2407  _mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
    2408  {
    2409    return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
    2410  						   (__v8hi) __B,
    2411  						   (__v8hi)
    2412  						   _mm_setzero_si128 (),
    2413  						   (__mmask8) __U);
    2414  }
    2415  
    2416  extern __inline __m128i
    2417  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2418  _mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
    2419  		       __m128i __Y)
    2420  {
    2421    return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
    2422  						    (__v8hi) __Y,
    2423  						    (__v8hi) __W,
    2424  						    (__mmask8) __U);
    2425  }
    2426  
    2427  extern __inline __m128i
    2428  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2429  _mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
    2430  {
    2431    return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
    2432  						    (__v8hi) __Y,
    2433  						    (__v8hi)
    2434  						    _mm_setzero_si128 (),
    2435  						    (__mmask8) __U);
    2436  }
    2437  
    2438  extern __inline __m256i
    2439  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2440  _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    2441  			 __m256i __B)
    2442  {
    2443    return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
    2444  						  (__v16hi) __B,
    2445  						  (__v16hi) __W,
    2446  						  (__mmask16) __U);
    2447  }
    2448  
    2449  extern __inline __m256i
    2450  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2451  _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    2452  {
    2453    return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
    2454  						  (__v16hi) __B,
    2455  						  (__v16hi)
    2456  						  _mm256_setzero_si256 (),
    2457  						  (__mmask16) __U);
    2458  }
    2459  
    2460  extern __inline __m128i
    2461  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2462  _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    2463  		      __m128i __B)
    2464  {
    2465    return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
    2466  						  (__v8hi) __B,
    2467  						  (__v8hi) __W,
    2468  						  (__mmask8) __U);
    2469  }
    2470  
    2471  extern __inline __m128i
    2472  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2473  _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    2474  {
    2475    return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
    2476  						  (__v8hi) __B,
    2477  						  (__v8hi)
    2478  						  _mm_setzero_si128 (),
    2479  						  (__mmask8) __U);
    2480  }
    2481  
    2482  extern __inline __m256i
    2483  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2484  _mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask16 __U, __m128i __A)
    2485  {
    2486    return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
    2487  						    (__v16hi) __W,
    2488  						    (__mmask16) __U);
    2489  }
    2490  
    2491  extern __inline __m256i
    2492  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2493  _mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
    2494  {
    2495    return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
    2496  						    (__v16hi)
    2497  						    _mm256_setzero_si256 (),
    2498  						    (__mmask16) __U);
    2499  }
    2500  
    2501  extern __inline __m128i
    2502  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2503  _mm_mask_cvtepi8_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
    2504  {
    2505    return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
    2506  						    (__v8hi) __W,
    2507  						    (__mmask8) __U);
    2508  }
    2509  
    2510  extern __inline __m128i
    2511  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2512  _mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
    2513  {
    2514    return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
    2515  						    (__v8hi)
    2516  						    _mm_setzero_si128 (),
    2517  						    (__mmask8) __U);
    2518  }
    2519  
    2520  extern __inline __m256i
    2521  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2522  _mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask16 __U, __m128i __A)
    2523  {
    2524    return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
    2525  						    (__v16hi) __W,
    2526  						    (__mmask16) __U);
    2527  }
    2528  
    2529  extern __inline __m256i
    2530  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2531  _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
    2532  {
    2533    return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
    2534  						    (__v16hi)
    2535  						    _mm256_setzero_si256 (),
    2536  						    (__mmask16) __U);
    2537  }
    2538  
    2539  extern __inline __m128i
    2540  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2541  _mm_mask_cvtepu8_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
    2542  {
    2543    return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
    2544  						    (__v8hi) __W,
    2545  						    (__mmask8) __U);
    2546  }
    2547  
    2548  extern __inline __m128i
    2549  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2550  _mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
    2551  {
    2552    return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
    2553  						    (__v8hi)
    2554  						    _mm_setzero_si128 (),
    2555  						    (__mmask8) __U);
    2556  }
    2557  
    2558  extern __inline __m256i
    2559  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2560  _mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
    2561  		      __m256i __B)
    2562  {
    2563    return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
    2564  						 (__v32qi) __B,
    2565  						 (__v32qi) __W,
    2566  						 (__mmask32) __U);
    2567  }
    2568  
    2569  extern __inline __m256i
    2570  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2571  _mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
    2572  {
    2573    return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
    2574  						 (__v32qi) __B,
    2575  						 (__v32qi)
    2576  						 _mm256_setzero_si256 (),
    2577  						 (__mmask32) __U);
    2578  }
    2579  
    2580  extern __inline __m128i
    2581  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2582  _mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
    2583  		   __m128i __B)
    2584  {
    2585    return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
    2586  						 (__v16qi) __B,
    2587  						 (__v16qi) __W,
    2588  						 (__mmask16) __U);
    2589  }
    2590  
    2591  extern __inline __m128i
    2592  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2593  _mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
    2594  {
    2595    return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
    2596  						 (__v16qi) __B,
    2597  						 (__v16qi)
    2598  						 _mm_setzero_si128 (),
    2599  						 (__mmask16) __U);
    2600  }
    2601  
    2602  extern __inline __m256i
    2603  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2604  _mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
    2605  		       __m256i __B)
    2606  {
    2607    return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
    2608  						 (__v16hi) __B,
    2609  						 (__v16hi) __W,
    2610  						 (__mmask16) __U);
    2611  }
    2612  
    2613  extern __inline __m256i
    2614  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2615  _mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
    2616  {
    2617    return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
    2618  						 (__v16hi) __B,
    2619  						 (__v16hi)
    2620  						 _mm256_setzero_si256 (),
    2621  						 (__mmask16) __U);
    2622  }
    2623  
    2624  extern __inline __m128i
    2625  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2626  _mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
    2627  		    __m128i __B)
    2628  {
    2629    return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
    2630  						 (__v8hi) __B,
    2631  						 (__v8hi) __W,
    2632  						 (__mmask8) __U);
    2633  }
    2634  
    2635  extern __inline __m128i
    2636  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2637  _mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
    2638  {
    2639    return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
    2640  						 (__v8hi) __B,
    2641  						 (__v8hi)
    2642  						 _mm_setzero_si128 (),
    2643  						 (__mmask8) __U);
    2644  }
    2645  
    2646  extern __inline __m256i
    2647  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2648  _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    2649  		      __m256i __B)
    2650  {
    2651    return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
    2652  						 (__v32qi) __B,
    2653  						 (__v32qi) __W,
    2654  						 (__mmask32) __U);
    2655  }
    2656  
    2657  extern __inline __m256i
    2658  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2659  _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    2660  {
    2661    return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
    2662  						 (__v32qi) __B,
    2663  						 (__v32qi)
    2664  						 _mm256_setzero_si256 (),
    2665  						 (__mmask32) __U);
    2666  }
    2667  
    2668  extern __inline __m256i
    2669  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2670  _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    2671  		       __m256i __B)
    2672  {
    2673    return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
    2674  						 (__v16hi) __B,
    2675  						 (__v16hi) __W,
    2676  						 (__mmask16) __U);
    2677  }
    2678  
    2679  extern __inline __m256i
    2680  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2681  _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    2682  {
    2683    return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
    2684  						 (__v16hi) __B,
    2685  						 (__v16hi)
    2686  						 _mm256_setzero_si256 (),
    2687  						 (__mmask16) __U);
    2688  }
    2689  
    2690  extern __inline __m256i
    2691  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2692  _mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    2693  		       __m256i __B)
    2694  {
    2695    return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
    2696  						  (__v32qi) __B,
    2697  						  (__v32qi) __W,
    2698  						  (__mmask32) __U);
    2699  }
    2700  
    2701  extern __inline __m256i
    2702  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2703  _mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    2704  {
    2705    return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
    2706  						  (__v32qi) __B,
    2707  						  (__v32qi)
    2708  						  _mm256_setzero_si256 (),
    2709  						  (__mmask32) __U);
    2710  }
    2711  
    2712  extern __inline __m256i
    2713  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2714  _mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    2715  			__m256i __B)
    2716  {
    2717    return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
    2718  						  (__v16hi) __B,
    2719  						  (__v16hi) __W,
    2720  						  (__mmask16) __U);
    2721  }
    2722  
    2723  extern __inline __m256i
    2724  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2725  _mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    2726  {
    2727    return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
    2728  						  (__v16hi) __B,
    2729  						  (__v16hi)
    2730  						  _mm256_setzero_si256 (),
    2731  						  (__mmask16) __U);
    2732  }
    2733  
    2734  extern __inline __m256i
    2735  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2736  _mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
    2737  		       __m256i __B)
    2738  {
    2739    return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
    2740  						   (__v32qi) __B,
    2741  						   (__v32qi) __W,
    2742  						   (__mmask32) __U);
    2743  }
    2744  
    2745  extern __inline __m256i
    2746  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2747  _mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
    2748  {
    2749    return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
    2750  						   (__v32qi) __B,
    2751  						   (__v32qi)
    2752  						   _mm256_setzero_si256 (),
    2753  						   (__mmask32) __U);
    2754  }
    2755  
    2756  extern __inline __m256i
    2757  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2758  _mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
    2759  			__m256i __B)
    2760  {
    2761    return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
    2762  						   (__v16hi) __B,
    2763  						   (__v16hi) __W,
    2764  						   (__mmask16) __U);
    2765  }
    2766  
    2767  extern __inline __m256i
    2768  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2769  _mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
    2770  {
    2771    return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
    2772  						   (__v16hi) __B,
    2773  						   (__v16hi)
    2774  						   _mm256_setzero_si256 (),
    2775  						   (__mmask16) __U);
    2776  }
    2777  
    2778  extern __inline __m256i
    2779  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2780  _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    2781  		      __m256i __B)
    2782  {
    2783    return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
    2784  						 (__v32qi) __B,
    2785  						 (__v32qi) __W,
    2786  						 (__mmask32) __U);
    2787  }
    2788  
    2789  extern __inline __m256i
    2790  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2791  _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    2792  {
    2793    return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
    2794  						 (__v32qi) __B,
    2795  						 (__v32qi)
    2796  						 _mm256_setzero_si256 (),
    2797  						 (__mmask32) __U);
    2798  }
    2799  
    2800  extern __inline __m256i
    2801  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2802  _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    2803  		       __m256i __B)
    2804  {
    2805    return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
    2806  						 (__v16hi) __B,
    2807  						 (__v16hi) __W,
    2808  						 (__mmask16) __U);
    2809  }
    2810  
    2811  extern __inline __m256i
    2812  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2813  _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    2814  {
    2815    return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
    2816  						 (__v16hi) __B,
    2817  						 (__v16hi)
    2818  						 _mm256_setzero_si256 (),
    2819  						 (__mmask16) __U);
    2820  }
    2821  
    2822  extern __inline __m256i
    2823  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2824  _mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    2825  		       __m256i __B)
    2826  {
    2827    return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
    2828  						  (__v32qi) __B,
    2829  						  (__v32qi) __W,
    2830  						  (__mmask32) __U);
    2831  }
    2832  
    2833  extern __inline __m256i
    2834  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2835  _mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    2836  {
    2837    return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
    2838  						  (__v32qi) __B,
    2839  						  (__v32qi)
    2840  						  _mm256_setzero_si256 (),
    2841  						  (__mmask32) __U);
    2842  }
    2843  
    2844  extern __inline __m256i
    2845  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2846  _mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    2847  			__m256i __B)
    2848  {
    2849    return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
    2850  						  (__v16hi) __B,
    2851  						  (__v16hi) __W,
    2852  						  (__mmask16) __U);
    2853  }
    2854  
    2855  extern __inline __m256i
    2856  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2857  _mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    2858  {
    2859    return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
    2860  						  (__v16hi) __B,
    2861  						  (__v16hi)
    2862  						  _mm256_setzero_si256 (),
    2863  						  (__mmask16) __U);
    2864  }
    2865  
    2866  extern __inline __m256i
    2867  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2868  _mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
    2869  		       __m256i __B)
    2870  {
    2871    return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
    2872  						   (__v32qi) __B,
    2873  						   (__v32qi) __W,
    2874  						   (__mmask32) __U);
    2875  }
    2876  
    2877  extern __inline __m256i
    2878  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2879  _mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
    2880  {
    2881    return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
    2882  						   (__v32qi) __B,
    2883  						   (__v32qi)
    2884  						   _mm256_setzero_si256 (),
    2885  						   (__mmask32) __U);
    2886  }
    2887  
    2888  extern __inline __m256i
    2889  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2890  _mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
    2891  			__m256i __B)
    2892  {
    2893    return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
    2894  						   (__v16hi) __B,
    2895  						   (__v16hi) __W,
    2896  						   (__mmask16) __U);
    2897  }
    2898  
    2899  extern __inline __m256i
    2900  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2901  _mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
    2902  {
    2903    return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
    2904  						   (__v16hi) __B,
    2905  						   (__v16hi)
    2906  						   _mm256_setzero_si256 (),
    2907  						   (__mmask16) __U);
    2908  }
    2909  
    2910  extern __inline __m128i
    2911  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2912  _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    2913  		   __m128i __B)
    2914  {
    2915    return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
    2916  						 (__v16qi) __B,
    2917  						 (__v16qi) __W,
    2918  						 (__mmask16) __U);
    2919  }
    2920  
    2921  extern __inline __m128i
    2922  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2923  _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    2924  {
    2925    return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
    2926  						 (__v16qi) __B,
    2927  						 (__v16qi)
    2928  						 _mm_setzero_si128 (),
    2929  						 (__mmask16) __U);
    2930  }
    2931  
    2932  extern __inline __m128i
    2933  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2934  _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    2935  		    __m128i __B)
    2936  {
    2937    return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
    2938  						 (__v8hi) __B,
    2939  						 (__v8hi) __W,
    2940  						 (__mmask8) __U);
    2941  }
    2942  
    2943  extern __inline __m128i
    2944  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2945  _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    2946  {
    2947    return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
    2948  						 (__v8hi) __B,
    2949  						 (__v8hi)
    2950  						 _mm_setzero_si128 (),
    2951  						 (__mmask8) __U);
    2952  }
    2953  
    2954  extern __inline __m256i
    2955  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2956  _mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    2957  			   __m256i __B)
    2958  {
    2959    return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
    2960  						     (__v32qi) __B,
    2961  						     (__v32qi) __W,
    2962  						     (__mmask32) __U);
    2963  }
    2964  
    2965  extern __inline __m256i
    2966  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2967  _mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    2968  {
    2969    return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
    2970  						     (__v32qi) __B,
    2971  						     (__v32qi)
    2972  						     _mm256_setzero_si256 (),
    2973  						     (__mmask32) __U);
    2974  }
    2975  
    2976  extern __inline __m128i
    2977  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2978  _mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    2979  			__m128i __B)
    2980  {
    2981    return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
    2982  						     (__v16qi) __B,
    2983  						     (__v16qi) __W,
    2984  						     (__mmask16) __U);
    2985  }
    2986  
    2987  extern __inline __m128i
    2988  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    2989  _mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    2990  {
    2991    return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
    2992  						     (__v16qi) __B,
    2993  						     (__v16qi)
    2994  						     _mm_setzero_si128 (),
    2995  						     (__mmask16) __U);
    2996  }
    2997  
    2998  extern __inline __m256i
    2999  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3000  _mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    3001  			    __m256i __B)
    3002  {
    3003    return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
    3004  						     (__v16hi) __B,
    3005  						     (__v16hi) __W,
    3006  						     (__mmask16) __U);
    3007  }
    3008  
    3009  extern __inline __m256i
    3010  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3011  _mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    3012  {
    3013    return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
    3014  						     (__v16hi) __B,
    3015  						     (__v16hi)
    3016  						     _mm256_setzero_si256 (),
    3017  						     (__mmask16) __U);
    3018  }
    3019  
    3020  extern __inline __m128i
    3021  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3022  _mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    3023  			 __m128i __B)
    3024  {
    3025    return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
    3026  						     (__v8hi) __B,
    3027  						     (__v8hi) __W,
    3028  						     (__mmask8) __U);
    3029  }
    3030  
    3031  extern __inline __m128i
    3032  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3033  _mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    3034  {
    3035    return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
    3036  						     (__v8hi) __B,
    3037  						     (__v8hi)
    3038  						     _mm_setzero_si128 (),
    3039  						     (__mmask8) __U);
    3040  }
    3041  
    3042  extern __inline __m256i
    3043  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3044  _mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    3045  			   __m256i __B)
    3046  {
    3047    return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
    3048  						     (__v32qi) __B,
    3049  						     (__v32qi) __W,
    3050  						     (__mmask32) __U);
    3051  }
    3052  
    3053  extern __inline __m256i
    3054  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3055  _mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    3056  {
    3057    return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
    3058  						     (__v32qi) __B,
    3059  						     (__v32qi)
    3060  						     _mm256_setzero_si256 (),
    3061  						     (__mmask32) __U);
    3062  }
    3063  
    3064  extern __inline __m128i
    3065  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3066  _mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    3067  			__m128i __B)
    3068  {
    3069    return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
    3070  						     (__v16qi) __B,
    3071  						     (__v16qi) __W,
    3072  						     (__mmask16) __U);
    3073  }
    3074  
    3075  extern __inline __m128i
    3076  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3077  _mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    3078  {
    3079    return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
    3080  						     (__v16qi) __B,
    3081  						     (__v16qi)
    3082  						     _mm_setzero_si128 (),
    3083  						     (__mmask16) __U);
    3084  }
    3085  
    3086  extern __inline __m256i
    3087  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3088  _mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    3089  			    __m256i __B)
    3090  {
    3091    return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
    3092  						     (__v16hi) __B,
    3093  						     (__v16hi) __W,
    3094  						     (__mmask16) __U);
    3095  }
    3096  
    3097  extern __inline __m256i
    3098  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3099  _mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    3100  {
    3101    return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
    3102  						     (__v16hi) __B,
    3103  						     (__v16hi)
    3104  						     _mm256_setzero_si256 (),
    3105  						     (__mmask16) __U);
    3106  }
    3107  
    3108  extern __inline __m128i
    3109  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3110  _mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    3111  			 __m128i __B)
    3112  {
    3113    return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
    3114  						     (__v8hi) __B,
    3115  						     (__v8hi) __W,
    3116  						     (__mmask8) __U);
    3117  }
    3118  
    3119  extern __inline __m128i
    3120  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3121  _mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    3122  {
    3123    return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
    3124  						     (__v8hi) __B,
    3125  						     (__v8hi)
    3126  						     _mm_setzero_si128 (),
    3127  						     (__mmask8) __U);
    3128  }
    3129  
    3130  extern __inline __mmask16
    3131  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3132  _mm_cmpeq_epi8_mask (__m128i __A, __m128i __B)
    3133  {
    3134    return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
    3135  						     (__v16qi) __B,
    3136  						     (__mmask16) -1);
    3137  }
    3138  
    3139  extern __inline __mmask16
    3140  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3141  _mm_cmpeq_epu8_mask (__m128i __A, __m128i __B)
    3142  {
    3143    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
    3144  						    (__v16qi) __B, 0,
    3145  						    (__mmask16) -1);
    3146  }
    3147  
    3148  extern __inline __mmask16
    3149  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3150  _mm_mask_cmpeq_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
    3151  {
    3152    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
    3153  						    (__v16qi) __B, 0,
    3154  						    __U);
    3155  }
    3156  
    3157  extern __inline __mmask16
    3158  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3159  _mm_mask_cmpeq_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
    3160  {
    3161    return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
    3162  						     (__v16qi) __B,
    3163  						     __U);
    3164  }
    3165  
    3166  extern __inline __mmask32
    3167  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3168  _mm256_cmpeq_epu8_mask (__m256i __A, __m256i __B)
    3169  {
    3170    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
    3171  						    (__v32qi) __B, 0,
    3172  						    (__mmask32) -1);
    3173  }
    3174  
    3175  extern __inline __mmask32
    3176  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3177  _mm256_cmpeq_epi8_mask (__m256i __A, __m256i __B)
    3178  {
    3179    return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
    3180  						     (__v32qi) __B,
    3181  						     (__mmask32) -1);
    3182  }
    3183  
    3184  extern __inline __mmask32
    3185  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3186  _mm256_mask_cmpeq_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
    3187  {
    3188    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
    3189  						    (__v32qi) __B, 0,
    3190  						    __U);
    3191  }
    3192  
    3193  extern __inline __mmask32
    3194  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3195  _mm256_mask_cmpeq_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
    3196  {
    3197    return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
    3198  						     (__v32qi) __B,
    3199  						     __U);
    3200  }
    3201  
    3202  extern __inline __mmask8
    3203  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3204  _mm_cmpeq_epu16_mask (__m128i __A, __m128i __B)
    3205  {
    3206    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
    3207  						   (__v8hi) __B, 0,
    3208  						   (__mmask8) -1);
    3209  }
    3210  
    3211  extern __inline __mmask8
    3212  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3213  _mm_cmpeq_epi16_mask (__m128i __A, __m128i __B)
    3214  {
    3215    return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
    3216  						    (__v8hi) __B,
    3217  						    (__mmask8) -1);
    3218  }
    3219  
    3220  extern __inline __mmask8
    3221  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3222  _mm_mask_cmpeq_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
    3223  {
    3224    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
    3225  						   (__v8hi) __B, 0, __U);
    3226  }
    3227  
    3228  extern __inline __mmask8
    3229  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3230  _mm_mask_cmpeq_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
    3231  {
    3232    return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
    3233  						    (__v8hi) __B, __U);
    3234  }
    3235  
    3236  extern __inline __mmask16
    3237  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3238  _mm256_cmpeq_epu16_mask (__m256i __A, __m256i __B)
    3239  {
    3240    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
    3241  						    (__v16hi) __B, 0,
    3242  						    (__mmask16) -1);
    3243  }
    3244  
    3245  extern __inline __mmask16
    3246  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3247  _mm256_cmpeq_epi16_mask (__m256i __A, __m256i __B)
    3248  {
    3249    return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
    3250  						     (__v16hi) __B,
    3251  						     (__mmask16) -1);
    3252  }
    3253  
    3254  extern __inline __mmask16
    3255  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3256  _mm256_mask_cmpeq_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
    3257  {
    3258    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
    3259  						    (__v16hi) __B, 0,
    3260  						    __U);
    3261  }
    3262  
    3263  extern __inline __mmask16
    3264  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3265  _mm256_mask_cmpeq_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
    3266  {
    3267    return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
    3268  						     (__v16hi) __B,
    3269  						     __U);
    3270  }
    3271  
    3272  extern __inline __mmask16
    3273  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3274  _mm_cmpgt_epu8_mask (__m128i __A, __m128i __B)
    3275  {
    3276    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
    3277  						    (__v16qi) __B, 6,
    3278  						    (__mmask16) -1);
    3279  }
    3280  
    3281  extern __inline __mmask16
    3282  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3283  _mm_cmpgt_epi8_mask (__m128i __A, __m128i __B)
    3284  {
    3285    return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
    3286  						     (__v16qi) __B,
    3287  						     (__mmask16) -1);
    3288  }
    3289  
    3290  extern __inline __mmask16
    3291  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3292  _mm_mask_cmpgt_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
    3293  {
    3294    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
    3295  						    (__v16qi) __B, 6,
    3296  						    __U);
    3297  }
    3298  
    3299  extern __inline __mmask16
    3300  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3301  _mm_mask_cmpgt_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
    3302  {
    3303    return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
    3304  						     (__v16qi) __B,
    3305  						     __U);
    3306  }
    3307  
    3308  extern __inline __mmask32
    3309  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3310  _mm256_cmpgt_epu8_mask (__m256i __A, __m256i __B)
    3311  {
    3312    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
    3313  						    (__v32qi) __B, 6,
    3314  						    (__mmask32) -1);
    3315  }
    3316  
    3317  extern __inline __mmask32
    3318  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3319  _mm256_cmpgt_epi8_mask (__m256i __A, __m256i __B)
    3320  {
    3321    return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
    3322  						     (__v32qi) __B,
    3323  						     (__mmask32) -1);
    3324  }
    3325  
    3326  extern __inline __mmask32
    3327  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3328  _mm256_mask_cmpgt_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
    3329  {
    3330    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
    3331  						    (__v32qi) __B, 6,
    3332  						    __U);
    3333  }
    3334  
    3335  extern __inline __mmask32
    3336  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3337  _mm256_mask_cmpgt_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
    3338  {
    3339    return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
    3340  						     (__v32qi) __B,
    3341  						     __U);
    3342  }
    3343  
    3344  extern __inline __mmask8
    3345  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3346  _mm_cmpgt_epu16_mask (__m128i __A, __m128i __B)
    3347  {
    3348    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
    3349  						   (__v8hi) __B, 6,
    3350  						   (__mmask8) -1);
    3351  }
    3352  
    3353  extern __inline __mmask8
    3354  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3355  _mm_cmpgt_epi16_mask (__m128i __A, __m128i __B)
    3356  {
    3357    return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
    3358  						    (__v8hi) __B,
    3359  						    (__mmask8) -1);
    3360  }
    3361  
    3362  extern __inline __mmask8
    3363  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3364  _mm_mask_cmpgt_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
    3365  {
    3366    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
    3367  						   (__v8hi) __B, 6, __U);
    3368  }
    3369  
    3370  extern __inline __mmask8
    3371  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3372  _mm_mask_cmpgt_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
    3373  {
    3374    return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
    3375  						    (__v8hi) __B, __U);
    3376  }
    3377  
    3378  extern __inline __mmask16
    3379  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3380  _mm256_cmpgt_epu16_mask (__m256i __A, __m256i __B)
    3381  {
    3382    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
    3383  						    (__v16hi) __B, 6,
    3384  						    (__mmask16) -1);
    3385  }
    3386  
    3387  extern __inline __mmask16
    3388  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3389  _mm256_cmpgt_epi16_mask (__m256i __A, __m256i __B)
    3390  {
    3391    return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
    3392  						     (__v16hi) __B,
    3393  						     (__mmask16) -1);
    3394  }
    3395  
    3396  extern __inline __mmask16
    3397  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3398  _mm256_mask_cmpgt_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
    3399  {
    3400    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
    3401  						    (__v16hi) __B, 6,
    3402  						    __U);
    3403  }
    3404  
    3405  extern __inline __mmask16
    3406  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3407  _mm256_mask_cmpgt_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
    3408  {
    3409    return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
    3410  						     (__v16hi) __B,
    3411  						     __U);
    3412  }
    3413  
    3414  extern __inline __mmask16
    3415  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3416  _mm_testn_epi8_mask (__m128i __A, __m128i __B)
    3417  {
    3418    return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
    3419  						 (__v16qi) __B,
    3420  						 (__mmask16) -1);
    3421  }
    3422  
    3423  extern __inline __mmask16
    3424  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3425  _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
    3426  {
    3427    return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
    3428  						 (__v16qi) __B, __U);
    3429  }
    3430  
    3431  extern __inline __mmask32
    3432  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3433  _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
    3434  {
    3435    return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
    3436  						 (__v32qi) __B,
    3437  						 (__mmask32) -1);
    3438  }
    3439  
    3440  extern __inline __mmask32
    3441  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3442  _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
    3443  {
    3444    return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
    3445  						 (__v32qi) __B, __U);
    3446  }
    3447  
    3448  extern __inline __mmask8
    3449  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3450  _mm_testn_epi16_mask (__m128i __A, __m128i __B)
    3451  {
    3452    return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
    3453  						(__v8hi) __B,
    3454  						(__mmask8) -1);
    3455  }
    3456  
    3457  extern __inline __mmask8
    3458  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3459  _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
    3460  {
    3461    return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
    3462  						(__v8hi) __B, __U);
    3463  }
    3464  
    3465  extern __inline __mmask16
    3466  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3467  _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
    3468  {
    3469    return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
    3470  						 (__v16hi) __B,
    3471  						 (__mmask16) -1);
    3472  }
    3473  
    3474  extern __inline __mmask16
    3475  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3476  _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
    3477  {
    3478    return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
    3479  						 (__v16hi) __B, __U);
    3480  }
    3481  
    3482  extern __inline __m256i
    3483  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3484  _mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
    3485  			  __m256i __B)
    3486  {
    3487    return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
    3488  						  (__v32qi) __B,
    3489  						  (__v32qi) __W,
    3490  						  (__mmask32) __U);
    3491  }
    3492  
    3493  extern __inline __m256i
    3494  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3495  _mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
    3496  {
    3497    return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
    3498  						  (__v32qi) __B,
    3499  						  (__v32qi)
    3500  						  _mm256_setzero_si256 (),
    3501  						  (__mmask32) __U);
    3502  }
    3503  
    3504  extern __inline __m128i
    3505  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3506  _mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    3507  		       __m128i __B)
    3508  {
    3509    return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
    3510  						  (__v16qi) __B,
    3511  						  (__v16qi) __W,
    3512  						  (__mmask16) __U);
    3513  }
    3514  
    3515  extern __inline __m128i
    3516  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3517  _mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    3518  {
    3519    return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
    3520  						  (__v16qi) __B,
    3521  						  (__v16qi)
    3522  						  _mm_setzero_si128 (),
    3523  						  (__mmask16) __U);
    3524  }
    3525  
    3526  extern __inline __m256i
    3527  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3528  _mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
    3529  {
    3530    return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
    3531  						    (__v16hi) __B,
    3532  						    (__v32qi)
    3533  						    _mm256_setzero_si256 (),
    3534  						    __M);
    3535  }
    3536  
    3537  extern __inline __m256i
    3538  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3539  _mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
    3540  			 __m256i __B)
    3541  {
    3542    return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
    3543  						    (__v16hi) __B,
    3544  						    (__v32qi) __W,
    3545  						    __M);
    3546  }
    3547  
    3548  extern __inline __m128i
    3549  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3550  _mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
    3551  {
    3552    return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
    3553  						    (__v8hi) __B,
    3554  						    (__v16qi)
    3555  						    _mm_setzero_si128 (),
    3556  						    __M);
    3557  }
    3558  
    3559  extern __inline __m128i
    3560  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3561  _mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
    3562  		      __m128i __B)
    3563  {
    3564    return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
    3565  						    (__v8hi) __B,
    3566  						    (__v16qi) __W,
    3567  						    __M);
    3568  }
    3569  
    3570  extern __inline __m256i
    3571  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3572  _mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
    3573  {
    3574    return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
    3575  						    (__v16hi) __B,
    3576  						    (__v32qi)
    3577  						    _mm256_setzero_si256 (),
    3578  						    __M);
    3579  }
    3580  
    3581  extern __inline __m256i
    3582  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3583  _mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
    3584  			  __m256i __B)
    3585  {
    3586    return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
    3587  						    (__v16hi) __B,
    3588  						    (__v32qi) __W,
    3589  						    __M);
    3590  }
    3591  
    3592  extern __inline __m128i
    3593  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3594  _mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
    3595  {
    3596    return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
    3597  						    (__v8hi) __B,
    3598  						    (__v16qi)
    3599  						    _mm_setzero_si128 (),
    3600  						    __M);
    3601  }
    3602  
    3603  extern __inline __m128i
    3604  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3605  _mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
    3606  		       __m128i __B)
    3607  {
    3608    return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
    3609  						    (__v8hi) __B,
    3610  						    (__v16qi) __W,
    3611  						    __M);
    3612  }
    3613  
    3614  extern __inline __m256i
    3615  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3616  _mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
    3617  {
    3618    return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
    3619  						 (__v32qi) __W,
    3620  						 (__mmask32) __U);
    3621  }
    3622  
    3623  extern __inline __m256i
    3624  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3625  _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
    3626  {
    3627    return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
    3628  						 (__v32qi)
    3629  						 _mm256_setzero_si256 (),
    3630  						 (__mmask32) __U);
    3631  }
    3632  
    3633  extern __inline __m128i
    3634  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3635  _mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
    3636  {
    3637    return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
    3638  						 (__v16qi) __W,
    3639  						 (__mmask16) __U);
    3640  }
    3641  
    3642  extern __inline __m128i
    3643  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3644  _mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
    3645  {
    3646    return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
    3647  						 (__v16qi)
    3648  						 _mm_setzero_si128 (),
    3649  						 (__mmask16) __U);
    3650  }
    3651  
    3652  extern __inline __m256i
    3653  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3654  _mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
    3655  {
    3656    return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
    3657  						 (__v16hi) __W,
    3658  						 (__mmask16) __U);
    3659  }
    3660  
    3661  extern __inline __m256i
    3662  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3663  _mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
    3664  {
    3665    return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
    3666  						 (__v16hi)
    3667  						 _mm256_setzero_si256 (),
    3668  						 (__mmask16) __U);
    3669  }
    3670  
    3671  extern __inline __m128i
    3672  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3673  _mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
    3674  {
    3675    return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
    3676  						 (__v8hi) __W,
    3677  						 (__mmask8) __U);
    3678  }
    3679  
    3680  extern __inline __m128i
    3681  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3682  _mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
    3683  {
    3684    return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
    3685  						 (__v8hi)
    3686  						 _mm_setzero_si128 (),
    3687  						 (__mmask8) __U);
    3688  }
    3689  
    3690  extern __inline __mmask32
    3691    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3692  _mm256_cmpneq_epu8_mask (__m256i __X, __m256i __Y)
    3693  {
    3694    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    3695  						   (__v32qi) __Y, 4,
    3696  						   (__mmask32) -1);
    3697  }
    3698  
    3699  extern __inline __mmask32
    3700    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3701  _mm256_cmplt_epu8_mask (__m256i __X, __m256i __Y)
    3702  {
    3703    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    3704  						   (__v32qi) __Y, 1,
    3705  						   (__mmask32) -1);
    3706  }
    3707  
    3708  extern __inline __mmask32
    3709    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3710  _mm256_cmpge_epu8_mask (__m256i __X, __m256i __Y)
    3711  {
    3712    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    3713  						   (__v32qi) __Y, 5,
    3714  						   (__mmask32) -1);
    3715  }
    3716  
    3717  extern __inline __mmask32
    3718    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3719  _mm256_cmple_epu8_mask (__m256i __X, __m256i __Y)
    3720  {
    3721    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    3722  						   (__v32qi) __Y, 2,
    3723  						   (__mmask32) -1);
    3724  }
    3725  
    3726  extern __inline __mmask16
    3727    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3728  _mm256_cmpneq_epu16_mask (__m256i __X, __m256i __Y)
    3729  {
    3730    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    3731  						   (__v16hi) __Y, 4,
    3732  						   (__mmask16) -1);
    3733  }
    3734  
    3735  extern __inline __mmask16
    3736    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3737  _mm256_cmplt_epu16_mask (__m256i __X, __m256i __Y)
    3738  {
    3739    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    3740  						   (__v16hi) __Y, 1,
    3741  						   (__mmask16) -1);
    3742  }
    3743  
    3744  extern __inline __mmask16
    3745    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3746  _mm256_cmpge_epu16_mask (__m256i __X, __m256i __Y)
    3747  {
    3748    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    3749  						   (__v16hi) __Y, 5,
    3750  						   (__mmask16) -1);
    3751  }
    3752  
    3753  extern __inline __mmask16
    3754    __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3755  _mm256_cmple_epu16_mask (__m256i __X, __m256i __Y)
    3756  {
    3757    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    3758  						   (__v16hi) __Y, 2,
    3759  						   (__mmask16) -1);
    3760  }
    3761  
    3762  extern __inline void
    3763  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3764  _mm256_storeu_epi16 (void *__P, __m256i __A)
    3765  {
    3766    *(__v16hi_u *) __P = (__v16hi_u) __A;
    3767  }
    3768  
    3769  extern __inline void
    3770  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3771  _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
    3772  {
    3773    __builtin_ia32_storedquhi256_mask ((short *) __P,
    3774  				     (__v16hi) __A,
    3775  				     (__mmask16) __U);
    3776  }
    3777  
    3778  extern __inline void
    3779  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3780  _mm_storeu_epi16 (void *__P, __m128i __A)
    3781  {
    3782    *(__v8hi_u *) __P = (__v8hi_u) __A;
    3783  }
    3784  
    3785  extern __inline void
    3786  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3787  _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
    3788  {
    3789    __builtin_ia32_storedquhi128_mask ((short *) __P,
    3790  				     (__v8hi) __A,
    3791  				     (__mmask8) __U);
    3792  }
    3793  
    3794  extern __inline __m128i
    3795  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3796  _mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    3797  		     __m128i __B)
    3798  {
    3799    return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
    3800  						  (__v8hi) __B,
    3801  						  (__v8hi) __W,
    3802  						  (__mmask8) __U);
    3803  }
    3804  
    3805  extern __inline __m128i
    3806  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3807  _mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    3808  		    __m128i __B)
    3809  {
    3810    return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
    3811  						  (__v16qi) __B,
    3812  						  (__v16qi) __W,
    3813  						  (__mmask16) __U);
    3814  }
    3815  
    3816  extern __inline __m128i
    3817  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3818  _mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    3819  {
    3820    return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
    3821  						  (__v16qi) __B,
    3822  						  (__v16qi)
    3823  						  _mm_setzero_si128 (),
    3824  						  (__mmask16) __U);
    3825  }
    3826  
    3827  extern __inline __m128i
    3828  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3829  _mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    3830  		     __m128i __B)
    3831  {
    3832    return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
    3833  						  (__v8hi) __B,
    3834  						  (__v8hi) __W,
    3835  						  (__mmask8) __U);
    3836  }
    3837  
    3838  extern __inline __m128i
    3839  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3840  _mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    3841  {
    3842    return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
    3843  						  (__v8hi) __B,
    3844  						  (__v8hi)
    3845  						  _mm_setzero_si128 (),
    3846  						  (__mmask8) __U);
    3847  }
    3848  
    3849  extern __inline __m128i
    3850  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3851  _mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
    3852  		    __m128i __B)
    3853  {
    3854    return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
    3855  						   (__v16qi) __B,
    3856  						   (__v16qi) __W,
    3857  						   (__mmask16) __U);
    3858  }
    3859  
    3860  extern __inline __m128i
    3861  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3862  _mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
    3863  {
    3864    return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
    3865  						   (__v16qi) __B,
    3866  						   (__v16qi)
    3867  						   _mm_setzero_si128 (),
    3868  						   (__mmask16) __U);
    3869  }
    3870  
    3871  extern __inline __m128i
    3872  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3873  _mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
    3874  		     __m128i __B)
    3875  {
    3876    return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
    3877  						   (__v8hi) __B,
    3878  						   (__v8hi) __W,
    3879  						   (__mmask8) __U);
    3880  }
    3881  
    3882  extern __inline __m128i
    3883  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3884  _mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
    3885  {
    3886    return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
    3887  						   (__v8hi) __B,
    3888  						   (__v8hi)
    3889  						   _mm_setzero_si128 (),
    3890  						   (__mmask8) __U);
    3891  }
    3892  
    3893  extern __inline __m256i
    3894  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3895  _mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    3896  		       __m128i __B)
    3897  {
    3898    return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
    3899  						 (__v8hi) __B,
    3900  						 (__v16hi) __W,
    3901  						 (__mmask16) __U);
    3902  }
    3903  
    3904  extern __inline __m256i
    3905  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3906  _mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
    3907  {
    3908    return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
    3909  						 (__v8hi) __B,
    3910  						 (__v16hi)
    3911  						 _mm256_setzero_si256 (),
    3912  						 (__mmask16) __U);
    3913  }
    3914  
    3915  extern __inline __m128i
    3916  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3917  _mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    3918  		    __m128i __B)
    3919  {
    3920    return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
    3921  						 (__v8hi) __B,
    3922  						 (__v8hi) __W,
    3923  						 (__mmask8) __U);
    3924  }
    3925  
    3926  extern __inline __m128i
    3927  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3928  _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    3929  {
    3930    return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
    3931  						 (__v8hi) __B,
    3932  						 (__v8hi)
    3933  						 _mm_setzero_si128 (),
    3934  						 (__mmask8) __U);
    3935  }
    3936  
    3937  extern __inline __m256i
    3938  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3939  _mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    3940  		       __m128i __B)
    3941  {
    3942    return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
    3943  						 (__v8hi) __B,
    3944  						 (__v16hi) __W,
    3945  						 (__mmask16) __U);
    3946  }
    3947  
    3948  extern __inline __m256i
    3949  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3950  _mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
    3951  {
    3952    return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
    3953  						 (__v8hi) __B,
    3954  						 (__v16hi)
    3955  						 _mm256_setzero_si256 (),
    3956  						 (__mmask16) __U);
    3957  }
    3958  
    3959  extern __inline __m128i
    3960  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3961  _mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    3962  		    __m128i __B)
    3963  {
    3964    return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
    3965  						 (__v8hi) __B,
    3966  						 (__v8hi) __W,
    3967  						 (__mmask8) __U);
    3968  }
    3969  
    3970  extern __inline __m128i
    3971  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3972  _mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    3973  {
    3974    return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
    3975  						 (__v8hi) __B,
    3976  						 (__v8hi)
    3977  						 _mm_setzero_si128 (),
    3978  						 (__mmask8) __U);
    3979  }
    3980  
    3981  extern __inline __m128i
    3982  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3983  _mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    3984  {
    3985    return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
    3986  						  (__v8hi) __B,
    3987  						  (__v8hi)
    3988  						  _mm_setzero_si128 (),
    3989  						  (__mmask8) __U);
    3990  }
    3991  
    3992  extern __inline __m128i
    3993  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    3994  _mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
    3995  		    __m128i __B)
    3996  {
    3997    return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
    3998  						   (__v16qi) __B,
    3999  						   (__v16qi) __W,
    4000  						   (__mmask16) __U);
    4001  }
    4002  
    4003  extern __inline __m128i
    4004  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4005  _mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
    4006  {
    4007    return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
    4008  						   (__v16qi) __B,
    4009  						   (__v16qi)
    4010  						   _mm_setzero_si128 (),
    4011  						   (__mmask16) __U);
    4012  }
    4013  
    4014  extern __inline __m128i
    4015  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4016  _mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
    4017  		     __m128i __B)
    4018  {
    4019    return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
    4020  						   (__v8hi) __B,
    4021  						   (__v8hi) __W,
    4022  						   (__mmask8) __U);
    4023  }
    4024  
    4025  extern __inline __m128i
    4026  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4027  _mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
    4028  {
    4029    return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
    4030  						   (__v8hi) __B,
    4031  						   (__v8hi)
    4032  						   _mm_setzero_si128 (),
    4033  						   (__mmask8) __U);
    4034  }
    4035  
    4036  extern __inline __m128i
    4037  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4038  _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    4039  		   __m128i __B)
    4040  {
    4041    return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
    4042  						 (__v16qi) __B,
    4043  						 (__v16qi) __W,
    4044  						 (__mmask16) __U);
    4045  }
    4046  
    4047  extern __inline __m128i
    4048  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4049  _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    4050  {
    4051    return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
    4052  						 (__v16qi) __B,
    4053  						 (__v16qi)
    4054  						 _mm_setzero_si128 (),
    4055  						 (__mmask16) __U);
    4056  }
    4057  
    4058  extern __inline __m128i
    4059  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4060  _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    4061  		    __m128i __B)
    4062  {
    4063    return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
    4064  						 (__v8hi) __B,
    4065  						 (__v8hi) __W,
    4066  						 (__mmask8) __U);
    4067  }
    4068  
    4069  extern __inline __m128i
    4070  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4071  _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    4072  {
    4073    return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
    4074  						 (__v8hi) __B,
    4075  						 (__v8hi)
    4076  						 _mm_setzero_si128 (),
    4077  						 (__mmask8) __U);
    4078  }
    4079  
    4080  extern __inline __m128i
    4081  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4082  _mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
    4083  		    __m128i __B)
    4084  {
    4085    return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
    4086  						  (__v16qi) __B,
    4087  						  (__v16qi) __W,
    4088  						  (__mmask16) __U);
    4089  }
    4090  
    4091  extern __inline __m128i
    4092  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4093  _mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
    4094  {
    4095    return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
    4096  						  (__v16qi) __B,
    4097  						  (__v16qi)
    4098  						  _mm_setzero_si128 (),
    4099  						  (__mmask16) __U);
    4100  }
    4101  
    4102  extern __inline __m128i
    4103  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4104  _mm_cvtepi16_epi8 (__m128i __A)
    4105  {
    4106  
    4107    return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
    4108  						  (__v16qi)_mm_undefined_si128(),
    4109  						  (__mmask8) -1);
    4110  }
    4111  
    4112  extern __inline void
    4113  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4114  _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
    4115  {
    4116    __builtin_ia32_pmovwb128mem_mask ((unsigned long long *) __P , (__v8hi) __A, __M);
    4117  }
    4118  
    4119  extern __inline __m128i
    4120  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4121  _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
    4122  {
    4123    return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
    4124  						  (__v16qi) __O, __M);
    4125  }
    4126  
    4127  extern __inline __m128i
    4128  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4129  _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A)
    4130  {
    4131    return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
    4132  						  (__v16qi)
    4133  						  _mm_setzero_si128 (),
    4134  						  __M);
    4135  }
    4136  
    4137  extern __inline __m256i
    4138  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4139  _mm256_srav_epi16 (__m256i __A, __m256i __B)
    4140  {
    4141    return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
    4142  						  (__v16hi) __B,
    4143  						  (__v16hi)
    4144  						  _mm256_setzero_si256 (),
    4145  						  (__mmask16) -1);
    4146  }
    4147  
    4148  extern __inline __m256i
    4149  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4150  _mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    4151  			__m256i __B)
    4152  {
    4153    return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
    4154  						  (__v16hi) __B,
    4155  						  (__v16hi) __W,
    4156  						  (__mmask16) __U);
    4157  }
    4158  
    4159  extern __inline __m256i
    4160  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4161  _mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    4162  {
    4163    return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
    4164  						  (__v16hi) __B,
    4165  						  (__v16hi)
    4166  						  _mm256_setzero_si256 (),
    4167  						  (__mmask16) __U);
    4168  }
    4169  
    4170  extern __inline __m128i
    4171  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4172  _mm_srav_epi16 (__m128i __A, __m128i __B)
    4173  {
    4174    return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
    4175  						 (__v8hi) __B,
    4176  						 (__v8hi)
    4177  						 _mm_setzero_si128 (),
    4178  						 (__mmask8) -1);
    4179  }
    4180  
    4181  extern __inline __m128i
    4182  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4183  _mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    4184  		     __m128i __B)
    4185  {
    4186    return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
    4187  						 (__v8hi) __B,
    4188  						 (__v8hi) __W,
    4189  						 (__mmask8) __U);
    4190  }
    4191  
    4192  extern __inline __m128i
    4193  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4194  _mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    4195  {
    4196    return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
    4197  						 (__v8hi) __B,
    4198  						 (__v8hi)
    4199  						 _mm_setzero_si128 (),
    4200  						 (__mmask8) __U);
    4201  }
    4202  
    4203  extern __inline __m256i
    4204  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4205  _mm256_srlv_epi16 (__m256i __A, __m256i __B)
    4206  {
    4207    return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
    4208  						  (__v16hi) __B,
    4209  						  (__v16hi)
    4210  						  _mm256_setzero_si256 (),
    4211  						  (__mmask16) -1);
    4212  }
    4213  
    4214  extern __inline __m256i
    4215  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4216  _mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    4217  			__m256i __B)
    4218  {
    4219    return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
    4220  						  (__v16hi) __B,
    4221  						  (__v16hi) __W,
    4222  						  (__mmask16) __U);
    4223  }
    4224  
    4225  extern __inline __m256i
    4226  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4227  _mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    4228  {
    4229    return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
    4230  						  (__v16hi) __B,
    4231  						  (__v16hi)
    4232  						  _mm256_setzero_si256 (),
    4233  						  (__mmask16) __U);
    4234  }
    4235  
    4236  extern __inline __m128i
    4237  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4238  _mm_srlv_epi16 (__m128i __A, __m128i __B)
    4239  {
    4240    return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
    4241  						 (__v8hi) __B,
    4242  						 (__v8hi)
    4243  						 _mm_setzero_si128 (),
    4244  						 (__mmask8) -1);
    4245  }
    4246  
    4247  extern __inline __m128i
    4248  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4249  _mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    4250  		     __m128i __B)
    4251  {
    4252    return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
    4253  						 (__v8hi) __B,
    4254  						 (__v8hi) __W,
    4255  						 (__mmask8) __U);
    4256  }
    4257  
    4258  extern __inline __m128i
    4259  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4260  _mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    4261  {
    4262    return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
    4263  						 (__v8hi) __B,
    4264  						 (__v8hi)
    4265  						 _mm_setzero_si128 (),
    4266  						 (__mmask8) __U);
    4267  }
    4268  
    4269  extern __inline __m256i
    4270  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4271  _mm256_sllv_epi16 (__m256i __A, __m256i __B)
    4272  {
    4273    return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
    4274  						  (__v16hi) __B,
    4275  						  (__v16hi)
    4276  						  _mm256_setzero_si256 (),
    4277  						  (__mmask16) -1);
    4278  }
    4279  
    4280  extern __inline __m256i
    4281  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4282  _mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    4283  			__m256i __B)
    4284  {
    4285    return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
    4286  						  (__v16hi) __B,
    4287  						  (__v16hi) __W,
    4288  						  (__mmask16) __U);
    4289  }
    4290  
    4291  extern __inline __m256i
    4292  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4293  _mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
    4294  {
    4295    return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
    4296  						  (__v16hi) __B,
    4297  						  (__v16hi)
    4298  						  _mm256_setzero_si256 (),
    4299  						  (__mmask16) __U);
    4300  }
    4301  
    4302  extern __inline __m128i
    4303  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4304  _mm_sllv_epi16 (__m128i __A, __m128i __B)
    4305  {
    4306    return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
    4307  						 (__v8hi) __B,
    4308  						 (__v8hi)
    4309  						 _mm_setzero_si128 (),
    4310  						 (__mmask8) -1);
    4311  }
    4312  
    4313  extern __inline __m128i
    4314  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4315  _mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    4316  		     __m128i __B)
    4317  {
    4318    return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
    4319  						 (__v8hi) __B,
    4320  						 (__v8hi) __W,
    4321  						 (__mmask8) __U);
    4322  }
    4323  
    4324  extern __inline __m128i
    4325  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4326  _mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    4327  {
    4328    return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
    4329  						 (__v8hi) __B,
    4330  						 (__v8hi)
    4331  						 _mm_setzero_si128 (),
    4332  						 (__mmask8) __U);
    4333  }
    4334  
    4335  extern __inline __m128i
    4336  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4337  _mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
    4338  		    __m128i __B)
    4339  {
    4340    return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
    4341  						 (__v8hi) __B,
    4342  						 (__v8hi) __W,
    4343  						 (__mmask8) __U);
    4344  }
    4345  
    4346  extern __inline __m128i
    4347  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4348  _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
    4349  {
    4350    return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
    4351  						 (__v8hi) __B,
    4352  						 (__v8hi)
    4353  						 _mm_setzero_si128 (),
    4354  						 (__mmask8) __U);
    4355  }
    4356  
    4357  extern __inline __m256i
    4358  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4359  _mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
    4360  		       __m128i __B)
    4361  {
    4362    return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
    4363  						 (__v8hi) __B,
    4364  						 (__v16hi) __W,
    4365  						 (__mmask16) __U);
    4366  }
    4367  
    4368  extern __inline __m256i
    4369  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4370  _mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
    4371  {
    4372    return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
    4373  						 (__v8hi) __B,
    4374  						 (__v16hi)
    4375  						 _mm256_setzero_si256 (),
    4376  						 (__mmask16) __U);
    4377  }
    4378  
    4379  extern __inline __m256i
    4380  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4381  _mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
    4382  {
    4383    return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
    4384  						    (__v8si) __B,
    4385  						    (__v16hi)
    4386  						    _mm256_setzero_si256 (),
    4387  						    __M);
    4388  }
    4389  
    4390  extern __inline __m256i
    4391  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4392  _mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
    4393  			  __m256i __B)
    4394  {
    4395    return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
    4396  						    (__v8si) __B,
    4397  						    (__v16hi) __W,
    4398  						    __M);
    4399  }
    4400  
    4401  extern __inline __m128i
    4402  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4403  _mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
    4404  {
    4405    return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
    4406  						    (__v4si) __B,
    4407  						    (__v8hi)
    4408  						    _mm_setzero_si128 (),
    4409  						    __M);
    4410  }
    4411  
    4412  extern __inline __m128i
    4413  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4414  _mm_mask_packus_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
    4415  		       __m128i __B)
    4416  {
    4417    return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
    4418  						    (__v4si) __B,
    4419  						    (__v8hi) __W, __M);
    4420  }
    4421  
    4422  extern __inline __m256i
    4423  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4424  _mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
    4425  {
    4426    return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
    4427  						    (__v8si) __B,
    4428  						    (__v16hi)
    4429  						    _mm256_setzero_si256 (),
    4430  						    __M);
    4431  }
    4432  
    4433  extern __inline __m256i
    4434  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4435  _mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
    4436  			 __m256i __B)
    4437  {
    4438    return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
    4439  						    (__v8si) __B,
    4440  						    (__v16hi) __W,
    4441  						    __M);
    4442  }
    4443  
    4444  extern __inline __m128i
    4445  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4446  _mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
    4447  {
    4448    return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
    4449  						    (__v4si) __B,
    4450  						    (__v8hi)
    4451  						    _mm_setzero_si128 (),
    4452  						    __M);
    4453  }
    4454  
    4455  extern __inline __m128i
    4456  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4457  _mm_mask_packs_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
    4458  		      __m128i __B)
    4459  {
    4460    return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
    4461  						    (__v4si) __B,
    4462  						    (__v8hi) __W, __M);
    4463  }
    4464  
    4465  extern __inline __mmask16
    4466  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4467  _mm_mask_cmpneq_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4468  {
    4469    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    4470  						   (__v16qi) __Y, 4,
    4471  						   (__mmask16) __M);
    4472  }
    4473  
    4474  extern __inline __mmask16
    4475  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4476  _mm_mask_cmplt_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4477  {
    4478    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    4479  						   (__v16qi) __Y, 1,
    4480  						   (__mmask16) __M);
    4481  }
    4482  
    4483  extern __inline __mmask16
    4484  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4485  _mm_mask_cmpge_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4486  {
    4487    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    4488  						   (__v16qi) __Y, 5,
    4489  						   (__mmask16) __M);
    4490  }
    4491  
    4492  extern __inline __mmask16
    4493  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4494  _mm_mask_cmple_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4495  {
    4496    return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
    4497  						   (__v16qi) __Y, 2,
    4498  						   (__mmask16) __M);
    4499  }
    4500  
    4501  extern __inline __mmask8
    4502  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4503  _mm_mask_cmpneq_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4504  {
    4505    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    4506  						  (__v8hi) __Y, 4,
    4507  						  (__mmask8) __M);
    4508  }
    4509  
    4510  extern __inline __mmask8
    4511  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4512  _mm_mask_cmplt_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4513  {
    4514    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    4515  						  (__v8hi) __Y, 1,
    4516  						  (__mmask8) __M);
    4517  }
    4518  
    4519  extern __inline __mmask8
    4520  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4521  _mm_mask_cmpge_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4522  {
    4523    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    4524  						  (__v8hi) __Y, 5,
    4525  						  (__mmask8) __M);
    4526  }
    4527  
    4528  extern __inline __mmask8
    4529  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4530  _mm_mask_cmple_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4531  {
    4532    return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
    4533  						  (__v8hi) __Y, 2,
    4534  						  (__mmask8) __M);
    4535  }
    4536  
    4537  extern __inline __mmask16
    4538  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4539  _mm_mask_cmpneq_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4540  {
    4541    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    4542  						  (__v16qi) __Y, 4,
    4543  						  (__mmask16) __M);
    4544  }
    4545  
    4546  extern __inline __mmask16
    4547  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4548  _mm_mask_cmplt_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4549  {
    4550    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    4551  						  (__v16qi) __Y, 1,
    4552  						  (__mmask16) __M);
    4553  }
    4554  
    4555  extern __inline __mmask16
    4556  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4557  _mm_mask_cmpge_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4558  {
    4559    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    4560  						  (__v16qi) __Y, 5,
    4561  						  (__mmask16) __M);
    4562  }
    4563  
    4564  extern __inline __mmask16
    4565  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4566  _mm_mask_cmple_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
    4567  {
    4568    return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
    4569  						  (__v16qi) __Y, 2,
    4570  						  (__mmask16) __M);
    4571  }
    4572  
    4573  extern __inline __mmask8
    4574  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4575  _mm_mask_cmpneq_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4576  {
    4577    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    4578  						 (__v8hi) __Y, 4,
    4579  						 (__mmask8) __M);
    4580  }
    4581  
    4582  extern __inline __mmask8
    4583  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4584  _mm_mask_cmplt_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4585  {
    4586    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    4587  						 (__v8hi) __Y, 1,
    4588  						 (__mmask8) __M);
    4589  }
    4590  
    4591  extern __inline __mmask8
    4592  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4593  _mm_mask_cmpge_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4594  {
    4595    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    4596  						 (__v8hi) __Y, 5,
    4597  						 (__mmask8) __M);
    4598  }
    4599  
    4600  extern __inline __mmask8
    4601  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4602  _mm_mask_cmple_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
    4603  {
    4604    return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
    4605  						 (__v8hi) __Y, 2,
    4606  						 (__mmask8) __M);
    4607  }
    4608  
    4609  extern __inline __mmask32
    4610  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4611  _mm256_mask_cmpneq_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4612  {
    4613    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    4614  						   (__v32qi) __Y, 4,
    4615  						   (__mmask32) __M);
    4616  }
    4617  
    4618  extern __inline __mmask32
    4619  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4620  _mm256_mask_cmplt_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4621  {
    4622    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    4623  						   (__v32qi) __Y, 1,
    4624  						   (__mmask32) __M);
    4625  }
    4626  
    4627  extern __inline __mmask32
    4628  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4629  _mm256_mask_cmpge_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4630  {
    4631    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    4632  						   (__v32qi) __Y, 5,
    4633  						   (__mmask32) __M);
    4634  }
    4635  
    4636  extern __inline __mmask32
    4637  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4638  _mm256_mask_cmple_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4639  {
    4640    return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
    4641  						   (__v32qi) __Y, 2,
    4642  						   (__mmask32) __M);
    4643  }
    4644  
    4645  extern __inline __mmask16
    4646  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4647  _mm256_mask_cmpneq_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4648  {
    4649    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    4650  						   (__v16hi) __Y, 4,
    4651  						   (__mmask16) __M);
    4652  }
    4653  
    4654  extern __inline __mmask16
    4655  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4656  _mm256_mask_cmplt_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4657  {
    4658    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    4659  						   (__v16hi) __Y, 1,
    4660  						   (__mmask16) __M);
    4661  }
    4662  
    4663  extern __inline __mmask16
    4664  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4665  _mm256_mask_cmpge_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4666  {
    4667    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    4668  						   (__v16hi) __Y, 5,
    4669  						   (__mmask16) __M);
    4670  }
    4671  
    4672  extern __inline __mmask16
    4673  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4674  _mm256_mask_cmple_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4675  {
    4676    return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
    4677  						   (__v16hi) __Y, 2,
    4678  						   (__mmask16) __M);
    4679  }
    4680  
    4681  extern __inline __mmask32
    4682  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4683  _mm256_mask_cmpneq_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4684  {
    4685    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    4686  						  (__v32qi) __Y, 4,
    4687  						  (__mmask32) __M);
    4688  }
    4689  
    4690  extern __inline __mmask32
    4691  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4692  _mm256_mask_cmplt_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4693  {
    4694    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    4695  						  (__v32qi) __Y, 1,
    4696  						  (__mmask32) __M);
    4697  }
    4698  
    4699  extern __inline __mmask32
    4700  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4701  _mm256_mask_cmpge_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4702  {
    4703    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    4704  						  (__v32qi) __Y, 5,
    4705  						  (__mmask32) __M);
    4706  }
    4707  
    4708  extern __inline __mmask32
    4709  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4710  _mm256_mask_cmple_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
    4711  {
    4712    return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
    4713  						  (__v32qi) __Y, 2,
    4714  						  (__mmask32) __M);
    4715  }
    4716  
    4717  extern __inline __mmask16
    4718  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4719  _mm256_mask_cmpneq_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4720  {
    4721    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    4722  						  (__v16hi) __Y, 4,
    4723  						  (__mmask16) __M);
    4724  }
    4725  
    4726  extern __inline __mmask16
    4727  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4728  _mm256_mask_cmplt_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4729  {
    4730    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    4731  						  (__v16hi) __Y, 1,
    4732  						  (__mmask16) __M);
    4733  }
    4734  
    4735  extern __inline __mmask16
    4736  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4737  _mm256_mask_cmpge_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4738  {
    4739    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    4740  						  (__v16hi) __Y, 5,
    4741  						  (__mmask16) __M);
    4742  }
    4743  
    4744  extern __inline __mmask16
    4745  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
    4746  _mm256_mask_cmple_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
    4747  {
    4748    return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
    4749  						  (__v16hi) __Y, 2,
    4750  						  (__mmask16) __M);
    4751  }
    4752  
    4753  #ifdef __DISABLE_AVX512VLBW__
    4754  #undef __DISABLE_AVX512VLBW__
    4755  #pragma GCC pop_options
    4756  #endif /* __DISABLE_AVX512VLBW__ */
    4757  
    4758  #endif /* _AVX512VLBWINTRIN_H_INCLUDED */