16bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/*===---- avxintrin.h - AVX intrinsics -------------------------------------=== 26bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 36bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * Permission is hereby granted, free of charge, to any person obtaining a copy 46bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * of this software and associated documentation files (the "Software"), to deal 56bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * in the Software without restriction, including without limitation the rights 66bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 76bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * copies of the Software, and to permit persons to whom the Software is 86bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * furnished to do so, subject to the following conditions: 96bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * The above copyright notice and this permission notice shall be included in 116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * all copies or substantial portions of the Software. 126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * THE SOFTWARE. 206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * 216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker *===-----------------------------------------------------------------------=== 226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker */ 236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifndef __IMMINTRIN_H 256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#error "Never use <avxintrin.h> directly; include <immintrin.h> instead." 266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifndef __AVXINTRIN_H 296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define __AVXINTRIN_H 306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef double __v4df __attribute__ ((__vector_size__ (32))); 326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef float __v8sf __attribute__ ((__vector_size__ (32))); 336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef long long __v4di __attribute__ ((__vector_size__ (32))); 346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef int __v8si __attribute__ ((__vector_size__ (32))); 356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef short __v16hi __attribute__ ((__vector_size__ (32))); 366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef char __v32qi __attribute__ ((__vector_size__ (32))); 376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Unsigned types */ 396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef unsigned long long __v4du __attribute__ ((__vector_size__ (32))); 406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef unsigned int __v8su __attribute__ ((__vector_size__ (32))); 416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef unsigned short __v16hu __attribute__ ((__vector_size__ (32))); 426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef unsigned char __v32qu __attribute__ ((__vector_size__ (32))); 436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* We need an explicitly signed variant for char. Note that this shouldn't 456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * appear in the interface though. */ 466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef signed char __v32qs __attribute__((__vector_size__(32))); 476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef float __m256 __attribute__ ((__vector_size__ (32))); 496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef double __m256d __attribute__((__vector_size__(32))); 506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef long long __m256i __attribute__((__vector_size__(32))); 516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Define the default attributes for the functions in this file. */ 536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx"))) 546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Arithmetic */ 566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Adds two 256-bit vectors of [4 x double]. 576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VADDPD / ADDPD instruction. 616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the sums of both 676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands. 686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_add_pd(__m256d __a, __m256d __b) 706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4df)__a+(__v4df)__b); 726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Adds two 256-bit vectors of [8 x float]. 756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VADDPS / ADDPS instruction. 796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the sums of both 856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands. 866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_add_ps(__m256 __a, __m256 __b) 886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8sf)__a+(__v8sf)__b); 906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Subtracts two 256-bit vectors of [4 x double]. 936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VSUBPD / SUBPD instruction. 976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the minuend. 1006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 1016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the subtrahend. 1026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the differences between 1036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// both operands. 1046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sub_pd(__m256d __a, __m256d __b) 1066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4df)__a-(__v4df)__b); 1086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Subtracts two 256-bit vectors of [8 x float]. 1116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 1136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VSUBPS / SUBPS instruction. 1156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 1176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the minuend. 1186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 1196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the subtrahend. 1206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the differences between 1216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// both operands. 1226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sub_ps(__m256 __a, __m256 __b) 1246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8sf)__a-(__v8sf)__b); 1266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Adds the even-indexed values and subtracts the odd-indexed values of 1296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 256-bit vectors of [4 x double]. 1306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 1326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VADDSUBPD / ADDSUBPD instruction. 1346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 1366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the left source operand. 1376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 1386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the right source operand. 1396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the alternating sums 1406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// and differences between both operands. 1416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_addsub_pd(__m256d __a, __m256d __b) 1436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_addsubpd256((__v4df)__a, (__v4df)__b); 1456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Adds the even-indexed values and subtracts the odd-indexed values of 1486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 256-bit vectors of [8 x float]. 1496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 1516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VADDSUBPS / ADDSUBPS instruction. 1536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 1556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the left source operand. 1566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 1576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the right source operand. 1586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the alternating sums and 1596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// differences between both operands. 1606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_addsub_ps(__m256 __a, __m256 __b) 1626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_addsubps256((__v8sf)__a, (__v8sf)__b); 1646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Divides two 256-bit vectors of [4 x double]. 1676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 1696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VDIVPD / DIVPD instruction. 1716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 1736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the dividend. 1746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 1756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the divisor. 1766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the quotients of both 1776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands. 1786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 1796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_div_pd(__m256d __a, __m256d __b) 1806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4df)__a/(__v4df)__b); 1826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 1836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 1846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Divides two 256-bit vectors of [8 x float]. 1856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 1876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VDIVPS / DIVPS instruction. 1896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 1916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the dividend. 1926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 1936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the divisor. 1946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the quotients of both 1956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands. 1966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 1976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_div_ps(__m256 __a, __m256 __b) 1986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 1996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8sf)__a/(__v8sf)__b); 2006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 2016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares two 256-bit vectors of [4 x double] and returns the greater 2036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// of each pair of values. 2046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 2066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VMAXPD / MAXPD instruction. 2086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 2106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the operands. 2116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 2126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the operands. 2136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the maximum values 2146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// between both operands. 2156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_max_pd(__m256d __a, __m256d __b) 2176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 2186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_maxpd256((__v4df)__a, (__v4df)__b); 2196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 2206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares two 256-bit vectors of [8 x float] and returns the greater 2226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// of each pair of values. 2236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 2256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VMAXPS / MAXPS instruction. 2276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 2296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the operands. 2306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 2316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the operands. 2326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the maximum values 2336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// between both operands. 2346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_max_ps(__m256 __a, __m256 __b) 2366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 2376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_maxps256((__v8sf)__a, (__v8sf)__b); 2386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 2396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares two 256-bit vectors of [4 x double] and returns the lesser 2416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// of each pair of values. 2426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 2446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VMINPD / MINPD instruction. 2466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 2486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the operands. 2496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 2506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the operands. 2516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the minimum values 2526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// between both operands. 2536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_min_pd(__m256d __a, __m256d __b) 2556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 2566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_minpd256((__v4df)__a, (__v4df)__b); 2576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 2586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares two 256-bit vectors of [8 x float] and returns the lesser 2606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// of each pair of values. 2616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 2636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VMINPS / MINPS instruction. 2656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 2676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the operands. 2686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 2696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the operands. 2706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the minimum values 2716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// between both operands. 2726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 2736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_min_ps(__m256 __a, __m256 __b) 2746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 2756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_minps256((__v8sf)__a, (__v8sf)__b); 2766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 2776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Multiplies two 256-bit vectors of [4 x double]. 2796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 2816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VMULPD / MULPD instruction. 2836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 2856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the operands. 2866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 2876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the operands. 2886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the products of both 2896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands. 2906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 2916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_mul_pd(__m256d __a, __m256d __b) 2926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 2936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4df)__a * (__v4df)__b); 2946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 2956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Multiplies two 256-bit vectors of [8 x float]. 2976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 2986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 2996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VMULPS / MULPS instruction. 3016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 3036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the operands. 3046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 3056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the operands. 3066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the products of both 3076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands. 3086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 3096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_mul_ps(__m256 __a, __m256 __b) 3106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 3116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8sf)__a * (__v8sf)__b); 3126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 3136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 3146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Calculates the square roots of the values in a 256-bit vector of 3156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [4 x double]. 3166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 3186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VSQRTPD / SQRTPD instruction. 3206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 3226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 3236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the square roots of the 3246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values in the operand. 3256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 3266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sqrt_pd(__m256d __a) 3276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 3286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_sqrtpd256((__v4df)__a); 3296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 3306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 3316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Calculates the square roots of the values in a 256-bit vector of 3326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [8 x float]. 3336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 3356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VSQRTPS / SQRTPS instruction. 3376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 3396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 3406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the square roots of the 3416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values in the operand. 3426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 3436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sqrt_ps(__m256 __a) 3446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 3456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_sqrtps256((__v8sf)__a); 3466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 3476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 3486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Calculates the reciprocal square roots of the values in a 256-bit 3496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// vector of [8 x float]. 3506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 3526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VRSQRTPS / RSQRTPS instruction. 3546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 3566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 3576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the reciprocal square 3586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// roots of the values in the operand. 3596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 3606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_rsqrt_ps(__m256 __a) 3616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 3626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_rsqrtps256((__v8sf)__a); 3636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 3646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 3656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Calculates the reciprocals of the values in a 256-bit vector of 3666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [8 x float]. 3676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 3696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VRCPPS / RCPPS instruction. 3716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 3736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 3746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the reciprocals of the 3756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values in the operand. 3766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 3776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_rcp_ps(__m256 __a) 3786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 3796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_rcpps256((__v8sf)__a); 3806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 3816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 3826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Rounds the values in a 256-bit vector of [4 x double] as specified 3836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// by the byte operand. The source values are rounded to integer values and 3846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned as 64-bit double-precision floating-point values. 3856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 3876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 3896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_round_pd(__m256d V, const int M); 3906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 3916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VROUNDPD / ROUNDPD instruction. 3936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 3946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V 3956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 3966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 3976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An integer value that specifies the rounding operation. 3986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:4] are reserved. 3996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [3] is a precision exception value: 4006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: A normal PE exception is used. 4016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: The PE field is not updated. 4026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [2] is the rounding control source: 4036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Use bits [1:0] of M. 4046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Use the current MXCSR setting. 4056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0] contain the rounding control definition: 4066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Nearest. 4076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Downward (toward negative infinity). 4086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Upward (toward positive infinity). 4096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Truncated. 4106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the rounded values. 4116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_round_pd(V, M) __extension__ ({ \ 4126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M)); }) 4136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Rounds the values stored in a 256-bit vector of [8 x float] as 4156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the byte operand. The source values are rounded to integer 4166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values and returned as floating-point values. 4176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 4196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 4216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_round_ps(__m256 V, const int M); 4226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 4236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VROUNDPS / ROUNDPS instruction. 4256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V 4276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 4286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 4296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An integer value that specifies the rounding operation. 4306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:4] are reserved. 4316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [3] is a precision exception value: 4326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: A normal PE exception is used. 4336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: The PE field is not updated. 4346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [2] is the rounding control source: 4356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Use bits [1:0] of M. 4366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Use the current MXCSR setting. 4376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0] contain the rounding control definition: 4386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Nearest. 4396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Downward (toward negative infinity). 4406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Upward (toward positive infinity). 4416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Truncated. 4426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the rounded values. 4436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_round_ps(V, M) __extension__ ({ \ 4446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M)); }) 4456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Rounds up the values stored in a 256-bit vector of [4 x double]. The 4476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// source values are rounded up to integer values and returned as 64-bit 4486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// double-precision floating-point values. 4496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 4516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 4536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_ceil_pd(__m256d V); 4546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 4556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VROUNDPD / ROUNDPD instruction. 4576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V 4596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 4606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the rounded up values. 4616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_ceil_pd(V) _mm256_round_pd((V), _MM_FROUND_CEIL) 4626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Rounds down the values stored in a 256-bit vector of [4 x double]. 4646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The source values are rounded down to integer values and returned as 4656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 64-bit double-precision floating-point values. 4666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 4686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 4706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_floor_pd(__m256d V); 4716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 4726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VROUNDPD / ROUNDPD instruction. 4746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V 4766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 4776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the rounded down 4786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values. 4796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_floor_pd(V) _mm256_round_pd((V), _MM_FROUND_FLOOR) 4806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Rounds up the values stored in a 256-bit vector of [8 x float]. The 4826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// source values are rounded up to integer values and returned as 4836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// floating-point values. 4846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 4866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 4886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_ceil_ps(__m256 V); 4896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 4906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VROUNDPS / ROUNDPS instruction. 4926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 4936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V 4946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 4956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the rounded up values. 4966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_ceil_ps(V) _mm256_round_ps((V), _MM_FROUND_CEIL) 4976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Rounds down the values stored in a 256-bit vector of [8 x float]. The 4996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// source values are rounded down to integer values and returned as 5006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// floating-point values. 5016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 5036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 5056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_floor_ps(__m256 V); 5066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 5076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VROUNDPS / ROUNDPS instruction. 5096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V 5116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 5126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the rounded down values. 5136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_floor_ps(V) _mm256_round_ps((V), _MM_FROUND_FLOOR) 5146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 5156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Logical */ 5166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise AND of two 256-bit vectors of [4 x double]. 5176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 5196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VANDPD / ANDPD instruction. 5216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 5236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 5246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 5256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 5266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the bitwise AND of the 5276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values between both operands. 5286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 5296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_and_pd(__m256d __a, __m256d __b) 5306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 5316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4du)__a & (__v4du)__b); 5326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 5336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 5346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise AND of two 256-bit vectors of [8 x float]. 5356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 5376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VANDPS / ANDPS instruction. 5396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 5416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 5426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 5436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 5446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the bitwise AND of the 5456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values between both operands. 5466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 5476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_and_ps(__m256 __a, __m256 __b) 5486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 5496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8su)__a & (__v8su)__b); 5506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 5516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 5526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise AND of two 256-bit vectors of [4 x double], using 5536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// the one's complement of the values contained in the first source operand. 5546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 5566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VANDNPD / ANDNPD instruction. 5586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 5606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the left source operand. The 5616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// one's complement of this value is used in the bitwise AND. 5626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 5636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing the right source operand. 5646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the bitwise AND of the 5656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values of the second operand and the one's complement of the first 5666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand. 5676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 5686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_andnot_pd(__m256d __a, __m256d __b) 5696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 5706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)(~(__v4du)__a & (__v4du)__b); 5716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 5726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 5736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise AND of two 256-bit vectors of [8 x float], using 5746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// the one's complement of the values contained in the first source operand. 5756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 5776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VANDNPS / ANDNPS instruction. 5796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 5816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the left source operand. The 5826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// one's complement of this value is used in the bitwise AND. 5836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 5846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing the right source operand. 5856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the bitwise AND of the 5866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values of the second operand and the one's complement of the first 5876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand. 5886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 5896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_andnot_ps(__m256 __a, __m256 __b) 5906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 5916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)(~(__v8su)__a & (__v8su)__b); 5926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 5936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 5946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise OR of two 256-bit vectors of [4 x double]. 5956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 5976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 5986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VORPD / ORPD instruction. 5996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 6016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 6026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 6036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 6046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the bitwise OR of the 6056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values between both operands. 6066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 6076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_or_pd(__m256d __a, __m256d __b) 6086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 6096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4du)__a | (__v4du)__b); 6106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 6116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 6126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise OR of two 256-bit vectors of [8 x float]. 6136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 6156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VORPS / ORPS instruction. 6176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 6196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 6206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 6216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 6226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the bitwise OR of the 6236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values between both operands. 6246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 6256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_or_ps(__m256 __a, __m256 __b) 6266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 6276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8su)__a | (__v8su)__b); 6286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 6296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 6306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise XOR of two 256-bit vectors of [4 x double]. 6316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 6336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VXORPD / XORPD instruction. 6356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 6376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 6386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 6396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 6406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the bitwise XOR of the 6416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values between both operands. 6426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 6436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_xor_pd(__m256d __a, __m256d __b) 6446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 6456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)((__v4du)__a ^ (__v4du)__b); 6466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 6476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 6486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Performs a bitwise XOR of two 256-bit vectors of [8 x float]. 6496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 6516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VXORPS / XORPS instruction. 6536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 6556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 6566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 6576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 6586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the bitwise XOR of the 6596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values between both operands. 6606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 6616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_xor_ps(__m256 __a, __m256 __b) 6626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 6636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)((__v8su)__a ^ (__v8su)__b); 6646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 6656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 6666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Horizontal arithmetic */ 6676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Horizontally adds the adjacent pairs of values contained in two 6686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 256-bit vectors of [4 x double]. 6696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 6716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VHADDPD / HADDPD instruction. 6736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 6756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 6766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal sums of the values are returned in the even-indexed 6776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// elements of a vector of [4 x double]. 6786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 6796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 6806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal sums of the values are returned in the odd-indexed 6816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// elements of a vector of [4 x double]. 6826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the horizontal sums of 6836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// both operands. 6846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 6856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hadd_pd(__m256d __a, __m256d __b) 6866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 6876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_haddpd256((__v4df)__a, (__v4df)__b); 6886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 6896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 6906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Horizontally adds the adjacent pairs of values contained in two 6916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 256-bit vectors of [8 x float]. 6926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 6946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VHADDPS / HADDPS instruction. 6966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 6976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 6986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 6996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal sums of the values are returned in the elements with 7006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// index 0, 1, 4, 5 of a vector of [8 x float]. 7016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 7026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 7036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal sums of the values are returned in the elements with 7046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// index 2, 3, 6, 7 of a vector of [8 x float]. 7056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the horizontal sums of 7066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// both operands. 7076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 7086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hadd_ps(__m256 __a, __m256 __b) 7096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 7106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_haddps256((__v8sf)__a, (__v8sf)__b); 7116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 7126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 7136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Horizontally subtracts the adjacent pairs of values contained in two 7146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 256-bit vectors of [4 x double]. 7156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 7176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VHSUBPD / HSUBPD instruction. 7196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 7216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 7226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal differences between the values are returned in the 7236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// even-indexed elements of a vector of [4 x double]. 7246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 7256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double] containing one of the source operands. 7266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal differences between the values are returned in the 7276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// odd-indexed elements of a vector of [4 x double]. 7286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the horizontal 7296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// differences of both operands. 7306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 7316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hsub_pd(__m256d __a, __m256d __b) 7326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 7336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_hsubpd256((__v4df)__a, (__v4df)__b); 7346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 7356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 7366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Horizontally subtracts the adjacent pairs of values contained in two 7376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 256-bit vectors of [8 x float]. 7386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 7406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VHSUBPS / HSUBPS instruction. 7426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 7446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 7456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal differences between the values are returned in the 7466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// elements with index 0, 1, 4, 5 of a vector of [8 x float]. 7476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 7486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float] containing one of the source operands. 7496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The horizontal differences between the values are returned in the 7506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// elements with index 2, 3, 6, 7 of a vector of [8 x float]. 7516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the horizontal 7526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// differences of both operands. 7536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 7546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hsub_ps(__m256 __a, __m256 __b) 7556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 7566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_hsubps256((__v8sf)__a, (__v8sf)__b); 7576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 7586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 7596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector permutations */ 7606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values in a 128-bit vector of [2 x double] as specified 7616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// by the 128-bit integer vector operand. 7626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 7646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPD / PERMILPD instruction. 7666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 7686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [2 x double]. 7696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __c 7706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit integer vector operand specifying how the values are to be 7716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied. 7726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [1]: 7736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [63:0] of the 7746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 7756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [63:0] of the 7766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 7776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [65]: 7786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [127:64] of the 7796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 7806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [127:64] of the 7816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 7826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [2 x double] containing the copied values. 7836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS 7846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_permutevar_pd(__m128d __a, __m128i __c) 7856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 7866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128d)__builtin_ia32_vpermilvarpd((__v2df)__a, (__v2di)__c); 7876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 7886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 7896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values in a 256-bit vector of [4 x double] as 7906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the 256-bit integer vector operand. 7916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 7936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPD / PERMILPD instruction. 7956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 7966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 7976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 7986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __c 7996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector operand specifying how the values are to be 8006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied. 8016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [1]: 8026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [63:0] of the 8036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [63:0] of the 8056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [65]: 8076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [127:64] of the 8086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [127:64] of the 8106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [129]: 8126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [191:128] of the source are copied to bits [191:128] of the 8136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [255:192] of the source are copied to bits [191:128] of the 8156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [193]: 8176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [191:128] of the source are copied to bits [255:192] of the 8186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [255:192] of the source are copied to bits [255:192] of the 8206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the copied values. 8226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 8236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_permutevar_pd(__m256d __a, __m256i __c) 8246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 8256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_vpermilvarpd256((__v4df)__a, (__v4di)__c); 8266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 8276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 8286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values stored in a 128-bit vector of [4 x float] as 8296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the 128-bit integer vector operand. 8306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 8316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 8326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 8336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPS / PERMILPS instruction. 8346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 8356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 8366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [4 x float]. 8376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __c 8386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit integer vector operand specifying how the values are to be 8396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied. 8406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 8416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [31:0] of the 8426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [31:0] of the 8446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [31:0] of the 8466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [31:0] of the 8486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [33:32]: 8506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [63:32] of the 8516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [63:32] of the 8536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [63:32] of the 8556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [63:32] of the 8576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [65:64]: 8596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [95:64] of the 8606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [95:64] of the 8626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [95:64] of the 8646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [95:64] of the 8666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [97:96]: 8686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [127:96] of the 8696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [127:96] of the 8716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [127:96] of the 8736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [127:96] of the 8756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [4 x float] containing the copied values. 8776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 8786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_permutevar_ps(__m128 __a, __m128i __c) 8796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 8806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128)__builtin_ia32_vpermilvarps((__v4sf)__a, (__v4si)__c); 8816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 8826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 8836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values stored in a 256-bit vector of [8 x float] as 8846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the 256-bit integer vector operand. 8856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 8866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 8876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 8886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPS / PERMILPS instruction. 8896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 8906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 8916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 8926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __c 8936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector operand specifying how the values are to be 8946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied. 8956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 8966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [31:0] of the 8976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 8986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [31:0] of the 8996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [31:0] of the 9016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [31:0] of the 9036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [33:32]: 9056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [63:32] of the 9066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [63:32] of the 9086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [63:32] of the 9106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [63:32] of the 9126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [65:64]: 9146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [95:64] of the 9156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [95:64] of the 9176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [95:64] of the 9196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [95:64] of the 9216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [97:96]: 9236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [127:96] of the 9246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [127:96] of the 9266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [127:96] of the 9286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [127:96] of the 9306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [129:128]: 9326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [159:128] of the 9336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [159:128] of the 9356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [159:128] of the 9376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [159:128] of the 9396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [161:160]: 9416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [191:160] of the 9426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [191:160] of the 9446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [191:160] of the 9466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [191:160] of the 9486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [193:192]: 9506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [223:192] of the 9516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [223:192] of the 9536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [223:192] of the 9556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [223:192] of the 9576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [225:224]: 9596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [255:224] of the 9606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [255:224] of the 9626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [255:224] of the 9646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [255:224] of the 9666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the copied values. 9686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 9696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_permutevar_ps(__m256 __a, __m256i __c) 9706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 9716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_vpermilvarps256((__v8sf)__a, (__v8si)__c); 9726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 9736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 9746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values in a 128-bit vector of [2 x double] as 9756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the immediate integer operand. 9766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 9776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 9786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 9796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 9806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m128d _mm_permute_pd(__m128d A, const int C); 9816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 9826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 9836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPD / PERMILPD instruction. 9846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 9856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param A 9866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [2 x double]. 9876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param C 9886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be copied. 9896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [0]: 9906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [63:0] of the 9916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [63:0] of the 9936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [1]: 9956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [127:64] of the 9966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [127:64] of the 9986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 9996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [2 x double] containing the copied values. 10006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_permute_pd(A, C) __extension__ ({ \ 10016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128d)__builtin_shufflevector((__v2df)(__m128d)(A), \ 10026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v2df)_mm_undefined_pd(), \ 10036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker ((C) >> 0) & 0x1, ((C) >> 1) & 0x1); }) 10046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 10056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values in a 256-bit vector of [4 x double] as 10066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the immediate integer operand. 10076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 10096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 10116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_permute_pd(__m256d A, const int C); 10126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 10136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPD / PERMILPD instruction. 10156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param A 10176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 10186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param C 10196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be copied. 10206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [0]: 10216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [63:0] of the 10226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [63:0] of the 10246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [1]: 10266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [63:0] of the source are copied to bits [127:64] of the 10276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [127:64] of the source are copied to bits [127:64] of the 10296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [2]: 10316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [191:128] of the source are copied to bits [191:128] of the 10326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [255:192] of the source are copied to bits [191:128] of the 10346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [3]: 10366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 0: Bits [191:128] of the source are copied to bits [255:192] of the 10376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 1: Bits [255:192] of the source are copied to bits [255:192] of the 10396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the copied values. 10416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute_pd(A, C) __extension__ ({ \ 10426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \ 10436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)_mm256_undefined_pd(), \ 10446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((C) >> 0) & 0x1), \ 10456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((C) >> 1) & 0x1), \ 10466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2 + (((C) >> 2) & 0x1), \ 10476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2 + (((C) >> 3) & 0x1)); }) 10486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 10496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values in a 128-bit vector of [4 x float] as 10506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the immediate integer operand. 10516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 10536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 10556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m128 _mm_permute_ps(__m128 A, const int C); 10566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 10576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPS / PERMILPS instruction. 10596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param A 10616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [4 x float]. 10626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param C 10636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be copied. 10646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 10656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [31:0] of the 10666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [31:0] of the 10686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [31:0] of the 10706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [31:0] of the 10726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [3:2]: 10746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [63:32] of the 10756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [63:32] of the 10776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [63:32] of the 10796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [63:32] of the 10816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4]: 10836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [95:64] of the 10846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [95:64] of the 10866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [95:64] of the 10886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [95:64] of the 10906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:6]: 10926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [127:96] of the 10936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [127:96] of the 10956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [127:96] of the 10976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 10986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [127:96] of the 10996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [4 x float] containing the copied values. 11016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_permute_ps(A, C) __extension__ ({ \ 11026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128)__builtin_shufflevector((__v4sf)(__m128)(A), \ 11036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4sf)_mm_undefined_ps(), \ 11046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \ 11056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); }) 11066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 11076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Copies the values in a 256-bit vector of [8 x float] as 11086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the immediate integer operand. 11096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 11116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 11136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_permute_ps(__m256 A, const int C); 11146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 11156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERMILPS / PERMILPS instruction. 11176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param A 11196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 11206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param C 11216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be copied. 11226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 11236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [31:0] of the 11246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [31:0] of the 11266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [31:0] of the 11286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [31:0] of the 11306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [3:2]: 11326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [63:32] of the 11336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [63:32] of the 11356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [63:32] of the 11376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [63:32] of the 11396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4]: 11416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [95:64] of the 11426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [95:64] of the 11446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [95:64] of the 11466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [95:64] of the 11486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:6]: 11506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] of the source are copied to bits [127:96] of the 11516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] of the source are copied to bits [127:96] of the 11536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] of the source are copied to bits [127:96] of the 11556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] of the source are copied to bits [127:96] of the 11576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 11596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [159:128] of the 11606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [159:128] of the 11626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [159:128] of the 11646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [159:128] of the 11666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [3:2]: 11686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [191:160] of the 11696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [191:160] of the 11716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [191:160] of the 11736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [191:160] of the 11756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4]: 11776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [223:192] of the 11786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [223:192] of the 11806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [223:192] of the 11826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [223:192] of the 11846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:6]: 11866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [159:128] of the source are copied to bits [255:224] of the 11876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [191:160] of the source are copied to bits [255:224] of the 11896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [223:192] of the source are copied to bits [255:224] of the 11916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:224] of the source are copied to bits [255:224] of the 11936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returned vector. 11946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the copied values. 11956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute_ps(A, C) __extension__ ({ \ 11966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \ 11976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)_mm256_undefined_ps(), \ 11986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((C) >> 0) & 0x3), \ 11996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((C) >> 2) & 0x3), \ 12006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((C) >> 4) & 0x3), \ 12016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((C) >> 6) & 0x3), \ 12026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((C) >> 0) & 0x3), \ 12036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((C) >> 2) & 0x3), \ 12046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((C) >> 4) & 0x3), \ 12056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((C) >> 6) & 0x3)); }) 12066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 12076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Permutes 128-bit data values stored in two 256-bit vectors of 12086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [4 x double], as specified by the immediate integer operand. 12096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 12116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 12136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_permute2f128_pd(__m256d V1, __m256d V2, const int M); 12146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 12156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERM2F128 / PERM2F128 instruction. 12176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V1 12196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 12206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V2 12216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double. 12226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 12236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be 12246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// permuted. 12256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 12266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [127:0] of operand V1 are copied to bits [127:0] of the 12276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [255:128] of operand V1 are copied to bits [127:0] of the 12296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [127:0] of operand V2 are copied to bits [127:0] of the 12316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:128] of operand V2 are copied to bits [127:0] of the 12336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4]: 12356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [127:0] of operand V1 are copied to bits [255:128] of the 12366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [255:128] of operand V1 are copied to bits [255:128] of the 12386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [127:0] of operand V2 are copied to bits [255:128] of the 12406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:128] of operand V2 are copied to bits [255:128] of the 12426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the copied values. 12446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute2f128_pd(V1, V2, M) __extension__ ({ \ 12456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \ 12466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(__m256d)(V2), (M)); }) 12476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 12486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Permutes 128-bit data values stored in two 256-bit vectors of 12496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [8 x float], as specified by the immediate integer operand. 12506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 12526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 12546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_permute2f128_ps(__m256 V1, __m256 V2, const int M); 12556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 12566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERM2F128 / PERM2F128 instruction. 12586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V1 12606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 12616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V2 12626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 12636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 12646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be 12656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// permuted. 12666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 12676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [127:0] of operand V1 are copied to bits [127:0] of the 12686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [255:128] of operand V1 are copied to bits [127:0] of the 12706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [127:0] of operand V2 are copied to bits [127:0] of the 12726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:128] of operand V2 are copied to bits [127:0] of the 12746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4]: 12766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [127:0] of operand V1 are copied to bits [255:128] of the 12776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [255:128] of operand V1 are copied to bits [255:128] of the 12796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [127:0] of operand V2 are copied to bits [255:128] of the 12816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:128] of operand V2 are copied to bits [255:128] of the 12836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 12846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the copied values. 12856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute2f128_ps(V1, V2, M) __extension__ ({ \ 12866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \ 12876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(V2), (M)); }) 12886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 12896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Permutes 128-bit data values stored in two 256-bit integer vectors, 12906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// as specified by the immediate integer operand. 12916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 12936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 12956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256i _mm256_permute2f128_si256(__m256i V1, __m256i V2, const int M); 12966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 12976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 12986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VPERM2F128 / PERM2F128 instruction. 12996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V1 13016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector. 13026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V2 13036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector. 13046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 13056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand specifying how the values are to be copied. 13066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0]: 13076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [127:0] of operand V1 are copied to bits [127:0] of the 13086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [255:128] of operand V1 are copied to bits [127:0] of the 13106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [127:0] of operand V2 are copied to bits [127:0] of the 13126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:128] of operand V2 are copied to bits [127:0] of the 13146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4]: 13166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [127:0] of operand V1 are copied to bits [255:128] of the 13176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [255:128] of operand V1 are copied to bits [255:128] of the 13196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [127:0] of operand V2 are copied to bits [255:128] of the 13216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [255:128] of operand V2 are copied to bits [255:128] of the 13236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 13246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit integer vector containing the copied values. 13256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute2f128_si256(V1, V2, M) __extension__ ({ \ 13266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \ 13276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8si)(__m256i)(V2), (M)); }) 13286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 13296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector Blend */ 13306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Merges 64-bit double-precision data values stored in either of the 13316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 256-bit vectors of [4 x double], as specified by the immediate 13326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// integer operand. 13336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 13356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 13376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_blend_pd(__m256d V1, __m256d V2, const int M); 13386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 13396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VBLENDPD / BLENDPD instruction. 13416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V1 13436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 13446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V2 13456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 13466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 13476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with mask bits [3:0] specifying how the 13486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values are to be copied. The position of the mask bit corresponds to the 13496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// index of a copied value. When a mask bit is 0, the corresponding 64-bit 13506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element in operand V1 is copied to the same position in the destination. 13516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// When a mask bit is 1, the corresponding 64-bit element in operand V2 is 13526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied to the same position in the destination. 13536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the copied values. 13546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_blend_pd(V1, V2, M) __extension__ ({ \ 13556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_shufflevector((__v4df)(__m256d)(V1), \ 13566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(__m256d)(V2), \ 13576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x01) ? 4 : 0), \ 13586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x02) ? 5 : 1), \ 13596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x04) ? 6 : 2), \ 13606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x08) ? 7 : 3)); }) 13616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 13626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Merges 32-bit single-precision data values stored in either of the 13636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 256-bit vectors of [8 x float], as specified by the immediate 13646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// integer operand. 13656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 13676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 13696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_blend_ps(__m256 V1, __m256 V2, const int M); 13706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 13716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VBLENDPS / BLENDPS instruction. 13736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 13746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V1 13756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 13766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V2 13776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 13786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 13796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with mask bits [7:0] specifying how the 13806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// values are to be copied. The position of the mask bit corresponds to the 13816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// index of a copied value. When a mask bit is 0, the corresponding 32-bit 13826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element in operand V1 is copied to the same position in the destination. 13836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// When a mask bit is 1, the corresponding 32-bit element in operand V2 is 13846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied to the same position in the destination. 13856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the copied values. 13866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_blend_ps(V1, V2, M) __extension__ ({ \ 13876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_shufflevector((__v8sf)(__m256)(V1), \ 13886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(V2), \ 13896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x01) ? 8 : 0), \ 13906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x02) ? 9 : 1), \ 13916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x04) ? 10 : 2), \ 13926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x08) ? 11 : 3), \ 13936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x10) ? 12 : 4), \ 13946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x20) ? 13 : 5), \ 13956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x40) ? 14 : 6), \ 13966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 0x80) ? 15 : 7)); }) 13976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 13986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Merges 64-bit double-precision data values stored in either of the 13996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 256-bit vectors of [4 x double], as specified by the 256-bit vector 14006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand. 14016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 14036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VBLENDVPD / BLENDVPD instruction. 14056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 14076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 14086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 14096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 14106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __c 14116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector operand, with mask bits 255, 191, 127, and 63 specifying 14126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// how the values are to be copied. The position of the mask bit corresponds 14136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// to the most significant bit of a copied value. When a mask bit is 0, the 14146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// corresponding 64-bit element in operand __a is copied to the same 14156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// position in the destination. When a mask bit is 1, the corresponding 14166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 64-bit element in operand __b is copied to the same position in the 14176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 14186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the copied values. 14196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 14206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_blendv_pd(__m256d __a, __m256d __b, __m256d __c) 14216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 14226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_blendvpd256( 14236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)__a, (__v4df)__b, (__v4df)__c); 14246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 14256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 14266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Merges 32-bit single-precision data values stored in either of the 14276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 256-bit vectors of [8 x float], as specified by the 256-bit vector 14286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand. 14296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 14316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VBLENDVPS / BLENDVPS instruction. 14336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 14356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 14366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 14376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 14386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __c 14396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector operand, with mask bits 255, 223, 191, 159, 127, 95, 63, 14406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// and 31 specifying how the values are to be copied. The position of the 14416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// mask bit corresponds to the most significant bit of a copied value. When 14426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// a mask bit is 0, the corresponding 32-bit element in operand __a is 14436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copied to the same position in the destination. When a mask bit is 1, the 14446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// corresponding 32-bit element in operand __b is copied to the same 14456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// position in the destination. 14466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the copied values. 14476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 14486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c) 14496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 14506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_blendvps256( 14516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)__a, (__v8sf)__b, (__v8sf)__c); 14526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 14536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 14546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector Dot Product */ 14556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Computes two dot products in parallel, using the lower and upper 14566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// halves of two [8 x float] vectors as input to the two computations, and 14576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// returning the two dot products in the lower and upper halves of the 14586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [8 x float] result. The immediate integer operand controls which 14596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// input elements will contribute to the dot product, and where the final 14606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// results are returned. In general, for each dot product, the four 14616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// corresponding elements of the input vectors are multiplied; the first 14626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two and second two products are summed, then the two sums are added to 14636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// form the final result. 14646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 14666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 14686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_dp_ps(__m256 V1, __m256 V2, const int M); 14696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 14706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VDPPS / DPPS instruction. 14726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 14736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V1 14746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A vector of [8 x float] values, treated as two [4 x float] vectors. 14756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param V2 14766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A vector of [8 x float] values, treated as two [4 x float] vectors. 14776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param M 14786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer argument. Bits [7:4] determine which elements of 14796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// the input vectors are used, with bit [4] corresponding to the lowest 14806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element and bit [7] corresponding to the highest element of each [4 x 14816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// float] subvector. If a bit is set, the corresponding elements from the 14826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two input vectors are used as an input for dot product; otherwise that 14836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// input is treated as zero. Bits [3:0] determine which elements of the 14846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// result will receive a copy of the final dot product, with bit [0] 14856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// corresponding to the lowest element and bit [3] corresponding to the 14866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// highest element of each [4 x float] subvector. If a bit is set, the dot 14876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// product is returned in the corresponding element; otherwise that element 14886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// is set to zero. The bitmask is applied in the same way to each of the 14896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two parallel dot product computations. 14906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the two dot products. 14916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_dp_ps(V1, V2, M) __extension__ ({ \ 14926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \ 14936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(V2), (M)); }) 14946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 14956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector shuffle */ 14966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Selects 8 float values from the 256-bit operands of [8 x float], as 14976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified by the immediate value operand. The four selected elements in 14986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// each operand are copied to the destination according to the bits 14996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// specified in the immediate operand. The selected elements from the first 15006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 256-bit operand are copied to bits [63:0] and bits [191:128] of the 15016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination, and the selected elements from the second 256-bit operand 15026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// are copied to bits [127:64] and bits [255:192] of the destination. For 15036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// example, if bits [7:0] of the immediate operand contain a value of 0xFF, 15046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// the 256-bit destination vector would contain the following values: b[7], 15056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// b[7], a[7], a[7], b[3], b[3], a[3], a[3]. 15066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 15086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 15106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_shuffle_ps(__m256 a, __m256 b, const int mask); 15116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 15126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VSHUFPS / SHUFPS instruction. 15146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 15166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. The four selected elements in this 15176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand are copied to bits [63:0] and bits [191:128] in the destination, 15186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// according to the bits specified in the immediate operand. 15196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 15206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. The four selected elements in this 15216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand are copied to bits [127:64] and bits [255:192] in the 15226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination, according to the bits specified in the immediate operand. 15236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param mask 15246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate value containing an 8-bit value specifying which elements to 15256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copy from a and b. Bits [3:0] specify the values copied from operand a. 15266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:4] specify the values copied from operand b. 15276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// The destinations within the 256-bit destination are assigned values as 15286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// follows, according to the bit value assignments described below: 15296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [1:0] are used to assign values to bits [31:0] and [159:128] in the 15306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [3:2] are used to assign values to bits [63:32] and [191:160] in the 15326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [5:4] are used to assign values to bits [95:64] and [223:192] in the 15346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bits [7:6] are used to assign values to bits [127:96] and [255:224] in 15366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// the destination. 15376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit value assignments: 15386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00: Bits [31:0] and [159:128] are copied from the selected operand. 15396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01: Bits [63:32] and [191:160] are copied from the selected operand. 15406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 10: Bits [95:64] and [223:192] are copied from the selected operand. 15416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 11: Bits [127:96] and [255:224] are copied from the selected operand. 15426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the shuffled values. 15436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_shuffle_ps(a, b, mask) __extension__ ({ \ 15446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_shufflevector((__v8sf)(__m256)(a), \ 15456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(b), \ 15466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((mask) >> 0) & 0x3), \ 15476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((mask) >> 2) & 0x3), \ 15486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 8 + (((mask) >> 4) & 0x3), \ 15496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 8 + (((mask) >> 6) & 0x3), \ 15506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((mask) >> 0) & 0x3), \ 15516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((mask) >> 2) & 0x3), \ 15526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 12 + (((mask) >> 4) & 0x3), \ 15536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 12 + (((mask) >> 6) & 0x3)); }) 15546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 15556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Selects four double-precision values from the 256-bit operands of 15566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [4 x double], as specified by the immediate value operand. The selected 15576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// elements from the first 256-bit operand are copied to bits [63:0] and 15586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// bits [191:128] in the destination, and the selected elements from the 15596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// second 256-bit operand are copied to bits [127:64] and bits [255:192] in 15606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// the destination. For example, if bits [3:0] of the immediate operand 15616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// contain a value of 0xF, the 256-bit destination vector would contain the 15626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// following values: b[3], a[3], b[1], a[1]. 15636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 15656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 15676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_shuffle_pd(__m256d a, __m256d b, const int mask); 15686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 15696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VSHUFPD / SHUFPD instruction. 15716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 15726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 15736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 15746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 15756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 15766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param mask 15776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate value containing 8-bit values specifying which elements to 15786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// copy from a and b: 15796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [0]=0: Bits [63:0] are copied from a to bits [63:0] of the 15806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [0]=1: Bits [127:64] are copied from a to bits [63:0] of the 15826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [1]=0: Bits [63:0] are copied from b to bits [127:64] of the 15846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [1]=1: Bits [127:64] are copied from b to bits [127:64] of the 15866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [2]=0: Bits [191:128] are copied from a to bits [191:128] of the 15886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [2]=1: Bits [255:192] are copied from a to bits [191:128] of the 15906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [3]=0: Bits [191:128] are copied from b to bits [255:192] of the 15926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// Bit [3]=1: Bits [255:192] are copied from b to bits [255:192] of the 15946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination. 15956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the shuffled values. 15966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_shuffle_pd(a, b, mask) __extension__ ({ \ 15976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_shufflevector((__v4df)(__m256d)(a), \ 15986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(__m256d)(b), \ 15996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 0 + (((mask) >> 0) & 0x1), \ 16006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 4 + (((mask) >> 1) & 0x1), \ 16016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 2 + (((mask) >> 2) & 0x1), \ 16026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 6 + (((mask) >> 3) & 0x1)); }) 16036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 16046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Compare */ 16056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_OQ 0x00 /* Equal (ordered, non-signaling) */ 16066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LT_OS 0x01 /* Less-than (ordered, signaling) */ 16076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LE_OS 0x02 /* Less-than-or-equal (ordered, signaling) */ 16086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_UNORD_Q 0x03 /* Unordered (non-signaling) */ 16096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_UQ 0x04 /* Not-equal (unordered, non-signaling) */ 16106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLT_US 0x05 /* Not-less-than (unordered, signaling) */ 16116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLE_US 0x06 /* Not-less-than-or-equal (unordered, signaling) */ 16126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_ORD_Q 0x07 /* Ordered (nonsignaling) */ 16136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_UQ 0x08 /* Equal (unordered, non-signaling) */ 16146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGE_US 0x09 /* Not-greater-than-or-equal (unord, signaling) */ 16156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGT_US 0x0a /* Not-greater-than (unordered, signaling) */ 16166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling) */ 16176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_OQ 0x0c /* Not-equal (ordered, non-signaling) */ 16186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GE_OS 0x0d /* Greater-than-or-equal (ordered, signaling) */ 16196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GT_OS 0x0e /* Greater-than (ordered, signaling) */ 16206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_TRUE_UQ 0x0f /* True (unordered, non-signaling) */ 16216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_OS 0x10 /* Equal (ordered, signaling) */ 16226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LT_OQ 0x11 /* Less-than (ordered, non-signaling) */ 16236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LE_OQ 0x12 /* Less-than-or-equal (ordered, non-signaling) */ 16246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_UNORD_S 0x13 /* Unordered (signaling) */ 16256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_US 0x14 /* Not-equal (unordered, signaling) */ 16266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLT_UQ 0x15 /* Not-less-than (unordered, non-signaling) */ 16276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLE_UQ 0x16 /* Not-less-than-or-equal (unord, non-signaling) */ 16286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_ORD_S 0x17 /* Ordered (signaling) */ 16296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_US 0x18 /* Equal (unordered, signaling) */ 16306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGE_UQ 0x19 /* Not-greater-than-or-equal (unord, non-sign) */ 16316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGT_UQ 0x1a /* Not-greater-than (unordered, non-signaling) */ 16326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling) */ 16336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_OS 0x1c /* Not-equal (ordered, signaling) */ 16346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GE_OQ 0x1d /* Greater-than-or-equal (ordered, non-signaling) */ 16356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GT_OQ 0x1e /* Greater-than (ordered, non-signaling) */ 16366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_TRUE_US 0x1f /* True (unordered, signaling) */ 16376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 16386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares each of the corresponding double-precision values of two 16396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 128-bit vectors of [2 x double], using the operation specified by the 16406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// immediate integer operand. Returns a [2 x double] vector consisting of 16416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two doubles corresponding to the two comparison results: zero if the 16426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// comparison is false, and all 1's if the comparison is true. 16436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 16456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 16476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m128d _mm_cmp_pd(__m128d a, __m128d b, const int c); 16486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 16496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCMPPD / CMPPD instruction. 16516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 16536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [2 x double]. 16546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 16556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [2 x double]. 16566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param c 16576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with bits [4:0] specifying which comparison 16586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operation to use: 16596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00h, 08h, 10h, 18h: Equal 16606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01h, 09h, 11h, 19h: Less than 16616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal (swapped 16626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands) 16636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 03h, 0Bh, 13h, 1Bh: Unordered 16646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 04h, 0Ch, 14h, 1Ch: Not equal 16656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than (swapped operands) 16666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal 16676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// (swapped operands) 16686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 07h, 0Fh, 17h, 1Fh: Ordered 16696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [2 x double] containing the comparison results. 16706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_pd(a, b, c) __extension__ ({ \ 16716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \ 16726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v2df)(__m128d)(b), (c)); }) 16736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 16746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares each of the corresponding values of two 128-bit vectors of 16756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [4 x float], using the operation specified by the immediate integer 16766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand. Returns a [4 x float] vector consisting of four floats 16776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// corresponding to the four comparison results: zero if the comparison is 16786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// false, and all 1's if the comparison is true. 16796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 16816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 16836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m128 _mm_cmp_ps(__m128 a, __m128 b, const int c); 16846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 16856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCMPPS / CMPPS instruction. 16876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 16886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 16896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [4 x float]. 16906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 16916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [4 x float]. 16926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param c 16936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with bits [4:0] specifying which comparison 16946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operation to use: 16956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00h, 08h, 10h, 18h: Equal 16966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01h, 09h, 11h, 19h: Less than 16976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal (swapped 16986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands) 16996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 03h, 0Bh, 13h, 1Bh: Unordered 17006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 04h, 0Ch, 14h, 1Ch: Not equal 17016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than (swapped operands) 17026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal 17036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// (swapped operands) 17046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 07h, 0Fh, 17h, 1Fh: Ordered 17056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [4 x float] containing the comparison results. 17066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_ps(a, b, c) __extension__ ({ \ 17076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \ 17086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4sf)(__m128)(b), (c)); }) 17096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 17106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares each of the corresponding double-precision values of two 17116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 256-bit vectors of [4 x double], using the operation specified by the 17126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// immediate integer operand. Returns a [4 x double] vector consisting of 17136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// four doubles corresponding to the four comparison results: zero if the 17146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// comparison is false, and all 1's if the comparison is true. 17156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 17176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 17196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256d _mm256_cmp_pd(__m256d a, __m256d b, const int c); 17206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 17216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCMPPD / CMPPD instruction. 17236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 17256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 17266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 17276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 17286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param c 17296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with bits [4:0] specifying which comparison 17306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operation to use: 17316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00h, 08h, 10h, 18h: Equal 17326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01h, 09h, 11h, 19h: Less than 17336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal (swapped 17346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands) 17356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 03h, 0Bh, 13h, 1Bh: Unordered 17366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 04h, 0Ch, 14h, 1Ch: Not equal 17376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than (swapped operands) 17386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal 17396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// (swapped operands) 17406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 07h, 0Fh, 17h, 1Fh: Ordered 17416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the comparison results. 17426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_cmp_pd(a, b, c) __extension__ ({ \ 17436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \ 17446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(__m256d)(b), (c)); }) 17456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 17466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares each of the corresponding values of two 256-bit vectors of 17476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [8 x float], using the operation specified by the immediate integer 17486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operand. Returns a [8 x float] vector consisting of eight floats 17496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// corresponding to the eight comparison results: zero if the comparison is 17506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// false, and all 1's if the comparison is true. 17516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 17536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 17556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m256 _mm256_cmp_ps(__m256 a, __m256 b, const int c); 17566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 17576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCMPPS / CMPPS instruction. 17596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 17616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 17626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 17636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 17646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param c 17656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with bits [4:0] specifying which comparison 17666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operation to use: 17676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00h, 08h, 10h, 18h: Equal 17686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01h, 09h, 11h, 19h: Less than 17696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal (swapped 17706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands) 17716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 03h, 0Bh, 13h, 1Bh: Unordered 17726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 04h, 0Ch, 14h, 1Ch: Not equal 17736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than (swapped operands) 17746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal 17756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// (swapped operands) 17766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 07h, 0Fh, 17h, 1Fh: Ordered 17776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the comparison results. 17786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_cmp_ps(a, b, c) __extension__ ({ \ 17796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \ 17806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(b), (c)); }) 17816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 17826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares each of the corresponding scalar double-precision values of 17836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// two 128-bit vectors of [2 x double], using the operation specified by the 17846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// immediate integer operand. If the result is true, all 64 bits of the 17856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// destination vector are set; otherwise they are cleared. 17866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 17886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 17906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m128d _mm_cmp_sd(__m128d a, __m128d b, const int c); 17916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 17926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCMPSD / CMPSD instruction. 17946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 17956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 17966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [2 x double]. 17976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 17986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [2 x double]. 17996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param c 18006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with bits [4:0] specifying which comparison 18016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operation to use: 18026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00h, 08h, 10h, 18h: Equal 18036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01h, 09h, 11h, 19h: Less than 18046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal (swapped 18056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands) 18066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 03h, 0Bh, 13h, 1Bh: Unordered 18076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 04h, 0Ch, 14h, 1Ch: Not equal 18086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than (swapped operands) 18096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal 18106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// (swapped operands) 18116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 07h, 0Fh, 17h, 1Fh: Ordered 18126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [2 x double] containing the comparison results. 18136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_sd(a, b, c) __extension__ ({ \ 18146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \ 18156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v2df)(__m128d)(b), (c)); }) 18166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 18176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Compares each of the corresponding scalar values of two 128-bit 18186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// vectors of [4 x float], using the operation specified by the immediate 18196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// integer operand. If the result is true, all 32 bits of the destination 18206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// vector are set; otherwise they are cleared. 18216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 18236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \code 18256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// __m128 _mm_cmp_ss(__m128 a, __m128 b, const int c); 18266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \endcode 18276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCMPSS / CMPSS instruction. 18296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param a 18316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [4 x float]. 18326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param b 18336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit vector of [4 x float]. 18346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param c 18356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand, with bits [4:0] specifying which comparison 18366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operation to use: 18376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 00h, 08h, 10h, 18h: Equal 18386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 01h, 09h, 11h, 19h: Less than 18396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 02h, 0Ah, 12h, 1Ah: Less than or equal / Greater than or equal (swapped 18406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// operands) 18416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 03h, 0Bh, 13h, 1Bh: Unordered 18426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 04h, 0Ch, 14h, 1Ch: Not equal 18436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 05h, 0Dh, 15h, 1Dh: Not less than / Not greater than (swapped operands) 18446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 06h, 0Eh, 16h, 1Eh: Not less than or equal / Not greater than or equal 18456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// (swapped operands) 18466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 07h, 0Fh, 17h, 1Fh: Ordered 18476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [4 x float] containing the comparison results. 18486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_ss(a, b, c) __extension__ ({ \ 18496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \ 18506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4sf)(__m128)(b), (c)); }) 18516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 18526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [8 x i32] vector and returns the vector element value 18536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand. 18546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 18566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VEXTRACTF128+COMPOSITE / 18586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// EXTRACTF128+COMPOSITE instruction. 18596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 18616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x i32]. 18626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 18636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand with bits [2:0] determining which vector 18646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element is extracted and returned. 18656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 32-bit integer containing the extracted 32 bits of extended 18666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// packed data. 18676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 18686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi32(__m256i __a, const int __imm) 18696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 18706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v8si __b = (__v8si)__a; 18716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __b[__imm & 7]; 18726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 18736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 18746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [16 x i16] vector and returns the vector element value 18756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand. 18766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 18786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VEXTRACTF128+COMPOSITE / 18806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// EXTRACTF128+COMPOSITE instruction. 18816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 18836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector of [16 x i16]. 18846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 18856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand with bits [3:0] determining which vector 18866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element is extracted and returned. 18876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 32-bit integer containing the extracted 16 bits of zero extended 18886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// packed data. 18896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 18906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi16(__m256i __a, const int __imm) 18916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 18926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v16hi __b = (__v16hi)__a; 18936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (unsigned short)__b[__imm & 15]; 18946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 18956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 18966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [32 x i8] vector and returns the vector element value 18976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand. 18986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 18996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 19006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VEXTRACTF128+COMPOSITE / 19026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// EXTRACTF128+COMPOSITE instruction. 19036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 19056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector of [32 x i8]. 19066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 19076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand with bits [4:0] determining which vector 19086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element is extracted and returned. 19096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 32-bit integer containing the extracted 8 bits of zero extended 19106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// packed data. 19116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 19126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi8(__m256i __a, const int __imm) 19136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 19146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v32qi __b = (__v32qi)__a; 19156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (unsigned char)__b[__imm & 31]; 19166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 19176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 19186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifdef __x86_64__ 19196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [4 x i64] vector and returns the vector element value 19206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand. 19216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 19236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VEXTRACTF128+COMPOSITE / 19256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// EXTRACTF128+COMPOSITE instruction. 19266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 19286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector of [4 x i64]. 19296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 19306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer operand with bits [1:0] determining which vector 19316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// element is extracted and returned. 19326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 64-bit integer containing the extracted 64 bits of extended 19336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// packed data. 19346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline long long __DEFAULT_FN_ATTRS 19356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi64(__m256i __a, const int __imm) 19366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 19376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v4di __b = (__v4di)__a; 19386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __b[__imm & 3]; 19396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 19406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 19416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 19426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [8 x i32] vector and replaces the vector element value 19436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand by a new value. Returns the 19446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// modified vector. 19456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 19476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VINSERTF128+COMPOSITE / 19496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// INSERTF128+COMPOSITE instruction. 19506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 19526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A vector of [8 x i32] to be used by the insert operation. 19536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 19546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An integer value. The replacement value for the insert operation. 19556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 19566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer specifying the index of the vector element to be 19576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// replaced. 19586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A copy of vector __a, after replacing its element indexed by __imm 19596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// with __b. 19606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 19616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi32(__m256i __a, int __b, int const __imm) 19626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 19636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v8si __c = (__v8si)__a; 19646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __c[__imm & 7] = __b; 19656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__c; 19666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 19676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 19686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 19696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [16 x i16] vector and replaces the vector element value 19706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand with a new value. Returns the 19716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// modified vector. 19726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 19746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VINSERTF128+COMPOSITE / 19766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// INSERTF128+COMPOSITE instruction. 19776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 19796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A vector of [16 x i16] to be used by the insert operation. 19806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 19816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An i16 integer value. The replacement value for the insert operation. 19826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 19836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer specifying the index of the vector element to be 19846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// replaced. 19856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A copy of vector __a, after replacing its element indexed by __imm 19866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// with __b. 19876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 19886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi16(__m256i __a, int __b, int const __imm) 19896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 19906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v16hi __c = (__v16hi)__a; 19916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __c[__imm & 15] = __b; 19926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__c; 19936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 19946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 19956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [32 x i8] vector and replaces the vector element value 19966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand with a new value. Returns the 19976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// modified vector. 19986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 19996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 20006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VINSERTF128+COMPOSITE / 20026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// INSERTF128+COMPOSITE instruction. 20036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 20056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A vector of [32 x i8] to be used by the insert operation. 20066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 20076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An i8 integer value. The replacement value for the insert operation. 20086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 20096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer specifying the index of the vector element to be 20106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// replaced. 20116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A copy of vector __a, after replacing its element indexed by __imm 20126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// with __b. 20136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 20146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi8(__m256i __a, int __b, int const __imm) 20156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 20166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v32qi __c = (__v32qi)__a; 20176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __c[__imm & 31] = __b; 20186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__c; 20196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 20206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 20216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifdef __x86_64__ 20226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Takes a [4 x i64] vector and replaces the vector element value 20236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// indexed by the immediate constant operand with a new value. Returns the 20246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// modified vector. 20256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 20276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VINSERTF128+COMPOSITE / 20296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// INSERTF128+COMPOSITE instruction. 20306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 20326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A vector of [4 x i64] to be used by the insert operation. 20336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __b 20346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 64-bit integer value. The replacement value for the insert operation. 20356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __imm 20366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// An immediate integer specifying the index of the vector element to be 20376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// replaced. 20386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A copy of vector __a, after replacing its element indexed by __imm 20396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// with __b. 20406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 20416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi64(__m256i __a, long long __b, int const __imm) 20426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 20436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v4di __c = (__v4di)__a; 20446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __c[__imm & 3] = __b; 20456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__c; 20466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 20476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif 20486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 20496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Conversion */ 20506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Converts a vector of [4 x i32] into a vector of [4 x double]. 20516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 20536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCVTDQ2PD / CVTDQ2PD instruction. 20556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 20576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 128-bit integer vector of [4 x i32]. 20586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [4 x double] containing the converted values. 20596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 20606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtepi32_pd(__m128i __a) 20616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 20626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_convertvector((__v4si)__a, __v4df); 20636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 20646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 20656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Converts a vector of [8 x i32] into a vector of [8 x float]. 20666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 20686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCVTDQ2PS / CVTDQ2PS instruction. 20706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 20726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit integer vector. 20736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit vector of [8 x float] containing the converted values. 20746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 20756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtepi32_ps(__m256i __a) 20766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 20776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_cvtdq2ps256((__v8si) __a); 20786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 20796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 20806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Converts a 256-bit vector of [4 x double] into a 128-bit vector of 20816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// [4 x float]. 20826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 20846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCVTPD2PS / CVTPD2PS instruction. 20866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 20886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [4 x double]. 20896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 128-bit vector of [4 x float] containing the converted values. 20906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 20916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtpd_ps(__m256d __a) 20926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 20936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128)__builtin_ia32_cvtpd2ps256((__v4df) __a); 20946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 20956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 20966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \brief Converts a vector of [8 x float] into a vector of [8 x i32]. 20976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 20986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \headerfile <x86intrin.h> 20996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 21006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// This intrinsic corresponds to the \c VCVTPS2DQ / CVTPS2DQ instruction. 21016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// 21026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \param __a 21036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// A 256-bit vector of [8 x float]. 21046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/// \returns A 256-bit integer vector containing the converted values. 21056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 21066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtps_epi32(__m256 __a) 21076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__builtin_ia32_cvtps2dq256((__v8sf) __a); 21096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 21126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtps_pd(__m128 __a) 21136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_convertvector((__v4sf)__a, __v4df); 21156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS 21186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvttpd_epi32(__m256d __a) 21196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128i)__builtin_convertvector((__v4df) __a, __v4si); 21216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS 21246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtpd_epi32(__m256d __a) 21256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128i)__builtin_ia32_cvtpd2dq256((__v4df) __a); 21276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 21306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvttps_epi32(__m256 __a) 21316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__builtin_convertvector((__v8sf) __a, __v8si); 21336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline double __DEFAULT_FN_ATTRS 21366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtsd_f64(__m256d __a) 21376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __a[0]; 21396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 21426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtsi256_si32(__m256i __a) 21436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v8si __b = (__v8si)__a; 21456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __b[0]; 21466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline float __DEFAULT_FN_ATTRS 21496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtss_f32(__m256 __a) 21506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __a[0]; 21526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector replicate */ 21556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 21566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movehdup_ps(__m256 __a) 21576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v8sf)__a, (__v8sf)__a, 1, 1, 3, 3, 5, 5, 7, 7); 21596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 21626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_moveldup_ps(__m256 __a) 21636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v8sf)__a, (__v8sf)__a, 0, 0, 2, 2, 4, 4, 6, 6); 21656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 21686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movedup_pd(__m256d __a) 21696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v4df)__a, (__v4df)__a, 0, 0, 2, 2); 21716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Unpack and Interleave */ 21746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 21756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpackhi_pd(__m256d __a, __m256d __b) 21766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v4df)__a, (__v4df)__b, 1, 5, 1+2, 5+2); 21786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 21816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpacklo_pd(__m256d __a, __m256d __b) 21826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v4df)__a, (__v4df)__b, 0, 4, 0+2, 4+2); 21846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 21876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpackhi_ps(__m256 __a, __m256 __b) 21886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v8sf)__a, (__v8sf)__b, 2, 10, 2+1, 10+1, 6, 14, 6+1, 14+1); 21906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 21936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpacklo_ps(__m256 __a, __m256 __b) 21946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 21956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v8sf)__a, (__v8sf)__b, 0, 8, 0+1, 8+1, 4, 12, 4+1, 12+1); 21966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 21976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 21986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Bit Test */ 21996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testz_pd(__m128d __a, __m128d __b) 22016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestzpd((__v2df)__a, (__v2df)__b); 22036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testc_pd(__m128d __a, __m128d __b) 22076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestcpd((__v2df)__a, (__v2df)__b); 22096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testnzc_pd(__m128d __a, __m128d __b) 22136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestnzcpd((__v2df)__a, (__v2df)__b); 22156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testz_ps(__m128 __a, __m128 __b) 22196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestzps((__v4sf)__a, (__v4sf)__b); 22216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testc_ps(__m128 __a, __m128 __b) 22256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestcps((__v4sf)__a, (__v4sf)__b); 22276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testnzc_ps(__m128 __a, __m128 __b) 22316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestnzcps((__v4sf)__a, (__v4sf)__b); 22336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testz_pd(__m256d __a, __m256d __b) 22376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestzpd256((__v4df)__a, (__v4df)__b); 22396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testc_pd(__m256d __a, __m256d __b) 22436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestcpd256((__v4df)__a, (__v4df)__b); 22456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testnzc_pd(__m256d __a, __m256d __b) 22496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestnzcpd256((__v4df)__a, (__v4df)__b); 22516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testz_ps(__m256 __a, __m256 __b) 22556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestzps256((__v8sf)__a, (__v8sf)__b); 22576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testc_ps(__m256 __a, __m256 __b) 22616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestcps256((__v8sf)__a, (__v8sf)__b); 22636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testnzc_ps(__m256 __a, __m256 __b) 22676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_vtestnzcps256((__v8sf)__a, (__v8sf)__b); 22696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testz_si256(__m256i __a, __m256i __b) 22736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_ptestz256((__v4di)__a, (__v4di)__b); 22756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testc_si256(__m256i __a, __m256i __b) 22796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_ptestc256((__v4di)__a, (__v4di)__b); 22816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testnzc_si256(__m256i __a, __m256i __b) 22856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_ptestnzc256((__v4di)__a, (__v4di)__b); 22876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector extract sign mask */ 22906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movemask_pd(__m256d __a) 22926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_movmskpd256((__v4df)__a); 22946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 22956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 22966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS 22976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movemask_ps(__m256 __a) 22986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 22996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_ia32_movmskps256((__v8sf)__a); 23006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector __zero */ 23036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 23046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_zeroall(void) 23056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_ia32_vzeroall(); 23076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 23106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_zeroupper(void) 23116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_ia32_vzeroupper(); 23136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector load with broadcast */ 23166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 23176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_broadcast_ss(float const *__a) 23186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker float __f = *__a; 23206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128)(__v4sf){ __f, __f, __f, __f }; 23216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 23246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_sd(double const *__a) 23256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker double __d = *__a; 23276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)(__v4df){ __d, __d, __d, __d }; 23286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 23316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_ss(float const *__a) 23326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker float __f = *__a; 23346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f }; 23356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 23386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_pd(__m128d const *__a) 23396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_vbroadcastf128_pd256((__v2df const *)__a); 23416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 23446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_ps(__m128 const *__a) 23456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_vbroadcastf128_ps256((__v4sf const *)__a); 23476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD load ops */ 23506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 23516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_load_pd(double const *__p) 23526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return *(__m256d *)__p; 23546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 23576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_load_ps(float const *__p) 23586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return *(__m256 *)__p; 23606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 23636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu_pd(double const *__p) 23646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker struct __loadu_pd { 23666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256d __v; 23676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker } __attribute__((__packed__, __may_alias__)); 23686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return ((struct __loadu_pd*)__p)->__v; 23696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 23726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu_ps(float const *__p) 23736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker struct __loadu_ps { 23756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256 __v; 23766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker } __attribute__((__packed__, __may_alias__)); 23776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return ((struct __loadu_ps*)__p)->__v; 23786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 23816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_load_si256(__m256i const *__p) 23826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return *__p; 23846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 23876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu_si256(__m256i const *__p) 23886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker struct __loadu_si256 { 23906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256i __v; 23916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker } __attribute__((__packed__, __may_alias__)); 23926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return ((struct __loadu_si256*)__p)->__v; 23936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 23946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 23956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 23966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_lddqu_si256(__m256i const *__p) 23976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 23986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__builtin_ia32_lddqu256((char const *)__p); 23996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD store ops */ 24026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_store_pd(double *__p, __m256d __a) 24046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker *(__m256d *)__p = __a; 24066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_store_ps(float *__p, __m256 __a) 24106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker *(__m256 *)__p = __a; 24126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu_pd(double *__p, __m256d __a) 24166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker struct __storeu_pd { 24186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256d __v; 24196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker } __attribute__((__packed__, __may_alias__)); 24206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker ((struct __storeu_pd*)__p)->__v = __a; 24216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu_ps(float *__p, __m256 __a) 24256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker struct __storeu_ps { 24276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256 __v; 24286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker } __attribute__((__packed__, __may_alias__)); 24296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker ((struct __storeu_ps*)__p)->__v = __a; 24306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_store_si256(__m256i *__p, __m256i __a) 24346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker *__p = __a; 24366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu_si256(__m256i *__p, __m256i __a) 24406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker struct __storeu_si256 { 24426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256i __v; 24436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker } __attribute__((__packed__, __may_alias__)); 24446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker ((struct __storeu_si256*)__p)->__v = __a; 24456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Conditional load ops */ 24486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS 24496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskload_pd(double const *__p, __m128i __m) 24506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128d)__builtin_ia32_maskloadpd((const __v2df *)__p, (__v2di)__m); 24526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 24556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskload_pd(double const *__p, __m256i __m) 24566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_maskloadpd256((const __v4df *)__p, 24586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4di)__m); 24596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 24626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskload_ps(float const *__p, __m128i __m) 24636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m128)__builtin_ia32_maskloadps((const __v4sf *)__p, (__v4si)__m); 24656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 24686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskload_ps(float const *__p, __m256i __m) 24696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_maskloadps256((const __v8sf *)__p, (__v8si)__m); 24716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Conditional store ops */ 24746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskstore_ps(float *__p, __m256i __m, __m256 __a) 24766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_ia32_maskstoreps256((__v8sf *)__p, (__v8si)__m, (__v8sf)__a); 24786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskstore_pd(double *__p, __m128i __m, __m128d __a) 24826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_ia32_maskstorepd((__v2df *)__p, (__v2di)__m, (__v2df)__a); 24846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskstore_pd(double *__p, __m256i __m, __m256d __a) 24886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_ia32_maskstorepd256((__v4df *)__p, (__v4di)__m, (__v4df)__a); 24906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 24936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskstore_ps(float *__p, __m128i __m, __m128 __a) 24946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 24956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_ia32_maskstoreps((__v4sf *)__p, (__v4si)__m, (__v4sf)__a); 24966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 24976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 24986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Cacheability support ops */ 24996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 25006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_stream_si256(__m256i *__a, __m256i __b) 25016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_nontemporal_store((__v4di)__b, (__v4di*)__a); 25036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 25066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_stream_pd(double *__a, __m256d __b) 25076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_nontemporal_store((__v4df)__b, (__v4df*)__a); 25096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 25126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_stream_ps(float *__p, __m256 __a) 25136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __builtin_nontemporal_store((__v8sf)__a, (__v8sf*)__p); 25156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create vectors */ 25186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m256d __DEFAULT_FN_ATTRS 25196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_undefined_pd(void) 25206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__builtin_ia32_undef256(); 25226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m256 __DEFAULT_FN_ATTRS 25256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_undefined_ps(void) 25266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__builtin_ia32_undef256(); 25286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m256i __DEFAULT_FN_ATTRS 25316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_undefined_si256(void) 25326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__builtin_ia32_undef256(); 25346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 25376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_pd(double __a, double __b, double __c, double __d) 25386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d){ __d, __c, __b, __a }; 25406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 25436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_ps(float __a, float __b, float __c, float __d, 25446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker float __e, float __f, float __g, float __h) 25456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256){ __h, __g, __f, __e, __d, __c, __b, __a }; 25476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 25506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi32(int __i0, int __i1, int __i2, int __i3, 25516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker int __i4, int __i5, int __i6, int __i7) 25526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v8si){ __i7, __i6, __i5, __i4, __i3, __i2, __i1, __i0 }; 25546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 25576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi16(short __w15, short __w14, short __w13, short __w12, 25586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker short __w11, short __w10, short __w09, short __w08, 25596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker short __w07, short __w06, short __w05, short __w04, 25606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker short __w03, short __w02, short __w01, short __w00) 25616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v16hi){ __w00, __w01, __w02, __w03, __w04, __w05, __w06, 25636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __w07, __w08, __w09, __w10, __w11, __w12, __w13, __w14, __w15 }; 25646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 25676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi8(char __b31, char __b30, char __b29, char __b28, 25686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b27, char __b26, char __b25, char __b24, 25696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b23, char __b22, char __b21, char __b20, 25706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b19, char __b18, char __b17, char __b16, 25716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b15, char __b14, char __b13, char __b12, 25726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b11, char __b10, char __b09, char __b08, 25736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b07, char __b06, char __b05, char __b04, 25746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b03, char __b02, char __b01, char __b00) 25756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v32qi){ 25776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b00, __b01, __b02, __b03, __b04, __b05, __b06, __b07, 25786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b08, __b09, __b10, __b11, __b12, __b13, __b14, __b15, 25796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b16, __b17, __b18, __b19, __b20, __b21, __b22, __b23, 25806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b24, __b25, __b26, __b27, __b28, __b29, __b30, __b31 25816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker }; 25826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 25856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi64x(long long __a, long long __b, long long __c, long long __d) 25866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v4di){ __d, __c, __b, __a }; 25886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create vectors with elements in reverse order */ 25916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 25926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_pd(double __a, double __b, double __c, double __d) 25936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 25946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d){ __a, __b, __c, __d }; 25956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 25966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 25976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 25986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_ps(float __a, float __b, float __c, float __d, 25996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker float __e, float __f, float __g, float __h) 26006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256){ __a, __b, __c, __d, __e, __f, __g, __h }; 26026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi32(int __i0, int __i1, int __i2, int __i3, 26066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker int __i4, int __i5, int __i6, int __i7) 26076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v8si){ __i0, __i1, __i2, __i3, __i4, __i5, __i6, __i7 }; 26096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi16(short __w15, short __w14, short __w13, short __w12, 26136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker short __w11, short __w10, short __w09, short __w08, 26146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker short __w07, short __w06, short __w05, short __w04, 26156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker short __w03, short __w02, short __w01, short __w00) 26166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v16hi){ __w15, __w14, __w13, __w12, __w11, __w10, __w09, 26186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __w08, __w07, __w06, __w05, __w04, __w03, __w02, __w01, __w00 }; 26196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi8(char __b31, char __b30, char __b29, char __b28, 26236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b27, char __b26, char __b25, char __b24, 26246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b23, char __b22, char __b21, char __b20, 26256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b19, char __b18, char __b17, char __b16, 26266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b15, char __b14, char __b13, char __b12, 26276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b11, char __b10, char __b09, char __b08, 26286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b07, char __b06, char __b05, char __b04, 26296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker char __b03, char __b02, char __b01, char __b00) 26306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v32qi){ 26326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b31, __b30, __b29, __b28, __b27, __b26, __b25, __b24, 26336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b23, __b22, __b21, __b20, __b19, __b18, __b17, __b16, 26346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b15, __b14, __b13, __b12, __b11, __b10, __b09, __b08, 26356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b07, __b06, __b05, __b04, __b03, __b02, __b01, __b00 }; 26366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi64x(long long __a, long long __b, long long __c, long long __d) 26406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v4di){ __a, __b, __c, __d }; 26426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create vectors with repeated elements */ 26456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 26466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_pd(double __w) 26476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d){ __w, __w, __w, __w }; 26496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 26526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_ps(float __w) 26536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256){ __w, __w, __w, __w, __w, __w, __w, __w }; 26556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi32(int __i) 26596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v8si){ __i, __i, __i, __i, __i, __i, __i, __i }; 26616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi16(short __w) 26656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v16hi){ __w, __w, __w, __w, __w, __w, __w, __w, __w, __w, 26676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __w, __w, __w, __w, __w, __w }; 26686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi8(char __b) 26726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v32qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, 26746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, 26756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __b, __b, __b, __b, __b, __b, __b }; 26766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi64x(long long __q) 26806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)(__v4di){ __q, __q, __q, __q }; 26826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create __zeroed vectors */ 26856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 26866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setzero_pd(void) 26876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d){ 0, 0, 0, 0 }; 26896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 26926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setzero_ps(void) 26936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 26946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 }; 26956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 26966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 26976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 26986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setzero_si256(void) 26996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i){ 0LL, 0LL, 0LL, 0LL }; 27016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Cast between vector types */ 27046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 27056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd_ps(__m256d __a) 27066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__a; 27086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 27116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd_si256(__m256d __a) 27126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__a; 27146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 27176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps_pd(__m256 __a) 27186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__a; 27206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 27236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps_si256(__m256 __a) 27246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)__a; 27266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 27296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi256_ps(__m256i __a) 27306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256)__a; 27326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 27356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi256_pd(__m256i __a) 27366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)__a; 27386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS 27416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd256_pd128(__m256d __a) 27426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v4df)__a, (__v4df)__a, 0, 1); 27446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS 27476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps256_ps128(__m256 __a) 27486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v8sf)__a, (__v8sf)__a, 0, 1, 2, 3); 27506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS 27536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi256_si128(__m256i __a) 27546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v4di)__a, (__v4di)__a, 0, 1); 27566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 27596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd128_pd256(__m128d __a) 27606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 1, -1, -1); 27626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 27656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps128_ps256(__m128 __a) 27666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v4sf)__a, (__v4sf)__a, 0, 1, 2, 3, -1, -1, -1, -1); 27686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 27716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi128_si256(__m128i __a) 27726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 27736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return __builtin_shufflevector((__v2di)__a, (__v2di)__a, 0, 1, -1, -1); 27746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 27756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* 27776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker Vector insert. 27786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker We use macros rather than inlines because we only want to accept 27796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker invocations where the immediate M is a constant expression. 27806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker*/ 27816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_insertf128_ps(V1, V2, M) __extension__ ({ \ 27826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256)__builtin_shufflevector( \ 27836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(V1), \ 27846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)_mm256_castps128_ps256((__m128)(V2)), \ 27856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 0 : 8), \ 27866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 1 : 9), \ 27876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 2 : 10), \ 27886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 3 : 11), \ 27896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 8 : 4), \ 27906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 9 : 5), \ 27916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 10 : 6), \ 27926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 11 : 7) );}) 27936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 27946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_insertf128_pd(V1, V2, M) __extension__ ({ \ 27956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256d)__builtin_shufflevector( \ 27966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(__m256d)(V1), \ 27976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)_mm256_castpd128_pd256((__m128d)(V2)), \ 27986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 0 : 4), \ 27996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 1 : 5), \ 28006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 4 : 2), \ 28016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 5 : 3) );}) 28026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_insertf128_si256(V1, V2, M) __extension__ ({ \ 28046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m256i)__builtin_shufflevector( \ 28056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4di)(__m256i)(V1), \ 28066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4di)_mm256_castsi128_si256((__m128i)(V2)), \ 28076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 0 : 4), \ 28086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 1 : 5), \ 28096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 4 : 2), \ 28106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 5 : 3) );}) 28116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* 28136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker Vector extract. 28146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker We use macros rather than inlines because we only want to accept 28156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker invocations where the immediate M is a constant expression. 28166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker*/ 28176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_extractf128_ps(V, M) __extension__ ({ \ 28186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128)__builtin_shufflevector( \ 28196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(__m256)(V), \ 28206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v8sf)(_mm256_undefined_ps()), \ 28216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 4 : 0), \ 28226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 5 : 1), \ 28236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 6 : 2), \ 28246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 7 : 3) );}) 28256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_extractf128_pd(V, M) __extension__ ({ \ 28276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128d)__builtin_shufflevector( \ 28286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(__m256d)(V), \ 28296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4df)(_mm256_undefined_pd()), \ 28306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 2 : 0), \ 28316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 3 : 1) );}) 28326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_extractf128_si256(V, M) __extension__ ({ \ 28346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__m128i)__builtin_shufflevector( \ 28356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4di)(__m256i)(V), \ 28366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (__v4di)(_mm256_undefined_si256()), \ 28376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 2 : 0), \ 28386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker (((M) & 1) ? 3 : 1) );}) 28396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD load ops (unaligned) */ 28416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 28426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo) 28436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 28446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256 __v256 = _mm256_castps128_ps256(_mm_loadu_ps(__addr_lo)); 28456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return _mm256_insertf128_ps(__v256, _mm_loadu_ps(__addr_hi), 1); 28466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 28476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 28496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo) 28506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 28516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256d __v256 = _mm256_castpd128_pd256(_mm_loadu_pd(__addr_lo)); 28526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return _mm256_insertf128_pd(__v256, _mm_loadu_pd(__addr_hi), 1); 28536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 28546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 28566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu2_m128i(__m128i const *__addr_hi, __m128i const *__addr_lo) 28576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 28586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m256i __v256 = _mm256_castsi128_si256(_mm_loadu_si128(__addr_lo)); 28596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return _mm256_insertf128_si256(__v256, _mm_loadu_si128(__addr_hi), 1); 28606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 28616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD store ops (unaligned) */ 28636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 28646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu2_m128(float *__addr_hi, float *__addr_lo, __m256 __a) 28656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 28666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m128 __v128; 28676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v128 = _mm256_castps256_ps128(__a); 28696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker _mm_storeu_ps(__addr_lo, __v128); 28706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v128 = _mm256_extractf128_ps(__a, 1); 28716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker _mm_storeu_ps(__addr_hi, __v128); 28726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 28736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 28756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu2_m128d(double *__addr_hi, double *__addr_lo, __m256d __a) 28766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 28776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m128d __v128; 28786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v128 = _mm256_castpd256_pd128(__a); 28806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker _mm_storeu_pd(__addr_lo, __v128); 28816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v128 = _mm256_extractf128_pd(__a, 1); 28826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker _mm_storeu_pd(__addr_hi, __v128); 28836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 28846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS 28866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu2_m128i(__m128i *__addr_hi, __m128i *__addr_lo, __m256i __a) 28876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{ 28886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __m128i __v128; 28896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v128 = _mm256_castsi256_si128(__a); 28916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker _mm_storeu_si128(__addr_lo, __v128); 28926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker __v128 = _mm256_extractf128_si256(__a, 1); 28936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker _mm_storeu_si128(__addr_hi, __v128); 28946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 28956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 28966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 28976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_m128 (__m128 __hi, __m128 __lo) { 28986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256) __builtin_shufflevector((__v4sf)__lo, (__v4sf)__hi, 0, 1, 2, 3, 4, 5, 6, 7); 28996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 29006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 29026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_m128d (__m128d __hi, __m128d __lo) { 29036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo); 29046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 29056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 29076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_m128i (__m128i __hi, __m128i __lo) { 29086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo); 29096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 29106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS 29126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_m128 (__m128 __lo, __m128 __hi) { 29136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return _mm256_set_m128(__hi, __lo); 29146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 29156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS 29176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_m128d (__m128d __lo, __m128d __hi) { 29186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo); 29196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 29206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS 29226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_m128i (__m128i __lo, __m128i __hi) { 29236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo); 29246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker} 29256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#undef __DEFAULT_FN_ATTRS 29276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker 29286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif /* __AVXINTRIN_H */ 2929