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