11188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/*===---- avxintrin.h - AVX intrinsics -------------------------------------=== 21188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * 31188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * Permission is hereby granted, free of charge, to any person obtaining a copy 41188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * of this software and associated documentation files (the "Software"), to deal 51188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * in the Software without restriction, including without limitation the rights 61188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 71188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * copies of the Software, and to permit persons to whom the Software is 81188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * furnished to do so, subject to the following conditions: 91188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * 101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * The above copyright notice and this permission notice shall be included in 111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * all copies or substantial portions of the Software. 121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * 131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * THE SOFTWARE. 201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * 211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *===-----------------------------------------------------------------------=== 221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker */ 231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifndef __IMMINTRIN_H 251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#error "Never use <avxintrin.h> directly; include <immintrin.h> instead." 261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif 271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifndef __AVXINTRIN_H 291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define __AVXINTRIN_H 301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 311188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef double __v4df __attribute__ ((__vector_size__ (32))); 321188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef float __v8sf __attribute__ ((__vector_size__ (32))); 331188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef long long __v4di __attribute__ ((__vector_size__ (32))); 341188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef int __v8si __attribute__ ((__vector_size__ (32))); 351188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef short __v16hi __attribute__ ((__vector_size__ (32))); 361188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef char __v32qi __attribute__ ((__vector_size__ (32))); 371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* We need an explicitly signed variant for char. Note that this shouldn't 391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker * appear in the interface though. */ 401188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef signed char __v32qs __attribute__((__vector_size__(32))); 411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 421188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef float __m256 __attribute__ ((__vector_size__ (32))); 431188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef double __m256d __attribute__((__vector_size__(32))); 441188dcf30923cb444143ffa4b83dc951037e76agitbuildkickertypedef long long __m256i __attribute__((__vector_size__(32))); 451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Define the default attributes for the functions in this file. */ 471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx"))) 481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Arithmetic */ 501188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_add_pd(__m256d __a, __m256d __b) 521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a+__b; 541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 561188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_add_ps(__m256 __a, __m256 __b) 581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a+__b; 601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 621188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_sub_pd(__m256d __a, __m256d __b) 641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a-__b; 661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 681188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_sub_ps(__m256 __a, __m256 __b) 701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a-__b; 721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 741188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_addsub_pd(__m256d __a, __m256d __b) 761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_addsubpd256((__v4df)__a, (__v4df)__b); 781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 801188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_addsub_ps(__m256 __a, __m256 __b) 821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_addsubps256((__v8sf)__a, (__v8sf)__b); 841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 861188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_div_pd(__m256d __a, __m256d __b) 881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a / __b; 901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 921188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_div_ps(__m256 __a, __m256 __b) 941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a / __b; 961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 981188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_max_pd(__m256d __a, __m256d __b) 1001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_maxpd256((__v4df)__a, (__v4df)__b); 1021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1041188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_max_ps(__m256 __a, __m256 __b) 1061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_maxps256((__v8sf)__a, (__v8sf)__b); 1081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1101188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_min_pd(__m256d __a, __m256d __b) 1121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_minpd256((__v4df)__a, (__v4df)__b); 1141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1161188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_min_ps(__m256 __a, __m256 __b) 1181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_minps256((__v8sf)__a, (__v8sf)__b); 1201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1221188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_mul_pd(__m256d __a, __m256d __b) 1241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a * __b; 1261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1281188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_mul_ps(__m256 __a, __m256 __b) 1301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __a * __b; 1321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1341188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_sqrt_pd(__m256d __a) 1361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_sqrtpd256((__v4df)__a); 1381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1401188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_sqrt_ps(__m256 __a) 1421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_sqrtps256((__v8sf)__a); 1441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1461188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_rsqrt_ps(__m256 __a) 1481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_rsqrtps256((__v8sf)__a); 1501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1521188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_rcp_ps(__m256 __a) 1541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_rcpps256((__v8sf)__a); 1561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_round_pd(V, M) __extension__ ({ \ 1591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M)); }) 1601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_round_ps(V, M) __extension__ ({ \ 1621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M)); }) 1631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_ceil_pd(V) _mm256_round_pd((V), _MM_FROUND_CEIL) 1651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_floor_pd(V) _mm256_round_pd((V), _MM_FROUND_FLOOR) 1661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_ceil_ps(V) _mm256_round_ps((V), _MM_FROUND_CEIL) 1671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_floor_ps(V) _mm256_round_ps((V), _MM_FROUND_FLOOR) 1681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Logical */ 1701188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_and_pd(__m256d __a, __m256d __b) 1721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)((__v4di)__a & (__v4di)__b); 1741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1761188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_and_ps(__m256 __a, __m256 __b) 1781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)((__v8si)__a & (__v8si)__b); 1801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1821188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_andnot_pd(__m256d __a, __m256d __b) 1841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)(~(__v4di)__a & (__v4di)__b); 1861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1881188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_andnot_ps(__m256 __a, __m256 __b) 1901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)(~(__v8si)__a & (__v8si)__b); 1921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 1941188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_or_pd(__m256d __a, __m256d __b) 1961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 1971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)((__v4di)__a | (__v4di)__b); 1981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 1991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2001188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_or_ps(__m256 __a, __m256 __b) 2021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)((__v8si)__a | (__v8si)__b); 2041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2061188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_xor_pd(__m256d __a, __m256d __b) 2081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)((__v4di)__a ^ (__v4di)__b); 2101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2121188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_xor_ps(__m256 __a, __m256 __b) 2141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)((__v8si)__a ^ (__v8si)__b); 2161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Horizontal arithmetic */ 2191188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_hadd_pd(__m256d __a, __m256d __b) 2211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_haddpd256((__v4df)__a, (__v4df)__b); 2231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2251188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_hadd_ps(__m256 __a, __m256 __b) 2271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_haddps256((__v8sf)__a, (__v8sf)__b); 2291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2311188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_hsub_pd(__m256d __a, __m256d __b) 2331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_hsubpd256((__v4df)__a, (__v4df)__b); 2351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2371188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_hsub_ps(__m256 __a, __m256 __b) 2391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_hsubps256((__v8sf)__a, (__v8sf)__b); 2411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector permutations */ 2441188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS 2451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_permutevar_pd(__m128d __a, __m128i __c) 2461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128d)__builtin_ia32_vpermilvarpd((__v2df)__a, (__v2di)__c); 2481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2501188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_permutevar_pd(__m256d __a, __m256i __c) 2521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_vpermilvarpd256((__v4df)__a, (__v4di)__c); 2541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2561188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 2571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_permutevar_ps(__m128 __a, __m128i __c) 2581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128)__builtin_ia32_vpermilvarps((__v4sf)__a, (__v4si)__c); 2601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2621188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_permutevar_ps(__m256 __a, __m256i __c) 2641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 2651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_vpermilvarps256((__v8sf)__a, (__v8si)__c); 2661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 2671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm_permute_pd(A, C) __extension__ ({ \ 2691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128d)__builtin_shufflevector((__v2df)(__m128d)(A), \ 2701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v2df)_mm_setzero_pd(), \ 2711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (C) & 0x1, ((C) & 0x2) >> 1); }) 2721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_permute_pd(A, C) __extension__ ({ \ 2741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \ 2751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)_mm256_setzero_pd(), \ 2761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (C) & 0x1, ((C) & 0x2) >> 1, \ 2771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2 + (((C) & 0x4) >> 2), \ 2781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2 + (((C) & 0x8) >> 3)); }) 2791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm_permute_ps(A, C) __extension__ ({ \ 2811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128)__builtin_shufflevector((__v4sf)(__m128)(A), \ 2821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4sf)_mm_setzero_ps(), \ 2831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (C) & 0x3, ((C) & 0xc) >> 2, \ 2841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker ((C) & 0x30) >> 4, ((C) & 0xc0) >> 6); }) 2851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_permute_ps(A, C) __extension__ ({ \ 2871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \ 2881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)_mm256_setzero_ps(), \ 2891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (C) & 0x3, ((C) & 0xc) >> 2, \ 2901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker ((C) & 0x30) >> 4, ((C) & 0xc0) >> 6, \ 2911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4 + (((C) & 0x03) >> 0), \ 2921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4 + (((C) & 0x0c) >> 2), \ 2931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4 + (((C) & 0x30) >> 4), \ 2941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4 + (((C) & 0xc0) >> 6)); }) 2951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 2961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_permute2f128_pd(V1, V2, M) __extension__ ({ \ 2971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \ 2981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(__m256d)(V2), (M)); }) 2991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_permute2f128_ps(V1, V2, M) __extension__ ({ \ 3011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \ 3021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(V2), (M)); }) 3031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_permute2f128_si256(V1, V2, M) __extension__ ({ \ 3051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \ 3061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8si)(__m256i)(V2), (M)); }) 3071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector Blend */ 3091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_blend_pd(V1, V2, M) __extension__ ({ \ 3101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_shufflevector((__v4df)(__m256d)(V1), \ 3111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(__m256d)(V2), \ 3121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x01) ? 4 : 0), \ 3131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x02) ? 5 : 1), \ 3141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x04) ? 6 : 2), \ 3151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x08) ? 7 : 3)); }) 3161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_blend_ps(V1, V2, M) __extension__ ({ \ 3181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_shufflevector((__v8sf)(__m256)(V1), \ 3191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(V2), \ 3201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x01) ? 8 : 0), \ 3211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x02) ? 9 : 1), \ 3221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x04) ? 10 : 2), \ 3231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x08) ? 11 : 3), \ 3241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x10) ? 12 : 4), \ 3251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x20) ? 13 : 5), \ 3261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x40) ? 14 : 6), \ 3271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 0x80) ? 15 : 7)); }) 3281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3291188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 3301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_blendv_pd(__m256d __a, __m256d __b, __m256d __c) 3311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 3321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_blendvpd256( 3331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)__a, (__v4df)__b, (__v4df)__c); 3341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 3351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3361188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 3371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c) 3381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 3391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_blendvps256( 3401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)__a, (__v8sf)__b, (__v8sf)__c); 3411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 3421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector Dot Product */ 3441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_dp_ps(V1, V2, M) __extension__ ({ \ 3451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \ 3461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(V2), (M)); }) 3471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector shuffle */ 3491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_shuffle_ps(a, b, mask) __extension__ ({ \ 3501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_shufflevector((__v8sf)(__m256)(a), \ 3511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(b), \ 3521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (mask) & 0x3, \ 3531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker ((mask) & 0xc) >> 2, \ 3541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0x30) >> 4) + 8, \ 3551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0xc0) >> 6) + 8, \ 3561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker ((mask) & 0x3) + 4, \ 3571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0xc) >> 2) + 4, \ 3581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0x30) >> 4) + 12, \ 3591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0xc0) >> 6) + 12); }) 3601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_shuffle_pd(a, b, mask) __extension__ ({ \ 3621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_shufflevector((__v4df)(__m256d)(a), \ 3631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(__m256d)(b), \ 3641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (mask) & 0x1, \ 3651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0x2) >> 1) + 4, \ 3661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0x4) >> 2) + 2, \ 3671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((mask) & 0x8) >> 3) + 6); }) 3681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 3691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Compare */ 3701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */ 3711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */ 3721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */ 3731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_UNORD_Q 0x03 /* Unordered (non-signaling) */ 3741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */ 3751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */ 3761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */ 3771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_ORD_Q 0x07 /* Ordered (nonsignaling) */ 3781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */ 3791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unord, signaling) */ 3801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NGT_US 0x0a /* Not-greater-than (unordered, signaling) */ 3811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling) */ 3821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NEQ_OQ 0x0c /* Not-equal (ordered, non-signaling) */ 3831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_GE_OS 0x0d /* Greater-than-or-equal (ordered, signaling) */ 3841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_GT_OS 0x0e /* Greater-than (ordered, signaling) */ 3851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_TRUE_UQ 0x0f /* True (unordered, non-signaling) */ 3861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_EQ_OS 0x10 /* Equal (ordered, signaling) */ 3871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_LT_OQ 0x11 /* Less-than (ordered, non-signaling) */ 3881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_LE_OQ 0x12 /* Less-than-or-equal (ordered, non-signaling) */ 3891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */ 3901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */ 3911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, non-signaling) */ 3921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unord, non-signaling) */ 3931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_ORD_S 0x17 /* Ordered (signaling) */ 3941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */ 3951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unord, non-sign) */ 3961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NGT_UQ 0x1a /* Not-greater-than (unordered, non-signaling) */ 3971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling) */ 3981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_NEQ_OS 0x1c /* Not-equal (ordered, signaling) */ 3991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_GE_OQ 0x1d /* Greater-than-or-equal (ordered, non-signaling) */ 4001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_GT_OQ 0x1e /* Greater-than (ordered, non-signaling) */ 4011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _CMP_TRUE_US 0x1f /* True (unordered, signaling) */ 4021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm_cmp_pd(a, b, c) __extension__ ({ \ 4041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \ 4051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v2df)(__m128d)(b), (c)); }) 4061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm_cmp_ps(a, b, c) __extension__ ({ \ 4081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \ 4091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4sf)(__m128)(b), (c)); }) 4101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_cmp_pd(a, b, c) __extension__ ({ \ 4121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \ 4131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(__m256d)(b), (c)); }) 4141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_cmp_ps(a, b, c) __extension__ ({ \ 4161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \ 4171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(b), (c)); }) 4181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm_cmp_sd(a, b, c) __extension__ ({ \ 4201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \ 4211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v2df)(__m128d)(b), (c)); }) 4221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm_cmp_ss(a, b, c) __extension__ ({ \ 4241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \ 4251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4sf)(__m128)(b), (c)); }) 4261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4271188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 4281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_extract_epi32(__m256i __a, const int __imm) 4291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v8si __b = (__v8si)__a; 4311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __b[__imm & 7]; 4321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4341188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 4351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_extract_epi16(__m256i __a, const int __imm) 4361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v16hi __b = (__v16hi)__a; 4381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __b[__imm & 15]; 4391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4411188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 4421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_extract_epi8(__m256i __a, const int __imm) 4431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v32qi __b = (__v32qi)__a; 4451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __b[__imm & 31]; 4461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifdef __x86_64__ 4491188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline long long __DEFAULT_FN_ATTRS 4501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_extract_epi64(__m256i __a, const int __imm) 4511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v4di __b = (__v4di)__a; 4531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __b[__imm & 3]; 4541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif 4561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4571188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 4581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_insert_epi32(__m256i __a, int __b, int const __imm) 4591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v8si __c = (__v8si)__a; 4611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __c[__imm & 7] = __b; 4621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__c; 4631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4651188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 4661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_insert_epi16(__m256i __a, int __b, int const __imm) 4671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v16hi __c = (__v16hi)__a; 4691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __c[__imm & 15] = __b; 4701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__c; 4711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4731188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 4741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_insert_epi8(__m256i __a, int __b, int const __imm) 4751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v32qi __c = (__v32qi)__a; 4771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __c[__imm & 31] = __b; 4781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__c; 4791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#ifdef __x86_64__ 4821188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 4831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_insert_epi64(__m256i __a, long long __b, int const __imm) 4841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v4di __c = (__v4di)__a; 4861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __c[__imm & 3] = __b; 4871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__c; 4881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif 4901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Conversion */ 4921188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 4931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvtepi32_pd(__m128i __a) 4941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 4951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_cvtdq2pd256((__v4si) __a); 4961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 4971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 4981188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 4991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvtepi32_ps(__m256i __a) 5001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_cvtdq2ps256((__v8si) __a); 5021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5041188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 5051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvtpd_ps(__m256d __a) 5061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128)__builtin_ia32_cvtpd2ps256((__v4df) __a); 5081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5101188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 5111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvtps_epi32(__m256 __a) 5121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__builtin_ia32_cvtps2dq256((__v8sf) __a); 5141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5161188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 5171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvtps_pd(__m128 __a) 5181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_cvtps2pd256((__v4sf) __a); 5201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5221188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS 5231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvttpd_epi32(__m256d __a) 5241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128i)__builtin_ia32_cvttpd2dq256((__v4df) __a); 5261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5281188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS 5291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvtpd_epi32(__m256d __a) 5301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128i)__builtin_ia32_cvtpd2dq256((__v4df) __a); 5321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5341188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 5351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_cvttps_epi32(__m256 __a) 5361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__builtin_ia32_cvttps2dq256((__v8sf) __a); 5381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector replicate */ 5411188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 5421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_movehdup_ps(__m256 __a) 5431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 1, 1, 3, 3, 5, 5, 7, 7); 5451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5471188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 5481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_moveldup_ps(__m256 __a) 5491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 0, 2, 2, 4, 4, 6, 6); 5511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5531188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 5541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_movedup_pd(__m256d __a) 5551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 0, 2, 2); 5571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Unpack and Interleave */ 5601188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 5611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_unpackhi_pd(__m256d __a, __m256d __b) 5621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __b, 1, 5, 1+2, 5+2); 5641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5661188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 5671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_unpacklo_pd(__m256d __a, __m256d __b) 5681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __b, 0, 4, 0+2, 4+2); 5701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5721188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 5731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_unpackhi_ps(__m256 __a, __m256 __b) 5741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __b, 2, 10, 2+1, 10+1, 6, 14, 6+1, 14+1); 5761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5781188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 5791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_unpacklo_ps(__m256 __a, __m256 __b) 5801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __b, 0, 8, 0+1, 8+1, 4, 12, 4+1, 12+1); 5821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Bit Test */ 5851188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 5861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_testz_pd(__m128d __a, __m128d __b) 5871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestzpd((__v2df)__a, (__v2df)__b); 5891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5911188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 5921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_testc_pd(__m128d __a, __m128d __b) 5931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 5941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestcpd((__v2df)__a, (__v2df)__b); 5951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 5961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 5971188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 5981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_testnzc_pd(__m128d __a, __m128d __b) 5991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestnzcpd((__v2df)__a, (__v2df)__b); 6011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6031188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_testz_ps(__m128 __a, __m128 __b) 6051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestzps((__v4sf)__a, (__v4sf)__b); 6071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6091188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_testc_ps(__m128 __a, __m128 __b) 6111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestcps((__v4sf)__a, (__v4sf)__b); 6131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6151188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_testnzc_ps(__m128 __a, __m128 __b) 6171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestnzcps((__v4sf)__a, (__v4sf)__b); 6191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6211188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testz_pd(__m256d __a, __m256d __b) 6231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestzpd256((__v4df)__a, (__v4df)__b); 6251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6271188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testc_pd(__m256d __a, __m256d __b) 6291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestcpd256((__v4df)__a, (__v4df)__b); 6311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6331188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testnzc_pd(__m256d __a, __m256d __b) 6351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestnzcpd256((__v4df)__a, (__v4df)__b); 6371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6391188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testz_ps(__m256 __a, __m256 __b) 6411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestzps256((__v8sf)__a, (__v8sf)__b); 6431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6451188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testc_ps(__m256 __a, __m256 __b) 6471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestcps256((__v8sf)__a, (__v8sf)__b); 6491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6511188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testnzc_ps(__m256 __a, __m256 __b) 6531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_vtestnzcps256((__v8sf)__a, (__v8sf)__b); 6551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6571188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testz_si256(__m256i __a, __m256i __b) 6591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_ptestz256((__v4di)__a, (__v4di)__b); 6611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6631188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testc_si256(__m256i __a, __m256i __b) 6651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_ptestc256((__v4di)__a, (__v4di)__b); 6671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6691188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_testnzc_si256(__m256i __a, __m256i __b) 6711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_ptestnzc256((__v4di)__a, (__v4di)__b); 6731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector extract sign mask */ 6761188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_movemask_pd(__m256d __a) 6781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_movmskpd256((__v4df)__a); 6801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6821188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 6831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_movemask_ps(__m256 __a) 6841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_ia32_movmskps256((__v8sf)__a); 6861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector __zero */ 6891188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 6901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_zeroall(void) 6911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_vzeroall(); 6931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 6941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 6951188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 6961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_zeroupper(void) 6971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 6981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_vzeroupper(); 6991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Vector load with broadcast */ 7021188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 7031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_broadcast_ss(float const *__a) 7041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker float __f = *__a; 7061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128)(__v4sf){ __f, __f, __f, __f }; 7071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7091188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 7101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_broadcast_sd(double const *__a) 7111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker double __d = *__a; 7131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)(__v4df){ __d, __d, __d, __d }; 7141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7161188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 7171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_broadcast_ss(float const *__a) 7181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker float __f = *__a; 7201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f }; 7211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7231188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 7241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_broadcast_pd(__m128d const *__a) 7251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_vbroadcastf128_pd256(__a); 7271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7291188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 7301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_broadcast_ps(__m128 const *__a) 7311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_vbroadcastf128_ps256(__a); 7331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* SIMD load ops */ 7361188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 7371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_load_pd(double const *__p) 7381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return *(__m256d *)__p; 7401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7421188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 7431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_load_ps(float const *__p) 7441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return *(__m256 *)__p; 7461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7481188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 7491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_loadu_pd(double const *__p) 7501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker struct __loadu_pd { 7521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m256d __v; 7531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker } __attribute__((__packed__, __may_alias__)); 7541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return ((struct __loadu_pd*)__p)->__v; 7551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7571188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 7581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_loadu_ps(float const *__p) 7591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker struct __loadu_ps { 7611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m256 __v; 7621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker } __attribute__((__packed__, __may_alias__)); 7631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return ((struct __loadu_ps*)__p)->__v; 7641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7661188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 7671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_load_si256(__m256i const *__p) 7681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return *__p; 7701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7721188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 7731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_loadu_si256(__m256i const *__p) 7741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker struct __loadu_si256 { 7761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m256i __v; 7771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker } __attribute__((__packed__, __may_alias__)); 7781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return ((struct __loadu_si256*)__p)->__v; 7791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7811188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 7821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_lddqu_si256(__m256i const *__p) 7831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__builtin_ia32_lddqu256((char const *)__p); 7851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* SIMD store ops */ 7881188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 7891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_store_pd(double *__p, __m256d __a) 7901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *(__m256d *)__p = __a; 7921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 7941188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 7951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_store_ps(float *__p, __m256 __a) 7961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 7971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *(__m256 *)__p = __a; 7981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 7991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8001188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_storeu_pd(double *__p, __m256d __a) 8021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storeupd256(__p, (__v4df)__a); 8041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8061188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_storeu_ps(float *__p, __m256 __a) 8081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storeups256(__p, (__v8sf)__a); 8101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8121188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_store_si256(__m256i *__p, __m256i __a) 8141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker *__p = __a; 8161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8181188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_storeu_si256(__m256i *__p, __m256i __a) 8201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storedqu256((char *)__p, (__v32qi)__a); 8221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Conditional load ops */ 8251188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS 8261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_maskload_pd(double const *__p, __m128i __m) 8271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128d)__builtin_ia32_maskloadpd((const __v2df *)__p, (__v2di)__m); 8291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8311188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 8321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_maskload_pd(double const *__p, __m256i __m) 8331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_maskloadpd256((const __v4df *)__p, 8351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4di)__m); 8361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8381188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 8391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_maskload_ps(float const *__p, __m128i __m) 8401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m128)__builtin_ia32_maskloadps((const __v4sf *)__p, (__v4si)__m); 8421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8441188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 8451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_maskload_ps(float const *__p, __m256i __m) 8461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_maskloadps256((const __v8sf *)__p, (__v8si)__m); 8481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Conditional store ops */ 8511188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_maskstore_ps(float *__p, __m256i __m, __m256 __a) 8531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_maskstoreps256((__v8sf *)__p, (__v8si)__m, (__v8sf)__a); 8551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8571188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_maskstore_pd(double *__p, __m128i __m, __m128d __a) 8591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_maskstorepd((__v2df *)__p, (__v2di)__m, (__v2df)__a); 8611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8631188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_maskstore_pd(double *__p, __m256i __m, __m256d __a) 8651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_maskstorepd256((__v4df *)__p, (__v4di)__m, (__v4df)__a); 8671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8691188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm_maskstore_ps(float *__p, __m128i __m, __m128 __a) 8711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_maskstoreps((__v4sf *)__p, (__v4si)__m, (__v4sf)__a); 8731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Cacheability support ops */ 8761188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_stream_si256(__m256i *__a, __m256i __b) 8781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_movntdq256((__v4di *)__a, (__v4di)__b); 8801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8821188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_stream_pd(double *__a, __m256d __b) 8841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_movntpd256(__a, (__v4df)__b); 8861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8881188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 8891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_stream_ps(float *__p, __m256 __a) 8901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_movntps256(__p, (__v8sf)__a); 8921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 8931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 8941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Create vectors */ 8951188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m256d __DEFAULT_FN_ATTRS 8961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_undefined_pd() 8971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 8981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__builtin_ia32_undef256(); 8991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9011188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m256 __DEFAULT_FN_ATTRS 9021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_undefined_ps() 9031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__builtin_ia32_undef256(); 9051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9071188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline__ __m256i __DEFAULT_FN_ATTRS 9081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_undefined_si256() 9091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__builtin_ia32_undef256(); 9111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9131188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 9141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_pd(double __a, double __b, double __c, double __d) 9151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d){ __d, __c, __b, __a }; 9171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9191188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 9201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_ps(float __a, float __b, float __c, float __d, 9211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker float __e, float __f, float __g, float __h) 9221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256){ __h, __g, __f, __e, __d, __c, __b, __a }; 9241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9261188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_epi32(int __i0, int __i1, int __i2, int __i3, 9281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker int __i4, int __i5, int __i6, int __i7) 9291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v8si){ __i7, __i6, __i5, __i4, __i3, __i2, __i1, __i0 }; 9311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9331188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_epi16(short __w15, short __w14, short __w13, short __w12, 9351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker short __w11, short __w10, short __w09, short __w08, 9361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker short __w07, short __w06, short __w05, short __w04, 9371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker short __w03, short __w02, short __w01, short __w00) 9381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v16hi){ __w00, __w01, __w02, __w03, __w04, __w05, __w06, 9401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __w07, __w08, __w09, __w10, __w11, __w12, __w13, __w14, __w15 }; 9411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9431188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_epi8(char __b31, char __b30, char __b29, char __b28, 9451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b27, char __b26, char __b25, char __b24, 9461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b23, char __b22, char __b21, char __b20, 9471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b19, char __b18, char __b17, char __b16, 9481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b15, char __b14, char __b13, char __b12, 9491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b11, char __b10, char __b09, char __b08, 9501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b07, char __b06, char __b05, char __b04, 9511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b03, char __b02, char __b01, char __b00) 9521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v32qi){ 9541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b00, __b01, __b02, __b03, __b04, __b05, __b06, __b07, 9551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b08, __b09, __b10, __b11, __b12, __b13, __b14, __b15, 9561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b16, __b17, __b18, __b19, __b20, __b21, __b22, __b23, 9571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b24, __b25, __b26, __b27, __b28, __b29, __b30, __b31 9581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker }; 9591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9611188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_epi64x(long long __a, long long __b, long long __c, long long __d) 9631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v4di){ __d, __c, __b, __a }; 9651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Create vectors with elements in reverse order */ 9681188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 9691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_pd(double __a, double __b, double __c, double __d) 9701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d){ __a, __b, __c, __d }; 9721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9741188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 9751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_ps(float __a, float __b, float __c, float __d, 9761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker float __e, float __f, float __g, float __h) 9771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256){ __a, __b, __c, __d, __e, __f, __g, __h }; 9791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9811188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_epi32(int __i0, int __i1, int __i2, int __i3, 9831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker int __i4, int __i5, int __i6, int __i7) 9841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v8si){ __i0, __i1, __i2, __i3, __i4, __i5, __i6, __i7 }; 9861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9881188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_epi16(short __w15, short __w14, short __w13, short __w12, 9901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker short __w11, short __w10, short __w09, short __w08, 9911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker short __w07, short __w06, short __w05, short __w04, 9921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker short __w03, short __w02, short __w01, short __w00) 9931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 9941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v16hi){ __w15, __w14, __w13, __w12, __w11, __w10, __w09, 9951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __w08, __w07, __w06, __w05, __w04, __w03, __w02, __w01, __w00 }; 9961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 9971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 9981188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 9991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_epi8(char __b31, char __b30, char __b29, char __b28, 10001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b27, char __b26, char __b25, char __b24, 10011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b23, char __b22, char __b21, char __b20, 10021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b19, char __b18, char __b17, char __b16, 10031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b15, char __b14, char __b13, char __b12, 10041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b11, char __b10, char __b09, char __b08, 10051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b07, char __b06, char __b05, char __b04, 10061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker char __b03, char __b02, char __b01, char __b00) 10071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v32qi){ 10091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b31, __b30, __b29, __b28, __b27, __b26, __b25, __b24, 10101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b23, __b22, __b21, __b20, __b19, __b18, __b17, __b16, 10111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b15, __b14, __b13, __b12, __b11, __b10, __b09, __b08, 10121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b07, __b06, __b05, __b04, __b03, __b02, __b01, __b00 }; 10131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10151188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_epi64x(long long __a, long long __b, long long __c, long long __d) 10171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v4di){ __a, __b, __c, __d }; 10191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Create vectors with repeated elements */ 10221188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 10231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set1_pd(double __w) 10241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d){ __w, __w, __w, __w }; 10261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10281188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 10291188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set1_ps(float __w) 10301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256){ __w, __w, __w, __w, __w, __w, __w, __w }; 10321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10341188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set1_epi32(int __i) 10361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v8si){ __i, __i, __i, __i, __i, __i, __i, __i }; 10381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10401188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set1_epi16(short __w) 10421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v16hi){ __w, __w, __w, __w, __w, __w, __w, __w, __w, __w, 10441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __w, __w, __w, __w, __w, __w }; 10451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10471188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set1_epi8(char __b) 10491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v32qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, 10511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, 10521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __b, __b, __b, __b, __b, __b, __b }; 10531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10551188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set1_epi64x(long long __q) 10571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)(__v4di){ __q, __q, __q, __q }; 10591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Create __zeroed vectors */ 10621188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 10631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setzero_pd(void) 10641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d){ 0, 0, 0, 0 }; 10661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10681188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 10691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setzero_ps(void) 10701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 }; 10721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10741188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setzero_si256(void) 10761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i){ 0LL, 0LL, 0LL, 0LL }; 10781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* Cast between vector types */ 10811188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 10821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castpd_ps(__m256d __a) 10831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__a; 10851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10871188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 10881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castpd_si256(__m256d __a) 10891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__a; 10911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10931188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 10941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castps_pd(__m256 __a) 10951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 10961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__a; 10971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 10981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 10991188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 11001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castps_si256(__m256 __a) 11011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)__a; 11031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11051188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 11061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castsi256_ps(__m256i __a) 11071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256)__a; 11091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11111188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 11121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castsi256_pd(__m256i __a) 11131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)__a; 11151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11171188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS 11181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castpd256_pd128(__m256d __a) 11191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 1); 11211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11231188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 11241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castps256_ps128(__m256 __a) 11251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 1, 2, 3); 11271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11291188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS 11301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castsi256_si128(__m256i __a) 11311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 1); 11331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11351188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 11361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castpd128_pd256(__m128d __a) 11371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 1, -1, -1); 11391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11401188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11411188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 11421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castps128_ps256(__m128 __a) 11431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1); 11451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11471188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 11481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_castsi128_si256(__m128i __a) 11491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 11501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return __builtin_shufflevector(__a, __a, 0, 1, -1, -1); 11511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 11521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11531188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* 11541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker Vector insert. 11551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker We use macros rather than inlines because we only want to accept 11561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker invocations where the immediate M is a constant expression. 11571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker*/ 11581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_insertf128_ps(V1, V2, M) __extension__ ({ \ 11591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256)__builtin_shufflevector( \ 11601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(V1), \ 11611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)_mm256_castps128_ps256((__m128)(V2)), \ 11621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 0 : 8), \ 11631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 1 : 9), \ 11641188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 2 : 10), \ 11651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 3 : 11), \ 11661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 8 : 4), \ 11671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 9 : 5), \ 11681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 10 : 6), \ 11691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 11 : 7) );}) 11701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_insertf128_pd(V1, V2, M) __extension__ ({ \ 11721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256d)__builtin_shufflevector( \ 11731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(__m256d)(V1), \ 11741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)_mm256_castpd128_pd256((__m128d)(V2)), \ 11751188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 0 : 4), \ 11761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 1 : 5), \ 11771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 4 : 2), \ 11781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 5 : 3) );}) 11791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_insertf128_si256(V1, V2, M) __extension__ ({ \ 11811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m256i)__builtin_shufflevector( \ 11821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4di)(__m256i)(V1), \ 11831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4di)_mm256_castsi128_si256((__m128i)(V2)), \ 11841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 0 : 4), \ 11851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 1 : 5), \ 11861188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 4 : 2), \ 11871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 5 : 3) );}) 11881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 11891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* 11901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker Vector extract. 11911188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker We use macros rather than inlines because we only want to accept 11921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker invocations where the immediate M is a constant expression. 11931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker*/ 11941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_extractf128_ps(V, M) __extension__ ({ \ 11951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128)__builtin_shufflevector( \ 11961188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(__m256)(V), \ 11971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v8sf)(_mm256_setzero_ps()), \ 11981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 4 : 0), \ 11991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 5 : 1), \ 12001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 6 : 2), \ 12011188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 7 : 3) );}) 12021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_extractf128_pd(V, M) __extension__ ({ \ 12041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128d)__builtin_shufflevector( \ 12051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(__m256d)(V), \ 12061188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4df)(_mm256_setzero_pd()), \ 12071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 2 : 0), \ 12081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 3 : 1) );}) 12091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#define _mm256_extractf128_si256(V, M) __extension__ ({ \ 12111188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__m128i)__builtin_shufflevector( \ 12121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4di)(__m256i)(V), \ 12131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (__v4di)(_mm256_setzero_si256()), \ 12141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 2 : 0), \ 12151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker (((M) & 1) ? 3 : 1) );}) 12161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* SIMD load ops (unaligned) */ 12181188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 12191188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo) 12201188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 12211188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker struct __loadu_ps { 12221188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m128 __v; 12231188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker } __attribute__((__packed__, __may_alias__)); 12241188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12251188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m256 __v256 = _mm256_castps128_ps256(((struct __loadu_ps*)__addr_lo)->__v); 12261188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return _mm256_insertf128_ps(__v256, ((struct __loadu_ps*)__addr_hi)->__v, 1); 12271188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12281188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12291188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 12301188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo) 12311188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 12321188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker struct __loadu_pd { 12331188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m128d __v; 12341188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker } __attribute__((__packed__, __may_alias__)); 12351188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12361188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m256d __v256 = _mm256_castpd128_pd256(((struct __loadu_pd*)__addr_lo)->__v); 12371188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return _mm256_insertf128_pd(__v256, ((struct __loadu_pd*)__addr_hi)->__v, 1); 12381188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12391188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12401188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 12411188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_loadu2_m128i(__m128i const *__addr_hi, __m128i const *__addr_lo) 12421188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 12431188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker struct __loadu_si128 { 12441188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m128i __v; 12451188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker } __attribute__((__packed__, __may_alias__)); 12461188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m256i __v256 = _mm256_castsi128_si256( 12471188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker ((struct __loadu_si128*)__addr_lo)->__v); 12481188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return _mm256_insertf128_si256(__v256, 12491188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker ((struct __loadu_si128*)__addr_hi)->__v, 1); 12501188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12511188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12521188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker/* SIMD store ops (unaligned) */ 12531188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 12541188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_storeu2_m128(float *__addr_hi, float *__addr_lo, __m256 __a) 12551188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 12561188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m128 __v128; 12571188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12581188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v128 = _mm256_castps256_ps128(__a); 12591188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storeups(__addr_lo, __v128); 12601188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v128 = _mm256_extractf128_ps(__a, 1); 12611188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storeups(__addr_hi, __v128); 12621188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12631188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12641188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 12651188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_storeu2_m128d(double *__addr_hi, double *__addr_lo, __m256d __a) 12661188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 12671188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m128d __v128; 12681188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12691188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v128 = _mm256_castpd256_pd128(__a); 12701188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storeupd(__addr_lo, __v128); 12711188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v128 = _mm256_extractf128_pd(__a, 1); 12721188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storeupd(__addr_hi, __v128); 12731188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12741188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12751188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 12761188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_storeu2_m128i(__m128i *__addr_hi, __m128i *__addr_lo, __m256i __a) 12771188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker{ 12781188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __m128i __v128; 12791188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12801188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v128 = _mm256_castsi256_si128(__a); 12811188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storedqu((char *)__addr_lo, (__v16qi)__v128); 12821188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __v128 = _mm256_extractf128_si256(__a, 1); 12831188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker __builtin_ia32_storedqu((char *)__addr_hi, (__v16qi)__v128); 12841188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12851188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12861188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 12871188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_m128 (__m128 __hi, __m128 __lo) { 12881188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256) __builtin_shufflevector(__lo, __hi, 0, 1, 2, 3, 4, 5, 6, 7); 12891188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12901188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12911188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 12921188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_m128d (__m128d __hi, __m128d __lo) { 12931188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo); 12941188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 12951188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 12961188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 12971188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_set_m128i (__m128i __hi, __m128i __lo) { 12981188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo); 12991188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 13001188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 13011188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 13021188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_m128 (__m128 __lo, __m128 __hi) { 13031188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return _mm256_set_m128(__hi, __lo); 13041188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 13051188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 13061188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 13071188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_m128d (__m128d __lo, __m128d __hi) { 13081188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo); 13091188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 13101188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 13111188dcf30923cb444143ffa4b83dc951037e76agitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 13121188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker_mm256_setr_m128i (__m128i __lo, __m128i __hi) { 13131188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo); 13141188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker} 13151188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 13161188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#undef __DEFAULT_FN_ATTRS 13171188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker 13181188dcf30923cb444143ffa4b83dc951037e76agitbuildkicker#endif /* __AVXINTRIN_H */ 1319