avx2intrin.h revision 231f793326e3a3ad6e07949adb776f45c07f0f7b
1925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper/*===---- avx2intrin.h - AVX2 intrinsics -----------------------------------=== 2925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * 3925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * Permission is hereby granted, free of charge, to any person obtaining a copy 4925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * of this software and associated documentation files (the "Software"), to deal 5925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * in the Software without restriction, including without limitation the rights 6925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * copies of the Software, and to permit persons to whom the Software is 8925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * furnished to do so, subject to the following conditions: 9925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * 10925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * The above copyright notice and this permission notice shall be included in 11925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * all copies or substantial portions of the Software. 12925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * 13925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * THE SOFTWARE. 20925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper * 21925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper *===-----------------------------------------------------------------------=== 22925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper */ 23925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 24925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper#ifndef __IMMINTRIN_H 25925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper#error "Never use <avx2intrin.h> directly; include <immintrin.h> instead." 26925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper#endif 27925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 28925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper/* SSE4 Multiple Packed Sums of Absolute Difference. */ 29925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper#define _mm256_mpsadbw_epu8(X, Y, M) __builtin_ia32_mpsadbw256((X), (Y), (M)) 30925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 31925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 32925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_abs_epi8(__m256i a) 33925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 34925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)__builtin_ia32_pabsb256((__v32qi)a); 35925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 36925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 37925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 38925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_abs_epi16(__m256i a) 39925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 40925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)__builtin_ia32_pabsw256((__v16hi)a); 41925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 42925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 43925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 44925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_abs_epi32(__m256i a) 45925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 46925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)__builtin_ia32_pabsd256((__v8si)a); 47925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 48925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 49925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 50925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_packs_epi16(__m256i a, __m256i b) 51925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 52925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)__builtin_ia32_packsswb256((__v16hi)a, (__v16hi)b); 53925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 54925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 55925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 56925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_packs_epi32(__m256i a, __m256i b) 57925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 58925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)__builtin_ia32_packssdw256((__v8si)a, (__v8si)b); 59925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 60925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 61925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 62925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_packus_epi16(__m256i a, __m256i b) 63925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 64925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)__builtin_ia32_packuswb256((__v16hi)a, (__v16hi)b); 65925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 66925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 67925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 68925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_packus_epi32(__m256i __V1, __m256i __V2) 69925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 70925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i) __builtin_ia32_packusdw256((__v8si)__V1, (__v8si)__V2); 71925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 72925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 73925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 74925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_add_epi8(__m256i a, __m256i b) 75925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 76925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)((__v32qi)a + (__v32qi)b); 77925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 78925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 79925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 80925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_add_epi16(__m256i a, __m256i b) 81925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 82925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)((__v16hi)a + (__v16hi)b); 83925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 84925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 85925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 86925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_add_epi32(__m256i a, __m256i b) 87925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 88925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)((__v8si)a + (__v8si)b); 89925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 90925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 91925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 92925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_add_epi64(__m256i a, __m256i b) 93925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 94925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return a + b; 95925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 96925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 97925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 989c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_adds_epi8(__m256i a, __m256i b) 999c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 1009c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_paddsb256((__v32qi)a, (__v32qi)b); 1019c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 1029c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 1039c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1049c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_adds_epi16(__m256i a, __m256i b) 1059c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 1069c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_paddsw256((__v16hi)a, (__v16hi)b); 1079c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 1089c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 1099c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1109c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_adds_epu8(__m256i a, __m256i b) 1119c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 1129c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_paddusb256((__v32qi)a, (__v32qi)b); 1139c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 1149c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 1159c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1169c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_adds_epu16(__m256i a, __m256i b) 1179c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 1189c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_paddusw256((__v16hi)a, (__v16hi)b); 1199c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 1209c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 1219c2ffd803af03f1728423d0d73ff87d988642633Craig Topper#define _mm256_alignr_epi8(a, b, n) __extension__ ({ \ 1229c2ffd803af03f1728423d0d73ff87d988642633Craig Topper __m256i __a = (a); \ 1239c2ffd803af03f1728423d0d73ff87d988642633Craig Topper __m256i __b = (b); \ 1249c2ffd803af03f1728423d0d73ff87d988642633Craig Topper (__m256i)__builtin_ia32_palignr256((__v32qi)__a, (__v32qi)__b, (n)); }) 1259c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 1269c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 127735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper_mm256_and_si256(__m256i a, __m256i b) 128735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper{ 129735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper return a & b; 130735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper} 131735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper 132735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 133735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper_mm256_andnot_si256(__m256i a, __m256i b) 134735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper{ 135735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper return ~a & b; 136735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper} 137735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper 138735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1394c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_avg_epu8(__m256i a, __m256i b) 1404c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1414c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)__builtin_ia32_pavgb256((__v32qi)a, (__v32qi)b); 1424c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1434c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1444c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1454c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_avg_epu16(__m256i a, __m256i b) 1464c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1474c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)__builtin_ia32_pavgw256((__v16hi)a, (__v16hi)b); 1484c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1494c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1504c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1514c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_blendv_epi8(__m256i __V1, __m256i __V2, __m256i __M) 1524c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1534c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)__builtin_ia32_pblendvb256((__v32qi)__V1, (__v32qi)__V2, 1544c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper (__v32qi)__M); 1554c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1564c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1574c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper#define _mm256_blend_epi16(V1, V2, M) __extension__ ({ \ 1584c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper __m256i __V1 = (V1); \ 1594c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper __m256i __V2 = (V2); \ 1604c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper (__m256i)__builtin_ia32_pblendw256((__v16hi)__V1, (__v16hi)__V2, M); }) 1614c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1624c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1634c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpeq_epi8(__m256i a, __m256i b) 1644c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1654c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v32qi)a == (__v32qi)b); 1664c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1674c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1684c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1694c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpeq_epi16(__m256i a, __m256i b) 1704c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1714c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v16hi)a == (__v16hi)b); 1724c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1734c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1744c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1754c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpeq_epi32(__m256i a, __m256i b) 1764c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1774c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v8si)a == (__v8si)b); 1784c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1794c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1804c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1814c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpeq_epi64(__m256i a, __m256i b) 1824c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1834c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v4di)a == (__v4di)b); 1844c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1854c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1864c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1874c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpgt_epi8(__m256i a, __m256i b) 1884c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1894c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v32qi)a > (__v32qi)b); 1904c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1914c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1924c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1934c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpgt_epi16(__m256i a, __m256i b) 1944c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 1954c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v16hi)a > (__v16hi)b); 1964c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 1974c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 1984c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 1994c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpgt_epi32(__m256i a, __m256i b) 2004c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 2014c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v8si)a > (__v8si)b); 2024c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 2034c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 2044c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 2054c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper_mm256_cmpgt_epi64(__m256i a, __m256i b) 2064c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper{ 2074c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper return (__m256i)((__v4di)a > (__v4di)b); 2084c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper} 2094c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topper 2104c07c5dfebd270b2f0660e86f056eeafdb26a4fbCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 211318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper_mm256_hadd_epi16(__m256i a, __m256i b) 212318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper{ 213318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper return (__m256i)__builtin_ia32_phaddw256((__v16hi)a, (__v16hi)b); 214318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper} 215318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper 216318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 217318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper_mm256_hadd_epi32(__m256i a, __m256i b) 218318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper{ 219318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper return (__m256i)__builtin_ia32_phaddd256((__v8si)a, (__v8si)b); 220318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper} 221318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper 222318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 223318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper_mm256_hadds_epi16(__m256i a, __m256i b) 224318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper{ 225318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper return (__m256i)__builtin_ia32_phaddsw256((__v16hi)a, (__v16hi)b); 226318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper} 227318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper 228318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 229318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper_mm256_hsub_epi16(__m256i a, __m256i b) 230318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper{ 231318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper return (__m256i)__builtin_ia32_phsubw256((__v16hi)a, (__v16hi)b); 232318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper} 233318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper 234318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 235318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper_mm256_hsub_epi32(__m256i a, __m256i b) 236318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper{ 237318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper return (__m256i)__builtin_ia32_phsubd256((__v8si)a, (__v8si)b); 238318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper} 239318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper 240318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 241318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper_mm256_hsubs_epi16(__m256i a, __m256i b) 242318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper{ 243318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper return (__m256i)__builtin_ia32_phsubsw256((__v16hi)a, (__v16hi)b); 244318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper} 245318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topper 246318e460ada6e589bd864d9ecb86053cc6852cabfCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 2474a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper_mm256_maddubs_epi16(__m256i a, __m256i b) 2484a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper{ 2494a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper return (__m256i)__builtin_ia32_pmaddubsw256((__v32qi)a, (__v32qi)b); 2504a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper} 2514a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper 2524a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 2534a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper_mm256_madd_epi16(__m256i a, __m256i b) 2544a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper{ 2554a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper return (__m256i)__builtin_ia32_pmaddwd256((__v16hi)a, (__v16hi)b); 2564a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper} 2574a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topper 2584a4f25a5a80dd594acf68c882bcdbf1a38468a45Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 259231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_max_epi8(__m256i a, __m256i b) 260231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 261231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmaxsb256((__v32qi)a, (__v32qi)b); 262231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 263231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 264231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 265231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_max_epi16(__m256i a, __m256i b) 266231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 267231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmaxsw256((__v16hi)a, (__v16hi)b); 268231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 269231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 270231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 271231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_max_epi32(__m256i a, __m256i b) 272231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 273231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmaxsd256((__v8si)a, (__v8si)b); 274231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 275231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 276231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 277231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_max_epu8(__m256i a, __m256i b) 278231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 279231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmaxub256((__v32qi)a, (__v32qi)b); 280231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 281231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 282231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 283231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_max_epu16(__m256i a, __m256i b) 284231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 285231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmaxuw256((__v16hi)a, (__v16hi)b); 286231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 287231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 288231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 289231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_max_epu32(__m256i a, __m256i b) 290231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 291231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmaxud256((__v8si)a, (__v8si)b); 292231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 293231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 294231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 295231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_min_epi8(__m256i a, __m256i b) 296231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 297231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pminsb256((__v32qi)a, (__v32qi)b); 298231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 299231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 300231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 301231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_min_epi16(__m256i a, __m256i b) 302231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 303231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pminsw256((__v16hi)a, (__v16hi)b); 304231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 305231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 306231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 307231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_min_epi32(__m256i a, __m256i b) 308231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 309231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pminsd256((__v8si)a, (__v8si)b); 310231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 311231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 312231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 313231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_min_epu8(__m256i a, __m256i b) 314231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 315231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pminub256((__v32qi)a, (__v32qi)b); 316231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 317231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 318231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 319231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_min_epu16(__m256i a, __m256i b) 320231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 321231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pminuw256 ((__v16hi)a, (__v16hi)b); 322231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 323231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 324231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 325231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_min_epu32(__m256i a, __m256i b) 326231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 327231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pminud256((__v8si)a, (__v8si)b); 328231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 329231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 330231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ int __attribute__((__always_inline__, __nodebug__)) 331231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_movemask_epi8(__m256i a) 332231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 333231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return __builtin_ia32_pmovmskb256((__v32qi)a); 334231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 335231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 336231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 337231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepi8_epi16(__m128i __V) 338231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 339231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovsxbw256((__v16qi)__V); 340231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 341231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 342231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 343231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepi8_epi32(__m128i __V) 344231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 345231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovsxbd256((__v16qi)__V); 346231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 347231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 348231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 349231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepi8_epi64(__m128i __V) 350231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 351231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovsxbq256((__v16qi)__V); 352231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 353231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 354231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 355231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepi16_epi32(__m128i __V) 356231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 357231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovsxwd256((__v8hi)__V); 358231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 359231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 360231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 361231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepi16_epi64(__m128i __V) 362231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 363231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovsxwq256((__v8hi)__V); 364231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 365231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 366231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 367231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepi32_epi64(__m128i __V) 368231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 369231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovsxdq256((__v4si)__V); 370231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 371231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 372231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 373231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepu8_epi16(__m128i __V) 374231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 375231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovzxbw256((__v16qi)__V); 376231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 377231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 378231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 379231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepu8_epi32(__m128i __V) 380231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 381231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovzxbd256((__v16qi)__V); 382231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 383231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 384231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 385231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepu8_epi64(__m128i __V) 386231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 387231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovzxbq256((__v16qi)__V); 388231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 389231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 390231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 391231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepu16_epi32(__m128i __V) 392231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 393231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovzxwd256((__v8hi)__V); 394231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 395231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 396231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 397231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepu16_epi64(__m128i __V) 398231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 399231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovzxwq256((__v8hi)__V); 400231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 401231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 402231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 403231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper_mm256_cvtepu32_epi64(__m128i __V) 404231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper{ 405231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper return (__m256i)__builtin_ia32_pmovzxdq256((__v4si)__V); 406231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper} 407231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topper 408231f793326e3a3ad6e07949adb776f45c07f0f7bCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 409735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper_mm256_or_si256(__m256i a, __m256i b) 410735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper{ 411735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper return a | b; 412735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper} 413735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper 414735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 415925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_sub_epi8(__m256i a, __m256i b) 416925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 417925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)((__v32qi)a - (__v32qi)b); 418925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 419925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 420925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 421925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_sub_epi16(__m256i a, __m256i b) 422925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 423925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)((__v16hi)a - (__v16hi)b); 424925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 425925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 426925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 427925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_sub_epi32(__m256i a, __m256i b) 428925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 429925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return (__m256i)((__v8si)a - (__v8si)b); 430925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 431925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper 432925be547b163675b312e3cac0cc7f37f31d787c1Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 433925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper_mm256_sub_epi64(__m256i a, __m256i b) 434925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper{ 435925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper return a - b; 436925be547b163675b312e3cac0cc7f37f31d787c1Craig Topper} 4379c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 4389c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 4399c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_subs_epi8(__m256i a, __m256i b) 4409c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 4419c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_psubsb256((__v32qi)a, (__v32qi)b); 4429c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 4439c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 4449c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 4459c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_subs_epi16(__m256i a, __m256i b) 4469c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 4479c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_psubsw256((__v16hi)a, (__v16hi)b); 4489c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 4499c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 4509c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 4519c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_subs_epu8(__m256i a, __m256i b) 4529c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 4539c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_psubusb256((__v32qi)a, (__v32qi)b); 4549c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 4559c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 4569c2ffd803af03f1728423d0d73ff87d988642633Craig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 4579c2ffd803af03f1728423d0d73ff87d988642633Craig Topper_mm256_subs_epu16(__m256i a, __m256i b) 4589c2ffd803af03f1728423d0d73ff87d988642633Craig Topper{ 4599c2ffd803af03f1728423d0d73ff87d988642633Craig Topper return (__m256i)__builtin_ia32_psubusw256((__v16hi)a, (__v16hi)b); 4609c2ffd803af03f1728423d0d73ff87d988642633Craig Topper} 4619c2ffd803af03f1728423d0d73ff87d988642633Craig Topper 462735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topperstatic __inline__ __m256i __attribute__((__always_inline__, __nodebug__)) 463735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper_mm256_xor_si256(__m256i a, __m256i b) 464735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper{ 465735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper return a ^ b; 466735ceaa4ccb60df5993245e645f7127bf4a4325fCraig Topper} 467