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

          Line data    Source code
       1             : /* Copyright (C) 2008-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 11.0.  */
      26             : 
      27             : #ifndef _IMMINTRIN_H_INCLUDED
      28             : # error "Never use <avxintrin.h> directly; include <immintrin.h> instead."
      29             : #endif
      30             : 
      31             : #ifndef _AVXINTRIN_H_INCLUDED
      32             : #define _AVXINTRIN_H_INCLUDED
      33             : 
      34             : #ifndef __AVX__
      35             : #pragma GCC push_options
      36             : #pragma GCC target("avx")
      37             : #define __DISABLE_AVX__
      38             : #endif /* __AVX__ */
      39             : 
      40             : /* Internal data types for implementing the intrinsics.  */
      41             : typedef double __v4df __attribute__ ((__vector_size__ (32)));
      42             : typedef float __v8sf __attribute__ ((__vector_size__ (32)));
      43             : typedef long long __v4di __attribute__ ((__vector_size__ (32)));
      44             : typedef unsigned long long __v4du __attribute__ ((__vector_size__ (32)));
      45             : typedef int __v8si __attribute__ ((__vector_size__ (32)));
      46             : typedef unsigned int __v8su __attribute__ ((__vector_size__ (32)));
      47             : typedef short __v16hi __attribute__ ((__vector_size__ (32)));
      48             : typedef unsigned short __v16hu __attribute__ ((__vector_size__ (32)));
      49             : typedef char __v32qi __attribute__ ((__vector_size__ (32)));
      50             : typedef signed char __v32qs __attribute__ ((__vector_size__ (32)));
      51             : typedef unsigned char __v32qu __attribute__ ((__vector_size__ (32)));
      52             : 
      53             : /* The Intel API is flexible enough that we must allow aliasing with other
      54             :    vector types, and their scalar components.  */
      55             : typedef float __m256 __attribute__ ((__vector_size__ (32),
      56             :                                      __may_alias__));
      57             : typedef long long __m256i __attribute__ ((__vector_size__ (32),
      58             :                                           __may_alias__));
      59             : typedef double __m256d __attribute__ ((__vector_size__ (32),
      60             :                                        __may_alias__));
      61             : 
      62             : /* Unaligned version of the same types.  */
      63             : typedef float __m256_u __attribute__ ((__vector_size__ (32),
      64             :                                        __may_alias__,
      65             :                                        __aligned__ (1)));
      66             : typedef long long __m256i_u __attribute__ ((__vector_size__ (32),
      67             :                                             __may_alias__,
      68             :                                             __aligned__ (1)));
      69             : typedef double __m256d_u __attribute__ ((__vector_size__ (32),
      70             :                                          __may_alias__,
      71             :                                          __aligned__ (1)));
      72             : 
      73             : /* Compare predicates for scalar and packed compare intrinsics.  */
      74             : 
      75             : /* Equal (ordered, non-signaling)  */
      76             : #define _CMP_EQ_OQ      0x00
      77             : /* Less-than (ordered, signaling)  */
      78             : #define _CMP_LT_OS      0x01
      79             : /* Less-than-or-equal (ordered, signaling)  */
      80             : #define _CMP_LE_OS      0x02
      81             : /* Unordered (non-signaling)  */
      82             : #define _CMP_UNORD_Q    0x03
      83             : /* Not-equal (unordered, non-signaling)  */
      84             : #define _CMP_NEQ_UQ     0x04
      85             : /* Not-less-than (unordered, signaling)  */
      86             : #define _CMP_NLT_US     0x05
      87             : /* Not-less-than-or-equal (unordered, signaling)  */
      88             : #define _CMP_NLE_US     0x06
      89             : /* Ordered (nonsignaling)   */
      90             : #define _CMP_ORD_Q      0x07
      91             : /* Equal (unordered, non-signaling)  */
      92             : #define _CMP_EQ_UQ      0x08
      93             : /* Not-greater-than-or-equal (unordered, signaling)  */
      94             : #define _CMP_NGE_US     0x09
      95             : /* Not-greater-than (unordered, signaling)  */
      96             : #define _CMP_NGT_US     0x0a
      97             : /* False (ordered, non-signaling)  */
      98             : #define _CMP_FALSE_OQ   0x0b
      99             : /* Not-equal (ordered, non-signaling)  */
     100             : #define _CMP_NEQ_OQ     0x0c
     101             : /* Greater-than-or-equal (ordered, signaling)  */
     102             : #define _CMP_GE_OS      0x0d
     103             : /* Greater-than (ordered, signaling)  */
     104             : #define _CMP_GT_OS      0x0e
     105             : /* True (unordered, non-signaling)  */
     106             : #define _CMP_TRUE_UQ    0x0f
     107             : /* Equal (ordered, signaling)  */
     108             : #define _CMP_EQ_OS      0x10
     109             : /* Less-than (ordered, non-signaling)  */
     110             : #define _CMP_LT_OQ      0x11
     111             : /* Less-than-or-equal (ordered, non-signaling)  */
     112             : #define _CMP_LE_OQ      0x12
     113             : /* Unordered (signaling)  */
     114             : #define _CMP_UNORD_S    0x13
     115             : /* Not-equal (unordered, signaling)  */
     116             : #define _CMP_NEQ_US     0x14
     117             : /* Not-less-than (unordered, non-signaling)  */
     118             : #define _CMP_NLT_UQ     0x15
     119             : /* Not-less-than-or-equal (unordered, non-signaling)  */
     120             : #define _CMP_NLE_UQ     0x16
     121             : /* Ordered (signaling)  */
     122             : #define _CMP_ORD_S      0x17
     123             : /* Equal (unordered, signaling)  */
     124             : #define _CMP_EQ_US      0x18
     125             : /* Not-greater-than-or-equal (unordered, non-signaling)  */
     126             : #define _CMP_NGE_UQ     0x19
     127             : /* Not-greater-than (unordered, non-signaling)  */
     128             : #define _CMP_NGT_UQ     0x1a
     129             : /* False (ordered, signaling)  */
     130             : #define _CMP_FALSE_OS   0x1b
     131             : /* Not-equal (ordered, signaling)  */
     132             : #define _CMP_NEQ_OS     0x1c
     133             : /* Greater-than-or-equal (ordered, non-signaling)  */
     134             : #define _CMP_GE_OQ      0x1d
     135             : /* Greater-than (ordered, non-signaling)  */
     136             : #define _CMP_GT_OQ      0x1e
     137             : /* True (unordered, signaling)  */
     138             : #define _CMP_TRUE_US    0x1f
     139             : 
     140             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     141             : _mm256_add_pd (__m256d __A, __m256d __B)
     142             : {
     143             :   return (__m256d) ((__v4df)__A + (__v4df)__B);
     144             : }
     145             : 
     146             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     147             : _mm256_add_ps (__m256 __A, __m256 __B)
     148             : {
     149           0 :   return (__m256) ((__v8sf)__A + (__v8sf)__B);
     150             : }
     151             : 
     152             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     153             : _mm256_addsub_pd (__m256d __A, __m256d __B)
     154             : {
     155             :   return (__m256d) __builtin_ia32_addsubpd256 ((__v4df)__A, (__v4df)__B);
     156             : }
     157             : 
     158             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     159             : _mm256_addsub_ps (__m256 __A, __m256 __B)
     160             : {
     161             :   return (__m256) __builtin_ia32_addsubps256 ((__v8sf)__A, (__v8sf)__B);
     162             : }
     163             : 
     164             : 
     165             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     166             : _mm256_and_pd (__m256d __A, __m256d __B)
     167             : {
     168             :   return (__m256d) __builtin_ia32_andpd256 ((__v4df)__A, (__v4df)__B);
     169             : }
     170             : 
     171             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     172             : _mm256_and_ps (__m256 __A, __m256 __B)
     173             : {
     174             :   return (__m256) __builtin_ia32_andps256 ((__v8sf)__A, (__v8sf)__B);
     175             : }
     176             : 
     177             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     178             : _mm256_andnot_pd (__m256d __A, __m256d __B)
     179             : {
     180             :   return (__m256d) __builtin_ia32_andnpd256 ((__v4df)__A, (__v4df)__B);
     181             : }
     182             : 
     183             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     184             : _mm256_andnot_ps (__m256 __A, __m256 __B)
     185             : {
     186             :   return (__m256) __builtin_ia32_andnps256 ((__v8sf)__A, (__v8sf)__B);
     187             : }
     188             : 
     189             : /* Double/single precision floating point blend instructions - select
     190             :    data from 2 sources using constant/variable mask.  */
     191             : 
     192             : #ifdef __OPTIMIZE__
     193             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     194             : _mm256_blend_pd (__m256d __X, __m256d __Y, const int __M)
     195             : {
     196             :   return (__m256d) __builtin_ia32_blendpd256 ((__v4df)__X,
     197             :                                               (__v4df)__Y,
     198             :                                               __M);
     199             : }
     200             : 
     201             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     202             : _mm256_blend_ps (__m256 __X, __m256 __Y, const int __M)
     203             : {
     204             :   return (__m256) __builtin_ia32_blendps256 ((__v8sf)__X,
     205             :                                              (__v8sf)__Y,
     206             :                                              __M);
     207             : }
     208             : #else
     209             : #define _mm256_blend_pd(X, Y, M)                                        \
     210             :   ((__m256d) __builtin_ia32_blendpd256 ((__v4df)(__m256d)(X),           \
     211             :                                         (__v4df)(__m256d)(Y), (int)(M)))
     212             : 
     213             : #define _mm256_blend_ps(X, Y, M)                                        \
     214             :   ((__m256) __builtin_ia32_blendps256 ((__v8sf)(__m256)(X),             \
     215             :                                        (__v8sf)(__m256)(Y), (int)(M)))
     216             : #endif
     217             : 
     218             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     219             : _mm256_blendv_pd (__m256d __X, __m256d __Y, __m256d __M)
     220             : {
     221             :   return (__m256d) __builtin_ia32_blendvpd256 ((__v4df)__X,
     222             :                                                (__v4df)__Y,
     223             :                                                (__v4df)__M);
     224             : }
     225             : 
     226             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     227             : _mm256_blendv_ps (__m256 __X, __m256 __Y, __m256 __M)
     228             : {
     229             :   return (__m256) __builtin_ia32_blendvps256 ((__v8sf)__X,
     230             :                                               (__v8sf)__Y,
     231             :                                               (__v8sf)__M);
     232             : }
     233             : 
     234             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     235             : _mm256_div_pd (__m256d __A, __m256d __B)
     236             : {
     237             :   return (__m256d) ((__v4df)__A / (__v4df)__B);
     238             : }
     239             : 
     240             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     241             : _mm256_div_ps (__m256 __A, __m256 __B)
     242             : {
     243     8323770 :   return (__m256) ((__v8sf)__A / (__v8sf)__B);
     244             : }
     245             : 
     246             : /* Dot product instructions with mask-defined summing and zeroing parts
     247             :    of result.  */
     248             : 
     249             : #ifdef __OPTIMIZE__
     250             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     251             : _mm256_dp_ps (__m256 __X, __m256 __Y, const int __M)
     252             : {
     253             :   return (__m256) __builtin_ia32_dpps256 ((__v8sf)__X,
     254             :                                           (__v8sf)__Y,
     255             :                                           __M);
     256             : }
     257             : #else
     258             : #define _mm256_dp_ps(X, Y, M)                                           \
     259             :   ((__m256) __builtin_ia32_dpps256 ((__v8sf)(__m256)(X),                \
     260             :                                     (__v8sf)(__m256)(Y), (int)(M)))
     261             : #endif
     262             : 
     263             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     264             : _mm256_hadd_pd (__m256d __X, __m256d __Y)
     265             : {
     266             :   return (__m256d) __builtin_ia32_haddpd256 ((__v4df)__X, (__v4df)__Y);
     267             : }
     268             : 
     269             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     270             : _mm256_hadd_ps (__m256 __X, __m256 __Y)
     271             : {
     272             :   return (__m256) __builtin_ia32_haddps256 ((__v8sf)__X, (__v8sf)__Y);
     273             : }
     274             : 
     275             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     276             : _mm256_hsub_pd (__m256d __X, __m256d __Y)
     277             : {
     278             :   return (__m256d) __builtin_ia32_hsubpd256 ((__v4df)__X, (__v4df)__Y);
     279             : }
     280             : 
     281             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     282             : _mm256_hsub_ps (__m256 __X, __m256 __Y)
     283             : {
     284             :   return (__m256) __builtin_ia32_hsubps256 ((__v8sf)__X, (__v8sf)__Y);
     285             : }
     286             : 
     287             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     288             : _mm256_max_pd (__m256d __A, __m256d __B)
     289             : {
     290             :   return (__m256d) __builtin_ia32_maxpd256 ((__v4df)__A, (__v4df)__B);
     291             : }
     292             : 
     293             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     294             : _mm256_max_ps (__m256 __A, __m256 __B)
     295             : {
     296             :   return (__m256) __builtin_ia32_maxps256 ((__v8sf)__A, (__v8sf)__B);
     297             : }
     298             : 
     299             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     300             : _mm256_min_pd (__m256d __A, __m256d __B)
     301             : {
     302             :   return (__m256d) __builtin_ia32_minpd256 ((__v4df)__A, (__v4df)__B);
     303             : }
     304             : 
     305             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     306             : _mm256_min_ps (__m256 __A, __m256 __B)
     307             : {
     308             :   return (__m256) __builtin_ia32_minps256 ((__v8sf)__A, (__v8sf)__B);
     309             : }
     310             : 
     311             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     312             : _mm256_mul_pd (__m256d __A, __m256d __B)
     313             : {
     314             :   return (__m256d) ((__v4df)__A * (__v4df)__B);
     315             : }
     316             : 
     317             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     318             : _mm256_mul_ps (__m256 __A, __m256 __B)
     319             : {
     320           0 :   return (__m256) ((__v8sf)__A * (__v8sf)__B);
     321             : }
     322             : 
     323             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     324             : _mm256_or_pd (__m256d __A, __m256d __B)
     325             : {
     326             :   return (__m256d) __builtin_ia32_orpd256 ((__v4df)__A, (__v4df)__B);
     327             : }
     328             : 
     329             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     330             : _mm256_or_ps (__m256 __A, __m256 __B)
     331             : {
     332             :   return (__m256) __builtin_ia32_orps256 ((__v8sf)__A, (__v8sf)__B);
     333             : }
     334             : 
     335             : #ifdef __OPTIMIZE__
     336             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     337             : _mm256_shuffle_pd (__m256d __A, __m256d __B, const int __mask)
     338             : {
     339             :   return (__m256d) __builtin_ia32_shufpd256 ((__v4df)__A, (__v4df)__B,
     340             :                                              __mask);
     341             : }
     342             : 
     343             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     344             : _mm256_shuffle_ps (__m256 __A, __m256 __B, const int __mask)
     345             : {
     346             :   return (__m256) __builtin_ia32_shufps256 ((__v8sf)__A, (__v8sf)__B,
     347             :                                             __mask);
     348             : }
     349             : #else
     350             : #define _mm256_shuffle_pd(A, B, N)                                      \
     351             :   ((__m256d)__builtin_ia32_shufpd256 ((__v4df)(__m256d)(A),             \
     352             :                                       (__v4df)(__m256d)(B), (int)(N)))
     353             : 
     354             : #define _mm256_shuffle_ps(A, B, N)                                      \
     355             :   ((__m256) __builtin_ia32_shufps256 ((__v8sf)(__m256)(A),              \
     356             :                                       (__v8sf)(__m256)(B), (int)(N)))
     357             : #endif
     358             : 
     359             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     360             : _mm256_sub_pd (__m256d __A, __m256d __B)
     361             : {
     362             :   return (__m256d) ((__v4df)__A - (__v4df)__B);
     363             : }
     364             : 
     365             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     366             : _mm256_sub_ps (__m256 __A, __m256 __B)
     367             : {
     368           0 :   return (__m256) ((__v8sf)__A - (__v8sf)__B);
     369             : }
     370             : 
     371             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     372             : _mm256_xor_pd (__m256d __A, __m256d __B)
     373             : {
     374             :   return (__m256d) __builtin_ia32_xorpd256 ((__v4df)__A, (__v4df)__B);
     375             : }
     376             : 
     377             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     378             : _mm256_xor_ps (__m256 __A, __m256 __B)
     379             : {
     380             :   return (__m256) __builtin_ia32_xorps256 ((__v8sf)__A, (__v8sf)__B);
     381             : }
     382             : 
     383             : #ifdef __OPTIMIZE__
     384             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     385             : _mm_cmp_pd (__m128d __X, __m128d __Y, const int __P)
     386             : {
     387             :   return (__m128d) __builtin_ia32_cmppd ((__v2df)__X, (__v2df)__Y, __P);
     388             : }
     389             : 
     390             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     391             : _mm_cmp_ps (__m128 __X, __m128 __Y, const int __P)
     392             : {
     393             :   return (__m128) __builtin_ia32_cmpps ((__v4sf)__X, (__v4sf)__Y, __P);
     394             : }
     395             : 
     396             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     397             : _mm256_cmp_pd (__m256d __X, __m256d __Y, const int __P)
     398             : {
     399             :   return (__m256d) __builtin_ia32_cmppd256 ((__v4df)__X, (__v4df)__Y,
     400             :                                             __P);
     401             : }
     402             : 
     403             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     404             : _mm256_cmp_ps (__m256 __X, __m256 __Y, const int __P)
     405             : {
     406             :   return (__m256) __builtin_ia32_cmpps256 ((__v8sf)__X, (__v8sf)__Y,
     407             :                                            __P);
     408             : }
     409             : 
     410             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     411             : _mm_cmp_sd (__m128d __X, __m128d __Y, const int __P)
     412             : {
     413             :   return (__m128d) __builtin_ia32_cmpsd ((__v2df)__X, (__v2df)__Y, __P);
     414             : }
     415             : 
     416             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     417             : _mm_cmp_ss (__m128 __X, __m128 __Y, const int __P)
     418             : {
     419             :   return (__m128) __builtin_ia32_cmpss ((__v4sf)__X, (__v4sf)__Y, __P);
     420             : }
     421             : #else
     422             : #define _mm_cmp_pd(X, Y, P)                                             \
     423             :   ((__m128d) __builtin_ia32_cmppd ((__v2df)(__m128d)(X),                \
     424             :                                    (__v2df)(__m128d)(Y), (int)(P)))
     425             : 
     426             : #define _mm_cmp_ps(X, Y, P)                                             \
     427             :   ((__m128) __builtin_ia32_cmpps ((__v4sf)(__m128)(X),                  \
     428             :                                   (__v4sf)(__m128)(Y), (int)(P)))
     429             : 
     430             : #define _mm256_cmp_pd(X, Y, P)                                          \
     431             :   ((__m256d) __builtin_ia32_cmppd256 ((__v4df)(__m256d)(X),             \
     432             :                                       (__v4df)(__m256d)(Y), (int)(P)))
     433             : 
     434             : #define _mm256_cmp_ps(X, Y, P)                                          \
     435             :   ((__m256) __builtin_ia32_cmpps256 ((__v8sf)(__m256)(X),               \
     436             :                                      (__v8sf)(__m256)(Y), (int)(P)))
     437             : 
     438             : #define _mm_cmp_sd(X, Y, P)                                             \
     439             :   ((__m128d) __builtin_ia32_cmpsd ((__v2df)(__m128d)(X),                \
     440             :                                    (__v2df)(__m128d)(Y), (int)(P)))
     441             : 
     442             : #define _mm_cmp_ss(X, Y, P)                                             \
     443             :   ((__m128) __builtin_ia32_cmpss ((__v4sf)(__m128)(X),                  \
     444             :                                   (__v4sf)(__m128)(Y), (int)(P)))
     445             : #endif
     446             : 
     447             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     448             : _mm256_cvtepi32_pd (__m128i __A)
     449             : {
     450             :   return (__m256d)__builtin_ia32_cvtdq2pd256 ((__v4si) __A);
     451             : }
     452             : 
     453             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     454             : _mm256_cvtepi32_ps (__m256i __A)
     455             : {
     456     8323770 :   return (__m256)__builtin_ia32_cvtdq2ps256 ((__v8si) __A);
     457             : }
     458             : 
     459             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     460             : _mm256_cvtpd_ps (__m256d __A)
     461             : {
     462             :   return (__m128)__builtin_ia32_cvtpd2ps256 ((__v4df) __A);
     463             : }
     464             : 
     465             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     466             : _mm256_cvtps_epi32 (__m256 __A)
     467             : {
     468     8323770 :   return (__m256i)__builtin_ia32_cvtps2dq256 ((__v8sf) __A);
     469             : }
     470             : 
     471             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     472             : _mm256_cvtps_pd (__m128 __A)
     473             : {
     474             :   return (__m256d)__builtin_ia32_cvtps2pd256 ((__v4sf) __A);
     475             : }
     476             : 
     477             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     478             : _mm256_cvttpd_epi32 (__m256d __A)
     479             : {
     480             :   return (__m128i)__builtin_ia32_cvttpd2dq256 ((__v4df) __A);
     481             : }
     482             : 
     483             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     484             : _mm256_cvtpd_epi32 (__m256d __A)
     485             : {
     486             :   return (__m128i)__builtin_ia32_cvtpd2dq256 ((__v4df) __A);
     487             : }
     488             : 
     489             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     490             : _mm256_cvttps_epi32 (__m256 __A)
     491             : {
     492             :   return (__m256i)__builtin_ia32_cvttps2dq256 ((__v8sf) __A);
     493             : }
     494             : 
     495             : extern __inline double
     496             : __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     497             : _mm256_cvtsd_f64 (__m256d __A)
     498             : {
     499             :   return __A[0];
     500             : }
     501             : 
     502             : extern __inline float
     503             : __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
     504             : _mm256_cvtss_f32 (__m256 __A)
     505             : {
     506             :   return __A[0];
     507             : }
     508             : 
     509             : #ifdef __OPTIMIZE__
     510             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     511             : _mm256_extractf128_pd (__m256d __X, const int __N)
     512             : {
     513             :   return (__m128d) __builtin_ia32_vextractf128_pd256 ((__v4df)__X, __N);
     514             : }
     515             : 
     516             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     517             : _mm256_extractf128_ps (__m256 __X, const int __N)
     518             : {
     519             :   return (__m128) __builtin_ia32_vextractf128_ps256 ((__v8sf)__X, __N);
     520             : }
     521             : 
     522             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     523             : _mm256_extractf128_si256 (__m256i __X, const int __N)
     524             : {
     525             :   return (__m128i) __builtin_ia32_vextractf128_si256 ((__v8si)__X, __N);
     526             : }
     527             : 
     528             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     529             : _mm256_extract_epi32 (__m256i __X, int const __N)
     530             : {
     531             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2);
     532             :   return _mm_extract_epi32 (__Y, __N % 4);
     533             : }
     534             : 
     535             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     536             : _mm256_extract_epi16 (__m256i __X, int const __N)
     537             : {
     538             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 3);
     539             :   return _mm_extract_epi16 (__Y, __N % 8);
     540             : }
     541             : 
     542             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     543             : _mm256_extract_epi8 (__m256i __X, int const __N)
     544             : {
     545             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 4);
     546             :   return _mm_extract_epi8 (__Y, __N % 16);
     547             : }
     548             : 
     549             : #ifdef __x86_64__
     550             : extern __inline long long  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     551             : _mm256_extract_epi64 (__m256i __X, const int __N)
     552             : {
     553             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
     554             :   return _mm_extract_epi64 (__Y, __N % 2);
     555             : }
     556             : #endif
     557             : #else
     558             : #define _mm256_extractf128_pd(X, N)                                     \
     559             :   ((__m128d) __builtin_ia32_vextractf128_pd256 ((__v4df)(__m256d)(X),   \
     560             :                                                 (int)(N)))
     561             : 
     562             : #define _mm256_extractf128_ps(X, N)                                     \
     563             :   ((__m128) __builtin_ia32_vextractf128_ps256 ((__v8sf)(__m256)(X),     \
     564             :                                                (int)(N)))
     565             : 
     566             : #define _mm256_extractf128_si256(X, N)                                  \
     567             :   ((__m128i) __builtin_ia32_vextractf128_si256 ((__v8si)(__m256i)(X),   \
     568             :                                                 (int)(N)))
     569             : 
     570             : #define _mm256_extract_epi32(X, N)                                      \
     571             :   (__extension__                                                        \
     572             :    ({                                                                   \
     573             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 2);             \
     574             :       _mm_extract_epi32 (__Y, (N) % 4);                                 \
     575             :     }))
     576             : 
     577             : #define _mm256_extract_epi16(X, N)                                      \
     578             :   (__extension__                                                        \
     579             :    ({                                                                   \
     580             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 3);             \
     581             :       _mm_extract_epi16 (__Y, (N) % 8);                                 \
     582             :     }))
     583             : 
     584             : #define _mm256_extract_epi8(X, N)                                       \
     585             :   (__extension__                                                        \
     586             :    ({                                                                   \
     587             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 4);             \
     588             :       _mm_extract_epi8 (__Y, (N) % 16);                                 \
     589             :     }))
     590             : 
     591             : #ifdef __x86_64__
     592             : #define _mm256_extract_epi64(X, N)                                      \
     593             :   (__extension__                                                        \
     594             :    ({                                                                   \
     595             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 1);             \
     596             :       _mm_extract_epi64 (__Y, (N) % 2);                                 \
     597             :     }))
     598             : #endif
     599             : #endif
     600             : 
     601             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     602             : _mm256_zeroall (void)
     603             : {
     604             :   __builtin_ia32_vzeroall ();
     605             : }
     606             : 
     607             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     608             : _mm256_zeroupper (void)
     609             : {
     610           0 :   __builtin_ia32_vzeroupper ();
     611           0 : }
     612             : 
     613             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     614             : _mm_permutevar_pd (__m128d __A, __m128i __C)
     615             : {
     616             :   return (__m128d) __builtin_ia32_vpermilvarpd ((__v2df)__A,
     617             :                                                 (__v2di)__C);
     618             : }
     619             : 
     620             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     621             : _mm256_permutevar_pd (__m256d __A, __m256i __C)
     622             : {
     623             :   return (__m256d) __builtin_ia32_vpermilvarpd256 ((__v4df)__A,
     624             :                                                    (__v4di)__C);
     625             : }
     626             : 
     627             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     628             : _mm_permutevar_ps (__m128 __A, __m128i __C)
     629             : {
     630             :   return (__m128) __builtin_ia32_vpermilvarps ((__v4sf)__A,
     631             :                                                (__v4si)__C);
     632             : }
     633             : 
     634             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     635             : _mm256_permutevar_ps (__m256 __A, __m256i __C)
     636             : {
     637             :   return (__m256) __builtin_ia32_vpermilvarps256 ((__v8sf)__A,
     638             :                                                   (__v8si)__C);
     639             : }
     640             : 
     641             : #ifdef __OPTIMIZE__
     642             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     643             : _mm_permute_pd (__m128d __X, const int __C)
     644             : {
     645             :   return (__m128d) __builtin_ia32_vpermilpd ((__v2df)__X, __C);
     646             : }
     647             : 
     648             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     649             : _mm256_permute_pd (__m256d __X, const int __C)
     650             : {
     651             :   return (__m256d) __builtin_ia32_vpermilpd256 ((__v4df)__X, __C);
     652             : }
     653             : 
     654             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     655             : _mm_permute_ps (__m128 __X, const int __C)
     656             : {
     657             :   return (__m128) __builtin_ia32_vpermilps ((__v4sf)__X, __C);
     658             : }
     659             : 
     660             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     661             : _mm256_permute_ps (__m256 __X, const int __C)
     662             : {
     663             :   return (__m256) __builtin_ia32_vpermilps256 ((__v8sf)__X, __C);
     664             : }
     665             : #else
     666             : #define _mm_permute_pd(X, C)                                            \
     667             :   ((__m128d) __builtin_ia32_vpermilpd ((__v2df)(__m128d)(X), (int)(C)))
     668             : 
     669             : #define _mm256_permute_pd(X, C)                                         \
     670             :   ((__m256d) __builtin_ia32_vpermilpd256 ((__v4df)(__m256d)(X), (int)(C)))
     671             : 
     672             : #define _mm_permute_ps(X, C)                                            \
     673             :   ((__m128) __builtin_ia32_vpermilps ((__v4sf)(__m128)(X), (int)(C)))
     674             : 
     675             : #define _mm256_permute_ps(X, C)                                         \
     676             :   ((__m256) __builtin_ia32_vpermilps256 ((__v8sf)(__m256)(X), (int)(C)))
     677             : #endif
     678             : 
     679             : #ifdef __OPTIMIZE__
     680             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     681             : _mm256_permute2f128_pd (__m256d __X, __m256d __Y, const int __C)
     682             : {
     683             :   return (__m256d) __builtin_ia32_vperm2f128_pd256 ((__v4df)__X,
     684             :                                                     (__v4df)__Y,
     685             :                                                     __C);
     686             : }
     687             : 
     688             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     689             : _mm256_permute2f128_ps (__m256 __X, __m256 __Y, const int __C)
     690             : {
     691             :   return (__m256) __builtin_ia32_vperm2f128_ps256 ((__v8sf)__X,
     692             :                                                    (__v8sf)__Y,
     693             :                                                    __C);
     694             : }
     695             : 
     696             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     697             : _mm256_permute2f128_si256 (__m256i __X, __m256i __Y, const int __C)
     698             : {
     699             :   return (__m256i) __builtin_ia32_vperm2f128_si256 ((__v8si)__X,
     700             :                                                     (__v8si)__Y,
     701             :                                                     __C);
     702             : }
     703             : #else
     704             : #define _mm256_permute2f128_pd(X, Y, C)                                 \
     705             :   ((__m256d) __builtin_ia32_vperm2f128_pd256 ((__v4df)(__m256d)(X),     \
     706             :                                               (__v4df)(__m256d)(Y),     \
     707             :                                               (int)(C)))
     708             : 
     709             : #define _mm256_permute2f128_ps(X, Y, C)                                 \
     710             :   ((__m256) __builtin_ia32_vperm2f128_ps256 ((__v8sf)(__m256)(X),       \
     711             :                                              (__v8sf)(__m256)(Y),       \
     712             :                                              (int)(C)))
     713             : 
     714             : #define _mm256_permute2f128_si256(X, Y, C)                              \
     715             :   ((__m256i) __builtin_ia32_vperm2f128_si256 ((__v8si)(__m256i)(X),     \
     716             :                                               (__v8si)(__m256i)(Y),     \
     717             :                                               (int)(C)))
     718             : #endif
     719             : 
     720             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     721             : _mm_broadcast_ss (float const *__X)
     722             : {
     723             :   return (__m128) __builtin_ia32_vbroadcastss (__X);
     724             : }
     725             : 
     726             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     727             : _mm256_broadcast_sd (double const *__X)
     728             : {
     729             :   return (__m256d) __builtin_ia32_vbroadcastsd256 (__X);
     730             : }
     731             : 
     732             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     733             : _mm256_broadcast_ss (float const *__X)
     734             : {
     735             :   return (__m256) __builtin_ia32_vbroadcastss256 (__X);
     736             : }
     737             : 
     738             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     739             : _mm256_broadcast_pd (__m128d const *__X)
     740             : {
     741             :   return (__m256d) __builtin_ia32_vbroadcastf128_pd256 (__X);
     742             : }
     743             : 
     744             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     745             : _mm256_broadcast_ps (__m128 const *__X)
     746             : {
     747             :   return (__m256) __builtin_ia32_vbroadcastf128_ps256 (__X);
     748             : }
     749             : 
     750             : #ifdef __OPTIMIZE__
     751             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     752             : _mm256_insertf128_pd (__m256d __X, __m128d __Y, const int __O)
     753             : {
     754             :   return (__m256d) __builtin_ia32_vinsertf128_pd256 ((__v4df)__X,
     755             :                                                      (__v2df)__Y,
     756             :                                                      __O);
     757             : }
     758             : 
     759             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     760             : _mm256_insertf128_ps (__m256 __X, __m128 __Y, const int __O)
     761             : {
     762             :   return (__m256) __builtin_ia32_vinsertf128_ps256 ((__v8sf)__X,
     763             :                                                     (__v4sf)__Y,
     764             :                                                     __O);
     765             : }
     766             : 
     767             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     768             : _mm256_insertf128_si256 (__m256i __X, __m128i __Y, const int __O)
     769             : {
     770             :   return (__m256i) __builtin_ia32_vinsertf128_si256 ((__v8si)__X,
     771             :                                                      (__v4si)__Y,
     772             :                                                      __O);
     773             : }
     774             : 
     775             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     776             : _mm256_insert_epi32 (__m256i __X, int __D, int const __N)
     777             : {
     778             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 2);
     779             :   __Y = _mm_insert_epi32 (__Y, __D, __N % 4);
     780             :   return _mm256_insertf128_si256 (__X, __Y, __N >> 2);
     781             : }
     782             : 
     783             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     784             : _mm256_insert_epi16 (__m256i __X, int __D, int const __N)
     785             : {
     786             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 3);
     787             :   __Y = _mm_insert_epi16 (__Y, __D, __N % 8);
     788             :   return _mm256_insertf128_si256 (__X, __Y, __N >> 3);
     789             : }
     790             : 
     791             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     792             : _mm256_insert_epi8 (__m256i __X, int __D, int const __N)
     793             : {
     794             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 4);
     795             :   __Y = _mm_insert_epi8 (__Y, __D, __N % 16);
     796             :   return _mm256_insertf128_si256 (__X, __Y, __N >> 4);
     797             : }
     798             : 
     799             : #ifdef __x86_64__
     800             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     801             : _mm256_insert_epi64 (__m256i __X, long long __D, int const __N)
     802             : {
     803             :   __m128i __Y = _mm256_extractf128_si256 (__X, __N >> 1);
     804             :   __Y = _mm_insert_epi64 (__Y, __D, __N % 2);
     805             :   return _mm256_insertf128_si256 (__X, __Y, __N >> 1);
     806             : }
     807             : #endif
     808             : #else
     809             : #define _mm256_insertf128_pd(X, Y, O)                                   \
     810             :   ((__m256d) __builtin_ia32_vinsertf128_pd256 ((__v4df)(__m256d)(X),    \
     811             :                                                (__v2df)(__m128d)(Y),    \
     812             :                                                (int)(O)))
     813             : 
     814             : #define _mm256_insertf128_ps(X, Y, O)                                   \
     815             :   ((__m256) __builtin_ia32_vinsertf128_ps256 ((__v8sf)(__m256)(X),      \
     816             :                                               (__v4sf)(__m128)(Y),      \
     817             :                                               (int)(O)))
     818             : 
     819             : #define _mm256_insertf128_si256(X, Y, O)                                \
     820             :   ((__m256i) __builtin_ia32_vinsertf128_si256 ((__v8si)(__m256i)(X),    \
     821             :                                                (__v4si)(__m128i)(Y),    \
     822             :                                                (int)(O)))
     823             : 
     824             : #define _mm256_insert_epi32(X, D, N)                                    \
     825             :   (__extension__                                                        \
     826             :    ({                                                                   \
     827             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 2);             \
     828             :       __Y = _mm_insert_epi32 (__Y, (D), (N) % 4);                       \
     829             :       _mm256_insertf128_si256 ((X), __Y, (N) >> 2);                       \
     830             :     }))
     831             : 
     832             : #define _mm256_insert_epi16(X, D, N)                                    \
     833             :   (__extension__                                                        \
     834             :    ({                                                                   \
     835             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 3);             \
     836             :       __Y = _mm_insert_epi16 (__Y, (D), (N) % 8);                       \
     837             :       _mm256_insertf128_si256 ((X), __Y, (N) >> 3);                       \
     838             :     }))
     839             : 
     840             : #define _mm256_insert_epi8(X, D, N)                                     \
     841             :   (__extension__                                                        \
     842             :    ({                                                                   \
     843             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 4);             \
     844             :       __Y = _mm_insert_epi8 (__Y, (D), (N) % 16);                       \
     845             :       _mm256_insertf128_si256 ((X), __Y, (N) >> 4);                       \
     846             :     }))
     847             : 
     848             : #ifdef __x86_64__
     849             : #define _mm256_insert_epi64(X, D, N)                                    \
     850             :   (__extension__                                                        \
     851             :    ({                                                                   \
     852             :       __m128i __Y = _mm256_extractf128_si256 ((X), (N) >> 1);             \
     853             :       __Y = _mm_insert_epi64 (__Y, (D), (N) % 2);                       \
     854             :       _mm256_insertf128_si256 ((X), __Y, (N) >> 1);                       \
     855             :     }))
     856             : #endif
     857             : #endif
     858             : 
     859             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     860             : _mm256_load_pd (double const *__P)
     861             : {
     862             :   return *(__m256d *)__P;
     863             : }
     864             : 
     865             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     866             : _mm256_store_pd (double *__P, __m256d __A)
     867             : {
     868             :   *(__m256d *)__P = __A;
     869             : }
     870             : 
     871             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     872             : _mm256_load_ps (float const *__P)
     873             : {
     874           0 :   return *(__m256 *)__P;
     875             : }
     876             : 
     877             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     878             : _mm256_store_ps (float *__P, __m256 __A)
     879             : {
     880           0 :   *(__m256 *)__P = __A;
     881           0 : }
     882             : 
     883             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     884             : _mm256_loadu_pd (double const *__P)
     885             : {
     886             :   return *(__m256d_u *)__P;
     887             : }
     888             : 
     889             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     890             : _mm256_storeu_pd (double *__P, __m256d __A)
     891             : {
     892             :   *(__m256d_u *)__P = __A;
     893             : }
     894             : 
     895             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     896             : _mm256_loadu_ps (float const *__P)
     897             : {
     898             :   return *(__m256_u *)__P;
     899             : }
     900             : 
     901             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     902             : _mm256_storeu_ps (float *__P, __m256 __A)
     903             : {
     904             :   *(__m256_u *)__P = __A;
     905             : }
     906             : 
     907             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     908             : _mm256_load_si256 (__m256i const *__P)
     909             : {
     910  7343123440 :   return *__P;
     911             : }
     912             : 
     913             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     914             : _mm256_store_si256 (__m256i *__P, __m256i __A)
     915             : {
     916  8238841860 :   *__P = __A;
     917  6128849060 : }
     918             : 
     919             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     920             : _mm256_loadu_si256 (__m256i_u const *__P)
     921             : {
     922 45782743231 :   return *__P;
     923             : }
     924             : 
     925             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     926             : _mm256_storeu_si256 (__m256i_u *__P, __m256i __A)
     927             : {
     928 14979538115 :   *__P = __A;
     929  8636097035 : }
     930             : 
     931             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     932             : _mm_maskload_pd (double const *__P, __m128i __M)
     933             : {
     934             :   return (__m128d) __builtin_ia32_maskloadpd ((const __v2df *)__P,
     935             :                                               (__v2di)__M);
     936             : }
     937             : 
     938             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     939             : _mm_maskstore_pd (double *__P, __m128i __M, __m128d __A)
     940             : {
     941             :   __builtin_ia32_maskstorepd ((__v2df *)__P, (__v2di)__M, (__v2df)__A);
     942             : }
     943             : 
     944             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     945             : _mm256_maskload_pd (double const *__P, __m256i __M)
     946             : {
     947             :   return (__m256d) __builtin_ia32_maskloadpd256 ((const __v4df *)__P,
     948             :                                                  (__v4di)__M);
     949             : }
     950             : 
     951             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     952             : _mm256_maskstore_pd (double *__P, __m256i __M, __m256d __A)
     953             : {
     954             :   __builtin_ia32_maskstorepd256 ((__v4df *)__P, (__v4di)__M, (__v4df)__A);
     955             : }
     956             : 
     957             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     958             : _mm_maskload_ps (float const *__P, __m128i __M)
     959             : {
     960             :   return (__m128) __builtin_ia32_maskloadps ((const __v4sf *)__P,
     961             :                                              (__v4si)__M);
     962             : }
     963             : 
     964             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     965             : _mm_maskstore_ps (float *__P, __m128i __M, __m128 __A)
     966             : {
     967             :   __builtin_ia32_maskstoreps ((__v4sf *)__P, (__v4si)__M, (__v4sf)__A);
     968             : }
     969             : 
     970             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     971             : _mm256_maskload_ps (float const *__P, __m256i __M)
     972             : {
     973             :   return (__m256) __builtin_ia32_maskloadps256 ((const __v8sf *)__P,
     974             :                                                 (__v8si)__M);
     975             : }
     976             : 
     977             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     978             : _mm256_maskstore_ps (float *__P, __m256i __M, __m256 __A)
     979             : {
     980             :   __builtin_ia32_maskstoreps256 ((__v8sf *)__P, (__v8si)__M, (__v8sf)__A);
     981             : }
     982             : 
     983             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     984             : _mm256_movehdup_ps (__m256 __X)
     985             : {
     986             :   return (__m256) __builtin_ia32_movshdup256 ((__v8sf)__X);
     987             : }
     988             : 
     989             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     990             : _mm256_moveldup_ps (__m256 __X)
     991             : {
     992             :   return (__m256) __builtin_ia32_movsldup256 ((__v8sf)__X);
     993             : }
     994             : 
     995             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
     996             : _mm256_movedup_pd (__m256d __X)
     997             : {
     998             :   return (__m256d) __builtin_ia32_movddup256 ((__v4df)__X);
     999             : }
    1000             : 
    1001             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1002             : _mm256_lddqu_si256 (__m256i const *__P)
    1003             : {
    1004 16219299000 :   return (__m256i) __builtin_ia32_lddqu256 ((char const *)__P);
    1005             : }
    1006             : 
    1007             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1008             : _mm256_stream_si256 (__m256i *__A, __m256i __B)
    1009             : {
    1010             :   __builtin_ia32_movntdq256 ((__v4di *)__A, (__v4di)__B);
    1011             : }
    1012             : 
    1013             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1014             : _mm256_stream_pd (double *__A, __m256d __B)
    1015             : {
    1016             :   __builtin_ia32_movntpd256 (__A, (__v4df)__B);
    1017             : }
    1018             : 
    1019             : extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1020             : _mm256_stream_ps (float *__P, __m256 __A)
    1021             : {
    1022             :   __builtin_ia32_movntps256 (__P, (__v8sf)__A);
    1023             : }
    1024             : 
    1025             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1026             : _mm256_rcp_ps (__m256 __A)
    1027             : {
    1028             :   return (__m256) __builtin_ia32_rcpps256 ((__v8sf)__A);
    1029             : }
    1030             : 
    1031             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1032             : _mm256_rsqrt_ps (__m256 __A)
    1033             : {
    1034             :   return (__m256) __builtin_ia32_rsqrtps256 ((__v8sf)__A);
    1035             : }
    1036             : 
    1037             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1038             : _mm256_sqrt_pd (__m256d __A)
    1039             : {
    1040             :   return (__m256d) __builtin_ia32_sqrtpd256 ((__v4df)__A);
    1041             : }
    1042             : 
    1043             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1044             : _mm256_sqrt_ps (__m256 __A)
    1045             : {
    1046             :   return (__m256) __builtin_ia32_sqrtps256 ((__v8sf)__A);
    1047             : }
    1048             : 
    1049             : #ifdef __OPTIMIZE__
    1050             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1051             : _mm256_round_pd (__m256d __V, const int __M)
    1052             : {
    1053             :   return (__m256d) __builtin_ia32_roundpd256 ((__v4df)__V, __M);
    1054             : }
    1055             : 
    1056             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1057             : _mm256_round_ps (__m256 __V, const int __M)
    1058             : {
    1059             :   return (__m256) __builtin_ia32_roundps256 ((__v8sf)__V, __M);
    1060             : }
    1061             : #else
    1062             : #define _mm256_round_pd(V, M) \
    1063             :   ((__m256d) __builtin_ia32_roundpd256 ((__v4df)(__m256d)(V), (int)(M)))
    1064             : 
    1065             : #define _mm256_round_ps(V, M) \
    1066             :   ((__m256) __builtin_ia32_roundps256 ((__v8sf)(__m256)(V), (int)(M)))
    1067             : #endif
    1068             : 
    1069             : #define _mm256_ceil_pd(V)       _mm256_round_pd ((V), _MM_FROUND_CEIL)
    1070             : #define _mm256_floor_pd(V)      _mm256_round_pd ((V), _MM_FROUND_FLOOR)
    1071             : #define _mm256_ceil_ps(V)       _mm256_round_ps ((V), _MM_FROUND_CEIL)
    1072             : #define _mm256_floor_ps(V)      _mm256_round_ps ((V), _MM_FROUND_FLOOR)
    1073             : 
    1074             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1075             : _mm256_unpackhi_pd (__m256d __A, __m256d __B)
    1076             : {
    1077             :   return (__m256d) __builtin_ia32_unpckhpd256 ((__v4df)__A, (__v4df)__B);
    1078             : }
    1079             : 
    1080             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1081             : _mm256_unpacklo_pd (__m256d __A, __m256d __B)
    1082             : {
    1083             :   return (__m256d) __builtin_ia32_unpcklpd256 ((__v4df)__A, (__v4df)__B);
    1084             : }
    1085             : 
    1086             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1087             : _mm256_unpackhi_ps (__m256 __A, __m256 __B)
    1088             : {
    1089             :   return (__m256) __builtin_ia32_unpckhps256 ((__v8sf)__A, (__v8sf)__B);
    1090             : }
    1091             : 
    1092             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1093             : _mm256_unpacklo_ps (__m256 __A, __m256 __B)
    1094             : {
    1095             :   return (__m256) __builtin_ia32_unpcklps256 ((__v8sf)__A, (__v8sf)__B);
    1096             : }
    1097             : 
    1098             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1099             : _mm_testz_pd (__m128d __M, __m128d __V)
    1100             : {
    1101             :   return __builtin_ia32_vtestzpd ((__v2df)__M, (__v2df)__V);
    1102             : }
    1103             : 
    1104             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1105             : _mm_testc_pd (__m128d __M, __m128d __V)
    1106             : {
    1107             :   return __builtin_ia32_vtestcpd ((__v2df)__M, (__v2df)__V);
    1108             : }
    1109             : 
    1110             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1111             : _mm_testnzc_pd (__m128d __M, __m128d __V)
    1112             : {
    1113             :   return __builtin_ia32_vtestnzcpd ((__v2df)__M, (__v2df)__V);
    1114             : }
    1115             : 
    1116             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1117             : _mm_testz_ps (__m128 __M, __m128 __V)
    1118             : {
    1119             :   return __builtin_ia32_vtestzps ((__v4sf)__M, (__v4sf)__V);
    1120             : }
    1121             : 
    1122             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1123             : _mm_testc_ps (__m128 __M, __m128 __V)
    1124             : {
    1125             :   return __builtin_ia32_vtestcps ((__v4sf)__M, (__v4sf)__V);
    1126             : }
    1127             : 
    1128             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1129             : _mm_testnzc_ps (__m128 __M, __m128 __V)
    1130             : {
    1131             :   return __builtin_ia32_vtestnzcps ((__v4sf)__M, (__v4sf)__V);
    1132             : }
    1133             : 
    1134             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1135             : _mm256_testz_pd (__m256d __M, __m256d __V)
    1136             : {
    1137             :   return __builtin_ia32_vtestzpd256 ((__v4df)__M, (__v4df)__V);
    1138             : }
    1139             : 
    1140             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1141             : _mm256_testc_pd (__m256d __M, __m256d __V)
    1142             : {
    1143             :   return __builtin_ia32_vtestcpd256 ((__v4df)__M, (__v4df)__V);
    1144             : }
    1145             : 
    1146             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1147             : _mm256_testnzc_pd (__m256d __M, __m256d __V)
    1148             : {
    1149             :   return __builtin_ia32_vtestnzcpd256 ((__v4df)__M, (__v4df)__V);
    1150             : }
    1151             : 
    1152             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1153             : _mm256_testz_ps (__m256 __M, __m256 __V)
    1154             : {
    1155             :   return __builtin_ia32_vtestzps256 ((__v8sf)__M, (__v8sf)__V);
    1156             : }
    1157             : 
    1158             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1159             : _mm256_testc_ps (__m256 __M, __m256 __V)
    1160             : {
    1161             :   return __builtin_ia32_vtestcps256 ((__v8sf)__M, (__v8sf)__V);
    1162             : }
    1163             : 
    1164             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1165             : _mm256_testnzc_ps (__m256 __M, __m256 __V)
    1166             : {
    1167             :   return __builtin_ia32_vtestnzcps256 ((__v8sf)__M, (__v8sf)__V);
    1168             : }
    1169             : 
    1170             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1171             : _mm256_testz_si256 (__m256i __M, __m256i __V)
    1172             : {
    1173             :   return __builtin_ia32_ptestz256 ((__v4di)__M, (__v4di)__V);
    1174             : }
    1175             : 
    1176             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1177             : _mm256_testc_si256 (__m256i __M, __m256i __V)
    1178             : {
    1179             :   return __builtin_ia32_ptestc256 ((__v4di)__M, (__v4di)__V);
    1180             : }
    1181             : 
    1182             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1183             : _mm256_testnzc_si256 (__m256i __M, __m256i __V)
    1184             : {
    1185             :   return __builtin_ia32_ptestnzc256 ((__v4di)__M, (__v4di)__V);
    1186             : }
    1187             : 
    1188             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1189             : _mm256_movemask_pd (__m256d __A)
    1190             : {
    1191             :   return __builtin_ia32_movmskpd256 ((__v4df)__A);
    1192             : }
    1193             : 
    1194             : extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1195             : _mm256_movemask_ps (__m256 __A)
    1196             : {
    1197             :   return __builtin_ia32_movmskps256 ((__v8sf)__A);
    1198             : }
    1199             : 
    1200             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1201             : _mm256_undefined_pd (void)
    1202             : {
    1203           0 :   __m256d __Y = __Y;
    1204           0 :   return __Y;
    1205             : }
    1206             : 
    1207             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1208             : _mm256_undefined_ps (void)
    1209             : {
    1210             :   __m256 __Y = __Y;
    1211             :   return __Y;
    1212             : }
    1213             : 
    1214             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1215             : _mm256_undefined_si256 (void)
    1216             : {
    1217           0 :   __m256i __Y = __Y;
    1218           0 :   return __Y;
    1219             : }
    1220             : 
    1221             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1222             : _mm256_setzero_pd (void)
    1223             : {
    1224             :   return __extension__ (__m256d){ 0.0, 0.0, 0.0, 0.0 };
    1225             : }
    1226             : 
    1227             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1228             : _mm256_setzero_ps (void)
    1229             : {
    1230             :   return __extension__ (__m256){ 0.0, 0.0, 0.0, 0.0,
    1231             :                                  0.0, 0.0, 0.0, 0.0 };
    1232             : }
    1233             : 
    1234             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1235             : _mm256_setzero_si256 (void)
    1236             : {
    1237 29691134203 :   return __extension__ (__m256i)(__v4di){ 0, 0, 0, 0 };
    1238             : }
    1239             : 
    1240             : /* Create the vector [A B C D].  */
    1241             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1242             : _mm256_set_pd (double __A, double __B, double __C, double __D)
    1243             : {
    1244             :   return __extension__ (__m256d){ __D, __C, __B, __A };
    1245             : }
    1246             : 
    1247             : /* Create the vector [A B C D E F G H].  */
    1248             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1249             : _mm256_set_ps (float __A, float __B, float __C, float __D,
    1250             :                float __E, float __F, float __G, float __H)
    1251             : {
    1252             :   return __extension__ (__m256){ __H, __G, __F, __E,
    1253             :                                  __D, __C, __B, __A };
    1254             : }
    1255             : 
    1256             : /* Create the vector [A B C D E F G H].  */
    1257             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1258             : _mm256_set_epi32 (int __A, int __B, int __C, int __D,
    1259             :                   int __E, int __F, int __G, int __H)
    1260             : {
    1261   690195108 :   return __extension__ (__m256i)(__v8si){ __H, __G, __F, __E,
    1262             :                                           __D, __C, __B, __A };
    1263             : }
    1264             : 
    1265             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1266             : _mm256_set_epi16 (short __q15, short __q14, short __q13, short __q12,
    1267             :                   short __q11, short __q10, short __q09, short __q08,
    1268             :                   short __q07, short __q06, short __q05, short __q04,
    1269             :                   short __q03, short __q02, short __q01, short __q00)
    1270             : {
    1271  7980104190 :   return __extension__ (__m256i)(__v16hi){
    1272             :     __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
    1273             :     __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15
    1274             :   };
    1275             : }
    1276             : 
    1277             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1278             : _mm256_set_epi8  (char __q31, char __q30, char __q29, char __q28,
    1279             :                   char __q27, char __q26, char __q25, char __q24,
    1280             :                   char __q23, char __q22, char __q21, char __q20,
    1281             :                   char __q19, char __q18, char __q17, char __q16,
    1282             :                   char __q15, char __q14, char __q13, char __q12,
    1283             :                   char __q11, char __q10, char __q09, char __q08,
    1284             :                   char __q07, char __q06, char __q05, char __q04,
    1285             :                   char __q03, char __q02, char __q01, char __q00)
    1286             : {
    1287     6394550 :   return __extension__ (__m256i)(__v32qi){
    1288             :     __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
    1289             :     __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15,
    1290             :     __q16, __q17, __q18, __q19, __q20, __q21, __q22, __q23,
    1291             :     __q24, __q25, __q26, __q27, __q28, __q29, __q30, __q31
    1292             :   };
    1293             : }
    1294             : 
    1295             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1296             : _mm256_set_epi64x (long long __A, long long __B, long long __C,
    1297             :                    long long __D)
    1298             : {
    1299   180360514 :   return __extension__ (__m256i)(__v4di){ __D, __C, __B, __A };
    1300             : }
    1301             : 
    1302             : /* Create a vector with all elements equal to A.  */
    1303             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1304             : _mm256_set1_pd (double __A)
    1305             : {
    1306             :   return __extension__ (__m256d){ __A, __A, __A, __A };
    1307             : }
    1308             : 
    1309             : /* Create a vector with all elements equal to A.  */
    1310             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1311             : _mm256_set1_ps (float __A)
    1312             : {
    1313           0 :   return __extension__ (__m256){ __A, __A, __A, __A,
    1314             :                                  __A, __A, __A, __A };
    1315             : }
    1316             : 
    1317             : /* Create a vector with all elements equal to A.  */
    1318             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1319             : _mm256_set1_epi32 (int __A)
    1320             : {
    1321  8185592598 :   return __extension__ (__m256i)(__v8si){ __A, __A, __A, __A,
    1322             :                                           __A, __A, __A, __A };
    1323             : }
    1324             : 
    1325             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1326             : _mm256_set1_epi16 (short __A)
    1327             : {
    1328 15697960880 :   return _mm256_set_epi16 (__A, __A, __A, __A, __A, __A, __A, __A,
    1329             :                            __A, __A, __A, __A, __A, __A, __A, __A);
    1330             : }
    1331             : 
    1332             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1333             : _mm256_set1_epi8 (char __A)
    1334             : {
    1335    12656840 :   return _mm256_set_epi8 (__A, __A, __A, __A, __A, __A, __A, __A,
    1336             :                           __A, __A, __A, __A, __A, __A, __A, __A,
    1337             :                           __A, __A, __A, __A, __A, __A, __A, __A,
    1338             :                           __A, __A, __A, __A, __A, __A, __A, __A);
    1339             : }
    1340             : 
    1341             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1342             : _mm256_set1_epi64x (long long __A)
    1343             : {
    1344   296004894 :   return __extension__ (__m256i)(__v4di){ __A, __A, __A, __A };
    1345             : }
    1346             : 
    1347             : /* Create vectors of elements in the reversed order from the
    1348             :    _mm256_set_XXX functions.  */
    1349             : 
    1350             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1351             : _mm256_setr_pd (double __A, double __B, double __C, double __D)
    1352             : {
    1353             :   return _mm256_set_pd (__D, __C, __B, __A);
    1354             : }
    1355             : 
    1356             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1357             : _mm256_setr_ps (float __A, float __B, float __C, float __D,
    1358             :                 float __E, float __F, float __G, float __H)
    1359             : {
    1360             :   return _mm256_set_ps (__H, __G, __F, __E, __D, __C, __B, __A);
    1361             : }
    1362             : 
    1363             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1364             : _mm256_setr_epi32 (int __A, int __B, int __C, int __D,
    1365             :                    int __E, int __F, int __G, int __H)
    1366             : {
    1367   389349200 :   return _mm256_set_epi32 (__H, __G, __F, __E, __D, __C, __B, __A);
    1368             : }
    1369             : 
    1370             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1371             : _mm256_setr_epi16 (short __q15, short __q14, short __q13, short __q12,
    1372             :                    short __q11, short __q10, short __q09, short __q08,
    1373             :                    short __q07, short __q06, short __q05, short __q04,
    1374             :                    short __q03, short __q02, short __q01, short __q00)
    1375             : {
    1376   262220360 :   return _mm256_set_epi16 (__q00, __q01, __q02, __q03,
    1377             :                            __q04, __q05, __q06, __q07,
    1378             :                            __q08, __q09, __q10, __q11,
    1379             :                            __q12, __q13, __q14, __q15);
    1380             : }
    1381             : 
    1382             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1383             : _mm256_setr_epi8  (char __q31, char __q30, char __q29, char __q28,
    1384             :                    char __q27, char __q26, char __q25, char __q24,
    1385             :                    char __q23, char __q22, char __q21, char __q20,
    1386             :                    char __q19, char __q18, char __q17, char __q16,
    1387             :                    char __q15, char __q14, char __q13, char __q12,
    1388             :                    char __q11, char __q10, char __q09, char __q08,
    1389             :                    char __q07, char __q06, char __q05, char __q04,
    1390             :                    char __q03, char __q02, char __q01, char __q00)
    1391             : {
    1392      132240 :   return _mm256_set_epi8 (__q00, __q01, __q02, __q03,
    1393             :                           __q04, __q05, __q06, __q07,
    1394             :                           __q08, __q09, __q10, __q11,
    1395             :                           __q12, __q13, __q14, __q15,
    1396             :                           __q16, __q17, __q18, __q19,
    1397             :                           __q20, __q21, __q22, __q23,
    1398             :                           __q24, __q25, __q26, __q27,
    1399             :                           __q28, __q29, __q30, __q31);
    1400             : }
    1401             : 
    1402             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1403             : _mm256_setr_epi64x (long long __A, long long __B, long long __C,
    1404             :                     long long __D)
    1405             : {
    1406   150695000 :   return _mm256_set_epi64x (__D, __C, __B, __A);
    1407             : }
    1408             : 
    1409             : /* Casts between various SP, DP, INT vector types.  Note that these do no
    1410             :    conversion of values, they just change the type.  */
    1411             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1412             : _mm256_castpd_ps (__m256d __A)
    1413             : {
    1414             :   return (__m256) __A;
    1415             : }
    1416             : 
    1417             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1418             : _mm256_castpd_si256 (__m256d __A)
    1419             : {
    1420             :   return (__m256i) __A;
    1421             : }
    1422             : 
    1423             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1424             : _mm256_castps_pd (__m256 __A)
    1425             : {
    1426             :   return (__m256d) __A;
    1427             : }
    1428             : 
    1429             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1430             : _mm256_castps_si256(__m256 __A)
    1431             : {
    1432             :   return (__m256i) __A;
    1433             : }
    1434             : 
    1435             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1436             : _mm256_castsi256_ps (__m256i __A)
    1437             : {
    1438             :   return (__m256) __A;
    1439             : }
    1440             : 
    1441             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1442             : _mm256_castsi256_pd (__m256i __A)
    1443             : {
    1444             :   return (__m256d) __A;
    1445             : }
    1446             : 
    1447             : extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1448             : _mm256_castpd256_pd128 (__m256d __A)
    1449             : {
    1450             :   return (__m128d) __builtin_ia32_pd_pd256 ((__v4df)__A);
    1451             : }
    1452             : 
    1453             : extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1454             : _mm256_castps256_ps128 (__m256 __A)
    1455             : {
    1456             :   return (__m128) __builtin_ia32_ps_ps256 ((__v8sf)__A);
    1457             : }
    1458             : 
    1459             : extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1460             : _mm256_castsi256_si128 (__m256i __A)
    1461             : {
    1462 14243279820 :   return (__m128i) __builtin_ia32_si_si256 ((__v8si)__A);
    1463             : }
    1464             : 
    1465             : /* When cast is done from a 128 to 256-bit type, the low 128 bits of
    1466             :    the 256-bit result contain source parameter value and the upper 128
    1467             :    bits of the result are undefined.  Those intrinsics shouldn't
    1468             :    generate any extra moves.  */
    1469             : 
    1470             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1471             : _mm256_castpd128_pd256 (__m128d __A)
    1472             : {
    1473             :   return (__m256d) __builtin_ia32_pd256_pd ((__v2df)__A);
    1474             : }
    1475             : 
    1476             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1477             : _mm256_castps128_ps256 (__m128 __A)
    1478             : {
    1479             :   return (__m256) __builtin_ia32_ps256_ps ((__v4sf)__A);
    1480             : }
    1481             : 
    1482             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1483             : _mm256_castsi128_si256 (__m128i __A)
    1484             : {
    1485 48617681844 :   return (__m256i) __builtin_ia32_si256_si ((__v4si)__A);
    1486             : }
    1487             : 
    1488             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1489             : _mm256_set_m128 ( __m128 __H, __m128 __L)
    1490             : {
    1491             :   return _mm256_insertf128_ps (_mm256_castps128_ps256 (__L), __H, 1);
    1492             : }
    1493             : 
    1494             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1495             : _mm256_set_m128d (__m128d __H, __m128d __L)
    1496             : {
    1497             :   return _mm256_insertf128_pd (_mm256_castpd128_pd256 (__L), __H, 1);
    1498             : }
    1499             : 
    1500             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1501             : _mm256_set_m128i (__m128i __H, __m128i __L)
    1502             : {
    1503             :   return _mm256_insertf128_si256 (_mm256_castsi128_si256 (__L), __H, 1);
    1504             : }
    1505             : 
    1506             : extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1507             : _mm256_setr_m128 (__m128 __L, __m128 __H)
    1508             : {
    1509             :   return _mm256_set_m128 (__H, __L);
    1510             : }
    1511             : 
    1512             : extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1513             : _mm256_setr_m128d (__m128d __L, __m128d __H)
    1514             : {
    1515             :   return _mm256_set_m128d (__H, __L);
    1516             : }
    1517             : 
    1518             : extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
    1519             : _mm256_setr_m128i (__m128i __L, __m128i __H)
    1520             : {
    1521             :   return _mm256_set_m128i (__H, __L);
    1522             : }
    1523             : 
    1524             : #ifdef __DISABLE_AVX__
    1525             : #undef __DISABLE_AVX__
    1526             : #pragma GCC pop_options
    1527             : #endif /* __DISABLE_AVX__ */
    1528             : 
    1529             : #endif /* _AVXINTRIN_H_INCLUDED */

Generated by: LCOV version 1.14