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