Home | History | Annotate | Line # | Download | only in i386
xopintrin.h revision 1.1.1.1.8.2
      1  1.1.1.1.8.2  tls /* Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
      2  1.1.1.1.8.2  tls 
      3  1.1.1.1.8.2  tls    This file is part of GCC.
      4  1.1.1.1.8.2  tls 
      5  1.1.1.1.8.2  tls    GCC is free software; you can redistribute it and/or modify
      6  1.1.1.1.8.2  tls    it under the terms of the GNU General Public License as published by
      7  1.1.1.1.8.2  tls    the Free Software Foundation; either version 3, or (at your option)
      8  1.1.1.1.8.2  tls    any later version.
      9  1.1.1.1.8.2  tls 
     10  1.1.1.1.8.2  tls    GCC is distributed in the hope that it will be useful,
     11  1.1.1.1.8.2  tls    but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  1.1.1.1.8.2  tls    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     13  1.1.1.1.8.2  tls    GNU General Public License for more details.
     14  1.1.1.1.8.2  tls 
     15  1.1.1.1.8.2  tls    Under Section 7 of GPL version 3, you are granted additional
     16  1.1.1.1.8.2  tls    permissions described in the GCC Runtime Library Exception, version
     17  1.1.1.1.8.2  tls    3.1, as published by the Free Software Foundation.
     18  1.1.1.1.8.2  tls 
     19  1.1.1.1.8.2  tls    You should have received a copy of the GNU General Public License and
     20  1.1.1.1.8.2  tls    a copy of the GCC Runtime Library Exception along with this program;
     21  1.1.1.1.8.2  tls    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
     22  1.1.1.1.8.2  tls    <http://www.gnu.org/licenses/>.  */
     23  1.1.1.1.8.2  tls 
     24  1.1.1.1.8.2  tls #ifndef _X86INTRIN_H_INCLUDED
     25  1.1.1.1.8.2  tls # error "Never use <xopintrin.h> directly; include <x86intrin.h> instead."
     26  1.1.1.1.8.2  tls #endif
     27  1.1.1.1.8.2  tls 
     28  1.1.1.1.8.2  tls #ifndef _XOPMMINTRIN_H_INCLUDED
     29  1.1.1.1.8.2  tls #define _XOPMMINTRIN_H_INCLUDED
     30  1.1.1.1.8.2  tls 
     31  1.1.1.1.8.2  tls #ifndef __XOP__
     32  1.1.1.1.8.2  tls # error "XOP instruction set not enabled"
     33  1.1.1.1.8.2  tls #else
     34  1.1.1.1.8.2  tls 
     35  1.1.1.1.8.2  tls #include <fma4intrin.h>
     36  1.1.1.1.8.2  tls 
     37  1.1.1.1.8.2  tls /* Integer multiply/add intructions. */
     38  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     39  1.1.1.1.8.2  tls _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
     40  1.1.1.1.8.2  tls {
     41  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpmacssww ((__v8hi)__A,(__v8hi)__B, (__v8hi)__C);
     42  1.1.1.1.8.2  tls }
     43  1.1.1.1.8.2  tls 
     44  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     45  1.1.1.1.8.2  tls _mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C)
     46  1.1.1.1.8.2  tls {
     47  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpmacsww ((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
     48  1.1.1.1.8.2  tls }
     49  1.1.1.1.8.2  tls 
     50  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     51  1.1.1.1.8.2  tls _mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C)
     52  1.1.1.1.8.2  tls {
     53  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacsswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
     54  1.1.1.1.8.2  tls }
     55  1.1.1.1.8.2  tls 
     56  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     57  1.1.1.1.8.2  tls _mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C)
     58  1.1.1.1.8.2  tls {
     59  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
     60  1.1.1.1.8.2  tls }
     61  1.1.1.1.8.2  tls 
     62  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     63  1.1.1.1.8.2  tls _mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C)
     64  1.1.1.1.8.2  tls {
     65  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacssdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
     66  1.1.1.1.8.2  tls }
     67  1.1.1.1.8.2  tls 
     68  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     69  1.1.1.1.8.2  tls _mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C)
     70  1.1.1.1.8.2  tls {
     71  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacsdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
     72  1.1.1.1.8.2  tls }
     73  1.1.1.1.8.2  tls 
     74  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     75  1.1.1.1.8.2  tls _mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C)
     76  1.1.1.1.8.2  tls {
     77  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacssdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
     78  1.1.1.1.8.2  tls }
     79  1.1.1.1.8.2  tls 
     80  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     81  1.1.1.1.8.2  tls _mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C)
     82  1.1.1.1.8.2  tls {
     83  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacsdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
     84  1.1.1.1.8.2  tls }
     85  1.1.1.1.8.2  tls 
     86  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     87  1.1.1.1.8.2  tls _mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C)
     88  1.1.1.1.8.2  tls {
     89  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacssdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
     90  1.1.1.1.8.2  tls }
     91  1.1.1.1.8.2  tls 
     92  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     93  1.1.1.1.8.2  tls _mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C)
     94  1.1.1.1.8.2  tls {
     95  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmacsdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
     96  1.1.1.1.8.2  tls }
     97  1.1.1.1.8.2  tls 
     98  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     99  1.1.1.1.8.2  tls _mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C)
    100  1.1.1.1.8.2  tls {
    101  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmadcsswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
    102  1.1.1.1.8.2  tls }
    103  1.1.1.1.8.2  tls 
    104  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    105  1.1.1.1.8.2  tls _mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C)
    106  1.1.1.1.8.2  tls {
    107  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpmadcswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
    108  1.1.1.1.8.2  tls }
    109  1.1.1.1.8.2  tls 
    110  1.1.1.1.8.2  tls /* Packed Integer Horizontal Add and Subtract */
    111  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    112  1.1.1.1.8.2  tls _mm_haddw_epi8(__m128i __A)
    113  1.1.1.1.8.2  tls {
    114  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddbw ((__v16qi)__A);
    115  1.1.1.1.8.2  tls }
    116  1.1.1.1.8.2  tls 
    117  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    118  1.1.1.1.8.2  tls _mm_haddd_epi8(__m128i __A)
    119  1.1.1.1.8.2  tls {
    120  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddbd ((__v16qi)__A);
    121  1.1.1.1.8.2  tls }
    122  1.1.1.1.8.2  tls 
    123  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    124  1.1.1.1.8.2  tls _mm_haddq_epi8(__m128i __A)
    125  1.1.1.1.8.2  tls {
    126  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddbq ((__v16qi)__A);
    127  1.1.1.1.8.2  tls }
    128  1.1.1.1.8.2  tls 
    129  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    130  1.1.1.1.8.2  tls _mm_haddd_epi16(__m128i __A)
    131  1.1.1.1.8.2  tls {
    132  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddwd ((__v8hi)__A);
    133  1.1.1.1.8.2  tls }
    134  1.1.1.1.8.2  tls 
    135  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    136  1.1.1.1.8.2  tls _mm_haddq_epi16(__m128i __A)
    137  1.1.1.1.8.2  tls {
    138  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddwq ((__v8hi)__A);
    139  1.1.1.1.8.2  tls }
    140  1.1.1.1.8.2  tls 
    141  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    142  1.1.1.1.8.2  tls _mm_haddq_epi32(__m128i __A)
    143  1.1.1.1.8.2  tls {
    144  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphadddq ((__v4si)__A);
    145  1.1.1.1.8.2  tls }
    146  1.1.1.1.8.2  tls 
    147  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    148  1.1.1.1.8.2  tls _mm_haddw_epu8(__m128i __A)
    149  1.1.1.1.8.2  tls {
    150  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddubw ((__v16qi)__A);
    151  1.1.1.1.8.2  tls }
    152  1.1.1.1.8.2  tls 
    153  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    154  1.1.1.1.8.2  tls _mm_haddd_epu8(__m128i __A)
    155  1.1.1.1.8.2  tls {
    156  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddubd ((__v16qi)__A);
    157  1.1.1.1.8.2  tls }
    158  1.1.1.1.8.2  tls 
    159  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    160  1.1.1.1.8.2  tls _mm_haddq_epu8(__m128i __A)
    161  1.1.1.1.8.2  tls {
    162  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddubq ((__v16qi)__A);
    163  1.1.1.1.8.2  tls }
    164  1.1.1.1.8.2  tls 
    165  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    166  1.1.1.1.8.2  tls _mm_haddd_epu16(__m128i __A)
    167  1.1.1.1.8.2  tls {
    168  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphadduwd ((__v8hi)__A);
    169  1.1.1.1.8.2  tls }
    170  1.1.1.1.8.2  tls 
    171  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    172  1.1.1.1.8.2  tls _mm_haddq_epu16(__m128i __A)
    173  1.1.1.1.8.2  tls {
    174  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphadduwq ((__v8hi)__A);
    175  1.1.1.1.8.2  tls }
    176  1.1.1.1.8.2  tls 
    177  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    178  1.1.1.1.8.2  tls _mm_haddq_epu32(__m128i __A)
    179  1.1.1.1.8.2  tls {
    180  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphaddudq ((__v4si)__A);
    181  1.1.1.1.8.2  tls }
    182  1.1.1.1.8.2  tls 
    183  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    184  1.1.1.1.8.2  tls _mm_hsubw_epi8(__m128i __A)
    185  1.1.1.1.8.2  tls {
    186  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphsubbw ((__v16qi)__A);
    187  1.1.1.1.8.2  tls }
    188  1.1.1.1.8.2  tls 
    189  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    190  1.1.1.1.8.2  tls _mm_hsubd_epi16(__m128i __A)
    191  1.1.1.1.8.2  tls {
    192  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphsubwd ((__v8hi)__A);
    193  1.1.1.1.8.2  tls }
    194  1.1.1.1.8.2  tls 
    195  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    196  1.1.1.1.8.2  tls _mm_hsubq_epi32(__m128i __A)
    197  1.1.1.1.8.2  tls {
    198  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vphsubdq ((__v4si)__A);
    199  1.1.1.1.8.2  tls }
    200  1.1.1.1.8.2  tls 
    201  1.1.1.1.8.2  tls /* Vector conditional move and permute */
    202  1.1.1.1.8.2  tls 
    203  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    204  1.1.1.1.8.2  tls _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
    205  1.1.1.1.8.2  tls {
    206  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpcmov (__A, __B, __C);
    207  1.1.1.1.8.2  tls }
    208  1.1.1.1.8.2  tls 
    209  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    210  1.1.1.1.8.2  tls _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
    211  1.1.1.1.8.2  tls {
    212  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpperm ((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
    213  1.1.1.1.8.2  tls }
    214  1.1.1.1.8.2  tls 
    215  1.1.1.1.8.2  tls /* Packed Integer Rotates and Shifts
    216  1.1.1.1.8.2  tls    Rotates - Non-Immediate form */
    217  1.1.1.1.8.2  tls 
    218  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    219  1.1.1.1.8.2  tls _mm_rot_epi8(__m128i __A,  __m128i __B)
    220  1.1.1.1.8.2  tls {
    221  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotb ((__v16qi)__A, (__v16qi)__B);
    222  1.1.1.1.8.2  tls }
    223  1.1.1.1.8.2  tls 
    224  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    225  1.1.1.1.8.2  tls _mm_rot_epi16(__m128i __A,  __m128i __B)
    226  1.1.1.1.8.2  tls {
    227  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotw ((__v8hi)__A, (__v8hi)__B);
    228  1.1.1.1.8.2  tls }
    229  1.1.1.1.8.2  tls 
    230  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    231  1.1.1.1.8.2  tls _mm_rot_epi32(__m128i __A,  __m128i __B)
    232  1.1.1.1.8.2  tls {
    233  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotd ((__v4si)__A, (__v4si)__B);
    234  1.1.1.1.8.2  tls }
    235  1.1.1.1.8.2  tls 
    236  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    237  1.1.1.1.8.2  tls _mm_rot_epi64(__m128i __A,  __m128i __B)
    238  1.1.1.1.8.2  tls {
    239  1.1.1.1.8.2  tls   return (__m128i)  __builtin_ia32_vprotq ((__v2di)__A, (__v2di)__B);
    240  1.1.1.1.8.2  tls }
    241  1.1.1.1.8.2  tls 
    242  1.1.1.1.8.2  tls /* Rotates - Immediate form */
    243  1.1.1.1.8.2  tls 
    244  1.1.1.1.8.2  tls #ifdef __OPTIMIZE__
    245  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    246  1.1.1.1.8.2  tls _mm_roti_epi8(__m128i __A, const int __B)
    247  1.1.1.1.8.2  tls {
    248  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotbi ((__v16qi)__A, __B);
    249  1.1.1.1.8.2  tls }
    250  1.1.1.1.8.2  tls 
    251  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    252  1.1.1.1.8.2  tls _mm_roti_epi16(__m128i __A, const int __B)
    253  1.1.1.1.8.2  tls {
    254  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotwi ((__v8hi)__A, __B);
    255  1.1.1.1.8.2  tls }
    256  1.1.1.1.8.2  tls 
    257  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    258  1.1.1.1.8.2  tls _mm_roti_epi32(__m128i __A, const int __B)
    259  1.1.1.1.8.2  tls {
    260  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotdi ((__v4si)__A, __B);
    261  1.1.1.1.8.2  tls }
    262  1.1.1.1.8.2  tls 
    263  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    264  1.1.1.1.8.2  tls _mm_roti_epi64(__m128i __A, const int __B)
    265  1.1.1.1.8.2  tls {
    266  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vprotqi ((__v2di)__A, __B);
    267  1.1.1.1.8.2  tls }
    268  1.1.1.1.8.2  tls #else
    269  1.1.1.1.8.2  tls #define _mm_roti_epi8(A, N) \
    270  1.1.1.1.8.2  tls   ((__m128i) __builtin_ia32_vprotbi ((__v16qi)(__m128i)(A), (int)(N)))
    271  1.1.1.1.8.2  tls #define _mm_roti_epi16(A, N) \
    272  1.1.1.1.8.2  tls   ((__m128i) __builtin_ia32_vprotwi ((__v8hi)(__m128i)(A), (int)(N)))
    273  1.1.1.1.8.2  tls #define _mm_roti_epi32(A, N) \
    274  1.1.1.1.8.2  tls   ((__m128i) __builtin_ia32_vprotdi ((__v4si)(__m128i)(A), (int)(N)))
    275  1.1.1.1.8.2  tls #define _mm_roti_epi64(A, N) \
    276  1.1.1.1.8.2  tls   ((__m128i) __builtin_ia32_vprotqi ((__v2di)(__m128i)(A), (int)(N)))
    277  1.1.1.1.8.2  tls #endif
    278  1.1.1.1.8.2  tls 
    279  1.1.1.1.8.2  tls /* Shifts */
    280  1.1.1.1.8.2  tls 
    281  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    282  1.1.1.1.8.2  tls _mm_shl_epi8(__m128i __A,  __m128i __B)
    283  1.1.1.1.8.2  tls {
    284  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshlb ((__v16qi)__A, (__v16qi)__B);
    285  1.1.1.1.8.2  tls }
    286  1.1.1.1.8.2  tls 
    287  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    288  1.1.1.1.8.2  tls _mm_shl_epi16(__m128i __A,  __m128i __B)
    289  1.1.1.1.8.2  tls {
    290  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshlw ((__v8hi)__A, (__v8hi)__B);
    291  1.1.1.1.8.2  tls }
    292  1.1.1.1.8.2  tls 
    293  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    294  1.1.1.1.8.2  tls _mm_shl_epi32(__m128i __A,  __m128i __B)
    295  1.1.1.1.8.2  tls {
    296  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshld ((__v4si)__A, (__v4si)__B);
    297  1.1.1.1.8.2  tls }
    298  1.1.1.1.8.2  tls 
    299  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    300  1.1.1.1.8.2  tls _mm_shl_epi64(__m128i __A,  __m128i __B)
    301  1.1.1.1.8.2  tls {
    302  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshlq ((__v2di)__A, (__v2di)__B);
    303  1.1.1.1.8.2  tls }
    304  1.1.1.1.8.2  tls 
    305  1.1.1.1.8.2  tls 
    306  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    307  1.1.1.1.8.2  tls _mm_sha_epi8(__m128i __A,  __m128i __B)
    308  1.1.1.1.8.2  tls {
    309  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshab ((__v16qi)__A, (__v16qi)__B);
    310  1.1.1.1.8.2  tls }
    311  1.1.1.1.8.2  tls 
    312  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    313  1.1.1.1.8.2  tls _mm_sha_epi16(__m128i __A,  __m128i __B)
    314  1.1.1.1.8.2  tls {
    315  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshaw ((__v8hi)__A, (__v8hi)__B);
    316  1.1.1.1.8.2  tls }
    317  1.1.1.1.8.2  tls 
    318  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    319  1.1.1.1.8.2  tls _mm_sha_epi32(__m128i __A,  __m128i __B)
    320  1.1.1.1.8.2  tls {
    321  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshad ((__v4si)__A, (__v4si)__B);
    322  1.1.1.1.8.2  tls }
    323  1.1.1.1.8.2  tls 
    324  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    325  1.1.1.1.8.2  tls _mm_sha_epi64(__m128i __A,  __m128i __B)
    326  1.1.1.1.8.2  tls {
    327  1.1.1.1.8.2  tls   return  (__m128i) __builtin_ia32_vpshaq ((__v2di)__A, (__v2di)__B);
    328  1.1.1.1.8.2  tls }
    329  1.1.1.1.8.2  tls 
    330  1.1.1.1.8.2  tls /* Compare and Predicate Generation
    331  1.1.1.1.8.2  tls    pcom (integer, unsinged bytes) */
    332  1.1.1.1.8.2  tls 
    333  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    334  1.1.1.1.8.2  tls _mm_comlt_epu8(__m128i __A, __m128i __B)
    335  1.1.1.1.8.2  tls {
    336  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltub ((__v16qi)__A, (__v16qi)__B);
    337  1.1.1.1.8.2  tls }
    338  1.1.1.1.8.2  tls 
    339  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    340  1.1.1.1.8.2  tls _mm_comle_epu8(__m128i __A, __m128i __B)
    341  1.1.1.1.8.2  tls {
    342  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomleub ((__v16qi)__A, (__v16qi)__B);
    343  1.1.1.1.8.2  tls }
    344  1.1.1.1.8.2  tls 
    345  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    346  1.1.1.1.8.2  tls _mm_comgt_epu8(__m128i __A, __m128i __B)
    347  1.1.1.1.8.2  tls {
    348  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtub ((__v16qi)__A, (__v16qi)__B);
    349  1.1.1.1.8.2  tls }
    350  1.1.1.1.8.2  tls 
    351  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    352  1.1.1.1.8.2  tls _mm_comge_epu8(__m128i __A, __m128i __B)
    353  1.1.1.1.8.2  tls {
    354  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgeub ((__v16qi)__A, (__v16qi)__B);
    355  1.1.1.1.8.2  tls }
    356  1.1.1.1.8.2  tls 
    357  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    358  1.1.1.1.8.2  tls _mm_comeq_epu8(__m128i __A, __m128i __B)
    359  1.1.1.1.8.2  tls {
    360  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomequb ((__v16qi)__A, (__v16qi)__B);
    361  1.1.1.1.8.2  tls }
    362  1.1.1.1.8.2  tls 
    363  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    364  1.1.1.1.8.2  tls _mm_comneq_epu8(__m128i __A, __m128i __B)
    365  1.1.1.1.8.2  tls {
    366  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomnequb ((__v16qi)__A, (__v16qi)__B);
    367  1.1.1.1.8.2  tls }
    368  1.1.1.1.8.2  tls 
    369  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    370  1.1.1.1.8.2  tls _mm_comfalse_epu8(__m128i __A, __m128i __B)
    371  1.1.1.1.8.2  tls {
    372  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalseub ((__v16qi)__A, (__v16qi)__B);
    373  1.1.1.1.8.2  tls }
    374  1.1.1.1.8.2  tls 
    375  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    376  1.1.1.1.8.2  tls _mm_comtrue_epu8(__m128i __A, __m128i __B)
    377  1.1.1.1.8.2  tls {
    378  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrueub ((__v16qi)__A, (__v16qi)__B);
    379  1.1.1.1.8.2  tls }
    380  1.1.1.1.8.2  tls 
    381  1.1.1.1.8.2  tls /*pcom (integer, unsinged words) */
    382  1.1.1.1.8.2  tls 
    383  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    384  1.1.1.1.8.2  tls _mm_comlt_epu16(__m128i __A, __m128i __B)
    385  1.1.1.1.8.2  tls {
    386  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltuw ((__v8hi)__A, (__v8hi)__B);
    387  1.1.1.1.8.2  tls }
    388  1.1.1.1.8.2  tls 
    389  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    390  1.1.1.1.8.2  tls _mm_comle_epu16(__m128i __A, __m128i __B)
    391  1.1.1.1.8.2  tls {
    392  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomleuw ((__v8hi)__A, (__v8hi)__B);
    393  1.1.1.1.8.2  tls }
    394  1.1.1.1.8.2  tls 
    395  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    396  1.1.1.1.8.2  tls _mm_comgt_epu16(__m128i __A, __m128i __B)
    397  1.1.1.1.8.2  tls {
    398  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtuw ((__v8hi)__A, (__v8hi)__B);
    399  1.1.1.1.8.2  tls }
    400  1.1.1.1.8.2  tls 
    401  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    402  1.1.1.1.8.2  tls _mm_comge_epu16(__m128i __A, __m128i __B)
    403  1.1.1.1.8.2  tls {
    404  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgeuw ((__v8hi)__A, (__v8hi)__B);
    405  1.1.1.1.8.2  tls }
    406  1.1.1.1.8.2  tls 
    407  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    408  1.1.1.1.8.2  tls _mm_comeq_epu16(__m128i __A, __m128i __B)
    409  1.1.1.1.8.2  tls {
    410  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomequw ((__v8hi)__A, (__v8hi)__B);
    411  1.1.1.1.8.2  tls }
    412  1.1.1.1.8.2  tls 
    413  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    414  1.1.1.1.8.2  tls _mm_comneq_epu16(__m128i __A, __m128i __B)
    415  1.1.1.1.8.2  tls {
    416  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomnequw ((__v8hi)__A, (__v8hi)__B);
    417  1.1.1.1.8.2  tls }
    418  1.1.1.1.8.2  tls 
    419  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    420  1.1.1.1.8.2  tls _mm_comfalse_epu16(__m128i __A, __m128i __B)
    421  1.1.1.1.8.2  tls {
    422  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalseuw ((__v8hi)__A, (__v8hi)__B);
    423  1.1.1.1.8.2  tls }
    424  1.1.1.1.8.2  tls 
    425  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    426  1.1.1.1.8.2  tls _mm_comtrue_epu16(__m128i __A, __m128i __B)
    427  1.1.1.1.8.2  tls {
    428  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrueuw ((__v8hi)__A, (__v8hi)__B);
    429  1.1.1.1.8.2  tls }
    430  1.1.1.1.8.2  tls 
    431  1.1.1.1.8.2  tls /*pcom (integer, unsinged double words) */
    432  1.1.1.1.8.2  tls 
    433  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    434  1.1.1.1.8.2  tls _mm_comlt_epu32(__m128i __A, __m128i __B)
    435  1.1.1.1.8.2  tls {
    436  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltud ((__v4si)__A, (__v4si)__B);
    437  1.1.1.1.8.2  tls }
    438  1.1.1.1.8.2  tls 
    439  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    440  1.1.1.1.8.2  tls _mm_comle_epu32(__m128i __A, __m128i __B)
    441  1.1.1.1.8.2  tls {
    442  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomleud ((__v4si)__A, (__v4si)__B);
    443  1.1.1.1.8.2  tls }
    444  1.1.1.1.8.2  tls 
    445  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    446  1.1.1.1.8.2  tls _mm_comgt_epu32(__m128i __A, __m128i __B)
    447  1.1.1.1.8.2  tls {
    448  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtud ((__v4si)__A, (__v4si)__B);
    449  1.1.1.1.8.2  tls }
    450  1.1.1.1.8.2  tls 
    451  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    452  1.1.1.1.8.2  tls _mm_comge_epu32(__m128i __A, __m128i __B)
    453  1.1.1.1.8.2  tls {
    454  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgeud ((__v4si)__A, (__v4si)__B);
    455  1.1.1.1.8.2  tls }
    456  1.1.1.1.8.2  tls 
    457  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    458  1.1.1.1.8.2  tls _mm_comeq_epu32(__m128i __A, __m128i __B)
    459  1.1.1.1.8.2  tls {
    460  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomequd ((__v4si)__A, (__v4si)__B);
    461  1.1.1.1.8.2  tls }
    462  1.1.1.1.8.2  tls 
    463  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    464  1.1.1.1.8.2  tls _mm_comneq_epu32(__m128i __A, __m128i __B)
    465  1.1.1.1.8.2  tls {
    466  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomnequd ((__v4si)__A, (__v4si)__B);
    467  1.1.1.1.8.2  tls }
    468  1.1.1.1.8.2  tls 
    469  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    470  1.1.1.1.8.2  tls _mm_comfalse_epu32(__m128i __A, __m128i __B)
    471  1.1.1.1.8.2  tls {
    472  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalseud ((__v4si)__A, (__v4si)__B);
    473  1.1.1.1.8.2  tls }
    474  1.1.1.1.8.2  tls 
    475  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    476  1.1.1.1.8.2  tls _mm_comtrue_epu32(__m128i __A, __m128i __B)
    477  1.1.1.1.8.2  tls {
    478  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrueud ((__v4si)__A, (__v4si)__B);
    479  1.1.1.1.8.2  tls }
    480  1.1.1.1.8.2  tls 
    481  1.1.1.1.8.2  tls /*pcom (integer, unsinged quad words) */
    482  1.1.1.1.8.2  tls 
    483  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    484  1.1.1.1.8.2  tls _mm_comlt_epu64(__m128i __A, __m128i __B)
    485  1.1.1.1.8.2  tls {
    486  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltuq ((__v2di)__A, (__v2di)__B);
    487  1.1.1.1.8.2  tls }
    488  1.1.1.1.8.2  tls 
    489  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    490  1.1.1.1.8.2  tls _mm_comle_epu64(__m128i __A, __m128i __B)
    491  1.1.1.1.8.2  tls {
    492  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomleuq ((__v2di)__A, (__v2di)__B);
    493  1.1.1.1.8.2  tls }
    494  1.1.1.1.8.2  tls 
    495  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    496  1.1.1.1.8.2  tls _mm_comgt_epu64(__m128i __A, __m128i __B)
    497  1.1.1.1.8.2  tls {
    498  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtuq ((__v2di)__A, (__v2di)__B);
    499  1.1.1.1.8.2  tls }
    500  1.1.1.1.8.2  tls 
    501  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    502  1.1.1.1.8.2  tls _mm_comge_epu64(__m128i __A, __m128i __B)
    503  1.1.1.1.8.2  tls {
    504  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgeuq ((__v2di)__A, (__v2di)__B);
    505  1.1.1.1.8.2  tls }
    506  1.1.1.1.8.2  tls 
    507  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    508  1.1.1.1.8.2  tls _mm_comeq_epu64(__m128i __A, __m128i __B)
    509  1.1.1.1.8.2  tls {
    510  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomequq ((__v2di)__A, (__v2di)__B);
    511  1.1.1.1.8.2  tls }
    512  1.1.1.1.8.2  tls 
    513  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    514  1.1.1.1.8.2  tls _mm_comneq_epu64(__m128i __A, __m128i __B)
    515  1.1.1.1.8.2  tls {
    516  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomnequq ((__v2di)__A, (__v2di)__B);
    517  1.1.1.1.8.2  tls }
    518  1.1.1.1.8.2  tls 
    519  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    520  1.1.1.1.8.2  tls _mm_comfalse_epu64(__m128i __A, __m128i __B)
    521  1.1.1.1.8.2  tls {
    522  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalseuq ((__v2di)__A, (__v2di)__B);
    523  1.1.1.1.8.2  tls }
    524  1.1.1.1.8.2  tls 
    525  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    526  1.1.1.1.8.2  tls _mm_comtrue_epu64(__m128i __A, __m128i __B)
    527  1.1.1.1.8.2  tls {
    528  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrueuq ((__v2di)__A, (__v2di)__B);
    529  1.1.1.1.8.2  tls }
    530  1.1.1.1.8.2  tls 
    531  1.1.1.1.8.2  tls /*pcom (integer, signed bytes) */
    532  1.1.1.1.8.2  tls 
    533  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    534  1.1.1.1.8.2  tls _mm_comlt_epi8(__m128i __A, __m128i __B)
    535  1.1.1.1.8.2  tls {
    536  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltb ((__v16qi)__A, (__v16qi)__B);
    537  1.1.1.1.8.2  tls }
    538  1.1.1.1.8.2  tls 
    539  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    540  1.1.1.1.8.2  tls _mm_comle_epi8(__m128i __A, __m128i __B)
    541  1.1.1.1.8.2  tls {
    542  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomleb ((__v16qi)__A, (__v16qi)__B);
    543  1.1.1.1.8.2  tls }
    544  1.1.1.1.8.2  tls 
    545  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    546  1.1.1.1.8.2  tls _mm_comgt_epi8(__m128i __A, __m128i __B)
    547  1.1.1.1.8.2  tls {
    548  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtb ((__v16qi)__A, (__v16qi)__B);
    549  1.1.1.1.8.2  tls }
    550  1.1.1.1.8.2  tls 
    551  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    552  1.1.1.1.8.2  tls _mm_comge_epi8(__m128i __A, __m128i __B)
    553  1.1.1.1.8.2  tls {
    554  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgeb ((__v16qi)__A, (__v16qi)__B);
    555  1.1.1.1.8.2  tls }
    556  1.1.1.1.8.2  tls 
    557  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    558  1.1.1.1.8.2  tls _mm_comeq_epi8(__m128i __A, __m128i __B)
    559  1.1.1.1.8.2  tls {
    560  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomeqb ((__v16qi)__A, (__v16qi)__B);
    561  1.1.1.1.8.2  tls }
    562  1.1.1.1.8.2  tls 
    563  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    564  1.1.1.1.8.2  tls _mm_comneq_epi8(__m128i __A, __m128i __B)
    565  1.1.1.1.8.2  tls {
    566  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomneqb ((__v16qi)__A, (__v16qi)__B);
    567  1.1.1.1.8.2  tls }
    568  1.1.1.1.8.2  tls 
    569  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    570  1.1.1.1.8.2  tls _mm_comfalse_epi8(__m128i __A, __m128i __B)
    571  1.1.1.1.8.2  tls {
    572  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalseb ((__v16qi)__A, (__v16qi)__B);
    573  1.1.1.1.8.2  tls }
    574  1.1.1.1.8.2  tls 
    575  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    576  1.1.1.1.8.2  tls _mm_comtrue_epi8(__m128i __A, __m128i __B)
    577  1.1.1.1.8.2  tls {
    578  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrueb ((__v16qi)__A, (__v16qi)__B);
    579  1.1.1.1.8.2  tls }
    580  1.1.1.1.8.2  tls 
    581  1.1.1.1.8.2  tls /*pcom (integer, signed words) */
    582  1.1.1.1.8.2  tls 
    583  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    584  1.1.1.1.8.2  tls _mm_comlt_epi16(__m128i __A, __m128i __B)
    585  1.1.1.1.8.2  tls {
    586  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltw ((__v8hi)__A, (__v8hi)__B);
    587  1.1.1.1.8.2  tls }
    588  1.1.1.1.8.2  tls 
    589  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    590  1.1.1.1.8.2  tls _mm_comle_epi16(__m128i __A, __m128i __B)
    591  1.1.1.1.8.2  tls {
    592  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomlew ((__v8hi)__A, (__v8hi)__B);
    593  1.1.1.1.8.2  tls }
    594  1.1.1.1.8.2  tls 
    595  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    596  1.1.1.1.8.2  tls _mm_comgt_epi16(__m128i __A, __m128i __B)
    597  1.1.1.1.8.2  tls {
    598  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtw ((__v8hi)__A, (__v8hi)__B);
    599  1.1.1.1.8.2  tls }
    600  1.1.1.1.8.2  tls 
    601  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    602  1.1.1.1.8.2  tls _mm_comge_epi16(__m128i __A, __m128i __B)
    603  1.1.1.1.8.2  tls {
    604  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgew ((__v8hi)__A, (__v8hi)__B);
    605  1.1.1.1.8.2  tls }
    606  1.1.1.1.8.2  tls 
    607  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    608  1.1.1.1.8.2  tls _mm_comeq_epi16(__m128i __A, __m128i __B)
    609  1.1.1.1.8.2  tls {
    610  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomeqw ((__v8hi)__A, (__v8hi)__B);
    611  1.1.1.1.8.2  tls }
    612  1.1.1.1.8.2  tls 
    613  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    614  1.1.1.1.8.2  tls _mm_comneq_epi16(__m128i __A, __m128i __B)
    615  1.1.1.1.8.2  tls {
    616  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomneqw ((__v8hi)__A, (__v8hi)__B);
    617  1.1.1.1.8.2  tls }
    618  1.1.1.1.8.2  tls 
    619  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    620  1.1.1.1.8.2  tls _mm_comfalse_epi16(__m128i __A, __m128i __B)
    621  1.1.1.1.8.2  tls {
    622  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalsew ((__v8hi)__A, (__v8hi)__B);
    623  1.1.1.1.8.2  tls }
    624  1.1.1.1.8.2  tls 
    625  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    626  1.1.1.1.8.2  tls _mm_comtrue_epi16(__m128i __A, __m128i __B)
    627  1.1.1.1.8.2  tls {
    628  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtruew ((__v8hi)__A, (__v8hi)__B);
    629  1.1.1.1.8.2  tls }
    630  1.1.1.1.8.2  tls 
    631  1.1.1.1.8.2  tls /*pcom (integer, signed double words) */
    632  1.1.1.1.8.2  tls 
    633  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    634  1.1.1.1.8.2  tls _mm_comlt_epi32(__m128i __A, __m128i __B)
    635  1.1.1.1.8.2  tls {
    636  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltd ((__v4si)__A, (__v4si)__B);
    637  1.1.1.1.8.2  tls }
    638  1.1.1.1.8.2  tls 
    639  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    640  1.1.1.1.8.2  tls _mm_comle_epi32(__m128i __A, __m128i __B)
    641  1.1.1.1.8.2  tls {
    642  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomled ((__v4si)__A, (__v4si)__B);
    643  1.1.1.1.8.2  tls }
    644  1.1.1.1.8.2  tls 
    645  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    646  1.1.1.1.8.2  tls _mm_comgt_epi32(__m128i __A, __m128i __B)
    647  1.1.1.1.8.2  tls {
    648  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtd ((__v4si)__A, (__v4si)__B);
    649  1.1.1.1.8.2  tls }
    650  1.1.1.1.8.2  tls 
    651  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    652  1.1.1.1.8.2  tls _mm_comge_epi32(__m128i __A, __m128i __B)
    653  1.1.1.1.8.2  tls {
    654  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomged ((__v4si)__A, (__v4si)__B);
    655  1.1.1.1.8.2  tls }
    656  1.1.1.1.8.2  tls 
    657  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    658  1.1.1.1.8.2  tls _mm_comeq_epi32(__m128i __A, __m128i __B)
    659  1.1.1.1.8.2  tls {
    660  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomeqd ((__v4si)__A, (__v4si)__B);
    661  1.1.1.1.8.2  tls }
    662  1.1.1.1.8.2  tls 
    663  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    664  1.1.1.1.8.2  tls _mm_comneq_epi32(__m128i __A, __m128i __B)
    665  1.1.1.1.8.2  tls {
    666  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomneqd ((__v4si)__A, (__v4si)__B);
    667  1.1.1.1.8.2  tls }
    668  1.1.1.1.8.2  tls 
    669  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    670  1.1.1.1.8.2  tls _mm_comfalse_epi32(__m128i __A, __m128i __B)
    671  1.1.1.1.8.2  tls {
    672  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalsed ((__v4si)__A, (__v4si)__B);
    673  1.1.1.1.8.2  tls }
    674  1.1.1.1.8.2  tls 
    675  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    676  1.1.1.1.8.2  tls _mm_comtrue_epi32(__m128i __A, __m128i __B)
    677  1.1.1.1.8.2  tls {
    678  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrued ((__v4si)__A, (__v4si)__B);
    679  1.1.1.1.8.2  tls }
    680  1.1.1.1.8.2  tls 
    681  1.1.1.1.8.2  tls /*pcom (integer, signed quad words) */
    682  1.1.1.1.8.2  tls 
    683  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    684  1.1.1.1.8.2  tls _mm_comlt_epi64(__m128i __A, __m128i __B)
    685  1.1.1.1.8.2  tls {
    686  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomltq ((__v2di)__A, (__v2di)__B);
    687  1.1.1.1.8.2  tls }
    688  1.1.1.1.8.2  tls 
    689  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    690  1.1.1.1.8.2  tls _mm_comle_epi64(__m128i __A, __m128i __B)
    691  1.1.1.1.8.2  tls {
    692  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomleq ((__v2di)__A, (__v2di)__B);
    693  1.1.1.1.8.2  tls }
    694  1.1.1.1.8.2  tls 
    695  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    696  1.1.1.1.8.2  tls _mm_comgt_epi64(__m128i __A, __m128i __B)
    697  1.1.1.1.8.2  tls {
    698  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgtq ((__v2di)__A, (__v2di)__B);
    699  1.1.1.1.8.2  tls }
    700  1.1.1.1.8.2  tls 
    701  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    702  1.1.1.1.8.2  tls _mm_comge_epi64(__m128i __A, __m128i __B)
    703  1.1.1.1.8.2  tls {
    704  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomgeq ((__v2di)__A, (__v2di)__B);
    705  1.1.1.1.8.2  tls }
    706  1.1.1.1.8.2  tls 
    707  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    708  1.1.1.1.8.2  tls _mm_comeq_epi64(__m128i __A, __m128i __B)
    709  1.1.1.1.8.2  tls {
    710  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomeqq ((__v2di)__A, (__v2di)__B);
    711  1.1.1.1.8.2  tls }
    712  1.1.1.1.8.2  tls 
    713  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    714  1.1.1.1.8.2  tls _mm_comneq_epi64(__m128i __A, __m128i __B)
    715  1.1.1.1.8.2  tls {
    716  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomneqq ((__v2di)__A, (__v2di)__B);
    717  1.1.1.1.8.2  tls }
    718  1.1.1.1.8.2  tls 
    719  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    720  1.1.1.1.8.2  tls _mm_comfalse_epi64(__m128i __A, __m128i __B)
    721  1.1.1.1.8.2  tls {
    722  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomfalseq ((__v2di)__A, (__v2di)__B);
    723  1.1.1.1.8.2  tls }
    724  1.1.1.1.8.2  tls 
    725  1.1.1.1.8.2  tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    726  1.1.1.1.8.2  tls _mm_comtrue_epi64(__m128i __A, __m128i __B)
    727  1.1.1.1.8.2  tls {
    728  1.1.1.1.8.2  tls   return (__m128i) __builtin_ia32_vpcomtrueq ((__v2di)__A, (__v2di)__B);
    729  1.1.1.1.8.2  tls }
    730  1.1.1.1.8.2  tls 
    731  1.1.1.1.8.2  tls /* FRCZ */
    732  1.1.1.1.8.2  tls 
    733  1.1.1.1.8.2  tls extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    734  1.1.1.1.8.2  tls _mm_frcz_ps (__m128 __A)
    735  1.1.1.1.8.2  tls {
    736  1.1.1.1.8.2  tls   return (__m128) __builtin_ia32_vfrczps ((__v4sf)__A);
    737  1.1.1.1.8.2  tls }
    738  1.1.1.1.8.2  tls 
    739  1.1.1.1.8.2  tls extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    740  1.1.1.1.8.2  tls _mm_frcz_pd (__m128d __A)
    741  1.1.1.1.8.2  tls {
    742  1.1.1.1.8.2  tls   return (__m128d) __builtin_ia32_vfrczpd ((__v2df)__A);
    743  1.1.1.1.8.2  tls }
    744  1.1.1.1.8.2  tls 
    745  1.1.1.1.8.2  tls extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    746  1.1.1.1.8.2  tls _mm_frcz_ss (__m128 __A, __m128 __B)
    747  1.1.1.1.8.2  tls {
    748  1.1.1.1.8.2  tls   return (__m128) __builtin_ia32_vfrczss ((__v4sf)__A, (__v4sf)__B);
    749  1.1.1.1.8.2  tls }
    750  1.1.1.1.8.2  tls 
    751  1.1.1.1.8.2  tls extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    752  1.1.1.1.8.2  tls _mm_frcz_sd (__m128d __A, __m128d __B)
    753  1.1.1.1.8.2  tls {
    754  1.1.1.1.8.2  tls   return (__m128d) __builtin_ia32_vfrczsd ((__v2df)__A, (__v2df)__B);
    755  1.1.1.1.8.2  tls }
    756  1.1.1.1.8.2  tls 
    757  1.1.1.1.8.2  tls extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    758  1.1.1.1.8.2  tls _mm256_frcz_ps (__m256 __A)
    759  1.1.1.1.8.2  tls {
    760  1.1.1.1.8.2  tls   return (__m256) __builtin_ia32_vfrczps256 ((__v8sf)__A);
    761  1.1.1.1.8.2  tls }
    762  1.1.1.1.8.2  tls 
    763  1.1.1.1.8.2  tls extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    764  1.1.1.1.8.2  tls _mm256_frcz_pd (__m256d __A)
    765  1.1.1.1.8.2  tls {
    766  1.1.1.1.8.2  tls   return (__m256d) __builtin_ia32_vfrczpd256 ((__v4df)__A);
    767  1.1.1.1.8.2  tls }
    768  1.1.1.1.8.2  tls 
    769  1.1.1.1.8.2  tls /* PERMIL2 */
    770  1.1.1.1.8.2  tls 
    771  1.1.1.1.8.2  tls #ifdef __OPTIMIZE__
    772  1.1.1.1.8.2  tls extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    773  1.1.1.1.8.2  tls _mm_permute2_pd (__m128d __X, __m128d __Y, __m128i __C, const int __I)
    774  1.1.1.1.8.2  tls {
    775  1.1.1.1.8.2  tls   return (__m128d) __builtin_ia32_vpermil2pd ((__v2df)__X,
    776  1.1.1.1.8.2  tls 					      (__v2df)__Y,
    777  1.1.1.1.8.2  tls 					      (__v2di)__C,
    778  1.1.1.1.8.2  tls 					      __I);
    779  1.1.1.1.8.2  tls }
    780  1.1.1.1.8.2  tls 
    781  1.1.1.1.8.2  tls extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    782  1.1.1.1.8.2  tls _mm256_permute2_pd (__m256d __X, __m256d __Y, __m256i __C, const int __I)
    783  1.1.1.1.8.2  tls {
    784  1.1.1.1.8.2  tls   return (__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)__X,
    785  1.1.1.1.8.2  tls 						 (__v4df)__Y,
    786  1.1.1.1.8.2  tls 						 (__v4di)__C,
    787  1.1.1.1.8.2  tls 						 __I);
    788  1.1.1.1.8.2  tls }
    789  1.1.1.1.8.2  tls 
    790  1.1.1.1.8.2  tls extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    791  1.1.1.1.8.2  tls _mm_permute2_ps (__m128 __X, __m128 __Y, __m128i __C, const int __I)
    792  1.1.1.1.8.2  tls {
    793  1.1.1.1.8.2  tls   return (__m128) __builtin_ia32_vpermil2ps ((__v4sf)__X,
    794  1.1.1.1.8.2  tls 					     (__v4sf)__Y,
    795  1.1.1.1.8.2  tls 					     (__v4si)__C,
    796  1.1.1.1.8.2  tls 					     __I);
    797  1.1.1.1.8.2  tls }
    798  1.1.1.1.8.2  tls 
    799  1.1.1.1.8.2  tls extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    800  1.1.1.1.8.2  tls _mm256_permute2_ps (__m256 __X, __m256 __Y, __m256i __C, const int __I)
    801  1.1.1.1.8.2  tls {
    802  1.1.1.1.8.2  tls   return (__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)__X,
    803  1.1.1.1.8.2  tls 						(__v8sf)__Y,
    804  1.1.1.1.8.2  tls 						(__v8si)__C,
    805  1.1.1.1.8.2  tls 						__I);
    806  1.1.1.1.8.2  tls }
    807  1.1.1.1.8.2  tls #else
    808  1.1.1.1.8.2  tls #define _mm_permute2_pd(X, Y, C, I)					\
    809  1.1.1.1.8.2  tls   ((__m128d) __builtin_ia32_vpermil2pd ((__v2df)(__m128d)(X),		\
    810  1.1.1.1.8.2  tls 					(__v2df)(__m128d)(Y),		\
    811  1.1.1.1.8.2  tls 					(__v2di)(__m128d)(C),		\
    812  1.1.1.1.8.2  tls 					(int)(I)))
    813  1.1.1.1.8.2  tls 
    814  1.1.1.1.8.2  tls #define _mm256_permute2_pd(X, Y, C, I)					\
    815  1.1.1.1.8.2  tls   ((__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)(__m256d)(X),	\
    816  1.1.1.1.8.2  tls 					   (__v4df)(__m256d)(Y),	\
    817  1.1.1.1.8.2  tls 					   (__v4di)(__m256d)(C),	\
    818  1.1.1.1.8.2  tls 					   (int)(I)))
    819  1.1.1.1.8.2  tls 
    820  1.1.1.1.8.2  tls #define _mm_permute2_ps(X, Y, C, I)					\
    821  1.1.1.1.8.2  tls   ((__m128) __builtin_ia32_vpermil2ps ((__v4sf)(__m128)(X),		\
    822  1.1.1.1.8.2  tls 				       (__v4sf)(__m128)(Y),		\
    823  1.1.1.1.8.2  tls 				       (__v4si)(__m128)(C),		\
    824  1.1.1.1.8.2  tls 				       (int)(I)))
    825  1.1.1.1.8.2  tls 
    826  1.1.1.1.8.2  tls #define _mm256_permute2_ps(X, Y, C, I)					\
    827  1.1.1.1.8.2  tls   ((__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)(__m256)(X),		\
    828  1.1.1.1.8.2  tls 					  (__v8sf)(__m256)(Y),  	\
    829  1.1.1.1.8.2  tls 					  (__v8si)(__m256)(C),		\
    830  1.1.1.1.8.2  tls  					  (int)(I)))
    831  1.1.1.1.8.2  tls #endif /* __OPTIMIZE__ */
    832  1.1.1.1.8.2  tls 
    833  1.1.1.1.8.2  tls #endif /* __XOP__ */
    834  1.1.1.1.8.2  tls 
    835  1.1.1.1.8.2  tls #endif /* _XOPMMINTRIN_H_INCLUDED */
    836