LCOV - code coverage report
Current view: top level - usr/lib/gcc/x86_64-linux-gnu/9/include - tmmintrin.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 7 9 77.8 %
Date: 2019-11-25 17:12:20 Functions: 0 0 -

          Line data    Source code
       1             : /* Copyright (C) 2006-2019 Free Software Foundation, Inc.
       2             : 
       3             :    This file is part of GCC.
       4             : 
       5             :    GCC is free software; you can redistribute it and/or modify
       6             :    it under the terms of the GNU General Public License as published by
       7             :    the Free Software Foundation; either version 3, or (at your option)
       8             :    any later version.
       9             : 
      10             :    GCC is distributed in the hope that it will be useful,
      11             :    but WITHOUT ANY WARRANTY; without even the implied warranty of
      12             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      13             :    GNU General Public License for more details.
      14             : 
      15             :    Under Section 7 of GPL version 3, you are granted additional
      16             :    permissions described in the GCC Runtime Library Exception, version
      17             :    3.1, as published by the Free Software Foundation.
      18             : 
      19             :    You should have received a copy of the GNU General Public License and
      20             :    a copy of the GCC Runtime Library Exception along with this program;
      21             :    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
      22             :    <http://www.gnu.org/licenses/>.  */
      23             : 
      24             : /* Implemented from the specification included in the Intel C++ Compiler
      25             :    User Guide and Reference, version 9.1.  */
      26             : 
      27             : #ifndef _TMMINTRIN_H_INCLUDED
      28             : #define _TMMINTRIN_H_INCLUDED
      29             : 
      30             : /* We need definitions from the SSE3, SSE2 and SSE header files*/
      31             : #include <pmmintrin.h>
      32             : 
      33             : #ifndef __SSSE3__
      34             : #pragma GCC push_options
      35             : #pragma GCC target("ssse3")
      36             : #define __DISABLE_SSSE3__
      37             : #endif /* __SSSE3__ */
      38             : 
      39             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      40             : _mm_hadd_epi16 (__m128i __X, __m128i __Y)
      41             : {
      42   136182000 :   return (__m128i) __builtin_ia32_phaddw128 ((__v8hi)__X, (__v8hi)__Y);
      43             : }
      44             : 
      45             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      46             : _mm_hadd_epi32 (__m128i __X, __m128i __Y)
      47             : {
      48    74279360 :   return (__m128i) __builtin_ia32_phaddd128 ((__v4si)__X, (__v4si)__Y);
      49             : }
      50             : 
      51             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      52             : _mm_hadds_epi16 (__m128i __X, __m128i __Y)
      53             : {
      54           0 :   return (__m128i) __builtin_ia32_phaddsw128 ((__v8hi)__X, (__v8hi)__Y);
      55             : }
      56             : 
      57             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      58             : _mm_hadd_pi16 (__m64 __X, __m64 __Y)
      59             : {
      60             :   return (__m64) __builtin_ia32_phaddw ((__v4hi)__X, (__v4hi)__Y);
      61             : }
      62             : 
      63             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      64             : _mm_hadd_pi32 (__m64 __X, __m64 __Y)
      65             : {
      66             :   return (__m64) __builtin_ia32_phaddd ((__v2si)__X, (__v2si)__Y);
      67             : }
      68             : 
      69             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      70             : _mm_hadds_pi16 (__m64 __X, __m64 __Y)
      71             : {
      72             :   return (__m64) __builtin_ia32_phaddsw ((__v4hi)__X, (__v4hi)__Y);
      73             : }
      74             : 
      75             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      76             : _mm_hsub_epi16 (__m128i __X, __m128i __Y)
      77             : {
      78           0 :   return (__m128i) __builtin_ia32_phsubw128 ((__v8hi)__X, (__v8hi)__Y);
      79             : }
      80             : 
      81             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      82             : _mm_hsub_epi32 (__m128i __X, __m128i __Y)
      83             : {
      84             :   return (__m128i) __builtin_ia32_phsubd128 ((__v4si)__X, (__v4si)__Y);
      85             : }
      86             : 
      87             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      88             : _mm_hsubs_epi16 (__m128i __X, __m128i __Y)
      89             : {
      90             :   return (__m128i) __builtin_ia32_phsubsw128 ((__v8hi)__X, (__v8hi)__Y);
      91             : }
      92             : 
      93             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
      94             : _mm_hsub_pi16 (__m64 __X, __m64 __Y)
      95             : {
      96             :   return (__m64) __builtin_ia32_phsubw ((__v4hi)__X, (__v4hi)__Y);
      97             : }
      98             : 
      99             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     100             : _mm_hsub_pi32 (__m64 __X, __m64 __Y)
     101             : {
     102             :   return (__m64) __builtin_ia32_phsubd ((__v2si)__X, (__v2si)__Y);
     103             : }
     104             : 
     105             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     106             : _mm_hsubs_pi16 (__m64 __X, __m64 __Y)
     107             : {
     108             :   return (__m64) __builtin_ia32_phsubsw ((__v4hi)__X, (__v4hi)__Y);
     109             : }
     110             : 
     111             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     112             : _mm_maddubs_epi16 (__m128i __X, __m128i __Y)
     113             : {
     114  2586966500 :   return (__m128i) __builtin_ia32_pmaddubsw128 ((__v16qi)__X, (__v16qi)__Y);
     115             : }
     116             : 
     117             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     118             : _mm_maddubs_pi16 (__m64 __X, __m64 __Y)
     119             : {
     120             :   return (__m64) __builtin_ia32_pmaddubsw ((__v8qi)__X, (__v8qi)__Y);
     121             : }
     122             : 
     123             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     124             : _mm_mulhrs_epi16 (__m128i __X, __m128i __Y)
     125             : {
     126  1643407000 :   return (__m128i) __builtin_ia32_pmulhrsw128 ((__v8hi)__X, (__v8hi)__Y);
     127             : }
     128             : 
     129             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     130             : _mm_mulhrs_pi16 (__m64 __X, __m64 __Y)
     131             : {
     132             :   return (__m64) __builtin_ia32_pmulhrsw ((__v4hi)__X, (__v4hi)__Y);
     133             : }
     134             : 
     135             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     136             : _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
     137             : {
     138   819137626 :   return (__m128i) __builtin_ia32_pshufb128 ((__v16qi)__X, (__v16qi)__Y);
     139             : }
     140             : 
     141             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     142             : _mm_shuffle_pi8 (__m64 __X, __m64 __Y)
     143             : {
     144             :   return (__m64) __builtin_ia32_pshufb ((__v8qi)__X, (__v8qi)__Y);
     145             : }
     146             : 
     147             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     148             : _mm_sign_epi8 (__m128i __X, __m128i __Y)
     149             : {
     150             :   return (__m128i) __builtin_ia32_psignb128 ((__v16qi)__X, (__v16qi)__Y);
     151             : }
     152             : 
     153             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     154             : _mm_sign_epi16 (__m128i __X, __m128i __Y)
     155             : {
     156   145805000 :   return (__m128i) __builtin_ia32_psignw128 ((__v8hi)__X, (__v8hi)__Y);
     157             : }
     158             : 
     159             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     160             : _mm_sign_epi32 (__m128i __X, __m128i __Y)
     161             : {
     162             :   return (__m128i) __builtin_ia32_psignd128 ((__v4si)__X, (__v4si)__Y);
     163             : }
     164             : 
     165             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     166             : _mm_sign_pi8 (__m64 __X, __m64 __Y)
     167             : {
     168             :   return (__m64) __builtin_ia32_psignb ((__v8qi)__X, (__v8qi)__Y);
     169             : }
     170             : 
     171             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     172             : _mm_sign_pi16 (__m64 __X, __m64 __Y)
     173             : {
     174             :   return (__m64) __builtin_ia32_psignw ((__v4hi)__X, (__v4hi)__Y);
     175             : }
     176             : 
     177             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     178             : _mm_sign_pi32 (__m64 __X, __m64 __Y)
     179             : {
     180             :   return (__m64) __builtin_ia32_psignd ((__v2si)__X, (__v2si)__Y);
     181             : }
     182             : 
     183             : #ifdef __OPTIMIZE__
     184             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     185             : _mm_alignr_epi8(__m128i __X, __m128i __Y, const int __N)
     186             : {
     187             :   return (__m128i) __builtin_ia32_palignr128 ((__v2di)__X,
     188             :                                               (__v2di)__Y, __N * 8);
     189             : }
     190             : 
     191             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     192             : _mm_alignr_pi8(__m64 __X, __m64 __Y, const int __N)
     193             : {
     194             :   return (__m64) __builtin_ia32_palignr ((__v1di)__X,
     195             :                                          (__v1di)__Y, __N * 8);
     196             : }
     197             : #else
     198             : #define _mm_alignr_epi8(X, Y, N)                                        \
     199             :   ((__m128i) __builtin_ia32_palignr128 ((__v2di)(__m128i)(X),           \
     200             :                                         (__v2di)(__m128i)(Y),           \
     201             :                                         (int)(N) * 8))
     202             : #define _mm_alignr_pi8(X, Y, N)                                         \
     203             :   ((__m64) __builtin_ia32_palignr ((__v1di)(__m64)(X),                  \
     204             :                                    (__v1di)(__m64)(Y),                  \
     205             :                                    (int)(N) * 8))
     206             : #endif
     207             : 
     208             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     209             : _mm_abs_epi8 (__m128i __X)
     210             : {
     211             :   return (__m128i) __builtin_ia32_pabsb128 ((__v16qi)__X);
     212             : }
     213             : 
     214             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     215             : _mm_abs_epi16 (__m128i __X)
     216             : {
     217    92987080 :   return (__m128i) __builtin_ia32_pabsw128 ((__v8hi)__X);
     218             : }
     219             : 
     220             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     221             : _mm_abs_epi32 (__m128i __X)
     222             : {
     223             :   return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X);
     224             : }
     225             : 
     226             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     227             : _mm_abs_pi8 (__m64 __X)
     228             : {
     229             :   return (__m64) __builtin_ia32_pabsb ((__v8qi)__X);
     230             : }
     231             : 
     232             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     233             : _mm_abs_pi16 (__m64 __X)
     234             : {
     235             :   return (__m64) __builtin_ia32_pabsw ((__v4hi)__X);
     236             : }
     237             : 
     238             : extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     239             : _mm_abs_pi32 (__m64 __X)
     240             : {
     241             :   return (__m64) __builtin_ia32_pabsd ((__v2si)__X);
     242             : }
     243             : 
     244             : #ifdef __DISABLE_SSSE3__
     245             : #undef __DISABLE_SSSE3__
     246             : #pragma GCC pop_options
     247             : #endif /* __DISABLE_SSSE3__ */
     248             : 
     249             : #endif /* _TMMINTRIN_H_INCLUDED */

Generated by: LCOV version 1.14