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/* We need an explicitly signed variant for char. Note that this shouldn't
396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker * appear in the interface though. */
406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef signed char __v32qs __attribute__((__vector_size__(32)));
416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef float __m256 __attribute__ ((__vector_size__ (32)));
436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef double __m256d __attribute__((__vector_size__(32)));
446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickertypedef long long __m256i __attribute__((__vector_size__(32)));
456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Define the default attributes for the functions in this file. */
476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx")))
486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Arithmetic */
506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_add_pd(__m256d __a, __m256d __b)
526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a+__b;
546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_add_ps(__m256 __a, __m256 __b)
586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a+__b;
606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sub_pd(__m256d __a, __m256d __b)
646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a-__b;
666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sub_ps(__m256 __a, __m256 __b)
706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a-__b;
726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_addsub_pd(__m256d __a, __m256d __b)
766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_addsubpd256((__v4df)__a, (__v4df)__b);
786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_addsub_ps(__m256 __a, __m256 __b)
826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_addsubps256((__v8sf)__a, (__v8sf)__b);
846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_div_pd(__m256d __a, __m256d __b)
886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a / __b;
906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_div_ps(__m256 __a, __m256 __b)
946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a / __b;
966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_max_pd(__m256d __a, __m256d __b)
1006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_maxpd256((__v4df)__a, (__v4df)__b);
1026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_max_ps(__m256 __a, __m256 __b)
1066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_maxps256((__v8sf)__a, (__v8sf)__b);
1086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
1116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_min_pd(__m256d __a, __m256d __b)
1126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_minpd256((__v4df)__a, (__v4df)__b);
1146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_min_ps(__m256 __a, __m256 __b)
1186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_minps256((__v8sf)__a, (__v8sf)__b);
1206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
1236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_mul_pd(__m256d __a, __m256d __b)
1246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a * __b;
1266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_mul_ps(__m256 __a, __m256 __b)
1306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __a * __b;
1326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
1356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sqrt_pd(__m256d __a)
1366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_sqrtpd256((__v4df)__a);
1386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_sqrt_ps(__m256 __a)
1426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_sqrtps256((__v8sf)__a);
1446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_rsqrt_ps(__m256 __a)
1486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_rsqrtps256((__v8sf)__a);
1506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_rcp_ps(__m256 __a)
1546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_rcpps256((__v8sf)__a);
1566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_round_pd(V, M) __extension__ ({ \
1596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__m256d)__builtin_ia32_roundpd256((__v4df)(__m256d)(V), (M)); })
1606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_round_ps(V, M) __extension__ ({ \
1626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_ia32_roundps256((__v8sf)(__m256)(V), (M)); })
1636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_ceil_pd(V)  _mm256_round_pd((V), _MM_FROUND_CEIL)
1656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_floor_pd(V) _mm256_round_pd((V), _MM_FROUND_FLOOR)
1666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_ceil_ps(V)  _mm256_round_ps((V), _MM_FROUND_CEIL)
1676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_floor_ps(V) _mm256_round_ps((V), _MM_FROUND_FLOOR)
1686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Logical */
1706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
1716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_and_pd(__m256d __a, __m256d __b)
1726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)((__v4di)__a & (__v4di)__b);
1746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_and_ps(__m256 __a, __m256 __b)
1786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)((__v8si)__a & (__v8si)__b);
1806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
1836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_andnot_pd(__m256d __a, __m256d __b)
1846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)(~(__v4di)__a & (__v4di)__b);
1866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
1896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_andnot_ps(__m256 __a, __m256 __b)
1906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)(~(__v8si)__a & (__v8si)__b);
1926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
1946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
1956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_or_pd(__m256d __a, __m256d __b)
1966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
1976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)((__v4di)__a | (__v4di)__b);
1986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
1996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
2016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_or_ps(__m256 __a, __m256 __b)
2026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)((__v8si)__a | (__v8si)__b);
2046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
2076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_xor_pd(__m256d __a, __m256d __b)
2086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)((__v4di)__a ^ (__v4di)__b);
2106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
2136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_xor_ps(__m256 __a, __m256 __b)
2146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)((__v8si)__a ^ (__v8si)__b);
2166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Horizontal arithmetic */
2196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
2206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hadd_pd(__m256d __a, __m256d __b)
2216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_haddpd256((__v4df)__a, (__v4df)__b);
2236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
2266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hadd_ps(__m256 __a, __m256 __b)
2276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_haddps256((__v8sf)__a, (__v8sf)__b);
2296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
2326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hsub_pd(__m256d __a, __m256d __b)
2336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_hsubpd256((__v4df)__a, (__v4df)__b);
2356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
2386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_hsub_ps(__m256 __a, __m256 __b)
2396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_hsubps256((__v8sf)__a, (__v8sf)__b);
2416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector permutations */
2446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS
2456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_permutevar_pd(__m128d __a, __m128i __c)
2466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128d)__builtin_ia32_vpermilvarpd((__v2df)__a, (__v2di)__c);
2486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
2516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_permutevar_pd(__m256d __a, __m256i __c)
2526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_vpermilvarpd256((__v4df)__a, (__v4di)__c);
2546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS
2576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_permutevar_ps(__m128 __a, __m128i __c)
2586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128)__builtin_ia32_vpermilvarps((__v4sf)__a, (__v4si)__c);
2606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
2636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_permutevar_ps(__m256 __a, __m256i __c)
2646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
2656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_vpermilvarps256((__v8sf)__a, (__v8si)__c);
2666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
2676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_permute_pd(A, C) __extension__ ({ \
2696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128d)__builtin_shufflevector((__v2df)(__m128d)(A), \
2706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (__v2df)_mm_setzero_pd(), \
2716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (C) & 0x1, ((C) & 0x2) >> 1); })
2726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute_pd(A, C) __extension__ ({ \
2746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256d)__builtin_shufflevector((__v4df)(__m256d)(A), \
2756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (__v4df)_mm256_setzero_pd(), \
2766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (C) & 0x1, ((C) & 0x2) >> 1, \
2776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   2 + (((C) & 0x4) >> 2), \
2786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   2 + (((C) & 0x8) >> 3)); })
2796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_permute_ps(A, C) __extension__ ({ \
2816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128)__builtin_shufflevector((__v4sf)(__m128)(A), \
2826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (__v4sf)_mm_setzero_ps(), \
2836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (C) & 0x3, ((C) & 0xc) >> 2, \
2846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   ((C) & 0x30) >> 4, ((C) & 0xc0) >> 6); })
2856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute_ps(A, C) __extension__ ({ \
2876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_shufflevector((__v8sf)(__m256)(A), \
2886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (__v8sf)_mm256_setzero_ps(), \
2896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (C) & 0x3, ((C) & 0xc) >> 2, \
2906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  ((C) & 0x30) >> 4, ((C) & 0xc0) >> 6, \
2916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  4 + (((C) & 0x03) >> 0), \
2926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  4 + (((C) & 0x0c) >> 2), \
2936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  4 + (((C) & 0x30) >> 4), \
2946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  4 + (((C) & 0xc0) >> 6)); })
2956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
2966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute2f128_pd(V1, V2, M) __extension__ ({ \
2976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256d)__builtin_ia32_vperm2f128_pd256((__v4df)(__m256d)(V1), \
2986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                           (__v4df)(__m256d)(V2), (M)); })
2996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute2f128_ps(V1, V2, M) __extension__ ({ \
3016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_ia32_vperm2f128_ps256((__v8sf)(__m256)(V1), \
3026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                          (__v8sf)(__m256)(V2), (M)); })
3036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_permute2f128_si256(V1, V2, M) __extension__ ({ \
3056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256i)__builtin_ia32_vperm2f128_si256((__v8si)(__m256i)(V1), \
3066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                           (__v8si)(__m256i)(V2), (M)); })
3076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector Blend */
3096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_blend_pd(V1, V2, M) __extension__ ({ \
3106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256d)__builtin_shufflevector((__v4df)(__m256d)(V1), \
3116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (__v4df)(__m256d)(V2), \
3126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (((M) & 0x01) ? 4 : 0), \
3136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (((M) & 0x02) ? 5 : 1), \
3146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (((M) & 0x04) ? 6 : 2), \
3156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (((M) & 0x08) ? 7 : 3)); })
3166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_blend_ps(V1, V2, M) __extension__ ({ \
3186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_shufflevector((__v8sf)(__m256)(V1), \
3196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (__v8sf)(__m256)(V2), \
3206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x01) ?  8 : 0), \
3216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x02) ?  9 : 1), \
3226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x04) ? 10 : 2), \
3236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x08) ? 11 : 3), \
3246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x10) ? 12 : 4), \
3256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x20) ? 13 : 5), \
3266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x40) ? 14 : 6), \
3276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (((M) & 0x80) ? 15 : 7)); })
3286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
3306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_blendv_pd(__m256d __a, __m256d __b, __m256d __c)
3316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
3326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_blendvpd256(
3336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4df)__a, (__v4df)__b, (__v4df)__c);
3346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
3356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
3376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_blendv_ps(__m256 __a, __m256 __b, __m256 __c)
3386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
3396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_blendvps256(
3406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v8sf)__a, (__v8sf)__b, (__v8sf)__c);
3416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
3426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector Dot Product */
3446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_dp_ps(V1, V2, M) __extension__ ({ \
3456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_ia32_dpps256((__v8sf)(__m256)(V1), \
3466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                 (__v8sf)(__m256)(V2), (M)); })
3476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector shuffle */
3496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_shuffle_ps(a, b, mask) __extension__ ({ \
3506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker        (__m256)__builtin_shufflevector((__v8sf)(__m256)(a), \
3516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (__v8sf)(__m256)(b), \
3526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (mask) & 0x3, \
3536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        ((mask) & 0xc) >> 2, \
3546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (((mask) & 0x30) >> 4) + 8, \
3556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (((mask) & 0xc0) >> 6) + 8, \
3566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        ((mask) & 0x3) + 4, \
3576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (((mask) & 0xc) >> 2) + 4, \
3586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (((mask) & 0x30) >> 4) + 12, \
3596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                        (((mask) & 0xc0) >> 6) + 12); })
3606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_shuffle_pd(a, b, mask) __extension__ ({ \
3626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker        (__m256d)__builtin_shufflevector((__v4df)(__m256d)(a), \
3636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                         (__v4df)(__m256d)(b), \
3646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                         (mask) & 0x1, \
3656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                         (((mask) & 0x2) >> 1) + 4, \
3666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                         (((mask) & 0x4) >> 2) + 2, \
3676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                         (((mask) & 0x8) >> 3) + 6); })
3686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
3696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Compare */
3706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_OQ    0x00 /* Equal (ordered, non-signaling)  */
3716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LT_OS    0x01 /* Less-than (ordered, signaling)  */
3726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LE_OS    0x02 /* Less-than-or-equal (ordered, signaling)  */
3736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_UNORD_Q  0x03 /* Unordered (non-signaling)  */
3746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_UQ   0x04 /* Not-equal (unordered, non-signaling)  */
3756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLT_US   0x05 /* Not-less-than (unordered, signaling)  */
3766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLE_US   0x06 /* Not-less-than-or-equal (unordered, signaling)  */
3776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_ORD_Q    0x07 /* Ordered (nonsignaling)   */
3786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_UQ    0x08 /* Equal (unordered, non-signaling)  */
3796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGE_US   0x09 /* Not-greater-than-or-equal (unord, signaling)  */
3806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGT_US   0x0a /* Not-greater-than (unordered, signaling)  */
3816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_FALSE_OQ 0x0b /* False (ordered, non-signaling)  */
3826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_OQ   0x0c /* Not-equal (ordered, non-signaling)  */
3836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GE_OS    0x0d /* Greater-than-or-equal (ordered, signaling)  */
3846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GT_OS    0x0e /* Greater-than (ordered, signaling)  */
3856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_TRUE_UQ  0x0f /* True (unordered, non-signaling)  */
3866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_OS    0x10 /* Equal (ordered, signaling)  */
3876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LT_OQ    0x11 /* Less-than (ordered, non-signaling)  */
3886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_LE_OQ    0x12 /* Less-than-or-equal (ordered, non-signaling)  */
3896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_UNORD_S  0x13 /* Unordered (signaling)  */
3906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_US   0x14 /* Not-equal (unordered, signaling)  */
3916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLT_UQ   0x15 /* Not-less-than (unordered, non-signaling)  */
3926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NLE_UQ   0x16 /* Not-less-than-or-equal (unord, non-signaling)  */
3936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_ORD_S    0x17 /* Ordered (signaling)  */
3946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_EQ_US    0x18 /* Equal (unordered, signaling)  */
3956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGE_UQ   0x19 /* Not-greater-than-or-equal (unord, non-sign)  */
3966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NGT_UQ   0x1a /* Not-greater-than (unordered, non-signaling)  */
3976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_FALSE_OS 0x1b /* False (ordered, signaling)  */
3986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_NEQ_OS   0x1c /* Not-equal (ordered, signaling)  */
3996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GE_OQ    0x1d /* Greater-than-or-equal (ordered, non-signaling)  */
4006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_GT_OQ    0x1e /* Greater-than (ordered, non-signaling)  */
4016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _CMP_TRUE_US  0x1f /* True (unordered, signaling)  */
4026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_pd(a, b, c) __extension__ ({ \
4046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128d)__builtin_ia32_cmppd((__v2df)(__m128d)(a), \
4056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                (__v2df)(__m128d)(b), (c)); })
4066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_ps(a, b, c) __extension__ ({ \
4086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128)__builtin_ia32_cmpps((__v4sf)(__m128)(a), \
4096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                               (__v4sf)(__m128)(b), (c)); })
4106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_cmp_pd(a, b, c) __extension__ ({ \
4126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256d)__builtin_ia32_cmppd256((__v4df)(__m256d)(a), \
4136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                   (__v4df)(__m256d)(b), (c)); })
4146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_cmp_ps(a, b, c) __extension__ ({ \
4166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_ia32_cmpps256((__v8sf)(__m256)(a), \
4176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                  (__v8sf)(__m256)(b), (c)); })
4186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_sd(a, b, c) __extension__ ({ \
4206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128d)__builtin_ia32_cmpsd((__v2df)(__m128d)(a), \
4216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                (__v2df)(__m128d)(b), (c)); })
4226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm_cmp_ss(a, b, c) __extension__ ({ \
4246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128)__builtin_ia32_cmpss((__v4sf)(__m128)(a), \
4256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                               (__v4sf)(__m128)(b), (c)); })
4266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
4286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi32(__m256i __a, const int __imm)
4296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v8si __b = (__v8si)__a;
4316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __b[__imm & 7];
4326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
4356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi16(__m256i __a, const int __imm)
4366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v16hi __b = (__v16hi)__a;
4386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __b[__imm & 15];
4396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
4426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi8(__m256i __a, const int __imm)
4436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v32qi __b = (__v32qi)__a;
4456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __b[__imm & 31];
4466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifdef __x86_64__
4496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline long long  __DEFAULT_FN_ATTRS
4506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_extract_epi64(__m256i __a, const int __imm)
4516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v4di __b = (__v4di)__a;
4536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __b[__imm & 3];
4546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif
4566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
4586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi32(__m256i __a, int __b, int const __imm)
4596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v8si __c = (__v8si)__a;
4616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __c[__imm & 7] = __b;
4626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__c;
4636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
4666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi16(__m256i __a, int __b, int const __imm)
4676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v16hi __c = (__v16hi)__a;
4696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __c[__imm & 15] = __b;
4706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__c;
4716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
4746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi8(__m256i __a, int __b, int const __imm)
4756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v32qi __c = (__v32qi)__a;
4776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __c[__imm & 31] = __b;
4786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__c;
4796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#ifdef __x86_64__
4826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
4836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_insert_epi64(__m256i __a, long long __b, int const __imm)
4846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v4di __c = (__v4di)__a;
4866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __c[__imm & 3] = __b;
4876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__c;
4886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif
4906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Conversion */
4926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
4936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtepi32_pd(__m128i __a)
4946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
4956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_cvtdq2pd256((__v4si) __a);
4966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
4976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
4986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
4996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtepi32_ps(__m256i __a)
5006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_cvtdq2ps256((__v8si) __a);
5026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS
5056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtpd_ps(__m256d __a)
5066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128)__builtin_ia32_cvtpd2ps256((__v4df) __a);
5086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
5116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtps_epi32(__m256 __a)
5126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__builtin_ia32_cvtps2dq256((__v8sf) __a);
5146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
5176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtps_pd(__m128 __a)
5186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_cvtps2pd256((__v4sf) __a);
5206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS
5236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvttpd_epi32(__m256d __a)
5246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128i)__builtin_ia32_cvttpd2dq256((__v4df) __a);
5266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS
5296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvtpd_epi32(__m256d __a)
5306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128i)__builtin_ia32_cvtpd2dq256((__v4df) __a);
5326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
5356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_cvttps_epi32(__m256 __a)
5366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__builtin_ia32_cvttps2dq256((__v8sf) __a);
5386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector replicate */
5416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
5426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movehdup_ps(__m256 __a)
5436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 1, 1, 3, 3, 5, 5, 7, 7);
5456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
5486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_moveldup_ps(__m256 __a)
5496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 0, 2, 2, 4, 4, 6, 6);
5516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
5546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movedup_pd(__m256d __a)
5556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 0, 2, 2);
5576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Unpack and Interleave */
5606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
5616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpackhi_pd(__m256d __a, __m256d __b)
5626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __b, 1, 5, 1+2, 5+2);
5646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
5676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpacklo_pd(__m256d __a, __m256d __b)
5686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __b, 0, 4, 0+2, 4+2);
5706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
5736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpackhi_ps(__m256 __a, __m256 __b)
5746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __b, 2, 10, 2+1, 10+1, 6, 14, 6+1, 14+1);
5766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
5796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_unpacklo_ps(__m256 __a, __m256 __b)
5806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __b, 0, 8, 0+1, 8+1, 4, 12, 4+1, 12+1);
5826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Bit Test */
5856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
5866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testz_pd(__m128d __a, __m128d __b)
5876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestzpd((__v2df)__a, (__v2df)__b);
5896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
5926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testc_pd(__m128d __a, __m128d __b)
5936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
5946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestcpd((__v2df)__a, (__v2df)__b);
5956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
5966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
5976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
5986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testnzc_pd(__m128d __a, __m128d __b)
5996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestnzcpd((__v2df)__a, (__v2df)__b);
6016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testz_ps(__m128 __a, __m128 __b)
6056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestzps((__v4sf)__a, (__v4sf)__b);
6076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testc_ps(__m128 __a, __m128 __b)
6116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestcps((__v4sf)__a, (__v4sf)__b);
6136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_testnzc_ps(__m128 __a, __m128 __b)
6176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestnzcps((__v4sf)__a, (__v4sf)__b);
6196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testz_pd(__m256d __a, __m256d __b)
6236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestzpd256((__v4df)__a, (__v4df)__b);
6256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testc_pd(__m256d __a, __m256d __b)
6296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestcpd256((__v4df)__a, (__v4df)__b);
6316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testnzc_pd(__m256d __a, __m256d __b)
6356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestnzcpd256((__v4df)__a, (__v4df)__b);
6376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testz_ps(__m256 __a, __m256 __b)
6416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestzps256((__v8sf)__a, (__v8sf)__b);
6436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testc_ps(__m256 __a, __m256 __b)
6476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestcps256((__v8sf)__a, (__v8sf)__b);
6496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testnzc_ps(__m256 __a, __m256 __b)
6536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_vtestnzcps256((__v8sf)__a, (__v8sf)__b);
6556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testz_si256(__m256i __a, __m256i __b)
6596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_ptestz256((__v4di)__a, (__v4di)__b);
6616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testc_si256(__m256i __a, __m256i __b)
6656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_ptestc256((__v4di)__a, (__v4di)__b);
6676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_testnzc_si256(__m256i __a, __m256i __b)
6716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_ptestnzc256((__v4di)__a, (__v4di)__b);
6736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector extract sign mask */
6766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movemask_pd(__m256d __a)
6786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_movmskpd256((__v4df)__a);
6806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline int __DEFAULT_FN_ATTRS
6836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_movemask_ps(__m256 __a)
6846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_ia32_movmskps256((__v8sf)__a);
6866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector __zero */
6896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
6906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_zeroall(void)
6916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_vzeroall();
6936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
6946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
6956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
6966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_zeroupper(void)
6976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
6986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_vzeroupper();
6996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Vector load with broadcast */
7026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS
7036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_broadcast_ss(float const *__a)
7046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  float __f = *__a;
7066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128)(__v4sf){ __f, __f, __f, __f };
7076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
7106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_sd(double const *__a)
7116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  double __d = *__a;
7136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)(__v4df){ __d, __d, __d, __d };
7146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
7176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_ss(float const *__a)
7186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  float __f = *__a;
7206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)(__v8sf){ __f, __f, __f, __f, __f, __f, __f, __f };
7216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
7246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_pd(__m128d const *__a)
7256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_vbroadcastf128_pd256(__a);
7276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
7306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_broadcast_ps(__m128 const *__a)
7316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_vbroadcastf128_ps256(__a);
7336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD load ops */
7366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
7376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_load_pd(double const *__p)
7386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return *(__m256d *)__p;
7406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
7436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_load_ps(float const *__p)
7446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return *(__m256 *)__p;
7466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
7496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu_pd(double const *__p)
7506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  struct __loadu_pd {
7526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __m256d __v;
7536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  } __attribute__((__packed__, __may_alias__));
7546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return ((struct __loadu_pd*)__p)->__v;
7556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
7586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu_ps(float const *__p)
7596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  struct __loadu_ps {
7616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __m256 __v;
7626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  } __attribute__((__packed__, __may_alias__));
7636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return ((struct __loadu_ps*)__p)->__v;
7646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
7676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_load_si256(__m256i const *__p)
7686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return *__p;
7706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
7736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu_si256(__m256i const *__p)
7746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  struct __loadu_si256 {
7766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __m256i __v;
7776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  } __attribute__((__packed__, __may_alias__));
7786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return ((struct __loadu_si256*)__p)->__v;
7796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
7826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_lddqu_si256(__m256i const *__p)
7836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__builtin_ia32_lddqu256((char const *)__p);
7856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD store ops */
7886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
7896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_store_pd(double *__p, __m256d __a)
7906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  *(__m256d *)__p = __a;
7926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
7946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
7956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_store_ps(float *__p, __m256 __a)
7966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
7976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  *(__m256 *)__p = __a;
7986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
7996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu_pd(double *__p, __m256d __a)
8026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storeupd256(__p, (__v4df)__a);
8046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu_ps(float *__p, __m256 __a)
8086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storeups256(__p, (__v8sf)__a);
8106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_store_si256(__m256i *__p, __m256i __a)
8146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  *__p = __a;
8166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu_si256(__m256i *__p, __m256i __a)
8206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storedqu256((char *)__p, (__v32qi)__a);
8226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Conditional load ops */
8256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS
8266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskload_pd(double const *__p, __m128i __m)
8276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128d)__builtin_ia32_maskloadpd((const __v2df *)__p, (__v2di)__m);
8296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
8326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskload_pd(double const *__p, __m256i __m)
8336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_maskloadpd256((const __v4df *)__p,
8356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                               (__v4di)__m);
8366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS
8396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskload_ps(float const *__p, __m128i __m)
8406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m128)__builtin_ia32_maskloadps((const __v4sf *)__p, (__v4si)__m);
8426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
8456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskload_ps(float const *__p, __m256i __m)
8466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_maskloadps256((const __v8sf *)__p, (__v8si)__m);
8486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Conditional store ops */
8516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskstore_ps(float *__p, __m256i __m, __m256 __a)
8536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_maskstoreps256((__v8sf *)__p, (__v8si)__m, (__v8sf)__a);
8556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskstore_pd(double *__p, __m128i __m, __m128d __a)
8596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_maskstorepd((__v2df *)__p, (__v2di)__m, (__v2df)__a);
8616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_maskstore_pd(double *__p, __m256i __m, __m256d __a)
8656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_maskstorepd256((__v4df *)__p, (__v4di)__m, (__v4df)__a);
8676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm_maskstore_ps(float *__p, __m128i __m, __m128 __a)
8716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_maskstoreps((__v4sf *)__p, (__v4si)__m, (__v4sf)__a);
8736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Cacheability support ops */
8766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_stream_si256(__m256i *__a, __m256i __b)
8786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_movntdq256((__v4di *)__a, (__v4di)__b);
8806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_stream_pd(double *__a, __m256d __b)
8846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_movntpd256(__a, (__v4df)__b);
8866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
8896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_stream_ps(float *__p, __m256 __a)
8906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_movntps256(__p, (__v8sf)__a);
8926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
8936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
8946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create vectors */
8956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m256d __DEFAULT_FN_ATTRS
8966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_undefined_pd()
8976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
8986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__builtin_ia32_undef256();
8996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m256 __DEFAULT_FN_ATTRS
9026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_undefined_ps()
9036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__builtin_ia32_undef256();
9056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline__ __m256i __DEFAULT_FN_ATTRS
9086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_undefined_si256()
9096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__builtin_ia32_undef256();
9116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
9146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_pd(double __a, double __b, double __c, double __d)
9156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d){ __d, __c, __b, __a };
9176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
9206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_ps(float __a, float __b, float __c, float __d,
9216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker              float __e, float __f, float __g, float __h)
9226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256){ __h, __g, __f, __e, __d, __c, __b, __a };
9246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi32(int __i0, int __i1, int __i2, int __i3,
9286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 int __i4, int __i5, int __i6, int __i7)
9296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v8si){ __i7, __i6, __i5, __i4, __i3, __i2, __i1, __i0 };
9316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi16(short __w15, short __w14, short __w13, short __w12,
9356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 short __w11, short __w10, short __w09, short __w08,
9366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 short __w07, short __w06, short __w05, short __w04,
9376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 short __w03, short __w02, short __w01, short __w00)
9386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v16hi){ __w00, __w01, __w02, __w03, __w04, __w05, __w06,
9406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __w07, __w08, __w09, __w10, __w11, __w12, __w13, __w14, __w15 };
9416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi8(char __b31, char __b30, char __b29, char __b28,
9456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b27, char __b26, char __b25, char __b24,
9466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b23, char __b22, char __b21, char __b20,
9476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b19, char __b18, char __b17, char __b16,
9486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b15, char __b14, char __b13, char __b12,
9496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b11, char __b10, char __b09, char __b08,
9506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b07, char __b06, char __b05, char __b04,
9516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                char __b03, char __b02, char __b01, char __b00)
9526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v32qi){
9546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b00, __b01, __b02, __b03, __b04, __b05, __b06, __b07,
9556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b08, __b09, __b10, __b11, __b12, __b13, __b14, __b15,
9566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b16, __b17, __b18, __b19, __b20, __b21, __b22, __b23,
9576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b24, __b25, __b26, __b27, __b28, __b29, __b30, __b31
9586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  };
9596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_epi64x(long long __a, long long __b, long long __c, long long __d)
9636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v4di){ __d, __c, __b, __a };
9656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create vectors with elements in reverse order */
9686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
9696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_pd(double __a, double __b, double __c, double __d)
9706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d){ __a, __b, __c, __d };
9726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
9756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_ps(float __a, float __b, float __c, float __d,
9766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker               float __e, float __f, float __g, float __h)
9776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256){ __a, __b, __c, __d, __e, __f, __g, __h };
9796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi32(int __i0, int __i1, int __i2, int __i3,
9836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                  int __i4, int __i5, int __i6, int __i7)
9846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v8si){ __i0, __i1, __i2, __i3, __i4, __i5, __i6, __i7 };
9866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi16(short __w15, short __w14, short __w13, short __w12,
9906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker       short __w11, short __w10, short __w09, short __w08,
9916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker       short __w07, short __w06, short __w05, short __w04,
9926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker       short __w03, short __w02, short __w01, short __w00)
9936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
9946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v16hi){ __w15, __w14, __w13, __w12, __w11, __w10, __w09,
9956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __w08, __w07, __w06, __w05, __w04, __w03, __w02, __w01, __w00 };
9966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
9976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
9986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
9996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi8(char __b31, char __b30, char __b29, char __b28,
10006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b27, char __b26, char __b25, char __b24,
10016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b23, char __b22, char __b21, char __b20,
10026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b19, char __b18, char __b17, char __b16,
10036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b15, char __b14, char __b13, char __b12,
10046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b11, char __b10, char __b09, char __b08,
10056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b07, char __b06, char __b05, char __b04,
10066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                 char __b03, char __b02, char __b01, char __b00)
10076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v32qi){
10096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b31, __b30, __b29, __b28, __b27, __b26, __b25, __b24,
10106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b23, __b22, __b21, __b20, __b19, __b18, __b17, __b16,
10116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b15, __b14, __b13, __b12, __b11, __b10, __b09, __b08,
10126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b07, __b06, __b05, __b04, __b03, __b02, __b01, __b00 };
10136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_epi64x(long long __a, long long __b, long long __c, long long __d)
10176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v4di){ __a, __b, __c, __d };
10196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create vectors with repeated elements */
10226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
10236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_pd(double __w)
10246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d){ __w, __w, __w, __w };
10266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
10296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_ps(float __w)
10306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256){ __w, __w, __w, __w, __w, __w, __w, __w };
10326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi32(int __i)
10366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v8si){ __i, __i, __i, __i, __i, __i, __i, __i };
10386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi16(short __w)
10426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v16hi){ __w, __w, __w, __w, __w, __w, __w, __w, __w, __w,
10446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __w, __w, __w, __w, __w, __w };
10456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi8(char __b)
10496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v32qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b,
10516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b,
10526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __b, __b, __b, __b, __b, __b, __b };
10536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set1_epi64x(long long __q)
10576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)(__v4di){ __q, __q, __q, __q };
10596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Create __zeroed vectors */
10626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
10636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setzero_pd(void)
10646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d){ 0, 0, 0, 0 };
10666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
10696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setzero_ps(void)
10706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256){ 0, 0, 0, 0, 0, 0, 0, 0 };
10726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setzero_si256(void)
10766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i){ 0LL, 0LL, 0LL, 0LL };
10786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* Cast between vector types */
10816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
10826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd_ps(__m256d __a)
10836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__a;
10856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
10886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd_si256(__m256d __a)
10896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__a;
10916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
10946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps_pd(__m256 __a)
10956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
10966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__a;
10976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
10986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
10996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
11006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps_si256(__m256 __a)
11016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)__a;
11036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
11066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi256_ps(__m256i __a)
11076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256)__a;
11096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
11126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi256_pd(__m256i __a)
11136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)__a;
11156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128d __DEFAULT_FN_ATTRS
11186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd256_pd128(__m256d __a)
11196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 1);
11216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128 __DEFAULT_FN_ATTRS
11246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps256_ps128(__m256 __a)
11256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
11276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m128i __DEFAULT_FN_ATTRS
11306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi256_si128(__m256i __a)
11316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 1);
11336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
11366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castpd128_pd256(__m128d __a)
11376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 1, -1, -1);
11396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
11426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castps128_ps256(__m128 __a)
11436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
11456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
11486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_castsi128_si256(__m128i __a)
11496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
11506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return __builtin_shufflevector(__a, __a, 0, 1, -1, -1);
11516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
11526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/*
11546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker   Vector insert.
11556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker   We use macros rather than inlines because we only want to accept
11566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker   invocations where the immediate M is a constant expression.
11576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker*/
11586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_insertf128_ps(V1, V2, M) __extension__ ({ \
11596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256)__builtin_shufflevector( \
11606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v8sf)(__m256)(V1), \
11616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v8sf)_mm256_castps128_ps256((__m128)(V2)), \
11626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ?  0 :  8), \
11636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ?  1 :  9), \
11646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ?  2 : 10), \
11656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ?  3 : 11), \
11666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ?  8 :  4), \
11676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ?  9 :  5), \
11686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 10 :  6), \
11696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 11 :  7) );})
11706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_insertf128_pd(V1, V2, M) __extension__ ({ \
11726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256d)__builtin_shufflevector( \
11736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4df)(__m256d)(V1), \
11746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4df)_mm256_castpd128_pd256((__m128d)(V2)), \
11756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 0 : 4), \
11766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 1 : 5), \
11776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 4 : 2), \
11786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 5 : 3) );})
11796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_insertf128_si256(V1, V2, M) __extension__ ({ \
11816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m256i)__builtin_shufflevector( \
11826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4di)(__m256i)(V1), \
11836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4di)_mm256_castsi128_si256((__m128i)(V2)), \
11846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 0 : 4), \
11856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 1 : 5), \
11866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 4 : 2), \
11876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 5 : 3) );})
11886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
11896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/*
11906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker   Vector extract.
11916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker   We use macros rather than inlines because we only want to accept
11926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker   invocations where the immediate M is a constant expression.
11936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker*/
11946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_extractf128_ps(V, M) __extension__ ({ \
11956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128)__builtin_shufflevector( \
11966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v8sf)(__m256)(V), \
11976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v8sf)(_mm256_setzero_ps()), \
11986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 4 : 0), \
11996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 5 : 1), \
12006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 6 : 2), \
12016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 7 : 3) );})
12026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_extractf128_pd(V, M) __extension__ ({ \
12046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128d)__builtin_shufflevector( \
12056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4df)(__m256d)(V), \
12066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4df)(_mm256_setzero_pd()), \
12076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 2 : 0), \
12086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 3 : 1) );})
12096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#define _mm256_extractf128_si256(V, M) __extension__ ({ \
12116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  (__m128i)__builtin_shufflevector( \
12126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4di)(__m256i)(V), \
12136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (__v4di)(_mm256_setzero_si256()), \
12146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 2 : 0), \
12156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    (((M) & 1) ? 3 : 1) );})
12166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD load ops (unaligned) */
12186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
12196bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu2_m128(float const *__addr_hi, float const *__addr_lo)
12206bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
12216bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  struct __loadu_ps {
12226bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __m128 __v;
12236bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  } __attribute__((__packed__, __may_alias__));
12246bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12256bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __m256 __v256 = _mm256_castps128_ps256(((struct __loadu_ps*)__addr_lo)->__v);
12266bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return _mm256_insertf128_ps(__v256, ((struct __loadu_ps*)__addr_hi)->__v, 1);
12276bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12286bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12296bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
12306bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu2_m128d(double const *__addr_hi, double const *__addr_lo)
12316bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
12326bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  struct __loadu_pd {
12336bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __m128d __v;
12346bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  } __attribute__((__packed__, __may_alias__));
12356bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12366bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __m256d __v256 = _mm256_castpd128_pd256(((struct __loadu_pd*)__addr_lo)->__v);
12376bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return _mm256_insertf128_pd(__v256, ((struct __loadu_pd*)__addr_hi)->__v, 1);
12386bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12396bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12406bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
12416bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_loadu2_m128i(__m128i const *__addr_hi, __m128i const *__addr_lo)
12426bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
12436bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  struct __loadu_si128 {
12446bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    __m128i __v;
12456bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  } __attribute__((__packed__, __may_alias__));
12466bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __m256i __v256 = _mm256_castsi128_si256(
12476bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker    ((struct __loadu_si128*)__addr_lo)->__v);
12486bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return _mm256_insertf128_si256(__v256,
12496bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker                                 ((struct __loadu_si128*)__addr_hi)->__v, 1);
12506bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12516bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12526bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker/* SIMD store ops (unaligned) */
12536bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
12546bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu2_m128(float *__addr_hi, float *__addr_lo, __m256 __a)
12556bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
12566bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __m128 __v128;
12576bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12586bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v128 = _mm256_castps256_ps128(__a);
12596bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storeups(__addr_lo, __v128);
12606bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v128 = _mm256_extractf128_ps(__a, 1);
12616bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storeups(__addr_hi, __v128);
12626bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12636bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12646bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
12656bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu2_m128d(double *__addr_hi, double *__addr_lo, __m256d __a)
12666bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
12676bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __m128d __v128;
12686bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12696bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v128 = _mm256_castpd256_pd128(__a);
12706bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storeupd(__addr_lo, __v128);
12716bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v128 = _mm256_extractf128_pd(__a, 1);
12726bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storeupd(__addr_hi, __v128);
12736bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12746bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12756bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline void __DEFAULT_FN_ATTRS
12766bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_storeu2_m128i(__m128i *__addr_hi, __m128i *__addr_lo, __m256i __a)
12776bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker{
12786bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __m128i __v128;
12796bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12806bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v128 = _mm256_castsi256_si128(__a);
12816bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storedqu((char *)__addr_lo, (__v16qi)__v128);
12826bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __v128 = _mm256_extractf128_si256(__a, 1);
12836bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  __builtin_ia32_storedqu((char *)__addr_hi, (__v16qi)__v128);
12846bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12856bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12866bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
12876bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_m128 (__m128 __hi, __m128 __lo) {
12886bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256) __builtin_shufflevector(__lo, __hi, 0, 1, 2, 3, 4, 5, 6, 7);
12896bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12906bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12916bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
12926bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_m128d (__m128d __hi, __m128d __lo) {
12936bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo);
12946bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
12956bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
12966bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
12976bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_set_m128i (__m128i __hi, __m128i __lo) {
12986bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo);
12996bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
13006bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
13016bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256 __DEFAULT_FN_ATTRS
13026bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_m128 (__m128 __lo, __m128 __hi) {
13036bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return _mm256_set_m128(__hi, __lo);
13046bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
13056bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
13066bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256d __DEFAULT_FN_ATTRS
13076bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_m128d (__m128d __lo, __m128d __hi) {
13086bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256d)_mm256_set_m128((__m128)__hi, (__m128)__lo);
13096bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
13106bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
13116bdbd720989797e8a53237ef3ef213c4114f869gitbuildkickerstatic __inline __m256i __DEFAULT_FN_ATTRS
13126bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker_mm256_setr_m128i (__m128i __lo, __m128i __hi) {
13136bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker  return (__m256i)_mm256_set_m128((__m128)__hi, (__m128)__lo);
13146bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker}
13156bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
13166bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#undef __DEFAULT_FN_ATTRS
13176bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker
13186bdbd720989797e8a53237ef3ef213c4114f869gitbuildkicker#endif /* __AVXINTRIN_H */
1319