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