Googletest 1.18 asks for CMake 3.13 or newer, so configuring the tests no longer warns that CMake compatibility below 3.10 is deprecated. Co-authored-by: Cursor <cursoragent@cursor.com>
16902 lines
1.4 MiB
16902 lines
1.4 MiB
/* Copyright (c) 2018, 2019 Evan Nemerson <evan@nemerson.com>
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person
|
|
* obtaining a copy of this software and associated documentation
|
|
* files (the "Software"), to deal in the Software without
|
|
* restriction, including without limitation the rights to use, copy,
|
|
* modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
* of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be
|
|
* included in all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*/
|
|
|
|
#define SIMDE_TESTS_CURRENT_ISAX avx2
|
|
#if !defined(__clang__) && (defined(__linux__) || defined(__linux) || defined(__gnu_linux__)) && !defined(_GNU_SOURCE)
|
|
#define _GNU_SOURCE 1 // for MAP_ANONYMOUS
|
|
#endif
|
|
#include <simde/x86/avx2.h>
|
|
#include <test/x86/test-avx.h>
|
|
#if !defined(HEDLEY_MSVC_VERSION)
|
|
#include <sys/mman.h>
|
|
#endif
|
|
|
|
static int
|
|
test_simde_mm256_abs_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( -27), INT8_C( 88), INT8_C(-122), INT8_C( -6),
|
|
INT8_C( -23), INT8_C( 108), INT8_C(-103), INT8_C( 32),
|
|
INT8_C( 43), INT8_C( 116), INT8_C( -6), INT8_C( -98),
|
|
INT8_C( -62), INT8_C( -87), INT8_C( 90), INT8_C( 82),
|
|
INT8_C( 86), INT8_C( 8), INT8_C(-126), INT8_C( -22),
|
|
INT8_C( -80), INT8_C(-125), INT8_C( -5), INT8_C(-101),
|
|
INT8_C( 36), INT8_C( 114), INT8_C( -51), INT8_C( 59),
|
|
INT8_C( -97), INT8_C( 124), INT8_C( 25), INT8_C( 90)),
|
|
simde_mm256_set_epi8(INT8_C( 27), INT8_C( 88), INT8_C( 122), INT8_C( 6),
|
|
INT8_C( 23), INT8_C( 108), INT8_C( 103), INT8_C( 32),
|
|
INT8_C( 43), INT8_C( 116), INT8_C( 6), INT8_C( 98),
|
|
INT8_C( 62), INT8_C( 87), INT8_C( 90), INT8_C( 82),
|
|
INT8_C( 86), INT8_C( 8), INT8_C( 126), INT8_C( 22),
|
|
INT8_C( 80), INT8_C( 125), INT8_C( 5), INT8_C( 101),
|
|
INT8_C( 36), INT8_C( 114), INT8_C( 51), INT8_C( 59),
|
|
INT8_C( 97), INT8_C( 124), INT8_C( 25), INT8_C( 90)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 111), INT8_C( 46), INT8_C( -44), INT8_C( 36),
|
|
INT8_C( -79), INT8_C( 101), INT8_C( 0), INT8_C( 2),
|
|
INT8_C( -69), INT8_C( 31), INT8_C( -68), INT8_C( -82),
|
|
INT8_C( -45), INT8_C( 120), INT8_C( 39), INT8_C( 46),
|
|
INT8_C( 66), INT8_C( 30), INT8_C(-106), INT8_C( 118),
|
|
INT8_C( 61), INT8_C( 98), INT8_C( -61), INT8_C( 98),
|
|
INT8_C( 49), INT8_C( -12), INT8_C(-117), INT8_C(-115),
|
|
INT8_C( 63), INT8_C( -92), INT8_C(-102), INT8_C(-110)),
|
|
simde_mm256_set_epi8(INT8_C( 111), INT8_C( 46), INT8_C( 44), INT8_C( 36),
|
|
INT8_C( 79), INT8_C( 101), INT8_C( 0), INT8_C( 2),
|
|
INT8_C( 69), INT8_C( 31), INT8_C( 68), INT8_C( 82),
|
|
INT8_C( 45), INT8_C( 120), INT8_C( 39), INT8_C( 46),
|
|
INT8_C( 66), INT8_C( 30), INT8_C( 106), INT8_C( 118),
|
|
INT8_C( 61), INT8_C( 98), INT8_C( 61), INT8_C( 98),
|
|
INT8_C( 49), INT8_C( 12), INT8_C( 117), INT8_C( 115),
|
|
INT8_C( 63), INT8_C( 92), INT8_C( 102), INT8_C( 110)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 64), INT8_C( -84), INT8_C( 54), INT8_C(-102),
|
|
INT8_C( -69), INT8_C( 12), INT8_C(-119), INT8_C( -19),
|
|
INT8_C( 19), INT8_C( -55), INT8_C( -11), INT8_C(-117),
|
|
INT8_C( -68), INT8_C( -51), INT8_C( 26), INT8_C( 72),
|
|
INT8_C( -15), INT8_C( 108), INT8_C( -66), INT8_C( -24),
|
|
INT8_C( -97), INT8_C( -48), INT8_C( 75), INT8_C( 35),
|
|
INT8_C( 48), INT8_C( -25), INT8_C( -43), INT8_C( 2),
|
|
INT8_C( -75), INT8_C( 28), INT8_C(-108), INT8_C( -43)),
|
|
simde_mm256_set_epi8(INT8_C( 64), INT8_C( 84), INT8_C( 54), INT8_C( 102),
|
|
INT8_C( 69), INT8_C( 12), INT8_C( 119), INT8_C( 19),
|
|
INT8_C( 19), INT8_C( 55), INT8_C( 11), INT8_C( 117),
|
|
INT8_C( 68), INT8_C( 51), INT8_C( 26), INT8_C( 72),
|
|
INT8_C( 15), INT8_C( 108), INT8_C( 66), INT8_C( 24),
|
|
INT8_C( 97), INT8_C( 48), INT8_C( 75), INT8_C( 35),
|
|
INT8_C( 48), INT8_C( 25), INT8_C( 43), INT8_C( 2),
|
|
INT8_C( 75), INT8_C( 28), INT8_C( 108), INT8_C( 43)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 8), INT8_C( -54), INT8_C( -1), INT8_C(-128),
|
|
INT8_C( 118), INT8_C( -15), INT8_C( 125), INT8_C( 76),
|
|
INT8_C( 47), INT8_C( 33), INT8_C( 69), INT8_C( 21),
|
|
INT8_C(-116), INT8_C( 34), INT8_C( 36), INT8_C( 31),
|
|
INT8_C( -32), INT8_C( -84), INT8_C( 23), INT8_C( -76),
|
|
INT8_C( 82), INT8_C(-115), INT8_C( 74), INT8_C(-110),
|
|
INT8_C( -46), INT8_C( 125), INT8_C( -52), INT8_C( -99),
|
|
INT8_C( 30), INT8_C(-106), INT8_C( 66), INT8_C( 5)),
|
|
simde_mm256_set_epi8(INT8_C( 8), INT8_C( 54), INT8_C( 1), INT8_C(-128),
|
|
INT8_C( 118), INT8_C( 15), INT8_C( 125), INT8_C( 76),
|
|
INT8_C( 47), INT8_C( 33), INT8_C( 69), INT8_C( 21),
|
|
INT8_C( 116), INT8_C( 34), INT8_C( 36), INT8_C( 31),
|
|
INT8_C( 32), INT8_C( 84), INT8_C( 23), INT8_C( 76),
|
|
INT8_C( 82), INT8_C( 115), INT8_C( 74), INT8_C( 110),
|
|
INT8_C( 46), INT8_C( 125), INT8_C( 52), INT8_C( 99),
|
|
INT8_C( 30), INT8_C( 106), INT8_C( 66), INT8_C( 5)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 122), INT8_C( 42), INT8_C(-121), INT8_C(-106),
|
|
INT8_C( 122), INT8_C( -8), INT8_C( 81), INT8_C(-109),
|
|
INT8_C( 124), INT8_C( 32), INT8_C( 63), INT8_C( -21),
|
|
INT8_C( -51), INT8_C( -42), INT8_C( 1), INT8_C( -78),
|
|
INT8_C( 74), INT8_C( 8), INT8_C( 25), INT8_C( 10),
|
|
INT8_C( 113), INT8_C( -75), INT8_C( -32), INT8_C( 126),
|
|
INT8_C( -87), INT8_C( 67), INT8_C( 78), INT8_C( -64),
|
|
INT8_C( 7), INT8_C( -40), INT8_C( -46), INT8_C( -59)),
|
|
simde_mm256_set_epi8(INT8_C( 122), INT8_C( 42), INT8_C( 121), INT8_C( 106),
|
|
INT8_C( 122), INT8_C( 8), INT8_C( 81), INT8_C( 109),
|
|
INT8_C( 124), INT8_C( 32), INT8_C( 63), INT8_C( 21),
|
|
INT8_C( 51), INT8_C( 42), INT8_C( 1), INT8_C( 78),
|
|
INT8_C( 74), INT8_C( 8), INT8_C( 25), INT8_C( 10),
|
|
INT8_C( 113), INT8_C( 75), INT8_C( 32), INT8_C( 126),
|
|
INT8_C( 87), INT8_C( 67), INT8_C( 78), INT8_C( 64),
|
|
INT8_C( 7), INT8_C( 40), INT8_C( 46), INT8_C( 59)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 10), INT8_C( 120), INT8_C( 81), INT8_C(-105),
|
|
INT8_C( 73), INT8_C( -95), INT8_C( 79), INT8_C( -86),
|
|
INT8_C( -93), INT8_C( -54), INT8_C( -43), INT8_C( -88),
|
|
INT8_C( 59), INT8_C( -27), INT8_C( 12), INT8_C( 10),
|
|
INT8_C( 73), INT8_C( -48), INT8_C( 112), INT8_C( 27),
|
|
INT8_C(-113), INT8_C( -31), INT8_C( -56), INT8_C( -96),
|
|
INT8_C( 48), INT8_C( -94), INT8_C(-111), INT8_C( 60),
|
|
INT8_C(-116), INT8_C( -77), INT8_C( -70), INT8_C( 17)),
|
|
simde_mm256_set_epi8(INT8_C( 10), INT8_C( 120), INT8_C( 81), INT8_C( 105),
|
|
INT8_C( 73), INT8_C( 95), INT8_C( 79), INT8_C( 86),
|
|
INT8_C( 93), INT8_C( 54), INT8_C( 43), INT8_C( 88),
|
|
INT8_C( 59), INT8_C( 27), INT8_C( 12), INT8_C( 10),
|
|
INT8_C( 73), INT8_C( 48), INT8_C( 112), INT8_C( 27),
|
|
INT8_C( 113), INT8_C( 31), INT8_C( 56), INT8_C( 96),
|
|
INT8_C( 48), INT8_C( 94), INT8_C( 111), INT8_C( 60),
|
|
INT8_C( 116), INT8_C( 77), INT8_C( 70), INT8_C( 17)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 61), INT8_C( -57), INT8_C( -99), INT8_C( 0),
|
|
INT8_C( 98), INT8_C(-121), INT8_C( 67), INT8_C( -20),
|
|
INT8_C( 44), INT8_C( 53), INT8_C(-128), INT8_C( 44),
|
|
INT8_C( 127), INT8_C( 53), INT8_C(-127), INT8_C( 58),
|
|
INT8_C( 35), INT8_C( 83), INT8_C( -56), INT8_C( 22),
|
|
INT8_C( -4), INT8_C( -6), INT8_C( -7), INT8_C( 121),
|
|
INT8_C( -22), INT8_C( -32), INT8_C( -52), INT8_C( 124),
|
|
INT8_C( -93), INT8_C( 55), INT8_C( -23), INT8_C( -62)),
|
|
simde_mm256_set_epi8(INT8_C( 61), INT8_C( 57), INT8_C( 99), INT8_C( 0),
|
|
INT8_C( 98), INT8_C( 121), INT8_C( 67), INT8_C( 20),
|
|
INT8_C( 44), INT8_C( 53), INT8_C(-128), INT8_C( 44),
|
|
INT8_C( 127), INT8_C( 53), INT8_C( 127), INT8_C( 58),
|
|
INT8_C( 35), INT8_C( 83), INT8_C( 56), INT8_C( 22),
|
|
INT8_C( 4), INT8_C( 6), INT8_C( 7), INT8_C( 121),
|
|
INT8_C( 22), INT8_C( 32), INT8_C( 52), INT8_C( 124),
|
|
INT8_C( 93), INT8_C( 55), INT8_C( 23), INT8_C( 62)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 71), INT8_C( -58), INT8_C( 24), INT8_C( 117),
|
|
INT8_C( 2), INT8_C( -31), INT8_C( -86), INT8_C( 101),
|
|
INT8_C( 3), INT8_C( 63), INT8_C( 2), INT8_C( -30),
|
|
INT8_C( -33), INT8_C( 51), INT8_C( 60), INT8_C( 81),
|
|
INT8_C( -91), INT8_C( -73), INT8_C( 66), INT8_C( 67),
|
|
INT8_C( 72), INT8_C( -7), INT8_C( 44), INT8_C( -32),
|
|
INT8_C( -80), INT8_C( 101), INT8_C( -98), INT8_C( 89),
|
|
INT8_C( 89), INT8_C( 94), INT8_C( 109), INT8_C(-109)),
|
|
simde_mm256_set_epi8(INT8_C( 71), INT8_C( 58), INT8_C( 24), INT8_C( 117),
|
|
INT8_C( 2), INT8_C( 31), INT8_C( 86), INT8_C( 101),
|
|
INT8_C( 3), INT8_C( 63), INT8_C( 2), INT8_C( 30),
|
|
INT8_C( 33), INT8_C( 51), INT8_C( 60), INT8_C( 81),
|
|
INT8_C( 91), INT8_C( 73), INT8_C( 66), INT8_C( 67),
|
|
INT8_C( 72), INT8_C( 7), INT8_C( 44), INT8_C( 32),
|
|
INT8_C( 80), INT8_C( 101), INT8_C( 98), INT8_C( 89),
|
|
INT8_C( 89), INT8_C( 94), INT8_C( 109), INT8_C( 109)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_abs_epi8(test_vec[i].a);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_abs_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 9101), INT16_C( 13664), INT16_C( 14007), INT16_C( 17440),
|
|
INT16_C( 21201), INT16_C(-16892), INT16_C(-22702), INT16_C(-11875),
|
|
INT16_C( 9352), INT16_C( 21001), INT16_C( 15464), INT16_C( 27994),
|
|
INT16_C( 12104), INT16_C(-22404), INT16_C(-21433), INT16_C( -4031)),
|
|
simde_mm256_set_epi16(INT16_C( 9101), INT16_C( 13664), INT16_C( 14007), INT16_C( 17440),
|
|
INT16_C( 21201), INT16_C( 16892), INT16_C( 22702), INT16_C( 11875),
|
|
INT16_C( 9352), INT16_C( 21001), INT16_C( 15464), INT16_C( 27994),
|
|
INT16_C( 12104), INT16_C( 22404), INT16_C( 21433), INT16_C( 4031)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 20289), INT16_C( -8788), INT16_C( 5917), INT16_C(-28916),
|
|
INT16_C(-21540), INT16_C( -8179), INT16_C(-25392), INT16_C( 2609),
|
|
INT16_C( 12609), INT16_C(-11367), INT16_C( -70), INT16_C( 28633),
|
|
INT16_C(-21576), INT16_C(-23753), INT16_C(-11797), INT16_C(-17346)),
|
|
simde_mm256_set_epi16(INT16_C( 20289), INT16_C( 8788), INT16_C( 5917), INT16_C( 28916),
|
|
INT16_C( 21540), INT16_C( 8179), INT16_C( 25392), INT16_C( 2609),
|
|
INT16_C( 12609), INT16_C( 11367), INT16_C( 70), INT16_C( 28633),
|
|
INT16_C( 21576), INT16_C( 23753), INT16_C( 11797), INT16_C( 17346)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 11563), INT16_C(-31585), INT16_C( 24583), INT16_C( 2918),
|
|
INT16_C( 5705), INT16_C( 31274), INT16_C(-12388), INT16_C( 31454),
|
|
INT16_C( 5008), INT16_C( 10123), INT16_C( 28874), INT16_C(-27636),
|
|
INT16_C( 1380), INT16_C(-32687), INT16_C( 24141), INT16_C( 11570)),
|
|
simde_mm256_set_epi16(INT16_C( 11563), INT16_C( 31585), INT16_C( 24583), INT16_C( 2918),
|
|
INT16_C( 5705), INT16_C( 31274), INT16_C( 12388), INT16_C( 31454),
|
|
INT16_C( 5008), INT16_C( 10123), INT16_C( 28874), INT16_C( 27636),
|
|
INT16_C( 1380), INT16_C( 32687), INT16_C( 24141), INT16_C( 11570)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28981), INT16_C(-21254), INT16_C( 12206), INT16_C( 17751),
|
|
INT16_C( 4887), INT16_C( 27025), INT16_C( 20436), INT16_C( -3143),
|
|
INT16_C( 5806), INT16_C( 19398), INT16_C( 23890), INT16_C( -1841),
|
|
INT16_C( -1212), INT16_C( -418), INT16_C( 2804), INT16_C(-24086)),
|
|
simde_mm256_set_epi16(INT16_C( 28981), INT16_C( 21254), INT16_C( 12206), INT16_C( 17751),
|
|
INT16_C( 4887), INT16_C( 27025), INT16_C( 20436), INT16_C( 3143),
|
|
INT16_C( 5806), INT16_C( 19398), INT16_C( 23890), INT16_C( 1841),
|
|
INT16_C( 1212), INT16_C( 418), INT16_C( 2804), INT16_C( 24086)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-32227), INT16_C( 26559), INT16_C( 32468), INT16_C( 9282),
|
|
INT16_C( 10212), INT16_C( 7157), INT16_C(-18109), INT16_C(-13716),
|
|
INT16_C( 3356), INT16_C( -6654), INT16_C( 3548), INT16_C(-31612),
|
|
INT16_C( -3226), INT16_C(-30156), INT16_C(-15323), INT16_C( 8689)),
|
|
simde_mm256_set_epi16(INT16_C( 32227), INT16_C( 26559), INT16_C( 32468), INT16_C( 9282),
|
|
INT16_C( 10212), INT16_C( 7157), INT16_C( 18109), INT16_C( 13716),
|
|
INT16_C( 3356), INT16_C( 6654), INT16_C( 3548), INT16_C( 31612),
|
|
INT16_C( 3226), INT16_C( 30156), INT16_C( 15323), INT16_C( 8689)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 14337), INT16_C(-20237), INT16_C( 7001), INT16_C( 29027),
|
|
INT16_C( -3029), INT16_C( 12894), INT16_C(-24482), INT16_C( -8195),
|
|
INT16_C( -7637), INT16_C(-26436), INT16_C( 15950), INT16_C( 5319),
|
|
INT16_C( 22977), INT16_C( -593), INT16_C(-29639), INT16_C( 23312)),
|
|
simde_mm256_set_epi16(INT16_C( 14337), INT16_C( 20237), INT16_C( 7001), INT16_C( 29027),
|
|
INT16_C( 3029), INT16_C( 12894), INT16_C( 24482), INT16_C( 8195),
|
|
INT16_C( 7637), INT16_C( 26436), INT16_C( 15950), INT16_C( 5319),
|
|
INT16_C( 22977), INT16_C( 593), INT16_C( 29639), INT16_C( 23312)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 4249), INT16_C( -3888), INT16_C( 15630), INT16_C(-11095),
|
|
INT16_C(-21648), INT16_C(-10947), INT16_C( -1651), INT16_C( 5821),
|
|
INT16_C( 25032), INT16_C( 26383), INT16_C(-18726), INT16_C(-14746),
|
|
INT16_C( 9694), INT16_C(-29231), INT16_C( 18526), INT16_C(-12816)),
|
|
simde_mm256_set_epi16(INT16_C( 4249), INT16_C( 3888), INT16_C( 15630), INT16_C( 11095),
|
|
INT16_C( 21648), INT16_C( 10947), INT16_C( 1651), INT16_C( 5821),
|
|
INT16_C( 25032), INT16_C( 26383), INT16_C( 18726), INT16_C( 14746),
|
|
INT16_C( 9694), INT16_C( 29231), INT16_C( 18526), INT16_C( 12816)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 6410), INT16_C( 4746), INT16_C( 16873), INT16_C(-29607),
|
|
INT16_C( 21314), INT16_C(-32512), INT16_C(-23052), INT16_C( 20594),
|
|
INT16_C( -1613), INT16_C( 26993), INT16_C( 28325), INT16_C( 406),
|
|
INT16_C(-19031), INT16_C( 6060), INT16_C(-29650), INT16_C( 8164)),
|
|
simde_mm256_set_epi16(INT16_C( 6410), INT16_C( 4746), INT16_C( 16873), INT16_C( 29607),
|
|
INT16_C( 21314), INT16_C( 32512), INT16_C( 23052), INT16_C( 20594),
|
|
INT16_C( 1613), INT16_C( 26993), INT16_C( 28325), INT16_C( 406),
|
|
INT16_C( 19031), INT16_C( 6060), INT16_C( 29650), INT16_C( 8164)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_abs_epi16(test_vec[i].a);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_abs_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 596456800), INT32_C( 917980192), INT32_C( 1389477380), INT32_C(-1487744611),
|
|
INT32_C( 612913673), INT32_C( 1013476698), INT32_C( 793290876), INT32_C(-1404571583)),
|
|
simde_mm256_set_epi32(INT32_C( 596456800), INT32_C( 917980192), INT32_C( 1389477380), INT32_C( 1487744611),
|
|
INT32_C( 612913673), INT32_C( 1013476698), INT32_C( 793290876), INT32_C( 1404571583)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1329716652), INT32_C( 387813132), INT32_C(-1411588083), INT32_C(-1664087503),
|
|
INT32_C( 826397593), INT32_C( -4558887), INT32_C(-1413962953), INT32_C( -773080002)),
|
|
simde_mm256_set_epi32(INT32_C( 1329716652), INT32_C( 387813132), INT32_C( 1411588083), INT32_C( 1664087503),
|
|
INT32_C( 826397593), INT32_C( 4558887), INT32_C( 1413962953), INT32_C( 773080002)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 757826719), INT32_C( 1611074406), INT32_C( 373914154), INT32_C( -811828514),
|
|
INT32_C( 328214411), INT32_C( 1892324364), INT32_C( 90472529), INT32_C( 1582116146)),
|
|
simde_mm256_set_epi32(INT32_C( 757826719), INT32_C( 1611074406), INT32_C( 373914154), INT32_C( 811828514),
|
|
INT32_C( 328214411), INT32_C( 1892324364), INT32_C( 90472529), INT32_C( 1582116146)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1899254534), INT32_C( 799950167), INT32_C( 320301457), INT32_C( 1339356089),
|
|
INT32_C( 380521414), INT32_C( 1565718735), INT32_C( -79364514), INT32_C( 183804394)),
|
|
simde_mm256_set_epi32(INT32_C( 1899254534), INT32_C( 799950167), INT32_C( 320301457), INT32_C( 1339356089),
|
|
INT32_C( 380521414), INT32_C( 1565718735), INT32_C( 79364514), INT32_C( 183804394)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-2112002113), INT32_C( 2127832130), INT32_C( 669260789), INT32_C(-1186739604),
|
|
INT32_C( 219997698), INT32_C( 232555652), INT32_C( -211383756), INT32_C(-1004199439)),
|
|
simde_mm256_set_epi32(INT32_C( 2112002113), INT32_C( 2127832130), INT32_C( 669260789), INT32_C( 1186739604),
|
|
INT32_C( 219997698), INT32_C( 232555652), INT32_C( 211383756), INT32_C( 1004199439)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 939634931), INT32_C( 458846563), INT32_C( -198495650), INT32_C(-1604395011),
|
|
INT32_C( -500459332), INT32_C( 1045304519), INT32_C( 1505885615), INT32_C(-1942398192)),
|
|
simde_mm256_set_epi32(INT32_C( 939634931), INT32_C( 458846563), INT32_C( 198495650), INT32_C( 1604395011),
|
|
INT32_C( 500459332), INT32_C( 1045304519), INT32_C( 1505885615), INT32_C( 1942398192)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 278524112), INT32_C( 1024382121), INT32_C(-1418668739), INT32_C( -108194115),
|
|
INT32_C( 1640523535), INT32_C(-1227176346), INT32_C( 635342289), INT32_C( 1214172656)),
|
|
simde_mm256_set_epi32(INT32_C( 278524112), INT32_C( 1024382121), INT32_C( 1418668739), INT32_C( 108194115),
|
|
INT32_C( 1640523535), INT32_C( 1227176346), INT32_C( 635342289), INT32_C( 1214172656)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 420090506), INT32_C( 1105824857), INT32_C( 1396867328), INT32_C(-1510715278),
|
|
INT32_C( -105682575), INT32_C( 1856307606), INT32_C(-1247209556), INT32_C(-1943134236)),
|
|
simde_mm256_set_epi32(INT32_C( 420090506), INT32_C( 1105824857), INT32_C( 1396867328), INT32_C( 1510715278),
|
|
INT32_C( 105682575), INT32_C( 1856307606), INT32_C( 1247209556), INT32_C( 1943134236)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_abs_epi32(test_vec[i].a);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_add_epi8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
struct {
|
|
int8_t a[32];
|
|
int8_t b[32];
|
|
int8_t r[32];
|
|
} test_vec[] = {
|
|
{ { -INT8_C( 31), INT8_C( 62), -INT8_C( 76), INT8_C( 4), -INT8_C( 86), INT8_C( 17), INT8_C( 123), INT8_C( 110),
|
|
INT8_C( 62), -INT8_C( 91), -INT8_C( 124), INT8_C( 104), INT8_C( 48), -INT8_C( 40), -INT8_C( 103), -INT8_C( 47),
|
|
INT8_C( 10), -INT8_C( 34), -INT8_C( 78), INT8_C( 22), INT8_C( 48), INT8_C( 43), INT8_C( 12), INT8_C( 72),
|
|
INT8_C( 27), -INT8_C( 105), INT8_C( 29), INT8_C( 82), -INT8_C( 83), INT8_C( 94), INT8_C( 31), -INT8_C( 114) },
|
|
{ -INT8_C( 99), -INT8_C( 44), -INT8_C( 109), INT8_C( 71), -INT8_C( 27), INT8_C( 14), -INT8_C( 75), INT8_C( 36),
|
|
-INT8_C( 77), INT8_C( 58), -INT8_C( 116), -INT8_C( 29), INT8_C( 18), INT8_C( 38), -INT8_C( 76), INT8_C( 28),
|
|
INT8_C( 4), INT8_C( 102), INT8_C( 51), INT8_C( 52), -INT8_C( 111), INT8_C( 63), INT8_C( 124), -INT8_C( 84),
|
|
-INT8_C( 42), -INT8_C( 103), -INT8_C( 1), -INT8_C( 125), -INT8_C( 9), INT8_C( 30), INT8_C( 17), -INT8_C( 108) },
|
|
{ INT8_C( 126), INT8_C( 18), INT8_C( 71), INT8_C( 75), -INT8_C( 113), INT8_C( 31), INT8_C( 48), -INT8_C( 110),
|
|
-INT8_C( 15), -INT8_C( 33), INT8_C( 16), INT8_C( 75), INT8_C( 66), -INT8_C( 2), INT8_C( 77), -INT8_C( 19),
|
|
INT8_C( 14), INT8_C( 68), -INT8_C( 27), INT8_C( 74), -INT8_C( 63), INT8_C( 106), -INT8_C( 120), -INT8_C( 12),
|
|
-INT8_C( 15), INT8_C( 48), INT8_C( 28), -INT8_C( 43), -INT8_C( 92), INT8_C( 124), INT8_C( 48), INT8_C( 34) } },
|
|
{ { -INT8_C( 14), -INT8_C( 92), -INT8_C( 37), -INT8_C( 40), -INT8_C( 78), -INT8_C( 111), -INT8_C( 4), INT8_C( 101),
|
|
-INT8_C( 53), -INT8_C( 120), INT8_C( 73), -INT8_C( 35), -INT8_C( 82), -INT8_C( 3), -INT8_C( 7), -INT8_C( 78),
|
|
INT8_C( 100), INT8_C( 44), -INT8_C( 26), -INT8_C( 11), INT8_C( 107), INT8_C( 98), -INT8_C( 94), INT8_C( 65),
|
|
-INT8_C( 5), -INT8_C( 95), -INT8_C( 60), -INT8_C( 13), -INT8_C( 65), -INT8_C( 42), -INT8_C( 121), -INT8_C( 78) },
|
|
{ INT8_C( 122), INT8_C( 99), -INT8_C( 118), INT8_C( 45), -INT8_C( 12), -INT8_C( 122), -INT8_C( 110), -INT8_C( 65),
|
|
INT8_C( 14), -INT8_C( 37), -INT8_C( 100), -INT8_C( 67), -INT8_C( 39), -INT8_C( 107), INT8_C( 111), INT8_C( 61),
|
|
-INT8_C( 62), INT8_C( 86), INT8_C( 50), INT8_C( 45), -INT8_C( 72), -INT8_C( 44), INT8_C( 111), -INT8_C( 76),
|
|
INT8_C( 117), INT8_C( 51), -INT8_C( 89), INT8_C( 53), INT8_C( 9), INT8_C( 46), -INT8_C( 25), -INT8_C( 124) },
|
|
{ INT8_C( 108), INT8_C( 7), INT8_C( 101), INT8_C( 5), -INT8_C( 90), INT8_C( 23), -INT8_C( 114), INT8_C( 36),
|
|
-INT8_C( 39), INT8_C( 99), -INT8_C( 27), -INT8_C( 102), -INT8_C( 121), -INT8_C( 110), INT8_C( 104), -INT8_C( 17),
|
|
INT8_C( 38), -INT8_C( 126), INT8_C( 24), INT8_C( 34), INT8_C( 35), INT8_C( 54), INT8_C( 17), -INT8_C( 11),
|
|
INT8_C( 112), -INT8_C( 44), INT8_C( 107), INT8_C( 40), -INT8_C( 56), INT8_C( 4), INT8_C( 110), INT8_C( 54) } },
|
|
{ { -INT8_C( 111), INT8_C( 113), -INT8_C( 79), -INT8_C( 123), -INT8_C( 9), INT8_C( 67), INT8_C( 68), INT8_C( 5),
|
|
INT8_C( 31), -INT8_C( 32), -INT8_C( 62), -INT8_C( 8), INT8_C( 118), INT8_C( 50), INT8_C( 53), INT8_C( 56),
|
|
-INT8_C( 120), INT8_C( 103), INT8_C( 101), INT8_C( 64), INT8_C( 60), -INT8_C( 44), -INT8_C( 12), -INT8_C( 79),
|
|
INT8_C( 8), -INT8_C( 101), -INT8_C( 26), INT8_C( 17), -INT8_C( 54), -INT8_C( 51), -INT8_C( 107), INT8_C( 91) },
|
|
{ INT8_C( 62), INT8_C( 70), -INT8_C( 31), INT8_C( 53), -INT8_C( 118), INT8_C( 37), INT8_C( 59), -INT8_C( 87),
|
|
INT8_C( 6), -INT8_C( 3), -INT8_C( 95), INT8_C( 124), INT8_C( 47), -INT8_C( 42), -INT8_C( 76), -INT8_C( 73),
|
|
INT8_C( 61), INT8_C( 25), -INT8_C( 8), INT8_C( 121), -INT8_C( 18), -INT8_C( 20), INT8_C( 43), -INT8_C( 10),
|
|
-INT8_C( 120), INT8_C( 17), INT8_C( 7), INT8_C( 82), -INT8_C( 33), -INT8_C( 99), -INT8_C( 83), INT8_C( 29) },
|
|
{ -INT8_C( 49), -INT8_C( 73), -INT8_C( 110), -INT8_C( 70), -INT8_C( 127), INT8_C( 104), INT8_MAX, -INT8_C( 82),
|
|
INT8_C( 37), -INT8_C( 35), INT8_C( 99), INT8_C( 116), -INT8_C( 91), INT8_C( 8), -INT8_C( 23), -INT8_C( 17),
|
|
-INT8_C( 59), INT8_MIN, INT8_C( 93), -INT8_C( 71), INT8_C( 42), -INT8_C( 64), INT8_C( 31), -INT8_C( 89),
|
|
-INT8_C( 112), -INT8_C( 84), -INT8_C( 19), INT8_C( 99), -INT8_C( 87), INT8_C( 106), INT8_C( 66), INT8_C( 120) } },
|
|
{ { -INT8_C( 29), -INT8_C( 114), INT8_C( 83), INT8_C( 109), -INT8_C( 76), -INT8_C( 114), INT8_C( 22), -INT8_C( 70),
|
|
-INT8_C( 117), -INT8_C( 73), INT8_C( 54), -INT8_C( 69), -INT8_C( 115), -INT8_C( 22), INT8_C( 114), -INT8_C( 53),
|
|
INT8_C( 3), INT8_C( 106), INT8_C( 68), -INT8_C( 15), INT8_C( 87), INT8_C( 111), -INT8_C( 25), -INT8_C( 33),
|
|
-INT8_C( 127), -INT8_C( 17), INT8_C( 49), INT8_C( 96), -INT8_C( 116), -INT8_C( 34), INT8_C( 125), INT8_C( 111) },
|
|
{ INT8_C( 109), -INT8_C( 48), -INT8_C( 35), INT8_C( 33), INT8_C( 94), -INT8_C( 13), -INT8_C( 37), -INT8_C( 22),
|
|
-INT8_C( 85), INT8_C( 17), -INT8_C( 91), INT8_C( 56), -INT8_C( 5), INT8_C( 23), INT8_C( 3), -INT8_C( 2),
|
|
-INT8_C( 126), INT8_C( 72), -INT8_C( 16), -INT8_C( 39), -INT8_C( 73), -INT8_C( 41), -INT8_C( 72), INT8_C( 56),
|
|
-INT8_C( 58), -INT8_C( 23), -INT8_C( 104), INT8_C( 82), -INT8_C( 57), INT8_C( 22), -INT8_C( 62), INT8_C( 52) },
|
|
{ INT8_C( 80), INT8_C( 94), INT8_C( 48), -INT8_C( 114), INT8_C( 18), -INT8_C( 127), -INT8_C( 15), -INT8_C( 92),
|
|
INT8_C( 54), -INT8_C( 56), -INT8_C( 37), -INT8_C( 13), -INT8_C( 120), INT8_C( 1), INT8_C( 117), -INT8_C( 55),
|
|
-INT8_C( 123), -INT8_C( 78), INT8_C( 52), -INT8_C( 54), INT8_C( 14), INT8_C( 70), -INT8_C( 97), INT8_C( 23),
|
|
INT8_C( 71), -INT8_C( 40), -INT8_C( 55), -INT8_C( 78), INT8_C( 83), -INT8_C( 12), INT8_C( 63), -INT8_C( 93) } },
|
|
{ { -INT8_C( 26), -INT8_C( 97), INT8_C( 85), INT8_C( 69), -INT8_C( 110), INT8_C( 48), INT8_C( 47), INT8_C( 61),
|
|
INT8_C( 65), -INT8_C( 44), INT8_C( 118), INT8_C( 60), -INT8_C( 21), INT8_C( 121), INT8_C( 59), INT8_C( 109),
|
|
-INT8_C( 63), INT8_C( 43), INT8_C( 70), INT8_C( 121), INT8_C( 2), -INT8_C( 2), -INT8_C( 79), -INT8_C( 55),
|
|
-INT8_C( 25), INT8_C( 74), INT8_C( 27), -INT8_C( 81), INT8_C( 96), -INT8_C( 35), -INT8_C( 29), INT8_C( 70) },
|
|
{ INT8_C( 124), INT8_C( 57), -INT8_C( 117), INT8_C( 15), INT8_C( 105), -INT8_C( 70), INT8_C( 76), -INT8_C( 85),
|
|
-INT8_C( 114), -INT8_C( 62), -INT8_C( 25), INT8_C( 122), INT8_C( 60), INT8_C( 34), -INT8_C( 25), -INT8_C( 3),
|
|
INT8_C( 77), INT8_C( 46), INT8_C( 118), INT8_C( 80), INT8_C( 44), INT8_C( 40), INT8_C( 25), INT8_C( 20),
|
|
INT8_C( 114), INT8_C( 52), -INT8_C( 61), -INT8_C( 46), INT8_C( 18), -INT8_C( 90), INT8_C( 24), -INT8_C( 114) },
|
|
{ INT8_C( 98), -INT8_C( 40), -INT8_C( 32), INT8_C( 84), -INT8_C( 5), -INT8_C( 22), INT8_C( 123), -INT8_C( 24),
|
|
-INT8_C( 49), -INT8_C( 106), INT8_C( 93), -INT8_C( 74), INT8_C( 39), -INT8_C( 101), INT8_C( 34), INT8_C( 106),
|
|
INT8_C( 14), INT8_C( 89), -INT8_C( 68), -INT8_C( 55), INT8_C( 46), INT8_C( 38), -INT8_C( 54), -INT8_C( 35),
|
|
INT8_C( 89), INT8_C( 126), -INT8_C( 34), -INT8_C( 127), INT8_C( 114), -INT8_C( 125), -INT8_C( 5), -INT8_C( 44) } },
|
|
{ { -INT8_C( 33), -INT8_C( 92), -INT8_C( 99), INT8_C( 73), INT8_C( 94), -INT8_C( 22), -INT8_C( 12), -INT8_C( 19),
|
|
-INT8_C( 84), -INT8_C( 37), INT8_C( 103), -INT8_C( 24), -INT8_C( 2), INT8_C( 78), -INT8_C( 26), INT8_C( 75),
|
|
INT8_C( 124), INT8_C( 92), -INT8_C( 101), -INT8_C( 87), -INT8_C( 124), -INT8_C( 76), -INT8_C( 67), -INT8_C( 10),
|
|
-INT8_C( 23), INT8_MIN, -INT8_C( 56), -INT8_C( 5), INT8_C( 38), -INT8_C( 31), -INT8_C( 119), INT8_C( 6) },
|
|
{ -INT8_C( 123), INT8_C( 39), INT8_C( 79), -INT8_C( 29), INT8_C( 17), INT8_C( 67), -INT8_C( 48), -INT8_C( 67),
|
|
INT8_C( 30), INT8_C( 55), -INT8_C( 90), INT8_C( 28), -INT8_C( 122), -INT8_C( 116), INT8_C( 104), INT8_C( 2),
|
|
-INT8_C( 24), INT8_C( 3), -INT8_C( 85), INT8_C( 109), -INT8_C( 72), INT8_C( 104), INT8_C( 99), -INT8_C( 95),
|
|
-INT8_C( 24), INT8_C( 44), -INT8_C( 100), INT8_C( 15), INT8_C( 13), INT8_C( 37), INT8_C( 21), -INT8_C( 110) },
|
|
{ INT8_C( 100), -INT8_C( 53), -INT8_C( 20), INT8_C( 44), INT8_C( 111), INT8_C( 45), -INT8_C( 60), -INT8_C( 86),
|
|
-INT8_C( 54), INT8_C( 18), INT8_C( 13), INT8_C( 4), -INT8_C( 124), -INT8_C( 38), INT8_C( 78), INT8_C( 77),
|
|
INT8_C( 100), INT8_C( 95), INT8_C( 70), INT8_C( 22), INT8_C( 60), INT8_C( 28), INT8_C( 32), -INT8_C( 105),
|
|
-INT8_C( 47), -INT8_C( 84), INT8_C( 100), INT8_C( 10), INT8_C( 51), INT8_C( 6), -INT8_C( 98), -INT8_C( 104) } },
|
|
{ { INT8_C( 76), INT8_C( 100), INT8_C( 117), INT8_C( 93), -INT8_C( 89), INT8_C( 70), INT8_C( 27), -INT8_C( 59),
|
|
INT8_C( 125), -INT8_C( 63), -INT8_C( 30), INT8_C( 3), INT8_C( 77), INT8_C( 74), INT8_C( 6), INT8_C( 53),
|
|
INT8_C( 77), -INT8_C( 79), -INT8_C( 94), INT8_C( 5), INT8_C( 26), INT8_C( 6), -INT8_C( 90), INT8_C( 2),
|
|
INT8_C( 50), INT8_C( 66), INT8_C( 17), INT8_C( 63), INT8_C( 104), INT8_C( 38), -INT8_C( 47), -INT8_C( 76) },
|
|
{ -INT8_C( 118), INT8_C( 70), INT8_C( 18), INT8_C( 49), -INT8_C( 116), INT8_C( 45), -INT8_C( 9), INT8_C( 10),
|
|
-INT8_C( 18), -INT8_C( 39), INT8_C( 13), INT8_C( 59), INT8_C( 35), INT8_C( 19), INT8_C( 112), INT8_C( 112),
|
|
-INT8_C( 59), INT8_C( 19), INT8_C( 118), -INT8_C( 33), INT8_C( 25), INT8_C( 28), -INT8_C( 31), INT8_C( 75),
|
|
INT8_C( 95), -INT8_C( 13), -INT8_C( 118), -INT8_C( 57), INT8_C( 25), INT8_C( 91), INT8_C( 123), -INT8_C( 92) },
|
|
{ -INT8_C( 42), -INT8_C( 86), -INT8_C( 121), -INT8_C( 114), INT8_C( 51), INT8_C( 115), INT8_C( 18), -INT8_C( 49),
|
|
INT8_C( 107), -INT8_C( 102), -INT8_C( 17), INT8_C( 62), INT8_C( 112), INT8_C( 93), INT8_C( 118), -INT8_C( 91),
|
|
INT8_C( 18), -INT8_C( 60), INT8_C( 24), -INT8_C( 28), INT8_C( 51), INT8_C( 34), -INT8_C( 121), INT8_C( 77),
|
|
-INT8_C( 111), INT8_C( 53), -INT8_C( 101), INT8_C( 6), -INT8_C( 127), -INT8_C( 127), INT8_C( 76), INT8_C( 88) } },
|
|
{ { -INT8_C( 95), -INT8_C( 115), -INT8_C( 43), INT8_C( 46), -INT8_C( 70), -INT8_C( 52), INT8_C( 56), -INT8_C( 88),
|
|
-INT8_C( 91), INT8_C( 69), -INT8_C( 29), -INT8_C( 56), INT8_C( 89), INT8_C( 84), INT8_C( 57), INT8_C( 30),
|
|
INT8_C( 103), -INT8_C( 81), -INT8_C( 3), INT8_MIN, -INT8_C( 53), -INT8_C( 34), -INT8_C( 53), INT8_C( 42),
|
|
-INT8_C( 47), INT8_C( 85), -INT8_C( 15), -INT8_C( 21), -INT8_C( 80), INT8_C( 109), -INT8_C( 113), INT8_C( 81) },
|
|
{ -INT8_C( 6), INT8_C( 100), INT8_MAX, -INT8_C( 75), INT8_C( 49), -INT8_C( 73), INT8_C( 93), -INT8_C( 42),
|
|
-INT8_C( 3), INT8_C( 65), -INT8_C( 97), INT8_C( 86), -INT8_C( 107), -INT8_C( 40), INT8_C( 116), -INT8_C( 4),
|
|
-INT8_C( 121), INT8_C( 113), INT8_C( 124), INT8_C( 82), INT8_C( 79), INT8_C( 71), INT8_C( 125), INT8_C( 33),
|
|
-INT8_C( 100), INT8_C( 110), INT8_C( 12), INT8_C( 76), -INT8_C( 37), -INT8_C( 101), -INT8_C( 99), -INT8_C( 42) },
|
|
{ -INT8_C( 101), -INT8_C( 15), INT8_C( 84), -INT8_C( 29), -INT8_C( 21), -INT8_C( 125), -INT8_C( 107), INT8_C( 126),
|
|
-INT8_C( 94), -INT8_C( 122), -INT8_C( 126), INT8_C( 30), -INT8_C( 18), INT8_C( 44), -INT8_C( 83), INT8_C( 26),
|
|
-INT8_C( 18), INT8_C( 32), INT8_C( 121), -INT8_C( 46), INT8_C( 26), INT8_C( 37), INT8_C( 72), INT8_C( 75),
|
|
INT8_C( 109), -INT8_C( 61), -INT8_C( 3), INT8_C( 55), -INT8_C( 117), INT8_C( 8), INT8_C( 44), INT8_C( 39) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi8(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi8(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_add_epi8(a, b);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_add_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
struct {
|
|
int16_t a[16];
|
|
int16_t b[16];
|
|
int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { INT16_C( 16774), INT16_C( 17194), INT16_C( 10451), INT16_C( 3235), INT16_C( 31051), -INT16_C( 23344), INT16_C( 16496), INT16_C( 29568),
|
|
-INT16_C( 901), -INT16_C( 4920), -INT16_C( 5814), -INT16_C( 23726), INT16_C( 13824), INT16_C( 17418), INT16_C( 19901), INT16_C( 17354) },
|
|
{ -INT16_C( 2930), INT16_C( 24966), INT16_C( 10524), INT16_C( 26734), INT16_C( 16034), INT16_C( 4876), -INT16_C( 29570), -INT16_C( 1658),
|
|
INT16_C( 20104), -INT16_C( 11291), INT16_C( 14135), INT16_C( 14454), -INT16_C( 32658), INT16_C( 11132), INT16_C( 18125), INT16_C( 23662) },
|
|
{ INT16_C( 13844), -INT16_C( 23376), INT16_C( 20975), INT16_C( 29969), -INT16_C( 18451), -INT16_C( 18468), -INT16_C( 13074), INT16_C( 27910),
|
|
INT16_C( 19203), -INT16_C( 16211), INT16_C( 8321), -INT16_C( 9272), -INT16_C( 18834), INT16_C( 28550), -INT16_C( 27510), -INT16_C( 24520) } },
|
|
{ { -INT16_C( 2758), INT16_C( 22461), INT16_C( 11038), -INT16_C( 15937), -INT16_C( 13463), -INT16_C( 6188), INT16_C( 23127), -INT16_C( 7968),
|
|
-INT16_C( 14936), -INT16_C( 8269), INT16_C( 10749), INT16_C( 27415), -INT16_C( 27479), INT16_C( 30358), INT16_C( 1242), INT16_C( 5586) },
|
|
{ -INT16_C( 28423), INT16_C( 6252), INT16_C( 11195), INT16_C( 9689), -INT16_C( 21002), INT16_C( 19724), -INT16_C( 4857), -INT16_C( 20691),
|
|
-INT16_C( 8014), -INT16_C( 20594), -INT16_C( 23031), -INT16_C( 19942), -INT16_C( 20422), INT16_C( 5161), -INT16_C( 1099), -INT16_C( 20951) },
|
|
{ -INT16_C( 31181), INT16_C( 28713), INT16_C( 22233), -INT16_C( 6248), INT16_C( 31071), INT16_C( 13536), INT16_C( 18270), -INT16_C( 28659),
|
|
-INT16_C( 22950), -INT16_C( 28863), -INT16_C( 12282), INT16_C( 7473), INT16_C( 17635), -INT16_C( 30017), INT16_C( 143), -INT16_C( 15365) } },
|
|
{ { -INT16_C( 27253), INT16_C( 18374), -INT16_C( 24640), -INT16_C( 18836), INT16_C( 30796), INT16_C( 21252), INT16_C( 12645), INT16_C( 6146),
|
|
-INT16_C( 28398), INT16_C( 7111), -INT16_C( 7625), INT16_C( 29134), -INT16_C( 2158), INT16_C( 18309), -INT16_C( 20494), INT16_C( 32502) },
|
|
{ -INT16_C( 17340), INT16_C( 1477), INT16_C( 12636), -INT16_C( 22341), -INT16_C( 16471), INT16_C( 4092), -INT16_C( 271), INT16_C( 807),
|
|
-INT16_C( 4465), -INT16_C( 14818), -INT16_C( 4912), INT16_C( 25399), -INT16_C( 16925), -INT16_C( 10582), -INT16_C( 24468), -INT16_C( 20396) },
|
|
{ INT16_C( 20943), INT16_C( 19851), -INT16_C( 12004), INT16_C( 24359), INT16_C( 14325), INT16_C( 25344), INT16_C( 12374), INT16_C( 6953),
|
|
INT16_C( 32673), -INT16_C( 7707), -INT16_C( 12537), -INT16_C( 11003), -INT16_C( 19083), INT16_C( 7727), INT16_C( 20574), INT16_C( 12106) } },
|
|
{ { INT16_C( 6493), -INT16_C( 17995), INT16_C( 29002), -INT16_C( 3231), INT16_C( 23856), INT16_C( 8450), INT16_C( 10588), -INT16_C( 5340),
|
|
INT16_C( 17176), -INT16_C( 5966), -INT16_C( 5841), INT16_C( 4939), -INT16_C( 2394), INT16_C( 4841), INT16_C( 15766), -INT16_C( 3133) },
|
|
{ INT16_C( 30806), -INT16_C( 24404), INT16_C( 3817), INT16_C( 6803), -INT16_C( 27029), -INT16_C( 14533), INT16_C( 24767), -INT16_C( 10317),
|
|
INT16_C( 26019), -INT16_C( 11584), INT16_C( 2894), -INT16_C( 2587), -INT16_C( 12799), -INT16_C( 26617), -INT16_C( 13813), INT16_C( 24971) },
|
|
{ -INT16_C( 28237), INT16_C( 23137), -INT16_C( 32717), INT16_C( 3572), -INT16_C( 3173), -INT16_C( 6083), -INT16_C( 30181), -INT16_C( 15657),
|
|
-INT16_C( 22341), -INT16_C( 17550), -INT16_C( 2947), INT16_C( 2352), -INT16_C( 15193), -INT16_C( 21776), INT16_C( 1953), INT16_C( 21838) } },
|
|
{ { INT16_C( 14403), INT16_C( 11265), -INT16_C( 27322), -INT16_C( 20154), -INT16_C( 32213), -INT16_C( 5511), INT16_C( 11490), -INT16_C( 31294),
|
|
-INT16_C( 32111), -INT16_C( 8361), INT16_C( 15757), -INT16_C( 28716), -INT16_C( 9205), INT16_C( 5927), -INT16_C( 19802), -INT16_C( 5768) },
|
|
{ INT16_C( 31466), INT16_C( 12310), INT16_C( 23567), INT16_C( 15074), INT16_C( 23518), -INT16_C( 16348), -INT16_C( 6521), INT16_C( 6213),
|
|
-INT16_C( 25240), -INT16_C( 2313), -INT16_C( 13094), -INT16_C( 6779), -INT16_C( 21336), INT16_C( 20220), INT16_C( 30046), INT16_C( 18744) },
|
|
{ -INT16_C( 19667), INT16_C( 23575), -INT16_C( 3755), -INT16_C( 5080), -INT16_C( 8695), -INT16_C( 21859), INT16_C( 4969), -INT16_C( 25081),
|
|
INT16_C( 8185), -INT16_C( 10674), INT16_C( 2663), INT16_C( 30041), -INT16_C( 30541), INT16_C( 26147), INT16_C( 10244), INT16_C( 12976) } },
|
|
{ { INT16_C( 20207), -INT16_C( 391), INT16_C( 23466), -INT16_C( 30408), INT16_C( 23734), INT16_C( 15689), -INT16_C( 28861), -INT16_C( 21675),
|
|
INT16_C( 19756), INT16_C( 1697), INT16_C( 9753), -INT16_C( 15893), -INT16_C( 5934), INT16_C( 12559), INT16_C( 18269), INT16_C( 19578) },
|
|
{ -INT16_C( 3179), INT16_C( 16458), -INT16_C( 32177), INT16_C( 1481), INT16_C( 4830), INT16_C( 8515), -INT16_C( 26463), -INT16_C( 12851),
|
|
INT16_C( 28389), -INT16_C( 301), -INT16_C( 16491), INT16_C( 26559), -INT16_C( 12377), INT16_C( 1176), INT16_C( 4630), -INT16_C( 21424) },
|
|
{ INT16_C( 17028), INT16_C( 16067), -INT16_C( 8711), -INT16_C( 28927), INT16_C( 28564), INT16_C( 24204), INT16_C( 10212), INT16_C( 31010),
|
|
-INT16_C( 17391), INT16_C( 1396), -INT16_C( 6738), INT16_C( 10666), -INT16_C( 18311), INT16_C( 13735), INT16_C( 22899), -INT16_C( 1846) } },
|
|
{ { -INT16_C( 26106), INT16_C( 21996), -INT16_C( 19172), -INT16_C( 1446), -INT16_C( 25145), INT16_C( 26908), -INT16_C( 5834), INT16_C( 6966),
|
|
INT16_C( 2647), -INT16_C( 5094), -INT16_C( 9783), INT16_C( 28756), -INT16_C( 4952), -INT16_C( 16524), -INT16_C( 15105), INT16_C( 1387) },
|
|
{ INT16_C( 22366), INT16_C( 31322), -INT16_C( 19444), -INT16_C( 11404), -INT16_C( 28590), -INT16_C( 30660), INT16_C( 29561), -INT16_C( 11869),
|
|
-INT16_C( 17027), INT16_C( 18109), INT16_C( 4503), INT16_C( 16310), INT16_C( 11006), -INT16_C( 514), INT16_C( 27118), INT16_C( 19458) },
|
|
{ -INT16_C( 3740), -INT16_C( 12218), INT16_C( 26920), -INT16_C( 12850), INT16_C( 11801), -INT16_C( 3752), INT16_C( 23727), -INT16_C( 4903),
|
|
-INT16_C( 14380), INT16_C( 13015), -INT16_C( 5280), -INT16_C( 20470), INT16_C( 6054), -INT16_C( 17038), INT16_C( 12013), INT16_C( 20845) } },
|
|
{ { INT16_C( 23744), -INT16_C( 13114), INT16_C( 14864), INT16_C( 25248), -INT16_C( 9013), INT16_C( 17642), -INT16_C( 29105), -INT16_C( 13291),
|
|
-INT16_C( 11445), -INT16_C( 7662), -INT16_C( 14108), -INT16_C( 7646), INT16_C( 8434), -INT16_C( 7969), -INT16_C( 7798), INT16_C( 18988) },
|
|
{ -INT16_C( 3523), INT16_C( 19991), -INT16_C( 18643), -INT16_C( 1872), -INT16_C( 25709), -INT16_C( 7364), INT16_C( 21033), INT16_C( 29871),
|
|
-INT16_C( 15835), INT16_C( 2391), INT16_C( 31114), INT16_C( 32236), -INT16_C( 13415), INT16_C( 9053), -INT16_C( 30035), -INT16_C( 5522) },
|
|
{ INT16_C( 20221), INT16_C( 6877), -INT16_C( 3779), INT16_C( 23376), INT16_C( 30814), INT16_C( 10278), -INT16_C( 8072), INT16_C( 16580),
|
|
-INT16_C( 27280), -INT16_C( 5271), INT16_C( 17006), INT16_C( 24590), -INT16_C( 4981), INT16_C( 1084), INT16_C( 27703), INT16_C( 13466) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_add_epi16(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_add_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
struct {
|
|
int32_t a[8];
|
|
int32_t b[8];
|
|
int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 162005335), -INT32_C( 622453682), -INT32_C( 1422873298), INT32_C( 732145866), -INT32_C( 1831844680), -INT32_C( 1222554996), -INT32_C( 916290153), -INT32_C( 253014202) },
|
|
{ -INT32_C( 1679408307), -INT32_C( 1921659553), INT32_C( 1144563066), INT32_C( 91216973), -INT32_C( 1399308512), INT32_C( 543406473), -INT32_C( 2048211394), INT32_C( 1651889429) },
|
|
{ -INT32_C( 1841413642), INT32_C( 1750854061), -INT32_C( 278310232), INT32_C( 823362839), INT32_C( 1063814104), -INT32_C( 679148523), INT32_C( 1330465749), INT32_C( 1398875227) } },
|
|
{ { INT32_C( 2013092632), -INT32_C( 1576766936), INT32_C( 1709587735), INT32_C( 963269913), INT32_C( 518324884), -INT32_C( 96581189), INT32_C( 612313103), INT32_C( 377943294) },
|
|
{ INT32_C( 2022605647), INT32_C( 203068149), -INT32_C( 395247153), -INT32_C( 350102442), -INT32_C( 1710684194), INT32_C( 1603553104), INT32_C( 1854083952), INT32_C( 1451493639) },
|
|
{ -INT32_C( 259269017), -INT32_C( 1373698787), INT32_C( 1314340582), INT32_C( 613167471), -INT32_C( 1192359310), INT32_C( 1506971915), -INT32_C( 1828570241), INT32_C( 1829436933) } },
|
|
{ { -INT32_C( 2117201268), INT32_C( 1955457445), INT32_C( 1079902186), -INT32_C( 1188331813), -INT32_C( 715967355), -INT32_C( 332077188), INT32_C( 22722554), INT32_C( 1280892608) },
|
|
{ -INT32_C( 1764940047), -INT32_C( 116761841), INT32_C( 893019994), INT32_C( 1810785766), INT32_C( 373375642), INT32_C( 604140841), -INT32_C( 316318675), INT32_C( 725253434) },
|
|
{ INT32_C( 412825981), INT32_C( 1838695604), INT32_C( 1972922180), INT32_C( 622453953), -INT32_C( 342591713), INT32_C( 272063653), -INT32_C( 293596121), INT32_C( 2006146042) } },
|
|
{ { -INT32_C( 1279195228), -INT32_C( 1129460638), INT32_C( 435283763), -INT32_C( 427433908), INT32_C( 1274856994), INT32_C( 1752170043), -INT32_C( 1789487782), -INT32_C( 1228894190) },
|
|
{ -INT32_C( 93683049), -INT32_C( 2118772914), INT32_C( 1251715326), -INT32_C( 1439620984), INT32_C( 569716198), -INT32_C( 2037750484), INT32_C( 203153658), INT32_C( 130276464) },
|
|
{ -INT32_C( 1372878277), INT32_C( 1046733744), INT32_C( 1686999089), -INT32_C( 1867054892), INT32_C( 1844573192), -INT32_C( 285580441), -INT32_C( 1586334124), -INT32_C( 1098617726) } },
|
|
{ { -INT32_C( 1409208994), INT32_C( 1110292548), -INT32_C( 393426848), -INT32_C( 829243928), INT32_C( 401639403), -INT32_C( 425886996), -INT32_C( 889996966), -INT32_C( 204360043) },
|
|
{ INT32_C( 664785891), -INT32_C( 345387893), INT32_C( 2111042965), -INT32_C( 1639160397), -INT32_C( 642433812), INT32_C( 280974006), -INT32_C( 1596280309), INT32_C( 1267968872) },
|
|
{ -INT32_C( 744423103), INT32_C( 764904655), INT32_C( 1717616117), INT32_C( 1826562971), -INT32_C( 240794409), -INT32_C( 144912990), INT32_C( 1808690021), INT32_C( 1063608829) } },
|
|
{ { INT32_C( 158478974), -INT32_C( 1795892225), -INT32_C( 2079209519), INT32_C( 421682476), INT32_C( 1341314969), INT32_C( 895463721), -INT32_C( 858441372), INT32_C( 1662544357) },
|
|
{ -INT32_C( 1704097125), INT32_C( 925786470), INT32_C( 1438335017), INT32_C( 930012573), -INT32_C( 578395980), INT32_C( 1980950034), INT32_C( 71493663), -INT32_C( 328705455) },
|
|
{ -INT32_C( 1545618151), -INT32_C( 870105755), -INT32_C( 640874502), INT32_C( 1351695049), INT32_C( 762918989), -INT32_C( 1418553541), -INT32_C( 786947709), INT32_C( 1333838902) } },
|
|
{ { INT32_C( 1267193317), INT32_C( 1602401590), -INT32_C( 1816838667), -INT32_C( 825613542), -INT32_C( 1767157628), INT32_C( 1443675702), -INT32_C( 145076570), -INT32_C( 1897676119) },
|
|
{ -INT32_C( 824612201), INT32_C( 355293984), -INT32_C( 1297554792), -INT32_C( 1971293690), -INT32_C( 115332157), -INT32_C( 1890636567), INT32_C( 596028026), INT32_C( 78735980) },
|
|
{ INT32_C( 442581116), INT32_C( 1957695574), INT32_C( 1180573837), INT32_C( 1498060064), -INT32_C( 1882489785), -INT32_C( 446960865), INT32_C( 450951456), -INT32_C( 1818940139) } },
|
|
{ { -INT32_C( 187528492), INT32_C( 2097872869), -INT32_C( 399527198), -INT32_C( 395137243), -INT32_C( 991849765), INT32_C( 945041854), INT32_C( 1197267675), INT32_C( 424348996) },
|
|
{ INT32_C( 2098011544), -INT32_C( 321763), -INT32_C( 270062902), -INT32_C( 1244177958), -INT32_C( 1451640597), -INT32_C( 991834647), -INT32_C( 334742104), -INT32_C( 486189237) },
|
|
{ INT32_C( 1910483052), INT32_C( 2097551106), -INT32_C( 669590100), -INT32_C( 1639315201), INT32_C( 1851476934), -INT32_C( 46792793), INT32_C( 862525571), -INT32_C( 61840241) } }
|
|
};
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_add_epi32(a, b);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_add_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
struct {
|
|
int64_t a[4];
|
|
int64_t b[4];
|
|
int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 6349431231190787759), -INT64_C( 254720912029419480), -INT64_C( 1585114888304005479), -INT64_C( 1993816771242646234) },
|
|
{ INT64_C( 1718517911670765936), INT64_C( 2128417586150406366), -INT64_C( 5915363177252979306), -INT64_C( 4600475057435654898) },
|
|
{ INT64_C( 8067949142861553695), INT64_C( 1873696674120986886), -INT64_C( 7500478065556984785), -INT64_C( 6594291828678301132) } },
|
|
{ { -INT64_C( 5470999611667550195), -INT64_C( 9064397034655497070), INT64_C( 1368083854048468167), INT64_C( 6718945478753745967) },
|
|
{ INT64_C( 3132092573034315757), INT64_C( 5341117986440919217), INT64_C( 4118987204768407570), -INT64_C( 1675067501828407790) },
|
|
{ -INT64_C( 2338907038633234438), -INT64_C( 3723279048214577853), INT64_C( 5487071058816875737), INT64_C( 5043877976925338177) } },
|
|
{ { INT64_C( 3979532279430715765), INT64_C( 335787494049348827), -INT64_C( 1668789448351202924), -INT64_C( 385608049042419774) },
|
|
{ INT64_C( 5828296139942220324), INT64_C( 4591233640581478336), -INT64_C( 2785840211528068457), -INT64_C( 3331470012021497532) },
|
|
{ -INT64_C( 8638915654336615527), INT64_C( 4927021134630827163), -INT64_C( 4454629659879271381), -INT64_C( 3717078061063917306) } },
|
|
{ { -INT64_C( 3290620525541536369), -INT64_C( 1080797550094253291), -INT64_C( 2810608374329123313), INT64_C( 7121710342746510679) },
|
|
{ -INT64_C( 4244998137797193421), -INT64_C( 1798196463016764481), INT64_C( 8705188840942103139), INT64_C( 708843972859818144) },
|
|
{ -INT64_C( 7535618663338729790), -INT64_C( 2878994013111017772), INT64_C( 5894580466612979826), INT64_C( 7830554315606328823) } },
|
|
{ { -INT64_C( 5181843299269526110), -INT64_C( 8809360683665548033), INT64_C( 8565929875506776903), INT64_C( 5736108927119678651) },
|
|
{ INT64_C( 5453497739975387389), -INT64_C( 6486905996753797037), INT64_C( 9005490340975441324), -INT64_C( 6897921832086805687) },
|
|
{ INT64_C( 271654440705861279), INT64_C( 3150477393290206546), -INT64_C( 875323857227333389), -INT64_C( 1161812904967127036) } },
|
|
{ { -INT64_C( 1213926134046595696), -INT64_C( 2826187797014754619), INT64_C( 724891255407629523), INT64_C( 6159312156450889015) },
|
|
{ INT64_C( 1853046892828626987), INT64_C( 5451329691363056547), -INT64_C( 8240199362465037608), INT64_C( 1523872447569830923) },
|
|
{ INT64_C( 639120758782031291), INT64_C( 2625141894348301928), -INT64_C( 7515308107057408085), INT64_C( 7683184604020719938) } },
|
|
{ { INT64_C( 5935625214915008241), INT64_C( 8607162423740308398), INT64_C( 5453775861294584267), -INT64_C( 1632482330388195751) },
|
|
{ INT64_C( 8546019858262733976), INT64_C( 5566467293344283178), INT64_C( 6840156418577748321), -INT64_C( 2155261274678556364) },
|
|
{ -INT64_C( 3965099000531809399), -INT64_C( 4273114356624960040), -INT64_C( 6152811793837219028), -INT64_C( 3787743605066752115) } },
|
|
{ { -INT64_C( 41444076634421970), INT64_C( 8884486176460245628), INT64_C( 1062298490825980762), -INT64_C( 8700866135333380333) },
|
|
{ -INT64_C( 6311257025808602730), -INT64_C( 7671331955779620109), -INT64_C( 4352814043531794769), -INT64_C( 5119924125424365294) },
|
|
{ -INT64_C( 6352701102443024700), INT64_C( 1213154220680625519), -INT64_C( 3290515552705814007), INT64_C( 4625953812951805989) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi64(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi64(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_add_epi64(a, b);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_alignr_epi8_case0(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 57), INT8_C( -47), INT8_C( -81), INT8_C( -95),
|
|
INT8_C(-100), INT8_C( -69), INT8_C( -75), INT8_C(-127),
|
|
INT8_C( -8), INT8_C( -83), INT8_C( -94), INT8_C(-113),
|
|
INT8_C( 107), INT8_C( -39), INT8_C( -99), INT8_C( 46),
|
|
INT8_C( -61), INT8_C( -72), INT8_C( -5), INT8_C(-126),
|
|
INT8_C( 113), INT8_C(-120), INT8_C( -9), INT8_C( 117),
|
|
INT8_C( 121), INT8_C( -14), INT8_C( -58), INT8_C(-118),
|
|
INT8_C( -70), INT8_C( -35), INT8_C(-100), INT8_C( 48)),
|
|
simde_mm256_set_epi8(INT8_C( -98), INT8_C( 80), INT8_C( -16), INT8_C( 73),
|
|
INT8_C( 126), INT8_C(-115), INT8_C( 31), INT8_C( 80),
|
|
INT8_C( -75), INT8_C( 117), INT8_C( -13), INT8_C( -70),
|
|
INT8_C(-101), INT8_C( -10), INT8_C(-111), INT8_C( 96),
|
|
INT8_C( -77), INT8_C( 0), INT8_C( 70), INT8_C(-121),
|
|
INT8_C( 78), INT8_C( 54), INT8_C( 38), INT8_C( 18),
|
|
INT8_C( -12), INT8_C( 68), INT8_C( 53), INT8_C( 45),
|
|
INT8_C( 77), INT8_C( 103), INT8_C( 118), INT8_C( 116)),
|
|
simde_mm256_set_epi8(INT8_C( -39), INT8_C( -99), INT8_C( 46), INT8_C( -98),
|
|
INT8_C( 80), INT8_C( -16), INT8_C( 73), INT8_C( 126),
|
|
INT8_C(-115), INT8_C( 31), INT8_C( 80), INT8_C( -75),
|
|
INT8_C( 117), INT8_C( -13), INT8_C( -70), INT8_C(-101),
|
|
INT8_C( -35), INT8_C(-100), INT8_C( 48), INT8_C( -77),
|
|
INT8_C( 0), INT8_C( 70), INT8_C(-121), INT8_C( 78),
|
|
INT8_C( 54), INT8_C( 38), INT8_C( 18), INT8_C( -12),
|
|
INT8_C( 68), INT8_C( 53), INT8_C( 45), INT8_C( 77)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 8), INT8_C( 70), INT8_C( 96), INT8_C( 42),
|
|
INT8_C( 73), INT8_C( -91), INT8_C( -93), INT8_C( -58),
|
|
INT8_C( -35), INT8_C( -14), INT8_C( 118), INT8_C(-128),
|
|
INT8_C( -97), INT8_C( 97), INT8_C( 22), INT8_C( 4),
|
|
INT8_C( 24), INT8_C( 124), INT8_C( -32), INT8_C( -48),
|
|
INT8_C( -74), INT8_C( 95), INT8_C( 95), INT8_C( -38),
|
|
INT8_C( 54), INT8_C( 120), INT8_C( -65), INT8_C( -96),
|
|
INT8_C( -44), INT8_C( -78), INT8_C( -95), INT8_C(-111)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( 48), INT8_C( 60), INT8_C( -4),
|
|
INT8_C( 33), INT8_C( 67), INT8_C( 97), INT8_C( 65),
|
|
INT8_C( 80), INT8_C(-109), INT8_C( 88), INT8_C( -23),
|
|
INT8_C( 107), INT8_C( -65), INT8_C( -65), INT8_C( 62),
|
|
INT8_C( 90), INT8_C( 118), INT8_C( 25), INT8_C( 105),
|
|
INT8_C( 109), INT8_C( -45), INT8_C( 4), INT8_C(-107),
|
|
INT8_C( 55), INT8_C(-101), INT8_C( -65), INT8_C( 121),
|
|
INT8_C( -76), INT8_C( 55), INT8_C( 6), INT8_C( 86)),
|
|
simde_mm256_set_epi8(INT8_C( 97), INT8_C( 22), INT8_C( 4), INT8_C( 66),
|
|
INT8_C( 48), INT8_C( 60), INT8_C( -4), INT8_C( 33),
|
|
INT8_C( 67), INT8_C( 97), INT8_C( 65), INT8_C( 80),
|
|
INT8_C(-109), INT8_C( 88), INT8_C( -23), INT8_C( 107),
|
|
INT8_C( -78), INT8_C( -95), INT8_C(-111), INT8_C( 90),
|
|
INT8_C( 118), INT8_C( 25), INT8_C( 105), INT8_C( 109),
|
|
INT8_C( -45), INT8_C( 4), INT8_C(-107), INT8_C( 55),
|
|
INT8_C(-101), INT8_C( -65), INT8_C( 121), INT8_C( -76)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -1), INT8_C( 93), INT8_C( 114), INT8_C( 49),
|
|
INT8_C( 120), INT8_C( -70), INT8_C(-112), INT8_C( 19),
|
|
INT8_C( 56), INT8_C( -12), INT8_C( -77), INT8_C( -85),
|
|
INT8_C( -59), INT8_C( 80), INT8_C( -47), INT8_C( -28),
|
|
INT8_C( -33), INT8_C( 73), INT8_C( -24), INT8_C(-106),
|
|
INT8_C(-122), INT8_C(-111), INT8_C( -3), INT8_C( 57),
|
|
INT8_C( 67), INT8_C( 107), INT8_C( -68), INT8_C(-101),
|
|
INT8_C( -9), INT8_C( 5), INT8_C(-124), INT8_C( -69)),
|
|
simde_mm256_set_epi8(INT8_C( -67), INT8_C( 65), INT8_C( -72), INT8_C( -90),
|
|
INT8_C( -44), INT8_C( 2), INT8_C( 39), INT8_C( -45),
|
|
INT8_C( 51), INT8_C( -30), INT8_C( -47), INT8_C( 1),
|
|
INT8_C( -91), INT8_C( -40), INT8_C( -73), INT8_C( 33),
|
|
INT8_C(-117), INT8_C( -31), INT8_C(-117), INT8_C( 60),
|
|
INT8_C( -36), INT8_C(-120), INT8_C( -10), INT8_C( -12),
|
|
INT8_C( -25), INT8_C(-103), INT8_C( 48), INT8_C( -50),
|
|
INT8_C( 101), INT8_C( 93), INT8_C( -31), INT8_C( -33)),
|
|
simde_mm256_set_epi8(INT8_C( 80), INT8_C( -47), INT8_C( -28), INT8_C( -67),
|
|
INT8_C( 65), INT8_C( -72), INT8_C( -90), INT8_C( -44),
|
|
INT8_C( 2), INT8_C( 39), INT8_C( -45), INT8_C( 51),
|
|
INT8_C( -30), INT8_C( -47), INT8_C( 1), INT8_C( -91),
|
|
INT8_C( 5), INT8_C(-124), INT8_C( -69), INT8_C(-117),
|
|
INT8_C( -31), INT8_C(-117), INT8_C( 60), INT8_C( -36),
|
|
INT8_C(-120), INT8_C( -10), INT8_C( -12), INT8_C( -25),
|
|
INT8_C(-103), INT8_C( 48), INT8_C( -50), INT8_C( 101)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 114), INT8_C( -28), INT8_C( -81), INT8_C(-126),
|
|
INT8_C(-114), INT8_C( -94), INT8_C(-101), INT8_C( 52),
|
|
INT8_C( 30), INT8_C( 66), INT8_C(-105), INT8_C( 50),
|
|
INT8_C( 48), INT8_C( 15), INT8_C( 1), INT8_C(-106),
|
|
INT8_C( -36), INT8_C( 61), INT8_C( -18), INT8_C( 8),
|
|
INT8_C( 89), INT8_C( -23), INT8_C( 58), INT8_C( -29),
|
|
INT8_C( 110), INT8_C( 57), INT8_C( -39), INT8_C( 1),
|
|
INT8_C( -60), INT8_C( 60), INT8_C( -80), INT8_C( -20)),
|
|
simde_mm256_set_epi8(INT8_C( -60), INT8_C( 69), INT8_C( -69), INT8_C( 107),
|
|
INT8_C( 2), INT8_C( -33), INT8_C( 14), INT8_C( 77),
|
|
INT8_C( 15), INT8_C( 63), INT8_C( 63), INT8_C( -53),
|
|
INT8_C( -9), INT8_C( 76), INT8_C( 7), INT8_C( -76),
|
|
INT8_C( -23), INT8_C(-107), INT8_C( 84), INT8_C( 37),
|
|
INT8_C( -18), INT8_C( 47), INT8_C( 58), INT8_C( 31),
|
|
INT8_C( 69), INT8_C( 12), INT8_C( 46), INT8_C( 101),
|
|
INT8_C( -38), INT8_C( 117), INT8_C(-113), INT8_C( -36)),
|
|
simde_mm256_set_epi8(INT8_C( 15), INT8_C( 1), INT8_C(-106), INT8_C( -60),
|
|
INT8_C( 69), INT8_C( -69), INT8_C( 107), INT8_C( 2),
|
|
INT8_C( -33), INT8_C( 14), INT8_C( 77), INT8_C( 15),
|
|
INT8_C( 63), INT8_C( 63), INT8_C( -53), INT8_C( -9),
|
|
INT8_C( 60), INT8_C( -80), INT8_C( -20), INT8_C( -23),
|
|
INT8_C(-107), INT8_C( 84), INT8_C( 37), INT8_C( -18),
|
|
INT8_C( 47), INT8_C( 58), INT8_C( 31), INT8_C( 69),
|
|
INT8_C( 12), INT8_C( 46), INT8_C( 101), INT8_C( -38)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 13), INT8_C( -32), INT8_C( -51), INT8_C( 49),
|
|
INT8_C( 15), INT8_C( 15), INT8_C( -66), INT8_C( -38),
|
|
INT8_C( 69), INT8_C( 1), INT8_C( -50), INT8_C(-103),
|
|
INT8_C( 72), INT8_C( -87), INT8_C(-104), INT8_C( -58),
|
|
INT8_C( 63), INT8_C(-120), INT8_C( 36), INT8_C( -61),
|
|
INT8_C( 106), INT8_C( 97), INT8_C(-128), INT8_C( 26),
|
|
INT8_C(-121), INT8_C( -27), INT8_C( 107), INT8_C(-112),
|
|
INT8_C( 57), INT8_C( 39), INT8_C( 98), INT8_C( 126)),
|
|
simde_mm256_set_epi8(INT8_C(-110), INT8_C( 50), INT8_C( 102), INT8_C( -85),
|
|
INT8_C( -62), INT8_C( 74), INT8_C( 102), INT8_C( 36),
|
|
INT8_C( -55), INT8_C(-104), INT8_C( 11), INT8_C( -70),
|
|
INT8_C( -20), INT8_C(-104), INT8_C( -37), INT8_C( 122),
|
|
INT8_C( -88), INT8_C( 70), INT8_C( 43), INT8_C( -34),
|
|
INT8_C( 14), INT8_C( 55), INT8_C( -41), INT8_C( 33),
|
|
INT8_C( 53), INT8_C(-102), INT8_C( 56), INT8_C( 26),
|
|
INT8_C( -79), INT8_C( -30), INT8_C( 73), INT8_C( -53)),
|
|
simde_mm256_set_epi8(INT8_C( -87), INT8_C(-104), INT8_C( -58), INT8_C(-110),
|
|
INT8_C( 50), INT8_C( 102), INT8_C( -85), INT8_C( -62),
|
|
INT8_C( 74), INT8_C( 102), INT8_C( 36), INT8_C( -55),
|
|
INT8_C(-104), INT8_C( 11), INT8_C( -70), INT8_C( -20),
|
|
INT8_C( 39), INT8_C( 98), INT8_C( 126), INT8_C( -88),
|
|
INT8_C( 70), INT8_C( 43), INT8_C( -34), INT8_C( 14),
|
|
INT8_C( 55), INT8_C( -41), INT8_C( 33), INT8_C( 53),
|
|
INT8_C(-102), INT8_C( 56), INT8_C( 26), INT8_C( -79)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-103), INT8_C( 23), INT8_C( -90), INT8_C( 43),
|
|
INT8_C( -8), INT8_C( 54), INT8_C( -93), INT8_C( 64),
|
|
INT8_C(-116), INT8_C( -76), INT8_C( -53), INT8_C( 35),
|
|
INT8_C( 51), INT8_C( -86), INT8_C( 8), INT8_C( 43),
|
|
INT8_C( -60), INT8_C(-113), INT8_C( 44), INT8_C(-102),
|
|
INT8_C( 77), INT8_C( 95), INT8_C( 57), INT8_C( 124),
|
|
INT8_C( -91), INT8_C( -87), INT8_C( -54), INT8_C( -83),
|
|
INT8_C( 108), INT8_C( 76), INT8_C( 90), INT8_C( -49)),
|
|
simde_mm256_set_epi8(INT8_C( -43), INT8_C( -5), INT8_C( 94), INT8_C( 76),
|
|
INT8_C( -9), INT8_C( 110), INT8_C( -82), INT8_C( 112),
|
|
INT8_C( -25), INT8_C( 11), INT8_C( -46), INT8_C( -57),
|
|
INT8_C( -13), INT8_C(-127), INT8_C( 10), INT8_C(-113),
|
|
INT8_C( 55), INT8_C( 85), INT8_C( 75), INT8_C( 61),
|
|
INT8_C( 49), INT8_C( -14), INT8_C( 44), INT8_C(-128),
|
|
INT8_C(-102), INT8_C( -17), INT8_C( 64), INT8_C( -73),
|
|
INT8_C( 14), INT8_C( 19), INT8_C( -2), INT8_C( 7)),
|
|
simde_mm256_set_epi8(INT8_C( -86), INT8_C( 8), INT8_C( 43), INT8_C( -43),
|
|
INT8_C( -5), INT8_C( 94), INT8_C( 76), INT8_C( -9),
|
|
INT8_C( 110), INT8_C( -82), INT8_C( 112), INT8_C( -25),
|
|
INT8_C( 11), INT8_C( -46), INT8_C( -57), INT8_C( -13),
|
|
INT8_C( 76), INT8_C( 90), INT8_C( -49), INT8_C( 55),
|
|
INT8_C( 85), INT8_C( 75), INT8_C( 61), INT8_C( 49),
|
|
INT8_C( -14), INT8_C( 44), INT8_C(-128), INT8_C(-102),
|
|
INT8_C( -17), INT8_C( 64), INT8_C( -73), INT8_C( 14)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -32), INT8_C( -82), INT8_C( 79), INT8_C( 79),
|
|
INT8_C( 127), INT8_C( 16), INT8_C(-118), INT8_C( 113),
|
|
INT8_C( -52), INT8_C( -25), INT8_C(-124), INT8_C( -77),
|
|
INT8_C( 114), INT8_C(-118), INT8_C( -84), INT8_C( 73),
|
|
INT8_C( -12), INT8_C( -67), INT8_C(-127), INT8_C( -69),
|
|
INT8_C( 30), INT8_C( 14), INT8_C( -47), INT8_C(-119),
|
|
INT8_C( -36), INT8_C( -97), INT8_C( -89), INT8_C( 24),
|
|
INT8_C( -41), INT8_C( 117), INT8_C(-102), INT8_C( 54)),
|
|
simde_mm256_set_epi8(INT8_C( -66), INT8_C( -50), INT8_C( 39), INT8_C( 30),
|
|
INT8_C( 53), INT8_C( 108), INT8_C( -71), INT8_C( -62),
|
|
INT8_C( 58), INT8_C( -69), INT8_C( -39), INT8_C( -28),
|
|
INT8_C( 58), INT8_C( 54), INT8_C(-117), INT8_C( -49),
|
|
INT8_C( 126), INT8_C( -71), INT8_C( -39), INT8_C(-120),
|
|
INT8_C( 88), INT8_C( 41), INT8_C( 127), INT8_C( 111),
|
|
INT8_C( -32), INT8_C( -18), INT8_C( 12), INT8_C( 97),
|
|
INT8_C( 83), INT8_C( -96), INT8_C( 13), INT8_C(-101)),
|
|
simde_mm256_set_epi8(INT8_C(-118), INT8_C( -84), INT8_C( 73), INT8_C( -66),
|
|
INT8_C( -50), INT8_C( 39), INT8_C( 30), INT8_C( 53),
|
|
INT8_C( 108), INT8_C( -71), INT8_C( -62), INT8_C( 58),
|
|
INT8_C( -69), INT8_C( -39), INT8_C( -28), INT8_C( 58),
|
|
INT8_C( 117), INT8_C(-102), INT8_C( 54), INT8_C( 126),
|
|
INT8_C( -71), INT8_C( -39), INT8_C(-120), INT8_C( 88),
|
|
INT8_C( 41), INT8_C( 127), INT8_C( 111), INT8_C( -32),
|
|
INT8_C( -18), INT8_C( 12), INT8_C( 97), INT8_C( 83)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-105), INT8_C( 9), INT8_C( -52), INT8_C( 54),
|
|
INT8_C( -11), INT8_C( -39), INT8_C( -64), INT8_C( -79),
|
|
INT8_C( 88), INT8_C( 52), INT8_C( -95), INT8_C( -70),
|
|
INT8_C( 46), INT8_C( 121), INT8_C( -22), INT8_C( 113),
|
|
INT8_C( 26), INT8_C( 104), INT8_C( -52), INT8_C( 109),
|
|
INT8_C( 5), INT8_C( 87), INT8_C( 90), INT8_C( -7),
|
|
INT8_C( -35), INT8_C(-112), INT8_C( 20), INT8_C(-128),
|
|
INT8_C( -21), INT8_C( -67), INT8_C( 37), INT8_C( -35)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -23), INT8_C( 45), INT8_C( -38),
|
|
INT8_C( -94), INT8_C( 119), INT8_C( -23), INT8_C( 70),
|
|
INT8_C( -75), INT8_C( 25), INT8_C( 79), INT8_C(-101),
|
|
INT8_C(-122), INT8_C(-107), INT8_C( -10), INT8_C(-109),
|
|
INT8_C( -96), INT8_C( 45), INT8_C( 31), INT8_C( -60),
|
|
INT8_C( 100), INT8_C( 115), INT8_C( 79), INT8_C( 38),
|
|
INT8_C( -35), INT8_C( 57), INT8_C( 13), INT8_C( 93),
|
|
INT8_C( 54), INT8_C( -61), INT8_C( 101), INT8_C(-113)),
|
|
simde_mm256_set_epi8(INT8_C( 121), INT8_C( -22), INT8_C( 113), INT8_C( 66),
|
|
INT8_C( -23), INT8_C( 45), INT8_C( -38), INT8_C( -94),
|
|
INT8_C( 119), INT8_C( -23), INT8_C( 70), INT8_C( -75),
|
|
INT8_C( 25), INT8_C( 79), INT8_C(-101), INT8_C(-122),
|
|
INT8_C( -67), INT8_C( 37), INT8_C( -35), INT8_C( -96),
|
|
INT8_C( 45), INT8_C( 31), INT8_C( -60), INT8_C( 100),
|
|
INT8_C( 115), INT8_C( 79), INT8_C( 38), INT8_C( -35),
|
|
INT8_C( 57), INT8_C( 13), INT8_C( 93), INT8_C( 54)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_alignr_epi8(test_vec[i].a, test_vec[i].b, 3);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_alignr_epi8_case1(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 57), INT8_C( -47), INT8_C( -81), INT8_C( -95),
|
|
INT8_C(-100), INT8_C( -69), INT8_C( -75), INT8_C(-127),
|
|
INT8_C( -8), INT8_C( -83), INT8_C( -94), INT8_C(-113),
|
|
INT8_C( 107), INT8_C( -39), INT8_C( -99), INT8_C( 46),
|
|
INT8_C( -61), INT8_C( -72), INT8_C( -5), INT8_C(-126),
|
|
INT8_C( 113), INT8_C(-120), INT8_C( -9), INT8_C( 117),
|
|
INT8_C( 121), INT8_C( -14), INT8_C( -58), INT8_C(-118),
|
|
INT8_C( -70), INT8_C( -35), INT8_C(-100), INT8_C( 48)),
|
|
simde_mm256_set_epi8(INT8_C( -98), INT8_C( 80), INT8_C( -16), INT8_C( 73),
|
|
INT8_C( 126), INT8_C(-115), INT8_C( 31), INT8_C( 80),
|
|
INT8_C( -75), INT8_C( 117), INT8_C( -13), INT8_C( -70),
|
|
INT8_C(-101), INT8_C( -10), INT8_C(-111), INT8_C( 96),
|
|
INT8_C( -77), INT8_C( 0), INT8_C( 70), INT8_C(-121),
|
|
INT8_C( 78), INT8_C( 54), INT8_C( 38), INT8_C( 18),
|
|
INT8_C( -12), INT8_C( 68), INT8_C( 53), INT8_C( 45),
|
|
INT8_C( 77), INT8_C( 103), INT8_C( 118), INT8_C( 116)),
|
|
simde_mm256_set_epi8(INT8_C( -75), INT8_C(-127), INT8_C( -8), INT8_C( -83),
|
|
INT8_C( -94), INT8_C(-113), INT8_C( 107), INT8_C( -39),
|
|
INT8_C( -99), INT8_C( 46), INT8_C( -98), INT8_C( 80),
|
|
INT8_C( -16), INT8_C( 73), INT8_C( 126), INT8_C(-115),
|
|
INT8_C( -9), INT8_C( 117), INT8_C( 121), INT8_C( -14),
|
|
INT8_C( -58), INT8_C(-118), INT8_C( -70), INT8_C( -35),
|
|
INT8_C(-100), INT8_C( 48), INT8_C( -77), INT8_C( 0),
|
|
INT8_C( 70), INT8_C(-121), INT8_C( 78), INT8_C( 54)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 8), INT8_C( 70), INT8_C( 96), INT8_C( 42),
|
|
INT8_C( 73), INT8_C( -91), INT8_C( -93), INT8_C( -58),
|
|
INT8_C( -35), INT8_C( -14), INT8_C( 118), INT8_C(-128),
|
|
INT8_C( -97), INT8_C( 97), INT8_C( 22), INT8_C( 4),
|
|
INT8_C( 24), INT8_C( 124), INT8_C( -32), INT8_C( -48),
|
|
INT8_C( -74), INT8_C( 95), INT8_C( 95), INT8_C( -38),
|
|
INT8_C( 54), INT8_C( 120), INT8_C( -65), INT8_C( -96),
|
|
INT8_C( -44), INT8_C( -78), INT8_C( -95), INT8_C(-111)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( 48), INT8_C( 60), INT8_C( -4),
|
|
INT8_C( 33), INT8_C( 67), INT8_C( 97), INT8_C( 65),
|
|
INT8_C( 80), INT8_C(-109), INT8_C( 88), INT8_C( -23),
|
|
INT8_C( 107), INT8_C( -65), INT8_C( -65), INT8_C( 62),
|
|
INT8_C( 90), INT8_C( 118), INT8_C( 25), INT8_C( 105),
|
|
INT8_C( 109), INT8_C( -45), INT8_C( 4), INT8_C(-107),
|
|
INT8_C( 55), INT8_C(-101), INT8_C( -65), INT8_C( 121),
|
|
INT8_C( -76), INT8_C( 55), INT8_C( 6), INT8_C( 86)),
|
|
simde_mm256_set_epi8(INT8_C( -93), INT8_C( -58), INT8_C( -35), INT8_C( -14),
|
|
INT8_C( 118), INT8_C(-128), INT8_C( -97), INT8_C( 97),
|
|
INT8_C( 22), INT8_C( 4), INT8_C( 66), INT8_C( 48),
|
|
INT8_C( 60), INT8_C( -4), INT8_C( 33), INT8_C( 67),
|
|
INT8_C( 95), INT8_C( -38), INT8_C( 54), INT8_C( 120),
|
|
INT8_C( -65), INT8_C( -96), INT8_C( -44), INT8_C( -78),
|
|
INT8_C( -95), INT8_C(-111), INT8_C( 90), INT8_C( 118),
|
|
INT8_C( 25), INT8_C( 105), INT8_C( 109), INT8_C( -45)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -1), INT8_C( 93), INT8_C( 114), INT8_C( 49),
|
|
INT8_C( 120), INT8_C( -70), INT8_C(-112), INT8_C( 19),
|
|
INT8_C( 56), INT8_C( -12), INT8_C( -77), INT8_C( -85),
|
|
INT8_C( -59), INT8_C( 80), INT8_C( -47), INT8_C( -28),
|
|
INT8_C( -33), INT8_C( 73), INT8_C( -24), INT8_C(-106),
|
|
INT8_C(-122), INT8_C(-111), INT8_C( -3), INT8_C( 57),
|
|
INT8_C( 67), INT8_C( 107), INT8_C( -68), INT8_C(-101),
|
|
INT8_C( -9), INT8_C( 5), INT8_C(-124), INT8_C( -69)),
|
|
simde_mm256_set_epi8(INT8_C( -67), INT8_C( 65), INT8_C( -72), INT8_C( -90),
|
|
INT8_C( -44), INT8_C( 2), INT8_C( 39), INT8_C( -45),
|
|
INT8_C( 51), INT8_C( -30), INT8_C( -47), INT8_C( 1),
|
|
INT8_C( -91), INT8_C( -40), INT8_C( -73), INT8_C( 33),
|
|
INT8_C(-117), INT8_C( -31), INT8_C(-117), INT8_C( 60),
|
|
INT8_C( -36), INT8_C(-120), INT8_C( -10), INT8_C( -12),
|
|
INT8_C( -25), INT8_C(-103), INT8_C( 48), INT8_C( -50),
|
|
INT8_C( 101), INT8_C( 93), INT8_C( -31), INT8_C( -33)),
|
|
simde_mm256_set_epi8(INT8_C(-112), INT8_C( 19), INT8_C( 56), INT8_C( -12),
|
|
INT8_C( -77), INT8_C( -85), INT8_C( -59), INT8_C( 80),
|
|
INT8_C( -47), INT8_C( -28), INT8_C( -67), INT8_C( 65),
|
|
INT8_C( -72), INT8_C( -90), INT8_C( -44), INT8_C( 2),
|
|
INT8_C( -3), INT8_C( 57), INT8_C( 67), INT8_C( 107),
|
|
INT8_C( -68), INT8_C(-101), INT8_C( -9), INT8_C( 5),
|
|
INT8_C(-124), INT8_C( -69), INT8_C(-117), INT8_C( -31),
|
|
INT8_C(-117), INT8_C( 60), INT8_C( -36), INT8_C(-120)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 114), INT8_C( -28), INT8_C( -81), INT8_C(-126),
|
|
INT8_C(-114), INT8_C( -94), INT8_C(-101), INT8_C( 52),
|
|
INT8_C( 30), INT8_C( 66), INT8_C(-105), INT8_C( 50),
|
|
INT8_C( 48), INT8_C( 15), INT8_C( 1), INT8_C(-106),
|
|
INT8_C( -36), INT8_C( 61), INT8_C( -18), INT8_C( 8),
|
|
INT8_C( 89), INT8_C( -23), INT8_C( 58), INT8_C( -29),
|
|
INT8_C( 110), INT8_C( 57), INT8_C( -39), INT8_C( 1),
|
|
INT8_C( -60), INT8_C( 60), INT8_C( -80), INT8_C( -20)),
|
|
simde_mm256_set_epi8(INT8_C( -60), INT8_C( 69), INT8_C( -69), INT8_C( 107),
|
|
INT8_C( 2), INT8_C( -33), INT8_C( 14), INT8_C( 77),
|
|
INT8_C( 15), INT8_C( 63), INT8_C( 63), INT8_C( -53),
|
|
INT8_C( -9), INT8_C( 76), INT8_C( 7), INT8_C( -76),
|
|
INT8_C( -23), INT8_C(-107), INT8_C( 84), INT8_C( 37),
|
|
INT8_C( -18), INT8_C( 47), INT8_C( 58), INT8_C( 31),
|
|
INT8_C( 69), INT8_C( 12), INT8_C( 46), INT8_C( 101),
|
|
INT8_C( -38), INT8_C( 117), INT8_C(-113), INT8_C( -36)),
|
|
simde_mm256_set_epi8(INT8_C(-101), INT8_C( 52), INT8_C( 30), INT8_C( 66),
|
|
INT8_C(-105), INT8_C( 50), INT8_C( 48), INT8_C( 15),
|
|
INT8_C( 1), INT8_C(-106), INT8_C( -60), INT8_C( 69),
|
|
INT8_C( -69), INT8_C( 107), INT8_C( 2), INT8_C( -33),
|
|
INT8_C( 58), INT8_C( -29), INT8_C( 110), INT8_C( 57),
|
|
INT8_C( -39), INT8_C( 1), INT8_C( -60), INT8_C( 60),
|
|
INT8_C( -80), INT8_C( -20), INT8_C( -23), INT8_C(-107),
|
|
INT8_C( 84), INT8_C( 37), INT8_C( -18), INT8_C( 47)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 13), INT8_C( -32), INT8_C( -51), INT8_C( 49),
|
|
INT8_C( 15), INT8_C( 15), INT8_C( -66), INT8_C( -38),
|
|
INT8_C( 69), INT8_C( 1), INT8_C( -50), INT8_C(-103),
|
|
INT8_C( 72), INT8_C( -87), INT8_C(-104), INT8_C( -58),
|
|
INT8_C( 63), INT8_C(-120), INT8_C( 36), INT8_C( -61),
|
|
INT8_C( 106), INT8_C( 97), INT8_C(-128), INT8_C( 26),
|
|
INT8_C(-121), INT8_C( -27), INT8_C( 107), INT8_C(-112),
|
|
INT8_C( 57), INT8_C( 39), INT8_C( 98), INT8_C( 126)),
|
|
simde_mm256_set_epi8(INT8_C(-110), INT8_C( 50), INT8_C( 102), INT8_C( -85),
|
|
INT8_C( -62), INT8_C( 74), INT8_C( 102), INT8_C( 36),
|
|
INT8_C( -55), INT8_C(-104), INT8_C( 11), INT8_C( -70),
|
|
INT8_C( -20), INT8_C(-104), INT8_C( -37), INT8_C( 122),
|
|
INT8_C( -88), INT8_C( 70), INT8_C( 43), INT8_C( -34),
|
|
INT8_C( 14), INT8_C( 55), INT8_C( -41), INT8_C( 33),
|
|
INT8_C( 53), INT8_C(-102), INT8_C( 56), INT8_C( 26),
|
|
INT8_C( -79), INT8_C( -30), INT8_C( 73), INT8_C( -53)),
|
|
simde_mm256_set_epi8(INT8_C( -66), INT8_C( -38), INT8_C( 69), INT8_C( 1),
|
|
INT8_C( -50), INT8_C(-103), INT8_C( 72), INT8_C( -87),
|
|
INT8_C(-104), INT8_C( -58), INT8_C(-110), INT8_C( 50),
|
|
INT8_C( 102), INT8_C( -85), INT8_C( -62), INT8_C( 74),
|
|
INT8_C(-128), INT8_C( 26), INT8_C(-121), INT8_C( -27),
|
|
INT8_C( 107), INT8_C(-112), INT8_C( 57), INT8_C( 39),
|
|
INT8_C( 98), INT8_C( 126), INT8_C( -88), INT8_C( 70),
|
|
INT8_C( 43), INT8_C( -34), INT8_C( 14), INT8_C( 55)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-103), INT8_C( 23), INT8_C( -90), INT8_C( 43),
|
|
INT8_C( -8), INT8_C( 54), INT8_C( -93), INT8_C( 64),
|
|
INT8_C(-116), INT8_C( -76), INT8_C( -53), INT8_C( 35),
|
|
INT8_C( 51), INT8_C( -86), INT8_C( 8), INT8_C( 43),
|
|
INT8_C( -60), INT8_C(-113), INT8_C( 44), INT8_C(-102),
|
|
INT8_C( 77), INT8_C( 95), INT8_C( 57), INT8_C( 124),
|
|
INT8_C( -91), INT8_C( -87), INT8_C( -54), INT8_C( -83),
|
|
INT8_C( 108), INT8_C( 76), INT8_C( 90), INT8_C( -49)),
|
|
simde_mm256_set_epi8(INT8_C( -43), INT8_C( -5), INT8_C( 94), INT8_C( 76),
|
|
INT8_C( -9), INT8_C( 110), INT8_C( -82), INT8_C( 112),
|
|
INT8_C( -25), INT8_C( 11), INT8_C( -46), INT8_C( -57),
|
|
INT8_C( -13), INT8_C(-127), INT8_C( 10), INT8_C(-113),
|
|
INT8_C( 55), INT8_C( 85), INT8_C( 75), INT8_C( 61),
|
|
INT8_C( 49), INT8_C( -14), INT8_C( 44), INT8_C(-128),
|
|
INT8_C(-102), INT8_C( -17), INT8_C( 64), INT8_C( -73),
|
|
INT8_C( 14), INT8_C( 19), INT8_C( -2), INT8_C( 7)),
|
|
simde_mm256_set_epi8(INT8_C( -93), INT8_C( 64), INT8_C(-116), INT8_C( -76),
|
|
INT8_C( -53), INT8_C( 35), INT8_C( 51), INT8_C( -86),
|
|
INT8_C( 8), INT8_C( 43), INT8_C( -43), INT8_C( -5),
|
|
INT8_C( 94), INT8_C( 76), INT8_C( -9), INT8_C( 110),
|
|
INT8_C( 57), INT8_C( 124), INT8_C( -91), INT8_C( -87),
|
|
INT8_C( -54), INT8_C( -83), INT8_C( 108), INT8_C( 76),
|
|
INT8_C( 90), INT8_C( -49), INT8_C( 55), INT8_C( 85),
|
|
INT8_C( 75), INT8_C( 61), INT8_C( 49), INT8_C( -14)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -32), INT8_C( -82), INT8_C( 79), INT8_C( 79),
|
|
INT8_C( 127), INT8_C( 16), INT8_C(-118), INT8_C( 113),
|
|
INT8_C( -52), INT8_C( -25), INT8_C(-124), INT8_C( -77),
|
|
INT8_C( 114), INT8_C(-118), INT8_C( -84), INT8_C( 73),
|
|
INT8_C( -12), INT8_C( -67), INT8_C(-127), INT8_C( -69),
|
|
INT8_C( 30), INT8_C( 14), INT8_C( -47), INT8_C(-119),
|
|
INT8_C( -36), INT8_C( -97), INT8_C( -89), INT8_C( 24),
|
|
INT8_C( -41), INT8_C( 117), INT8_C(-102), INT8_C( 54)),
|
|
simde_mm256_set_epi8(INT8_C( -66), INT8_C( -50), INT8_C( 39), INT8_C( 30),
|
|
INT8_C( 53), INT8_C( 108), INT8_C( -71), INT8_C( -62),
|
|
INT8_C( 58), INT8_C( -69), INT8_C( -39), INT8_C( -28),
|
|
INT8_C( 58), INT8_C( 54), INT8_C(-117), INT8_C( -49),
|
|
INT8_C( 126), INT8_C( -71), INT8_C( -39), INT8_C(-120),
|
|
INT8_C( 88), INT8_C( 41), INT8_C( 127), INT8_C( 111),
|
|
INT8_C( -32), INT8_C( -18), INT8_C( 12), INT8_C( 97),
|
|
INT8_C( 83), INT8_C( -96), INT8_C( 13), INT8_C(-101)),
|
|
simde_mm256_set_epi8(INT8_C(-118), INT8_C( 113), INT8_C( -52), INT8_C( -25),
|
|
INT8_C(-124), INT8_C( -77), INT8_C( 114), INT8_C(-118),
|
|
INT8_C( -84), INT8_C( 73), INT8_C( -66), INT8_C( -50),
|
|
INT8_C( 39), INT8_C( 30), INT8_C( 53), INT8_C( 108),
|
|
INT8_C( -47), INT8_C(-119), INT8_C( -36), INT8_C( -97),
|
|
INT8_C( -89), INT8_C( 24), INT8_C( -41), INT8_C( 117),
|
|
INT8_C(-102), INT8_C( 54), INT8_C( 126), INT8_C( -71),
|
|
INT8_C( -39), INT8_C(-120), INT8_C( 88), INT8_C( 41)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-105), INT8_C( 9), INT8_C( -52), INT8_C( 54),
|
|
INT8_C( -11), INT8_C( -39), INT8_C( -64), INT8_C( -79),
|
|
INT8_C( 88), INT8_C( 52), INT8_C( -95), INT8_C( -70),
|
|
INT8_C( 46), INT8_C( 121), INT8_C( -22), INT8_C( 113),
|
|
INT8_C( 26), INT8_C( 104), INT8_C( -52), INT8_C( 109),
|
|
INT8_C( 5), INT8_C( 87), INT8_C( 90), INT8_C( -7),
|
|
INT8_C( -35), INT8_C(-112), INT8_C( 20), INT8_C(-128),
|
|
INT8_C( -21), INT8_C( -67), INT8_C( 37), INT8_C( -35)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -23), INT8_C( 45), INT8_C( -38),
|
|
INT8_C( -94), INT8_C( 119), INT8_C( -23), INT8_C( 70),
|
|
INT8_C( -75), INT8_C( 25), INT8_C( 79), INT8_C(-101),
|
|
INT8_C(-122), INT8_C(-107), INT8_C( -10), INT8_C(-109),
|
|
INT8_C( -96), INT8_C( 45), INT8_C( 31), INT8_C( -60),
|
|
INT8_C( 100), INT8_C( 115), INT8_C( 79), INT8_C( 38),
|
|
INT8_C( -35), INT8_C( 57), INT8_C( 13), INT8_C( 93),
|
|
INT8_C( 54), INT8_C( -61), INT8_C( 101), INT8_C(-113)),
|
|
simde_mm256_set_epi8(INT8_C( -64), INT8_C( -79), INT8_C( 88), INT8_C( 52),
|
|
INT8_C( -95), INT8_C( -70), INT8_C( 46), INT8_C( 121),
|
|
INT8_C( -22), INT8_C( 113), INT8_C( 66), INT8_C( -23),
|
|
INT8_C( 45), INT8_C( -38), INT8_C( -94), INT8_C( 119),
|
|
INT8_C( 90), INT8_C( -7), INT8_C( -35), INT8_C(-112),
|
|
INT8_C( 20), INT8_C(-128), INT8_C( -21), INT8_C( -67),
|
|
INT8_C( 37), INT8_C( -35), INT8_C( -96), INT8_C( 45),
|
|
INT8_C( 31), INT8_C( -60), INT8_C( 100), INT8_C( 115)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_alignr_epi8(test_vec[i].a, test_vec[i].b, 10);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_alignr_epi8_case2(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 113), INT8_C( -69), INT8_C( 23), INT8_C( -66),
|
|
INT8_C( 115), INT8_C( -83), INT8_C( -66), INT8_C( -71),
|
|
INT8_C( 28), INT8_C( 74), INT8_C( -4), INT8_C( 16),
|
|
INT8_C( 16), INT8_C( -20), INT8_C( 79), INT8_C( -49),
|
|
INT8_C( 13), INT8_C( 59), INT8_C( -99), INT8_C( 73),
|
|
INT8_C( 19), INT8_C( 31), INT8_C( -64), INT8_C( -94),
|
|
INT8_C( 111), INT8_C( 121), INT8_C( -91), INT8_C( -99),
|
|
INT8_C(-120), INT8_C( 24), INT8_C(-116), INT8_C( -29)),
|
|
simde_mm256_set_epi8(INT8_C( 19), INT8_C( 117), INT8_C( 83), INT8_C( 54),
|
|
INT8_C( -84), INT8_C(-110), INT8_C( 115), INT8_C( 25),
|
|
INT8_C( 122), INT8_C( -20), INT8_C( 49), INT8_C( -87),
|
|
INT8_C( 9), INT8_C( -79), INT8_C( 28), INT8_C( -93),
|
|
INT8_C( -97), INT8_C( 38), INT8_C( 85), INT8_C( -70),
|
|
INT8_C( 96), INT8_C( 7), INT8_C( -55), INT8_C( -8),
|
|
INT8_C( 94), INT8_C( 69), INT8_C( 20), INT8_C( 64),
|
|
INT8_C( 54), INT8_C( 88), INT8_C( -92), INT8_C( -89)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 113), INT8_C( -69), INT8_C( 23),
|
|
INT8_C( -66), INT8_C( 115), INT8_C( -83), INT8_C( -66),
|
|
INT8_C( -71), INT8_C( 28), INT8_C( 74), INT8_C( -4),
|
|
INT8_C( 16), INT8_C( 16), INT8_C( -20), INT8_C( 79),
|
|
INT8_C( 0), INT8_C( 13), INT8_C( 59), INT8_C( -99),
|
|
INT8_C( 73), INT8_C( 19), INT8_C( 31), INT8_C( -64),
|
|
INT8_C( -94), INT8_C( 111), INT8_C( 121), INT8_C( -91),
|
|
INT8_C( -99), INT8_C(-120), INT8_C( 24), INT8_C(-116)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -7), INT8_C( -66), INT8_C(-120), INT8_C( 103),
|
|
INT8_C( -48), INT8_C( -55), INT8_C(-109), INT8_C( 52),
|
|
INT8_C( 103), INT8_C( 30), INT8_C( -21), INT8_C(-107),
|
|
INT8_C( 14), INT8_C( -9), INT8_C( 61), INT8_C(-114),
|
|
INT8_C(-120), INT8_C(-116), INT8_C( -34), INT8_C( -96),
|
|
INT8_C( 124), INT8_C( 29), INT8_C( -49), INT8_C( 74),
|
|
INT8_C( -82), INT8_C( 66), INT8_C( 24), INT8_C( 47),
|
|
INT8_C( -7), INT8_C( -96), INT8_C( 99), INT8_C( -53)),
|
|
simde_mm256_set_epi8(INT8_C( 77), INT8_C( 25), INT8_C( 25), INT8_C( 69),
|
|
INT8_C( -34), INT8_C( 2), INT8_C( 12), INT8_C( -5),
|
|
INT8_C( -49), INT8_C( -58), INT8_C( -38), INT8_C( -80),
|
|
INT8_C( 88), INT8_C( 48), INT8_C( 49), INT8_C( 73),
|
|
INT8_C( 121), INT8_C( 39), INT8_C( -20), INT8_C( 28),
|
|
INT8_C( 121), INT8_C( 0), INT8_C( -34), INT8_C( 24),
|
|
INT8_C( -45), INT8_C(-121), INT8_C( -12), INT8_C( 37),
|
|
INT8_C( 64), INT8_C( 31), INT8_C( 31), INT8_C( 41)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( -7), INT8_C( -66), INT8_C(-120),
|
|
INT8_C( 103), INT8_C( -48), INT8_C( -55), INT8_C(-109),
|
|
INT8_C( 52), INT8_C( 103), INT8_C( 30), INT8_C( -21),
|
|
INT8_C(-107), INT8_C( 14), INT8_C( -9), INT8_C( 61),
|
|
INT8_C( 0), INT8_C(-120), INT8_C(-116), INT8_C( -34),
|
|
INT8_C( -96), INT8_C( 124), INT8_C( 29), INT8_C( -49),
|
|
INT8_C( 74), INT8_C( -82), INT8_C( 66), INT8_C( 24),
|
|
INT8_C( 47), INT8_C( -7), INT8_C( -96), INT8_C( 99)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -1), INT8_C( 20), INT8_C( -95), INT8_C( 112),
|
|
INT8_C( 49), INT8_C(-103), INT8_C( 108), INT8_C( -46),
|
|
INT8_C( -85), INT8_C( -99), INT8_C( 78), INT8_C( 125),
|
|
INT8_C( -66), INT8_C( -37), INT8_C( 94), INT8_C( 112),
|
|
INT8_C(-126), INT8_C( -37), INT8_C(-124), INT8_C( -71),
|
|
INT8_C( -21), INT8_C( -79), INT8_C( -2), INT8_C( 34),
|
|
INT8_C( -56), INT8_C( 22), INT8_C(-102), INT8_C( 53),
|
|
INT8_C( -24), INT8_C( -87), INT8_C( 16), INT8_C( -85)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -80), INT8_C( 10), INT8_C( -95),
|
|
INT8_C( -33), INT8_C( 65), INT8_C(-115), INT8_C( -97),
|
|
INT8_C( -96), INT8_C( 17), INT8_C( 123), INT8_C( -81),
|
|
INT8_C( -25), INT8_C( -92), INT8_C( 110), INT8_C( 74),
|
|
INT8_C( 58), INT8_C( 126), INT8_C( 24), INT8_C( -87),
|
|
INT8_C(-124), INT8_C( -7), INT8_C( -55), INT8_C( 112),
|
|
INT8_C( 10), INT8_C(-117), INT8_C( -16), INT8_C( 34),
|
|
INT8_C( -23), INT8_C( 105), INT8_C( 32), INT8_C(-122)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( -1), INT8_C( 20), INT8_C( -95),
|
|
INT8_C( 112), INT8_C( 49), INT8_C(-103), INT8_C( 108),
|
|
INT8_C( -46), INT8_C( -85), INT8_C( -99), INT8_C( 78),
|
|
INT8_C( 125), INT8_C( -66), INT8_C( -37), INT8_C( 94),
|
|
INT8_C( 0), INT8_C(-126), INT8_C( -37), INT8_C(-124),
|
|
INT8_C( -71), INT8_C( -21), INT8_C( -79), INT8_C( -2),
|
|
INT8_C( 34), INT8_C( -56), INT8_C( 22), INT8_C(-102),
|
|
INT8_C( 53), INT8_C( -24), INT8_C( -87), INT8_C( 16)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 25), INT8_C( -64), INT8_C( 105), INT8_C( -19),
|
|
INT8_C(-100), INT8_C( 119), INT8_C( 53), INT8_C(-128),
|
|
INT8_C( 50), INT8_C(-115), INT8_C( 36), INT8_C( 126),
|
|
INT8_C( 7), INT8_C( -21), INT8_C(-106), INT8_C(-120),
|
|
INT8_C( 127), INT8_C( -66), INT8_C( -1), INT8_C( -93),
|
|
INT8_C( -5), INT8_C( 40), INT8_C( 78), INT8_C(-119),
|
|
INT8_C( 82), INT8_C( -17), INT8_C( 18), INT8_C( 47),
|
|
INT8_C( 8), INT8_C(-108), INT8_C(-114), INT8_C( 65)),
|
|
simde_mm256_set_epi8(INT8_C(-113), INT8_C( 113), INT8_C(-118), INT8_C( -40),
|
|
INT8_C(-102), INT8_C( -62), INT8_C( 64), INT8_C( -33),
|
|
INT8_C( 77), INT8_C( -83), INT8_C( -74), INT8_C( 19),
|
|
INT8_C( 71), INT8_C( 17), INT8_C( -17), INT8_C( -35),
|
|
INT8_C( 93), INT8_C( -41), INT8_C( 11), INT8_C( 0),
|
|
INT8_C( -41), INT8_C( -66), INT8_C( -72), INT8_C( 117),
|
|
INT8_C( 100), INT8_C(-122), INT8_C( 24), INT8_C(-112),
|
|
INT8_C( 87), INT8_C( 37), INT8_C( -17), INT8_C( -51)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 25), INT8_C( -64), INT8_C( 105),
|
|
INT8_C( -19), INT8_C(-100), INT8_C( 119), INT8_C( 53),
|
|
INT8_C(-128), INT8_C( 50), INT8_C(-115), INT8_C( 36),
|
|
INT8_C( 126), INT8_C( 7), INT8_C( -21), INT8_C(-106),
|
|
INT8_C( 0), INT8_C( 127), INT8_C( -66), INT8_C( -1),
|
|
INT8_C( -93), INT8_C( -5), INT8_C( 40), INT8_C( 78),
|
|
INT8_C(-119), INT8_C( 82), INT8_C( -17), INT8_C( 18),
|
|
INT8_C( 47), INT8_C( 8), INT8_C(-108), INT8_C(-114)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -71), INT8_C( 29), INT8_C( -63), INT8_C( -99),
|
|
INT8_C( 16), INT8_C( 67), INT8_C(-118), INT8_C( 12),
|
|
INT8_C( -46), INT8_C( 113), INT8_C(-128), INT8_C(-114),
|
|
INT8_C( -51), INT8_C( -75), INT8_C( 97), INT8_C( -73),
|
|
INT8_C( 24), INT8_C( -63), INT8_C( 20), INT8_C( -26),
|
|
INT8_C( -44), INT8_C( 71), INT8_C( 109), INT8_C( 113),
|
|
INT8_C( 36), INT8_C( 100), INT8_C( 42), INT8_C( -55),
|
|
INT8_C( 12), INT8_C( -66), INT8_C( -91), INT8_C( 82)),
|
|
simde_mm256_set_epi8(INT8_C( 81), INT8_C( 93), INT8_C( 76), INT8_C( 23),
|
|
INT8_C( -32), INT8_C( 31), INT8_C( 25), INT8_C( -76),
|
|
INT8_C( 38), INT8_C( 114), INT8_C( 74), INT8_C( -11),
|
|
INT8_C( 55), INT8_C( -33), INT8_C( -78), INT8_C( -96),
|
|
INT8_C( 106), INT8_C( 1), INT8_C( 32), INT8_C( -46),
|
|
INT8_C( 124), INT8_C( 89), INT8_C( -80), INT8_C( -22),
|
|
INT8_C(-117), INT8_C( -99), INT8_C( -39), INT8_C( -63),
|
|
INT8_C( 12), INT8_C( 106), INT8_C( 120), INT8_C( 64)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( -71), INT8_C( 29), INT8_C( -63),
|
|
INT8_C( -99), INT8_C( 16), INT8_C( 67), INT8_C(-118),
|
|
INT8_C( 12), INT8_C( -46), INT8_C( 113), INT8_C(-128),
|
|
INT8_C(-114), INT8_C( -51), INT8_C( -75), INT8_C( 97),
|
|
INT8_C( 0), INT8_C( 24), INT8_C( -63), INT8_C( 20),
|
|
INT8_C( -26), INT8_C( -44), INT8_C( 71), INT8_C( 109),
|
|
INT8_C( 113), INT8_C( 36), INT8_C( 100), INT8_C( 42),
|
|
INT8_C( -55), INT8_C( 12), INT8_C( -66), INT8_C( -91)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 91), INT8_C( -47), INT8_C( -11), INT8_C( 95),
|
|
INT8_C(-101), INT8_C( 71), INT8_C( -99), INT8_C( 119),
|
|
INT8_C( 53), INT8_C( -40), INT8_C( 93), INT8_C( -71),
|
|
INT8_C( 53), INT8_C( 101), INT8_C( 91), INT8_C( 38),
|
|
INT8_C( 101), INT8_C( 10), INT8_C( 7), INT8_C( 37),
|
|
INT8_C( -66), INT8_C( 4), INT8_C( -96), INT8_C( -47),
|
|
INT8_C( -72), INT8_C(-123), INT8_C( -18), INT8_C( -16),
|
|
INT8_C( 57), INT8_C( -1), INT8_C(-122), INT8_C( 93)),
|
|
simde_mm256_set_epi8(INT8_C( 125), INT8_C( -97), INT8_C( -63), INT8_C( 47),
|
|
INT8_C( 76), INT8_C( -11), INT8_C( 32), INT8_C( 96),
|
|
INT8_C( 121), INT8_C( -93), INT8_C( 72), INT8_C( -40),
|
|
INT8_C( -11), INT8_C( -76), INT8_C( 51), INT8_C(-122),
|
|
INT8_C( 108), INT8_C( -61), INT8_C( -9), INT8_C( -38),
|
|
INT8_C( -65), INT8_C( -53), INT8_C( -36), INT8_C( 43),
|
|
INT8_C( -52), INT8_C( -14), INT8_C( -72), INT8_C( 79),
|
|
INT8_C( 4), INT8_C( 96), INT8_C( -88), INT8_C( 40)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 91), INT8_C( -47), INT8_C( -11),
|
|
INT8_C( 95), INT8_C(-101), INT8_C( 71), INT8_C( -99),
|
|
INT8_C( 119), INT8_C( 53), INT8_C( -40), INT8_C( 93),
|
|
INT8_C( -71), INT8_C( 53), INT8_C( 101), INT8_C( 91),
|
|
INT8_C( 0), INT8_C( 101), INT8_C( 10), INT8_C( 7),
|
|
INT8_C( 37), INT8_C( -66), INT8_C( 4), INT8_C( -96),
|
|
INT8_C( -47), INT8_C( -72), INT8_C(-123), INT8_C( -18),
|
|
INT8_C( -16), INT8_C( 57), INT8_C( -1), INT8_C(-122)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-125), INT8_C( 50), INT8_C( 9), INT8_C(-114),
|
|
INT8_C( 12), INT8_C(-115), INT8_C( 20), INT8_C( -81),
|
|
INT8_C( 65), INT8_C( -9), INT8_C( 1), INT8_C( -7),
|
|
INT8_C( 48), INT8_C( 81), INT8_C( -58), INT8_C( -29),
|
|
INT8_C(-102), INT8_C( 98), INT8_C( 126), INT8_C( 49),
|
|
INT8_C( 95), INT8_C( 45), INT8_C( -60), INT8_C( -92),
|
|
INT8_C( -7), INT8_C( -56), INT8_C( -47), INT8_C( -85),
|
|
INT8_C( -93), INT8_C( 33), INT8_C( -91), INT8_C( -34)),
|
|
simde_mm256_set_epi8(INT8_C( 88), INT8_C( -22), INT8_C( -14), INT8_C( 72),
|
|
INT8_C(-106), INT8_C( -75), INT8_C( -40), INT8_C( -29),
|
|
INT8_C( 71), INT8_C( 52), INT8_C( -19), INT8_C( -85),
|
|
INT8_C( 47), INT8_C( -19), INT8_C( -33), INT8_C( -99),
|
|
INT8_C( -95), INT8_C(-103), INT8_C( 113), INT8_C( 75),
|
|
INT8_C( 16), INT8_C(-125), INT8_C( 51), INT8_C( -20),
|
|
INT8_C( -87), INT8_C( 79), INT8_C( 50), INT8_C( -45),
|
|
INT8_C( -77), INT8_C( -89), INT8_C( 25), INT8_C( -53)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C(-125), INT8_C( 50), INT8_C( 9),
|
|
INT8_C(-114), INT8_C( 12), INT8_C(-115), INT8_C( 20),
|
|
INT8_C( -81), INT8_C( 65), INT8_C( -9), INT8_C( 1),
|
|
INT8_C( -7), INT8_C( 48), INT8_C( 81), INT8_C( -58),
|
|
INT8_C( 0), INT8_C(-102), INT8_C( 98), INT8_C( 126),
|
|
INT8_C( 49), INT8_C( 95), INT8_C( 45), INT8_C( -60),
|
|
INT8_C( -92), INT8_C( -7), INT8_C( -56), INT8_C( -47),
|
|
INT8_C( -85), INT8_C( -93), INT8_C( 33), INT8_C( -91)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 108), INT8_C( -54), INT8_C( 79), INT8_C( -34),
|
|
INT8_C( 79), INT8_C( 114), INT8_C( 95), INT8_C( -13),
|
|
INT8_C( -32), INT8_C( 106), INT8_C( 6), INT8_C(-103),
|
|
INT8_C( -17), INT8_C( 126), INT8_C( -76), INT8_C( 100),
|
|
INT8_C( 103), INT8_C( -73), INT8_C(-120), INT8_C( 89),
|
|
INT8_C( 92), INT8_C( 1), INT8_C( 24), INT8_C( -42),
|
|
INT8_C( -87), INT8_C(-120), INT8_C( -69), INT8_C( 118),
|
|
INT8_C( -71), INT8_C( 35), INT8_C( 31), INT8_C( -27)),
|
|
simde_mm256_set_epi8(INT8_C( 106), INT8_C( 34), INT8_C( -93), INT8_C( -41),
|
|
INT8_C( 92), INT8_C( 50), INT8_C(-109), INT8_C( 24),
|
|
INT8_C( 49), INT8_C( -59), INT8_C( -13), INT8_C( 39),
|
|
INT8_C( 111), INT8_C( -38), INT8_C( 26), INT8_C( -9),
|
|
INT8_C(-106), INT8_C(-118), INT8_C( 104), INT8_C( -38),
|
|
INT8_C( 127), INT8_C( -21), INT8_C( 72), INT8_C(-105),
|
|
INT8_C( 100), INT8_C( 65), INT8_C( 70), INT8_C(-111),
|
|
INT8_C( 93), INT8_C(-113), INT8_C( -69), INT8_C( -81)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 108), INT8_C( -54), INT8_C( 79),
|
|
INT8_C( -34), INT8_C( 79), INT8_C( 114), INT8_C( 95),
|
|
INT8_C( -13), INT8_C( -32), INT8_C( 106), INT8_C( 6),
|
|
INT8_C(-103), INT8_C( -17), INT8_C( 126), INT8_C( -76),
|
|
INT8_C( 0), INT8_C( 103), INT8_C( -73), INT8_C(-120),
|
|
INT8_C( 89), INT8_C( 92), INT8_C( 1), INT8_C( 24),
|
|
INT8_C( -42), INT8_C( -87), INT8_C(-120), INT8_C( -69),
|
|
INT8_C( 118), INT8_C( -71), INT8_C( 35), INT8_C( 31)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_alignr_epi8(test_vec[i].a, test_vec[i].b, 17);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_alignr_epi8_case3(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 57), INT8_C( -47), INT8_C( -81), INT8_C( -95),
|
|
INT8_C(-100), INT8_C( -69), INT8_C( -75), INT8_C(-127),
|
|
INT8_C( -8), INT8_C( -83), INT8_C( -94), INT8_C(-113),
|
|
INT8_C( 107), INT8_C( -39), INT8_C( -99), INT8_C( 46),
|
|
INT8_C( -61), INT8_C( -72), INT8_C( -5), INT8_C(-126),
|
|
INT8_C( 113), INT8_C(-120), INT8_C( -9), INT8_C( 117),
|
|
INT8_C( 121), INT8_C( -14), INT8_C( -58), INT8_C(-118),
|
|
INT8_C( -70), INT8_C( -35), INT8_C(-100), INT8_C( 48)),
|
|
simde_mm256_set_epi8(INT8_C( -98), INT8_C( 80), INT8_C( -16), INT8_C( 73),
|
|
INT8_C( 126), INT8_C(-115), INT8_C( 31), INT8_C( 80),
|
|
INT8_C( -75), INT8_C( 117), INT8_C( -13), INT8_C( -70),
|
|
INT8_C(-101), INT8_C( -10), INT8_C(-111), INT8_C( 96),
|
|
INT8_C( -77), INT8_C( 0), INT8_C( 70), INT8_C(-121),
|
|
INT8_C( 78), INT8_C( 54), INT8_C( 38), INT8_C( 18),
|
|
INT8_C( -12), INT8_C( 68), INT8_C( 53), INT8_C( 45),
|
|
INT8_C( 77), INT8_C( 103), INT8_C( 118), INT8_C( 116)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 57), INT8_C( -47),
|
|
INT8_C( -81), INT8_C( -95), INT8_C(-100), INT8_C( -69),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -61), INT8_C( -72),
|
|
INT8_C( -5), INT8_C(-126), INT8_C( 113), INT8_C(-120)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 8), INT8_C( 70), INT8_C( 96), INT8_C( 42),
|
|
INT8_C( 73), INT8_C( -91), INT8_C( -93), INT8_C( -58),
|
|
INT8_C( -35), INT8_C( -14), INT8_C( 118), INT8_C(-128),
|
|
INT8_C( -97), INT8_C( 97), INT8_C( 22), INT8_C( 4),
|
|
INT8_C( 24), INT8_C( 124), INT8_C( -32), INT8_C( -48),
|
|
INT8_C( -74), INT8_C( 95), INT8_C( 95), INT8_C( -38),
|
|
INT8_C( 54), INT8_C( 120), INT8_C( -65), INT8_C( -96),
|
|
INT8_C( -44), INT8_C( -78), INT8_C( -95), INT8_C(-111)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( 48), INT8_C( 60), INT8_C( -4),
|
|
INT8_C( 33), INT8_C( 67), INT8_C( 97), INT8_C( 65),
|
|
INT8_C( 80), INT8_C(-109), INT8_C( 88), INT8_C( -23),
|
|
INT8_C( 107), INT8_C( -65), INT8_C( -65), INT8_C( 62),
|
|
INT8_C( 90), INT8_C( 118), INT8_C( 25), INT8_C( 105),
|
|
INT8_C( 109), INT8_C( -45), INT8_C( 4), INT8_C(-107),
|
|
INT8_C( 55), INT8_C(-101), INT8_C( -65), INT8_C( 121),
|
|
INT8_C( -76), INT8_C( 55), INT8_C( 6), INT8_C( 86)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 8), INT8_C( 70),
|
|
INT8_C( 96), INT8_C( 42), INT8_C( 73), INT8_C( -91),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 24), INT8_C( 124),
|
|
INT8_C( -32), INT8_C( -48), INT8_C( -74), INT8_C( 95)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -1), INT8_C( 93), INT8_C( 114), INT8_C( 49),
|
|
INT8_C( 120), INT8_C( -70), INT8_C(-112), INT8_C( 19),
|
|
INT8_C( 56), INT8_C( -12), INT8_C( -77), INT8_C( -85),
|
|
INT8_C( -59), INT8_C( 80), INT8_C( -47), INT8_C( -28),
|
|
INT8_C( -33), INT8_C( 73), INT8_C( -24), INT8_C(-106),
|
|
INT8_C(-122), INT8_C(-111), INT8_C( -3), INT8_C( 57),
|
|
INT8_C( 67), INT8_C( 107), INT8_C( -68), INT8_C(-101),
|
|
INT8_C( -9), INT8_C( 5), INT8_C(-124), INT8_C( -69)),
|
|
simde_mm256_set_epi8(INT8_C( -67), INT8_C( 65), INT8_C( -72), INT8_C( -90),
|
|
INT8_C( -44), INT8_C( 2), INT8_C( 39), INT8_C( -45),
|
|
INT8_C( 51), INT8_C( -30), INT8_C( -47), INT8_C( 1),
|
|
INT8_C( -91), INT8_C( -40), INT8_C( -73), INT8_C( 33),
|
|
INT8_C(-117), INT8_C( -31), INT8_C(-117), INT8_C( 60),
|
|
INT8_C( -36), INT8_C(-120), INT8_C( -10), INT8_C( -12),
|
|
INT8_C( -25), INT8_C(-103), INT8_C( 48), INT8_C( -50),
|
|
INT8_C( 101), INT8_C( 93), INT8_C( -31), INT8_C( -33)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( 93),
|
|
INT8_C( 114), INT8_C( 49), INT8_C( 120), INT8_C( -70),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -33), INT8_C( 73),
|
|
INT8_C( -24), INT8_C(-106), INT8_C(-122), INT8_C(-111)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 114), INT8_C( -28), INT8_C( -81), INT8_C(-126),
|
|
INT8_C(-114), INT8_C( -94), INT8_C(-101), INT8_C( 52),
|
|
INT8_C( 30), INT8_C( 66), INT8_C(-105), INT8_C( 50),
|
|
INT8_C( 48), INT8_C( 15), INT8_C( 1), INT8_C(-106),
|
|
INT8_C( -36), INT8_C( 61), INT8_C( -18), INT8_C( 8),
|
|
INT8_C( 89), INT8_C( -23), INT8_C( 58), INT8_C( -29),
|
|
INT8_C( 110), INT8_C( 57), INT8_C( -39), INT8_C( 1),
|
|
INT8_C( -60), INT8_C( 60), INT8_C( -80), INT8_C( -20)),
|
|
simde_mm256_set_epi8(INT8_C( -60), INT8_C( 69), INT8_C( -69), INT8_C( 107),
|
|
INT8_C( 2), INT8_C( -33), INT8_C( 14), INT8_C( 77),
|
|
INT8_C( 15), INT8_C( 63), INT8_C( 63), INT8_C( -53),
|
|
INT8_C( -9), INT8_C( 76), INT8_C( 7), INT8_C( -76),
|
|
INT8_C( -23), INT8_C(-107), INT8_C( 84), INT8_C( 37),
|
|
INT8_C( -18), INT8_C( 47), INT8_C( 58), INT8_C( 31),
|
|
INT8_C( 69), INT8_C( 12), INT8_C( 46), INT8_C( 101),
|
|
INT8_C( -38), INT8_C( 117), INT8_C(-113), INT8_C( -36)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 114), INT8_C( -28),
|
|
INT8_C( -81), INT8_C(-126), INT8_C(-114), INT8_C( -94),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -36), INT8_C( 61),
|
|
INT8_C( -18), INT8_C( 8), INT8_C( 89), INT8_C( -23)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 13), INT8_C( -32), INT8_C( -51), INT8_C( 49),
|
|
INT8_C( 15), INT8_C( 15), INT8_C( -66), INT8_C( -38),
|
|
INT8_C( 69), INT8_C( 1), INT8_C( -50), INT8_C(-103),
|
|
INT8_C( 72), INT8_C( -87), INT8_C(-104), INT8_C( -58),
|
|
INT8_C( 63), INT8_C(-120), INT8_C( 36), INT8_C( -61),
|
|
INT8_C( 106), INT8_C( 97), INT8_C(-128), INT8_C( 26),
|
|
INT8_C(-121), INT8_C( -27), INT8_C( 107), INT8_C(-112),
|
|
INT8_C( 57), INT8_C( 39), INT8_C( 98), INT8_C( 126)),
|
|
simde_mm256_set_epi8(INT8_C(-110), INT8_C( 50), INT8_C( 102), INT8_C( -85),
|
|
INT8_C( -62), INT8_C( 74), INT8_C( 102), INT8_C( 36),
|
|
INT8_C( -55), INT8_C(-104), INT8_C( 11), INT8_C( -70),
|
|
INT8_C( -20), INT8_C(-104), INT8_C( -37), INT8_C( 122),
|
|
INT8_C( -88), INT8_C( 70), INT8_C( 43), INT8_C( -34),
|
|
INT8_C( 14), INT8_C( 55), INT8_C( -41), INT8_C( 33),
|
|
INT8_C( 53), INT8_C(-102), INT8_C( 56), INT8_C( 26),
|
|
INT8_C( -79), INT8_C( -30), INT8_C( 73), INT8_C( -53)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 13), INT8_C( -32),
|
|
INT8_C( -51), INT8_C( 49), INT8_C( 15), INT8_C( 15),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 63), INT8_C(-120),
|
|
INT8_C( 36), INT8_C( -61), INT8_C( 106), INT8_C( 97)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-103), INT8_C( 23), INT8_C( -90), INT8_C( 43),
|
|
INT8_C( -8), INT8_C( 54), INT8_C( -93), INT8_C( 64),
|
|
INT8_C(-116), INT8_C( -76), INT8_C( -53), INT8_C( 35),
|
|
INT8_C( 51), INT8_C( -86), INT8_C( 8), INT8_C( 43),
|
|
INT8_C( -60), INT8_C(-113), INT8_C( 44), INT8_C(-102),
|
|
INT8_C( 77), INT8_C( 95), INT8_C( 57), INT8_C( 124),
|
|
INT8_C( -91), INT8_C( -87), INT8_C( -54), INT8_C( -83),
|
|
INT8_C( 108), INT8_C( 76), INT8_C( 90), INT8_C( -49)),
|
|
simde_mm256_set_epi8(INT8_C( -43), INT8_C( -5), INT8_C( 94), INT8_C( 76),
|
|
INT8_C( -9), INT8_C( 110), INT8_C( -82), INT8_C( 112),
|
|
INT8_C( -25), INT8_C( 11), INT8_C( -46), INT8_C( -57),
|
|
INT8_C( -13), INT8_C(-127), INT8_C( 10), INT8_C(-113),
|
|
INT8_C( 55), INT8_C( 85), INT8_C( 75), INT8_C( 61),
|
|
INT8_C( 49), INT8_C( -14), INT8_C( 44), INT8_C(-128),
|
|
INT8_C(-102), INT8_C( -17), INT8_C( 64), INT8_C( -73),
|
|
INT8_C( 14), INT8_C( 19), INT8_C( -2), INT8_C( 7)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C(-103), INT8_C( 23),
|
|
INT8_C( -90), INT8_C( 43), INT8_C( -8), INT8_C( 54),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -60), INT8_C(-113),
|
|
INT8_C( 44), INT8_C(-102), INT8_C( 77), INT8_C( 95)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -32), INT8_C( -82), INT8_C( 79), INT8_C( 79),
|
|
INT8_C( 127), INT8_C( 16), INT8_C(-118), INT8_C( 113),
|
|
INT8_C( -52), INT8_C( -25), INT8_C(-124), INT8_C( -77),
|
|
INT8_C( 114), INT8_C(-118), INT8_C( -84), INT8_C( 73),
|
|
INT8_C( -12), INT8_C( -67), INT8_C(-127), INT8_C( -69),
|
|
INT8_C( 30), INT8_C( 14), INT8_C( -47), INT8_C(-119),
|
|
INT8_C( -36), INT8_C( -97), INT8_C( -89), INT8_C( 24),
|
|
INT8_C( -41), INT8_C( 117), INT8_C(-102), INT8_C( 54)),
|
|
simde_mm256_set_epi8(INT8_C( -66), INT8_C( -50), INT8_C( 39), INT8_C( 30),
|
|
INT8_C( 53), INT8_C( 108), INT8_C( -71), INT8_C( -62),
|
|
INT8_C( 58), INT8_C( -69), INT8_C( -39), INT8_C( -28),
|
|
INT8_C( 58), INT8_C( 54), INT8_C(-117), INT8_C( -49),
|
|
INT8_C( 126), INT8_C( -71), INT8_C( -39), INT8_C(-120),
|
|
INT8_C( 88), INT8_C( 41), INT8_C( 127), INT8_C( 111),
|
|
INT8_C( -32), INT8_C( -18), INT8_C( 12), INT8_C( 97),
|
|
INT8_C( 83), INT8_C( -96), INT8_C( 13), INT8_C(-101)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -32), INT8_C( -82),
|
|
INT8_C( 79), INT8_C( 79), INT8_C( 127), INT8_C( 16),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -12), INT8_C( -67),
|
|
INT8_C(-127), INT8_C( -69), INT8_C( 30), INT8_C( 14)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-105), INT8_C( 9), INT8_C( -52), INT8_C( 54),
|
|
INT8_C( -11), INT8_C( -39), INT8_C( -64), INT8_C( -79),
|
|
INT8_C( 88), INT8_C( 52), INT8_C( -95), INT8_C( -70),
|
|
INT8_C( 46), INT8_C( 121), INT8_C( -22), INT8_C( 113),
|
|
INT8_C( 26), INT8_C( 104), INT8_C( -52), INT8_C( 109),
|
|
INT8_C( 5), INT8_C( 87), INT8_C( 90), INT8_C( -7),
|
|
INT8_C( -35), INT8_C(-112), INT8_C( 20), INT8_C(-128),
|
|
INT8_C( -21), INT8_C( -67), INT8_C( 37), INT8_C( -35)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -23), INT8_C( 45), INT8_C( -38),
|
|
INT8_C( -94), INT8_C( 119), INT8_C( -23), INT8_C( 70),
|
|
INT8_C( -75), INT8_C( 25), INT8_C( 79), INT8_C(-101),
|
|
INT8_C(-122), INT8_C(-107), INT8_C( -10), INT8_C(-109),
|
|
INT8_C( -96), INT8_C( 45), INT8_C( 31), INT8_C( -60),
|
|
INT8_C( 100), INT8_C( 115), INT8_C( 79), INT8_C( 38),
|
|
INT8_C( -35), INT8_C( 57), INT8_C( 13), INT8_C( 93),
|
|
INT8_C( 54), INT8_C( -61), INT8_C( 101), INT8_C(-113)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C(-105), INT8_C( 9),
|
|
INT8_C( -52), INT8_C( 54), INT8_C( -11), INT8_C( -39),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 26), INT8_C( 104),
|
|
INT8_C( -52), INT8_C( 109), INT8_C( 5), INT8_C( 87)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_alignr_epi8(test_vec[i].a, test_vec[i].b, 26);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_and_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 8722470578646828517), INT64_C( 891261850847437783),
|
|
INT64_C( 8698554819020653857), INT64_C(-7282900013878242954)),
|
|
simde_mm256_set_epi64x(INT64_C(-8128142018056442141), INT64_C( 5559182722028422309),
|
|
INT64_C( 2093267872519066825), INT64_C(-7117023562774970023)),
|
|
simde_mm256_set_epi64x(INT64_C( 648519197013312737), INT64_C( 866420841735143557),
|
|
INT64_C( 1730587322060899329), INT64_C(-7482378910948097712)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-2297219683620407228), INT64_C(-2314825045857877411),
|
|
INT64_C(-2223407797787304327), INT64_C( 5408595704702705619)),
|
|
simde_mm256_set_epi64x(INT64_C( 1902387556947256757), INT64_C(-4636290958455233996),
|
|
INT64_C( -193279292138890017), INT64_C( 2387678637527501964)),
|
|
simde_mm256_set_epi64x(INT64_C( 1867272746704900), INT64_C(-6944527661819330028),
|
|
INT64_C(-2233693047608222631), INT64_C( 72674428659436672)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-8083909718117301567), INT64_C( 11995607010100125),
|
|
INT64_C(-6068617776224060223), INT64_C(-6387203967446836987)),
|
|
simde_mm256_set_epi64x(INT64_C(-8320376883848651160), INT64_C(-4950145821323384534),
|
|
INT64_C(-7969688999974624617), INT64_C( 659904372446782737)),
|
|
simde_mm256_set_epi64x(INT64_C(-8322647438183611840), INT64_C( 2406350531494152),
|
|
INT64_C(-9131628786599059327), INT64_C( 74330855942160641)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-7862557356832127783), INT64_C(-5197238245936512816),
|
|
INT64_C(-1440736387308233171), INT64_C( -422437923560182700)),
|
|
simde_mm256_set_epi64x(INT64_C( 4501573497311276896), INT64_C( 1568099047173454230),
|
|
INT64_C( 6784671475384752865), INT64_C(-5901872067663085826)),
|
|
simde_mm256_set_epi64x(INT64_C( 1324204786773460032), INT64_C( 1568098471546732688),
|
|
INT64_C( 5476791399028365857), INT64_C(-6196932668584612780)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( -83457062575009429), INT64_C(-7222721162513873213),
|
|
INT64_C( 8275972355230696496), INT64_C( 5685146925209815999)),
|
|
simde_mm256_set_epi64x(INT64_C( 7621095561231011691), INT64_C(-1384347240916299959),
|
|
INT64_C( 8784701942784527649), INT64_C(-6329984144489188000)),
|
|
simde_mm256_set_epi64x(INT64_C( 7549018173429252459), INT64_C(-8592431562369268159),
|
|
INT64_C( 8126746635764630560), INT64_C( 586910516468318496)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5973184558080946927), INT64_C(-1786695518880322601),
|
|
INT64_C( 564422817571527071), INT64_C( 4038585732338755869)),
|
|
simde_mm256_set_epi64x(INT64_C(-8901168232869945121), INT64_C( 8118630853720063073),
|
|
INT64_C( -228868271804772649), INT64_C(-6456700929251086932)),
|
|
simde_mm256_set_epi64x(INT64_C( 27024505729917135), INT64_C( 6926573216261613633),
|
|
INT64_C( 346814025888696471), INT64_C( 2306177340255840524)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 4967668340414178010), INT64_C(-2410168209476403592),
|
|
INT64_C(-3019436090811439415), INT64_C(-6965119139859890192)),
|
|
simde_mm256_set_epi64x(INT64_C(-5120337331222163918), INT64_C(-1589564432494918546),
|
|
INT64_C( 5292723257474752308), INT64_C( 2511807878775255697)),
|
|
simde_mm256_set_epi64x(INT64_C( 67729921108361746), INT64_C(-3999169530918599576),
|
|
INT64_C( 4616337787987166720), INT64_C( 167381957966049936)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-6179811667909625694), INT64_C(-2471055444546593648),
|
|
INT64_C( 7540412455883833292), INT64_C( 6654843089135720963)),
|
|
simde_mm256_set_epi64x(INT64_C( -939588147635733509), INT64_C(-1340596046637757449),
|
|
INT64_C(-1662948605324253370), INT64_C( 817158485966988858)),
|
|
simde_mm256_set_epi64x(INT64_C(-6758530821969135454), INT64_C(-3664509346923870064),
|
|
INT64_C( 7540157231680104260), INT64_C( 599541701488411138)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_and_si256(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_andnot_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 1296069903), INT32_C( -401713319), INT32_C( -398512257), INT32_C( 1831595067),
|
|
INT32_C( -79935516), INT32_C(-1180021826), INT32_C( 1322035843), INT32_C( 1532358492)),
|
|
simde_mm256_set_epi32(INT32_C( 1994603249), INT32_C(-1155877896), INT32_C( 1480474617), INT32_C( 1055447888),
|
|
INT32_C( 1247599905), INT32_C( -290225910), INT32_C( -75325456), INT32_C( 1443351725)),
|
|
simde_mm256_set_epi32(INT32_C( 849545968), INT32_C( 319856800), INT32_C( 268439680), INT32_C( 314577728),
|
|
INT32_C( 4233217), INT32_C( 1175552000), INT32_C(-1325263504), INT32_C( 67240097)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 751085853), INT32_C( 464664830), INT32_C( 1171943738), INT32_C( 238039385),
|
|
INT32_C( 447621112), INT32_C( -944668210), INT32_C( -26835475), INT32_C( -497913063)),
|
|
simde_mm256_set_epi32(INT32_C( -346681351), INT32_C( 1057375625), INT32_C(-1640028951), INT32_C( 1365052187),
|
|
INT32_C( 1146265967), INT32_C( -337636497), INT32_C(-2119055512), INT32_C(-1077772260)),
|
|
simde_mm256_set_epi32(INT32_C(-1022228768), INT32_C( 604259585), INT32_C(-1708849983), INT32_C( 1364003330),
|
|
INT32_C( 1146126343), INT32_C( 675287585), INT32_C( 26296832), INT32_C( 494960644)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1652916374), INT32_C( 430611066), INT32_C(-1135996673), INT32_C( 1059116837),
|
|
INT32_C( 642663426), INT32_C(-2076745619), INT32_C(-1526373034), INT32_C(-1938949753)),
|
|
simde_mm256_set_epi32(INT32_C( 21997480), INT32_C( 2006437191), INT32_C(-1106118986), INT32_C( -552923366),
|
|
INT32_C( 1259738142), INT32_C(-1272739174), INT32_C( 256185924), INT32_C( 828965431)),
|
|
simde_mm256_set_epi32(INT32_C( 21636904), INT32_C( 1712669957), INT32_C( 34727424), INT32_C(-1073018854),
|
|
INT32_C( 1225789468), INT32_C( 805341842), INT32_C( 171971072), INT32_C( 822084144)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1850172884), INT32_C( 347371552), INT32_C(-2124471172), INT32_C(-1122146912),
|
|
INT32_C(-2084330368), INT32_C(-1474045155), INT32_C(-1097896595), INT32_C( -157279178)),
|
|
simde_mm256_set_epi32(INT32_C( 1150160686), INT32_C( 1294066543), INT32_C(-1264650397), INT32_C( -958193094),
|
|
INT32_C( 1906124487), INT32_C(-1106662757), INT32_C(-1281709058), INT32_C(-1981986383)),
|
|
simde_mm256_set_epi32(INT32_C( 8915498), INT32_C( 1224835919), INT32_C( 880857859), INT32_C( 1122107930),
|
|
INT32_C( 1880883783), INT32_C( 369631362), INT32_C( 17859218), INT32_C( 157106561)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1083224354), INT32_C(-2047292862), INT32_C(-1063111811), INT32_C( 679392193),
|
|
INT32_C(-1649939198), INT32_C( 165669772), INT32_C(-1686920475), INT32_C( -669365464)),
|
|
simde_mm256_set_epi32(INT32_C( 1910614), INT32_C( 1742547828), INT32_C( 1824050734), INT32_C( 1245292821),
|
|
INT32_C( 1373149632), INT32_C(-1705573089), INT32_C(-2120011139), INT32_C( 1659478998)),
|
|
simde_mm256_set_epi32(INT32_C( 853588), INT32_C( 1644503348), INT32_C( 739822594), INT32_C( 1107363860),
|
|
INT32_C( 1079513280), INT32_C(-1845492717), INT32_C( 8392728), INT32_C( 585212118)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -215087200), INT32_C( 439485206), INT32_C( 52069439), INT32_C( 1985678052),
|
|
INT32_C( 236126003), INT32_C( 1543880509), INT32_C(-1076073317), INT32_C( 911942733)),
|
|
simde_mm256_set_epi32(INT32_C( 289944943), INT32_C( 1791469709), INT32_C(-1356404241), INT32_C(-2084942503),
|
|
INT32_C(-1405988531), INT32_C( 52512230), INT32_C( -191001241), INT32_C( 11336758)),
|
|
simde_mm256_set_epi32(INT32_C( 4206671), INT32_C( 1623566473), INT32_C(-1406899776), INT32_C(-2120202983),
|
|
INT32_C(-1608515508), INT32_C( 52445378), INT32_C( 1073840484), INT32_C( 10803250)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -255265247), INT32_C( 884745637), INT32_C(-1256896434), INT32_C( 1712403469),
|
|
INT32_C(-1168205511), INT32_C( 1417172277), INT32_C( 6510726), INT32_C( 1896753771)),
|
|
simde_mm256_set_epi32(INT32_C( 1154369104), INT32_C( 1355111439), INT32_C( 107073276), INT32_C( 1081379485),
|
|
INT32_C( -791672049), INT32_C(-1430371667), INT32_C( 1251404018), INT32_C( 686255615)),
|
|
simde_mm256_set_epi32(INT32_C( 67502160), INT32_C( 1078024202), INT32_C( 39880368), INT32_C( 6589072),
|
|
INT32_C( 1082130950), INT32_C(-1434058104), INT32_C( 1251254384), INT32_C( 148981140)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1670586553), INT32_C( 1338043318), INT32_C(-2053008274), INT32_C( 1109326069),
|
|
INT32_C( 858036123), INT32_C( 201080868), INT32_C( -768148447), INT32_C( 1651890892)),
|
|
simde_mm256_set_epi32(INT32_C( 1950737481), INT32_C(-1368157265), INT32_C( 504476696), INT32_C(-1751057511),
|
|
INT32_C(-1576762410), INT32_C( 1167387907), INT32_C( 398094763), INT32_C( 1151527447)),
|
|
simde_mm256_set_epi32(INT32_C( 340051008), INT32_C(-1607266295), INT32_C( 437264400), INT32_C(-1784675576),
|
|
INT32_C(-2147483580), INT32_C( 1140894979), INT32_C( 92799370), INT32_C( 75636755)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_andnot_si256(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_adds_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C(-119), INT8_C( -56), INT8_C( 53), INT8_C(-117),
|
|
INT8_C( 25), INT8_C( -8), INT8_C( -23), INT8_C( -22),
|
|
INT8_C( 105), INT8_C( 21), INT8_C( -22), INT8_C(-123),
|
|
INT8_C( -78), INT8_C( 1), INT8_C( 124), INT8_C( 72),
|
|
INT8_C( -56), INT8_C( 100), INT8_C( -58), INT8_C( 52),
|
|
INT8_C( 106), INT8_C(-112), INT8_C( -69), INT8_C(-107),
|
|
INT8_C( 71), INT8_C( -50), INT8_C( 48), INT8_C( -51),
|
|
INT8_C( -22), INT8_C( 119), INT8_C( 38), INT8_C(-116)),
|
|
simde_mm256_set_epi8(INT8_C( -61), INT8_C( 39), INT8_C( 108), INT8_C( 116),
|
|
INT8_C( 8), INT8_C( 57), INT8_C( -68), INT8_C(-111),
|
|
INT8_C( 66), INT8_C(-114), INT8_C( 86), INT8_C( 70),
|
|
INT8_C( 95), INT8_C( 18), INT8_C( 95), INT8_C( 15),
|
|
INT8_C( -45), INT8_C( 91), INT8_C( 47), INT8_C( 120),
|
|
INT8_C(-127), INT8_C( -1), INT8_C( 68), INT8_C(-116),
|
|
INT8_C( 47), INT8_C( 11), INT8_C( -19), INT8_C( -17),
|
|
INT8_C(-114), INT8_C( 40), INT8_C( -43), INT8_C( -57)),
|
|
simde_mm256_set_epi8(INT8_C(-128), INT8_C( -17), INT8_C( 127), INT8_C( -1),
|
|
INT8_C( 33), INT8_C( 49), INT8_C( -91), INT8_C(-128),
|
|
INT8_C( 127), INT8_C( -93), INT8_C( 64), INT8_C( -53),
|
|
INT8_C( 17), INT8_C( 19), INT8_C( 127), INT8_C( 87),
|
|
INT8_C(-101), INT8_C( 127), INT8_C( -11), INT8_C( 127),
|
|
INT8_C( -21), INT8_C(-113), INT8_C( -1), INT8_C(-128),
|
|
INT8_C( 118), INT8_C( -39), INT8_C( 29), INT8_C( -68),
|
|
INT8_C(-128), INT8_C( 127), INT8_C( -5), INT8_C(-128)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 39), INT8_C( 31), INT8_C( -61), INT8_C( -35),
|
|
INT8_C( 33), INT8_C( 40), INT8_C( 126), INT8_C( 109),
|
|
INT8_C( 9), INT8_C( 100), INT8_C(-107), INT8_C( 27),
|
|
INT8_C( -15), INT8_C( 43), INT8_C(-116), INT8_C(-111),
|
|
INT8_C( -44), INT8_C(-120), INT8_C( 17), INT8_C( -18),
|
|
INT8_C( -10), INT8_C( -86), INT8_C( 7), INT8_C( 61),
|
|
INT8_C( -46), INT8_C( -53), INT8_C( -3), INT8_C( 98),
|
|
INT8_C( -75), INT8_C( -98), INT8_C( 77), INT8_C( 102)),
|
|
simde_mm256_set_epi8(INT8_C(-107), INT8_C(-113), INT8_C( 9), INT8_C( 35),
|
|
INT8_C( 62), INT8_C( -77), INT8_C( 0), INT8_C( 9),
|
|
INT8_C( -7), INT8_C( 23), INT8_C( -88), INT8_C( -35),
|
|
INT8_C( 78), INT8_C( 7), INT8_C( 79), INT8_C( -98),
|
|
INT8_C( -54), INT8_C( 87), INT8_C( 123), INT8_C( 91),
|
|
INT8_C( 116), INT8_C( 67), INT8_C( 110), INT8_C( 43),
|
|
INT8_C( -68), INT8_C( -85), INT8_C( -23), INT8_C( -82),
|
|
INT8_C( 66), INT8_C(-119), INT8_C( -51), INT8_C( 79)),
|
|
simde_mm256_set_epi8(INT8_C( -68), INT8_C( -82), INT8_C( -52), INT8_C( 0),
|
|
INT8_C( 95), INT8_C( -37), INT8_C( 126), INT8_C( 118),
|
|
INT8_C( 2), INT8_C( 123), INT8_C(-128), INT8_C( -8),
|
|
INT8_C( 63), INT8_C( 50), INT8_C( -37), INT8_C(-128),
|
|
INT8_C( -98), INT8_C( -33), INT8_C( 127), INT8_C( 73),
|
|
INT8_C( 106), INT8_C( -19), INT8_C( 117), INT8_C( 104),
|
|
INT8_C(-114), INT8_C(-128), INT8_C( -26), INT8_C( 16),
|
|
INT8_C( -9), INT8_C(-128), INT8_C( 26), INT8_C( 127)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -96), INT8_C( -2), INT8_C(-104), INT8_C( 30),
|
|
INT8_C( -98), INT8_C(-110), INT8_C( -27), INT8_C( 8),
|
|
INT8_C( 36), INT8_C( -65), INT8_C( 59), INT8_C( 66),
|
|
INT8_C( -66), INT8_C( -58), INT8_C( 111), INT8_C( 36),
|
|
INT8_C( 35), INT8_C( -4), INT8_C( -85), INT8_C( 66),
|
|
INT8_C( 120), INT8_C( 62), INT8_C( 85), INT8_C( -9),
|
|
INT8_C( -9), INT8_C( -49), INT8_C( 90), INT8_C( -80),
|
|
INT8_C( -89), INT8_C( -62), INT8_C(-127), INT8_C(-100)),
|
|
simde_mm256_set_epi8(INT8_C( -67), INT8_C( 11), INT8_C( -39), INT8_C( 56),
|
|
INT8_C( -35), INT8_C( 114), INT8_C( 34), INT8_C( -29),
|
|
INT8_C( -3), INT8_C( 101), INT8_C( 115), INT8_C( 44),
|
|
INT8_C( 36), INT8_C( -77), INT8_C( 98), INT8_C( 105),
|
|
INT8_C( 91), INT8_C( 26), INT8_C( 9), INT8_C( 8),
|
|
INT8_C( 79), INT8_C( -2), INT8_C( -60), INT8_C( 45),
|
|
INT8_C(-118), INT8_C( -81), INT8_C( 63), INT8_C( -54),
|
|
INT8_C( -51), INT8_C( 41), INT8_C( 33), INT8_C( -19)),
|
|
simde_mm256_set_epi8(INT8_C(-128), INT8_C( 9), INT8_C(-128), INT8_C( 86),
|
|
INT8_C(-128), INT8_C( 4), INT8_C( 7), INT8_C( -21),
|
|
INT8_C( 33), INT8_C( 36), INT8_C( 127), INT8_C( 110),
|
|
INT8_C( -30), INT8_C(-128), INT8_C( 127), INT8_C( 127),
|
|
INT8_C( 126), INT8_C( 22), INT8_C( -76), INT8_C( 74),
|
|
INT8_C( 127), INT8_C( 60), INT8_C( 25), INT8_C( 36),
|
|
INT8_C(-127), INT8_C(-128), INT8_C( 127), INT8_C(-128),
|
|
INT8_C(-128), INT8_C( -21), INT8_C( -94), INT8_C(-119)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -17), INT8_C( -49), INT8_C( 22), INT8_C( -45),
|
|
INT8_C( 54), INT8_C( 22), INT8_C( -24), INT8_C( 117),
|
|
INT8_C( -78), INT8_C( 103), INT8_C(-105), INT8_C( 94),
|
|
INT8_C(-107), INT8_C( 6), INT8_C(-126), INT8_C( 89),
|
|
INT8_C( 17), INT8_C( 8), INT8_C( 15), INT8_C( -34),
|
|
INT8_C( 29), INT8_C( 90), INT8_C( 96), INT8_C( -78),
|
|
INT8_C( -87), INT8_C( -25), INT8_C( 62), INT8_C( 48),
|
|
INT8_C(-125), INT8_C( -71), INT8_C( -72), INT8_C( 85)),
|
|
simde_mm256_set_epi8(INT8_C( -54), INT8_C( 53), INT8_C( -73), INT8_C( -38),
|
|
INT8_C(-124), INT8_C( 23), INT8_C( 96), INT8_C( -55),
|
|
INT8_C( 34), INT8_C( 108), INT8_C( -62), INT8_C(-104),
|
|
INT8_C( 81), INT8_C( -26), INT8_C( -9), INT8_C( -47),
|
|
INT8_C( -73), INT8_C( 27), INT8_C( -45), INT8_C(-119),
|
|
INT8_C(-120), INT8_C(-121), INT8_C( 67), INT8_C( -46),
|
|
INT8_C( 17), INT8_C( 101), INT8_C( 16), INT8_C(-101),
|
|
INT8_C( -58), INT8_C( 77), INT8_C( -17), INT8_C( -35)),
|
|
simde_mm256_set_epi8(INT8_C( -71), INT8_C( 4), INT8_C( -51), INT8_C( -83),
|
|
INT8_C( -70), INT8_C( 45), INT8_C( 72), INT8_C( 62),
|
|
INT8_C( -44), INT8_C( 127), INT8_C(-128), INT8_C( -10),
|
|
INT8_C( -26), INT8_C( -20), INT8_C(-128), INT8_C( 42),
|
|
INT8_C( -56), INT8_C( 35), INT8_C( -30), INT8_C(-128),
|
|
INT8_C( -91), INT8_C( -31), INT8_C( 127), INT8_C(-124),
|
|
INT8_C( -70), INT8_C( 76), INT8_C( 78), INT8_C( -53),
|
|
INT8_C(-128), INT8_C( 6), INT8_C( -89), INT8_C( 50)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 99), INT8_C( 94), INT8_C( -71), INT8_C( 34),
|
|
INT8_C(-112), INT8_C( 96), INT8_C( -20), INT8_C( -14),
|
|
INT8_C( 85), INT8_C( 101), INT8_C(-125), INT8_C( -64),
|
|
INT8_C( 54), INT8_C( -63), INT8_C( -68), INT8_C( -91),
|
|
INT8_C( 62), INT8_C( -51), INT8_C( 27), INT8_C( 22),
|
|
INT8_C( -58), INT8_C( 12), INT8_C( 9), INT8_C( -36),
|
|
INT8_C( 40), INT8_C( -72), INT8_C( -90), INT8_C( -3),
|
|
INT8_C( -94), INT8_C( -54), INT8_C( 87), INT8_C( -43)),
|
|
simde_mm256_set_epi8(INT8_C( 99), INT8_C( -12), INT8_C( 40), INT8_C( -99),
|
|
INT8_C( 48), INT8_C(-109), INT8_C( 57), INT8_C( 112),
|
|
INT8_C( -67), INT8_C( -21), INT8_C( 14), INT8_C( 22),
|
|
INT8_C( -61), INT8_C( -64), INT8_C( 99), INT8_C( -14),
|
|
INT8_C( 121), INT8_C( 116), INT8_C( 125), INT8_C( -80),
|
|
INT8_C( -90), INT8_C( -41), INT8_C( 82), INT8_C( 106),
|
|
INT8_C( -62), INT8_C( -13), INT8_C( -52), INT8_C( -14),
|
|
INT8_C( -76), INT8_C(-109), INT8_C( 112), INT8_C( -92)),
|
|
simde_mm256_set_epi8(INT8_C( 127), INT8_C( 82), INT8_C( -31), INT8_C( -65),
|
|
INT8_C( -64), INT8_C( -13), INT8_C( 37), INT8_C( 98),
|
|
INT8_C( 18), INT8_C( 80), INT8_C(-111), INT8_C( -42),
|
|
INT8_C( -7), INT8_C(-127), INT8_C( 31), INT8_C(-105),
|
|
INT8_C( 127), INT8_C( 65), INT8_C( 127), INT8_C( -58),
|
|
INT8_C(-128), INT8_C( -29), INT8_C( 91), INT8_C( 70),
|
|
INT8_C( -22), INT8_C( -85), INT8_C(-128), INT8_C( -17),
|
|
INT8_C(-128), INT8_C(-128), INT8_C( 127), INT8_C(-128)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -49), INT8_C( 105), INT8_C(-105), INT8_C( 27),
|
|
INT8_C( -85), INT8_C( 38), INT8_C(-122), INT8_C( 31),
|
|
INT8_C( -23), INT8_C( 94), INT8_C( 33), INT8_C( 112),
|
|
INT8_C( 117), INT8_C( 95), INT8_C( 107), INT8_C( -60),
|
|
INT8_C( 41), INT8_C( -75), INT8_C( 112), INT8_C(-110),
|
|
INT8_C( 101), INT8_C( -13), INT8_C( 127), INT8_C( -84),
|
|
INT8_C( -84), INT8_C( -70), INT8_C( -49), INT8_C( 84),
|
|
INT8_C( -1), INT8_C( -17), INT8_C( -2), INT8_C( 84)),
|
|
simde_mm256_set_epi8(INT8_C(-108), INT8_C( 63), INT8_C( 104), INT8_C( -9),
|
|
INT8_C( 74), INT8_C( 114), INT8_C( -61), INT8_C( 39),
|
|
INT8_C( 15), INT8_C( 6), INT8_C( 41), INT8_C( 125),
|
|
INT8_C( 96), INT8_C( -39), INT8_C( -42), INT8_C( 75),
|
|
INT8_C( -60), INT8_C( 18), INT8_C(-100), INT8_C( -10),
|
|
INT8_C( -33), INT8_C( -88), INT8_C( -36), INT8_C( 79),
|
|
INT8_C( 49), INT8_C( 63), INT8_C( -18), INT8_C( -83),
|
|
INT8_C( 44), INT8_C( 75), INT8_C( -17), INT8_C( -9)),
|
|
simde_mm256_set_epi8(INT8_C(-128), INT8_C( 127), INT8_C( -1), INT8_C( 18),
|
|
INT8_C( -11), INT8_C( 127), INT8_C(-128), INT8_C( 70),
|
|
INT8_C( -8), INT8_C( 100), INT8_C( 74), INT8_C( 127),
|
|
INT8_C( 127), INT8_C( 56), INT8_C( 65), INT8_C( 15),
|
|
INT8_C( -19), INT8_C( -57), INT8_C( 12), INT8_C(-120),
|
|
INT8_C( 68), INT8_C(-101), INT8_C( 91), INT8_C( -5),
|
|
INT8_C( -35), INT8_C( -7), INT8_C( -67), INT8_C( 1),
|
|
INT8_C( 43), INT8_C( 58), INT8_C( -19), INT8_C( 75)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -41), INT8_C( -94), INT8_C( 69), INT8_C( 109),
|
|
INT8_C(-102), INT8_C( 64), INT8_C( 116), INT8_C( 22),
|
|
INT8_C( -63), INT8_C( 76), INT8_C( -59), INT8_C( -94),
|
|
INT8_C( 69), INT8_C( 1), INT8_C( -30), INT8_C( 101),
|
|
INT8_C( 121), INT8_C( 10), INT8_C( -82), INT8_C( -33),
|
|
INT8_C( -83), INT8_C( -50), INT8_C(-111), INT8_C( -72),
|
|
INT8_C( 42), INT8_C(-125), INT8_C(-128), INT8_C( -8),
|
|
INT8_C( 27), INT8_C( -93), INT8_C(-126), INT8_C( -77)),
|
|
simde_mm256_set_epi8(INT8_C( -9), INT8_C( -48), INT8_C( 73), INT8_C( 31),
|
|
INT8_C( 127), INT8_C( 88), INT8_C( 20), INT8_C( -82),
|
|
INT8_C( -19), INT8_C( 3), INT8_C( 83), INT8_C( 114),
|
|
INT8_C( 1), INT8_C( 31), INT8_C( 44), INT8_C( 5),
|
|
INT8_C( -63), INT8_C( -96), INT8_C( 2), INT8_C(-126),
|
|
INT8_C( 96), INT8_C( -97), INT8_C( -87), INT8_C( -40),
|
|
INT8_C(-112), INT8_C( 92), INT8_C( -98), INT8_C( -50),
|
|
INT8_C( 63), INT8_C( -57), INT8_C( 24), INT8_C( -21)),
|
|
simde_mm256_set_epi8(INT8_C( -50), INT8_C(-128), INT8_C( 127), INT8_C( 127),
|
|
INT8_C( 25), INT8_C( 127), INT8_C( 127), INT8_C( -60),
|
|
INT8_C( -82), INT8_C( 79), INT8_C( 24), INT8_C( 20),
|
|
INT8_C( 70), INT8_C( 32), INT8_C( 14), INT8_C( 106),
|
|
INT8_C( 58), INT8_C( -86), INT8_C( -80), INT8_C(-128),
|
|
INT8_C( 13), INT8_C(-128), INT8_C(-128), INT8_C(-112),
|
|
INT8_C( -70), INT8_C( -33), INT8_C(-128), INT8_C( -58),
|
|
INT8_C( 90), INT8_C(-128), INT8_C(-102), INT8_C( -98)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 59), INT8_C( -47), INT8_C( -6), INT8_C( 114),
|
|
INT8_C( 104), INT8_C( 53), INT8_C(-112), INT8_C( 19),
|
|
INT8_C( 115), INT8_C( 22), INT8_C( 66), INT8_C( 27),
|
|
INT8_C( -25), INT8_C( -41), INT8_C(-111), INT8_C( 115),
|
|
INT8_C( -21), INT8_C( -32), INT8_C( -5), INT8_C( 11),
|
|
INT8_C( -6), INT8_C( 110), INT8_C( -89), INT8_C( -64),
|
|
INT8_C(-104), INT8_C( 74), INT8_C( -29), INT8_C( 87),
|
|
INT8_C( -8), INT8_C( 96), INT8_C( 5), INT8_C( 122)),
|
|
simde_mm256_set_epi8(INT8_C( 43), INT8_C( 18), INT8_C( 50), INT8_C(-115),
|
|
INT8_C( 38), INT8_C( -78), INT8_C( -51), INT8_C( 97),
|
|
INT8_C( 30), INT8_C( 7), INT8_C( -46), INT8_C( -16),
|
|
INT8_C( 109), INT8_C(-103), INT8_C( -61), INT8_C( 64),
|
|
INT8_C( 60), INT8_C( -63), INT8_C( -52), INT8_C( -15),
|
|
INT8_C( 104), INT8_C( 105), INT8_C( 61), INT8_C( 106),
|
|
INT8_C( -66), INT8_C( 111), INT8_C( -25), INT8_C( 24),
|
|
INT8_C( 28), INT8_C( 102), INT8_C( 8), INT8_C( 93)),
|
|
simde_mm256_set_epi8(INT8_C( 102), INT8_C( -29), INT8_C( 44), INT8_C( -1),
|
|
INT8_C( 127), INT8_C( -25), INT8_C(-128), INT8_C( 116),
|
|
INT8_C( 127), INT8_C( 29), INT8_C( 20), INT8_C( 11),
|
|
INT8_C( 84), INT8_C(-128), INT8_C(-128), INT8_C( 127),
|
|
INT8_C( 39), INT8_C( -95), INT8_C( -57), INT8_C( -4),
|
|
INT8_C( 98), INT8_C( 127), INT8_C( -28), INT8_C( 42),
|
|
INT8_C(-128), INT8_C( 127), INT8_C( -54), INT8_C( 111),
|
|
INT8_C( 20), INT8_C( 127), INT8_C( 13), INT8_C( 127)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_adds_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_adds_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( -962), INT16_C( 12004), INT16_C( 15276), INT16_C( 19344),
|
|
INT16_C( 1682), INT16_C( 24393), INT16_C(-26791), INT16_C( 15115),
|
|
INT16_C( 26019), INT16_C(-25175), INT16_C(-17857), INT16_C( 29245),
|
|
INT16_C( -3095), INT16_C( -1043), INT16_C( 8684), INT16_C( -4510)),
|
|
simde_mm256_set_epi16(INT16_C( 1387), INT16_C( 5995), INT16_C( 24092), INT16_C(-22020),
|
|
INT16_C( 17334), INT16_C(-21406), INT16_C( 5443), INT16_C( -4682),
|
|
INT16_C( 19873), INT16_C(-31638), INT16_C( 16556), INT16_C(-22745),
|
|
INT16_C( 6086), INT16_C(-26599), INT16_C(-32635), INT16_C( 18742)),
|
|
simde_mm256_set_epi16(INT16_C( 425), INT16_C( 17999), INT16_C( 32767), INT16_C( -2676),
|
|
INT16_C( 19016), INT16_C( 2987), INT16_C(-21348), INT16_C( 10433),
|
|
INT16_C( 32767), INT16_C(-32768), INT16_C( -1301), INT16_C( 6500),
|
|
INT16_C( 2991), INT16_C(-27642), INT16_C(-23951), INT16_C( 14232)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-15667), INT16_C( -4604), INT16_C( -1424), INT16_C( 14196),
|
|
INT16_C( -3271), INT16_C(-28350), INT16_C( 32228), INT16_C(-15812),
|
|
INT16_C( -3284), INT16_C( -332), INT16_C(-21864), INT16_C(-23002),
|
|
INT16_C( 15429), INT16_C( 22829), INT16_C( -2222), INT16_C( 22367)),
|
|
simde_mm256_set_epi16(INT16_C( 2292), INT16_C( 20266), INT16_C( 19204), INT16_C(-18548),
|
|
INT16_C(-10545), INT16_C( 20262), INT16_C( 18576), INT16_C( 18942),
|
|
INT16_C( 30300), INT16_C( -3505), INT16_C( 25496), INT16_C(-21517),
|
|
INT16_C( 23044), INT16_C( 26958), INT16_C( 16161), INT16_C( -8396)),
|
|
simde_mm256_set_epi16(INT16_C(-13375), INT16_C( 15662), INT16_C( 17780), INT16_C( -4352),
|
|
INT16_C(-13816), INT16_C( -8088), INT16_C( 32767), INT16_C( 3130),
|
|
INT16_C( 27016), INT16_C( -3837), INT16_C( 3632), INT16_C(-32768),
|
|
INT16_C( 32767), INT16_C( 32767), INT16_C( 13939), INT16_C( 13971)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-13807), INT16_C(-17934), INT16_C( 30355), INT16_C( -764),
|
|
INT16_C( -4690), INT16_C( 11643), INT16_C( 12025), INT16_C( 13748),
|
|
INT16_C( 20416), INT16_C(-20138), INT16_C( -7279), INT16_C(-10075),
|
|
INT16_C( 30794), INT16_C( -8219), INT16_C( 7665), INT16_C( 31634)),
|
|
simde_mm256_set_epi16(INT16_C( 19174), INT16_C( 30134), INT16_C( -229), INT16_C( 19963),
|
|
INT16_C( -2304), INT16_C( 30679), INT16_C( 27179), INT16_C(-10745),
|
|
INT16_C(-27839), INT16_C( -4281), INT16_C( 23775), INT16_C( -9849),
|
|
INT16_C(-26461), INT16_C(-25537), INT16_C( -6859), INT16_C(-14106)),
|
|
simde_mm256_set_epi16(INT16_C( 5367), INT16_C( 12200), INT16_C( 30126), INT16_C( 19199),
|
|
INT16_C( -6994), INT16_C( 32767), INT16_C( 32767), INT16_C( 3003),
|
|
INT16_C( -7423), INT16_C(-24419), INT16_C( 16496), INT16_C(-19924),
|
|
INT16_C( 4333), INT16_C(-32768), INT16_C( 806), INT16_C( 17528)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -5643), INT16_C( 16549), INT16_C( 27397), INT16_C(-21486),
|
|
INT16_C( -4783), INT16_C( -4255), INT16_C( -9777), INT16_C( -2005),
|
|
INT16_C( -5487), INT16_C( 4410), INT16_C( 9721), INT16_C(-18951),
|
|
INT16_C( 27380), INT16_C( 27675), INT16_C(-18193), INT16_C( -8216)),
|
|
simde_mm256_set_epi16(INT16_C( 3093), INT16_C(-27399), INT16_C( 25399), INT16_C( 21162),
|
|
INT16_C(-20342), INT16_C(-26357), INT16_C( 20961), INT16_C(-29046),
|
|
INT16_C(-12304), INT16_C(-23482), INT16_C( 31742), INT16_C( 26191),
|
|
INT16_C( 32539), INT16_C( 28035), INT16_C( -8379), INT16_C( 32320)),
|
|
simde_mm256_set_epi16(INT16_C( -2550), INT16_C(-10850), INT16_C( 32767), INT16_C( -324),
|
|
INT16_C(-25125), INT16_C(-30612), INT16_C( 11184), INT16_C(-31051),
|
|
INT16_C(-17791), INT16_C(-19072), INT16_C( 32767), INT16_C( 7240),
|
|
INT16_C( 32767), INT16_C( 32767), INT16_C(-26572), INT16_C( 24104)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 8117), INT16_C( 765), INT16_C( -4891), INT16_C( -1773),
|
|
INT16_C( 21984), INT16_C( 23512), INT16_C( 8564), INT16_C( 676),
|
|
INT16_C(-22280), INT16_C( 5831), INT16_C(-15902), INT16_C( 13241),
|
|
INT16_C( 6903), INT16_C( -2164), INT16_C(-27428), INT16_C(-27012)),
|
|
simde_mm256_set_epi16(INT16_C( 12023), INT16_C(-19040), INT16_C( 31146), INT16_C(-18380),
|
|
INT16_C(-24072), INT16_C( 14767), INT16_C( 22843), INT16_C( -2924),
|
|
INT16_C( -5044), INT16_C(-32368), INT16_C( 21585), INT16_C( -7796),
|
|
INT16_C( 32151), INT16_C( 8315), INT16_C( 19587), INT16_C(-17957)),
|
|
simde_mm256_set_epi16(INT16_C( 20140), INT16_C(-18275), INT16_C( 26255), INT16_C(-20153),
|
|
INT16_C( -2088), INT16_C( 32767), INT16_C( 31407), INT16_C( -2248),
|
|
INT16_C(-27324), INT16_C(-26537), INT16_C( 5683), INT16_C( 5445),
|
|
INT16_C( 32767), INT16_C( 6151), INT16_C( -7841), INT16_C(-32768)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-15432), INT16_C(-29555), INT16_C(-22086), INT16_C(-23352),
|
|
INT16_C(-24272), INT16_C( 28442), INT16_C( -6183), INT16_C( 20311),
|
|
INT16_C(-15448), INT16_C(-31565), INT16_C(-17613), INT16_C( -1655),
|
|
INT16_C( -3795), INT16_C( 27576), INT16_C(-23497), INT16_C( -9670)),
|
|
simde_mm256_set_epi16(INT16_C(-16830), INT16_C( -159), INT16_C(-22301), INT16_C(-32198),
|
|
INT16_C( 2834), INT16_C( 201), INT16_C(-29264), INT16_C( -1240),
|
|
INT16_C( 4796), INT16_C(-27180), INT16_C( 31617), INT16_C( -2210),
|
|
INT16_C( -9712), INT16_C( 10057), INT16_C( -1995), INT16_C( 27783)),
|
|
simde_mm256_set_epi16(INT16_C(-32262), INT16_C(-29714), INT16_C(-32768), INT16_C(-32768),
|
|
INT16_C(-21438), INT16_C( 28643), INT16_C(-32768), INT16_C( 19071),
|
|
INT16_C(-10652), INT16_C(-32768), INT16_C( 14004), INT16_C( -3865),
|
|
INT16_C(-13507), INT16_C( 32767), INT16_C(-25492), INT16_C( 18113)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-15154), INT16_C( 9051), INT16_C( 6258), INT16_C( -1499),
|
|
INT16_C(-27693), INT16_C( -8500), INT16_C( -882), INT16_C( 9147),
|
|
INT16_C( 22175), INT16_C( 10790), INT16_C(-10382), INT16_C( 21347),
|
|
INT16_C( -8836), INT16_C(-17904), INT16_C(-31823), INT16_C(-28959)),
|
|
simde_mm256_set_epi16(INT16_C( 31738), INT16_C( 18200), INT16_C(-12479), INT16_C( 972),
|
|
INT16_C(-30550), INT16_C(-19770), INT16_C( 32501), INT16_C( -4294),
|
|
INT16_C(-22747), INT16_C(-27490), INT16_C(-20241), INT16_C(-31535),
|
|
INT16_C(-31518), INT16_C(-18415), INT16_C( 12039), INT16_C(-31202)),
|
|
simde_mm256_set_epi16(INT16_C( 16584), INT16_C( 27251), INT16_C( -6221), INT16_C( -527),
|
|
INT16_C(-32768), INT16_C(-28270), INT16_C( 31619), INT16_C( 4853),
|
|
INT16_C( -572), INT16_C(-16700), INT16_C(-30623), INT16_C(-10188),
|
|
INT16_C(-32768), INT16_C(-32768), INT16_C(-19784), INT16_C(-32768)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-23218), INT16_C(-16504), INT16_C(-28974), INT16_C(-20854),
|
|
INT16_C( 27922), INT16_C( 717), INT16_C(-10156), INT16_C( 13317),
|
|
INT16_C( 12071), INT16_C(-29036), INT16_C( 16491), INT16_C( 6863),
|
|
INT16_C( 3054), INT16_C( -8502), INT16_C(-19858), INT16_C(-20664)),
|
|
simde_mm256_set_epi16(INT16_C(-22864), INT16_C(-13701), INT16_C( -9243), INT16_C( -4457),
|
|
INT16_C( 16105), INT16_C( 3518), INT16_C(-11607), INT16_C(-19946),
|
|
INT16_C( 5641), INT16_C( 8617), INT16_C(-22446), INT16_C( 2151),
|
|
INT16_C( 16533), INT16_C(-18326), INT16_C( 16839), INT16_C( 26518)),
|
|
simde_mm256_set_epi16(INT16_C(-32768), INT16_C(-30205), INT16_C(-32768), INT16_C(-25311),
|
|
INT16_C( 32767), INT16_C( 4235), INT16_C(-21763), INT16_C( -6629),
|
|
INT16_C( 17712), INT16_C(-20419), INT16_C( -5955), INT16_C( 9014),
|
|
INT16_C( 19587), INT16_C(-26828), INT16_C( -3019), INT16_C( 5854)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_adds_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_adds_epu8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu8(UINT8_C(253), UINT8_C(134), UINT8_C(240), UINT8_C(121),
|
|
UINT8_C(194), UINT8_C( 6), UINT8_C( 90), UINT8_C(185),
|
|
UINT8_C( 52), UINT8_C(188), UINT8_C(255), UINT8_C(213),
|
|
UINT8_C( 70), UINT8_C(140), UINT8_C( 59), UINT8_C(206),
|
|
UINT8_C( 91), UINT8_C( 56), UINT8_C(139), UINT8_C( 19),
|
|
UINT8_C( 62), UINT8_C( 91), UINT8_C( 24), UINT8_C( 86),
|
|
UINT8_C(156), UINT8_C( 89), UINT8_C( 98), UINT8_C(113),
|
|
UINT8_C(237), UINT8_C( 2), UINT8_C(237), UINT8_C(177)),
|
|
simde_x_mm256_set_epu8(UINT8_C(213), UINT8_C( 63), UINT8_C( 15), UINT8_C(166),
|
|
UINT8_C( 63), UINT8_C(196), UINT8_C(141), UINT8_C(108),
|
|
UINT8_C( 47), UINT8_C(216), UINT8_C( 17), UINT8_C(218),
|
|
UINT8_C(111), UINT8_C(130), UINT8_C( 1), UINT8_C(159),
|
|
UINT8_C( 50), UINT8_C(145), UINT8_C(171), UINT8_C( 70),
|
|
UINT8_C( 84), UINT8_C(160), UINT8_C(222), UINT8_C(215),
|
|
UINT8_C( 44), UINT8_C(139), UINT8_C( 68), UINT8_C( 49),
|
|
UINT8_C(218), UINT8_C( 62), UINT8_C(151), UINT8_C(225)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(197), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(202), UINT8_C(231), UINT8_C(255),
|
|
UINT8_C( 99), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(181), UINT8_C(255), UINT8_C( 60), UINT8_C(255),
|
|
UINT8_C(141), UINT8_C(201), UINT8_C(255), UINT8_C( 89),
|
|
UINT8_C(146), UINT8_C(251), UINT8_C(246), UINT8_C(255),
|
|
UINT8_C(200), UINT8_C(228), UINT8_C(166), UINT8_C(162),
|
|
UINT8_C(255), UINT8_C( 64), UINT8_C(255), UINT8_C(255)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 46), UINT8_C( 60), UINT8_C( 83), UINT8_C( 69),
|
|
UINT8_C( 75), UINT8_C( 52), UINT8_C(182), UINT8_C( 56),
|
|
UINT8_C( 10), UINT8_C(180), UINT8_C(245), UINT8_C(208),
|
|
UINT8_C(165), UINT8_C( 77), UINT8_C(214), UINT8_C(172),
|
|
UINT8_C( 90), UINT8_C( 10), UINT8_C(190), UINT8_C(204),
|
|
UINT8_C(174), UINT8_C(200), UINT8_C( 75), UINT8_C(188),
|
|
UINT8_C(215), UINT8_C( 51), UINT8_C(188), UINT8_C( 47),
|
|
UINT8_C( 17), UINT8_C(116), UINT8_C(116), UINT8_C(103)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 76), UINT8_C( 23), UINT8_C( 40), UINT8_C( 7),
|
|
UINT8_C( 32), UINT8_C(238), UINT8_C(187), UINT8_C( 34),
|
|
UINT8_C(130), UINT8_C(185), UINT8_C(135), UINT8_C( 64),
|
|
UINT8_C(167), UINT8_C(215), UINT8_C(226), UINT8_C(221),
|
|
UINT8_C( 22), UINT8_C( 21), UINT8_C( 86), UINT8_C(166),
|
|
UINT8_C( 38), UINT8_C( 88), UINT8_C(194), UINT8_C( 97),
|
|
UINT8_C( 79), UINT8_C(177), UINT8_C(251), UINT8_C(218),
|
|
UINT8_C( 76), UINT8_C(121), UINT8_C(164), UINT8_C( 80)),
|
|
simde_x_mm256_set_epu8(UINT8_C(122), UINT8_C( 83), UINT8_C(123), UINT8_C( 76),
|
|
UINT8_C(107), UINT8_C(255), UINT8_C(255), UINT8_C( 90),
|
|
UINT8_C(140), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(112), UINT8_C( 31), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(212), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(228), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C( 93), UINT8_C(237), UINT8_C(255), UINT8_C(183)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 62), UINT8_C(125), UINT8_C(167), UINT8_C( 69),
|
|
UINT8_C(185), UINT8_C(211), UINT8_C(194), UINT8_C( 87),
|
|
UINT8_C( 42), UINT8_C( 67), UINT8_C(196), UINT8_C(131),
|
|
UINT8_C( 56), UINT8_C(103), UINT8_C( 93), UINT8_C(201),
|
|
UINT8_C(200), UINT8_C( 67), UINT8_C( 5), UINT8_C(251),
|
|
UINT8_C(171), UINT8_C( 0), UINT8_C(242), UINT8_C(219),
|
|
UINT8_C( 52), UINT8_C( 56), UINT8_C(153), UINT8_C(193),
|
|
UINT8_C(206), UINT8_C(184), UINT8_C(179), UINT8_C(112)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 3), UINT8_C( 94), UINT8_C( 2), UINT8_C( 80),
|
|
UINT8_C( 75), UINT8_C( 54), UINT8_C(116), UINT8_C(175),
|
|
UINT8_C(133), UINT8_C(183), UINT8_C(131), UINT8_C( 7),
|
|
UINT8_C( 65), UINT8_C( 80), UINT8_C(192), UINT8_C( 97),
|
|
UINT8_C(148), UINT8_C(232), UINT8_C(135), UINT8_C(251),
|
|
UINT8_C(194), UINT8_C( 84), UINT8_C(121), UINT8_C( 35),
|
|
UINT8_C( 55), UINT8_C(172), UINT8_C( 74), UINT8_C( 18),
|
|
UINT8_C( 14), UINT8_C( 11), UINT8_C( 86), UINT8_C(161)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 65), UINT8_C(219), UINT8_C(169), UINT8_C(149),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(175), UINT8_C(250), UINT8_C(255), UINT8_C(138),
|
|
UINT8_C(121), UINT8_C(183), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(140), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C( 84), UINT8_C(255), UINT8_C(254),
|
|
UINT8_C(107), UINT8_C(228), UINT8_C(227), UINT8_C(211),
|
|
UINT8_C(220), UINT8_C(195), UINT8_C(255), UINT8_C(255)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(180), UINT8_C(149), UINT8_C(241), UINT8_C( 31),
|
|
UINT8_C( 45), UINT8_C(238), UINT8_C(127), UINT8_C( 41),
|
|
UINT8_C( 61), UINT8_C( 40), UINT8_C(253), UINT8_C(133),
|
|
UINT8_C(247), UINT8_C(164), UINT8_C(139), UINT8_C(228),
|
|
UINT8_C( 62), UINT8_C(209), UINT8_C(132), UINT8_C( 80),
|
|
UINT8_C(102), UINT8_C(192), UINT8_C(185), UINT8_C(191),
|
|
UINT8_C(100), UINT8_C(154), UINT8_C( 33), UINT8_C( 61),
|
|
UINT8_C( 93), UINT8_C(153), UINT8_C(220), UINT8_C(160)),
|
|
simde_x_mm256_set_epu8(UINT8_C(230), UINT8_C( 84), UINT8_C( 78), UINT8_C(157),
|
|
UINT8_C(192), UINT8_C( 80), UINT8_C(173), UINT8_C(216),
|
|
UINT8_C( 47), UINT8_C(218), UINT8_C( 93), UINT8_C(143),
|
|
UINT8_C( 45), UINT8_C( 59), UINT8_C(151), UINT8_C(134),
|
|
UINT8_C( 70), UINT8_C( 90), UINT8_C( 58), UINT8_C(114),
|
|
UINT8_C(223), UINT8_C(242), UINT8_C( 15), UINT8_C(131),
|
|
UINT8_C( 82), UINT8_C(204), UINT8_C(173), UINT8_C( 5),
|
|
UINT8_C( 58), UINT8_C(182), UINT8_C(252), UINT8_C(237)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(233), UINT8_C(255), UINT8_C(188),
|
|
UINT8_C(237), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(108), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(223), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(132), UINT8_C(255), UINT8_C(190), UINT8_C(194),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(200), UINT8_C(255),
|
|
UINT8_C(182), UINT8_C(255), UINT8_C(206), UINT8_C( 66),
|
|
UINT8_C(151), UINT8_C(255), UINT8_C(255), UINT8_C(255)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(201), UINT8_C(214), UINT8_C(179), UINT8_C(233),
|
|
UINT8_C(198), UINT8_C( 81), UINT8_C(243), UINT8_C(119),
|
|
UINT8_C(160), UINT8_C(147), UINT8_C( 34), UINT8_C(138),
|
|
UINT8_C(127), UINT8_C( 31), UINT8_C(145), UINT8_C( 40),
|
|
UINT8_C(228), UINT8_C( 45), UINT8_C( 3), UINT8_C( 4),
|
|
UINT8_C(249), UINT8_C(180), UINT8_C(210), UINT8_C( 7),
|
|
UINT8_C(175), UINT8_C( 81), UINT8_C( 15), UINT8_C(137),
|
|
UINT8_C( 20), UINT8_C( 57), UINT8_C( 3), UINT8_C(157)),
|
|
simde_x_mm256_set_epu8(UINT8_C(209), UINT8_C( 16), UINT8_C(253), UINT8_C(199),
|
|
UINT8_C(185), UINT8_C(238), UINT8_C( 28), UINT8_C( 87),
|
|
UINT8_C( 41), UINT8_C(232), UINT8_C( 54), UINT8_C(100),
|
|
UINT8_C(160), UINT8_C( 87), UINT8_C(101), UINT8_C(193),
|
|
UINT8_C(173), UINT8_C(242), UINT8_C(182), UINT8_C( 0),
|
|
UINT8_C(222), UINT8_C(142), UINT8_C(217), UINT8_C(177),
|
|
UINT8_C(237), UINT8_C(196), UINT8_C(145), UINT8_C(208),
|
|
UINT8_C( 95), UINT8_C(248), UINT8_C( 86), UINT8_C( 20)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(230), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(206),
|
|
UINT8_C(201), UINT8_C(255), UINT8_C( 88), UINT8_C(238),
|
|
UINT8_C(255), UINT8_C(118), UINT8_C(246), UINT8_C(233),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(185), UINT8_C( 4),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(184),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(160), UINT8_C(255),
|
|
UINT8_C(115), UINT8_C(255), UINT8_C( 89), UINT8_C(177)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(117), UINT8_C(251), UINT8_C(156), UINT8_C( 72),
|
|
UINT8_C(241), UINT8_C( 25), UINT8_C( 80), UINT8_C(195),
|
|
UINT8_C(213), UINT8_C( 26), UINT8_C( 44), UINT8_C(154),
|
|
UINT8_C( 40), UINT8_C(201), UINT8_C(142), UINT8_C(110),
|
|
UINT8_C( 17), UINT8_C(100), UINT8_C( 41), UINT8_C(223),
|
|
UINT8_C(255), UINT8_C(232), UINT8_C(253), UINT8_C(190),
|
|
UINT8_C(155), UINT8_C(178), UINT8_C(150), UINT8_C(248),
|
|
UINT8_C(166), UINT8_C(223), UINT8_C( 92), UINT8_C(146)),
|
|
simde_x_mm256_set_epu8(UINT8_C(164), UINT8_C(171), UINT8_C(230), UINT8_C(232),
|
|
UINT8_C( 86), UINT8_C(220), UINT8_C(153), UINT8_C(194),
|
|
UINT8_C( 83), UINT8_C( 81), UINT8_C( 80), UINT8_C( 93),
|
|
UINT8_C( 96), UINT8_C( 68), UINT8_C( 55), UINT8_C(183),
|
|
UINT8_C(110), UINT8_C(151), UINT8_C( 66), UINT8_C(168),
|
|
UINT8_C(210), UINT8_C( 58), UINT8_C(169), UINT8_C(189),
|
|
UINT8_C( 61), UINT8_C( 15), UINT8_C(124), UINT8_C(190),
|
|
UINT8_C( 93), UINT8_C(242), UINT8_C( 80), UINT8_C(225)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(245), UINT8_C(233), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(107), UINT8_C(124), UINT8_C(247),
|
|
UINT8_C(136), UINT8_C(255), UINT8_C(197), UINT8_C(255),
|
|
UINT8_C(127), UINT8_C(251), UINT8_C(107), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(216), UINT8_C(193), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(172), UINT8_C(255)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(130), UINT8_C( 76), UINT8_C( 98), UINT8_C( 8),
|
|
UINT8_C(243), UINT8_C(125), UINT8_C(189), UINT8_C(162),
|
|
UINT8_C(107), UINT8_C( 98), UINT8_C(171), UINT8_C( 80),
|
|
UINT8_C(243), UINT8_C(225), UINT8_C( 6), UINT8_C( 11),
|
|
UINT8_C(250), UINT8_C(210), UINT8_C( 60), UINT8_C(230),
|
|
UINT8_C( 17), UINT8_C(222), UINT8_C( 70), UINT8_C(180),
|
|
UINT8_C( 28), UINT8_C( 96), UINT8_C(128), UINT8_C(195),
|
|
UINT8_C(240), UINT8_C(119), UINT8_C(199), UINT8_C( 65)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 47), UINT8_C(225), UINT8_C( 74), UINT8_C(106),
|
|
UINT8_C(149), UINT8_C(250), UINT8_C(221), UINT8_C( 24),
|
|
UINT8_C(161), UINT8_C( 69), UINT8_C(209), UINT8_C(120),
|
|
UINT8_C(116), UINT8_C(235), UINT8_C( 4), UINT8_C(161),
|
|
UINT8_C(156), UINT8_C(193), UINT8_C(253), UINT8_C( 2),
|
|
UINT8_C(168), UINT8_C( 52), UINT8_C(231), UINT8_C(201),
|
|
UINT8_C(115), UINT8_C( 0), UINT8_C(176), UINT8_C(224),
|
|
UINT8_C( 4), UINT8_C(219), UINT8_C(202), UINT8_C(177)),
|
|
simde_x_mm256_set_epu8(UINT8_C(177), UINT8_C(255), UINT8_C(172), UINT8_C(114),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(186),
|
|
UINT8_C(255), UINT8_C(167), UINT8_C(255), UINT8_C(200),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C( 10), UINT8_C(172),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(232),
|
|
UINT8_C(185), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(143), UINT8_C( 96), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(244), UINT8_C(255), UINT8_C(255), UINT8_C(242)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(144), UINT8_C( 62), UINT8_C(142), UINT8_C(211),
|
|
UINT8_C( 41), UINT8_C(162), UINT8_C(184), UINT8_C(180),
|
|
UINT8_C(242), UINT8_C( 80), UINT8_C( 73), UINT8_C( 63),
|
|
UINT8_C(168), UINT8_C(176), UINT8_C( 12), UINT8_C( 85),
|
|
UINT8_C( 62), UINT8_C( 83), UINT8_C( 52), UINT8_C( 39),
|
|
UINT8_C( 56), UINT8_C(245), UINT8_C( 65), UINT8_C(213),
|
|
UINT8_C( 94), UINT8_C( 88), UINT8_C(157), UINT8_C(124),
|
|
UINT8_C(123), UINT8_C(196), UINT8_C( 79), UINT8_C( 49)),
|
|
simde_x_mm256_set_epu8(UINT8_C(142), UINT8_C( 71), UINT8_C(103), UINT8_C(139),
|
|
UINT8_C(236), UINT8_C(100), UINT8_C(139), UINT8_C(154),
|
|
UINT8_C(203), UINT8_C(125), UINT8_C(237), UINT8_C(236),
|
|
UINT8_C( 45), UINT8_C(103), UINT8_C( 56), UINT8_C( 68),
|
|
UINT8_C( 26), UINT8_C( 73), UINT8_C(130), UINT8_C( 19),
|
|
UINT8_C(222), UINT8_C(206), UINT8_C(129), UINT8_C(101),
|
|
UINT8_C( 56), UINT8_C(145), UINT8_C(213), UINT8_C(249),
|
|
UINT8_C(145), UINT8_C( 67), UINT8_C(236), UINT8_C(136)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(133), UINT8_C(245), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(205), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(213), UINT8_C(255), UINT8_C( 68), UINT8_C(153),
|
|
UINT8_C( 88), UINT8_C(156), UINT8_C(182), UINT8_C( 58),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(194), UINT8_C(255),
|
|
UINT8_C(150), UINT8_C(233), UINT8_C(255), UINT8_C(255),
|
|
UINT8_C(255), UINT8_C(255), UINT8_C(255), UINT8_C(185)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_adds_epu8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_adds_epu16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 46173), UINT16_C( 51502), UINT16_C( 53334), UINT16_C( 43223),
|
|
UINT16_C( 23928), UINT16_C( 20321), UINT16_C( 51743), UINT16_C( 37618),
|
|
UINT16_C( 65078), UINT16_C( 7253), UINT16_C( 52827), UINT16_C( 55189),
|
|
UINT16_C( 4987), UINT16_C( 17665), UINT16_C( 14350), UINT16_C( 38811)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 37136), UINT16_C( 48792), UINT16_C( 4303), UINT16_C( 5479),
|
|
UINT16_C( 25191), UINT16_C( 58551), UINT16_C( 48285), UINT16_C( 4997),
|
|
UINT16_C( 11428), UINT16_C( 55078), UINT16_C( 56047), UINT16_C( 52960),
|
|
UINT16_C( 65202), UINT16_C( 38018), UINT16_C( 624), UINT16_C( 7777)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 57637), UINT16_C( 48702),
|
|
UINT16_C( 49119), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 42615),
|
|
UINT16_C( 65535), UINT16_C( 62331), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 65535), UINT16_C( 55683), UINT16_C( 14974), UINT16_C( 46588)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 32326), UINT16_C( 24612), UINT16_C( 21846), UINT16_C( 55200),
|
|
UINT16_C( 41586), UINT16_C( 19758), UINT16_C( 51650), UINT16_C( 38909),
|
|
UINT16_C( 46063), UINT16_C( 28335), UINT16_C( 9134), UINT16_C( 41639),
|
|
UINT16_C( 55060), UINT16_C( 39890), UINT16_C( 8293), UINT16_C( 53471)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 41234), UINT16_C( 2183), UINT16_C( 63540), UINT16_C( 1722),
|
|
UINT16_C( 28608), UINT16_C( 25104), UINT16_C( 45712), UINT16_C( 60419),
|
|
UINT16_C( 19160), UINT16_C( 3341), UINT16_C( 25253), UINT16_C( 20430),
|
|
UINT16_C( 42207), UINT16_C( 24498), UINT16_C( 15365), UINT16_C( 19541)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 65535), UINT16_C( 26795), UINT16_C( 65535), UINT16_C( 56922),
|
|
UINT16_C( 65535), UINT16_C( 44862), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 65223), UINT16_C( 31676), UINT16_C( 34387), UINT16_C( 62069),
|
|
UINT16_C( 65535), UINT16_C( 64388), UINT16_C( 23658), UINT16_C( 65535)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 26386), UINT16_C( 63006), UINT16_C( 58203), UINT16_C( 62377),
|
|
UINT16_C( 47602), UINT16_C( 30067), UINT16_C( 23114), UINT16_C( 33473),
|
|
UINT16_C( 53575), UINT16_C( 38408), UINT16_C( 17337), UINT16_C( 42126),
|
|
UINT16_C( 5249), UINT16_C( 35315), UINT16_C( 42156), UINT16_C( 18091)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 52612), UINT16_C( 30768), UINT16_C( 53242), UINT16_C( 17367),
|
|
UINT16_C( 55155), UINT16_C( 55208), UINT16_C( 40791), UINT16_C( 34106),
|
|
UINT16_C( 38398), UINT16_C( 3526), UINT16_C( 48471), UINT16_C( 61865),
|
|
UINT16_C( 26735), UINT16_C( 59797), UINT16_C( 61911), UINT16_C( 9267)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 63905), UINT16_C( 65535),
|
|
UINT16_C( 65535), UINT16_C( 41934), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 31984), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 27358)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 52292), UINT16_C( 60997), UINT16_C( 31428), UINT16_C( 9305),
|
|
UINT16_C( 57362), UINT16_C( 62823), UINT16_C( 6394), UINT16_C( 15984),
|
|
UINT16_C( 50964), UINT16_C( 21850), UINT16_C( 44748), UINT16_C( 36872),
|
|
UINT16_C( 14263), UINT16_C( 48235), UINT16_C( 9404), UINT16_C( 55410)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 5822), UINT16_C( 53891), UINT16_C( 53572), UINT16_C( 35299),
|
|
UINT16_C( 32303), UINT16_C( 47360), UINT16_C( 2824), UINT16_C( 19749),
|
|
UINT16_C( 6763), UINT16_C( 47400), UINT16_C( 29201), UINT16_C( 32332),
|
|
UINT16_C( 24570), UINT16_C( 50755), UINT16_C( 22545), UINT16_C( 9382)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 58114), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 44604),
|
|
UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 9218), UINT16_C( 35733),
|
|
UINT16_C( 57727), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 38833), UINT16_C( 65535), UINT16_C( 31949), UINT16_C( 64792)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 50076), UINT16_C( 9743), UINT16_C( 10727), UINT16_C( 51592),
|
|
UINT16_C( 28130), UINT16_C( 34226), UINT16_C( 44764), UINT16_C( 58424),
|
|
UINT16_C( 15168), UINT16_C( 4051), UINT16_C( 54044), UINT16_C( 7020),
|
|
UINT16_C( 31115), UINT16_C( 49299), UINT16_C( 40742), UINT16_C( 48855)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 50898), UINT16_C( 60971), UINT16_C( 2964), UINT16_C( 53140),
|
|
UINT16_C( 39951), UINT16_C( 57637), UINT16_C( 63735), UINT16_C( 40101),
|
|
UINT16_C( 37326), UINT16_C( 12531), UINT16_C( 29670), UINT16_C( 49503),
|
|
UINT16_C( 64935), UINT16_C( 44011), UINT16_C( 59422), UINT16_C( 45053)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 13691), UINT16_C( 65535),
|
|
UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 52494), UINT16_C( 16582), UINT16_C( 65535), UINT16_C( 56523),
|
|
UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 12906), UINT16_C( 34342), UINT16_C( 49900), UINT16_C( 16373),
|
|
UINT16_C( 41099), UINT16_C( 42680), UINT16_C( 11034), UINT16_C( 4050),
|
|
UINT16_C( 41370), UINT16_C( 18241), UINT16_C( 60694), UINT16_C( 59842),
|
|
UINT16_C( 7044), UINT16_C( 38288), UINT16_C( 18779), UINT16_C( 33204)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 39975), UINT16_C( 26379), UINT16_C( 49406), UINT16_C( 11197),
|
|
UINT16_C( 25665), UINT16_C( 45876), UINT16_C( 8978), UINT16_C( 56112),
|
|
UINT16_C( 5541), UINT16_C( 41816), UINT16_C( 1773), UINT16_C( 25366),
|
|
UINT16_C( 51395), UINT16_C( 19553), UINT16_C( 37079), UINT16_C( 32528)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 52881), UINT16_C( 60721), UINT16_C( 65535), UINT16_C( 27570),
|
|
UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 20012), UINT16_C( 60162),
|
|
UINT16_C( 46911), UINT16_C( 60057), UINT16_C( 62467), UINT16_C( 65535),
|
|
UINT16_C( 58439), UINT16_C( 57841), UINT16_C( 55858), UINT16_C( 65535)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 54610), UINT16_C( 56071), UINT16_C( 54559), UINT16_C( 11899),
|
|
UINT16_C( 32307), UINT16_C( 4962), UINT16_C( 27630), UINT16_C( 33600),
|
|
UINT16_C( 31852), UINT16_C( 56358), UINT16_C( 35796), UINT16_C( 8024),
|
|
UINT16_C( 46221), UINT16_C( 4529), UINT16_C( 49147), UINT16_C( 8518)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 57675), UINT16_C( 2883), UINT16_C( 55066), UINT16_C( 41648),
|
|
UINT16_C( 12159), UINT16_C( 20265), UINT16_C( 47525), UINT16_C( 54059),
|
|
UINT16_C( 12623), UINT16_C( 11063), UINT16_C( 34242), UINT16_C( 57692),
|
|
UINT16_C( 8071), UINT16_C( 9806), UINT16_C( 30691), UINT16_C( 35776)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 65535), UINT16_C( 58954), UINT16_C( 65535), UINT16_C( 53547),
|
|
UINT16_C( 44466), UINT16_C( 25227), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 44475), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535),
|
|
UINT16_C( 54292), UINT16_C( 14335), UINT16_C( 65535), UINT16_C( 44294)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 56834), UINT16_C( 64885), UINT16_C( 9140), UINT16_C( 13056),
|
|
UINT16_C( 40842), UINT16_C( 10347), UINT16_C( 7339), UINT16_C( 17877),
|
|
UINT16_C( 14924), UINT16_C( 16868), UINT16_C( 50139), UINT16_C( 42854),
|
|
UINT16_C( 20413), UINT16_C( 64148), UINT16_C( 24871), UINT16_C( 35734)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 20840), UINT16_C( 44144), UINT16_C( 58177), UINT16_C( 28709),
|
|
UINT16_C( 14233), UINT16_C( 55224), UINT16_C( 50824), UINT16_C( 22009),
|
|
UINT16_C( 46863), UINT16_C( 40997), UINT16_C( 17728), UINT16_C( 21679),
|
|
UINT16_C( 9552), UINT16_C( 17236), UINT16_C( 5658), UINT16_C( 51223)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 65535), UINT16_C( 41765),
|
|
UINT16_C( 55075), UINT16_C( 65535), UINT16_C( 58163), UINT16_C( 39886),
|
|
UINT16_C( 61787), UINT16_C( 57865), UINT16_C( 65535), UINT16_C( 64533),
|
|
UINT16_C( 29965), UINT16_C( 65535), UINT16_C( 30529), UINT16_C( 65535)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_adds_epu16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_avg_epu8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu8(UINT8_C(132), UINT8_C(185), UINT8_C( 15), UINT8_C(235),
|
|
UINT8_C(102), UINT8_C( 8), UINT8_C(239), UINT8_C(181),
|
|
UINT8_C( 81), UINT8_C(155), UINT8_C(236), UINT8_C(191),
|
|
UINT8_C(133), UINT8_C( 65), UINT8_C( 73), UINT8_C( 40),
|
|
UINT8_C(181), UINT8_C( 86), UINT8_C( 73), UINT8_C(213),
|
|
UINT8_C( 85), UINT8_C( 28), UINT8_C( 53), UINT8_C(225),
|
|
UINT8_C(217), UINT8_C(129), UINT8_C( 68), UINT8_C(183),
|
|
UINT8_C(232), UINT8_C( 91), UINT8_C( 4), UINT8_C(129)),
|
|
simde_x_mm256_set_epu8(UINT8_C(199), UINT8_C(146), UINT8_C( 73), UINT8_C(129),
|
|
UINT8_C( 53), UINT8_C( 30), UINT8_C(178), UINT8_C(252),
|
|
UINT8_C(125), UINT8_C( 44), UINT8_C( 67), UINT8_C( 83),
|
|
UINT8_C( 52), UINT8_C( 79), UINT8_C(239), UINT8_C(118),
|
|
UINT8_C(100), UINT8_C( 25), UINT8_C( 74), UINT8_C( 78),
|
|
UINT8_C( 90), UINT8_C(145), UINT8_C(118), UINT8_C(211),
|
|
UINT8_C( 29), UINT8_C( 31), UINT8_C(128), UINT8_C( 53),
|
|
UINT8_C( 19), UINT8_C(239), UINT8_C(181), UINT8_C(108)),
|
|
simde_x_mm256_set_epu8(UINT8_C(166), UINT8_C(166), UINT8_C( 44), UINT8_C(182),
|
|
UINT8_C( 78), UINT8_C( 19), UINT8_C(209), UINT8_C(217),
|
|
UINT8_C(103), UINT8_C(100), UINT8_C(152), UINT8_C(137),
|
|
UINT8_C( 93), UINT8_C( 72), UINT8_C(156), UINT8_C( 79),
|
|
UINT8_C(141), UINT8_C( 56), UINT8_C( 74), UINT8_C(146),
|
|
UINT8_C( 88), UINT8_C( 87), UINT8_C( 86), UINT8_C(218),
|
|
UINT8_C(123), UINT8_C( 80), UINT8_C( 98), UINT8_C(118),
|
|
UINT8_C(126), UINT8_C(165), UINT8_C( 93), UINT8_C(119)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(209), UINT8_C(137), UINT8_C(159), UINT8_C(201),
|
|
UINT8_C(142), UINT8_C(123), UINT8_C(233), UINT8_C(210),
|
|
UINT8_C(180), UINT8_C( 1), UINT8_C( 19), UINT8_C( 5),
|
|
UINT8_C( 35), UINT8_C(203), UINT8_C(189), UINT8_C( 26),
|
|
UINT8_C(153), UINT8_C(140), UINT8_C( 62), UINT8_C(144),
|
|
UINT8_C( 20), UINT8_C(125), UINT8_C(185), UINT8_C(133),
|
|
UINT8_C( 90), UINT8_C(243), UINT8_C( 18), UINT8_C(117),
|
|
UINT8_C(102), UINT8_C(222), UINT8_C( 27), UINT8_C( 12)),
|
|
simde_x_mm256_set_epu8(UINT8_C(201), UINT8_C(154), UINT8_C( 75), UINT8_C(146),
|
|
UINT8_C( 84), UINT8_C(138), UINT8_C(110), UINT8_C( 18),
|
|
UINT8_C(142), UINT8_C(147), UINT8_C(192), UINT8_C(131),
|
|
UINT8_C(151), UINT8_C(232), UINT8_C(176), UINT8_C( 8),
|
|
UINT8_C(133), UINT8_C( 27), UINT8_C( 52), UINT8_C( 35),
|
|
UINT8_C(114), UINT8_C(148), UINT8_C(237), UINT8_C(121),
|
|
UINT8_C(209), UINT8_C( 97), UINT8_C(242), UINT8_C( 75),
|
|
UINT8_C(194), UINT8_C( 62), UINT8_C(242), UINT8_C(214)),
|
|
simde_x_mm256_set_epu8(UINT8_C(205), UINT8_C(146), UINT8_C(117), UINT8_C(174),
|
|
UINT8_C(113), UINT8_C(131), UINT8_C(172), UINT8_C(114),
|
|
UINT8_C(161), UINT8_C( 74), UINT8_C(106), UINT8_C( 68),
|
|
UINT8_C( 93), UINT8_C(218), UINT8_C(183), UINT8_C( 17),
|
|
UINT8_C(143), UINT8_C( 84), UINT8_C( 57), UINT8_C( 90),
|
|
UINT8_C( 67), UINT8_C(137), UINT8_C(211), UINT8_C(127),
|
|
UINT8_C(150), UINT8_C(170), UINT8_C(130), UINT8_C( 96),
|
|
UINT8_C(148), UINT8_C(142), UINT8_C(135), UINT8_C(113)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(223), UINT8_C( 80), UINT8_C( 95), UINT8_C( 57),
|
|
UINT8_C(173), UINT8_C( 14), UINT8_C( 75), UINT8_C( 79),
|
|
UINT8_C(206), UINT8_C( 37), UINT8_C(125), UINT8_C(225),
|
|
UINT8_C(172), UINT8_C(121), UINT8_C( 43), UINT8_C(249),
|
|
UINT8_C(122), UINT8_C( 3), UINT8_C( 25), UINT8_C(204),
|
|
UINT8_C(153), UINT8_C( 32), UINT8_C(245), UINT8_C( 58),
|
|
UINT8_C(211), UINT8_C(116), UINT8_C( 87), UINT8_C(228),
|
|
UINT8_C(139), UINT8_C(203), UINT8_C(106), UINT8_C(216)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 18), UINT8_C(169), UINT8_C( 46), UINT8_C(100),
|
|
UINT8_C(246), UINT8_C( 6), UINT8_C(208), UINT8_C(224),
|
|
UINT8_C(134), UINT8_C(248), UINT8_C( 90), UINT8_C(243),
|
|
UINT8_C( 95), UINT8_C(216), UINT8_C(232), UINT8_C(245),
|
|
UINT8_C( 35), UINT8_C(118), UINT8_C( 23), UINT8_C(111),
|
|
UINT8_C(137), UINT8_C( 1), UINT8_C( 43), UINT8_C(212),
|
|
UINT8_C(143), UINT8_C(143), UINT8_C(106), UINT8_C(242),
|
|
UINT8_C(188), UINT8_C( 78), UINT8_C( 94), UINT8_C( 49)),
|
|
simde_x_mm256_set_epu8(UINT8_C(121), UINT8_C(125), UINT8_C( 71), UINT8_C( 79),
|
|
UINT8_C(210), UINT8_C( 10), UINT8_C(142), UINT8_C(152),
|
|
UINT8_C(170), UINT8_C(143), UINT8_C(108), UINT8_C(234),
|
|
UINT8_C(134), UINT8_C(169), UINT8_C(138), UINT8_C(247),
|
|
UINT8_C( 79), UINT8_C( 61), UINT8_C( 24), UINT8_C(158),
|
|
UINT8_C(145), UINT8_C( 17), UINT8_C(144), UINT8_C(135),
|
|
UINT8_C(177), UINT8_C(130), UINT8_C( 97), UINT8_C(235),
|
|
UINT8_C(164), UINT8_C(141), UINT8_C(100), UINT8_C(133)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(186), UINT8_C( 51), UINT8_C(166), UINT8_C(159),
|
|
UINT8_C( 61), UINT8_C(189), UINT8_C(148), UINT8_C(156),
|
|
UINT8_C(199), UINT8_C( 59), UINT8_C(214), UINT8_C( 21),
|
|
UINT8_C( 92), UINT8_C( 24), UINT8_C( 35), UINT8_C( 33),
|
|
UINT8_C( 27), UINT8_C(133), UINT8_C( 9), UINT8_C(114),
|
|
UINT8_C(170), UINT8_C( 78), UINT8_C(149), UINT8_C(203),
|
|
UINT8_C(212), UINT8_C(108), UINT8_C(116), UINT8_C(217),
|
|
UINT8_C(102), UINT8_C(192), UINT8_C(223), UINT8_C( 98)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 51), UINT8_C(193), UINT8_C(129), UINT8_C(222),
|
|
UINT8_C(147), UINT8_C( 49), UINT8_C(210), UINT8_C(198),
|
|
UINT8_C(192), UINT8_C(158), UINT8_C( 49), UINT8_C(217),
|
|
UINT8_C( 20), UINT8_C(183), UINT8_C(213), UINT8_C( 71),
|
|
UINT8_C(164), UINT8_C( 92), UINT8_C(118), UINT8_C( 17),
|
|
UINT8_C(236), UINT8_C( 27), UINT8_C(162), UINT8_C( 98),
|
|
UINT8_C(196), UINT8_C(135), UINT8_C( 7), UINT8_C(172),
|
|
UINT8_C(233), UINT8_C( 47), UINT8_C(151), UINT8_C(128)),
|
|
simde_x_mm256_set_epu8(UINT8_C(119), UINT8_C(122), UINT8_C(148), UINT8_C(191),
|
|
UINT8_C(104), UINT8_C(119), UINT8_C(179), UINT8_C(177),
|
|
UINT8_C(196), UINT8_C(109), UINT8_C(132), UINT8_C(119),
|
|
UINT8_C( 56), UINT8_C(104), UINT8_C(124), UINT8_C( 52),
|
|
UINT8_C( 96), UINT8_C(113), UINT8_C( 64), UINT8_C( 66),
|
|
UINT8_C(203), UINT8_C( 53), UINT8_C(156), UINT8_C(151),
|
|
UINT8_C(204), UINT8_C(122), UINT8_C( 62), UINT8_C(195),
|
|
UINT8_C(168), UINT8_C(120), UINT8_C(187), UINT8_C(113)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(182), UINT8_C(141), UINT8_C( 93), UINT8_C( 91),
|
|
UINT8_C( 0), UINT8_C(189), UINT8_C(215), UINT8_C(221),
|
|
UINT8_C(105), UINT8_C(231), UINT8_C( 61), UINT8_C(224),
|
|
UINT8_C( 68), UINT8_C( 84), UINT8_C(247), UINT8_C(215),
|
|
UINT8_C(125), UINT8_C(197), UINT8_C( 69), UINT8_C(102),
|
|
UINT8_C(218), UINT8_C(120), UINT8_C(113), UINT8_C(175),
|
|
UINT8_C(134), UINT8_C( 33), UINT8_C(106), UINT8_C(117),
|
|
UINT8_C(129), UINT8_C(249), UINT8_C(194), UINT8_C( 70)),
|
|
simde_x_mm256_set_epu8(UINT8_C(137), UINT8_C( 27), UINT8_C( 17), UINT8_C( 94),
|
|
UINT8_C(244), UINT8_C(142), UINT8_C(142), UINT8_C( 48),
|
|
UINT8_C( 54), UINT8_C(217), UINT8_C(209), UINT8_C(122),
|
|
UINT8_C( 1), UINT8_C(190), UINT8_C( 59), UINT8_C(250),
|
|
UINT8_C(179), UINT8_C(176), UINT8_C(167), UINT8_C( 57),
|
|
UINT8_C( 90), UINT8_C( 15), UINT8_C( 31), UINT8_C(140),
|
|
UINT8_C(209), UINT8_C(104), UINT8_C(139), UINT8_C(154),
|
|
UINT8_C( 57), UINT8_C(248), UINT8_C(225), UINT8_C( 65)),
|
|
simde_x_mm256_set_epu8(UINT8_C(160), UINT8_C( 84), UINT8_C( 55), UINT8_C( 93),
|
|
UINT8_C(122), UINT8_C(166), UINT8_C(179), UINT8_C(135),
|
|
UINT8_C( 80), UINT8_C(224), UINT8_C(135), UINT8_C(173),
|
|
UINT8_C( 35), UINT8_C(137), UINT8_C(153), UINT8_C(233),
|
|
UINT8_C(152), UINT8_C(187), UINT8_C(118), UINT8_C( 80),
|
|
UINT8_C(154), UINT8_C( 68), UINT8_C( 72), UINT8_C(158),
|
|
UINT8_C(172), UINT8_C( 69), UINT8_C(123), UINT8_C(136),
|
|
UINT8_C( 93), UINT8_C(249), UINT8_C(210), UINT8_C( 68)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(125), UINT8_C(242), UINT8_C( 34), UINT8_C(120),
|
|
UINT8_C(106), UINT8_C(202), UINT8_C(100), UINT8_C( 61),
|
|
UINT8_C(105), UINT8_C(145), UINT8_C( 46), UINT8_C(129),
|
|
UINT8_C(208), UINT8_C( 57), UINT8_C( 82), UINT8_C( 21),
|
|
UINT8_C( 59), UINT8_C( 97), UINT8_C(206), UINT8_C( 4),
|
|
UINT8_C(182), UINT8_C( 81), UINT8_C(203), UINT8_C(252),
|
|
UINT8_C(111), UINT8_C( 28), UINT8_C(210), UINT8_C( 57),
|
|
UINT8_C(214), UINT8_C(124), UINT8_C(137), UINT8_C(114)),
|
|
simde_x_mm256_set_epu8(UINT8_C(208), UINT8_C( 60), UINT8_C( 51), UINT8_C( 61),
|
|
UINT8_C(249), UINT8_C(203), UINT8_C( 69), UINT8_C(195),
|
|
UINT8_C( 16), UINT8_C( 67), UINT8_C(241), UINT8_C(244),
|
|
UINT8_C(217), UINT8_C(201), UINT8_C(104), UINT8_C( 80),
|
|
UINT8_C( 30), UINT8_C( 40), UINT8_C( 69), UINT8_C( 88),
|
|
UINT8_C( 83), UINT8_C(141), UINT8_C(221), UINT8_C(174),
|
|
UINT8_C(165), UINT8_C(114), UINT8_C(107), UINT8_C( 42),
|
|
UINT8_C( 83), UINT8_C( 1), UINT8_C( 95), UINT8_C( 89)),
|
|
simde_x_mm256_set_epu8(UINT8_C(167), UINT8_C(151), UINT8_C( 43), UINT8_C( 91),
|
|
UINT8_C(178), UINT8_C(203), UINT8_C( 85), UINT8_C(128),
|
|
UINT8_C( 61), UINT8_C(106), UINT8_C(144), UINT8_C(187),
|
|
UINT8_C(213), UINT8_C(129), UINT8_C( 93), UINT8_C( 51),
|
|
UINT8_C( 45), UINT8_C( 69), UINT8_C(138), UINT8_C( 46),
|
|
UINT8_C(133), UINT8_C(111), UINT8_C(212), UINT8_C(213),
|
|
UINT8_C(138), UINT8_C( 71), UINT8_C(159), UINT8_C( 50),
|
|
UINT8_C(149), UINT8_C( 63), UINT8_C(116), UINT8_C(102)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 59), UINT8_C(202), UINT8_C( 28), UINT8_C( 65),
|
|
UINT8_C( 60), UINT8_C( 92), UINT8_C(112), UINT8_C(105),
|
|
UINT8_C(229), UINT8_C(116), UINT8_C(242), UINT8_C(217),
|
|
UINT8_C(203), UINT8_C( 71), UINT8_C( 15), UINT8_C(143),
|
|
UINT8_C( 58), UINT8_C(228), UINT8_C( 36), UINT8_C(154),
|
|
UINT8_C( 96), UINT8_C( 2), UINT8_C( 86), UINT8_C( 36),
|
|
UINT8_C( 93), UINT8_C( 29), UINT8_C( 70), UINT8_C( 20),
|
|
UINT8_C(130), UINT8_C(172), UINT8_C(152), UINT8_C(189)),
|
|
simde_x_mm256_set_epu8(UINT8_C(100), UINT8_C( 42), UINT8_C( 77), UINT8_C( 21),
|
|
UINT8_C(144), UINT8_C(197), UINT8_C(242), UINT8_C(243),
|
|
UINT8_C(205), UINT8_C(204), UINT8_C( 75), UINT8_C(102),
|
|
UINT8_C( 21), UINT8_C(148), UINT8_C( 70), UINT8_C(128),
|
|
UINT8_C( 95), UINT8_C(147), UINT8_C( 39), UINT8_C(190),
|
|
UINT8_C( 20), UINT8_C(128), UINT8_C(196), UINT8_C(160),
|
|
UINT8_C( 8), UINT8_C(206), UINT8_C( 13), UINT8_C(197),
|
|
UINT8_C( 93), UINT8_C(253), UINT8_C( 16), UINT8_C( 27)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 80), UINT8_C(122), UINT8_C( 53), UINT8_C( 43),
|
|
UINT8_C(102), UINT8_C(145), UINT8_C(177), UINT8_C(174),
|
|
UINT8_C(217), UINT8_C(160), UINT8_C(159), UINT8_C(160),
|
|
UINT8_C(112), UINT8_C(110), UINT8_C( 43), UINT8_C(136),
|
|
UINT8_C( 77), UINT8_C(188), UINT8_C( 38), UINT8_C(172),
|
|
UINT8_C( 58), UINT8_C( 65), UINT8_C(141), UINT8_C( 98),
|
|
UINT8_C( 51), UINT8_C(118), UINT8_C( 42), UINT8_C(109),
|
|
UINT8_C(112), UINT8_C(213), UINT8_C( 84), UINT8_C(108)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 75), UINT8_C( 17), UINT8_C(162), UINT8_C( 64),
|
|
UINT8_C(129), UINT8_C(250), UINT8_C(112), UINT8_C(166),
|
|
UINT8_C( 98), UINT8_C(126), UINT8_C(129), UINT8_C(211),
|
|
UINT8_C( 27), UINT8_C( 12), UINT8_C(183), UINT8_C(140),
|
|
UINT8_C(106), UINT8_C(255), UINT8_C(252), UINT8_C(224),
|
|
UINT8_C(116), UINT8_C(208), UINT8_C( 69), UINT8_C( 4),
|
|
UINT8_C(193), UINT8_C( 46), UINT8_C(111), UINT8_C( 96),
|
|
UINT8_C(101), UINT8_C(183), UINT8_C( 99), UINT8_C( 60)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 48), UINT8_C( 27), UINT8_C(253), UINT8_C(118),
|
|
UINT8_C(225), UINT8_C(134), UINT8_C(250), UINT8_C(133),
|
|
UINT8_C( 52), UINT8_C( 47), UINT8_C( 27), UINT8_C(213),
|
|
UINT8_C( 28), UINT8_C(208), UINT8_C( 73), UINT8_C( 89),
|
|
UINT8_C( 76), UINT8_C(160), UINT8_C( 57), UINT8_C(191),
|
|
UINT8_C( 34), UINT8_C(121), UINT8_C(194), UINT8_C(205),
|
|
UINT8_C(102), UINT8_C(106), UINT8_C(175), UINT8_C(219),
|
|
UINT8_C(174), UINT8_C(128), UINT8_C(137), UINT8_C(235)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 62), UINT8_C( 22), UINT8_C(208), UINT8_C( 91),
|
|
UINT8_C(177), UINT8_C(192), UINT8_C(181), UINT8_C(150),
|
|
UINT8_C( 75), UINT8_C( 87), UINT8_C( 78), UINT8_C(212),
|
|
UINT8_C( 28), UINT8_C(110), UINT8_C(128), UINT8_C(115),
|
|
UINT8_C( 91), UINT8_C(208), UINT8_C(155), UINT8_C(208),
|
|
UINT8_C( 75), UINT8_C(165), UINT8_C(132), UINT8_C(105),
|
|
UINT8_C(148), UINT8_C( 76), UINT8_C(143), UINT8_C(158),
|
|
UINT8_C(138), UINT8_C(156), UINT8_C(118), UINT8_C(148)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_avg_epu8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_avg_epu16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 33977), UINT16_C( 4075), UINT16_C( 26120), UINT16_C( 61365),
|
|
UINT16_C( 20891), UINT16_C( 60607), UINT16_C( 34113), UINT16_C( 18728),
|
|
UINT16_C( 46422), UINT16_C( 18901), UINT16_C( 21788), UINT16_C( 13793),
|
|
UINT16_C( 55681), UINT16_C( 17591), UINT16_C( 59483), UINT16_C( 1153)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 51090), UINT16_C( 18817), UINT16_C( 13598), UINT16_C( 45820),
|
|
UINT16_C( 32044), UINT16_C( 17235), UINT16_C( 13391), UINT16_C( 61302),
|
|
UINT16_C( 25625), UINT16_C( 19022), UINT16_C( 23185), UINT16_C( 30419),
|
|
UINT16_C( 7455), UINT16_C( 32821), UINT16_C( 5103), UINT16_C( 46444)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 42534), UINT16_C( 11446), UINT16_C( 19859), UINT16_C( 53593),
|
|
UINT16_C( 26468), UINT16_C( 38921), UINT16_C( 23752), UINT16_C( 40015),
|
|
UINT16_C( 36024), UINT16_C( 18962), UINT16_C( 22487), UINT16_C( 22106),
|
|
UINT16_C( 31568), UINT16_C( 25206), UINT16_C( 32293), UINT16_C( 23799)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 53641), UINT16_C( 40905), UINT16_C( 36475), UINT16_C( 59858),
|
|
UINT16_C( 46081), UINT16_C( 4869), UINT16_C( 9163), UINT16_C( 48410),
|
|
UINT16_C( 39308), UINT16_C( 16016), UINT16_C( 5245), UINT16_C( 47493),
|
|
UINT16_C( 23283), UINT16_C( 4725), UINT16_C( 26334), UINT16_C( 6924)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 51610), UINT16_C( 19346), UINT16_C( 21642), UINT16_C( 28178),
|
|
UINT16_C( 36499), UINT16_C( 49283), UINT16_C( 38888), UINT16_C( 45064),
|
|
UINT16_C( 34075), UINT16_C( 13347), UINT16_C( 29332), UINT16_C( 60793),
|
|
UINT16_C( 53601), UINT16_C( 62027), UINT16_C( 49726), UINT16_C( 62166)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 52626), UINT16_C( 30126), UINT16_C( 29059), UINT16_C( 44018),
|
|
UINT16_C( 41290), UINT16_C( 27076), UINT16_C( 24026), UINT16_C( 46737),
|
|
UINT16_C( 36692), UINT16_C( 14682), UINT16_C( 17289), UINT16_C( 54143),
|
|
UINT16_C( 38442), UINT16_C( 33376), UINT16_C( 38030), UINT16_C( 34545)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 57168), UINT16_C( 24377), UINT16_C( 44302), UINT16_C( 19279),
|
|
UINT16_C( 52773), UINT16_C( 32225), UINT16_C( 44153), UINT16_C( 11257),
|
|
UINT16_C( 31235), UINT16_C( 6604), UINT16_C( 39200), UINT16_C( 62778),
|
|
UINT16_C( 54132), UINT16_C( 22500), UINT16_C( 35787), UINT16_C( 27352)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 4777), UINT16_C( 11876), UINT16_C( 62982), UINT16_C( 53472),
|
|
UINT16_C( 34552), UINT16_C( 23283), UINT16_C( 24536), UINT16_C( 59637),
|
|
UINT16_C( 9078), UINT16_C( 5999), UINT16_C( 35073), UINT16_C( 11220),
|
|
UINT16_C( 36751), UINT16_C( 27378), UINT16_C( 48206), UINT16_C( 24113)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 30973), UINT16_C( 18127), UINT16_C( 53642), UINT16_C( 36376),
|
|
UINT16_C( 43663), UINT16_C( 27754), UINT16_C( 34345), UINT16_C( 35447),
|
|
UINT16_C( 20157), UINT16_C( 6302), UINT16_C( 37137), UINT16_C( 36999),
|
|
UINT16_C( 45442), UINT16_C( 24939), UINT16_C( 41997), UINT16_C( 25733)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 47667), UINT16_C( 42655), UINT16_C( 15805), UINT16_C( 38044),
|
|
UINT16_C( 51003), UINT16_C( 54805), UINT16_C( 23576), UINT16_C( 8993),
|
|
UINT16_C( 7045), UINT16_C( 2418), UINT16_C( 43598), UINT16_C( 38347),
|
|
UINT16_C( 54380), UINT16_C( 29913), UINT16_C( 26304), UINT16_C( 57186)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 13249), UINT16_C( 33246), UINT16_C( 37681), UINT16_C( 53958),
|
|
UINT16_C( 49310), UINT16_C( 12761), UINT16_C( 5303), UINT16_C( 54599),
|
|
UINT16_C( 42076), UINT16_C( 30225), UINT16_C( 60443), UINT16_C( 41570),
|
|
UINT16_C( 50311), UINT16_C( 1964), UINT16_C( 59695), UINT16_C( 38784)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 30458), UINT16_C( 37951), UINT16_C( 26743), UINT16_C( 46001),
|
|
UINT16_C( 50157), UINT16_C( 33783), UINT16_C( 14440), UINT16_C( 31796),
|
|
UINT16_C( 24561), UINT16_C( 16322), UINT16_C( 52021), UINT16_C( 39959),
|
|
UINT16_C( 52346), UINT16_C( 15939), UINT16_C( 43000), UINT16_C( 47985)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 46733), UINT16_C( 23899), UINT16_C( 189), UINT16_C( 55261),
|
|
UINT16_C( 27111), UINT16_C( 15840), UINT16_C( 17492), UINT16_C( 63447),
|
|
UINT16_C( 32197), UINT16_C( 17766), UINT16_C( 55928), UINT16_C( 29103),
|
|
UINT16_C( 34337), UINT16_C( 27253), UINT16_C( 33273), UINT16_C( 49734)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 35099), UINT16_C( 4446), UINT16_C( 62606), UINT16_C( 36400),
|
|
UINT16_C( 14041), UINT16_C( 53626), UINT16_C( 446), UINT16_C( 15354),
|
|
UINT16_C( 46000), UINT16_C( 42809), UINT16_C( 23055), UINT16_C( 8076),
|
|
UINT16_C( 53608), UINT16_C( 35738), UINT16_C( 14840), UINT16_C( 57665)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 40916), UINT16_C( 14173), UINT16_C( 31398), UINT16_C( 45831),
|
|
UINT16_C( 20576), UINT16_C( 34733), UINT16_C( 8969), UINT16_C( 39401),
|
|
UINT16_C( 39099), UINT16_C( 30288), UINT16_C( 39492), UINT16_C( 18590),
|
|
UINT16_C( 43973), UINT16_C( 31496), UINT16_C( 24057), UINT16_C( 53700)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 32242), UINT16_C( 8824), UINT16_C( 27338), UINT16_C( 25661),
|
|
UINT16_C( 27025), UINT16_C( 11905), UINT16_C( 53305), UINT16_C( 21013),
|
|
UINT16_C( 15201), UINT16_C( 52740), UINT16_C( 46673), UINT16_C( 52220),
|
|
UINT16_C( 28444), UINT16_C( 53817), UINT16_C( 54908), UINT16_C( 35186)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 53308), UINT16_C( 13117), UINT16_C( 63947), UINT16_C( 17859),
|
|
UINT16_C( 4163), UINT16_C( 61940), UINT16_C( 55753), UINT16_C( 26704),
|
|
UINT16_C( 7720), UINT16_C( 17752), UINT16_C( 21389), UINT16_C( 56750),
|
|
UINT16_C( 42354), UINT16_C( 27434), UINT16_C( 21249), UINT16_C( 24409)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 42775), UINT16_C( 10971), UINT16_C( 45643), UINT16_C( 21760),
|
|
UINT16_C( 15594), UINT16_C( 36923), UINT16_C( 54529), UINT16_C( 23859),
|
|
UINT16_C( 11461), UINT16_C( 35246), UINT16_C( 34031), UINT16_C( 54485),
|
|
UINT16_C( 35399), UINT16_C( 40626), UINT16_C( 38079), UINT16_C( 29798)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 15306), UINT16_C( 7233), UINT16_C( 15452), UINT16_C( 28777),
|
|
UINT16_C( 58740), UINT16_C( 62169), UINT16_C( 52039), UINT16_C( 3983),
|
|
UINT16_C( 15076), UINT16_C( 9370), UINT16_C( 24578), UINT16_C( 22052),
|
|
UINT16_C( 23837), UINT16_C( 17940), UINT16_C( 33452), UINT16_C( 39101)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 25642), UINT16_C( 19733), UINT16_C( 37061), UINT16_C( 62195),
|
|
UINT16_C( 52684), UINT16_C( 19302), UINT16_C( 5524), UINT16_C( 18048),
|
|
UINT16_C( 24467), UINT16_C( 10174), UINT16_C( 5248), UINT16_C( 50336),
|
|
UINT16_C( 2254), UINT16_C( 3525), UINT16_C( 24061), UINT16_C( 4123)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 20474), UINT16_C( 13483), UINT16_C( 26257), UINT16_C( 45486),
|
|
UINT16_C( 55712), UINT16_C( 40736), UINT16_C( 28782), UINT16_C( 11016),
|
|
UINT16_C( 19772), UINT16_C( 9772), UINT16_C( 14913), UINT16_C( 36194),
|
|
UINT16_C( 13046), UINT16_C( 10733), UINT16_C( 28757), UINT16_C( 21612)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 19217), UINT16_C( 41536), UINT16_C( 33274), UINT16_C( 28838),
|
|
UINT16_C( 25214), UINT16_C( 33235), UINT16_C( 6924), UINT16_C( 46988),
|
|
UINT16_C( 27391), UINT16_C( 64736), UINT16_C( 29904), UINT16_C( 17668),
|
|
UINT16_C( 49454), UINT16_C( 28512), UINT16_C( 26039), UINT16_C( 25404)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 12315), UINT16_C( 64886), UINT16_C( 57734), UINT16_C( 64133),
|
|
UINT16_C( 13359), UINT16_C( 7125), UINT16_C( 7376), UINT16_C( 18777),
|
|
UINT16_C( 19616), UINT16_C( 14783), UINT16_C( 8825), UINT16_C( 49869),
|
|
UINT16_C( 26218), UINT16_C( 45019), UINT16_C( 44672), UINT16_C( 35307)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 15766), UINT16_C( 53211), UINT16_C( 45504), UINT16_C( 46486),
|
|
UINT16_C( 19287), UINT16_C( 20180), UINT16_C( 7150), UINT16_C( 32883),
|
|
UINT16_C( 23504), UINT16_C( 39760), UINT16_C( 19365), UINT16_C( 33769),
|
|
UINT16_C( 37836), UINT16_C( 36766), UINT16_C( 35356), UINT16_C( 30356)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_avg_epu16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_blend_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( -9012), INT16_C( 17188), INT16_C( 20170), INT16_C( -6948),
|
|
INT16_C( 9138), INT16_C( 24690), INT16_C( -6761), INT16_C( -2618),
|
|
INT16_C( 30583), INT16_C( 3343), INT16_C( -2458), INT16_C( 32235),
|
|
INT16_C(-14188), INT16_C( 15906), INT16_C(-17823), INT16_C( 7319)),
|
|
simde_mm256_set_epi16(INT16_C( -5752), INT16_C(-23668), INT16_C(-25159), INT16_C(-19782),
|
|
INT16_C( 28185), INT16_C(-14343), INT16_C(-18599), INT16_C( 827),
|
|
INT16_C( -4902), INT16_C( 2482), INT16_C( 14836), INT16_C(-27028),
|
|
INT16_C( 23821), INT16_C( -1365), INT16_C( -4235), INT16_C( -888)),
|
|
simde_mm256_set_epi16(INT16_C( -9012), INT16_C( 17188), INT16_C( 20170), INT16_C( -6948),
|
|
INT16_C( 28185), INT16_C(-14343), INT16_C( -6761), INT16_C( 827),
|
|
INT16_C( 30583), INT16_C( 3343), INT16_C( -2458), INT16_C( 32235),
|
|
INT16_C( 23821), INT16_C( -1365), INT16_C(-17823), INT16_C( -888)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 2208), INT16_C( 24143), INT16_C( 20623), INT16_C( -5907),
|
|
INT16_C( 4359), INT16_C( 6016), INT16_C( 2606), INT16_C(-17968),
|
|
INT16_C( 24878), INT16_C(-20974), INT16_C( 11542), INT16_C( 18923),
|
|
INT16_C( 32276), INT16_C(-26730), INT16_C( 20467), INT16_C(-30404)),
|
|
simde_mm256_set_epi16(INT16_C( 27588), INT16_C(-23388), INT16_C( 31848), INT16_C( 22463),
|
|
INT16_C(-31474), INT16_C(-14474), INT16_C( 2006), INT16_C(-32634),
|
|
INT16_C( 32036), INT16_C(-13145), INT16_C(-30339), INT16_C(-22528),
|
|
INT16_C( 17597), INT16_C( 17800), INT16_C( 16042), INT16_C( 23637)),
|
|
simde_mm256_set_epi16(INT16_C( 2208), INT16_C( 24143), INT16_C( 20623), INT16_C( -5907),
|
|
INT16_C(-31474), INT16_C(-14474), INT16_C( 2606), INT16_C(-32634),
|
|
INT16_C( 24878), INT16_C(-20974), INT16_C( 11542), INT16_C( 18923),
|
|
INT16_C( 17597), INT16_C( 17800), INT16_C( 20467), INT16_C( 23637)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-30302), INT16_C( -3491), INT16_C(-12187), INT16_C( -9390),
|
|
INT16_C( -5875), INT16_C( 4739), INT16_C( 19577), INT16_C( 7526),
|
|
INT16_C( 31347), INT16_C( 10086), INT16_C(-16595), INT16_C( 27410),
|
|
INT16_C( 1134), INT16_C(-11806), INT16_C(-16010), INT16_C(-25451)),
|
|
simde_mm256_set_epi16(INT16_C(-29901), INT16_C( 18434), INT16_C( -841), INT16_C( 28759),
|
|
INT16_C( -1918), INT16_C( 2817), INT16_C(-31249), INT16_C( 6853),
|
|
INT16_C( 24735), INT16_C(-25824), INT16_C( -1496), INT16_C( 12880),
|
|
INT16_C( 11586), INT16_C( 24977), INT16_C( 22341), INT16_C(-21470)),
|
|
simde_mm256_set_epi16(INT16_C(-30302), INT16_C( -3491), INT16_C(-12187), INT16_C( -9390),
|
|
INT16_C( -1918), INT16_C( 2817), INT16_C( 19577), INT16_C( 6853),
|
|
INT16_C( 31347), INT16_C( 10086), INT16_C(-16595), INT16_C( 27410),
|
|
INT16_C( 11586), INT16_C( 24977), INT16_C(-16010), INT16_C(-21470)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 17074), INT16_C(-20924), INT16_C( 13898), INT16_C( 20227),
|
|
INT16_C( 12334), INT16_C(-15702), INT16_C( 28564), INT16_C(-15082),
|
|
INT16_C(-19676), INT16_C( 796), INT16_C( 13442), INT16_C( -9023),
|
|
INT16_C( 10428), INT16_C( 21588), INT16_C(-25545), INT16_C( 22589)),
|
|
simde_mm256_set_epi16(INT16_C( 13365), INT16_C(-16397), INT16_C(-14658), INT16_C( 8081),
|
|
INT16_C( 4626), INT16_C(-31038), INT16_C(-27498), INT16_C( -1797),
|
|
INT16_C(-14919), INT16_C( 31584), INT16_C( 32162), INT16_C( 21664),
|
|
INT16_C( 32327), INT16_C( 9046), INT16_C( 29457), INT16_C( 18165)),
|
|
simde_mm256_set_epi16(INT16_C( 17074), INT16_C(-20924), INT16_C( 13898), INT16_C( 20227),
|
|
INT16_C( 4626), INT16_C(-31038), INT16_C( 28564), INT16_C( -1797),
|
|
INT16_C(-19676), INT16_C( 796), INT16_C( 13442), INT16_C( -9023),
|
|
INT16_C( 32327), INT16_C( 9046), INT16_C(-25545), INT16_C( 18165)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28976), INT16_C(-17452), INT16_C(-30835), INT16_C(-11288),
|
|
INT16_C( 23746), INT16_C(-12398), INT16_C( -9605), INT16_C( 914),
|
|
INT16_C( -6067), INT16_C( 4660), INT16_C( 15780), INT16_C( 30375),
|
|
INT16_C(-32484), INT16_C( 23271), INT16_C(-15980), INT16_C( 3969)),
|
|
simde_mm256_set_epi16(INT16_C(-14502), INT16_C(-26489), INT16_C( -6738), INT16_C( -1193),
|
|
INT16_C( 15756), INT16_C(-12605), INT16_C(-12710), INT16_C( -8558),
|
|
INT16_C( 19027), INT16_C(-19772), INT16_C( 23814), INT16_C(-30071),
|
|
INT16_C(-29678), INT16_C( 31649), INT16_C( 4669), INT16_C( -4491)),
|
|
simde_mm256_set_epi16(INT16_C(-28976), INT16_C(-17452), INT16_C(-30835), INT16_C(-11288),
|
|
INT16_C( 15756), INT16_C(-12605), INT16_C( -9605), INT16_C( -8558),
|
|
INT16_C( -6067), INT16_C( 4660), INT16_C( 15780), INT16_C( 30375),
|
|
INT16_C(-29678), INT16_C( 31649), INT16_C(-15980), INT16_C( -4491)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 16416), INT16_C(-25375), INT16_C(-21092), INT16_C(-20302),
|
|
INT16_C(-10725), INT16_C(-20142), INT16_C( -4818), INT16_C(-14140),
|
|
INT16_C(-13625), INT16_C(-24584), INT16_C( 6087), INT16_C(-31850),
|
|
INT16_C(-29507), INT16_C( 7132), INT16_C( -6862), INT16_C( 26102)),
|
|
simde_mm256_set_epi16(INT16_C( 3513), INT16_C(-30455), INT16_C(-14215), INT16_C(-31390),
|
|
INT16_C( 22371), INT16_C(-30450), INT16_C(-14197), INT16_C( -3991),
|
|
INT16_C( 25198), INT16_C( -1251), INT16_C( -4992), INT16_C(-16295),
|
|
INT16_C( 23622), INT16_C( 28506), INT16_C(-16087), INT16_C(-18392)),
|
|
simde_mm256_set_epi16(INT16_C( 16416), INT16_C(-25375), INT16_C(-21092), INT16_C(-20302),
|
|
INT16_C( 22371), INT16_C(-30450), INT16_C( -4818), INT16_C( -3991),
|
|
INT16_C(-13625), INT16_C(-24584), INT16_C( 6087), INT16_C(-31850),
|
|
INT16_C( 23622), INT16_C( 28506), INT16_C( -6862), INT16_C(-18392)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -2375), INT16_C( 3031), INT16_C( 26231), INT16_C( 5999),
|
|
INT16_C(-10519), INT16_C( 21791), INT16_C( 3889), INT16_C( 28062),
|
|
INT16_C(-23674), INT16_C(-25444), INT16_C( 16907), INT16_C( 20389),
|
|
INT16_C(-22712), INT16_C( 486), INT16_C( -2776), INT16_C(-21644)),
|
|
simde_mm256_set_epi16(INT16_C(-29652), INT16_C( 489), INT16_C( -7346), INT16_C(-13391),
|
|
INT16_C( 21827), INT16_C( 9877), INT16_C( 7842), INT16_C(-13219),
|
|
INT16_C( 12847), INT16_C( 31187), INT16_C( -8174), INT16_C( -7953),
|
|
INT16_C( 8071), INT16_C(-19051), INT16_C( 30976), INT16_C( 20848)),
|
|
simde_mm256_set_epi16(INT16_C( -2375), INT16_C( 3031), INT16_C( 26231), INT16_C( 5999),
|
|
INT16_C( 21827), INT16_C( 9877), INT16_C( 3889), INT16_C(-13219),
|
|
INT16_C(-23674), INT16_C(-25444), INT16_C( 16907), INT16_C( 20389),
|
|
INT16_C( 8071), INT16_C(-19051), INT16_C( -2776), INT16_C( 20848)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 13214), INT16_C(-27703), INT16_C( 6386), INT16_C( 5153),
|
|
INT16_C( 26096), INT16_C( 8476), INT16_C( 10527), INT16_C(-23224),
|
|
INT16_C( 23690), INT16_C( 9355), INT16_C( 1283), INT16_C(-29402),
|
|
INT16_C( 22593), INT16_C(-12032), INT16_C( -8259), INT16_C( 13457)),
|
|
simde_mm256_set_epi16(INT16_C(-25352), INT16_C( 21231), INT16_C(-11795), INT16_C( 17700),
|
|
INT16_C(-24048), INT16_C(-11558), INT16_C( -1645), INT16_C( 21362),
|
|
INT16_C( 18474), INT16_C( 30559), INT16_C( -790), INT16_C( 30067),
|
|
INT16_C( 3488), INT16_C( 3834), INT16_C( 2645), INT16_C(-14787)),
|
|
simde_mm256_set_epi16(INT16_C( 13214), INT16_C(-27703), INT16_C( 6386), INT16_C( 5153),
|
|
INT16_C(-24048), INT16_C(-11558), INT16_C( 10527), INT16_C( 21362),
|
|
INT16_C( 23690), INT16_C( 9355), INT16_C( 1283), INT16_C(-29402),
|
|
INT16_C( 3488), INT16_C( 3834), INT16_C( -8259), INT16_C(-14787)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_blend_epi16(test_vec[i].a, test_vec[i].b, 13);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_blend_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 67571941), INT32_C(-1405773426), INT32_C( 1540271825), INT32_C( 2065572299),
|
|
INT32_C( -582398487), INT32_C( 1269568238), INT32_C( -277360429), INT32_C( 355946014)),
|
|
simde_mm256_set_epi32(INT32_C(-1175528322), INT32_C( -128390122), INT32_C( 1870386786), INT32_C( 1369967555),
|
|
INT32_C( 417868105), INT32_C( 128490599), INT32_C( 1283738263), INT32_C( -937782732)),
|
|
simde_mm256_set_epi32(INT32_C( 67571941), INT32_C(-1405773426), INT32_C( 1540271825), INT32_C( 2065572299),
|
|
INT32_C( 417868105), INT32_C( 128490599), INT32_C( -277360429), INT32_C( -937782732)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1471616457), INT32_C( 153196965), INT32_C( 177786947), INT32_C(-1953704859),
|
|
INT32_C(-2052334624), INT32_C(-1985445584), INT32_C( 389650479), INT32_C(-1304302924)),
|
|
simde_mm256_set_epi32(INT32_C( -934897433), INT32_C( 1646862966), INT32_C(-1085276514), INT32_C( 112227015),
|
|
INT32_C(-1389537102), INT32_C( 687724210), INT32_C( 1265543631), INT32_C( 346850755)),
|
|
simde_mm256_set_epi32(INT32_C( 1471616457), INT32_C( 153196965), INT32_C( 177786947), INT32_C(-1953704859),
|
|
INT32_C(-1389537102), INT32_C( 687724210), INT32_C( 389650479), INT32_C( 346850755)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1682060225), INT32_C( 867867583), INT32_C( 925546319), INT32_C( 1379938785),
|
|
INT32_C( 653018322), INT32_C( -687296073), INT32_C( -911101701), INT32_C( 1547072378)),
|
|
simde_mm256_set_epi32(INT32_C( 1176167258), INT32_C( -301183666), INT32_C( -466020487), INT32_C( 52703344),
|
|
INT32_C( 1233020389), INT32_C( 1117532027), INT32_C( 1899739665), INT32_C(-2043295118)),
|
|
simde_mm256_set_epi32(INT32_C(-1682060225), INT32_C( 867867583), INT32_C( 925546319), INT32_C( 1379938785),
|
|
INT32_C( 1233020389), INT32_C( 1117532027), INT32_C( -911101701), INT32_C(-2043295118)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 359138398), INT32_C( -860526519), INT32_C( 1692947884), INT32_C( 772823662),
|
|
INT32_C( -270939677), INT32_C( 1412661540), INT32_C( 1070011153), INT32_C( 771375046)),
|
|
simde_mm256_set_epi32(INT32_C( -974034130), INT32_C( 37087187), INT32_C( -871436522), INT32_C( 33095078),
|
|
INT32_C( 715849450), INT32_C(-1345812415), INT32_C( -45115049), INT32_C( 1960320081)),
|
|
simde_mm256_set_epi32(INT32_C( 359138398), INT32_C( -860526519), INT32_C( 1692947884), INT32_C( 772823662),
|
|
INT32_C( 715849450), INT32_C(-1345812415), INT32_C( 1070011153), INT32_C( 1960320081)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -426383461), INT32_C( -768942960), INT32_C( -264677869), INT32_C( -822820045),
|
|
INT32_C( 1890345084), INT32_C(-2046745025), INT32_C( -207573670), INT32_C( 1399666591)),
|
|
simde_mm256_set_epi32(INT32_C( 232105709), INT32_C(-1583898310), INT32_C( 1161298300), INT32_C( 169359829),
|
|
INT32_C( 621794425), INT32_C( 607256107), INT32_C( 1099667121), INT32_C( -184390486)),
|
|
simde_mm256_set_epi32(INT32_C( -426383461), INT32_C( -768942960), INT32_C( -264677869), INT32_C( -822820045),
|
|
INT32_C( 621794425), INT32_C( 607256107), INT32_C( -207573670), INT32_C( -184390486)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1564290184), INT32_C( -240378472), INT32_C( 1142270593), INT32_C( 1000191111),
|
|
INT32_C( 20701140), INT32_C( 37555352), INT32_C( -694404400), INT32_C( 1055280730)),
|
|
simde_mm256_set_epi32(INT32_C( 1835031057), INT32_C( 2079483638), INT32_C( 1962415366), INT32_C( -373228817),
|
|
INT32_C( 142245442), INT32_C( 51427720), INT32_C( 1717201652), INT32_C( 1177983710)),
|
|
simde_mm256_set_epi32(INT32_C(-1564290184), INT32_C( -240378472), INT32_C( 1142270593), INT32_C( 1000191111),
|
|
INT32_C( 142245442), INT32_C( 51427720), INT32_C( -694404400), INT32_C( 1177983710)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1384452546), INT32_C( -108099055), INT32_C( -3256672), INT32_C(-2139665218),
|
|
INT32_C( -280826539), INT32_C( -885573478), INT32_C( 2104257473), INT32_C( 1279376382)),
|
|
simde_mm256_set_epi32(INT32_C( 1706246197), INT32_C(-1331652281), INT32_C( 1192842905), INT32_C( -885790109),
|
|
INT32_C(-1010846518), INT32_C( -536721191), INT32_C( 1967911533), INT32_C( 1933417937)),
|
|
simde_mm256_set_epi32(INT32_C(-1384452546), INT32_C( -108099055), INT32_C( -3256672), INT32_C(-2139665218),
|
|
INT32_C(-1010846518), INT32_C( -536721191), INT32_C( 2104257473), INT32_C( 1933417937)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1532802072), INT32_C( 125283422), INT32_C(-1578036874), INT32_C( 445027764),
|
|
INT32_C( -409254011), INT32_C( 1098938926), INT32_C(-1086732528), INT32_C( -812360922)),
|
|
simde_mm256_set_epi32(INT32_C( 1974078859), INT32_C( 2037136311), INT32_C( 1463878416), INT32_C( 122656324),
|
|
INT32_C(-2126065903), INT32_C(-1726635542), INT32_C(-1755031182), INT32_C( 1725515904)),
|
|
simde_mm256_set_epi32(INT32_C( 1532802072), INT32_C( 125283422), INT32_C(-1578036874), INT32_C( 445027764),
|
|
INT32_C(-2126065903), INT32_C(-1726635542), INT32_C(-1086732528), INT32_C( 1725515904)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_blend_epi32(test_vec[i].a, test_vec[i].b, 13);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_blendv_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i i;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 119), INT8_C( 14), INT8_C( 127), INT8_C(-117),
|
|
INT8_C( -92), INT8_C( 49), INT8_C( -15), INT8_C( -64),
|
|
INT8_C( 66), INT8_C(-125), INT8_C( 43), INT8_C( 6),
|
|
INT8_C(-117), INT8_C( 95), INT8_C( 4), INT8_C( 100),
|
|
INT8_C( 82), INT8_C( -66), INT8_C( 57), INT8_C( -98),
|
|
INT8_C( -94), INT8_C( 7), INT8_C( 58), INT8_C(-109),
|
|
INT8_C( -21), INT8_C( -88), INT8_C( 12), INT8_C( 65),
|
|
INT8_C(-108), INT8_C( -25), INT8_C( -96), INT8_C( -4)),
|
|
simde_mm256_set_epi8(INT8_C( -68), INT8_C( -8), INT8_C( 57), INT8_C( 103),
|
|
INT8_C( 55), INT8_C( 120), INT8_C( 1), INT8_C( 68),
|
|
INT8_C( 85), INT8_C(-119), INT8_C( -3), INT8_C( 60),
|
|
INT8_C(-115), INT8_C( -64), INT8_C( 126), INT8_C( -67),
|
|
INT8_C( 11), INT8_C( 73), INT8_C( 97), INT8_C( -47),
|
|
INT8_C( 73), INT8_C( -17), INT8_C( -4), INT8_C( 19),
|
|
INT8_C( -66), INT8_C( -1), INT8_C( 84), INT8_C( -63),
|
|
INT8_C( 58), INT8_C( 114), INT8_C( 107), INT8_C( -13)),
|
|
simde_mm256_set_epi8(INT8_C( -94), INT8_C( -13), INT8_C( -63), INT8_C( 48),
|
|
INT8_C( 72), INT8_C( -33), INT8_C(-118), INT8_C( 86),
|
|
INT8_C( 17), INT8_C( 112), INT8_C( 9), INT8_C( 106),
|
|
INT8_C( 115), INT8_C( -15), INT8_C( 74), INT8_C( 5),
|
|
INT8_C( 17), INT8_C( -31), INT8_C(-120), INT8_C( 18),
|
|
INT8_C( 82), INT8_C( -67), INT8_C(-101), INT8_C(-109),
|
|
INT8_C( 81), INT8_C(-126), INT8_C( -8), INT8_C( 4),
|
|
INT8_C( 123), INT8_C( 125), INT8_C( 70), INT8_C( 66)),
|
|
simde_mm256_set_epi8(INT8_C( -68), INT8_C( -8), INT8_C( 57), INT8_C(-117),
|
|
INT8_C( -92), INT8_C( 120), INT8_C( 1), INT8_C( -64),
|
|
INT8_C( 66), INT8_C(-125), INT8_C( 43), INT8_C( 6),
|
|
INT8_C(-117), INT8_C( -64), INT8_C( 4), INT8_C( 100),
|
|
INT8_C( 82), INT8_C( 73), INT8_C( 97), INT8_C( -98),
|
|
INT8_C( -94), INT8_C( -17), INT8_C( -4), INT8_C( 19),
|
|
INT8_C( -21), INT8_C( -1), INT8_C( 84), INT8_C( 65),
|
|
INT8_C(-108), INT8_C( -25), INT8_C( -96), INT8_C( -4)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -95), INT8_C( 48), INT8_C(-106), INT8_C( 2),
|
|
INT8_C( -98), INT8_C( 42), INT8_C( 111), INT8_C( -63),
|
|
INT8_C( 63), INT8_C( 60), INT8_C(-104), INT8_C(-108),
|
|
INT8_C( -18), INT8_C( -88), INT8_C( 55), INT8_C( 21),
|
|
INT8_C(-103), INT8_C( 114), INT8_C( -80), INT8_C( 89),
|
|
INT8_C( 60), INT8_C( 45), INT8_C( -20), INT8_C( 79),
|
|
INT8_C(-112), INT8_C( -14), INT8_C( -11), INT8_C( 117),
|
|
INT8_C( 14), INT8_C( -21), INT8_C( 11), INT8_C(-119)),
|
|
simde_mm256_set_epi8(INT8_C( 7), INT8_C( -82), INT8_C( -49), INT8_C( 6),
|
|
INT8_C(-108), INT8_C(-115), INT8_C( -95), INT8_C( -53),
|
|
INT8_C( 6), INT8_C( 28), INT8_C( 47), INT8_C( 86),
|
|
INT8_C( -76), INT8_C(-114), INT8_C( 114), INT8_C( 94),
|
|
INT8_C( 90), INT8_C( 13), INT8_C( 121), INT8_C(-123),
|
|
INT8_C( -33), INT8_C( -67), INT8_C( 30), INT8_C( -90),
|
|
INT8_C( -5), INT8_C( 42), INT8_C( 102), INT8_C( 53),
|
|
INT8_C( 95), INT8_C( 56), INT8_C( 1), INT8_C( -15)),
|
|
simde_mm256_set_epi8(INT8_C(-117), INT8_C( -35), INT8_C( 72), INT8_C( -41),
|
|
INT8_C(-118), INT8_C( 110), INT8_C( 61), INT8_C( 45),
|
|
INT8_C(-112), INT8_C( 112), INT8_C( 46), INT8_C( -75),
|
|
INT8_C( 71), INT8_C( -85), INT8_C( -58), INT8_C( 104),
|
|
INT8_C(-126), INT8_C(-109), INT8_C( 86), INT8_C( 70),
|
|
INT8_C( -85), INT8_C( 113), INT8_C( 90), INT8_C( 35),
|
|
INT8_C( -48), INT8_C( -83), INT8_C( 16), INT8_C( 55),
|
|
INT8_C( -13), INT8_C( 42), INT8_C( -55), INT8_C( -15)),
|
|
simde_mm256_set_epi8(INT8_C( 7), INT8_C( -82), INT8_C(-106), INT8_C( 6),
|
|
INT8_C(-108), INT8_C( 42), INT8_C( 111), INT8_C( -63),
|
|
INT8_C( 6), INT8_C( 60), INT8_C(-104), INT8_C( 86),
|
|
INT8_C( -18), INT8_C(-114), INT8_C( 114), INT8_C( 21),
|
|
INT8_C( 90), INT8_C( 13), INT8_C( -80), INT8_C( 89),
|
|
INT8_C( -33), INT8_C( 45), INT8_C( -20), INT8_C( 79),
|
|
INT8_C( -5), INT8_C( 42), INT8_C( -11), INT8_C( 117),
|
|
INT8_C( 95), INT8_C( -21), INT8_C( 1), INT8_C( -15)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 12), INT8_C( 118), INT8_C(-120), INT8_C( 17),
|
|
INT8_C( 61), INT8_C( 24), INT8_C(-114), INT8_C(-117),
|
|
INT8_C( -20), INT8_C(-118), INT8_C( 93), INT8_C( 106),
|
|
INT8_C( -99), INT8_C( -8), INT8_C( 114), INT8_C(-115),
|
|
INT8_C( -65), INT8_C( -34), INT8_C( 66), INT8_C( 62),
|
|
INT8_C( 113), INT8_C( -44), INT8_C( 109), INT8_C( 20),
|
|
INT8_C( 122), INT8_C( -58), INT8_C( 7), INT8_C(-123),
|
|
INT8_C( 18), INT8_C( 89), INT8_C( -84), INT8_C(-114)),
|
|
simde_mm256_set_epi8(INT8_C( -67), INT8_C( -15), INT8_C( -72), INT8_C( -39),
|
|
INT8_C( -90), INT8_C( 108), INT8_C( 93), INT8_C( -36),
|
|
INT8_C( -64), INT8_C( 36), INT8_C( -98), INT8_C( 76),
|
|
INT8_C( 123), INT8_C( -40), INT8_C( -48), INT8_C(-111),
|
|
INT8_C(-100), INT8_C( 76), INT8_C( 114), INT8_C( 51),
|
|
INT8_C( 72), INT8_C( 51), INT8_C( 101), INT8_C(-128),
|
|
INT8_C( -68), INT8_C( 35), INT8_C( -50), INT8_C(-100),
|
|
INT8_C( 85), INT8_C(-109), INT8_C( -86), INT8_C( 43)),
|
|
simde_mm256_set_epi8(INT8_C( 21), INT8_C( 44), INT8_C( 93), INT8_C( -14),
|
|
INT8_C( 76), INT8_C( 78), INT8_C( 101), INT8_C( 40),
|
|
INT8_C( 126), INT8_C( -37), INT8_C( 115), INT8_C( 17),
|
|
INT8_C( 43), INT8_C( -71), INT8_C(-123), INT8_C( -85),
|
|
INT8_C( -19), INT8_C( 27), INT8_C( 72), INT8_C( 57),
|
|
INT8_C( 118), INT8_C( -19), INT8_C( -66), INT8_C( 124),
|
|
INT8_C( -52), INT8_C( -69), INT8_C( 32), INT8_C( 64),
|
|
INT8_C( -16), INT8_C(-103), INT8_C( -39), INT8_C( 121)),
|
|
simde_mm256_set_epi8(INT8_C( 12), INT8_C( 118), INT8_C(-120), INT8_C( -39),
|
|
INT8_C( 61), INT8_C( 24), INT8_C(-114), INT8_C(-117),
|
|
INT8_C( -20), INT8_C( 36), INT8_C( 93), INT8_C( 106),
|
|
INT8_C( -99), INT8_C( -40), INT8_C( -48), INT8_C(-111),
|
|
INT8_C(-100), INT8_C( -34), INT8_C( 66), INT8_C( 62),
|
|
INT8_C( 113), INT8_C( 51), INT8_C( 101), INT8_C( 20),
|
|
INT8_C( -68), INT8_C( 35), INT8_C( 7), INT8_C(-123),
|
|
INT8_C( 85), INT8_C(-109), INT8_C( -86), INT8_C(-114)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -23), INT8_C( 109), INT8_C( 45), INT8_C( -63),
|
|
INT8_C( 54), INT8_C( -58), INT8_C( -11), INT8_C( 18),
|
|
INT8_C( 27), INT8_C( -68), INT8_C(-102), INT8_C( 76),
|
|
INT8_C( -97), INT8_C( 26), INT8_C( 10), INT8_C( -41),
|
|
INT8_C( 50), INT8_C( 54), INT8_C(-128), INT8_C( 77),
|
|
INT8_C( -33), INT8_C( -46), INT8_C( 118), INT8_C( 76),
|
|
INT8_C( -72), INT8_C( 106), INT8_C( -54), INT8_C( 28),
|
|
INT8_C( 86), INT8_C( 37), INT8_C( -1), INT8_C( 83)),
|
|
simde_mm256_set_epi8(INT8_C( 123), INT8_C( 58), INT8_C( 98), INT8_C( 125),
|
|
INT8_C( 118), INT8_C(-119), INT8_C( -36), INT8_C( 78),
|
|
INT8_C( 0), INT8_C( 77), INT8_C( 67), INT8_C( 118),
|
|
INT8_C( 22), INT8_C( -94), INT8_C( -70), INT8_C( 21),
|
|
INT8_C( 65), INT8_C( 89), INT8_C( 34), INT8_C( 21),
|
|
INT8_C( 65), INT8_C( -53), INT8_C( -43), INT8_C( -55),
|
|
INT8_C( -12), INT8_C( -79), INT8_C(-123), INT8_C( 80),
|
|
INT8_C( -58), INT8_C( -76), INT8_C( -82), INT8_C( 16)),
|
|
simde_mm256_set_epi8(INT8_C( -15), INT8_C( -31), INT8_C( 124), INT8_C( 18),
|
|
INT8_C( 63), INT8_C(-119), INT8_C( -84), INT8_C( -47),
|
|
INT8_C( 110), INT8_C( 99), INT8_C( -7), INT8_C( -78),
|
|
INT8_C( 122), INT8_C( 9), INT8_C( 54), INT8_C(-112),
|
|
INT8_C(-100), INT8_C( -9), INT8_C(-127), INT8_C( 67),
|
|
INT8_C( -60), INT8_C( -43), INT8_C( 76), INT8_C( 10),
|
|
INT8_C( 83), INT8_C( -83), INT8_C( -60), INT8_C( -94),
|
|
INT8_C( -63), INT8_C( 113), INT8_C(-114), INT8_C( 124)),
|
|
simde_mm256_set_epi8(INT8_C( 123), INT8_C( 58), INT8_C( 45), INT8_C( -63),
|
|
INT8_C( 54), INT8_C(-119), INT8_C( -36), INT8_C( 78),
|
|
INT8_C( 27), INT8_C( -68), INT8_C( 67), INT8_C( 118),
|
|
INT8_C( -97), INT8_C( 26), INT8_C( 10), INT8_C( 21),
|
|
INT8_C( 65), INT8_C( 89), INT8_C( 34), INT8_C( 77),
|
|
INT8_C( 65), INT8_C( -53), INT8_C( 118), INT8_C( 76),
|
|
INT8_C( -72), INT8_C( -79), INT8_C(-123), INT8_C( 80),
|
|
INT8_C( -58), INT8_C( 37), INT8_C( -82), INT8_C( 83)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 71), INT8_C( 12), INT8_C( 123), INT8_C(-112),
|
|
INT8_C(-126), INT8_C( 60), INT8_C( 108), INT8_C(-103),
|
|
INT8_C( 103), INT8_C( 120), INT8_C( -99), INT8_C( 114),
|
|
INT8_C( 34), INT8_C( -37), INT8_C( -98), INT8_C( -39),
|
|
INT8_C(-107), INT8_C( -14), INT8_C( -8), INT8_C( -82),
|
|
INT8_C( 123), INT8_C( 78), INT8_C( 27), INT8_C( 7),
|
|
INT8_C( 90), INT8_C(-108), INT8_C( -54), INT8_C( 40),
|
|
INT8_C( -9), INT8_C( -18), INT8_C( 12), INT8_C( 6)),
|
|
simde_mm256_set_epi8(INT8_C( 20), INT8_C( -98), INT8_C( 96), INT8_C( 3),
|
|
INT8_C( 27), INT8_C( 45), INT8_C( -97), INT8_C( -19),
|
|
INT8_C( -40), INT8_C( -84), INT8_C( -70), INT8_C( -38),
|
|
INT8_C( -57), INT8_C(-122), INT8_C( -18), INT8_C( -59),
|
|
INT8_C( -66), INT8_C( 38), INT8_C( 28), INT8_C( -72),
|
|
INT8_C( 41), INT8_C( -85), INT8_C(-107), INT8_C( 124),
|
|
INT8_C(-120), INT8_C( 0), INT8_C( 52), INT8_C( -73),
|
|
INT8_C( -94), INT8_C(-103), INT8_C( 104), INT8_C(-108)),
|
|
simde_mm256_set_epi8(INT8_C( 114), INT8_C( 67), INT8_C( 87), INT8_C( 60),
|
|
INT8_C( -47), INT8_C(-121), INT8_C( -54), INT8_C( 110),
|
|
INT8_C(-100), INT8_C( 105), INT8_C( -23), INT8_C( 81),
|
|
INT8_C(-121), INT8_C( 67), INT8_C( 97), INT8_C(-125),
|
|
INT8_C( 78), INT8_C( 118), INT8_C( 46), INT8_C( -85),
|
|
INT8_C( 78), INT8_C( -66), INT8_C( 11), INT8_C( 90),
|
|
INT8_C( 11), INT8_C( 120), INT8_C( 20), INT8_C( 83),
|
|
INT8_C( 103), INT8_C( -43), INT8_C( 72), INT8_C( -92)),
|
|
simde_mm256_set_epi8(INT8_C( 71), INT8_C( 12), INT8_C( 123), INT8_C(-112),
|
|
INT8_C( 27), INT8_C( 45), INT8_C( -97), INT8_C(-103),
|
|
INT8_C( -40), INT8_C( 120), INT8_C( -70), INT8_C( 114),
|
|
INT8_C( -57), INT8_C( -37), INT8_C( -98), INT8_C( -59),
|
|
INT8_C(-107), INT8_C( -14), INT8_C( -8), INT8_C( -72),
|
|
INT8_C( 123), INT8_C( -85), INT8_C( 27), INT8_C( 7),
|
|
INT8_C( 90), INT8_C(-108), INT8_C( -54), INT8_C( 40),
|
|
INT8_C( -9), INT8_C(-103), INT8_C( 12), INT8_C(-108)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-120), INT8_C( -17), INT8_C( 71), INT8_C( 108),
|
|
INT8_C(-124), INT8_C( 8), INT8_C( 38), INT8_C(-124),
|
|
INT8_C( -33), INT8_C( -80), INT8_C( 82), INT8_C( -52),
|
|
INT8_C( -85), INT8_C( 20), INT8_C( -43), INT8_C( 49),
|
|
INT8_C(-127), INT8_C( 82), INT8_C(-125), INT8_C(-107),
|
|
INT8_C( 99), INT8_C( -94), INT8_C( 98), INT8_C( 124),
|
|
INT8_C( 23), INT8_C( -8), INT8_C( -30), INT8_C( 107),
|
|
INT8_C( -17), INT8_C( -36), INT8_C( 65), INT8_C( 35)),
|
|
simde_mm256_set_epi8(INT8_C( 50), INT8_C( -42), INT8_C( 70), INT8_C( 74),
|
|
INT8_C( -25), INT8_C( 118), INT8_C( 53), INT8_C( 91),
|
|
INT8_C( -24), INT8_C( 44), INT8_C(-107), INT8_C( 38),
|
|
INT8_C( 62), INT8_C( 93), INT8_C( 84), INT8_C( 86),
|
|
INT8_C( 25), INT8_C( 25), INT8_C( -1), INT8_C( -49),
|
|
INT8_C( -69), INT8_C( -81), INT8_C( 33), INT8_C( -90),
|
|
INT8_C( 118), INT8_C( 99), INT8_C( -68), INT8_C( 38),
|
|
INT8_C( -18), INT8_C( -20), INT8_C( -37), INT8_C( -57)),
|
|
simde_mm256_set_epi8(INT8_C( 36), INT8_C( 48), INT8_C(-118), INT8_C( 125),
|
|
INT8_C( 12), INT8_C( 115), INT8_C( -38), INT8_C( 1),
|
|
INT8_C( -43), INT8_C(-120), INT8_C( 119), INT8_C( 88),
|
|
INT8_C( 19), INT8_C( 1), INT8_C( 40), INT8_C( -39),
|
|
INT8_C( -67), INT8_C( 66), INT8_C( -86), INT8_C( 38),
|
|
INT8_C( 40), INT8_C( -46), INT8_C( 104), INT8_C( -95),
|
|
INT8_C( 115), INT8_C( -49), INT8_C( 15), INT8_C(-101),
|
|
INT8_C( -79), INT8_C( -5), INT8_C( 112), INT8_C( -45)),
|
|
simde_mm256_set_epi8(INT8_C(-120), INT8_C( -17), INT8_C( 70), INT8_C( 108),
|
|
INT8_C(-124), INT8_C( 8), INT8_C( 53), INT8_C(-124),
|
|
INT8_C( -24), INT8_C( 44), INT8_C( 82), INT8_C( -52),
|
|
INT8_C( -85), INT8_C( 20), INT8_C( -43), INT8_C( 86),
|
|
INT8_C( 25), INT8_C( 82), INT8_C( -1), INT8_C(-107),
|
|
INT8_C( 99), INT8_C( -81), INT8_C( 98), INT8_C( -90),
|
|
INT8_C( 23), INT8_C( 99), INT8_C( -30), INT8_C( 38),
|
|
INT8_C( -18), INT8_C( -20), INT8_C( 65), INT8_C( -57)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 55), INT8_C( 33), INT8_C( 43), INT8_C( 65),
|
|
INT8_C( -59), INT8_C( -95), INT8_C( 10), INT8_C( 11),
|
|
INT8_C( 122), INT8_C( 35), INT8_C( 55), INT8_C( 107),
|
|
INT8_C( -46), INT8_C(-119), INT8_C(-106), INT8_C( 77),
|
|
INT8_C( -56), INT8_C( -78), INT8_C( -97), INT8_C(-126),
|
|
INT8_C( -36), INT8_C( 17), INT8_C( 13), INT8_C( 38),
|
|
INT8_C( 52), INT8_C( -31), INT8_C( 68), INT8_C( 51),
|
|
INT8_C( -16), INT8_C( 61), INT8_C( -72), INT8_C( -48)),
|
|
simde_mm256_set_epi8(INT8_C( 123), INT8_C(-111), INT8_C( -83), INT8_C( -8),
|
|
INT8_C( 66), INT8_C( -69), INT8_C( -27), INT8_C(-103),
|
|
INT8_C(-112), INT8_C( -80), INT8_C( 56), INT8_C( 60),
|
|
INT8_C(-106), INT8_C( -4), INT8_C(-128), INT8_C(-122),
|
|
INT8_C( 74), INT8_C( -55), INT8_C( -48), INT8_C(-128),
|
|
INT8_C( -2), INT8_C( 63), INT8_C( -37), INT8_C( 18),
|
|
INT8_C( -89), INT8_C( -76), INT8_C( 42), INT8_C( 62),
|
|
INT8_C( 74), INT8_C( -87), INT8_C( 30), INT8_C(-103)),
|
|
simde_mm256_set_epi8(INT8_C( 4), INT8_C( -10), INT8_C( -5), INT8_C( -1),
|
|
INT8_C( -4), INT8_C( 87), INT8_C( -59), INT8_C( -9),
|
|
INT8_C( -53), INT8_C( 83), INT8_C( -63), INT8_C( 99),
|
|
INT8_C( 55), INT8_C( 119), INT8_C( 36), INT8_C( -96),
|
|
INT8_C( -98), INT8_C( 22), INT8_C( 4), INT8_C(-128),
|
|
INT8_C( 16), INT8_C( -72), INT8_C( 114), INT8_C( 35),
|
|
INT8_C( -15), INT8_C( -10), INT8_C( 97), INT8_C(-112),
|
|
INT8_C(-109), INT8_C( -68), INT8_C( 8), INT8_C( 101)),
|
|
simde_mm256_set_epi8(INT8_C( 55), INT8_C(-111), INT8_C( -83), INT8_C( -8),
|
|
INT8_C( 66), INT8_C( -95), INT8_C( -27), INT8_C(-103),
|
|
INT8_C(-112), INT8_C( 35), INT8_C( 56), INT8_C( 107),
|
|
INT8_C( -46), INT8_C(-119), INT8_C(-106), INT8_C(-122),
|
|
INT8_C( 74), INT8_C( -78), INT8_C( -97), INT8_C(-128),
|
|
INT8_C( -36), INT8_C( 63), INT8_C( 13), INT8_C( 38),
|
|
INT8_C( -89), INT8_C( -76), INT8_C( 68), INT8_C( 62),
|
|
INT8_C( 74), INT8_C( -87), INT8_C( -72), INT8_C( -48)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 69), INT8_C( -38), INT8_C(-105), INT8_C( -77),
|
|
INT8_C( 3), INT8_C( -19), INT8_C( -91), INT8_C( 81),
|
|
INT8_C( -61), INT8_C( 88), INT8_C( -52), INT8_C( -76),
|
|
INT8_C(-100), INT8_C( -70), INT8_C( -64), INT8_C( 71),
|
|
INT8_C( 82), INT8_C(-122), INT8_C( -41), INT8_C( -86),
|
|
INT8_C( 9), INT8_C( 29), INT8_C( -31), INT8_C( -87),
|
|
INT8_C(-113), INT8_C( 100), INT8_C( 100), INT8_C( -55),
|
|
INT8_C( -11), INT8_C( 92), INT8_C( -87), INT8_C( 43)),
|
|
simde_mm256_set_epi8(INT8_C( 96), INT8_C(-116), INT8_C( 5), INT8_C( 16),
|
|
INT8_C( -66), INT8_C( 4), INT8_C( 8), INT8_C( 34),
|
|
INT8_C( 93), INT8_C( 90), INT8_C( -27), INT8_C( 86),
|
|
INT8_C( 115), INT8_C( 27), INT8_C( -30), INT8_C( 15),
|
|
INT8_C( 94), INT8_C( -93), INT8_C( -55), INT8_C( -18),
|
|
INT8_C(-122), INT8_C( 51), INT8_C( -22), INT8_C( -72),
|
|
INT8_C( -80), INT8_C( 24), INT8_C( 38), INT8_C( 87),
|
|
INT8_C( -35), INT8_C( -67), INT8_C( 94), INT8_C( -17)),
|
|
simde_mm256_set_epi8(INT8_C( -19), INT8_C( -11), INT8_C( 77), INT8_C( -75),
|
|
INT8_C( 98), INT8_C( -18), INT8_C( -28), INT8_C( 5),
|
|
INT8_C( 86), INT8_C(-117), INT8_C( 114), INT8_C( -52),
|
|
INT8_C( 63), INT8_C( -51), INT8_C( 110), INT8_C( -22),
|
|
INT8_C( 54), INT8_C( 36), INT8_C( 44), INT8_C( 72),
|
|
INT8_C( -14), INT8_C( -61), INT8_C( -76), INT8_C( 51),
|
|
INT8_C( 40), INT8_C( -28), INT8_C( -97), INT8_C( 114),
|
|
INT8_C(-128), INT8_C( 9), INT8_C( 94), INT8_C( -35)),
|
|
simde_mm256_set_epi8(INT8_C( 96), INT8_C(-116), INT8_C(-105), INT8_C( 16),
|
|
INT8_C( 3), INT8_C( 4), INT8_C( 8), INT8_C( 81),
|
|
INT8_C( -61), INT8_C( 90), INT8_C( -52), INT8_C( 86),
|
|
INT8_C(-100), INT8_C( 27), INT8_C( -64), INT8_C( 15),
|
|
INT8_C( 82), INT8_C(-122), INT8_C( -41), INT8_C( -86),
|
|
INT8_C(-122), INT8_C( 51), INT8_C( -22), INT8_C( -87),
|
|
INT8_C(-113), INT8_C( 24), INT8_C( 38), INT8_C( -55),
|
|
INT8_C( -35), INT8_C( 92), INT8_C( -87), INT8_C( -17)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_blendv_epi8(test_vec[i].a, test_vec[i].b, test_vec[i].i);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpeq_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8( INT8_C( -34), INT8_C( 65), INT8_C( -18), INT8_C( -94),
|
|
INT8_C( 20), INT8_C(-105), INT8_C( 79), INT8_C( -26),
|
|
INT8_C( 7), INT8_C( -36), INT8_C( 33), INT8_C( 123),
|
|
INT8_C( 115), INT8_C( -52), INT8_C( -98), INT8_C( 62),
|
|
INT8_C( 64), INT8_C( -91), INT8_C( 45), INT8_C( 102),
|
|
INT8_C( 21), INT8_C(-111), INT8_C( -41), INT8_C( -14),
|
|
INT8_C( 91), INT8_C(-106), INT8_C( 23), INT8_C( 86),
|
|
INT8_C(-108), INT8_C( 34), INT8_C( -9), INT8_C( 42)),
|
|
simde_mm256_set_epi8( INT8_C( -34), INT8_C( 65), INT8_C(-119), INT8_C( -94),
|
|
INT8_C( -15), INT8_C( 95), INT8_C( 72), INT8_C( 66),
|
|
INT8_C(-113), INT8_C( -36), ~INT8_C( 0), INT8_C( 123),
|
|
INT8_C( -47), INT8_C( -52), INT8_C( -7), INT8_C( 62),
|
|
INT8_C( 31), INT8_C( 79), INT8_C( 20), INT8_C( 102),
|
|
INT8_C( 21), INT8_C( 17), INT8_C(-125), INT8_C( -14),
|
|
INT8_C( 22), INT8_C(-111), INT8_C( 23), INT8_C( 100),
|
|
INT8_C(-122), INT8_C( 34), INT8_C( -26), INT8_C( 42)),
|
|
simde_mm256_set_epi8(~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( 61), INT8_C( 96), INT8_C( -54), INT8_C( 88),
|
|
INT8_C(-115), INT8_C( 14), INT8_C( 100), INT8_C( -28),
|
|
INT8_C( 78), INT8_C( -79), INT8_C( 80), INT8_C( 114),
|
|
INT8_C( 29), INT8_C( -69), INT8_C( 6), INT8_C(-127),
|
|
INT8_C( 116), INT8_C( 35), INT8_C( 49), INT8_C( -24),
|
|
INT8_C( 4), INT8_C(-123), INT8_C( -95), INT8_C( -23),
|
|
INT8_C( 44), INT8_C( 68), INT8_C( -84), INT8_C( -9),
|
|
INT8_C( -86), INT8_C( 117), INT8_C( 55), INT8_C( 121)),
|
|
simde_mm256_set_epi8( INT8_C( 61), INT8_C( 81), INT8_C( 33), INT8_C( 88),
|
|
INT8_C( -34), INT8_C( 14), INT8_C( 111), INT8_C( -28),
|
|
INT8_C( -70), INT8_C(-102), INT8_C( 116), INT8_C(-102),
|
|
INT8_C( 29), INT8_C( -10), INT8_C( 13), INT8_C( 109),
|
|
INT8_C( 116), INT8_C( -83), INT8_C( 49), INT8_C( 1),
|
|
INT8_C( 4), INT8_C(-123), INT8_C( -18), INT8_C( -23),
|
|
INT8_C( 44), INT8_C( 68), INT8_C(-109), INT8_C( 54),
|
|
INT8_C( 123), INT8_C( 62), INT8_C( 71), INT8_C( 3)),
|
|
simde_mm256_set_epi8(~INT8_C( 0), INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( -58), INT8_C( -55), INT8_C( 126), INT8_C( -17),
|
|
INT8_C( -94), INT8_C( -45), INT8_C( -42), INT8_C( 39),
|
|
INT8_C( -81), INT8_C( -73), INT8_C( -20), INT8_C( -73),
|
|
INT8_C( 79), INT8_C( 25), INT8_C( -86), INT8_C( -52),
|
|
INT8_C( 106), INT8_C( 58), INT8_C( 113), INT8_C( 61),
|
|
INT8_C( -71), INT8_C( -3), INT8_C( 101), INT8_C(-102),
|
|
INT8_C( -14), INT8_C( -40), INT8_C( 82), INT8_C( -84),
|
|
INT8_C( 49), INT8_C( 46), INT8_C( 59), INT8_C( -33)),
|
|
simde_mm256_set_epi8( INT8_C( 110), INT8_C( -67), INT8_C( 126), INT8_C( -17),
|
|
INT8_C( -94), INT8_C( -46), INT8_C( -74), INT8_C( -37),
|
|
INT8_C( -81), INT8_C( -93), INT8_C( 97), INT8_C( -73),
|
|
INT8_C( -66), INT8_C( 25), INT8_C( 37), INT8_C( -52),
|
|
INT8_C( 106), INT8_C( -80), INT8_C( 113), INT8_C( 61),
|
|
INT8_C( -50), INT8_C( 68), INT8_C( 101), INT8_C(-102),
|
|
INT8_C( -14), INT8_C( -35), INT8_C( 54), INT8_C( -2),
|
|
INT8_C( 49), INT8_C( 46), INT8_C( 6), INT8_C( 4)),
|
|
simde_mm256_set_epi8( INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( -9), INT8_C( 28), INT8_C( 1), INT8_C( 0),
|
|
INT8_C( 57), INT8_C( -72), INT8_C( -61), INT8_C( 74),
|
|
INT8_C(-105), INT8_C( 58), INT8_C( 84), INT8_C( 60),
|
|
INT8_C( 21), INT8_C( 38), INT8_C( 16), INT8_C( 25),
|
|
INT8_C( 2), INT8_C( -63), INT8_C( 28), INT8_C( 93),
|
|
INT8_C( -44), INT8_C( -78), INT8_C( -50), INT8_C( -21),
|
|
INT8_C( 47), INT8_C( 30), INT8_C( 97), INT8_C( 18),
|
|
INT8_C( -36), INT8_C( 72), INT8_C( -66), INT8_C( 124)),
|
|
simde_mm256_set_epi8( INT8_C(-127), INT8_C( -27), INT8_C( 86), INT8_C( -50),
|
|
INT8_C( 57), INT8_C( -49), INT8_C( -61), INT8_C( 74),
|
|
INT8_C(-105), INT8_C( -45), INT8_C( 125), INT8_C( 18),
|
|
INT8_C( -47), INT8_C( 70), INT8_C( 16), INT8_C( 90),
|
|
INT8_C( 2), INT8_C( -44), INT8_C( 121), INT8_C( 48),
|
|
INT8_C( -78), INT8_C( 120), INT8_C( -50), INT8_C( -21),
|
|
INT8_C( 47), INT8_C( -59), INT8_C( 97), INT8_C( 21),
|
|
INT8_C( -36), INT8_C( 72), INT8_C( -44), INT8_C( 124)),
|
|
simde_mm256_set_epi8( INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( 75), INT8_C( -6), INT8_C( -43), INT8_C( 107),
|
|
INT8_C( 28), INT8_C( 81), INT8_C( 82), INT8_C( 91),
|
|
INT8_C( 66), INT8_C( 107), INT8_C( -41), INT8_C( -50),
|
|
INT8_C( -5), INT8_C( 66), INT8_C(-100), INT8_C( 112),
|
|
INT8_C(-109), INT8_C( 92), INT8_C( -50), INT8_C( 68),
|
|
INT8_C( -54), INT8_C( 111), INT8_C( 25), INT8_C( 36),
|
|
INT8_C( 30), INT8_C( -33), INT8_C( 28), INT8_C( 68),
|
|
INT8_C( -69), INT8_C( 124), INT8_C(-124), INT8_C( 48)),
|
|
simde_mm256_set_epi8( INT8_C( 26), INT8_C( 124), INT8_C( -85), INT8_C( 90),
|
|
INT8_C( 49), INT8_C( -43), INT8_C( 82), INT8_C(-110),
|
|
INT8_C( -4), INT8_C(-103), INT8_C(-116), INT8_C( -91),
|
|
INT8_C( 101), INT8_C( -60), INT8_C( 28), INT8_C( -62),
|
|
INT8_C(-109), INT8_C( 2), INT8_C( 71), INT8_C( 68),
|
|
INT8_C( 92), INT8_C( -96), INT8_C( -47), INT8_C( 89),
|
|
INT8_C(-111), INT8_C( -89), INT8_C( 38), INT8_C( 109),
|
|
INT8_C( -69), INT8_C( 57), INT8_C( 87), INT8_C( 94)),
|
|
simde_mm256_set_epi8( INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( 78), INT8_C(-103), INT8_C( -83), INT8_C( -64),
|
|
INT8_C( 86), INT8_C( 62), INT8_C( 40), INT8_C(-116),
|
|
INT8_C( 49), INT8_C( 94), INT8_C( -31), INT8_C( 82),
|
|
INT8_C( -55), INT8_C(-100), INT8_C( -61), INT8_C( -62),
|
|
INT8_C(-101), INT8_C( 117), INT8_C( -20), INT8_C( 19),
|
|
INT8_C( -97), INT8_C( -75), INT8_C(-101), INT8_C( -39),
|
|
INT8_C( 28), INT8_C( 55), INT8_C( 85), INT8_C( 106),
|
|
INT8_C( -97), INT8_C( -74), INT8_C( 51), INT8_C( -54)),
|
|
simde_mm256_set_epi8( INT8_C(-116), INT8_C( -91), INT8_C( 105), INT8_C( -64),
|
|
INT8_C( -6), INT8_C( -63), INT8_C( 82), INT8_C( 4),
|
|
INT8_C( -7), INT8_C( -70), INT8_C( -31), INT8_C( -83),
|
|
INT8_C( 22), INT8_C(-100), INT8_C( 96), INT8_C( -62),
|
|
INT8_C(-120), INT8_C( 120), INT8_C( -20), INT8_C( -80),
|
|
INT8_C( -97), INT8_C( -75), INT8_C( -29), INT8_C( 4),
|
|
INT8_C( 28), INT8_C( 60), INT8_C( 79), INT8_C( 73),
|
|
INT8_C( 17), INT8_C(-120), INT8_C( 110), INT8_C( 100)),
|
|
simde_mm256_set_epi8( INT8_C( 0), INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( 118), INT8_C( 88), INT8_C( 13), INT8_C( 39),
|
|
INT8_C( -45), INT8_C( 46), INT8_C( -85), INT8_C( 17),
|
|
INT8_C( -7), INT8_C( 75), INT8_C( -5), INT8_C(-120),
|
|
INT8_C( -77), INT8_C( -49), INT8_C( 58), INT8_C( -50),
|
|
INT8_C( 0), INT8_C( 21), INT8_C( -11), INT8_C( -48),
|
|
INT8_C( -85), INT8_C( 55), INT8_C( 100), ~INT8_C( 0),
|
|
INT8_C( 7), INT8_C( 72), INT8_C( 25), INT8_C(-126),
|
|
INT8_C( -81), INT8_C( -15), INT8_C( -25), INT8_C( -55)),
|
|
simde_mm256_set_epi8( INT8_C( 107), INT8_C( 67), INT8_C( -53), INT8_C( 30),
|
|
INT8_C( 53), INT8_C( -25), INT8_C( 94), INT8_C( 90),
|
|
INT8_C( -59), INT8_C( 75), INT8_C( 65), INT8_C(-120),
|
|
INT8_C( 32), INT8_C( -11), INT8_C( 58), INT8_C( 33),
|
|
INT8_C( 0), INT8_C( 44), INT8_C( -11), INT8_C( 49),
|
|
INT8_C( -51), INT8_C( 55), INT8_C( 100), INT8_C( -67),
|
|
INT8_C( -45), INT8_C( 89), INT8_C( 25), INT8_C( 110),
|
|
INT8_C( 60), INT8_C( -42), INT8_C( -25), INT8_C( 1)),
|
|
simde_mm256_set_epi8( INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8( INT8_C( 47), INT8_C( 126), INT8_C( -95), INT8_C(-121),
|
|
INT8_C( 84), INT8_C( 11), INT8_C( -4), INT8_C( -74),
|
|
INT8_C(-124), INT8_C( 4), INT8_C( -12), INT8_C( 31),
|
|
INT8_C( 41), INT8_C( 31), INT8_C( -42), INT8_C( 92),
|
|
INT8_C( -62), INT8_C( -8), INT8_C( -73), INT8_C( 14),
|
|
INT8_C( 22), INT8_C(-109), INT8_C( 103), INT8_C( 90),
|
|
INT8_C( 98), INT8_C( -28), INT8_C( -11), INT8_C(-120),
|
|
INT8_C( -81), INT8_C( 0), INT8_C( 34), INT8_C( 36)),
|
|
simde_mm256_set_epi8( INT8_C( 47), INT8_C(-103), INT8_C( -95), INT8_C(-121),
|
|
INT8_C( 84), INT8_C( 72), INT8_C( 125), INT8_C( -13),
|
|
INT8_C( -49), INT8_C( 14), INT8_C( 44), INT8_C( 110),
|
|
INT8_C( 41), INT8_C( 68), INT8_C( -42), INT8_C( 92),
|
|
INT8_C( 107), INT8_C( -8), INT8_C( 127), INT8_C( 14),
|
|
INT8_C( 22), INT8_C(-109), INT8_C( -52), INT8_C( -3),
|
|
INT8_C( -78), INT8_C( 91), INT8_C( 8), INT8_C( 23),
|
|
INT8_C( 110), INT8_C( -91), INT8_C( 34), INT8_C( 17)),
|
|
simde_mm256_set_epi8(~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
~INT8_C( 0), INT8_C( 0), ~INT8_C( 0), ~INT8_C( 0),
|
|
INT8_C( 0), ~INT8_C( 0), INT8_C( 0), ~INT8_C( 0),
|
|
~INT8_C( 0), ~INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), ~INT8_C( 0), INT8_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpeq_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpeq_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16( INT16_C( -5413), INT16_C( -8669), INT16_C(-20019), INT16_C( 13281),
|
|
INT16_C( 31513), INT16_C( 29495), INT16_C( 24515), INT16_C( -4843),
|
|
INT16_C(-25942), INT16_C(-22058), INT16_C( 25862), INT16_C( 17599),
|
|
INT16_C( 3410), INT16_C(-25277), INT16_C( -9899), INT16_C( -1157)),
|
|
simde_mm256_set_epi16( INT16_C(-24951), INT16_C( -8669), INT16_C(-20019), INT16_C(-25059),
|
|
INT16_C(-16550), INT16_C( 29495), INT16_C( 14158), INT16_C( 15756),
|
|
INT16_C(-12717), INT16_C( 16217), INT16_C( 23007), INT16_C(-29661),
|
|
INT16_C( -4389), INT16_C( -6794), INT16_C( 24406), INT16_C( 3979)),
|
|
simde_mm256_set_epi16( INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), ~INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C(-24592), INT16_C(-14625), INT16_C(-22785), INT16_C( -539),
|
|
INT16_C( 27023), INT16_C( 22410), INT16_C( 24512), INT16_C( 28286),
|
|
INT16_C( -371), INT16_C(-19534), INT16_C( 20760), INT16_C( -2933),
|
|
INT16_C( 19420), INT16_C( 28265), INT16_C( -411), INT16_C(-25192)),
|
|
simde_mm256_set_epi16( INT16_C(-13031), INT16_C(-29481), INT16_C(-21398), INT16_C( 5762),
|
|
INT16_C(-11151), INT16_C( 22410), INT16_C(-17819), INT16_C(-18343),
|
|
INT16_C( -371), INT16_C(-18178), INT16_C( 32217), INT16_C(-13082),
|
|
INT16_C( 19420), INT16_C(-14308), INT16_C( -411), INT16_C(-25192)),
|
|
simde_mm256_set_epi16( INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), ~INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
~INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
~INT16_C( 0), INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C( -1787), INT16_C( 14472), INT16_C( 9645), INT16_C( 6467),
|
|
INT16_C(-28251), INT16_C( -4608), INT16_C(-20138), INT16_C(-12375),
|
|
INT16_C( -3139), INT16_C(-11799), INT16_C(-25694), INT16_C( -9505),
|
|
INT16_C( 2016), INT16_C(-12994), INT16_C( 12032), INT16_C( -1625)),
|
|
simde_mm256_set_epi16( INT16_C( 14082), INT16_C( 14472), INT16_C( 9645), INT16_C(-10341),
|
|
INT16_C(-21377), INT16_C(-28844), INT16_C(-27109), INT16_C(-21859),
|
|
INT16_C( -3139), INT16_C(-20139), INT16_C(-25694), INT16_C( 28917),
|
|
INT16_C( 5339), INT16_C( 19240), INT16_C( 12032), INT16_C( 2212)),
|
|
simde_mm256_set_epi16( INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
~INT16_C( 0), INT16_C( 0), ~INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), ~INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C( 29890), INT16_C( 31032), INT16_C(-29157), INT16_C(-14947),
|
|
INT16_C(-10307), INT16_C(-20105), INT16_C( -2072), INT16_C( 29196),
|
|
INT16_C( 1484), INT16_C(-11865), INT16_C(-30233), INT16_C( 30603),
|
|
INT16_C( 20632), INT16_C(-27772), INT16_C(-32273), INT16_C( 4867)),
|
|
simde_mm256_set_epi16( INT16_C(-21410), INT16_C( 9749), INT16_C(-29157), INT16_C(-14947),
|
|
INT16_C( 13547), INT16_C( 28436), INT16_C( -2072), INT16_C( 29196),
|
|
INT16_C( 1484), INT16_C(-14930), INT16_C( 6002), INT16_C( 30603),
|
|
INT16_C( 27473), INT16_C( 2844), INT16_C(-19044), INT16_C( 4867)),
|
|
simde_mm256_set_epi16( INT16_C( 0), INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0),
|
|
~INT16_C( 0), INT16_C( 0), INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), ~INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C( -2810), INT16_C(-12778), INT16_C( 16624), INT16_C( 2706),
|
|
INT16_C( 14585), INT16_C( -6866), INT16_C( -582), INT16_C( 29880),
|
|
INT16_C( 20309), INT16_C( 25315), INT16_C( -5634), INT16_C(-21292),
|
|
INT16_C( 11215), INT16_C( 13817), INT16_C( 26751), INT16_C( -8288)),
|
|
simde_mm256_set_epi16( INT16_C(-11737), INT16_C(-19770), INT16_C( 8400), INT16_C( 2706),
|
|
INT16_C( 14599), INT16_C( -6866), INT16_C( -582), INT16_C( 29880),
|
|
INT16_C( 20309), INT16_C( 32436), INT16_C( -5634), INT16_C(-21292),
|
|
INT16_C(-11784), INT16_C( 13817), INT16_C( 26751), INT16_C(-12877)),
|
|
simde_mm256_set_epi16( INT16_C( 0), INT16_C( 0), INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0),
|
|
~INT16_C( 0), INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C( 11738), INT16_C(-30358), INT16_C(-23042), INT16_C( -2979),
|
|
INT16_C( 32390), INT16_C( 22571), INT16_C( -5410), INT16_C( 14750),
|
|
INT16_C(-16092), INT16_C( 27869), INT16_C( 28085), INT16_C( 15025),
|
|
INT16_C(-11732), INT16_C( 28458), INT16_C( -3526), INT16_C(-21900)),
|
|
simde_mm256_set_epi16( INT16_C( 11738), INT16_C(-30358), INT16_C(-12411), INT16_C( -2979),
|
|
INT16_C(-27990), INT16_C( 25385), INT16_C( -5410), INT16_C( 13011),
|
|
INT16_C(-30216), INT16_C(-15754), INT16_C( 28085), INT16_C( 142),
|
|
INT16_C(-11865), INT16_C( 28458), INT16_C( 2605), INT16_C( 31867)),
|
|
simde_mm256_set_epi16( ~INT16_C( 0), ~INT16_C( 0), INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), ~INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), ~INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), ~INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C(-15649), INT16_C( 19434), INT16_C( 30307), INT16_C( -2580),
|
|
INT16_C(-17669), INT16_C(-12636), INT16_C(-26128), INT16_C( 1047),
|
|
INT16_C( 31189), INT16_C( -4800), INT16_C(-21775), INT16_C( 9584),
|
|
INT16_C(-10037), INT16_C(-12969), INT16_C( -2203), INT16_C( 7107)),
|
|
simde_mm256_set_epi16( INT16_C(-14042), INT16_C( 19434), INT16_C( 12761), INT16_C( -2580),
|
|
INT16_C(-14129), INT16_C(-21327), INT16_C( 8254), INT16_C( 17988),
|
|
INT16_C( 31189), INT16_C(-12604), INT16_C(-31847), INT16_C( 9584),
|
|
INT16_C( 2606), INT16_C(-15409), INT16_C( -2203), INT16_C( 7107)),
|
|
simde_mm256_set_epi16( INT16_C( 0), ~INT16_C( 0), INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
~INT16_C( 0), INT16_C( 0), INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), ~INT16_C( 0), ~INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16( INT16_C( 2093), INT16_C( 26175), INT16_C( 5850), INT16_C(-17892),
|
|
INT16_C(-28618), INT16_C(-20409), INT16_C( 201), INT16_C(-27373),
|
|
INT16_C(-25181), INT16_C( -3904), INT16_C( 26317), INT16_C( 18884),
|
|
INT16_C( 15503), INT16_C( 21511), INT16_C(-24060), INT16_C( -1242)),
|
|
simde_mm256_set_epi16( INT16_C(-27449), INT16_C( 26175), INT16_C( 26521), INT16_C(-16887),
|
|
INT16_C(-13967), INT16_C(-16902), INT16_C(-25148), INT16_C( 11331),
|
|
INT16_C(-22706), INT16_C( -3904), INT16_C( -3346), INT16_C( 18884),
|
|
INT16_C( 2207), INT16_C( 11164), INT16_C( 22502), INT16_C(-11226)),
|
|
simde_mm256_set_epi16( INT16_C( 0), ~INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), ~INT16_C( 0), INT16_C( 0), ~INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpeq_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpeq_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32( INT32_C( -566104414), INT32_C( 345460710), INT32_C( 131867003), INT32_C( 1942789694),
|
|
INT32_C( 1084566886), INT32_C( 361879538), INT32_C( 1536563030), INT32_C(-1809647830)),
|
|
simde_mm256_set_epi32( INT32_C( 1749780765), INT32_C( -245413822), INT32_C( 131867003), INT32_C( -777848334),
|
|
INT32_C( 525276311), INT32_C( 361879538), INT32_C( 378618724), INT32_C(-1809647830)),
|
|
simde_mm256_set_epi32( INT32_C( 0), INT32_C( 0), ~INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), ~INT32_C( 0), INT32_C( 0), ~INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( 1746696722), INT32_C( 940817566), INT32_C( -345075038), INT32_C( 1008650721),
|
|
INT32_C( 1982631981), INT32_C( 1481863730), INT32_C( 1367059109), INT32_C( -627319339)),
|
|
simde_mm256_set_epi32( INT32_C( 1746696722), INT32_C( 940817566), INT32_C(-2066241582), INT32_C( 1008650721),
|
|
INT32_C( 174011254), INT32_C(-1995628897), INT32_C( -710324691), INT32_C( -119123371)),
|
|
simde_mm256_set_epi32( ~INT32_C( 0), ~INT32_C( 0), INT32_C( 0), ~INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( 1029753432), INT32_C(-1928436508), INT32_C( 1320243314), INT32_C( 498796161),
|
|
INT32_C( 1948463592), INT32_C( 75866601), INT32_C( 742698231), INT32_C(-1435158663)),
|
|
simde_mm256_set_epi32( INT32_C( 1029753432), INT32_C(-1928436508), INT32_C(-1164282726), INT32_C( 267783533),
|
|
INT32_C( -156415231), INT32_C(-1409290651), INT32_C( -98856138), INT32_C( 2067678979)),
|
|
simde_mm256_set_epi32( ~INT32_C( 0), ~INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( -346859314), INT32_C( 1692797387), INT32_C( 66311928), INT32_C( 460824773),
|
|
INT32_C( -548661058), INT32_C( -254589283), INT32_C( 833835845), INT32_C(-1932331579)),
|
|
simde_mm256_set_epi32( INT32_C( -346859314), INT32_C( 60539810), INT32_C( 1011930823), INT32_C( 460824773),
|
|
INT32_C( 190841895), INT32_C( -254589283), INT32_C( 316499678), INT32_C(-1932331579)),
|
|
simde_mm256_set_epi32( ~INT32_C( 0), INT32_C( 0), INT32_C( 0), ~INT32_C( 0),
|
|
INT32_C( 0), ~INT32_C( 0), INT32_C( 0), ~INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( -959873297), INT32_C(-1563175385), INT32_C(-1346900809), INT32_C( 1327082188),
|
|
INT32_C( 1782214973), INT32_C(-1174575718), INT32_C( -220704084), INT32_C( 825113567)),
|
|
simde_mm256_set_epi32( INT32_C( -959873297), INT32_C( 735229659), INT32_C( -660381298), INT32_C(-1091295976),
|
|
INT32_C( 1782214973), INT32_C(-1174575718), INT32_C( 2094872318), INT32_C( 1028851204)),
|
|
simde_mm256_set_epi32( ~INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
~INT32_C( 0), ~INT32_C( 0), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( 1661232006), INT32_C( 1627888390), INT32_C( 757018179), INT32_C( -750573130),
|
|
INT32_C(-1367421353), INT32_C( 198410180), INT32_C(-1240440841), INT32_C(-1417499113)),
|
|
simde_mm256_set_epi32( INT32_C( -466269763), INT32_C( 49857616), INT32_C( 757018179), INT32_C( -750573130),
|
|
INT32_C(-1367421353), INT32_C(-1831110733), INT32_C(-1233216938), INT32_C( 84780453)),
|
|
simde_mm256_set_epi32( INT32_C( 0), INT32_C( 0), ~INT32_C( 0), ~INT32_C( 0),
|
|
~INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( -149159680), INT32_C( 968409930), INT32_C(-1757785028), INT32_C( 354816025),
|
|
INT32_C( 46210141), INT32_C( -726479125), INT32_C( 790520082), INT32_C( -599212420)),
|
|
simde_mm256_set_epi32( INT32_C( -149159680), INT32_C( 1775235902), INT32_C(-1757785028), INT32_C( -783938470),
|
|
INT32_C( 46210141), INT32_C( -726479125), INT32_C( -272289003), INT32_C( -599212420)),
|
|
simde_mm256_set_epi32( ~INT32_C( 0), INT32_C( 0), ~INT32_C( 0), INT32_C( 0),
|
|
~INT32_C( 0), ~INT32_C( 0), INT32_C( 0), ~INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32( INT32_C( 431380596), INT32_C( -800905622), INT32_C(-1090716510), INT32_C( 598832812),
|
|
INT32_C( 183783146), INT32_C( 1473748330), INT32_C( 1405235121), INT32_C( 1193787762)),
|
|
simde_mm256_set_epi32( INT32_C( 1093676520), INT32_C( -410887875), INT32_C( 1548812312), INT32_C( -913535121),
|
|
INT32_C( 183783146), INT32_C(-1507745238), INT32_C( 1405235121), INT32_C( 1193787762)),
|
|
simde_mm256_set_epi32( INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
~INT32_C( 0), INT32_C( 0), ~INT32_C( 0), ~INT32_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpeq_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpeq_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x( INT64_C( 5666986029204224795), INT64_C( 4139191150084672711),
|
|
INT64_C(-2995542033801296871), INT64_C( 2916699395471658679)),
|
|
simde_mm256_set_epi64x( INT64_C( 5666986029204224795), INT64_C(-4286656252876457389),
|
|
INT64_C( 1630571993074201933), INT64_C(-4091102519963379575)),
|
|
simde_mm256_set_epi64x( INT64_C( -1), INT64_C( 0),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C( 3487161978562406497), INT64_C( 3319820858778075593),
|
|
INT64_C(-2061262812497087366), INT64_C( 3422398331177828808)),
|
|
simde_mm256_set_epi64x( INT64_C( 3487161978562406497), INT64_C( 3319820858778075593),
|
|
INT64_C( 4615290220825808616), INT64_C(-1811913409974062507)),
|
|
simde_mm256_set_epi64x( INT64_C( -1), INT64_C( -1),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C( 6876132350949566240), INT64_C( 286650737897020179),
|
|
INT64_C( 8647803947797074216), INT64_C( 8045239586356137615)),
|
|
simde_mm256_set_epi64x( INT64_C(-2007896190058863769), INT64_C( 1398080065885028992),
|
|
INT64_C( 8575195519759543000), INT64_C( 3842062270653749921)),
|
|
simde_mm256_set_epi64x( INT64_C( 0), INT64_C( 0),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C( -813114899828683326), INT64_C( 8993356532590363052),
|
|
INT64_C( 1099980308418045920), INT64_C( -959713571456510913)),
|
|
simde_mm256_set_epi64x( INT64_C( -813114899828683326), INT64_C( 8993356532590363052),
|
|
INT64_C( 2705033811286181232), INT64_C(-9000650858577263758)),
|
|
simde_mm256_set_epi64x( INT64_C( -1), INT64_C( -1),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C(-2995469803746067901), INT64_C( 8439110829491825822),
|
|
INT64_C( 622618816590200788), INT64_C(-4486881289174213355)),
|
|
simde_mm256_set_epi64x( INT64_C(-2995469803746067901), INT64_C(-3762957269640528607),
|
|
INT64_C( 622618816590200788), INT64_C(-3609138253339109026)),
|
|
simde_mm256_set_epi64x( ~INT64_C( 0), INT64_C( 0),
|
|
~INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C(-1016066772373646945), INT64_C( 3813602464259710788),
|
|
INT64_C( 7563424360708952600), INT64_C(-5726115040178877821)),
|
|
simde_mm256_set_epi64x( INT64_C(-1016066772373646945), INT64_C( 3813602464259710788),
|
|
INT64_C(-7344230325683392237), INT64_C(-5726115040178877821)),
|
|
simde_mm256_set_epi64x( ~INT64_C( 0), ~INT64_C( 0),
|
|
INT64_C( 0), ~INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C(-5638985149235693304), INT64_C( 3850441284517009347),
|
|
INT64_C(-7932931861129304736), INT64_C(-7323455422359325640)),
|
|
simde_mm256_set_epi64x( INT64_C(-6947747787688303029), INT64_C( 7867789037175719368),
|
|
INT64_C(-7932931861129304736), INT64_C( 356641616463870387)),
|
|
simde_mm256_set_epi64x( INT64_C( 0), INT64_C( 0),
|
|
~INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x( INT64_C(-3620459218438416224), INT64_C(-7960741818410807131),
|
|
INT64_C( 2210317486113607969), INT64_C( 2056660070405601362)),
|
|
simde_mm256_set_epi64x( INT64_C( 186345282622433582), INT64_C(-7960741818410807131),
|
|
INT64_C( 2210317486113607969), INT64_C( 8434183884659739058)),
|
|
simde_mm256_set_epi64x( INT64_C( 0), ~INT64_C( 0),
|
|
~INT64_C( 0), INT64_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpeq_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpgt_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 97), INT8_C( 38), INT8_C( 50), INT8_C( -69),
|
|
INT8_C(-120), INT8_C( 113), INT8_C( -33), INT8_C( -11),
|
|
INT8_C( 68), INT8_C( 95), INT8_C( 30), INT8_C( 12),
|
|
INT8_C( -73), INT8_C( -78), INT8_C( -31), INT8_C( -6),
|
|
INT8_C( -85), INT8_C( 8), INT8_C( -57), INT8_C( 86),
|
|
INT8_C(-111), INT8_C( 96), INT8_C( 27), INT8_C( -37),
|
|
INT8_C( 36), INT8_C(-109), INT8_C( -29), INT8_C( 11),
|
|
INT8_C( 121), INT8_C( 68), INT8_C( -8), INT8_C(-117)),
|
|
simde_mm256_set_epi8(INT8_C( -11), INT8_C( -47), INT8_C( 44), INT8_C( 92),
|
|
INT8_C(-103), INT8_C( 119), INT8_C( 74), INT8_C( -33),
|
|
INT8_C( 46), INT8_C( -92), INT8_C( -68), INT8_C( 34),
|
|
INT8_C( 87), INT8_C( -27), INT8_C( -38), INT8_C( 8),
|
|
INT8_C( -43), INT8_C( 93), INT8_C( 8), INT8_C(-116),
|
|
INT8_C(-110), INT8_C( 42), INT8_C( -23), INT8_C( 50),
|
|
INT8_C( 67), INT8_C( -92), INT8_C( -32), INT8_C( 41),
|
|
INT8_C( -11), INT8_C( 105), INT8_C( -20), INT8_C( 57)),
|
|
simde_mm256_set_epi8(INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -79), INT8_C( 114), INT8_C( 20), INT8_C( 6),
|
|
INT8_C( -80), INT8_C( 63), INT8_C( 115), INT8_C( -39),
|
|
INT8_C( 103), INT8_C(-111), INT8_C( -9), INT8_C( 41),
|
|
INT8_C(-111), INT8_C( 96), INT8_C(-117), INT8_C( -5),
|
|
INT8_C( -32), INT8_C( 112), INT8_C( 94), INT8_C( -30),
|
|
INT8_C( 1), INT8_C( 15), INT8_C( 71), INT8_C( 106),
|
|
INT8_C( 89), INT8_C( 14), INT8_C( -92), INT8_C( -5),
|
|
INT8_C( 34), INT8_C( 41), INT8_C( 6), INT8_C( 46)),
|
|
simde_mm256_set_epi8(INT8_C( 69), INT8_C( 68), INT8_C( -50), INT8_C( -53),
|
|
INT8_C( 53), INT8_C(-115), INT8_C( -3), INT8_C( -63),
|
|
INT8_C( 44), INT8_C( -26), INT8_C( -60), INT8_C( 77),
|
|
INT8_C( -39), INT8_C( 69), INT8_C( -4), INT8_C( 67),
|
|
INT8_C( 2), INT8_C( 127), INT8_C(-108), INT8_C( -32),
|
|
INT8_C( -90), INT8_C( -18), INT8_C( 30), INT8_C( 126),
|
|
INT8_C( 71), INT8_C( 87), INT8_C( 81), INT8_C( 8),
|
|
INT8_C( 97), INT8_C( 48), INT8_C( 122), INT8_C( 19)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -1)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 4), INT8_C( -93), INT8_C( 78), INT8_C( -99),
|
|
INT8_C( -33), INT8_C( 93), INT8_C(-119), INT8_C( -26),
|
|
INT8_C(-115), INT8_C( -63), INT8_C( -15), INT8_C( -15),
|
|
INT8_C( 51), INT8_C( 56), INT8_C(-113), INT8_C( -56),
|
|
INT8_C( 88), INT8_C( 97), INT8_C( 124), INT8_C( 124),
|
|
INT8_C( -61), INT8_C( 109), INT8_C( 81), INT8_C( 37),
|
|
INT8_C( 67), INT8_C( -23), INT8_C( 20), INT8_C( 101),
|
|
INT8_C(-111), INT8_C( 20), INT8_C( -17), INT8_C( 88)),
|
|
simde_mm256_set_epi8(INT8_C( -45), INT8_C( -79), INT8_C( 95), INT8_C( 42),
|
|
INT8_C( -8), INT8_C( 12), INT8_C( 84), INT8_C( -28),
|
|
INT8_C( -9), INT8_C( 73), INT8_C( 108), INT8_C( 19),
|
|
INT8_C( -1), INT8_C( -28), INT8_C( 40), INT8_C( -89),
|
|
INT8_C( 87), INT8_C(-118), INT8_C( 52), INT8_C( -73),
|
|
INT8_C( 83), INT8_C( -87), INT8_C( -94), INT8_C( -66),
|
|
INT8_C( 22), INT8_C( -68), INT8_C(-100), INT8_C( -90),
|
|
INT8_C( 59), INT8_C(-103), INT8_C( -68), INT8_C( 90)),
|
|
simde_mm256_set_epi8(INT8_C( -1), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( 0)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 78), INT8_C( -98), INT8_C(-121), INT8_C( 92),
|
|
INT8_C( -8), INT8_C( 96), INT8_C(-118), INT8_C( -55),
|
|
INT8_C( -74), INT8_C( 105), INT8_C( -18), INT8_C( 33),
|
|
INT8_C( 85), INT8_C( -52), INT8_C( 68), INT8_C( 9),
|
|
INT8_C( -37), INT8_C( 70), INT8_C( 98), INT8_C( -80),
|
|
INT8_C( -54), INT8_C(-128), INT8_C( -94), INT8_C(-119),
|
|
INT8_C(-113), INT8_C(-115), INT8_C( 71), INT8_C( -46),
|
|
INT8_C( 19), INT8_C( 125), INT8_C( 40), INT8_C( 3)),
|
|
simde_mm256_set_epi8(INT8_C( -28), INT8_C(-110), INT8_C(-103), INT8_C( 3),
|
|
INT8_C(-127), INT8_C( 24), INT8_C( 119), INT8_C( 81),
|
|
INT8_C( -7), INT8_C( -15), INT8_C( 106), INT8_C( 4),
|
|
INT8_C( -43), INT8_C( 98), INT8_C( -93), INT8_C( 36),
|
|
INT8_C( -1), INT8_C( 44), INT8_C( 82), INT8_C( 14),
|
|
INT8_C( 0), INT8_C( 125), INT8_C( 43), INT8_C( -25),
|
|
INT8_C( 68), INT8_C( 74), INT8_C( 8), INT8_C( 53),
|
|
INT8_C( -2), INT8_C( 27), INT8_C( -33), INT8_C( -9)),
|
|
simde_mm256_set_epi8(INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( -1)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 95), INT8_C( -80), INT8_C( -95), INT8_C( 93),
|
|
INT8_C( 6), INT8_C(-125), INT8_C( -26), INT8_C( 102),
|
|
INT8_C( 60), INT8_C( -54), INT8_C( 123), INT8_C( -73),
|
|
INT8_C( -99), INT8_C( 28), INT8_C( 26), INT8_C(-127),
|
|
INT8_C( 12), INT8_C( -51), INT8_C( 90), INT8_C( -32),
|
|
INT8_C( -10), INT8_C( 41), INT8_C( -30), INT8_C( 107),
|
|
INT8_C( 23), INT8_C( 114), INT8_C( 116), INT8_C( -31),
|
|
INT8_C( -33), INT8_C( -82), INT8_C( 21), INT8_C( 83)),
|
|
simde_mm256_set_epi8(INT8_C( 49), INT8_C( -50), INT8_C( -70), INT8_C( -68),
|
|
INT8_C( 71), INT8_C( -80), INT8_C( -71), INT8_C( 39),
|
|
INT8_C( 88), INT8_C(-120), INT8_C( 70), INT8_C(-124),
|
|
INT8_C( 40), INT8_C(-103), INT8_C( 95), INT8_C(-100),
|
|
INT8_C( -5), INT8_C( 64), INT8_C( -11), INT8_C( -4),
|
|
INT8_C( -28), INT8_C( -66), INT8_C( 41), INT8_C( 31),
|
|
INT8_C( 82), INT8_C( 26), INT8_C( -64), INT8_C( 57),
|
|
INT8_C( 27), INT8_C( 15), INT8_C( 57), INT8_C(-125)),
|
|
simde_mm256_set_epi8(INT8_C( -1), INT8_C( 0), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -1)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 57), INT8_C(-121), INT8_C( -6), INT8_C( -74),
|
|
INT8_C( 22), INT8_C( -63), INT8_C( 17), INT8_C( 101),
|
|
INT8_C( 43), INT8_C( -53), INT8_C(-112), INT8_C( -25),
|
|
INT8_C( 85), INT8_C( 55), INT8_C( 77), INT8_C( -58),
|
|
INT8_C( 73), INT8_C( 35), INT8_C( -70), INT8_C( 30),
|
|
INT8_C( -78), INT8_C( 4), INT8_C( -97), INT8_C( 5),
|
|
INT8_C( -36), INT8_C( 28), INT8_C( 95), INT8_C( 75),
|
|
INT8_C( -88), INT8_C( 11), INT8_C( 45), INT8_C( -19)),
|
|
simde_mm256_set_epi8(INT8_C( 85), INT8_C( 121), INT8_C( 8), INT8_C( 127),
|
|
INT8_C(-122), INT8_C( -88), INT8_C( 107), INT8_C( 76),
|
|
INT8_C(-128), INT8_C(-125), INT8_C( 90), INT8_C( 68),
|
|
INT8_C( -36), INT8_C( 75), INT8_C( -58), INT8_C( 50),
|
|
INT8_C( 69), INT8_C(-119), INT8_C(-102), INT8_C( -69),
|
|
INT8_C( 16), INT8_C( 98), INT8_C( 34), INT8_C(-127),
|
|
INT8_C( 10), INT8_C( 69), INT8_C( 121), INT8_C(-126),
|
|
INT8_C( 88), INT8_C( -14), INT8_C(-110), INT8_C( -45)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -41), INT8_C( -49), INT8_C( 85), INT8_C( 123),
|
|
INT8_C( -68), INT8_C( -82), INT8_C( -28), INT8_C( -31),
|
|
INT8_C( 16), INT8_C( 27), INT8_C( 9), INT8_C(-102),
|
|
INT8_C( 78), INT8_C( 37), INT8_C( -66), INT8_C( 41),
|
|
INT8_C( -11), INT8_C(-117), INT8_C( 83), INT8_C( 41),
|
|
INT8_C(-105), INT8_C( 71), INT8_C( -12), INT8_C( 118),
|
|
INT8_C( -49), INT8_C( -73), INT8_C( -68), INT8_C( -18),
|
|
INT8_C( 118), INT8_C( 110), INT8_C( 85), INT8_C( 87)),
|
|
simde_mm256_set_epi8(INT8_C( 117), INT8_C( -99), INT8_C( 113), INT8_C( 26),
|
|
INT8_C( -41), INT8_C( 64), INT8_C( 93), INT8_C( 98),
|
|
INT8_C( 100), INT8_C( 92), INT8_C( -14), INT8_C( 86),
|
|
INT8_C( 83), INT8_C( 11), INT8_C( -24), INT8_C( 12),
|
|
INT8_C( 30), INT8_C( 43), INT8_C( 100), INT8_C( 94),
|
|
INT8_C( 19), INT8_C( 46), INT8_C( -17), INT8_C( 0),
|
|
INT8_C( 9), INT8_C( 104), INT8_C( 26), INT8_C( 39),
|
|
INT8_C( 102), INT8_C( -79), INT8_C( 114), INT8_C( 9)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( -1)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 102), INT8_C( -3), INT8_C( -18), INT8_C(-123),
|
|
INT8_C( -72), INT8_C( 10), INT8_C( 86), INT8_C( 30),
|
|
INT8_C( -77), INT8_C( 95), INT8_C( -77), INT8_C( 0),
|
|
INT8_C( -69), INT8_C( -21), INT8_C( 52), INT8_C( -84),
|
|
INT8_C( 45), INT8_C( -12), INT8_C( -37), INT8_C( 90),
|
|
INT8_C( 28), INT8_C(-104), INT8_C( 106), INT8_C( 118),
|
|
INT8_C( -89), INT8_C( 3), INT8_C( 10), INT8_C( 107),
|
|
INT8_C( 119), INT8_C( 18), INT8_C( -95), INT8_C( 109)),
|
|
simde_mm256_set_epi8(INT8_C( -86), INT8_C( 18), INT8_C( -58), INT8_C( 3),
|
|
INT8_C( -64), INT8_C( -78), INT8_C( -50), INT8_C( 105),
|
|
INT8_C( 15), INT8_C(-117), INT8_C( -59), INT8_C( 105),
|
|
INT8_C( -20), INT8_C( -76), INT8_C( -88), INT8_C(-122),
|
|
INT8_C( -16), INT8_C( -87), INT8_C( 108), INT8_C( -44),
|
|
INT8_C( -34), INT8_C( -65), INT8_C( 125), INT8_C( -17),
|
|
INT8_C(-119), INT8_C( 55), INT8_C( -39), INT8_C( -68),
|
|
INT8_C(-116), INT8_C( 45), INT8_C(-101), INT8_C( 61)),
|
|
simde_mm256_set_epi8(INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( -1), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( 0), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( -1),
|
|
INT8_C( -1), INT8_C( 0), INT8_C( -1), INT8_C( -1)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpgt_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpgt_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 22495), INT16_C( -4666), INT16_C( 11364), INT16_C( 3408),
|
|
INT16_C( -7753), INT16_C( 22355), INT16_C( 25225), INT16_C(-16816),
|
|
INT16_C( 30843), INT16_C( 15445), INT16_C(-14188), INT16_C( 18672),
|
|
INT16_C(-17933), INT16_C( 19821), INT16_C( -7211), INT16_C( 10864)),
|
|
simde_mm256_set_epi16(INT16_C( -752), INT16_C(-15840), INT16_C(-30268), INT16_C( 11179),
|
|
INT16_C( 16785), INT16_C(-16319), INT16_C( 8147), INT16_C(-29538),
|
|
INT16_C( 19069), INT16_C( 27101), INT16_C( 26817), INT16_C(-21010),
|
|
INT16_C(-18350), INT16_C( 1385), INT16_C(-28379), INT16_C(-19254)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 22399), INT16_C( -10), INT16_C( 26109), INT16_C( 19317),
|
|
INT16_C( 26547), INT16_C( 21309), INT16_C(-21770), INT16_C(-29851),
|
|
INT16_C( 8254), INT16_C( -6152), INT16_C( 14575), INT16_C(-26009),
|
|
INT16_C( -9485), INT16_C( 5665), INT16_C( 19505), INT16_C( -7563)),
|
|
simde_mm256_set_epi16(INT16_C( 14612), INT16_C(-31260), INT16_C(-18743), INT16_C( -4117),
|
|
INT16_C( 18997), INT16_C(-26816), INT16_C( 13752), INT16_C( 24083),
|
|
INT16_C(-17683), INT16_C(-12944), INT16_C(-20564), INT16_C( -4251),
|
|
INT16_C( -8899), INT16_C( -5996), INT16_C( 20472), INT16_C( -9514)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -1570), INT16_C(-21545), INT16_C(-26360), INT16_C( -8434),
|
|
INT16_C( -3275), INT16_C(-16762), INT16_C( -5746), INT16_C( 30695),
|
|
INT16_C( 2714), INT16_C( 10463), INT16_C( 9000), INT16_C( 9451),
|
|
INT16_C( 23785), INT16_C( 12389), INT16_C(-26622), INT16_C(-15647)),
|
|
simde_mm256_set_epi16(INT16_C( 1010), INT16_C(-25985), INT16_C( 16762), INT16_C( 1632),
|
|
INT16_C(-18641), INT16_C( 15349), INT16_C(-16838), INT16_C(-20536),
|
|
INT16_C(-25875), INT16_C( 26970), INT16_C(-23524), INT16_C( 11391),
|
|
INT16_C( 3100), INT16_C(-31773), INT16_C( 26059), INT16_C( 11041)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 23915), INT16_C( 959), INT16_C(-22514), INT16_C( 13747),
|
|
INT16_C(-26649), INT16_C( 22646), INT16_C( 13432), INT16_C( 27482),
|
|
INT16_C( 19401), INT16_C( 30181), INT16_C( 31161), INT16_C(-17967),
|
|
INT16_C(-19058), INT16_C( 31935), INT16_C( 11181), INT16_C( 23239)),
|
|
simde_mm256_set_epi16(INT16_C(-28186), INT16_C( 2084), INT16_C( 31597), INT16_C( 7566),
|
|
INT16_C( 21799), INT16_C(-27106), INT16_C( 4736), INT16_C( 18793),
|
|
INT16_C(-13965), INT16_C(-17482), INT16_C( 12657), INT16_C(-20379),
|
|
INT16_C( 24896), INT16_C( 28918), INT16_C( 22577), INT16_C( 29712)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 11952), INT16_C( 18081), INT16_C( 7197), INT16_C( -9524),
|
|
INT16_C( 18521), INT16_C( 8735), INT16_C( 31233), INT16_C(-18919),
|
|
INT16_C( 8906), INT16_C( 21111), INT16_C( 27720), INT16_C( 5158),
|
|
INT16_C( 2673), INT16_C( 31824), INT16_C(-18067), INT16_C( -891)),
|
|
simde_mm256_set_epi16(INT16_C(-18602), INT16_C( 15849), INT16_C(-28095), INT16_C( -3999),
|
|
INT16_C( 13518), INT16_C(-13535), INT16_C(-30865), INT16_C( 675),
|
|
INT16_C(-26284), INT16_C( -1429), INT16_C(-19333), INT16_C(-26108),
|
|
INT16_C( 10384), INT16_C(-21020), INT16_C(-15076), INT16_C( 30415)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-31253), INT16_C( -5290), INT16_C(-20180), INT16_C( 8300),
|
|
INT16_C( 29534), INT16_C( 10169), INT16_C( 27568), INT16_C(-21872),
|
|
INT16_C( 20546), INT16_C( 3171), INT16_C( -5551), INT16_C( 13838),
|
|
INT16_C( 10100), INT16_C(-27385), INT16_C( 19172), INT16_C(-26206)),
|
|
simde_mm256_set_epi16(INT16_C(-12916), INT16_C( 16100), INT16_C(-14860), INT16_C( 6730),
|
|
INT16_C( 2608), INT16_C(-17352), INT16_C( 13860), INT16_C( 6700),
|
|
INT16_C( -7357), INT16_C( -1733), INT16_C( 7387), INT16_C( 5378),
|
|
INT16_C(-19225), INT16_C( -5805), INT16_C( 154), INT16_C(-20617)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( -1), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 13973), INT16_C( 21863), INT16_C( -4187), INT16_C( 31713),
|
|
INT16_C( -2161), INT16_C(-12788), INT16_C( 13548), INT16_C( 19072),
|
|
INT16_C(-23365), INT16_C( 2809), INT16_C( 16101), INT16_C( -9274),
|
|
INT16_C( 12377), INT16_C( 26381), INT16_C( 29677), INT16_C( 4006)),
|
|
simde_mm256_set_epi16(INT16_C( -9250), INT16_C(-11965), INT16_C(-16314), INT16_C( -8035),
|
|
INT16_C(-12852), INT16_C( -3996), INT16_C( 8694), INT16_C( -8455),
|
|
INT16_C( 12571), INT16_C(-15529), INT16_C( -8320), INT16_C( 14428),
|
|
INT16_C( -5397), INT16_C( 17843), INT16_C( 7761), INT16_C( -1266)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 7404), INT16_C( 10935), INT16_C(-26115), INT16_C( 8618),
|
|
INT16_C(-27599), INT16_C( 31224), INT16_C( 4654), INT16_C(-18707),
|
|
INT16_C( 12785), INT16_C( 22785), INT16_C( 25148), INT16_C(-31622),
|
|
INT16_C( 17070), INT16_C(-22617), INT16_C( 6953), INT16_C(-14046)),
|
|
simde_mm256_set_epi16(INT16_C(-11447), INT16_C( 18342), INT16_C( 563), INT16_C(-13432),
|
|
INT16_C( 21117), INT16_C( 29427), INT16_C( 31704), INT16_C( 14377),
|
|
INT16_C( 14770), INT16_C( -3712), INT16_C( 7229), INT16_C(-22634),
|
|
INT16_C( 28493), INT16_C(-28170), INT16_C( 5912), INT16_C( 7039)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpgt_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpgt_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-1910963751), INT32_C(-1037527336), INT32_C( -581253082), INT32_C( -805157505),
|
|
INT32_C( 1446966287), INT32_C( -8913681), INT32_C( -494526366), INT32_C(-1857474161)),
|
|
simde_mm256_set_epi32(INT32_C(-1143050049), INT32_C(-1545949366), INT32_C( 1503277288), INT32_C(-1357138171),
|
|
INT32_C( 1058844939), INT32_C( 309480335), INT32_C( 1825640960), INT32_C(-2083253752)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( -1), INT32_C( 0), INT32_C( 0), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1125895018), INT32_C( -151199733), INT32_C(-1156572232), INT32_C(-1719423594),
|
|
INT32_C(-1350415044), INT32_C( 1941048360), INT32_C( 1462693644), INT32_C( 157276070)),
|
|
simde_mm256_set_epi32(INT32_C( 1685470989), INT32_C( -23549807), INT32_C( 2101982138), INT32_C(-1846214249),
|
|
INT32_C(-1855916776), INT32_C( -540831398), INT32_C( 233301808), INT32_C( 1667068415)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( -1), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-2064202369), INT32_C( -937796718), INT32_C( 1860922821), INT32_C( -943515104),
|
|
INT32_C( 1932702217), INT32_C(-1909235607), INT32_C( -701927701), INT32_C( 2122537608)),
|
|
simde_mm256_set_epi32(INT32_C( 1359427872), INT32_C( 430067405), INT32_C(-2017266204), INT32_C( -112174075),
|
|
INT32_C(-2036257158), INT32_C( 794990098), INT32_C( 1595368835), INT32_C(-2025748789)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( 0), INT32_C( 0), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 101914014), INT32_C( 1252307439), INT32_C( -251229086), INT32_C( 1747655874),
|
|
INT32_C( 1975156439), INT32_C( 244588822), INT32_C(-2030488384), INT32_C( -41784348)),
|
|
simde_mm256_set_epi32(INT32_C( 126704158), INT32_C(-1817043660), INT32_C( 67229317), INT32_C( 1709840887),
|
|
INT32_C( -401701180), INT32_C(-1816869894), INT32_C( -356935412), INT32_C( 1029497038)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1821031073), INT32_C(-1888821389), INT32_C( 1302274763), INT32_C( -889069785),
|
|
INT32_C( 849224332), INT32_C( 1448513971), INT32_C(-1444618137), INT32_C( -857531383)),
|
|
simde_mm256_set_epi32(INT32_C( -294182987), INT32_C(-1911426210), INT32_C( 1273887477), INT32_C( -804272895),
|
|
INT32_C(-1138168885), INT32_C(-1273049807), INT32_C( -920424822), INT32_C( 75748881)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -145989095), INT32_C( 1224886052), INT32_C(-1270092347), INT32_C(-2004839127),
|
|
INT32_C( -805168375), INT32_C(-2053011497), INT32_C( 926069792), INT32_C( -523797780)),
|
|
simde_mm256_set_epi32(INT32_C( 1782736183), INT32_C( 1196895214), INT32_C( 2023829967), INT32_C( 431966763),
|
|
INT32_C(-1279096565), INT32_C(-1568278654), INT32_C( -225755322), INT32_C( 800135833)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( 0), INT32_C( -1), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 45181175), INT32_C( 2067174734), INT32_C(-1046962322), INT32_C( -770870625),
|
|
INT32_C( 166196701), INT32_C(-1211694319), INT32_C( 1891438592), INT32_C(-1986783509)),
|
|
simde_mm256_set_epi32(INT32_C( 1357811899), INT32_C( -666006860), INT32_C( -78093915), INT32_C(-1784875915),
|
|
INT32_C(-1592390514), INT32_C( -295345562), INT32_C(-1194315003), INT32_C( -378378269)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( -1), INT32_C( 0), INT32_C( -1), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 2029570724), INT32_C( 593067919), INT32_C( 1378001411), INT32_C(-1490077172),
|
|
INT32_C( -985008502), INT32_C( -780769236), INT32_C( 983706005), INT32_C( -145048806)),
|
|
simde_mm256_set_epi32(INT32_C( -371614648), INT32_C( 790968401), INT32_C( 604322541), INT32_C( 1275463353),
|
|
INT32_C( 507685025), INT32_C(-1785065497), INT32_C( -324987069), INT32_C( 1403024939)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( 0), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpgt_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cmpgt_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 2118945800826688975), INT64_C(-2048024407550915063),
|
|
INT64_C( 5214505670652994271), INT64_C( -257856994503089701)),
|
|
simde_mm256_set_epi64x(INT64_C( 5695011750507465952), INT64_C( -909596801509157384),
|
|
INT64_C( 8030198869340496548), INT64_C( 154404577117411578)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 0),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5911350820320548021), INT64_C( 1593992970237440641),
|
|
INT64_C( 1816057404225443518), INT64_C(-5807847363009183486)),
|
|
simde_mm256_set_epi64x(INT64_C( 6716528373762493386), INT64_C(-8043125522610464194),
|
|
INT64_C( 8780083716644576089), INT64_C( 1141738695323567528)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C( -1),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 2128200156105206458), INT64_C( 4268557007045133354),
|
|
INT64_C( 922795411729807384), INT64_C( -370673782849908924)),
|
|
simde_mm256_set_epi64x(INT64_C(-4606711496612992363), INT64_C( 5770563142009272389),
|
|
INT64_C( 5439573582391425757), INT64_C( 3818549561656095124)),
|
|
simde_mm256_set_epi64x(INT64_C( -1), INT64_C( 0),
|
|
INT64_C( 0), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-7763872078520682010), INT64_C( 8214461135943818795),
|
|
INT64_C( 6913361685886042209), INT64_C( 4675504907089870645)),
|
|
simde_mm256_set_epi64x(INT64_C( 4559571845325885325), INT64_C(-5258431881764629271),
|
|
INT64_C( 5559569102824249097), INT64_C( 5799667037503013333)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C( -1),
|
|
INT64_C( -1), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 4800525853411880003), INT64_C( -184846840160593290),
|
|
INT64_C(-4953203027402144401), INT64_C( 2572609663077992835)),
|
|
simde_mm256_set_epi64x(INT64_C(-5431416973650143300), INT64_C( 5030179310017915920),
|
|
INT64_C(-6125011459628645754), INT64_C(-8488302794525901027)),
|
|
simde_mm256_set_epi64x(INT64_C( -1), INT64_C( 0),
|
|
INT64_C( -1), INT64_C( -1)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3860235829589315850), INT64_C( 8837948345888719516),
|
|
INT64_C( 3875197176959192831), INT64_C(-5180468743599698974)),
|
|
simde_mm256_set_epi64x(INT64_C(-1290331525121336992), INT64_C(-2797732422128290053),
|
|
INT64_C(-1679378228033738615), INT64_C(-7981001780127731934)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C( -1),
|
|
INT64_C( -1), INT64_C( -1)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-1174099241428997420), INT64_C( -973237140110744253),
|
|
INT64_C(-2478103055519574033), INT64_C(-4160968278707001293)),
|
|
simde_mm256_set_epi64x(INT64_C(-5836788839917359935), INT64_C( 9029070361682465515),
|
|
INT64_C( 7441474531728878768), INT64_C(-8910660672377811998)),
|
|
simde_mm256_set_epi64x(INT64_C( -1), INT64_C( 0),
|
|
INT64_C( 0), INT64_C( -1)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 660412182468938166), INT64_C( 2628509021710534078),
|
|
INT64_C(-4480617326594733579), INT64_C( 6124790654743076244)),
|
|
simde_mm256_set_epi64x(INT64_C(-2572783283758925366), INT64_C( 8355777023791813662),
|
|
INT64_C( 7632362282544129149), INT64_C(-5998036421176707691)),
|
|
simde_mm256_set_epi64x(INT64_C( -1), INT64_C( 0),
|
|
INT64_C( 0), INT64_C( -1)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cmpgt_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_broadcastb_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi8(INT8_C( -20), INT8_C( 103), INT8_C( -20), INT8_C( 116),
|
|
INT8_C( -9), INT8_C( 73), INT8_C( 44), INT8_C( 79),
|
|
INT8_C( -20), INT8_C( -81), INT8_C(-114), INT8_C( -81),
|
|
INT8_C( 10), INT8_C( 63), INT8_C( -41), INT8_C(-117)),
|
|
simde_mm_set_epi8(INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117)) },
|
|
{ simde_mm_set_epi8(INT8_C( -22), INT8_C(-124), INT8_C( -97), INT8_C( -1),
|
|
INT8_C( -4), INT8_C( -87), INT8_C( -49), INT8_C(-124),
|
|
INT8_C( -37), INT8_C( -17), INT8_C( -57), INT8_C( 0),
|
|
INT8_C(-121), INT8_C( 57), INT8_C( 49), INT8_C(-112)),
|
|
simde_mm_set_epi8(INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112)) },
|
|
{ simde_mm_set_epi8(INT8_C( -37), INT8_C( -43), INT8_C( -30), INT8_C( 45),
|
|
INT8_C( 86), INT8_C(-100), INT8_C( -53), INT8_C( -4),
|
|
INT8_C( 54), INT8_C(-107), INT8_C( 40), INT8_C( -68),
|
|
INT8_C( 49), INT8_C( 59), INT8_C( -37), INT8_C( 60)),
|
|
simde_mm_set_epi8(INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60)) },
|
|
{ simde_mm_set_epi8(INT8_C( 35), INT8_C( -98), INT8_C( -73), INT8_C( 22),
|
|
INT8_C(-127), INT8_C( 78), INT8_C( 125), INT8_C( 84),
|
|
INT8_C(-115), INT8_C(-124), INT8_C(-103), INT8_C( 59),
|
|
INT8_C( 15), INT8_C( -58), INT8_C( 81), INT8_C( 4)),
|
|
simde_mm_set_epi8(INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4)) },
|
|
{ simde_mm_set_epi8(INT8_C( -56), INT8_C( 88), INT8_C( 1), INT8_C( -59),
|
|
INT8_C( -14), INT8_C( -27), INT8_C( -63), INT8_C( -89),
|
|
INT8_C( -31), INT8_C( -81), INT8_C( -92), INT8_C( 115),
|
|
INT8_C( 106), INT8_C( -49), INT8_C( -19), INT8_C( 92)),
|
|
simde_mm_set_epi8(INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92)) },
|
|
{ simde_mm_set_epi8(INT8_C( 7), INT8_C( 47), INT8_C( 55), INT8_C( 77),
|
|
INT8_C( 16), INT8_C( -71), INT8_C(-122), INT8_C( -81),
|
|
INT8_C(-120), INT8_C( -64), INT8_C( -77), INT8_C( 13),
|
|
INT8_C( 80), INT8_C(-114), INT8_C(-121), INT8_C( 92)),
|
|
simde_mm_set_epi8(INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92)) },
|
|
{ simde_mm_set_epi8(INT8_C( 14), INT8_C( -85), INT8_C( -8), INT8_C( -80),
|
|
INT8_C( -58), INT8_C( 84), INT8_C( 52), INT8_C(-106),
|
|
INT8_C( -46), INT8_C( 118), INT8_C( -96), INT8_C( 88),
|
|
INT8_C( 35), INT8_C( 50), INT8_C(-112), INT8_C(-112)),
|
|
simde_mm_set_epi8(INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112)) },
|
|
{ simde_mm_set_epi8(INT8_C( 17), INT8_C( 88), INT8_C( -82), INT8_C(-109),
|
|
INT8_C( 56), INT8_C( 18), INT8_C( 73), INT8_C( 115),
|
|
INT8_C( -99), INT8_C( -71), INT8_C( -92), INT8_C( 121),
|
|
INT8_C( 93), INT8_C( 51), INT8_C( -65), INT8_C( 55)),
|
|
simde_mm_set_epi8(INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_broadcastb_epi8(test_vec[i].a);
|
|
simde_assert_m128i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastb_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi8(INT8_C( -20), INT8_C( 103), INT8_C( -20), INT8_C( 116),
|
|
INT8_C( -9), INT8_C( 73), INT8_C( 44), INT8_C( 79),
|
|
INT8_C( -20), INT8_C( -81), INT8_C(-114), INT8_C( -81),
|
|
INT8_C( 10), INT8_C( 63), INT8_C( -41), INT8_C(-117)),
|
|
simde_mm256_set_epi8(INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117),
|
|
INT8_C(-117), INT8_C(-117), INT8_C(-117), INT8_C(-117)) },
|
|
{ simde_mm_set_epi8(INT8_C( -22), INT8_C(-124), INT8_C( -97), INT8_C( -1),
|
|
INT8_C( -4), INT8_C( -87), INT8_C( -49), INT8_C(-124),
|
|
INT8_C( -37), INT8_C( -17), INT8_C( -57), INT8_C( 0),
|
|
INT8_C(-121), INT8_C( 57), INT8_C( 49), INT8_C(-112)),
|
|
simde_mm256_set_epi8(INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112)) },
|
|
{ simde_mm_set_epi8(INT8_C( -37), INT8_C( -43), INT8_C( -30), INT8_C( 45),
|
|
INT8_C( 86), INT8_C(-100), INT8_C( -53), INT8_C( -4),
|
|
INT8_C( 54), INT8_C(-107), INT8_C( 40), INT8_C( -68),
|
|
INT8_C( 49), INT8_C( 59), INT8_C( -37), INT8_C( 60)),
|
|
simde_mm256_set_epi8(INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 60), INT8_C( 60)) },
|
|
{ simde_mm_set_epi8(INT8_C( 35), INT8_C( -98), INT8_C( -73), INT8_C( 22),
|
|
INT8_C(-127), INT8_C( 78), INT8_C( 125), INT8_C( 84),
|
|
INT8_C(-115), INT8_C(-124), INT8_C(-103), INT8_C( 59),
|
|
INT8_C( 15), INT8_C( -58), INT8_C( 81), INT8_C( 4)),
|
|
simde_mm256_set_epi8(INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4),
|
|
INT8_C( 4), INT8_C( 4), INT8_C( 4), INT8_C( 4)) },
|
|
{ simde_mm_set_epi8(INT8_C( -56), INT8_C( 88), INT8_C( 1), INT8_C( -59),
|
|
INT8_C( -14), INT8_C( -27), INT8_C( -63), INT8_C( -89),
|
|
INT8_C( -31), INT8_C( -81), INT8_C( -92), INT8_C( 115),
|
|
INT8_C( 106), INT8_C( -49), INT8_C( -19), INT8_C( 92)),
|
|
simde_mm256_set_epi8(INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92)) },
|
|
{ simde_mm_set_epi8(INT8_C( 7), INT8_C( 47), INT8_C( 55), INT8_C( 77),
|
|
INT8_C( 16), INT8_C( -71), INT8_C(-122), INT8_C( -81),
|
|
INT8_C(-120), INT8_C( -64), INT8_C( -77), INT8_C( 13),
|
|
INT8_C( 80), INT8_C(-114), INT8_C(-121), INT8_C( 92)),
|
|
simde_mm256_set_epi8(INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 92), INT8_C( 92)) },
|
|
{ simde_mm_set_epi8(INT8_C( 14), INT8_C( -85), INT8_C( -8), INT8_C( -80),
|
|
INT8_C( -58), INT8_C( 84), INT8_C( 52), INT8_C(-106),
|
|
INT8_C( -46), INT8_C( 118), INT8_C( -96), INT8_C( 88),
|
|
INT8_C( 35), INT8_C( 50), INT8_C(-112), INT8_C(-112)),
|
|
simde_mm256_set_epi8(INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112),
|
|
INT8_C(-112), INT8_C(-112), INT8_C(-112), INT8_C(-112)) },
|
|
{ simde_mm_set_epi8(INT8_C( 17), INT8_C( 88), INT8_C( -82), INT8_C(-109),
|
|
INT8_C( 56), INT8_C( 18), INT8_C( 73), INT8_C( 115),
|
|
INT8_C( -99), INT8_C( -71), INT8_C( -92), INT8_C( 121),
|
|
INT8_C( 93), INT8_C( 51), INT8_C( -65), INT8_C( 55)),
|
|
simde_mm256_set_epi8(INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55),
|
|
INT8_C( 55), INT8_C( 55), INT8_C( 55), INT8_C( 55)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_broadcastb_epi8(test_vec[i].a);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_broadcastw_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi16(INT16_C(-14724), INT16_C(-11263), INT16_C(-14102), INT16_C( 6431),
|
|
INT16_C( 11838), INT16_C( -2695), INT16_C(-11290), INT16_C( 22147)),
|
|
simde_mm_set_epi16(INT16_C( 22147), INT16_C( 22147), INT16_C( 22147), INT16_C( 22147),
|
|
INT16_C( 22147), INT16_C( 22147), INT16_C( 22147), INT16_C( 22147)) },
|
|
{ simde_mm_set_epi16(INT16_C(-16582), INT16_C(-25927), INT16_C(-23837), INT16_C( 29287),
|
|
INT16_C(-19772), INT16_C( 13452), INT16_C( -3861), INT16_C( -4316)),
|
|
simde_mm_set_epi16(INT16_C( -4316), INT16_C( -4316), INT16_C( -4316), INT16_C( -4316),
|
|
INT16_C( -4316), INT16_C( -4316), INT16_C( -4316), INT16_C( -4316)) },
|
|
{ simde_mm_set_epi16(INT16_C(-22817), INT16_C(-13842), INT16_C(-28521), INT16_C( 14250),
|
|
INT16_C( 16773), INT16_C(-17571), INT16_C( 16721), INT16_C(-24996)),
|
|
simde_mm_set_epi16(INT16_C(-24996), INT16_C(-24996), INT16_C(-24996), INT16_C(-24996),
|
|
INT16_C(-24996), INT16_C(-24996), INT16_C(-24996), INT16_C(-24996)) },
|
|
{ simde_mm_set_epi16(INT16_C( -7252), INT16_C( -8727), INT16_C( 7341), INT16_C( 25148),
|
|
INT16_C(-18544), INT16_C( 21940), INT16_C( 7393), INT16_C( -5844)),
|
|
simde_mm_set_epi16(INT16_C( -5844), INT16_C( -5844), INT16_C( -5844), INT16_C( -5844),
|
|
INT16_C( -5844), INT16_C( -5844), INT16_C( -5844), INT16_C( -5844)) },
|
|
{ simde_mm_set_epi16(INT16_C(-20117), INT16_C(-17614), INT16_C( 27322), INT16_C(-16415),
|
|
INT16_C( 21044), INT16_C( 32548), INT16_C( 27672), INT16_C( 26452)),
|
|
simde_mm_set_epi16(INT16_C( 26452), INT16_C( 26452), INT16_C( 26452), INT16_C( 26452),
|
|
INT16_C( 26452), INT16_C( 26452), INT16_C( 26452), INT16_C( 26452)) },
|
|
{ simde_mm_set_epi16(INT16_C( 15651), INT16_C( -9541), INT16_C( -1245), INT16_C( 19639),
|
|
INT16_C( -7877), INT16_C(-31496), INT16_C( -9293), INT16_C( 24923)),
|
|
simde_mm_set_epi16(INT16_C( 24923), INT16_C( 24923), INT16_C( 24923), INT16_C( 24923),
|
|
INT16_C( 24923), INT16_C( 24923), INT16_C( 24923), INT16_C( 24923)) },
|
|
{ simde_mm_set_epi16(INT16_C( -1558), INT16_C( 24882), INT16_C(-27020), INT16_C( -1908),
|
|
INT16_C( 5712), INT16_C( 21207), INT16_C( 4307), INT16_C( 9371)),
|
|
simde_mm_set_epi16(INT16_C( 9371), INT16_C( 9371), INT16_C( 9371), INT16_C( 9371),
|
|
INT16_C( 9371), INT16_C( 9371), INT16_C( 9371), INT16_C( 9371)) },
|
|
{ simde_mm_set_epi16(INT16_C( 28347), INT16_C(-26396), INT16_C(-17550), INT16_C(-16266),
|
|
INT16_C(-10219), INT16_C( 6683), INT16_C(-28102), INT16_C( 11110)),
|
|
simde_mm_set_epi16(INT16_C( 11110), INT16_C( 11110), INT16_C( 11110), INT16_C( 11110),
|
|
INT16_C( 11110), INT16_C( 11110), INT16_C( 11110), INT16_C( 11110)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_broadcastw_epi16(test_vec[i].a);
|
|
simde_assert_m128i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastw_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi16(INT16_C(-14724), INT16_C(-11263), INT16_C(-14102), INT16_C( 6431),
|
|
INT16_C( 11838), INT16_C( -2695), INT16_C(-11290), INT16_C( 22147)),
|
|
simde_mm256_set_epi16(INT16_C( 22147), INT16_C( 22147), INT16_C( 22147), INT16_C( 22147),
|
|
INT16_C( 22147), INT16_C( 22147), INT16_C( 22147), INT16_C( 22147),
|
|
INT16_C( 22147), INT16_C( 22147), INT16_C( 22147), INT16_C( 22147),
|
|
INT16_C( 22147), INT16_C( 22147), INT16_C( 22147), INT16_C( 22147)) },
|
|
{ simde_mm_set_epi16(INT16_C(-16582), INT16_C(-25927), INT16_C(-23837), INT16_C( 29287),
|
|
INT16_C(-19772), INT16_C( 13452), INT16_C( -3861), INT16_C( -4316)),
|
|
simde_mm256_set_epi16(INT16_C( -4316), INT16_C( -4316), INT16_C( -4316), INT16_C( -4316),
|
|
INT16_C( -4316), INT16_C( -4316), INT16_C( -4316), INT16_C( -4316),
|
|
INT16_C( -4316), INT16_C( -4316), INT16_C( -4316), INT16_C( -4316),
|
|
INT16_C( -4316), INT16_C( -4316), INT16_C( -4316), INT16_C( -4316)) },
|
|
{ simde_mm_set_epi16(INT16_C(-22817), INT16_C(-13842), INT16_C(-28521), INT16_C( 14250),
|
|
INT16_C( 16773), INT16_C(-17571), INT16_C( 16721), INT16_C(-24996)),
|
|
simde_mm256_set_epi16(INT16_C(-24996), INT16_C(-24996), INT16_C(-24996), INT16_C(-24996),
|
|
INT16_C(-24996), INT16_C(-24996), INT16_C(-24996), INT16_C(-24996),
|
|
INT16_C(-24996), INT16_C(-24996), INT16_C(-24996), INT16_C(-24996),
|
|
INT16_C(-24996), INT16_C(-24996), INT16_C(-24996), INT16_C(-24996)) },
|
|
{ simde_mm_set_epi16(INT16_C( -7252), INT16_C( -8727), INT16_C( 7341), INT16_C( 25148),
|
|
INT16_C(-18544), INT16_C( 21940), INT16_C( 7393), INT16_C( -5844)),
|
|
simde_mm256_set_epi16(INT16_C( -5844), INT16_C( -5844), INT16_C( -5844), INT16_C( -5844),
|
|
INT16_C( -5844), INT16_C( -5844), INT16_C( -5844), INT16_C( -5844),
|
|
INT16_C( -5844), INT16_C( -5844), INT16_C( -5844), INT16_C( -5844),
|
|
INT16_C( -5844), INT16_C( -5844), INT16_C( -5844), INT16_C( -5844)) },
|
|
{ simde_mm_set_epi16(INT16_C(-20117), INT16_C(-17614), INT16_C( 27322), INT16_C(-16415),
|
|
INT16_C( 21044), INT16_C( 32548), INT16_C( 27672), INT16_C( 26452)),
|
|
simde_mm256_set_epi16(INT16_C( 26452), INT16_C( 26452), INT16_C( 26452), INT16_C( 26452),
|
|
INT16_C( 26452), INT16_C( 26452), INT16_C( 26452), INT16_C( 26452),
|
|
INT16_C( 26452), INT16_C( 26452), INT16_C( 26452), INT16_C( 26452),
|
|
INT16_C( 26452), INT16_C( 26452), INT16_C( 26452), INT16_C( 26452)) },
|
|
{ simde_mm_set_epi16(INT16_C( 15651), INT16_C( -9541), INT16_C( -1245), INT16_C( 19639),
|
|
INT16_C( -7877), INT16_C(-31496), INT16_C( -9293), INT16_C( 24923)),
|
|
simde_mm256_set_epi16(INT16_C( 24923), INT16_C( 24923), INT16_C( 24923), INT16_C( 24923),
|
|
INT16_C( 24923), INT16_C( 24923), INT16_C( 24923), INT16_C( 24923),
|
|
INT16_C( 24923), INT16_C( 24923), INT16_C( 24923), INT16_C( 24923),
|
|
INT16_C( 24923), INT16_C( 24923), INT16_C( 24923), INT16_C( 24923)) },
|
|
{ simde_mm_set_epi16(INT16_C( -1558), INT16_C( 24882), INT16_C(-27020), INT16_C( -1908),
|
|
INT16_C( 5712), INT16_C( 21207), INT16_C( 4307), INT16_C( 9371)),
|
|
simde_mm256_set_epi16(INT16_C( 9371), INT16_C( 9371), INT16_C( 9371), INT16_C( 9371),
|
|
INT16_C( 9371), INT16_C( 9371), INT16_C( 9371), INT16_C( 9371),
|
|
INT16_C( 9371), INT16_C( 9371), INT16_C( 9371), INT16_C( 9371),
|
|
INT16_C( 9371), INT16_C( 9371), INT16_C( 9371), INT16_C( 9371)) },
|
|
{ simde_mm_set_epi16(INT16_C( 28347), INT16_C(-26396), INT16_C(-17550), INT16_C(-16266),
|
|
INT16_C(-10219), INT16_C( 6683), INT16_C(-28102), INT16_C( 11110)),
|
|
simde_mm256_set_epi16(INT16_C( 11110), INT16_C( 11110), INT16_C( 11110), INT16_C( 11110),
|
|
INT16_C( 11110), INT16_C( 11110), INT16_C( 11110), INT16_C( 11110),
|
|
INT16_C( 11110), INT16_C( 11110), INT16_C( 11110), INT16_C( 11110),
|
|
INT16_C( 11110), INT16_C( 11110), INT16_C( 11110), INT16_C( 11110)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_broadcastw_epi16(test_vec[i].a);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_broadcastd_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi32(INT32_C( -964897791), INT32_C( -924182241), INT32_C( 775878009), INT32_C( -739879293)),
|
|
simde_mm_set_epi32(INT32_C( -739879293), INT32_C( -739879293), INT32_C( -739879293), INT32_C( -739879293)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1086678343), INT32_C(-1562152345), INT32_C(-1295764340), INT32_C( -252973276)),
|
|
simde_mm_set_epi32(INT32_C( -252973276), INT32_C( -252973276), INT32_C( -252973276), INT32_C( -252973276)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1495283218), INT32_C(-1869138006), INT32_C( 1099283293), INT32_C( 1095867996)),
|
|
simde_mm_set_epi32(INT32_C( 1095867996), INT32_C( 1095867996), INT32_C( 1095867996), INT32_C( 1095867996)) },
|
|
{ simde_mm_set_epi32(INT32_C( -475210263), INT32_C( 481124924), INT32_C(-1215277644), INT32_C( 484567340)),
|
|
simde_mm_set_epi32(INT32_C( 484567340), INT32_C( 484567340), INT32_C( 484567340), INT32_C( 484567340)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1318339790), INT32_C( 1790623713), INT32_C( 1379172132), INT32_C( 1813538644)),
|
|
simde_mm_set_epi32(INT32_C( 1813538644), INT32_C( 1813538644), INT32_C( 1813538644), INT32_C( 1813538644)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1025759931), INT32_C( -81572681), INT32_C( -516193032), INT32_C( -609001125)),
|
|
simde_mm_set_epi32(INT32_C( -609001125), INT32_C( -609001125), INT32_C( -609001125), INT32_C( -609001125)) },
|
|
{ simde_mm_set_epi32(INT32_C( -102080206), INT32_C(-1770719092), INT32_C( 374362839), INT32_C( 282272923)),
|
|
simde_mm_set_epi32(INT32_C( 282272923), INT32_C( 282272923), INT32_C( 282272923), INT32_C( 282272923)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1857788132), INT32_C(-1150107530), INT32_C( -669705701), INT32_C(-1841681562)),
|
|
simde_mm_set_epi32(INT32_C(-1841681562), INT32_C(-1841681562), INT32_C(-1841681562), INT32_C(-1841681562)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_broadcastd_epi32(test_vec[i].a);
|
|
simde_assert_m128i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastd_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi32(INT32_C( -964897791), INT32_C( -924182241), INT32_C( 775878009), INT32_C( -739879293)),
|
|
simde_mm256_set_epi32(INT32_C( -739879293), INT32_C( -739879293), INT32_C( -739879293), INT32_C( -739879293),
|
|
INT32_C( -739879293), INT32_C( -739879293), INT32_C( -739879293), INT32_C( -739879293)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1086678343), INT32_C(-1562152345), INT32_C(-1295764340), INT32_C( -252973276)),
|
|
simde_mm256_set_epi32(INT32_C( -252973276), INT32_C( -252973276), INT32_C( -252973276), INT32_C( -252973276),
|
|
INT32_C( -252973276), INT32_C( -252973276), INT32_C( -252973276), INT32_C( -252973276)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1495283218), INT32_C(-1869138006), INT32_C( 1099283293), INT32_C( 1095867996)),
|
|
simde_mm256_set_epi32(INT32_C( 1095867996), INT32_C( 1095867996), INT32_C( 1095867996), INT32_C( 1095867996),
|
|
INT32_C( 1095867996), INT32_C( 1095867996), INT32_C( 1095867996), INT32_C( 1095867996)) },
|
|
{ simde_mm_set_epi32(INT32_C( -475210263), INT32_C( 481124924), INT32_C(-1215277644), INT32_C( 484567340)),
|
|
simde_mm256_set_epi32(INT32_C( 484567340), INT32_C( 484567340), INT32_C( 484567340), INT32_C( 484567340),
|
|
INT32_C( 484567340), INT32_C( 484567340), INT32_C( 484567340), INT32_C( 484567340)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1318339790), INT32_C( 1790623713), INT32_C( 1379172132), INT32_C( 1813538644)),
|
|
simde_mm256_set_epi32(INT32_C( 1813538644), INT32_C( 1813538644), INT32_C( 1813538644), INT32_C( 1813538644),
|
|
INT32_C( 1813538644), INT32_C( 1813538644), INT32_C( 1813538644), INT32_C( 1813538644)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1025759931), INT32_C( -81572681), INT32_C( -516193032), INT32_C( -609001125)),
|
|
simde_mm256_set_epi32(INT32_C( -609001125), INT32_C( -609001125), INT32_C( -609001125), INT32_C( -609001125),
|
|
INT32_C( -609001125), INT32_C( -609001125), INT32_C( -609001125), INT32_C( -609001125)) },
|
|
{ simde_mm_set_epi32(INT32_C( -102080206), INT32_C(-1770719092), INT32_C( 374362839), INT32_C( 282272923)),
|
|
simde_mm256_set_epi32(INT32_C( 282272923), INT32_C( 282272923), INT32_C( 282272923), INT32_C( 282272923),
|
|
INT32_C( 282272923), INT32_C( 282272923), INT32_C( 282272923), INT32_C( 282272923)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1857788132), INT32_C(-1150107530), INT32_C( -669705701), INT32_C(-1841681562)),
|
|
simde_mm256_set_epi32(INT32_C(-1841681562), INT32_C(-1841681562), INT32_C(-1841681562), INT32_C(-1841681562),
|
|
INT32_C(-1841681562), INT32_C(-1841681562), INT32_C(-1841681562), INT32_C(-1841681562)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_broadcastd_epi32(test_vec[i].a);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_broadcastq_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi64x(INT64_C(-4144204452956858081), INT64_C( 3332370677895681667)),
|
|
simde_mm_set_epi64x(INT64_C( 3332370677895681667), INT64_C( 3332370677895681667)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-4667247941723655577), INT64_C(-5565265459581030620)),
|
|
simde_mm_set_epi64x(INT64_C(-5565265459581030620), INT64_C(-5565265459581030620)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-6422192517141809238), INT64_C( 4721385793570053724)),
|
|
simde_mm_set_epi64x(INT64_C( 4721385793570053724), INT64_C( 4721385793570053724)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-2041012537827433924), INT64_C(-5219577736055363284)),
|
|
simde_mm_set_epi64x(INT64_C(-5219577736055363284), INT64_C(-5219577736055363284)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-5662226281274884127), INT64_C( 5923499204308133716)),
|
|
simde_mm_set_epi64x(INT64_C( 5923499204308133716), INT64_C( 5923499204308133716)) },
|
|
{ simde_mm_set_epi64x(INT64_C( 4405605361405611191), INT64_C(-2217032187177115301)),
|
|
simde_mm_set_epi64x(INT64_C(-2217032187177115301), INT64_C(-2217032187177115301)) },
|
|
{ simde_mm_set_epi64x(INT64_C( -438431143814694772), INT64_C( 1607876150624986267)),
|
|
simde_mm_set_epi64x(INT64_C( 1607876150624986267), INT64_C( 1607876150624986267)) },
|
|
{ simde_mm_set_epi64x(INT64_C( 7979139272981790838), INT64_C(-2876364081286468762)),
|
|
simde_mm_set_epi64x(INT64_C(-2876364081286468762), INT64_C(-2876364081286468762)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_broadcastq_epi64(test_vec[i].a);
|
|
simde_assert_m128i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastq_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi64x(INT64_C(-4144204452956858081), INT64_C( 3332370677895681667)),
|
|
simde_mm256_set_epi64x(INT64_C( 3332370677895681667), INT64_C( 3332370677895681667),
|
|
INT64_C( 3332370677895681667), INT64_C( 3332370677895681667)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-4667247941723655577), INT64_C(-5565265459581030620)),
|
|
simde_mm256_set_epi64x(INT64_C(-5565265459581030620), INT64_C(-5565265459581030620),
|
|
INT64_C(-5565265459581030620), INT64_C(-5565265459581030620)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-6422192517141809238), INT64_C( 4721385793570053724)),
|
|
simde_mm256_set_epi64x(INT64_C( 4721385793570053724), INT64_C( 4721385793570053724),
|
|
INT64_C( 4721385793570053724), INT64_C( 4721385793570053724)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-2041012537827433924), INT64_C(-5219577736055363284)),
|
|
simde_mm256_set_epi64x(INT64_C(-5219577736055363284), INT64_C(-5219577736055363284),
|
|
INT64_C(-5219577736055363284), INT64_C(-5219577736055363284)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-5662226281274884127), INT64_C( 5923499204308133716)),
|
|
simde_mm256_set_epi64x(INT64_C( 5923499204308133716), INT64_C( 5923499204308133716),
|
|
INT64_C( 5923499204308133716), INT64_C( 5923499204308133716)) },
|
|
{ simde_mm_set_epi64x(INT64_C( 4405605361405611191), INT64_C(-2217032187177115301)),
|
|
simde_mm256_set_epi64x(INT64_C(-2217032187177115301), INT64_C(-2217032187177115301),
|
|
INT64_C(-2217032187177115301), INT64_C(-2217032187177115301)) },
|
|
{ simde_mm_set_epi64x(INT64_C( -438431143814694772), INT64_C( 1607876150624986267)),
|
|
simde_mm256_set_epi64x(INT64_C( 1607876150624986267), INT64_C( 1607876150624986267),
|
|
INT64_C( 1607876150624986267), INT64_C( 1607876150624986267)) },
|
|
{ simde_mm_set_epi64x(INT64_C( 7979139272981790838), INT64_C(-2876364081286468762)),
|
|
simde_mm256_set_epi64x(INT64_C(-2876364081286468762), INT64_C(-2876364081286468762),
|
|
INT64_C(-2876364081286468762), INT64_C(-2876364081286468762)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_broadcastq_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_broadcastss_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128 a;
|
|
simde__m128 r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 550.68), SIMDE_FLOAT32_C( 569.64), SIMDE_FLOAT32_C( -638.70), SIMDE_FLOAT32_C( 655.47)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 493.98), SIMDE_FLOAT32_C( 272.57), SIMDE_FLOAT32_C( 396.61), SIMDE_FLOAT32_C( 882.20)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( 882.20), SIMDE_FLOAT32_C( 882.20), SIMDE_FLOAT32_C( 882.20), SIMDE_FLOAT32_C( 882.20)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 303.70), SIMDE_FLOAT32_C( 129.61), SIMDE_FLOAT32_C( -488.11), SIMDE_FLOAT32_C( -489.70)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 778.71), SIMDE_FLOAT32_C( -775.96), SIMDE_FLOAT32_C( 434.09), SIMDE_FLOAT32_C( -774.36)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( -774.36), SIMDE_FLOAT32_C( -774.36), SIMDE_FLOAT32_C( -774.36), SIMDE_FLOAT32_C( -774.36)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 386.10), SIMDE_FLOAT32_C( -166.18), SIMDE_FLOAT32_C( -357.77), SIMDE_FLOAT32_C( -155.51)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( -522.34), SIMDE_FLOAT32_C( 962.01), SIMDE_FLOAT32_C( 759.63), SIMDE_FLOAT32_C( 716.41)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( 716.41), SIMDE_FLOAT32_C( 716.41), SIMDE_FLOAT32_C( 716.41), SIMDE_FLOAT32_C( 716.41)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 952.47), SIMDE_FLOAT32_C( 175.44), SIMDE_FLOAT32_C( -825.67), SIMDE_FLOAT32_C( -868.56)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( -134.90), SIMDE_FLOAT32_C( 464.44), SIMDE_FLOAT32_C( 688.14), SIMDE_FLOAT32_C( 142.40)),
|
|
simde_mm_set_ps(SIMDE_FLOAT32_C( 142.40), SIMDE_FLOAT32_C( 142.40), SIMDE_FLOAT32_C( 142.40), SIMDE_FLOAT32_C( 142.40)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128 r = simde_mm_broadcastss_ps(test_vec[i].a);
|
|
simde_assert_m128_close(r, test_vec[i].r, 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastss_ps(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128 a;
|
|
simde__m256 r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 550.68), SIMDE_FLOAT32_C( 569.64), SIMDE_FLOAT32_C( -638.70), SIMDE_FLOAT32_C( 655.47)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47),
|
|
SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47),
|
|
SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47),
|
|
SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 655.47)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 303.70), SIMDE_FLOAT32_C( 129.61), SIMDE_FLOAT32_C( -488.11), SIMDE_FLOAT32_C( -489.70)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70),
|
|
SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70),
|
|
SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70),
|
|
SIMDE_FLOAT32_C( -489.70), SIMDE_FLOAT32_C( -489.70)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 386.10), SIMDE_FLOAT32_C( -166.18), SIMDE_FLOAT32_C( -357.77), SIMDE_FLOAT32_C( -155.51)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51),
|
|
SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51),
|
|
SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51),
|
|
SIMDE_FLOAT32_C( -155.51), SIMDE_FLOAT32_C( -155.51)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 952.47), SIMDE_FLOAT32_C( 175.44), SIMDE_FLOAT32_C( -825.67), SIMDE_FLOAT32_C( -868.56)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56),
|
|
SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56),
|
|
SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56),
|
|
SIMDE_FLOAT32_C( -868.56), SIMDE_FLOAT32_C( -868.56)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( -766.17), SIMDE_FLOAT32_C( 812.79), SIMDE_FLOAT32_C( -842.83), SIMDE_FLOAT32_C( -99.19)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( -99.19), SIMDE_FLOAT32_C( -99.19),
|
|
SIMDE_FLOAT32_C( -99.19), SIMDE_FLOAT32_C( -99.19),
|
|
SIMDE_FLOAT32_C( -99.19), SIMDE_FLOAT32_C( -99.19),
|
|
SIMDE_FLOAT32_C( -99.19), SIMDE_FLOAT32_C( -99.19)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( -434.84), SIMDE_FLOAT32_C( -337.86), SIMDE_FLOAT32_C( 127.40), SIMDE_FLOAT32_C( 235.90)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( 235.90), SIMDE_FLOAT32_C( 235.90),
|
|
SIMDE_FLOAT32_C( 235.90), SIMDE_FLOAT32_C( 235.90),
|
|
SIMDE_FLOAT32_C( 235.90), SIMDE_FLOAT32_C( 235.90),
|
|
SIMDE_FLOAT32_C( 235.90), SIMDE_FLOAT32_C( 235.90)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( -349.94), SIMDE_FLOAT32_C( 403.87), SIMDE_FLOAT32_C( -69.00), SIMDE_FLOAT32_C( 494.83)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( 494.83), SIMDE_FLOAT32_C( 494.83),
|
|
SIMDE_FLOAT32_C( 494.83), SIMDE_FLOAT32_C( 494.83),
|
|
SIMDE_FLOAT32_C( 494.83), SIMDE_FLOAT32_C( 494.83),
|
|
SIMDE_FLOAT32_C( 494.83), SIMDE_FLOAT32_C( 494.83)) },
|
|
{ simde_mm_set_ps(SIMDE_FLOAT32_C( 86.40), SIMDE_FLOAT32_C( 641.98), SIMDE_FLOAT32_C( -789.02), SIMDE_FLOAT32_C( -272.67)),
|
|
simde_mm256_set_ps(SIMDE_FLOAT32_C( -272.67), SIMDE_FLOAT32_C( -272.67),
|
|
SIMDE_FLOAT32_C( -272.67), SIMDE_FLOAT32_C( -272.67),
|
|
SIMDE_FLOAT32_C( -272.67), SIMDE_FLOAT32_C( -272.67),
|
|
SIMDE_FLOAT32_C( -272.67), SIMDE_FLOAT32_C( -272.67)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256 r = simde_mm256_broadcastss_ps(test_vec[i].a);
|
|
simde_assert_m256_close(r, test_vec[i].r, 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_broadcastsd_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128d a;
|
|
simde__m128d r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( -638.70), SIMDE_FLOAT64_C( 655.47)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( 655.47), SIMDE_FLOAT64_C( 655.47)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 550.68), SIMDE_FLOAT64_C( 569.64)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( 569.64), SIMDE_FLOAT64_C( 569.64)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 396.61), SIMDE_FLOAT64_C( 882.20)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( 882.20), SIMDE_FLOAT64_C( 882.20)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 493.98), SIMDE_FLOAT64_C( 272.57)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( 272.57), SIMDE_FLOAT64_C( 272.57)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( -488.11), SIMDE_FLOAT64_C( -489.70)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( -489.70), SIMDE_FLOAT64_C( -489.70)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 303.70), SIMDE_FLOAT64_C( 129.61)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( 129.61), SIMDE_FLOAT64_C( 129.61)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 434.09), SIMDE_FLOAT64_C( -774.36)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( -774.36), SIMDE_FLOAT64_C( -774.36)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 778.71), SIMDE_FLOAT64_C( -775.96)),
|
|
simde_mm_set_pd(SIMDE_FLOAT64_C( -775.96), SIMDE_FLOAT64_C( -775.96)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
#if !defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
simde__m128d r = simde_mm_broadcastsd_pd(test_vec[i].a);
|
|
#else
|
|
simde__m128d r = simde_mm_movedup_pd(test_vec[i].a);
|
|
#endif
|
|
simde_assert_m128d_close(r, test_vec[i].r, 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastsd_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128d a;
|
|
simde__m256d r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( -638.70), SIMDE_FLOAT64_C( 655.47)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 655.47), SIMDE_FLOAT64_C( 655.47),
|
|
SIMDE_FLOAT64_C( 655.47), SIMDE_FLOAT64_C( 655.47)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 396.61), SIMDE_FLOAT64_C( 882.20)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 882.20), SIMDE_FLOAT64_C( 882.20),
|
|
SIMDE_FLOAT64_C( 882.20), SIMDE_FLOAT64_C( 882.20)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( -488.11), SIMDE_FLOAT64_C( -489.70)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -489.70), SIMDE_FLOAT64_C( -489.70),
|
|
SIMDE_FLOAT64_C( -489.70), SIMDE_FLOAT64_C( -489.70)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 434.09), SIMDE_FLOAT64_C( -774.36)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -774.36), SIMDE_FLOAT64_C( -774.36),
|
|
SIMDE_FLOAT64_C( -774.36), SIMDE_FLOAT64_C( -774.36)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( -357.77), SIMDE_FLOAT64_C( -155.51)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -155.51), SIMDE_FLOAT64_C( -155.51),
|
|
SIMDE_FLOAT64_C( -155.51), SIMDE_FLOAT64_C( -155.51)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 759.63), SIMDE_FLOAT64_C( 716.41)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 716.41), SIMDE_FLOAT64_C( 716.41),
|
|
SIMDE_FLOAT64_C( 716.41), SIMDE_FLOAT64_C( 716.41)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( -825.67), SIMDE_FLOAT64_C( -868.56)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -868.56), SIMDE_FLOAT64_C( -868.56),
|
|
SIMDE_FLOAT64_C( -868.56), SIMDE_FLOAT64_C( -868.56)) },
|
|
{ simde_mm_set_pd(SIMDE_FLOAT64_C( 688.14), SIMDE_FLOAT64_C( 142.40)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 142.40), SIMDE_FLOAT64_C( 142.40),
|
|
SIMDE_FLOAT64_C( 142.40), SIMDE_FLOAT64_C( 142.40)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256d r = simde_mm256_broadcastsd_pd(test_vec[i].a);
|
|
simde_assert_m256d_close(r, test_vec[i].r, 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_broadcastsi128_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi64x (INT64_C( 3783485884510153131), INT64_C( 5322848723863790661)),
|
|
simde_mm256_set_epi64x(INT64_C( 3783485884510153131), INT64_C( 5322848723863790661),
|
|
INT64_C( 3783485884510153131), INT64_C( 5322848723863790661)) },
|
|
{ simde_mm_set_epi64x (INT64_C( 3709494745882156155), INT64_C(-6688158465955285293)),
|
|
simde_mm256_set_epi64x(INT64_C( 3709494745882156155), INT64_C(-6688158465955285293),
|
|
INT64_C( 3709494745882156155), INT64_C(-6688158465955285293)) },
|
|
{ simde_mm_set_epi64x (INT64_C(-8419237038829073489), INT64_C(-1707044583358729761)),
|
|
simde_mm256_set_epi64x(INT64_C(-8419237038829073489), INT64_C(-1707044583358729761),
|
|
INT64_C(-8419237038829073489), INT64_C(-1707044583358729761)) },
|
|
{ simde_mm_set_epi64x (INT64_C( -168447772491176834), INT64_C(-4784151950425519944)),
|
|
simde_mm256_set_epi64x(INT64_C( -168447772491176834), INT64_C(-4784151950425519944),
|
|
INT64_C( -168447772491176834), INT64_C(-4784151950425519944)) },
|
|
{ simde_mm_set_epi64x (INT64_C( 992172666234330248), INT64_C( 7115358650695109080)),
|
|
simde_mm256_set_epi64x(INT64_C( 992172666234330248), INT64_C( 7115358650695109080),
|
|
INT64_C( 992172666234330248), INT64_C( 7115358650695109080)) },
|
|
{ simde_mm_set_epi64x (INT64_C( 6019682307676879898), INT64_C( -745177675559433697)),
|
|
simde_mm256_set_epi64x(INT64_C( 6019682307676879898), INT64_C( -745177675559433697),
|
|
INT64_C( 6019682307676879898), INT64_C( -745177675559433697)) },
|
|
{ simde_mm_set_epi64x (INT64_C(-8364368011425569946), INT64_C( 1685080214233190853)),
|
|
simde_mm256_set_epi64x(INT64_C(-8364368011425569946), INT64_C( 1685080214233190853),
|
|
INT64_C(-8364368011425569946), INT64_C( 1685080214233190853)) },
|
|
{ simde_mm_set_epi64x (INT64_C( 6712859087758853138), INT64_C( 2170550621944299043)),
|
|
simde_mm256_set_epi64x(INT64_C( 6712859087758853138), INT64_C( 2170550621944299043),
|
|
INT64_C( 6712859087758853138), INT64_C( 2170550621944299043)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_broadcastsi128_si256(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_bslli_epi128(SIMDE_MUNIT_TEST_ARGS) {
|
|
simde__m256i r;
|
|
|
|
const int8_t a1[32] = { -INT8_C( 101), -INT8_C( 22), INT8_C( 109), INT8_C( 62), -INT8_C( 16), INT8_C( 2), -INT8_C( 71), INT8_C( 107),
|
|
-INT8_C( 122), INT8_C( 94), -INT8_C( 113), -INT8_C( 23), -INT8_C( 99), -INT8_C( 110), -INT8_C( 42), INT8_C( 105),
|
|
INT8_C( 5), -INT8_C( 23), -INT8_C( 24), INT8_C( 36), -INT8_C( 20), INT8_C( 8), -INT8_C( 24), INT8_C( 71),
|
|
-INT8_C( 117), INT8_C( 77), -INT8_C( 78), -INT8_C( 120), -INT8_C( 92), INT8_C( 20), INT8_C( 10), INT8_C( 64) };
|
|
|
|
const int8_t e1[32] = { -INT8_C( 101), -INT8_C( 22), INT8_C( 109), INT8_C( 62), -INT8_C( 16), INT8_C( 2), -INT8_C( 71), INT8_C( 107),
|
|
-INT8_C( 122), INT8_C( 94), -INT8_C( 113), -INT8_C( 23), -INT8_C( 99), -INT8_C( 110), -INT8_C( 42), INT8_C( 105),
|
|
INT8_C( 5), -INT8_C( 23), -INT8_C( 24), INT8_C( 36), -INT8_C( 20), INT8_C( 8), -INT8_C( 24), INT8_C( 71),
|
|
-INT8_C( 117), INT8_C( 77), -INT8_C( 78), -INT8_C( 120), -INT8_C( 92), INT8_C( 20), INT8_C( 10), INT8_C( 64) };
|
|
|
|
const int8_t a2[32] = { INT8_C( 62), INT8_C( 94), INT8_C( 58), -INT8_C( 15), INT8_C( 92), INT8_C( 124), INT8_C( 43), -INT8_C( 58),
|
|
-INT8_C( 7), INT8_C( 63), INT8_C( 54), INT8_C( 76), -INT8_C( 88), -INT8_C( 90), -INT8_C( 2), -INT8_C( 57),
|
|
INT8_C( 73), INT8_C( 106), INT8_C( 57), INT8_C( 44), INT8_C( 105), -INT8_C( 54), -INT8_C( 66), INT8_C( 62),
|
|
-INT8_C( 71), -INT8_C( 67), -INT8_C( 106), -INT8_C( 54), INT8_C( 54), -INT8_C( 122), -INT8_C( 65), INT8_C( 116) };
|
|
|
|
const int8_t e2[32] = { INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 62), INT8_C( 94), INT8_C( 58), -INT8_C( 15), INT8_C( 92),
|
|
INT8_C( 124), INT8_C( 43), -INT8_C( 58), -INT8_C( 7), INT8_C( 63), INT8_C( 54), INT8_C( 76), -INT8_C( 88),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 73), INT8_C( 106), INT8_C( 57), INT8_C( 44), INT8_C( 105),
|
|
-INT8_C( 54), -INT8_C( 66), INT8_C( 62), -INT8_C( 71), -INT8_C( 67), -INT8_C( 106), -INT8_C( 54), INT8_C( 54) };
|
|
|
|
const int8_t a3[32] = { -INT8_C( 109), INT8_C( 56), INT8_C( 107), -INT8_C( 88), INT8_C( 124), INT8_C( 123), -INT8_C( 108), -INT8_C( 79),
|
|
INT8_C( 10), -INT8_C( 123), -INT8_C( 57), -INT8_C( 23), -INT8_C( 32), -INT8_C( 10), -INT8_C( 85), -INT8_C( 22),
|
|
INT8_C( 91), -INT8_C( 91), INT8_C( 0), -INT8_C( 47), INT8_C( 30), -INT8_C( 7), -INT8_C( 73), INT8_C( 17),
|
|
INT8_C( 74), INT8_C( 6), -INT8_C( 73), -INT8_C( 13), INT8_C( 59), INT8_C( 44), -INT8_C( 34), -INT8_C( 49) };
|
|
|
|
const int8_t e3[32] = { INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 109), INT8_C( 56), INT8_C( 107),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 91), -INT8_C( 91), INT8_C( 0) };
|
|
|
|
const int8_t a4[32] = { INT8_C( 74), -INT8_C( 109), -INT8_C( 57), INT8_C( 52), INT8_C( 64), -INT8_C( 101), INT8_C( 54), -INT8_C( 122),
|
|
-INT8_C( 85), INT8_MAX, -INT8_C( 106), INT8_C( 80), -INT8_C( 15), -INT8_C( 65), INT8_C( 88), INT8_C( 92),
|
|
-INT8_C( 12), INT8_C( 103), -INT8_C( 4), -INT8_C( 36), -INT8_C( 67), -INT8_C( 101), -INT8_C( 91), INT8_MAX,
|
|
-INT8_C( 39), -INT8_C( 89), -INT8_C( 86), -INT8_C( 94), -INT8_C( 33), -INT8_C( 28), INT8_C( 102), INT8_C( 41) };
|
|
|
|
const int8_t e4[32] = { INT8_C( 0), INT8_C( 0), INT8_C( 74), -INT8_C( 109), -INT8_C( 57), INT8_C( 52), INT8_C( 64), -INT8_C( 101),
|
|
INT8_C( 54), -INT8_C( 122), -INT8_C( 85), INT8_MAX, -INT8_C( 106), INT8_C( 80), -INT8_C( 15), -INT8_C( 65),
|
|
INT8_C( 0), INT8_C( 0), -INT8_C( 12), INT8_C( 103), -INT8_C( 4), -INT8_C( 36), -INT8_C( 67), -INT8_C( 101),
|
|
-INT8_C( 91), INT8_MAX, -INT8_C( 39), -INT8_C( 89), -INT8_C( 86), -INT8_C( 94), -INT8_C( 33), -INT8_C( 28) };
|
|
|
|
const int8_t a5[32] = { INT8_C( 102), -INT8_C( 9), INT8_C( 57), -INT8_C( 65), -INT8_C( 51), INT8_C( 43), -INT8_C( 30), INT8_C( 53),
|
|
INT8_C( 68), INT8_C( 76), -INT8_C( 34), -INT8_C( 69), INT8_C( 55), INT8_C( 91), -INT8_C( 101), -INT8_C( 32),
|
|
INT8_C( 107), INT8_C( 28), INT8_C( 11), -INT8_C( 64), INT8_C( 104), -INT8_C( 26), INT8_C( 67), INT8_C( 120),
|
|
INT8_C( 27), INT8_C( 100), INT8_C( 46), -INT8_C( 10), -INT8_C( 68), INT8_C( 86), INT8_C( 29), INT8_C( 34) };
|
|
|
|
const int8_t e5[32] = { INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0) };
|
|
|
|
r = simde_mm256_bslli_epi128(simde_x_mm256_loadu_epi8(a1), 0);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e1));
|
|
|
|
r = simde_mm256_bslli_epi128(simde_x_mm256_loadu_epi8(a2), 3);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e2));
|
|
|
|
r = simde_mm256_bslli_epi128(simde_x_mm256_loadu_epi8(a3), 13);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e3));
|
|
|
|
r = simde_mm256_bslli_epi128(simde_x_mm256_loadu_epi8(a4), 2);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e4));
|
|
|
|
r = simde_mm256_bslli_epi128(simde_x_mm256_loadu_epi8(a5), 19);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e5));
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_bsrli_epi128(SIMDE_MUNIT_TEST_ARGS) {
|
|
simde__m256i r;
|
|
|
|
const int8_t a1[32] = { -INT8_C( 101), -INT8_C( 22), INT8_C( 109), INT8_C( 62), -INT8_C( 16), INT8_C( 2), -INT8_C( 71), INT8_C( 107),
|
|
-INT8_C( 122), INT8_C( 94), -INT8_C( 113), -INT8_C( 23), -INT8_C( 99), -INT8_C( 110), -INT8_C( 42), INT8_C( 105),
|
|
INT8_C( 5), -INT8_C( 23), -INT8_C( 24), INT8_C( 36), -INT8_C( 20), INT8_C( 8), -INT8_C( 24), INT8_C( 71),
|
|
-INT8_C( 117), INT8_C( 77), -INT8_C( 78), -INT8_C( 120), -INT8_C( 92), INT8_C( 20), INT8_C( 10), INT8_C( 64) };
|
|
|
|
const int8_t e1[32] = { -INT8_C( 101), -INT8_C( 22), INT8_C( 109), INT8_C( 62), -INT8_C( 16), INT8_C( 2), -INT8_C( 71), INT8_C( 107),
|
|
-INT8_C( 122), INT8_C( 94), -INT8_C( 113), -INT8_C( 23), -INT8_C( 99), -INT8_C( 110), -INT8_C( 42), INT8_C( 105),
|
|
INT8_C( 5), -INT8_C( 23), -INT8_C( 24), INT8_C( 36), -INT8_C( 20), INT8_C( 8), -INT8_C( 24), INT8_C( 71),
|
|
-INT8_C( 117), INT8_C( 77), -INT8_C( 78), -INT8_C( 120), -INT8_C( 92), INT8_C( 20), INT8_C( 10), INT8_C( 64) };
|
|
|
|
const int8_t a2[32] = { INT8_C( 16), -INT8_C( 10), -INT8_C( 116), INT8_C( 62), -INT8_C( 37), -INT8_C( 30), -INT8_C( 105), INT8_C( 80),
|
|
INT8_C( 0), -INT8_C( 81), INT8_C( 44), INT8_C( 72), -INT8_C( 47), -INT8_C( 51), INT8_C( 72), -INT8_C( 102),
|
|
INT8_C( 90), -INT8_C( 37), -INT8_C( 126), INT8_C( 111), INT8_C( 75), -INT8_C( 3), -INT8_C( 50), -INT8_C( 67),
|
|
-INT8_C( 112), -INT8_C( 59), INT8_C( 80), INT8_C( 2), -INT8_C( 10), INT8_C( 8), -INT8_C( 72), INT8_C( 7) };
|
|
|
|
const int8_t e2[32] = { INT8_C( 62), -INT8_C( 37), -INT8_C( 30), -INT8_C( 105), INT8_C( 80), INT8_C( 0), -INT8_C( 81), INT8_C( 44),
|
|
INT8_C( 72), -INT8_C( 47), -INT8_C( 51), INT8_C( 72), -INT8_C( 102), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 111), INT8_C( 75), -INT8_C( 3), -INT8_C( 50), -INT8_C( 67), -INT8_C( 112), -INT8_C( 59), INT8_C( 80),
|
|
INT8_C( 2), -INT8_C( 10), INT8_C( 8), -INT8_C( 72), INT8_C( 7), INT8_C( 0), INT8_C( 0), INT8_C( 0) };
|
|
|
|
const int8_t a3[32] = { -INT8_C( 90), INT8_C( 37), INT8_C( 2), INT8_C( 43), INT8_C( 12), INT8_C( 1), -INT8_C( 14), -INT8_C( 108),
|
|
-INT8_C( 108), -INT8_C( 85), INT8_C( 63), INT8_C( 117), -INT8_C( 64), INT8_C( 115), -INT8_C( 42), -INT8_C( 20),
|
|
INT8_C( 9), -INT8_C( 75), INT8_C( 98), INT8_C( 100), INT8_C( 13), -INT8_C( 115), INT8_C( 124), INT8_C( 78),
|
|
INT8_C( 48), -INT8_C( 23), INT8_C( 73), INT8_C( 111), -INT8_C( 10), -INT8_C( 64), INT8_C( 14), -INT8_C( 100) };
|
|
|
|
const int8_t e3[32] = { INT8_C( 115), -INT8_C( 42), -INT8_C( 20), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
-INT8_C( 64), INT8_C( 14), -INT8_C( 100), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0) };
|
|
|
|
const int8_t a4[32] = { -INT8_C( 103), -INT8_C( 46), -INT8_C( 10), INT8_C( 82), -INT8_C( 74), -INT8_C( 94), -INT8_C( 122), -INT8_C( 9),
|
|
INT8_C( 105), -INT8_C( 36), -INT8_C( 46), -INT8_C( 40), -INT8_C( 102), -INT8_C( 76), INT8_C( 23), -INT8_C( 45),
|
|
INT8_C( 73), -INT8_C( 66), INT8_C( 102), INT8_C( 124), -INT8_C( 122), INT8_C( 8), INT8_C( 49), -INT8_C( 57),
|
|
-INT8_C( 70), -INT8_C( 95), -INT8_C( 12), -INT8_C( 115), -INT8_C( 68), INT8_C( 77), INT8_C( 94), INT8_C( 85) };
|
|
|
|
const int8_t e4[32] = { -INT8_C( 10), INT8_C( 82), -INT8_C( 74), -INT8_C( 94), -INT8_C( 122), -INT8_C( 9), INT8_C( 105), -INT8_C( 36),
|
|
-INT8_C( 46), -INT8_C( 40), -INT8_C( 102), -INT8_C( 76), INT8_C( 23), -INT8_C( 45), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 102), INT8_C( 124), -INT8_C( 122), INT8_C( 8), INT8_C( 49), -INT8_C( 57), -INT8_C( 70), -INT8_C( 95),
|
|
-INT8_C( 12), -INT8_C( 115), -INT8_C( 68), INT8_C( 77), INT8_C( 94), INT8_C( 85), INT8_C( 0), INT8_C( 0) };
|
|
|
|
const int8_t a5[32] = { INT8_C( 3), -INT8_C( 11), INT8_C( 13), -INT8_C( 50), INT8_C( 113), -INT8_C( 14), -INT8_C( 91), -INT8_C( 97),
|
|
-INT8_C( 82), -INT8_C( 41), -INT8_C( 48), INT8_C( 51), INT8_C( 0), INT8_C( 74), INT8_C( 95), -INT8_C( 86),
|
|
-INT8_C( 107), INT8_C( 112), -INT8_C( 126), INT8_C( 116), INT8_C( 46), INT8_C( 35), INT8_C( 12), -INT8_C( 126),
|
|
INT8_C( 51), INT8_C( 63), INT8_C( 58), INT8_C( 109), -INT8_C( 105), -INT8_C( 22), -INT8_C( 72), -INT8_C( 102) };
|
|
|
|
const int8_t e5[32] = { INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0) };
|
|
|
|
r = simde_mm256_bsrli_epi128(simde_x_mm256_loadu_epi8(a1), 0);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e1));
|
|
|
|
r = simde_mm256_bsrli_epi128(simde_x_mm256_loadu_epi8(a2), 3);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e2));
|
|
|
|
r = simde_mm256_bsrli_epi128(simde_x_mm256_loadu_epi8(a3), 13);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e3));
|
|
|
|
r = simde_mm256_bsrli_epi128(simde_x_mm256_loadu_epi8(a4), 2);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e4));
|
|
|
|
r = simde_mm256_bsrli_epi128(simde_x_mm256_loadu_epi8(a5), 19);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(e5));
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepi8_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi8(INT8_C( -64), INT8_C( -39), INT8_C( -1), INT8_C( 123),
|
|
INT8_C( -41), INT8_C( 42), INT8_C( -42), INT8_C( 48),
|
|
INT8_C(-101), INT8_C( -11), INT8_C( 78), INT8_C( -33),
|
|
INT8_C( -4), INT8_C( -46), INT8_C(-128), INT8_C( 115)),
|
|
simde_mm256_set_epi16(INT16_C( -64), INT16_C( -39), INT16_C( -1), INT16_C( 123),
|
|
INT16_C( -41), INT16_C( 42), INT16_C( -42), INT16_C( 48),
|
|
INT16_C( -101), INT16_C( -11), INT16_C( 78), INT16_C( -33),
|
|
INT16_C( -4), INT16_C( -46), INT16_C( -128), INT16_C( 115)) },
|
|
{ simde_mm_set_epi8(INT8_C( -82), INT8_C( 92), INT8_C( 55), INT8_C( -41),
|
|
INT8_C( 61), INT8_C(-113), INT8_C( 108), INT8_C( 36),
|
|
INT8_C( 115), INT8_C( 53), INT8_C( -46), INT8_C( -96),
|
|
INT8_C( -71), INT8_C( -38), INT8_C( 25), INT8_C( 61)),
|
|
simde_mm256_set_epi16(INT16_C( -82), INT16_C( 92), INT16_C( 55), INT16_C( -41),
|
|
INT16_C( 61), INT16_C( -113), INT16_C( 108), INT16_C( 36),
|
|
INT16_C( 115), INT16_C( 53), INT16_C( -46), INT16_C( -96),
|
|
INT16_C( -71), INT16_C( -38), INT16_C( 25), INT16_C( 61)) },
|
|
{ simde_mm_set_epi8(INT8_C( -73), INT8_C( 5), INT8_C( 10), INT8_C(-111),
|
|
INT8_C(-127), INT8_C( 16), INT8_C( -16), INT8_C(-115),
|
|
INT8_C( 94), INT8_C( 88), INT8_C( -20), INT8_C( -24),
|
|
INT8_C( -27), INT8_C( -17), INT8_C( -31), INT8_C( 67)),
|
|
simde_mm256_set_epi16(INT16_C( -73), INT16_C( 5), INT16_C( 10), INT16_C( -111),
|
|
INT16_C( -127), INT16_C( 16), INT16_C( -16), INT16_C( -115),
|
|
INT16_C( 94), INT16_C( 88), INT16_C( -20), INT16_C( -24),
|
|
INT16_C( -27), INT16_C( -17), INT16_C( -31), INT16_C( 67)) },
|
|
{ simde_mm_set_epi8(INT8_C( -17), INT8_C( 8), INT8_C( 67), INT8_C( -40),
|
|
INT8_C( 99), INT8_C( 89), INT8_C( -60), INT8_C( -24),
|
|
INT8_C( 120), INT8_C( -29), INT8_C(-127), INT8_C( 15),
|
|
INT8_C( -40), INT8_C(-106), INT8_C( 13), INT8_C( -27)),
|
|
simde_mm256_set_epi16(INT16_C( -17), INT16_C( 8), INT16_C( 67), INT16_C( -40),
|
|
INT16_C( 99), INT16_C( 89), INT16_C( -60), INT16_C( -24),
|
|
INT16_C( 120), INT16_C( -29), INT16_C( -127), INT16_C( 15),
|
|
INT16_C( -40), INT16_C( -106), INT16_C( 13), INT16_C( -27)) },
|
|
{ simde_mm_set_epi8(INT8_C( -5), INT8_C( 52), INT8_C( 112), INT8_C( -86),
|
|
INT8_C( 7), INT8_C( 2), INT8_C( 89), INT8_C( 40),
|
|
INT8_C( 34), INT8_C( -14), INT8_C(-119), INT8_C(-115),
|
|
INT8_C(-103), INT8_C( 103), INT8_C( -15), INT8_C( -68)),
|
|
simde_mm256_set_epi16(INT16_C( -5), INT16_C( 52), INT16_C( 112), INT16_C( -86),
|
|
INT16_C( 7), INT16_C( 2), INT16_C( 89), INT16_C( 40),
|
|
INT16_C( 34), INT16_C( -14), INT16_C( -119), INT16_C( -115),
|
|
INT16_C( -103), INT16_C( 103), INT16_C( -15), INT16_C( -68)) },
|
|
{ simde_mm_set_epi8(INT8_C( 34), INT8_C( 104), INT8_C(-116), INT8_C(-106),
|
|
INT8_C(-122), INT8_C( 51), INT8_C( -86), INT8_C( 26),
|
|
INT8_C( 57), INT8_C( 23), INT8_C( 125), INT8_C( 20),
|
|
INT8_C( 40), INT8_C( -87), INT8_C( -60), INT8_C( -93)),
|
|
simde_mm256_set_epi16(INT16_C( 34), INT16_C( 104), INT16_C( -116), INT16_C( -106),
|
|
INT16_C( -122), INT16_C( 51), INT16_C( -86), INT16_C( 26),
|
|
INT16_C( 57), INT16_C( 23), INT16_C( 125), INT16_C( 20),
|
|
INT16_C( 40), INT16_C( -87), INT16_C( -60), INT16_C( -93)) },
|
|
{ simde_mm_set_epi8(INT8_C( 35), INT8_C( 103), INT8_C( 83), INT8_C( 11),
|
|
INT8_C( 5), INT8_C( -26), INT8_C( -34), INT8_C( -28),
|
|
INT8_C( -15), INT8_C( -2), INT8_C( 10), INT8_C( -97),
|
|
INT8_C( 35), INT8_C(-108), INT8_C( 38), INT8_C(-122)),
|
|
simde_mm256_set_epi16(INT16_C( 35), INT16_C( 103), INT16_C( 83), INT16_C( 11),
|
|
INT16_C( 5), INT16_C( -26), INT16_C( -34), INT16_C( -28),
|
|
INT16_C( -15), INT16_C( -2), INT16_C( 10), INT16_C( -97),
|
|
INT16_C( 35), INT16_C( -108), INT16_C( 38), INT16_C( -122)) },
|
|
{ simde_mm_set_epi8(INT8_C( 44), INT8_C(-101), INT8_C(-122), INT8_C( 91),
|
|
INT8_C( 60), INT8_C( 60), INT8_C( 22), INT8_C( 81),
|
|
INT8_C( 13), INT8_C(-111), INT8_C(-125), INT8_C( -40),
|
|
INT8_C( -72), INT8_C(-102), INT8_C( -87), INT8_C( 108)),
|
|
simde_mm256_set_epi16(INT16_C( 44), INT16_C( -101), INT16_C( -122), INT16_C( 91),
|
|
INT16_C( 60), INT16_C( 60), INT16_C( 22), INT16_C( 81),
|
|
INT16_C( 13), INT16_C( -111), INT16_C( -125), INT16_C( -40),
|
|
INT16_C( -72), INT16_C( -102), INT16_C( -87), INT16_C( 108)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepi8_epi16(test_vec[i].a);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepi8_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi8(INT8_C( 123), INT8_C( -2), INT8_C( 102), INT8_C( -48),
|
|
INT8_C( 12), INT8_C(-119), INT8_C( -32), INT8_C( 68),
|
|
INT8_C( -88), INT8_C( 80), INT8_C( 32), INT8_C(-108),
|
|
INT8_C( -66), INT8_C( 35), INT8_C( -12), INT8_C(-103)),
|
|
simde_mm256_set_epi32(INT32_C( -88), INT32_C( 80), INT32_C( 32), INT32_C( -108),
|
|
INT32_C( -66), INT32_C( 35), INT32_C( -12), INT32_C( -103)) },
|
|
{ simde_mm_set_epi8(INT8_C( -12), INT8_C( -88), INT8_C( -20), INT8_C( -26),
|
|
INT8_C( -69), INT8_C( -40), INT8_C( 122), INT8_C(-121),
|
|
INT8_C( 47), INT8_C( 123), INT8_C( -15), INT8_C(-104),
|
|
INT8_C( -91), INT8_C( -13), INT8_C( -61), INT8_C(-104)),
|
|
simde_mm256_set_epi32(INT32_C( 47), INT32_C( 123), INT32_C( -15), INT32_C( -104),
|
|
INT32_C( -91), INT32_C( -13), INT32_C( -61), INT32_C( -104)) },
|
|
{ simde_mm_set_epi8(INT8_C(-105), INT8_C( 35), INT8_C(-118), INT8_C( -44),
|
|
INT8_C( -91), INT8_C( 43), INT8_C( 18), INT8_C( -70),
|
|
INT8_C( 44), INT8_C( 98), INT8_C( -82), INT8_C(-126),
|
|
INT8_C( -80), INT8_C(-109), INT8_C( 69), INT8_C(-116)),
|
|
simde_mm256_set_epi32(INT32_C( 44), INT32_C( 98), INT32_C( -82), INT32_C( -126),
|
|
INT32_C( -80), INT32_C( -109), INT32_C( 69), INT32_C( -116)) },
|
|
{ simde_mm_set_epi8(INT8_C( 43), INT8_C( 92), INT8_C( -66), INT8_C( -32),
|
|
INT8_C( 71), INT8_C( -63), INT8_C( 51), INT8_C( 89),
|
|
INT8_C( 102), INT8_C( -4), INT8_C( -28), INT8_C( -5),
|
|
INT8_C(-107), INT8_C( -25), INT8_C(-107), INT8_C( -15)),
|
|
simde_mm256_set_epi32(INT32_C( 102), INT32_C( -4), INT32_C( -28), INT32_C( -5),
|
|
INT32_C( -107), INT32_C( -25), INT32_C( -107), INT32_C( -15)) },
|
|
{ simde_mm_set_epi8(INT8_C( -7), INT8_C( -22), INT8_C( -1), INT8_C( 29),
|
|
INT8_C( -3), INT8_C( -97), INT8_C( 61), INT8_C( -36),
|
|
INT8_C( -81), INT8_C( -83), INT8_C( 54), INT8_C( 37),
|
|
INT8_C( -70), INT8_C( -70), INT8_C( 12), INT8_C( -61)),
|
|
simde_mm256_set_epi32(INT32_C( -81), INT32_C( -83), INT32_C( 54), INT32_C( 37),
|
|
INT32_C( -70), INT32_C( -70), INT32_C( 12), INT32_C( -61)) },
|
|
{ simde_mm_set_epi8(INT8_C( 88), INT8_C( -30), INT8_C( 125), INT8_C( -22),
|
|
INT8_C( -87), INT8_C(-109), INT8_C( -90), INT8_C( -86),
|
|
INT8_C(-124), INT8_C( -10), INT8_C( 57), INT8_C( -62),
|
|
INT8_C( -55), INT8_C( 40), INT8_C( -11), INT8_C(-100)),
|
|
simde_mm256_set_epi32(INT32_C( -124), INT32_C( -10), INT32_C( 57), INT32_C( -62),
|
|
INT32_C( -55), INT32_C( 40), INT32_C( -11), INT32_C( -100)) },
|
|
{ simde_mm_set_epi8(INT8_C( 58), INT8_C(-110), INT8_C( -6), INT8_C( -58),
|
|
INT8_C(-110), INT8_C( 125), INT8_C( 39), INT8_C( -82),
|
|
INT8_C( -88), INT8_C( 107), INT8_C( 76), INT8_C( 58),
|
|
INT8_C( -2), INT8_C(-119), INT8_C( -27), INT8_C( 40)),
|
|
simde_mm256_set_epi32(INT32_C( -88), INT32_C( 107), INT32_C( 76), INT32_C( 58),
|
|
INT32_C( -2), INT32_C( -119), INT32_C( -27), INT32_C( 40)) },
|
|
{ simde_mm_set_epi8(INT8_C(-110), INT8_C( -24), INT8_C( -33), INT8_C(-117),
|
|
INT8_C( 92), INT8_C( -35), INT8_C( 113), INT8_C( 13),
|
|
INT8_C( 46), INT8_C(-107), INT8_C( 4), INT8_C( 8),
|
|
INT8_C( 56), INT8_C( 9), INT8_C( 123), INT8_C( 36)),
|
|
simde_mm256_set_epi32(INT32_C( 46), INT32_C( -107), INT32_C( 4), INT32_C( 8),
|
|
INT32_C( 56), INT32_C( 9), INT32_C( 123), INT32_C( 36)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepi8_epi32(test_vec[i].a);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepi8_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi8(INT8_C( 9), INT8_C( -74), INT8_C( -52), INT8_C( -68),
|
|
INT8_C( 95), INT8_C( -10), INT8_C( -99), INT8_C( 121),
|
|
INT8_C( 1), INT8_C( 69), INT8_C( -36), INT8_C(-102),
|
|
INT8_C(-124), INT8_C( -93), INT8_C(-101), INT8_C(-118)),
|
|
simde_mm256_set_epi64x(INT64_C( -124), INT64_C( -93),
|
|
INT64_C( -101), INT64_C( -118)) },
|
|
{ simde_mm_set_epi8(INT8_C(-107), INT8_C( -34), INT8_C( -75), INT8_C( 119),
|
|
INT8_C( -79), INT8_C(-103), INT8_C( -9), INT8_C(-121),
|
|
INT8_C( -51), INT8_C( 4), INT8_C( 89), INT8_C( 110),
|
|
INT8_C( 112), INT8_C( 67), INT8_C(-101), INT8_C( 87)),
|
|
simde_mm256_set_epi64x(INT64_C( 112), INT64_C( 67),
|
|
INT64_C( -101), INT64_C( 87)) },
|
|
{ simde_mm_set_epi8(INT8_C( -85), INT8_C( 121), INT8_C(-116), INT8_C( 121),
|
|
INT8_C( -43), INT8_C( -80), INT8_C( 1), INT8_C(-102),
|
|
INT8_C( 39), INT8_C(-105), INT8_C( -26), INT8_C( 88),
|
|
INT8_C( -52), INT8_C( 61), INT8_C(-127), INT8_C( 21)),
|
|
simde_mm256_set_epi64x(INT64_C( -52), INT64_C( 61),
|
|
INT64_C( -127), INT64_C( 21)) },
|
|
{ simde_mm_set_epi8(INT8_C( 85), INT8_C( 1), INT8_C( 94), INT8_C( 60),
|
|
INT8_C( 102), INT8_C( 9), INT8_C( -56), INT8_C( 64),
|
|
INT8_C(-103), INT8_C( -86), INT8_C( 51), INT8_C(-126),
|
|
INT8_C( -9), INT8_C( 88), INT8_C( -52), INT8_C( 13)),
|
|
simde_mm256_set_epi64x(INT64_C( -9), INT64_C( 88),
|
|
INT64_C( -52), INT64_C( 13)) },
|
|
{ simde_mm_set_epi8(INT8_C( 0), INT8_C( -40), INT8_C( 42), INT8_C( 42),
|
|
INT8_C( 109), INT8_C( -5), INT8_C( -28), INT8_C( -80),
|
|
INT8_C( 70), INT8_C( 6), INT8_C( -51), INT8_C( 17),
|
|
INT8_C(-105), INT8_C(-108), INT8_C( 14), INT8_C( -91)),
|
|
simde_mm256_set_epi64x(INT64_C( -105), INT64_C( -108),
|
|
INT64_C( 14), INT64_C( -91)) },
|
|
{ simde_mm_set_epi8(INT8_C( 125), INT8_C(-114), INT8_C( -39), INT8_C(-118),
|
|
INT8_C( 29), INT8_C( -81), INT8_C(-121), INT8_C( 115),
|
|
INT8_C(-128), INT8_C( 99), INT8_C( 64), INT8_C( 7),
|
|
INT8_C( 114), INT8_C(-101), INT8_C(-127), INT8_C( 30)),
|
|
simde_mm256_set_epi64x(INT64_C( 114), INT64_C( -101),
|
|
INT64_C( -127), INT64_C( 30)) },
|
|
{ simde_mm_set_epi8(INT8_C(-126), INT8_C( 122), INT8_C( 50), INT8_C( 115),
|
|
INT8_C( 72), INT8_C( -56), INT8_C( 52), INT8_C( 125),
|
|
INT8_C(-104), INT8_C( -76), INT8_C( 65), INT8_C( 103),
|
|
INT8_C(-122), INT8_C( -36), INT8_C( -93), INT8_C( 110)),
|
|
simde_mm256_set_epi64x(INT64_C( -122), INT64_C( -36),
|
|
INT64_C( -93), INT64_C( 110)) },
|
|
{ simde_mm_set_epi8(INT8_C( -80), INT8_C( 98), INT8_C(-119), INT8_C( 51),
|
|
INT8_C( -37), INT8_C( -17), INT8_C( -94), INT8_C(-122),
|
|
INT8_C(-114), INT8_C( 13), INT8_C( -75), INT8_C( 111),
|
|
INT8_C( -76), INT8_C( -15), INT8_C( -1), INT8_C( -12)),
|
|
simde_mm256_set_epi64x(INT64_C( -76), INT64_C( -15),
|
|
INT64_C( -1), INT64_C( -12)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepi8_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
|
|
static int
|
|
test_simde_mm256_cvtepi16_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi16(INT16_C( 29201), INT16_C( 17763), INT16_C( 13480), INT16_C( 29487),
|
|
INT16_C( -6581), INT16_C( 13446), INT16_C( 26538), INT16_C( -3936)),
|
|
simde_mm256_set_epi32(INT32_C( 29201), INT32_C( 17763), INT32_C( 13480), INT32_C( 29487),
|
|
INT32_C( -6581), INT32_C( 13446), INT32_C( 26538), INT32_C( -3936)) },
|
|
{ simde_mm_set_epi16(INT16_C( -3829), INT16_C( 12503), INT16_C( 10513), INT16_C( 11407),
|
|
INT16_C( 28611), INT16_C( 5727), INT16_C( 32199), INT16_C( 11434)),
|
|
simde_mm256_set_epi32(INT32_C( -3829), INT32_C( 12503), INT32_C( 10513), INT32_C( 11407),
|
|
INT32_C( 28611), INT32_C( 5727), INT32_C( 32199), INT32_C( 11434)) },
|
|
{ simde_mm_set_epi16(INT16_C( -4989), INT16_C(-23450), INT16_C(-15441), INT16_C( 22895),
|
|
INT16_C( 2927), INT16_C(-20709), INT16_C( -7582), INT16_C(-31347)),
|
|
simde_mm256_set_epi32(INT32_C( -4989), INT32_C( -23450), INT32_C( -15441), INT32_C( 22895),
|
|
INT32_C( 2927), INT32_C( -20709), INT32_C( -7582), INT32_C( -31347)) },
|
|
{ simde_mm_set_epi16(INT16_C( 24635), INT16_C( 21162), INT16_C( 29781), INT16_C( -488),
|
|
INT16_C( -6580), INT16_C(-27732), INT16_C( 607), INT16_C(-20782)),
|
|
simde_mm256_set_epi32(INT32_C( 24635), INT32_C( 21162), INT32_C( 29781), INT32_C( -488),
|
|
INT32_C( -6580), INT32_C( -27732), INT32_C( 607), INT32_C( -20782)) },
|
|
{ simde_mm_set_epi16(INT16_C( -401), INT16_C( -5605), INT16_C(-28681), INT16_C( 4577),
|
|
INT16_C( -9094), INT16_C( 6804), INT16_C( -9223), INT16_C( 10661)),
|
|
simde_mm256_set_epi32(INT32_C( -401), INT32_C( -5605), INT32_C( -28681), INT32_C( 4577),
|
|
INT32_C( -9094), INT32_C( 6804), INT32_C( -9223), INT32_C( 10661)) },
|
|
{ simde_mm_set_epi16(INT16_C( 2053), INT16_C(-19489), INT16_C( 7360), INT16_C( 16515),
|
|
INT16_C( 32080), INT16_C(-16555), INT16_C(-32752), INT16_C( 19001)),
|
|
simde_mm256_set_epi32(INT32_C( 2053), INT32_C( -19489), INT32_C( 7360), INT32_C( 16515),
|
|
INT32_C( 32080), INT32_C( -16555), INT32_C( -32752), INT32_C( 19001)) },
|
|
{ simde_mm_set_epi16(INT16_C(-31610), INT16_C(-22910), INT16_C( 22850), INT16_C(-27168),
|
|
INT16_C( 13092), INT16_C(-21449), INT16_C( 16024), INT16_C( 8597)),
|
|
simde_mm256_set_epi32(INT32_C( -31610), INT32_C( -22910), INT32_C( 22850), INT32_C( -27168),
|
|
INT32_C( 13092), INT32_C( -21449), INT32_C( 16024), INT32_C( 8597)) },
|
|
{ simde_mm_set_epi16(INT16_C( 28081), INT16_C( -7416), INT16_C( 18632), INT16_C(-28896),
|
|
INT16_C(-23156), INT16_C(-15424), INT16_C(-13082), INT16_C( 23555)),
|
|
simde_mm256_set_epi32(INT32_C( 28081), INT32_C( -7416), INT32_C( 18632), INT32_C( -28896),
|
|
INT32_C( -23156), INT32_C( -15424), INT32_C( -13082), INT32_C( 23555)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepi16_epi32(test_vec[i].a);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepi16_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi16(INT16_C(-31485), INT16_C( 6767), INT16_C( -1054), INT16_C(-15390),
|
|
INT16_C(-10897), INT16_C(-31336), INT16_C( -9551), INT16_C( 8617)),
|
|
simde_mm256_set_epi64x(INT64_C( -10897), INT64_C( -31336),
|
|
INT64_C( -9551), INT64_C( 8617)) },
|
|
{ simde_mm_set_epi16(INT16_C( 30988), INT16_C( 5181), INT16_C( 18938), INT16_C(-32273),
|
|
INT16_C( 5456), INT16_C( 19282), INT16_C(-21851), INT16_C( 27127)),
|
|
simde_mm256_set_epi64x(INT64_C( 5456), INT64_C( 19282),
|
|
INT64_C( -21851), INT64_C( 27127)) },
|
|
{ simde_mm_set_epi16(INT16_C( -7527), INT16_C(-20831), INT16_C( 23786), INT16_C( 3131),
|
|
INT16_C(-19886), INT16_C( -2045), INT16_C(-25062), INT16_C( -5779)),
|
|
simde_mm256_set_epi64x(INT64_C( -19886), INT64_C( -2045),
|
|
INT64_C( -25062), INT64_C( -5779)) },
|
|
{ simde_mm_set_epi16(INT16_C( 31086), INT16_C( 22946), INT16_C( -1551), INT16_C( 9842),
|
|
INT16_C(-22586), INT16_C( 5015), INT16_C( 24465), INT16_C(-15199)),
|
|
simde_mm256_set_epi64x(INT64_C( -22586), INT64_C( 5015),
|
|
INT64_C( 24465), INT64_C( -15199)) },
|
|
{ simde_mm_set_epi16(INT16_C( 20641), INT16_C(-16277), INT16_C( 32328), INT16_C( 21501),
|
|
INT16_C( 17537), INT16_C(-11745), INT16_C(-20371), INT16_C( 18200)),
|
|
simde_mm256_set_epi64x(INT64_C( 17537), INT64_C( -11745),
|
|
INT64_C( -20371), INT64_C( 18200)) },
|
|
{ simde_mm_set_epi16(INT16_C(-26363), INT16_C(-18240), INT16_C( 21370), INT16_C(-23762),
|
|
INT16_C( 2610), INT16_C( 7301), INT16_C(-13295), INT16_C( 15532)),
|
|
simde_mm256_set_epi64x(INT64_C( 2610), INT64_C( 7301),
|
|
INT64_C( -13295), INT64_C( 15532)) },
|
|
{ simde_mm_set_epi16(INT16_C( -6112), INT16_C(-22921), INT16_C( -1544), INT16_C(-16225),
|
|
INT16_C( 14287), INT16_C(-23793), INT16_C( 5660), INT16_C(-22213)),
|
|
simde_mm256_set_epi64x(INT64_C( 14287), INT64_C( -23793),
|
|
INT64_C( 5660), INT64_C( -22213)) },
|
|
{ simde_mm_set_epi16(INT16_C( -130), INT16_C( -9648), INT16_C(-32446), INT16_C( 22661),
|
|
INT16_C( 18414), INT16_C(-28168), INT16_C( 10429), INT16_C( 9914)),
|
|
simde_mm256_set_epi64x(INT64_C( 18414), INT64_C( -28168),
|
|
INT64_C( 10429), INT64_C( 9914)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepi16_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepi32_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi32(INT32_C( 2035310840), INT32_C( 817509407), INT32_C( 1530478738), INT32_C( 1934275633)),
|
|
simde_mm256_set_epi64x(INT64_C( 2035310840), INT64_C( 817509407),
|
|
INT64_C( 1530478738), INT64_C( 1934275633)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1872979628), INT32_C( 1510684699), INT32_C( -362741060), INT32_C( 56318596)),
|
|
simde_mm256_set_epi64x(INT64_C( -1872979628), INT64_C( 1510684699),
|
|
INT64_C( -362741060), INT64_C( 56318596)) },
|
|
{ simde_mm_set_epi32(INT32_C( -15196779), INT32_C( 3808236), INT32_C( -178294426), INT32_C(-1675394154)),
|
|
simde_mm256_set_epi64x(INT64_C( -15196779), INT64_C( 3808236),
|
|
INT64_C( -178294426), INT64_C( -1675394154)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1742018933), INT32_C( -523666920), INT32_C(-1989565458), INT32_C( -138158906)),
|
|
simde_mm256_set_epi64x(INT64_C( 1742018933), INT64_C( -523666920),
|
|
INT64_C( -1989565458), INT64_C( -138158906)) },
|
|
{ simde_mm_set_epi32(INT32_C( -851329384), INT32_C(-2094859646), INT32_C(-1382699819), INT32_C( 2104722305)),
|
|
simde_mm256_set_epi64x(INT64_C( -851329384), INT64_C( -2094859646),
|
|
INT64_C( -1382699819), INT64_C( 2104722305)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1596198624), INT32_C(-1923442761), INT32_C( 1335983203), INT32_C(-1180029731)),
|
|
simde_mm256_set_epi64x(INT64_C( 1596198624), INT64_C( -1923442761),
|
|
INT64_C( 1335983203), INT64_C( -1180029731)) },
|
|
{ simde_mm_set_epi32(INT32_C( 599337487), INT32_C( 1023189876), INT32_C( 1555456525), INT32_C( -191457824)),
|
|
simde_mm256_set_epi64x(INT64_C( 599337487), INT64_C( 1023189876),
|
|
INT64_C( 1555456525), INT64_C( -191457824)) },
|
|
{ simde_mm_set_epi32(INT32_C( 2100212902), INT32_C( -853030753), INT32_C( -606897046), INT32_C(-1882381199)),
|
|
simde_mm256_set_epi64x(INT64_C( 2100212902), INT64_C( -853030753),
|
|
INT64_C( -606897046), INT64_C( -1882381199)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepi32_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepu8_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm_set_epu8(UINT8_C(240), UINT8_C( 50), UINT8_C(144), UINT8_C( 4),
|
|
UINT8_C( 7), UINT8_C(233), UINT8_C(157), UINT8_C( 74),
|
|
UINT8_C(217), UINT8_C( 90), UINT8_C(141), UINT8_C(254),
|
|
UINT8_C(115), UINT8_C( 96), UINT8_C(126), UINT8_C( 23)),
|
|
simde_mm256_set_epi16(INT16_C( 240), INT16_C( 50), INT16_C( 144), INT16_C( 4),
|
|
INT16_C( 7), INT16_C( 233), INT16_C( 157), INT16_C( 74),
|
|
INT16_C( 217), INT16_C( 90), INT16_C( 141), INT16_C( 254),
|
|
INT16_C( 115), INT16_C( 96), INT16_C( 126), INT16_C( 23)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 79), UINT8_C(126), UINT8_C(254), UINT8_C( 77),
|
|
UINT8_C(225), UINT8_C( 76), UINT8_C( 61), UINT8_C(223),
|
|
UINT8_C( 95), UINT8_C(244), UINT8_C( 66), UINT8_C( 4),
|
|
UINT8_C(241), UINT8_C(112), UINT8_C(120), UINT8_C(166)),
|
|
simde_mm256_set_epi16(INT16_C( 79), INT16_C( 126), INT16_C( 254), INT16_C( 77),
|
|
INT16_C( 225), INT16_C( 76), INT16_C( 61), INT16_C( 223),
|
|
INT16_C( 95), INT16_C( 244), INT16_C( 66), INT16_C( 4),
|
|
INT16_C( 241), INT16_C( 112), INT16_C( 120), INT16_C( 166)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 56), UINT8_C(107), UINT8_C(114), UINT8_C( 86),
|
|
UINT8_C( 35), UINT8_C( 47), UINT8_C( 25), UINT8_C(187),
|
|
UINT8_C(176), UINT8_C( 49), UINT8_C(164), UINT8_C(236),
|
|
UINT8_C(110), UINT8_C( 61), UINT8_C( 64), UINT8_C( 42)),
|
|
simde_mm256_set_epi16(INT16_C( 56), INT16_C( 107), INT16_C( 114), INT16_C( 86),
|
|
INT16_C( 35), INT16_C( 47), INT16_C( 25), INT16_C( 187),
|
|
INT16_C( 176), INT16_C( 49), INT16_C( 164), INT16_C( 236),
|
|
INT16_C( 110), INT16_C( 61), INT16_C( 64), INT16_C( 42)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 54), UINT8_C(130), UINT8_C(171), UINT8_C( 76),
|
|
UINT8_C( 75), UINT8_C(192), UINT8_C(152), UINT8_C(247),
|
|
UINT8_C(165), UINT8_C(252), UINT8_C(115), UINT8_C( 73),
|
|
UINT8_C( 86), UINT8_C( 52), UINT8_C( 29), UINT8_C(227)),
|
|
simde_mm256_set_epi16(INT16_C( 54), INT16_C( 130), INT16_C( 171), INT16_C( 76),
|
|
INT16_C( 75), INT16_C( 192), INT16_C( 152), INT16_C( 247),
|
|
INT16_C( 165), INT16_C( 252), INT16_C( 115), INT16_C( 73),
|
|
INT16_C( 86), INT16_C( 52), INT16_C( 29), INT16_C( 227)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(175), UINT8_C(214), UINT8_C(138), UINT8_C(132),
|
|
UINT8_C( 59), UINT8_C( 53), UINT8_C(175), UINT8_C( 98),
|
|
UINT8_C(195), UINT8_C(230), UINT8_C(207), UINT8_C(189),
|
|
UINT8_C(100), UINT8_C(255), UINT8_C( 84), UINT8_C(129)),
|
|
simde_mm256_set_epi16(INT16_C( 175), INT16_C( 214), INT16_C( 138), INT16_C( 132),
|
|
INT16_C( 59), INT16_C( 53), INT16_C( 175), INT16_C( 98),
|
|
INT16_C( 195), INT16_C( 230), INT16_C( 207), INT16_C( 189),
|
|
INT16_C( 100), INT16_C( 255), INT16_C( 84), INT16_C( 129)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 40), UINT8_C( 10), UINT8_C(243), UINT8_C( 28),
|
|
UINT8_C( 48), UINT8_C(231), UINT8_C(240), UINT8_C( 2),
|
|
UINT8_C( 1), UINT8_C( 20), UINT8_C(184), UINT8_C(244),
|
|
UINT8_C(174), UINT8_C(138), UINT8_C( 47), UINT8_C(122)),
|
|
simde_mm256_set_epi16(INT16_C( 40), INT16_C( 10), INT16_C( 243), INT16_C( 28),
|
|
INT16_C( 48), INT16_C( 231), INT16_C( 240), INT16_C( 2),
|
|
INT16_C( 1), INT16_C( 20), INT16_C( 184), INT16_C( 244),
|
|
INT16_C( 174), INT16_C( 138), INT16_C( 47), INT16_C( 122)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 90), UINT8_C(144), UINT8_C(116), UINT8_C( 64),
|
|
UINT8_C(250), UINT8_C(233), UINT8_C(185), UINT8_C(193),
|
|
UINT8_C(172), UINT8_C(128), UINT8_C( 92), UINT8_C(230),
|
|
UINT8_C(153), UINT8_C( 17), UINT8_C( 8), UINT8_C(121)),
|
|
simde_mm256_set_epi16(INT16_C( 90), INT16_C( 144), INT16_C( 116), INT16_C( 64),
|
|
INT16_C( 250), INT16_C( 233), INT16_C( 185), INT16_C( 193),
|
|
INT16_C( 172), INT16_C( 128), INT16_C( 92), INT16_C( 230),
|
|
INT16_C( 153), INT16_C( 17), INT16_C( 8), INT16_C( 121)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(135), UINT8_C(132), UINT8_C(184), UINT8_C(244),
|
|
UINT8_C(164), UINT8_C( 94), UINT8_C(216), UINT8_C(238),
|
|
UINT8_C(112), UINT8_C(252), UINT8_C( 78), UINT8_C(150),
|
|
UINT8_C( 72), UINT8_C(215), UINT8_C(214), UINT8_C(215)),
|
|
simde_mm256_set_epi16(INT16_C( 135), INT16_C( 132), INT16_C( 184), INT16_C( 244),
|
|
INT16_C( 164), INT16_C( 94), INT16_C( 216), INT16_C( 238),
|
|
INT16_C( 112), INT16_C( 252), INT16_C( 78), INT16_C( 150),
|
|
INT16_C( 72), INT16_C( 215), INT16_C( 214), INT16_C( 215)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepu8_epi16(test_vec[i].a);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepu8_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm_set_epu8(UINT8_C(240), UINT8_C( 50), UINT8_C(144), UINT8_C( 4),
|
|
UINT8_C( 7), UINT8_C(233), UINT8_C(157), UINT8_C( 74),
|
|
UINT8_C(217), UINT8_C( 90), UINT8_C(141), UINT8_C(254),
|
|
UINT8_C(115), UINT8_C( 96), UINT8_C(126), UINT8_C( 23)),
|
|
simde_mm256_set_epi32(INT32_C( 217), INT32_C( 90), INT32_C( 141), INT32_C( 254),
|
|
INT32_C( 115), INT32_C( 96), INT32_C( 126), INT32_C( 23)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 79), UINT8_C(126), UINT8_C(254), UINT8_C( 77),
|
|
UINT8_C(225), UINT8_C( 76), UINT8_C( 61), UINT8_C(223),
|
|
UINT8_C( 95), UINT8_C(244), UINT8_C( 66), UINT8_C( 4),
|
|
UINT8_C(241), UINT8_C(112), UINT8_C(120), UINT8_C(166)),
|
|
simde_mm256_set_epi32(INT32_C( 95), INT32_C( 244), INT32_C( 66), INT32_C( 4),
|
|
INT32_C( 241), INT32_C( 112), INT32_C( 120), INT32_C( 166)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 56), UINT8_C(107), UINT8_C(114), UINT8_C( 86),
|
|
UINT8_C( 35), UINT8_C( 47), UINT8_C( 25), UINT8_C(187),
|
|
UINT8_C(176), UINT8_C( 49), UINT8_C(164), UINT8_C(236),
|
|
UINT8_C(110), UINT8_C( 61), UINT8_C( 64), UINT8_C( 42)),
|
|
simde_mm256_set_epi32(INT32_C( 176), INT32_C( 49), INT32_C( 164), INT32_C( 236),
|
|
INT32_C( 110), INT32_C( 61), INT32_C( 64), INT32_C( 42)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 54), UINT8_C(130), UINT8_C(171), UINT8_C( 76),
|
|
UINT8_C( 75), UINT8_C(192), UINT8_C(152), UINT8_C(247),
|
|
UINT8_C(165), UINT8_C(252), UINT8_C(115), UINT8_C( 73),
|
|
UINT8_C( 86), UINT8_C( 52), UINT8_C( 29), UINT8_C(227)),
|
|
simde_mm256_set_epi32(INT32_C( 165), INT32_C( 252), INT32_C( 115), INT32_C( 73),
|
|
INT32_C( 86), INT32_C( 52), INT32_C( 29), INT32_C( 227)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(175), UINT8_C(214), UINT8_C(138), UINT8_C(132),
|
|
UINT8_C( 59), UINT8_C( 53), UINT8_C(175), UINT8_C( 98),
|
|
UINT8_C(195), UINT8_C(230), UINT8_C(207), UINT8_C(189),
|
|
UINT8_C(100), UINT8_C(255), UINT8_C( 84), UINT8_C(129)),
|
|
simde_mm256_set_epi32(INT32_C( 195), INT32_C( 230), INT32_C( 207), INT32_C( 189),
|
|
INT32_C( 100), INT32_C( 255), INT32_C( 84), INT32_C( 129)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 40), UINT8_C( 10), UINT8_C(243), UINT8_C( 28),
|
|
UINT8_C( 48), UINT8_C(231), UINT8_C(240), UINT8_C( 2),
|
|
UINT8_C( 1), UINT8_C( 20), UINT8_C(184), UINT8_C(244),
|
|
UINT8_C(174), UINT8_C(138), UINT8_C( 47), UINT8_C(122)),
|
|
simde_mm256_set_epi32(INT32_C( 1), INT32_C( 20), INT32_C( 184), INT32_C( 244),
|
|
INT32_C( 174), INT32_C( 138), INT32_C( 47), INT32_C( 122)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 90), UINT8_C(144), UINT8_C(116), UINT8_C( 64),
|
|
UINT8_C(250), UINT8_C(233), UINT8_C(185), UINT8_C(193),
|
|
UINT8_C(172), UINT8_C(128), UINT8_C( 92), UINT8_C(230),
|
|
UINT8_C(153), UINT8_C( 17), UINT8_C( 8), UINT8_C(121)),
|
|
simde_mm256_set_epi32(INT32_C( 172), INT32_C( 128), INT32_C( 92), INT32_C( 230),
|
|
INT32_C( 153), INT32_C( 17), INT32_C( 8), INT32_C( 121)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(135), UINT8_C(132), UINT8_C(184), UINT8_C(244),
|
|
UINT8_C(164), UINT8_C( 94), UINT8_C(216), UINT8_C(238),
|
|
UINT8_C(112), UINT8_C(252), UINT8_C( 78), UINT8_C(150),
|
|
UINT8_C( 72), UINT8_C(215), UINT8_C(214), UINT8_C(215)),
|
|
simde_mm256_set_epi32(INT32_C( 112), INT32_C( 252), INT32_C( 78), INT32_C( 150),
|
|
INT32_C( 72), INT32_C( 215), INT32_C( 214), INT32_C( 215)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepu8_epi32(test_vec[i].a);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepu8_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm_set_epu8(UINT8_C( 9), UINT8_C(182), UINT8_C(204), UINT8_C(188),
|
|
UINT8_C( 95), UINT8_C(246), UINT8_C(157), UINT8_C(121),
|
|
UINT8_C( 1), UINT8_C( 69), UINT8_C(220), UINT8_C(154),
|
|
UINT8_C(132), UINT8_C(163), UINT8_C(155), UINT8_C(138)),
|
|
simde_mm256_set_epi64x(INT64_C( 132), INT64_C( 163),
|
|
INT64_C( 155), INT64_C( 138)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(149), UINT8_C(222), UINT8_C(181), UINT8_C(119),
|
|
UINT8_C(177), UINT8_C(153), UINT8_C(247), UINT8_C(135),
|
|
UINT8_C(205), UINT8_C( 4), UINT8_C( 89), UINT8_C(110),
|
|
UINT8_C(112), UINT8_C( 67), UINT8_C(155), UINT8_C( 87)),
|
|
simde_mm256_set_epi64x(INT64_C( 112), INT64_C( 67),
|
|
INT64_C( 155), INT64_C( 87)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(171), UINT8_C(121), UINT8_C(140), UINT8_C(121),
|
|
UINT8_C(213), UINT8_C(176), UINT8_C( 1), UINT8_C(154),
|
|
UINT8_C( 39), UINT8_C(151), UINT8_C(230), UINT8_C( 88),
|
|
UINT8_C(204), UINT8_C( 61), UINT8_C(129), UINT8_C( 21)),
|
|
simde_mm256_set_epi64x(INT64_C( 204), INT64_C( 61),
|
|
INT64_C( 129), INT64_C( 21)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 85), UINT8_C( 1), UINT8_C( 94), UINT8_C( 60),
|
|
UINT8_C(102), UINT8_C( 9), UINT8_C(200), UINT8_C( 64),
|
|
UINT8_C(153), UINT8_C(170), UINT8_C( 51), UINT8_C(130),
|
|
UINT8_C(247), UINT8_C( 88), UINT8_C(204), UINT8_C( 13)),
|
|
simde_mm256_set_epi64x(INT64_C( 247), INT64_C( 88),
|
|
INT64_C( 204), INT64_C( 13)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C( 0), UINT8_C(216), UINT8_C( 42), UINT8_C( 42),
|
|
UINT8_C(109), UINT8_C(251), UINT8_C(228), UINT8_C(176),
|
|
UINT8_C( 70), UINT8_C( 6), UINT8_C(205), UINT8_C( 17),
|
|
UINT8_C(151), UINT8_C(148), UINT8_C( 14), UINT8_C(165)),
|
|
simde_mm256_set_epi64x(INT64_C( 151), INT64_C( 148),
|
|
INT64_C( 14), INT64_C( 165)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(125), UINT8_C(142), UINT8_C(217), UINT8_C(138),
|
|
UINT8_C( 29), UINT8_C(175), UINT8_C(135), UINT8_C(115),
|
|
UINT8_C(128), UINT8_C( 99), UINT8_C( 64), UINT8_C( 7),
|
|
UINT8_C(114), UINT8_C(155), UINT8_C(129), UINT8_C( 30)),
|
|
simde_mm256_set_epi64x(INT64_C( 114), INT64_C( 155),
|
|
INT64_C( 129), INT64_C( 30)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(130), UINT8_C(122), UINT8_C( 50), UINT8_C(115),
|
|
UINT8_C( 72), UINT8_C(200), UINT8_C( 52), UINT8_C(125),
|
|
UINT8_C(152), UINT8_C(180), UINT8_C( 65), UINT8_C(103),
|
|
UINT8_C(134), UINT8_C(220), UINT8_C(163), UINT8_C(110)),
|
|
simde_mm256_set_epi64x(INT64_C( 134), INT64_C( 220),
|
|
INT64_C( 163), INT64_C( 110)) },
|
|
{ simde_x_mm_set_epu8(UINT8_C(176), UINT8_C( 98), UINT8_C(137), UINT8_C( 51),
|
|
UINT8_C(219), UINT8_C(239), UINT8_C(162), UINT8_C(134),
|
|
UINT8_C(142), UINT8_C( 13), UINT8_C(181), UINT8_C(111),
|
|
UINT8_C(180), UINT8_C(241), UINT8_C(255), UINT8_C(244)),
|
|
simde_mm256_set_epi64x(INT64_C( 180), INT64_C( 241),
|
|
INT64_C( 255), INT64_C( 244)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepu8_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepu16_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm_set_epu16(UINT16_C(61490), UINT16_C(36868), UINT16_C( 2025), UINT16_C(40266),
|
|
UINT16_C(55642), UINT16_C(36350), UINT16_C(29536), UINT16_C(32279)),
|
|
simde_mm256_set_epi32(INT32_C( 61490), INT32_C( 36868), INT32_C( 2025), INT32_C( 40266),
|
|
INT32_C( 55642), INT32_C( 36350), INT32_C( 29536), INT32_C( 32279)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(20350), UINT16_C(65101), UINT16_C(57676), UINT16_C(15839),
|
|
UINT16_C(24564), UINT16_C(16900), UINT16_C(61808), UINT16_C(30886)),
|
|
simde_mm256_set_epi32(INT32_C( 20350), INT32_C( 65101), INT32_C( 57676), INT32_C( 15839),
|
|
INT32_C( 24564), INT32_C( 16900), INT32_C( 61808), INT32_C( 30886)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(14443), UINT16_C(29270), UINT16_C( 9007), UINT16_C( 6587),
|
|
UINT16_C(45105), UINT16_C(42220), UINT16_C(28221), UINT16_C(16426)),
|
|
simde_mm256_set_epi32(INT32_C( 14443), INT32_C( 29270), INT32_C( 9007), INT32_C( 6587),
|
|
INT32_C( 45105), INT32_C( 42220), INT32_C( 28221), INT32_C( 16426)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(13954), UINT16_C(43852), UINT16_C(19392), UINT16_C(39159),
|
|
UINT16_C(42492), UINT16_C(29513), UINT16_C(22068), UINT16_C( 7651)),
|
|
simde_mm256_set_epi32(INT32_C( 13954), INT32_C( 43852), INT32_C( 19392), INT32_C( 39159),
|
|
INT32_C( 42492), INT32_C( 29513), INT32_C( 22068), INT32_C( 7651)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(45014), UINT16_C(35460), UINT16_C(15157), UINT16_C(44898),
|
|
UINT16_C(50150), UINT16_C(53181), UINT16_C(25855), UINT16_C(21633)),
|
|
simde_mm256_set_epi32(INT32_C( 45014), INT32_C( 35460), INT32_C( 15157), INT32_C( 44898),
|
|
INT32_C( 50150), INT32_C( 53181), INT32_C( 25855), INT32_C( 21633)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(10250), UINT16_C(62236), UINT16_C(12519), UINT16_C(61442),
|
|
UINT16_C( 276), UINT16_C(47348), UINT16_C(44682), UINT16_C(12154)),
|
|
simde_mm256_set_epi32(INT32_C( 10250), INT32_C( 62236), INT32_C( 12519), INT32_C( 61442),
|
|
INT32_C( 276), INT32_C( 47348), INT32_C( 44682), INT32_C( 12154)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(23184), UINT16_C(29760), UINT16_C(64233), UINT16_C(47553),
|
|
UINT16_C(44160), UINT16_C(23782), UINT16_C(39185), UINT16_C( 2169)),
|
|
simde_mm256_set_epi32(INT32_C( 23184), INT32_C( 29760), INT32_C( 64233), INT32_C( 47553),
|
|
INT32_C( 44160), INT32_C( 23782), INT32_C( 39185), INT32_C( 2169)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(34692), UINT16_C(47348), UINT16_C(42078), UINT16_C(55534),
|
|
UINT16_C(28924), UINT16_C(20118), UINT16_C(18647), UINT16_C(54999)),
|
|
simde_mm256_set_epi32(INT32_C( 34692), INT32_C( 47348), INT32_C( 42078), INT32_C( 55534),
|
|
INT32_C( 28924), INT32_C( 20118), INT32_C( 18647), INT32_C( 54999)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepu16_epi32(test_vec[i].a);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepu16_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm_set_epu16(UINT16_C(61490), UINT16_C(36868), UINT16_C( 2025), UINT16_C(40266),
|
|
UINT16_C(55642), UINT16_C(36350), UINT16_C(29536), UINT16_C(32279)),
|
|
simde_mm256_set_epi64x(INT64_C( 55642), INT64_C( 36350),
|
|
INT64_C( 29536), INT64_C( 32279)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(20350), UINT16_C(65101), UINT16_C(57676), UINT16_C(15839),
|
|
UINT16_C(24564), UINT16_C(16900), UINT16_C(61808), UINT16_C(30886)),
|
|
simde_mm256_set_epi64x(INT64_C( 24564), INT64_C( 16900),
|
|
INT64_C( 61808), INT64_C( 30886)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(14443), UINT16_C(29270), UINT16_C( 9007), UINT16_C( 6587),
|
|
UINT16_C(45105), UINT16_C(42220), UINT16_C(28221), UINT16_C(16426)),
|
|
simde_mm256_set_epi64x(INT64_C( 45105), INT64_C( 42220),
|
|
INT64_C( 28221), INT64_C( 16426)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(13954), UINT16_C(43852), UINT16_C(19392), UINT16_C(39159),
|
|
UINT16_C(42492), UINT16_C(29513), UINT16_C(22068), UINT16_C( 7651)),
|
|
simde_mm256_set_epi64x(INT64_C( 42492), INT64_C( 29513),
|
|
INT64_C( 22068), INT64_C( 7651)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(45014), UINT16_C(35460), UINT16_C(15157), UINT16_C(44898),
|
|
UINT16_C(50150), UINT16_C(53181), UINT16_C(25855), UINT16_C(21633)),
|
|
simde_mm256_set_epi64x(INT64_C( 50150), INT64_C( 53181),
|
|
INT64_C( 25855), INT64_C( 21633)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(10250), UINT16_C(62236), UINT16_C(12519), UINT16_C(61442),
|
|
UINT16_C( 276), UINT16_C(47348), UINT16_C(44682), UINT16_C(12154)),
|
|
simde_mm256_set_epi64x(INT64_C( 276), INT64_C( 47348),
|
|
INT64_C( 44682), INT64_C( 12154)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(23184), UINT16_C(29760), UINT16_C(64233), UINT16_C(47553),
|
|
UINT16_C(44160), UINT16_C(23782), UINT16_C(39185), UINT16_C( 2169)),
|
|
simde_mm256_set_epi64x(INT64_C( 44160), INT64_C( 23782),
|
|
INT64_C( 39185), INT64_C( 2169)) },
|
|
{ simde_x_mm_set_epu16(UINT16_C(34692), UINT16_C(47348), UINT16_C(42078), UINT16_C(55534),
|
|
UINT16_C(28924), UINT16_C(20118), UINT16_C(18647), UINT16_C(54999)),
|
|
simde_mm256_set_epi64x(INT64_C( 28924), INT64_C( 20118),
|
|
INT64_C( 18647), INT64_C( 54999)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepu16_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_cvtepu32_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm_set_epu32(UINT32_C(2027668512), UINT32_C(4262540660), UINT32_C(2279720356), UINT32_C( 579063940)),
|
|
simde_mm256_set_epi64x(INT64_C( 2027668512), INT64_C( 4262540660),
|
|
INT64_C( 2279720356), INT64_C( 579063940)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C( 214101781), UINT32_C(2515026933), UINT32_C( 10021235), UINT32_C(4284419101)),
|
|
simde_mm256_set_epi64x(INT64_C( 214101781), INT64_C( 2515026933),
|
|
INT64_C( 10021235), INT64_C( 4284419101)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C(2492492584), UINT32_C(1475674737), UINT32_C( 145233694), UINT32_C(2838555915)),
|
|
simde_mm256_set_epi64x(INT64_C( 2492492584), INT64_C( 1475674737),
|
|
INT64_C( 145233694), INT64_C( 2838555915)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C(3488754722), UINT32_C(2142666247), UINT32_C(4044693026), UINT32_C( 975481583)),
|
|
simde_mm256_set_epi64x(INT64_C( 3488754722), INT64_C( 2142666247),
|
|
INT64_C( 4044693026), INT64_C( 975481583)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C(3942926803), UINT32_C( 10053147), UINT32_C(3324554936), UINT32_C( 275092283)),
|
|
simde_mm256_set_epi64x(INT64_C( 3942926803), INT64_C( 10053147),
|
|
INT64_C( 3324554936), INT64_C( 275092283)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C( 609927901), UINT32_C(4032952140), UINT32_C(2163741382), UINT32_C(1197307836)),
|
|
simde_mm256_set_epi64x(INT64_C( 609927901), INT64_C( 4032952140),
|
|
INT64_C( 2163741382), INT64_C( 1197307836)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C( 667494753), UINT32_C( 25338810), UINT32_C( 229628292), UINT32_C(1413771580)),
|
|
simde_mm256_set_epi64x(INT64_C( 667494753), INT64_C( 25338810),
|
|
INT64_C( 229628292), INT64_C( 1413771580)) },
|
|
{ simde_x_mm_set_epu32(UINT32_C(3461166204), UINT32_C(2882591041), UINT32_C(4038947223), UINT32_C(3672325978)),
|
|
simde_mm256_set_epi64x(INT64_C( 3461166204), INT64_C( 2882591041),
|
|
INT64_C( 4038947223), INT64_C( 3672325978)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_cvtepu32_epi64(test_vec[i].a);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_extract_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
simde__m256i a;
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( 109), INT8_C( -15), INT8_C( -7), INT8_C( 79),
|
|
INT8_C( 63), INT8_C( 13), INT8_C( 55), INT8_C( 74),
|
|
INT8_C( -46), INT8_C( 126), INT8_C(-104), INT8_C( 83),
|
|
INT8_C( -94), INT8_C( 46), INT8_C( -10), INT8_C( -51),
|
|
INT8_C( -63), INT8_C( 8), INT8_C( 47), INT8_C( 108),
|
|
INT8_C( 38), INT8_C( -24), INT8_C( -54), INT8_C( 83),
|
|
INT8_C( 41), INT8_C( 48), INT8_C(-118), INT8_C( 66),
|
|
INT8_C( -73), INT8_C( 110), INT8_C( 47), INT8_C( 78));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 1)), INT8_C( 47));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( 9), INT8_C( 60), INT8_C( -76), INT8_C( 57),
|
|
INT8_C( 106), INT8_C( -35), INT8_C( -51), INT8_C( 33),
|
|
INT8_C(-119), INT8_C( 27), INT8_C(-103), INT8_C( -96),
|
|
INT8_C( 114), INT8_C( 4), INT8_C( -76), INT8_C( -65),
|
|
INT8_C( 105), INT8_C( -42), INT8_C( 71), INT8_C( 12),
|
|
INT8_C(-113), INT8_C( 32), INT8_C(-107), INT8_C( -55),
|
|
INT8_C( 87), INT8_C( 74), INT8_C( 33), INT8_C( 32),
|
|
INT8_C( -83), INT8_C( -97), INT8_C( 40), INT8_C(-118));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 12)), INT8_C( 12));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( 53), INT8_C( -56), INT8_C( -74), INT8_C( 14),
|
|
INT8_C( 84), INT8_C( 78), INT8_C( 58), INT8_C( 56),
|
|
INT8_C(-126), INT8_C( 20), INT8_C( 56), INT8_C( 20),
|
|
INT8_C( 6), INT8_C( 127), INT8_C( 111), INT8_C(-117),
|
|
INT8_C( -66), INT8_C(-101), INT8_C( 45), INT8_C( 7),
|
|
INT8_C(-108), INT8_C( 110), INT8_C( -80), INT8_C( -37),
|
|
INT8_C( -87), INT8_C( -76), INT8_C( -93), INT8_C( -39),
|
|
INT8_C( 5), INT8_C( 40), INT8_C( 106), INT8_C( -44));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 2)), INT8_C( 40));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( -54), INT8_C( -60), INT8_C( 8), INT8_C(-114),
|
|
INT8_C( -71), INT8_C( 78), INT8_C( -79), INT8_C( 48),
|
|
INT8_C( 112), INT8_C( 109), INT8_C( 51), INT8_C( -46),
|
|
INT8_C( -65), INT8_C( -24), INT8_C( 81), INT8_C( 65),
|
|
INT8_C( 88), INT8_C( 30), INT8_C( -69), INT8_C( -54),
|
|
INT8_C( 87), INT8_C( 123), INT8_C( 124), INT8_C( -89),
|
|
INT8_C( 14), INT8_C( -48), INT8_C( 73), INT8_C( 34),
|
|
INT8_C( -22), INT8_C( -74), INT8_C( 4), INT8_C( -22));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 1)), INT8_C( 4));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( -34), INT8_C( 20), INT8_C( 68), INT8_C( -53),
|
|
INT8_C( 24), INT8_C( -70), INT8_C( -82), INT8_C( 20),
|
|
INT8_C(-104), INT8_C( -97), INT8_C( 126), INT8_C(-128),
|
|
INT8_C( 102), INT8_C( -37), INT8_C( -20), INT8_C( -7),
|
|
INT8_C( -78), INT8_C( 110), INT8_C( -59), INT8_C( 89),
|
|
INT8_C( -18), INT8_C( -26), INT8_C( -89), INT8_C( 39),
|
|
INT8_C( -79), INT8_C( 100), INT8_C( -39), INT8_C( 76),
|
|
INT8_C( -51), INT8_C( -31), INT8_C( 26), INT8_C( -70));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 27)), INT8_C( 24));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( -85), INT8_C( -44), INT8_C( 101), INT8_C( 109),
|
|
INT8_C( 58), INT8_C( 71), INT8_C( 75), INT8_C( 93),
|
|
INT8_C( -37), INT8_C( 91), INT8_C( 6), INT8_C( 95),
|
|
INT8_C( -47), INT8_C( 107), INT8_C( 114), INT8_C( -12),
|
|
INT8_C( 86), INT8_C( 23), INT8_C( -82), INT8_C( 84),
|
|
INT8_C( -80), INT8_C( -54), INT8_C(-107), INT8_C( -58),
|
|
INT8_C( -42), INT8_C( -79), INT8_C( 59), INT8_C( -50),
|
|
INT8_C( 63), INT8_C(-125), INT8_C( -96), INT8_C( -58));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 11)), INT8_C( -80));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( 71), INT8_C( 18), INT8_C( 82), INT8_C( -74),
|
|
INT8_C( 9), INT8_C( -6), INT8_C( -94), INT8_C( -46),
|
|
INT8_C( 17), INT8_C( 25), INT8_C( -11), INT8_C(-128),
|
|
INT8_C(-116), INT8_C( 77), INT8_C( 76), INT8_C( 8),
|
|
INT8_C( 80), INT8_C( -50), INT8_C( 11), INT8_C( 10),
|
|
INT8_C( 107), INT8_C( -99), INT8_C( 37), INT8_C( 5),
|
|
INT8_C( 107), INT8_C(-118), INT8_C( 119), INT8_C( -11),
|
|
INT8_C( 84), INT8_C( 8), INT8_C( 15), INT8_C(-102));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 9)), INT8_C( 37));
|
|
|
|
a = simde_mm256_set_epi8(INT8_C( 84), INT8_C(-100), INT8_C( 116), INT8_C( -53),
|
|
INT8_C(-104), INT8_C( 52), INT8_C( 51), INT8_C( 60),
|
|
INT8_C( 91), INT8_C( 114), INT8_C(-106), INT8_C( -11),
|
|
INT8_C( 83), INT8_C( 57), INT8_C( 4), INT8_C(-120),
|
|
INT8_C( 77), INT8_C( 71), INT8_C( 1), INT8_C( 95),
|
|
INT8_C( 23), INT8_C( 89), INT8_C( 112), INT8_C( -7),
|
|
INT8_C( -66), INT8_C( 78), INT8_C( 88), INT8_C( 5),
|
|
INT8_C( 75), INT8_C( 72), INT8_C( -87), INT8_C( 47));
|
|
simde_assert_equal_i8(HEDLEY_STATIC_CAST(int8_t, simde_mm256_extract_epi8(a, 27)), INT8_C(-104));
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_extract_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
simde__m256i a;
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( -9152), INT16_C(-17321), INT16_C( -3541), INT16_C( 31629),
|
|
INT16_C( 4310), INT16_C(-20495), INT16_C(-28807), INT16_C(-17056),
|
|
INT16_C(-19221), INT16_C( 32236), INT16_C(-26695), INT16_C( -3004),
|
|
INT16_C( -4570), INT16_C(-14787), INT16_C( 7635), INT16_C(-23471));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 4)), INT16_C( -3004));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( 10010), INT16_C( 6255), INT16_C(-20985), INT16_C( 25937),
|
|
INT16_C( 187), INT16_C(-14746), INT16_C( 4260), INT16_C( -5314),
|
|
INT16_C( 21499), INT16_C(-10726), INT16_C(-28550), INT16_C(-26957),
|
|
INT16_C( 25383), INT16_C(-32368), INT16_C(-28215), INT16_C(-29614));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 3)), INT16_C( 25383));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( -9332), INT16_C( -3776), INT16_C( -659), INT16_C(-11998),
|
|
INT16_C(-22530), INT16_C( 30025), INT16_C( -7620), INT16_C( -4652),
|
|
INT16_C( 12144), INT16_C( 2985), INT16_C(-29351), INT16_C( 7652),
|
|
INT16_C( 29358), INT16_C( -2482), INT16_C( 2031), INT16_C(-18027));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 12)), INT16_C(-11998));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( 5566), INT16_C( 26716), INT16_C(-28005), INT16_C(-20328),
|
|
INT16_C(-22447), INT16_C(-29429), INT16_C( 18844), INT16_C(-28207),
|
|
INT16_C( 13304), INT16_C( 29506), INT16_C( 26640), INT16_C(-30988),
|
|
INT16_C( 7094), INT16_C( 15837), INT16_C( 17850), INT16_C( -4007));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 8)), INT16_C(-28207));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C(-22807), INT16_C( 19457), INT16_C(-27368), INT16_C(-30791),
|
|
INT16_C( -9280), INT16_C(-12893), INT16_C(-14741), INT16_C( -5696),
|
|
INT16_C( 4897), INT16_C( 24376), INT16_C(-27876), INT16_C( 29206),
|
|
INT16_C(-29469), INT16_C(-22113), INT16_C( 23067), INT16_C( 6063));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 3)), INT16_C(-29469));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( -6124), INT16_C( 1398), INT16_C( 383), INT16_C( 1785),
|
|
INT16_C(-30725), INT16_C(-20290), INT16_C( 11961), INT16_C(-25919),
|
|
INT16_C(-25742), INT16_C(-31321), INT16_C( -6067), INT16_C( 17059),
|
|
INT16_C( 16943), INT16_C( 31917), INT16_C( 18056), INT16_C(-23274));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 7)), INT16_C(-25742));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( 29739), INT16_C(-15442), INT16_C(-18760), INT16_C( 3107),
|
|
INT16_C(-25745), INT16_C( -8), INT16_C( -5543), INT16_C( 3310),
|
|
INT16_C( 13765), INT16_C(-29431), INT16_C( 31912), INT16_C( 20910),
|
|
INT16_C(-32282), INT16_C( 8881), INT16_C(-19453), INT16_C(-25360));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 0)), INT16_C(-25360));
|
|
|
|
a = simde_mm256_set_epi16(INT16_C( 19041), INT16_C( 28526), INT16_C( 632), INT16_C( 12890),
|
|
INT16_C( -9054), INT16_C( 9044), INT16_C(-24624), INT16_C(-18390),
|
|
INT16_C( -7692), INT16_C( 20879), INT16_C( 2760), INT16_C( 29306),
|
|
INT16_C( 5480), INT16_C( 22577), INT16_C(-15668), INT16_C(-16497));
|
|
simde_assert_equal_i16(HEDLEY_STATIC_CAST(int16_t, simde_mm256_extract_epi16(a, 0)), INT16_C(-16497));
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_extracti128_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m128i ra;
|
|
simde__m128i rb;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 1229394801), INT32_C( 992221618), INT32_C(-1388107406), INT32_C( 780445625),
|
|
INT32_C( 1795700153), INT32_C( -297324271), INT32_C( 1549329146), INT32_C( -534963225)),
|
|
simde_mm256_set_epi32(INT32_C( -867719772), INT32_C(-1804212438), INT32_C( 1849818353), INT32_C( 405560893),
|
|
INT32_C( 1351338386), INT32_C( -886724662), INT32_C( 1197680760), INT32_C( 1003042592)),
|
|
simde_mm_set_epi32(INT32_C( 1795700153), INT32_C( -297324271), INT32_C( 1549329146), INT32_C( -534963225)),
|
|
simde_mm_set_epi32(INT32_C( 1229394801), INT32_C( 992221618), INT32_C(-1388107406), INT32_C( 780445625)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1839397279), INT32_C( -585358334), INT32_C( 779178160), INT32_C( -362976984),
|
|
INT32_C(-1015866216), INT32_C( -556342867), INT32_C( -766379029), INT32_C( -130781639)),
|
|
simde_mm256_set_epi32(INT32_C( 2021215895), INT32_C( -422044488), INT32_C(-1385706777), INT32_C( 22702781),
|
|
INT32_C( 1076807274), INT32_C(-1923875401), INT32_C( -554846936), INT32_C(-1008226174)),
|
|
simde_mm_set_epi32(INT32_C(-1015866216), INT32_C( -556342867), INT32_C( -766379029), INT32_C( -130781639)),
|
|
simde_mm_set_epi32(INT32_C( 1839397279), INT32_C( -585358334), INT32_C( 779178160), INT32_C( -362976984)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 23865749), INT32_C( -908972624), INT32_C(-1642418179), INT32_C( 111689864),
|
|
INT32_C( -835154412), INT32_C( -431540196), INT32_C( -161564683), INT32_C( 204589457)),
|
|
simde_mm256_set_epi32(INT32_C( 2088662618), INT32_C(-1671363325), INT32_C( -997695043), INT32_C( -809764814),
|
|
INT32_C( 2092581708), INT32_C(-1073689737), INT32_C(-1556963227), INT32_C( -641330488)),
|
|
simde_mm_set_epi32(INT32_C( -835154412), INT32_C( -431540196), INT32_C( -161564683), INT32_C( 204589457)),
|
|
simde_mm_set_epi32(INT32_C( 23865749), INT32_C( -908972624), INT32_C(-1642418179), INT32_C( 111689864)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1727711569), INT32_C(-1915329589), INT32_C( -979233658), INT32_C( -409203179),
|
|
INT32_C( 1343207861), INT32_C(-1541174422), INT32_C(-2097250480), INT32_C(-1382492089)),
|
|
simde_mm256_set_epi32(INT32_C( -42175512), INT32_C(-2146588690), INT32_C(-1902868938), INT32_C( 1919945739),
|
|
INT32_C( 410749235), INT32_C(-1828962645), INT32_C( 525862553), INT32_C( -282512400)),
|
|
simde_mm_set_epi32(INT32_C( 1343207861), INT32_C(-1541174422), INT32_C(-2097250480), INT32_C(-1382492089)),
|
|
simde_mm_set_epi32(INT32_C( 1727711569), INT32_C(-1915329589), INT32_C( -979233658), INT32_C( -409203179)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 377369527), INT32_C( 1159197718), INT32_C( 288677560), INT32_C( 828517622),
|
|
INT32_C( 1815109517), INT32_C( 1103735854), INT32_C( 1342116414), INT32_C( 1750949195)),
|
|
simde_mm256_set_epi32(INT32_C( 1481955155), INT32_C( -119794855), INT32_C(-2109995042), INT32_C( 582656481),
|
|
INT32_C( 1178951500), INT32_C( 762286037), INT32_C( 628377158), INT32_C( -188026020)),
|
|
simde_mm_set_epi32(INT32_C( 1815109517), INT32_C( 1103735854), INT32_C( 1342116414), INT32_C( 1750949195)),
|
|
simde_mm_set_epi32(INT32_C( 377369527), INT32_C( 1159197718), INT32_C( 288677560), INT32_C( 828517622)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1996051424), INT32_C( -314294760), INT32_C( -770521150), INT32_C( 508113145),
|
|
INT32_C( -677093043), INT32_C( -527636644), INT32_C( 1238565466), INT32_C(-1592387355)),
|
|
simde_mm256_set_epi32(INT32_C(-1510707643), INT32_C( 1988531398), INT32_C(-1182276921), INT32_C( 363503044),
|
|
INT32_C( 2086268932), INT32_C( -428647595), INT32_C( 1685321543), INT32_C( 1979089365)),
|
|
simde_mm_set_epi32(INT32_C( -677093043), INT32_C( -527636644), INT32_C( 1238565466), INT32_C(-1592387355)),
|
|
simde_mm_set_epi32(INT32_C(-1996051424), INT32_C( -314294760), INT32_C( -770521150), INT32_C( 508113145)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 4593159), INT32_C( 1779671737), INT32_C( -569674634), INT32_C( -184254965),
|
|
INT32_C( -665786654), INT32_C( 663766301), INT32_C(-1237697897), INT32_C( -260948936)),
|
|
simde_mm256_set_epi32(INT32_C( -575114102), INT32_C( -399786699), INT32_C(-1468780124), INT32_C( 2032090700),
|
|
INT32_C( 723386747), INT32_C(-1766232746), INT32_C( 73837413), INT32_C( 496540408)),
|
|
simde_mm_set_epi32(INT32_C( -665786654), INT32_C( 663766301), INT32_C(-1237697897), INT32_C( -260948936)),
|
|
simde_mm_set_epi32(INT32_C( 4593159), INT32_C( 1779671737), INT32_C( -569674634), INT32_C( -184254965)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -328197013), INT32_C( 1036318270), INT32_C(-1930293157), INT32_C( 1948339432),
|
|
INT32_C( 1903716614), INT32_C(-1951673698), INT32_C(-1858071379), INT32_C( 2070124471)),
|
|
simde_mm256_set_epi32(INT32_C(-1815372819), INT32_C( -102535612), INT32_C( 115383384), INT32_C( 1004544095),
|
|
INT32_C( 1506420054), INT32_C(-1014523798), INT32_C(-1776388104), INT32_C( 1550371104)),
|
|
simde_mm_set_epi32(INT32_C( 1903716614), INT32_C(-1951673698), INT32_C(-1858071379), INT32_C( 2070124471)),
|
|
simde_mm_set_epi32(INT32_C( -328197013), INT32_C( 1036318270), INT32_C(-1930293157), INT32_C( 1948339432)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i ra = simde_mm256_extracti128_si256(test_vec[i].a, 0);
|
|
simde__m128i rb = simde_mm256_extracti128_si256(test_vec[i].a, 1);
|
|
simde_assert_m128i_i32(ra, ==, test_vec[i].ra);
|
|
simde_assert_m128i_i32(rb, ==, test_vec[i].rb);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_hadd_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-18444), INT16_C(-18028), INT16_C( 29026), INT16_C( 2084),
|
|
INT16_C( 4112), INT16_C(-30013), INT16_C( 26536), INT16_C(-22613),
|
|
INT16_C( 28256), INT16_C(-13992), INT16_C( 1054), INT16_C(-17387),
|
|
INT16_C( 28361), INT16_C(-13892), INT16_C(-23621), INT16_C( -6864)),
|
|
simde_mm256_set_epi16(INT16_C( -2077), INT16_C( 32093), INT16_C(-32096), INT16_C( -1919),
|
|
INT16_C(-29576), INT16_C( 1752), INT16_C( -9460), INT16_C( 18637),
|
|
INT16_C( 12808), INT16_C( 5796), INT16_C( 8151), INT16_C( -2897),
|
|
INT16_C(-24515), INT16_C(-31464), INT16_C(-13532), INT16_C( -9881)),
|
|
simde_mm256_set_epi16(INT16_C( 30016), INT16_C( 31521), INT16_C(-27824), INT16_C( 9177),
|
|
INT16_C( 29064), INT16_C( 31110), INT16_C(-25901), INT16_C( 3923),
|
|
INT16_C( 18604), INT16_C( 5254), INT16_C( 9557), INT16_C(-23413),
|
|
INT16_C( 14264), INT16_C(-16333), INT16_C( 14469), INT16_C(-30485)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 9100), INT16_C( -1983), INT16_C( 28981), INT16_C( 31131),
|
|
INT16_C( -8267), INT16_C( 9829), INT16_C(-19843), INT16_C( 28705),
|
|
INT16_C( 15872), INT16_C( 21932), INT16_C( -9103), INT16_C( 20935),
|
|
INT16_C(-24996), INT16_C( 13650), INT16_C( 30282), INT16_C(-21973)),
|
|
simde_mm256_set_epi16(INT16_C( -9238), INT16_C(-15000), INT16_C( 28358), INT16_C(-31774),
|
|
INT16_C( 20723), INT16_C( 27208), INT16_C(-20512), INT16_C( 10808),
|
|
INT16_C( 17124), INT16_C( 20983), INT16_C( 113), INT16_C( 22835),
|
|
INT16_C( -190), INT16_C(-28607), INT16_C( 22616), INT16_C( 4805)),
|
|
simde_mm256_set_epi16(INT16_C(-24238), INT16_C( -3416), INT16_C(-17605), INT16_C( -9704),
|
|
INT16_C( 7117), INT16_C( -5424), INT16_C( 1562), INT16_C( 8862),
|
|
INT16_C(-27429), INT16_C( 22948), INT16_C(-28797), INT16_C( 27421),
|
|
INT16_C(-27732), INT16_C( 11832), INT16_C(-11346), INT16_C( 8309)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 26837), INT16_C( 17774), INT16_C(-32310), INT16_C( -9579),
|
|
INT16_C( 3637), INT16_C(-14106), INT16_C( 30046), INT16_C(-13930),
|
|
INT16_C( -1887), INT16_C( 13772), INT16_C( 19874), INT16_C(-18102),
|
|
INT16_C(-11204), INT16_C( -4897), INT16_C( 3260), INT16_C(-17962)),
|
|
simde_mm256_set_epi16(INT16_C( 22389), INT16_C(-14730), INT16_C( 31871), INT16_C( 17642),
|
|
INT16_C(-26185), INT16_C( -2982), INT16_C(-14158), INT16_C( 4590),
|
|
INT16_C( 20601), INT16_C( 21976), INT16_C( 25432), INT16_C( 31010),
|
|
INT16_C(-23314), INT16_C( -9816), INT16_C( 8140), INT16_C( -7858)),
|
|
simde_mm256_set_epi16(INT16_C( 7659), INT16_C(-16023), INT16_C(-29167), INT16_C( -9568),
|
|
INT16_C(-20925), INT16_C( 23647), INT16_C(-10469), INT16_C( 16116),
|
|
INT16_C(-22959), INT16_C( -9094), INT16_C( 32406), INT16_C( 282),
|
|
INT16_C( 11885), INT16_C( 1772), INT16_C(-16101), INT16_C(-14702)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 12057), INT16_C(-24517), INT16_C( -9967), INT16_C( -7239),
|
|
INT16_C( -2143), INT16_C(-23349), INT16_C(-25096), INT16_C(-21587),
|
|
INT16_C( -802), INT16_C( 25377), INT16_C(-22001), INT16_C( 28281),
|
|
INT16_C(-28768), INT16_C(-19834), INT16_C( 8025), INT16_C(-23943)),
|
|
simde_mm256_set_epi16(INT16_C( 6731), INT16_C(-13423), INT16_C( -6728), INT16_C(-19678),
|
|
INT16_C(-29476), INT16_C( -9124), INT16_C(-21742), INT16_C( 14418),
|
|
INT16_C( 27306), INT16_C( 25972), INT16_C(-12648), INT16_C(-16450),
|
|
INT16_C(-25118), INT16_C( 4239), INT16_C(-17383), INT16_C(-20693)),
|
|
simde_mm256_set_epi16(INT16_C( -6692), INT16_C(-26406), INT16_C( 26936), INT16_C( -7324),
|
|
INT16_C(-12460), INT16_C(-17206), INT16_C(-25492), INT16_C( 18853),
|
|
INT16_C(-12258), INT16_C(-29098), INT16_C(-20879), INT16_C( 27460),
|
|
INT16_C( 24575), INT16_C( 6280), INT16_C( 16934), INT16_C(-15918)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-15868), INT16_C(-27060), INT16_C( 528), INT16_C(-29935),
|
|
INT16_C(-12298), INT16_C( 18504), INT16_C( -5289), INT16_C( 430),
|
|
INT16_C(-29328), INT16_C( 3228), INT16_C( 18568), INT16_C(-13568),
|
|
INT16_C( -2471), INT16_C( -1530), INT16_C( 5334), INT16_C( 31888)),
|
|
simde_mm256_set_epi16(INT16_C( -2903), INT16_C(-32300), INT16_C( 29546), INT16_C( 12096),
|
|
INT16_C(-31860), INT16_C(-30618), INT16_C( 1236), INT16_C( -9131),
|
|
INT16_C( -497), INT16_C(-22865), INT16_C( 30177), INT16_C( 29201),
|
|
INT16_C(-26632), INT16_C(-25915), INT16_C( 14957), INT16_C( 6108)),
|
|
simde_mm256_set_epi16(INT16_C( 30333), INT16_C(-23894), INT16_C( 3058), INT16_C( -7895),
|
|
INT16_C( 22608), INT16_C(-29407), INT16_C( 6206), INT16_C( -4859),
|
|
INT16_C(-23362), INT16_C( -6158), INT16_C( 12989), INT16_C( 21065),
|
|
INT16_C(-26100), INT16_C( 5000), INT16_C( -4001), INT16_C(-28314)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 4205), INT16_C( 23268), INT16_C(-32329), INT16_C(-20305),
|
|
INT16_C( -9331), INT16_C( -4387), INT16_C(-30285), INT16_C( 13621),
|
|
INT16_C( 15818), INT16_C( 16370), INT16_C(-24200), INT16_C( 10901),
|
|
INT16_C( 17049), INT16_C( 14552), INT16_C( -5992), INT16_C(-17203)),
|
|
simde_mm256_set_epi16(INT16_C( 15660), INT16_C( 25069), INT16_C(-11965), INT16_C( -9994),
|
|
INT16_C( -7271), INT16_C( 17410), INT16_C( 14381), INT16_C(-30587),
|
|
INT16_C( 11396), INT16_C(-22996), INT16_C( 26099), INT16_C(-11680),
|
|
INT16_C(-18604), INT16_C( 20100), INT16_C( 5959), INT16_C(-27899)),
|
|
simde_mm256_set_epi16(INT16_C(-24807), INT16_C(-21959), INT16_C( 10139), INT16_C(-16206),
|
|
INT16_C( 27473), INT16_C( 12902), INT16_C(-13718), INT16_C(-16664),
|
|
INT16_C(-11600), INT16_C( 14419), INT16_C( 1496), INT16_C(-21940),
|
|
INT16_C( 32188), INT16_C(-13299), INT16_C( 31601), INT16_C(-23195)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 27483), INT16_C( -502), INT16_C( 138), INT16_C( -7690),
|
|
INT16_C( 19176), INT16_C(-26261), INT16_C(-11443), INT16_C(-23576),
|
|
INT16_C( 22206), INT16_C(-25802), INT16_C( 16334), INT16_C(-18863),
|
|
INT16_C( 31357), INT16_C(-31063), INT16_C( 28401), INT16_C(-12622)),
|
|
simde_mm256_set_epi16(INT16_C( 13717), INT16_C( 31993), INT16_C( 16367), INT16_C(-21175),
|
|
INT16_C( 23569), INT16_C( -7701), INT16_C( -1073), INT16_C( 24510),
|
|
INT16_C( 22852), INT16_C( 29964), INT16_C( -1882), INT16_C( -8354),
|
|
INT16_C(-16212), INT16_C( 25899), INT16_C( 11699), INT16_C(-20150)),
|
|
simde_mm256_set_epi16(INT16_C(-19826), INT16_C( -4808), INT16_C( 15868), INT16_C( 23437),
|
|
INT16_C( 26981), INT16_C( -7552), INT16_C( -7085), INT16_C( 30517),
|
|
INT16_C(-12720), INT16_C(-10236), INT16_C( 9687), INT16_C( -8451),
|
|
INT16_C( -3596), INT16_C( -2529), INT16_C( 294), INT16_C( 15779)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -5381), INT16_C(-10578), INT16_C(-31523), INT16_C(-23458),
|
|
INT16_C( 22155), INT16_C( 10052), INT16_C( 22251), INT16_C(-22857),
|
|
INT16_C( -468), INT16_C( 4672), INT16_C(-23974), INT16_C(-31691),
|
|
INT16_C( 11898), INT16_C( 4678), INT16_C( 5316), INT16_C(-17657)),
|
|
simde_mm256_set_epi16(INT16_C( 15026), INT16_C(-17248), INT16_C(-13886), INT16_C( 26220),
|
|
INT16_C( -1198), INT16_C( -7005), INT16_C(-21616), INT16_C(-30390),
|
|
INT16_C(-30119), INT16_C(-22301), INT16_C(-29984), INT16_C( 6696),
|
|
INT16_C( 12300), INT16_C( 16913), INT16_C( 12770), INT16_C( 3850)),
|
|
simde_mm256_set_epi16(INT16_C( -2222), INT16_C( 12334), INT16_C( -8203), INT16_C( 13530),
|
|
INT16_C(-15959), INT16_C( 10555), INT16_C( 32207), INT16_C( -606),
|
|
INT16_C( 13116), INT16_C(-23288), INT16_C( 29213), INT16_C( 16620),
|
|
INT16_C( 4204), INT16_C( 9871), INT16_C( 16576), INT16_C(-12341)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_hadd_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_hadd_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-1208698476), INT32_C( 1902250020), INT32_C( 269519555), INT32_C( 1739106219),
|
|
INT32_C( 1851836760), INT32_C( 69123093), INT32_C( 1858718140), INT32_C(-1547967184)),
|
|
simde_mm256_set_epi32(INT32_C( -136086179), INT32_C(-2103379839), INT32_C(-1938290984), INT32_C( -619951923),
|
|
INT32_C( 839390884), INT32_C( 534246575), INT32_C(-1606580968), INT32_C( -886777497)),
|
|
simde_mm256_set_epi32(INT32_C( 2055501278), INT32_C( 1736724389), INT32_C( 693551544), INT32_C( 2008625774),
|
|
INT32_C( 1373637459), INT32_C( 1801608831), INT32_C( 1920959853), INT32_C( 310750956)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 596441153), INT32_C( 1899329947), INT32_C( -541776283), INT32_C(-1300402143),
|
|
INT32_C( 1040209324), INT32_C( -596553273), INT32_C(-1638124206), INT32_C( 1984604715)),
|
|
simde_mm256_set_epi32(INT32_C( -605371032), INT32_C( 1858503650), INT32_C( 1358129736), INT32_C(-1344263624),
|
|
INT32_C( 1122259447), INT32_C( 7428403), INT32_C( -12414911), INT32_C( 1482166981)),
|
|
simde_mm256_set_epi32(INT32_C( 1253132618), INT32_C( 13866112), INT32_C(-1799196196), INT32_C(-1842178426),
|
|
INT32_C( 1129687850), INT32_C( 1469752070), INT32_C( 443656051), INT32_C( 346480509)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1758807406), INT32_C(-2117412203), INT32_C( 238405862), INT32_C( 1969146262),
|
|
INT32_C( -123652660), INT32_C( 1302509898), INT32_C( -734204705), INT32_C( 213694934)),
|
|
simde_mm256_set_epi32(INT32_C( 1467336310), INT32_C( 2088715498), INT32_C(-1715997606), INT32_C( -927854098),
|
|
INT32_C( 1350129112), INT32_C( 1666742562), INT32_C(-1527850584), INT32_C( 533520718)),
|
|
simde_mm256_set_epi32(INT32_C( -738915488), INT32_C( 1651115592), INT32_C( -358604797), INT32_C(-2087415172),
|
|
INT32_C(-1278095622), INT32_C( -994329866), INT32_C( 1178857238), INT32_C( -520509771)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 790208571), INT32_C( -653139015), INT32_C( -140401461), INT32_C(-1644647507),
|
|
INT32_C( -52534495), INT32_C(-1441829255), INT32_C(-1885293946), INT32_C( 525967993)),
|
|
simde_mm256_set_epi32(INT32_C( 441174929), INT32_C( -440880350), INT32_C(-1931682724), INT32_C(-1424869294),
|
|
INT32_C( 1789551988), INT32_C( -828850242), INT32_C(-1646129009), INT32_C(-1139167445)),
|
|
simde_mm256_set_epi32(INT32_C( 294579), INT32_C( 938415278), INT32_C( 137069556), INT32_C(-1785048968),
|
|
INT32_C( 960701746), INT32_C( 1509670842), INT32_C(-1494363750), INT32_C(-1359325953)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1039886772), INT32_C( 34638609), INT32_C( -805943224), INT32_C( -346619474),
|
|
INT32_C(-1922036580), INT32_C( 1216924416), INT32_C( -161875450), INT32_C( 349600912)),
|
|
simde_mm256_set_epi32(INT32_C( -190217772), INT32_C( 1936338752), INT32_C(-2087942042), INT32_C( 81058901),
|
|
INT32_C( -32528721), INT32_C( 1977709073), INT32_C(-1745315131), INT32_C( 980228060)),
|
|
simde_mm256_set_epi32(INT32_C( 1746120980), INT32_C(-2006883141), INT32_C(-1005248163), INT32_C(-1152562698),
|
|
INT32_C( 1945180352), INT32_C( -765087071), INT32_C( -705112164), INT32_C( 187725462)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 275602148), INT32_C(-2118668113), INT32_C( -611455267), INT32_C(-1984744139),
|
|
INT32_C( 1036664818), INT32_C(-1585960299), INT32_C( 1117337816), INT32_C( -392643379)),
|
|
simde_mm256_set_epi32(INT32_C( 1026318829), INT32_C( -784082698), INT32_C( -476494846), INT32_C( 942508165),
|
|
INT32_C( 746890796), INT32_C( 1710477920), INT32_C(-1219211644), INT32_C( 390566661)),
|
|
simde_mm256_set_epi32(INT32_C( 242236131), INT32_C( 466013319), INT32_C(-1843065965), INT32_C( 1698767890),
|
|
INT32_C(-1837598580), INT32_C( -828644983), INT32_C( -549295481), INT32_C( 724694437)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1801190922), INT32_C( 9101814), INT32_C( 1256757611), INT32_C( -749886488),
|
|
INT32_C( 1455332150), INT32_C( 1070511697), INT32_C( 2055046825), INT32_C( 1861340850)),
|
|
simde_mm256_set_epi32(INT32_C( 898989305), INT32_C( 1072672073), INT32_C( 1544675819), INT32_C( -70295618),
|
|
INT32_C( 1497658636), INT32_C( -123281570), INT32_C(-1062443733), INT32_C( 766751050)),
|
|
simde_mm256_set_epi32(INT32_C( 1971661378), INT32_C( 1474380201), INT32_C( 1810292736), INT32_C( 506871123),
|
|
INT32_C( 1374377066), INT32_C( -295692683), INT32_C(-1769123449), INT32_C( -378579621)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -352594258), INT32_C(-2065849250), INT32_C( 1451960132), INT32_C( 1458284215),
|
|
INT32_C( -30666176), INT32_C(-1571126219), INT32_C( 779752006), INT32_C( 348437255)),
|
|
simde_mm256_set_epi32(INT32_C( 984792224), INT32_C( -910006676), INT32_C( -78453597), INT32_C(-1416591030),
|
|
INT32_C(-1973835549), INT32_C(-1965024728), INT32_C( 806109713), INT32_C( 836898570)),
|
|
simde_mm256_set_epi32(INT32_C( 74785548), INT32_C(-1495044627), INT32_C( 1876523788), INT32_C(-1384722949),
|
|
INT32_C( 356107019), INT32_C( 1643008283), INT32_C(-1601792395), INT32_C( 1128189261)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_hadd_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_hadds_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t b[16];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 10867), INT16_C( 3622), -INT16_C( 28779), -INT16_C( 15004), INT16_C( 21958), INT16_C( 28225), -INT16_C( 9443), -INT16_C( 17328),
|
|
INT16_C( 9723), INT16_C( 22832), INT16_C( 14776), INT16_C( 12956), INT16_C( 11112), -INT16_C( 20463), INT16_C( 32154), INT16_C( 10109) },
|
|
{ -INT16_C( 23726), -INT16_C( 6346), -INT16_C( 26062), -INT16_C( 1876), -INT16_C( 4369), INT16_C( 3175), -INT16_C( 18487), -INT16_C( 14904),
|
|
-INT16_C( 1572), -INT16_C( 27362), -INT16_C( 17614), -INT16_C( 25913), -INT16_C( 10010), -INT16_C( 32693), -INT16_C( 14251), -INT16_C( 22360) },
|
|
{ -INT16_C( 7245), INT16_MIN, INT16_MAX, -INT16_C( 26771), -INT16_C( 30072), -INT16_C( 27938), -INT16_C( 1194), INT16_MIN,
|
|
INT16_C( 32555), INT16_C( 27732), -INT16_C( 9351), INT16_MAX, -INT16_C( 28934), INT16_MIN, INT16_MIN, INT16_MIN } },
|
|
{ { -INT16_C( 8596), -INT16_C( 24945), INT16_C( 15480), INT16_C( 26519), -INT16_C( 470), -INT16_C( 3213), INT16_C( 15285), -INT16_C( 28232),
|
|
-INT16_C( 10444), INT16_C( 26406), -INT16_C( 4718), INT16_C( 30721), INT16_C( 19654), INT16_C( 7160), -INT16_C( 24555), -INT16_C( 32317) },
|
|
{ INT16_C( 21374), -INT16_C( 2529), -INT16_C( 18801), -INT16_C( 18083), -INT16_C( 12108), INT16_C( 27052), INT16_C( 25868), INT16_C( 16635),
|
|
INT16_C( 8508), -INT16_C( 12633), -INT16_C( 22257), -INT16_C( 10938), INT16_C( 16117), INT16_C( 2800), -INT16_C( 19233), INT16_C( 23947) },
|
|
{ INT16_MIN, INT16_MAX, -INT16_C( 3683), -INT16_C( 12947), INT16_C( 18845), INT16_MIN, INT16_C( 14944), INT16_MAX,
|
|
INT16_C( 15962), INT16_C( 26003), INT16_C( 26814), INT16_MIN, -INT16_C( 4125), INT16_MIN, INT16_C( 18917), INT16_C( 4714) } },
|
|
{ { -INT16_C( 21753), -INT16_C( 27052), -INT16_C( 20127), INT16_C( 5711), -INT16_C( 1150), -INT16_C( 29057), INT16_C( 31328), -INT16_C( 25394),
|
|
INT16_C( 30364), -INT16_C( 21654), -INT16_C( 20449), INT16_C( 5248), INT16_C( 28911), -INT16_C( 12769), -INT16_C( 21980), INT16_C( 11051) },
|
|
{ INT16_C( 32597), -INT16_C( 18495), INT16_C( 4145), -INT16_C( 19507), INT16_C( 19468), INT16_C( 27713), INT16_C( 4039), INT16_C( 25353),
|
|
INT16_C( 29573), -INT16_C( 23538), -INT16_C( 29148), INT16_C( 5049), -INT16_C( 9986), INT16_C( 9185), INT16_C( 3202), -INT16_C( 10162) },
|
|
{ INT16_MIN, -INT16_C( 14416), -INT16_C( 30207), INT16_C( 5934), INT16_C( 14102), -INT16_C( 15362), INT16_MAX, INT16_C( 29392),
|
|
INT16_C( 8710), -INT16_C( 15201), INT16_C( 16142), -INT16_C( 10929), INT16_C( 6035), -INT16_C( 24099), -INT16_C( 801), -INT16_C( 6960) } },
|
|
{ { INT16_C( 4236), -INT16_C( 17009), INT16_C( 23584), INT16_C( 11376), -INT16_C( 20056), INT16_C( 28569), -INT16_C( 23872), INT16_C( 18130),
|
|
-INT16_C( 8171), INT16_C( 14826), -INT16_C( 23698), INT16_C( 27980), INT16_C( 11643), -INT16_C( 368), -INT16_C( 8646), -INT16_C( 14634) },
|
|
{ INT16_C( 26094), INT16_C( 3971), -INT16_C( 3135), INT16_C( 26939), -INT16_C( 11100), INT16_C( 25817), -INT16_C( 21642), -INT16_C( 29526),
|
|
-INT16_C( 27252), -INT16_C( 1339), INT16_C( 4664), -INT16_C( 19353), -INT16_C( 2241), INT16_C( 31154), -INT16_C( 30506), -INT16_C( 15297) },
|
|
{ -INT16_C( 12773), INT16_MAX, INT16_C( 8513), -INT16_C( 5742), INT16_C( 30065), INT16_C( 23804), INT16_C( 14717), INT16_MIN,
|
|
INT16_C( 6655), INT16_C( 4282), INT16_C( 11275), -INT16_C( 23280), -INT16_C( 28591), -INT16_C( 14689), INT16_C( 28913), INT16_MIN } },
|
|
{ { -INT16_C( 15635), -INT16_C( 20781), INT16_C( 4021), INT16_C( 22807), -INT16_C( 3869), INT16_C( 23230), INT16_C( 26780), INT16_C( 10470),
|
|
-INT16_C( 21507), INT16_C( 13858), -INT16_C( 30019), -INT16_C( 534), -INT16_C( 25471), INT16_C( 22390), -INT16_C( 18908), INT16_C( 4380) },
|
|
{ -INT16_C( 4232), INT16_C( 11967), -INT16_C( 10498), -INT16_C( 7545), INT16_C( 17863), INT16_C( 25404), INT16_C( 8878), -INT16_C( 21621),
|
|
-INT16_C( 21043), -INT16_C( 29727), -INT16_C( 13513), -INT16_C( 18040), -INT16_C( 409), -INT16_C( 29936), INT16_C( 11444), INT16_C( 11676) },
|
|
{ INT16_MIN, INT16_C( 26828), INT16_C( 19361), INT16_MAX, INT16_C( 7735), -INT16_C( 18043), INT16_MAX, -INT16_C( 12743),
|
|
-INT16_C( 7649), -INT16_C( 30553), -INT16_C( 3081), -INT16_C( 14528), INT16_MIN, -INT16_C( 31553), -INT16_C( 30345), INT16_C( 23120) } },
|
|
{ { INT16_C( 23324), INT16_C( 6747), -INT16_C( 7630), -INT16_C( 1540), INT16_C( 14376), -INT16_C( 10660), -INT16_C( 6310), INT16_C( 10369),
|
|
INT16_C( 25492), -INT16_C( 13133), INT16_C( 15150), -INT16_C( 27003), -INT16_C( 27335), -INT16_C( 4575), -INT16_C( 16702), -INT16_C( 8677) },
|
|
{ INT16_C( 30233), INT16_C( 19448), -INT16_C( 2728), -INT16_C( 32700), -INT16_C( 24531), -INT16_C( 30634), -INT16_C( 10105), INT16_C( 7344),
|
|
INT16_C( 25403), INT16_C( 27112), INT16_C( 28062), -INT16_C( 10241), INT16_C( 8450), -INT16_C( 15163), -INT16_C( 7969), -INT16_C( 1886) },
|
|
{ INT16_C( 30071), -INT16_C( 9170), INT16_C( 3716), INT16_C( 4059), INT16_MAX, INT16_MIN, INT16_MIN, -INT16_C( 2761),
|
|
INT16_C( 12359), -INT16_C( 11853), -INT16_C( 31910), -INT16_C( 25379), INT16_MAX, INT16_C( 17821), -INT16_C( 6713), -INT16_C( 9855) } },
|
|
{ { -INT16_C( 25770), -INT16_C( 20668), -INT16_C( 30576), -INT16_C( 17105), -INT16_C( 31191), -INT16_C( 20411), -INT16_C( 2722), -INT16_C( 26164),
|
|
-INT16_C( 19368), -INT16_C( 2558), INT16_C( 545), INT16_C( 9422), -INT16_C( 27869), INT16_C( 744), -INT16_C( 29836), -INT16_C( 13574) },
|
|
{ INT16_C( 15910), -INT16_C( 18823), -INT16_C( 22073), -INT16_C( 3981), -INT16_C( 18129), -INT16_C( 29280), INT16_C( 28078), INT16_C( 1830),
|
|
INT16_C( 10273), INT16_C( 17405), -INT16_C( 13526), INT16_C( 19815), INT16_C( 20319), -INT16_C( 11441), INT16_C( 19162), INT16_C( 157) },
|
|
{ INT16_MIN, INT16_MIN, INT16_MIN, -INT16_C( 28886), -INT16_C( 2913), -INT16_C( 26054), INT16_MIN, INT16_C( 29908),
|
|
-INT16_C( 21926), INT16_C( 9967), -INT16_C( 27125), INT16_MIN, INT16_C( 27678), INT16_C( 6289), INT16_C( 8878), INT16_C( 19319) } },
|
|
{ { INT16_C( 6024), INT16_C( 20406), INT16_C( 10944), -INT16_C( 4289), -INT16_C( 7965), -INT16_C( 28292), -INT16_C( 23987), INT16_C( 28312),
|
|
-INT16_C( 26934), -INT16_C( 2639), INT16_C( 6241), -INT16_C( 16318), -INT16_C( 28056), INT16_C( 17043), INT16_C( 12764), INT16_C( 25667) },
|
|
{ -INT16_C( 1720), INT16_C( 2228), -INT16_C( 3293), INT16_C( 1783), INT16_C( 29651), INT16_C( 8344), INT16_C( 12309), -INT16_C( 8305),
|
|
INT16_C( 16582), INT16_C( 10452), INT16_C( 5977), -INT16_C( 15896), INT16_C( 31913), -INT16_C( 31485), INT16_C( 18093), -INT16_C( 2583) },
|
|
{ INT16_C( 26430), INT16_C( 6655), INT16_MIN, INT16_C( 4325), INT16_C( 508), -INT16_C( 1510), INT16_MAX, INT16_C( 4004),
|
|
-INT16_C( 29573), -INT16_C( 10077), -INT16_C( 11013), INT16_MAX, INT16_C( 27034), -INT16_C( 9919), INT16_C( 428), INT16_C( 15510) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_hadds_epi16(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_hsub_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-18444), INT16_C(-18028), INT16_C( 29026), INT16_C( 2084),
|
|
INT16_C( 4112), INT16_C(-30013), INT16_C( 26536), INT16_C(-22613),
|
|
INT16_C( 28256), INT16_C(-13992), INT16_C( 1054), INT16_C(-17387),
|
|
INT16_C( 28361), INT16_C(-13892), INT16_C(-23621), INT16_C( -6864)),
|
|
simde_mm256_set_epi16(INT16_C( -2077), INT16_C( 32093), INT16_C(-32096), INT16_C( -1919),
|
|
INT16_C(-29576), INT16_C( 1752), INT16_C( -9460), INT16_C( 18637),
|
|
INT16_C( 12808), INT16_C( 5796), INT16_C( 8151), INT16_C( -2897),
|
|
INT16_C(-24515), INT16_C(-31464), INT16_C(-13532), INT16_C( -9881)),
|
|
simde_mm256_set_epi16(INT16_C(-31366), INT16_C( 30177), INT16_C( 31328), INT16_C( 28097),
|
|
INT16_C( 416), INT16_C(-26942), INT16_C( 31411), INT16_C( 16387),
|
|
INT16_C( -7012), INT16_C(-11048), INT16_C( -6949), INT16_C( 3651),
|
|
INT16_C( 23288), INT16_C(-18441), INT16_C( 23283), INT16_C( 16757)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 9100), INT16_C( -1983), INT16_C( 28981), INT16_C( 31131),
|
|
INT16_C( -8267), INT16_C( 9829), INT16_C(-19843), INT16_C( 28705),
|
|
INT16_C( 15872), INT16_C( 21932), INT16_C( -9103), INT16_C( 20935),
|
|
INT16_C(-24996), INT16_C( 13650), INT16_C( 30282), INT16_C(-21973)),
|
|
simde_mm256_set_epi16(INT16_C( -9238), INT16_C(-15000), INT16_C( 28358), INT16_C(-31774),
|
|
INT16_C( 20723), INT16_C( 27208), INT16_C(-20512), INT16_C( 10808),
|
|
INT16_C( 17124), INT16_C( 20983), INT16_C( 113), INT16_C( 22835),
|
|
INT16_C( -190), INT16_C(-28607), INT16_C( 22616), INT16_C( 4805)),
|
|
simde_mm256_set_epi16(INT16_C( -5762), INT16_C( 5404), INT16_C( 6485), INT16_C( 31320),
|
|
INT16_C(-11083), INT16_C( 2150), INT16_C( 18096), INT16_C(-16988),
|
|
INT16_C( 3859), INT16_C( 22722), INT16_C(-28417), INT16_C(-17811),
|
|
INT16_C( 6060), INT16_C( 30038), INT16_C(-26890), INT16_C( 13281)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 26837), INT16_C( 17774), INT16_C(-32310), INT16_C( -9579),
|
|
INT16_C( 3637), INT16_C(-14106), INT16_C( 30046), INT16_C(-13930),
|
|
INT16_C( -1887), INT16_C( 13772), INT16_C( 19874), INT16_C(-18102),
|
|
INT16_C(-11204), INT16_C( -4897), INT16_C( 3260), INT16_C(-17962)),
|
|
simde_mm256_set_epi16(INT16_C( 22389), INT16_C(-14730), INT16_C( 31871), INT16_C( 17642),
|
|
INT16_C(-26185), INT16_C( -2982), INT16_C(-14158), INT16_C( 4590),
|
|
INT16_C( 20601), INT16_C( 21976), INT16_C( 25432), INT16_C( 31010),
|
|
INT16_C(-23314), INT16_C( -9816), INT16_C( 8140), INT16_C( -7858)),
|
|
simde_mm256_set_epi16(INT16_C( 28417), INT16_C(-14229), INT16_C( 23203), INT16_C( 18748),
|
|
INT16_C( -9063), INT16_C( 22731), INT16_C(-17743), INT16_C( 21560),
|
|
INT16_C( 1375), INT16_C( 5578), INT16_C( 13498), INT16_C(-15998),
|
|
INT16_C( 15659), INT16_C( 27560), INT16_C( 6307), INT16_C(-21222)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 12057), INT16_C(-24517), INT16_C( -9967), INT16_C( -7239),
|
|
INT16_C( -2143), INT16_C(-23349), INT16_C(-25096), INT16_C(-21587),
|
|
INT16_C( -802), INT16_C( 25377), INT16_C(-22001), INT16_C( 28281),
|
|
INT16_C(-28768), INT16_C(-19834), INT16_C( 8025), INT16_C(-23943)),
|
|
simde_mm256_set_epi16(INT16_C( 6731), INT16_C(-13423), INT16_C( -6728), INT16_C(-19678),
|
|
INT16_C(-29476), INT16_C( -9124), INT16_C(-21742), INT16_C( 14418),
|
|
INT16_C( 27306), INT16_C( 25972), INT16_C(-12648), INT16_C(-16450),
|
|
INT16_C(-25118), INT16_C( 4239), INT16_C(-17383), INT16_C(-20693)),
|
|
simde_mm256_set_epi16(INT16_C(-20154), INT16_C(-12950), INT16_C( 20352), INT16_C(-29376),
|
|
INT16_C( 28962), INT16_C( 2728), INT16_C(-21206), INT16_C( 3509),
|
|
INT16_C( -1334), INT16_C( -3802), INT16_C( 29357), INT16_C( -3310),
|
|
INT16_C( 26179), INT16_C(-15254), INT16_C( 8934), INT16_C(-31968)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-15868), INT16_C(-27060), INT16_C( 528), INT16_C(-29935),
|
|
INT16_C(-12298), INT16_C( 18504), INT16_C( -5289), INT16_C( 430),
|
|
INT16_C(-29328), INT16_C( 3228), INT16_C( 18568), INT16_C(-13568),
|
|
INT16_C( -2471), INT16_C( -1530), INT16_C( 5334), INT16_C( 31888)),
|
|
simde_mm256_set_epi16(INT16_C( -2903), INT16_C(-32300), INT16_C( 29546), INT16_C( 12096),
|
|
INT16_C(-31860), INT16_C(-30618), INT16_C( 1236), INT16_C( -9131),
|
|
INT16_C( -497), INT16_C(-22865), INT16_C( 30177), INT16_C( 29201),
|
|
INT16_C(-26632), INT16_C(-25915), INT16_C( 14957), INT16_C( 6108)),
|
|
simde_mm256_set_epi16(INT16_C(-29397), INT16_C(-17450), INT16_C( 1242), INT16_C(-10367),
|
|
INT16_C(-11192), INT16_C(-30463), INT16_C( 30802), INT16_C( 5719),
|
|
INT16_C(-22368), INT16_C( -976), INT16_C( 717), INT16_C( -8849),
|
|
INT16_C( 32556), INT16_C(-32136), INT16_C( 941), INT16_C( 26554)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 4205), INT16_C( 23268), INT16_C(-32329), INT16_C(-20305),
|
|
INT16_C( -9331), INT16_C( -4387), INT16_C(-30285), INT16_C( 13621),
|
|
INT16_C( 15818), INT16_C( 16370), INT16_C(-24200), INT16_C( 10901),
|
|
INT16_C( 17049), INT16_C( 14552), INT16_C( -5992), INT16_C(-17203)),
|
|
simde_mm256_set_epi16(INT16_C( 15660), INT16_C( 25069), INT16_C(-11965), INT16_C( -9994),
|
|
INT16_C( -7271), INT16_C( 17410), INT16_C( 14381), INT16_C(-30587),
|
|
INT16_C( 11396), INT16_C(-22996), INT16_C( 26099), INT16_C(-11680),
|
|
INT16_C(-18604), INT16_C( 20100), INT16_C( 5959), INT16_C(-27899)),
|
|
simde_mm256_set_epi16(INT16_C( 9409), INT16_C( 1971), INT16_C( 24681), INT16_C( 20568),
|
|
INT16_C( 19063), INT16_C( 12024), INT16_C( 4944), INT16_C(-21630),
|
|
INT16_C( 31144), INT16_C( 27757), INT16_C(-26832), INT16_C( 31678),
|
|
INT16_C( 552), INT16_C(-30435), INT16_C( -2497), INT16_C(-11211)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 27483), INT16_C( -502), INT16_C( 138), INT16_C( -7690),
|
|
INT16_C( 19176), INT16_C(-26261), INT16_C(-11443), INT16_C(-23576),
|
|
INT16_C( 22206), INT16_C(-25802), INT16_C( 16334), INT16_C(-18863),
|
|
INT16_C( 31357), INT16_C(-31063), INT16_C( 28401), INT16_C(-12622)),
|
|
simde_mm256_set_epi16(INT16_C( 13717), INT16_C( 31993), INT16_C( 16367), INT16_C(-21175),
|
|
INT16_C( 23569), INT16_C( -7701), INT16_C( -1073), INT16_C( 24510),
|
|
INT16_C( 22852), INT16_C( 29964), INT16_C( -1882), INT16_C( -8354),
|
|
INT16_C(-16212), INT16_C( 25899), INT16_C( 11699), INT16_C(-20150)),
|
|
simde_mm256_set_epi16(INT16_C( 18276), INT16_C( 27994), INT16_C(-31270), INT16_C( 25583),
|
|
INT16_C(-27985), INT16_C( -7828), INT16_C( 20099), INT16_C(-12133),
|
|
INT16_C( 7112), INT16_C( -6472), INT16_C(-23425), INT16_C(-31849),
|
|
INT16_C( 17528), INT16_C( 30339), INT16_C( 3116), INT16_C( 24513)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -5381), INT16_C(-10578), INT16_C(-31523), INT16_C(-23458),
|
|
INT16_C( 22155), INT16_C( 10052), INT16_C( 22251), INT16_C(-22857),
|
|
INT16_C( -468), INT16_C( 4672), INT16_C(-23974), INT16_C(-31691),
|
|
INT16_C( 11898), INT16_C( 4678), INT16_C( 5316), INT16_C(-17657)),
|
|
simde_mm256_set_epi16(INT16_C( 15026), INT16_C(-17248), INT16_C(-13886), INT16_C( 26220),
|
|
INT16_C( -1198), INT16_C( -7005), INT16_C(-21616), INT16_C(-30390),
|
|
INT16_C(-30119), INT16_C(-22301), INT16_C(-29984), INT16_C( 6696),
|
|
INT16_C( 12300), INT16_C( 16913), INT16_C( 12770), INT16_C( 3850)),
|
|
simde_mm256_set_epi16(INT16_C(-32274), INT16_C(-25430), INT16_C( -5807), INT16_C( -8774),
|
|
INT16_C( -5197), INT16_C( 8065), INT16_C(-12103), INT16_C( 20428),
|
|
INT16_C( 7818), INT16_C(-28856), INT16_C( 4613), INT16_C( -8920),
|
|
INT16_C( 5140), INT16_C( -7717), INT16_C( -7220), INT16_C(-22973)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_hsub_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_hsub_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-1208698476), INT32_C( 1902250020), INT32_C( 269519555), INT32_C( 1739106219),
|
|
INT32_C( 1851836760), INT32_C( 69123093), INT32_C( 1858718140), INT32_C(-1547967184)),
|
|
simde_mm256_set_epi32(INT32_C( -136086179), INT32_C(-2103379839), INT32_C(-1938290984), INT32_C( -619951923),
|
|
INT32_C( 839390884), INT32_C( 534246575), INT32_C(-1606580968), INT32_C( -886777497)),
|
|
simde_mm256_set_epi32(INT32_C(-1967293660), INT32_C( 1318339061), INT32_C(-1184018800), INT32_C( 1469586664),
|
|
INT32_C( -305144309), INT32_C( 719803471), INT32_C(-1782713667), INT32_C( 888281972)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 596441153), INT32_C( 1899329947), INT32_C( -541776283), INT32_C(-1300402143),
|
|
INT32_C( 1040209324), INT32_C( -596553273), INT32_C(-1638124206), INT32_C( 1984604715)),
|
|
simde_mm256_set_epi32(INT32_C( -605371032), INT32_C( 1858503650), INT32_C( 1358129736), INT32_C(-1344263624),
|
|
INT32_C( 1122259447), INT32_C( 7428403), INT32_C( -12414911), INT32_C( 1482166981)),
|
|
simde_mm256_set_epi32(INT32_C(-1831092614), INT32_C( 1592573936), INT32_C( 1302888794), INT32_C( -758625860),
|
|
INT32_C(-1114831044), INT32_C( 1494581892), INT32_C(-1636762597), INT32_C( -672238375)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1758807406), INT32_C(-2117412203), INT32_C( 238405862), INT32_C( 1969146262),
|
|
INT32_C( -123652660), INT32_C( 1302509898), INT32_C( -734204705), INT32_C( 213694934)),
|
|
simde_mm256_set_epi32(INT32_C( 1467336310), INT32_C( 2088715498), INT32_C(-1715997606), INT32_C( -927854098),
|
|
INT32_C( 1350129112), INT32_C( 1666742562), INT32_C(-1527850584), INT32_C( 533520718)),
|
|
simde_mm256_set_epi32(INT32_C( 621379188), INT32_C( 788143508), INT32_C( 418747687), INT32_C( 1730740400),
|
|
INT32_C( 316613450), INT32_C( 2061371302), INT32_C( 1426162558), INT32_C( 947899639)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 790208571), INT32_C( -653139015), INT32_C( -140401461), INT32_C(-1644647507),
|
|
INT32_C( -52534495), INT32_C(-1441829255), INT32_C(-1885293946), INT32_C( 525967993)),
|
|
simde_mm256_set_epi32(INT32_C( 441174929), INT32_C( -440880350), INT32_C(-1931682724), INT32_C(-1424869294),
|
|
INT32_C( 1789551988), INT32_C( -828850242), INT32_C(-1646129009), INT32_C(-1139167445)),
|
|
simde_mm256_set_epi32(INT32_C( -882055279), INT32_C( 506813430), INT32_C(-1443347586), INT32_C(-1504246046),
|
|
INT32_C( 1676565066), INT32_C( 506961564), INT32_C(-1389294760), INT32_C(-1883705357)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1039886772), INT32_C( 34638609), INT32_C( -805943224), INT32_C( -346619474),
|
|
INT32_C(-1922036580), INT32_C( 1216924416), INT32_C( -161875450), INT32_C( 349600912)),
|
|
simde_mm256_set_epi32(INT32_C( -190217772), INT32_C( 1936338752), INT32_C(-2087942042), INT32_C( 81058901),
|
|
INT32_C( -32528721), INT32_C( 1977709073), INT32_C(-1745315131), INT32_C( 980228060)),
|
|
simde_mm256_set_epi32(INT32_C( 2126556524), INT32_C(-2125966353), INT32_C( 1074525381), INT32_C( 459323750),
|
|
INT32_C( 2010237794), INT32_C(-1569424105), INT32_C(-1156006300), INT32_C( 511476362)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 275602148), INT32_C(-2118668113), INT32_C( -611455267), INT32_C(-1984744139),
|
|
INT32_C( 1036664818), INT32_C(-1585960299), INT32_C( 1117337816), INT32_C( -392643379)),
|
|
simde_mm256_set_epi32(INT32_C( 1026318829), INT32_C( -784082698), INT32_C( -476494846), INT32_C( 942508165),
|
|
INT32_C( 746890796), INT32_C( 1710477920), INT32_C(-1219211644), INT32_C( 390566661)),
|
|
simde_mm256_set_epi32(INT32_C(-1810401527), INT32_C( 1419003011), INT32_C( 1900697035), INT32_C(-1373288872),
|
|
INT32_C( 963587124), INT32_C( 1609778305), INT32_C( 1672342179), INT32_C(-1509981195)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1801190922), INT32_C( 9101814), INT32_C( 1256757611), INT32_C( -749886488),
|
|
INT32_C( 1455332150), INT32_C( 1070511697), INT32_C( 2055046825), INT32_C( 1861340850)),
|
|
simde_mm256_set_epi32(INT32_C( 898989305), INT32_C( 1072672073), INT32_C( 1544675819), INT32_C( -70295618),
|
|
INT32_C( 1497658636), INT32_C( -123281570), INT32_C(-1062443733), INT32_C( 766751050)),
|
|
simde_mm256_set_epi32(INT32_C( 173682768), INT32_C(-1614971437), INT32_C(-1792089108), INT32_C(-2006644099),
|
|
INT32_C(-1620940206), INT32_C( 1829194783), INT32_C( -384820453), INT32_C( -193705975)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -352594258), INT32_C(-2065849250), INT32_C( 1451960132), INT32_C( 1458284215),
|
|
INT32_C( -30666176), INT32_C(-1571126219), INT32_C( 779752006), INT32_C( 348437255)),
|
|
simde_mm256_set_epi32(INT32_C( 984792224), INT32_C( -910006676), INT32_C( -78453597), INT32_C(-1416591030),
|
|
INT32_C(-1973835549), INT32_C(-1965024728), INT32_C( 806109713), INT32_C( 836898570)),
|
|
simde_mm256_set_epi32(INT32_C(-1894798900), INT32_C(-1338137433), INT32_C(-1713254992), INT32_C( 6324083),
|
|
INT32_C( 8810821), INT32_C( 30788857), INT32_C(-1540460043), INT32_C( -431314751)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_hsub_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_hsubs_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t b[16];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 26245), -INT16_C( 12255), -INT16_C( 13259), -INT16_C( 32044), INT16_C( 31061), INT16_C( 23401), -INT16_C( 9352), -INT16_C( 31983),
|
|
-INT16_C( 3563), -INT16_C( 3232), -INT16_C( 4207), INT16_C( 2011), -INT16_C( 23858), INT16_C( 31980), INT16_C( 8339), INT16_C( 3620) },
|
|
{ INT16_C( 17849), -INT16_C( 4386), -INT16_C( 19950), INT16_C( 26481), -INT16_C( 9685), -INT16_C( 23357), -INT16_C( 11082), -INT16_C( 13529),
|
|
-INT16_C( 30778), INT16_C( 22463), -INT16_C( 25994), INT16_C( 17502), INT16_C( 19261), -INT16_C( 12096), -INT16_C( 6805), INT16_C( 9438) },
|
|
{ -INT16_C( 13990), INT16_C( 18785), INT16_C( 7660), INT16_C( 22631), INT16_C( 22235), INT16_MIN, INT16_C( 13672), INT16_C( 2447),
|
|
-INT16_C( 331), -INT16_C( 6218), INT16_MIN, INT16_C( 4719), INT16_MIN, INT16_MIN, INT16_C( 31357), -INT16_C( 16243) } },
|
|
{ { -INT16_C( 17366), INT16_C( 15379), -INT16_C( 31634), -INT16_C( 26204), INT16_C( 26462), INT16_C( 5181), INT16_C( 25659), INT16_C( 480),
|
|
-INT16_C( 24597), INT16_C( 24921), -INT16_C( 18631), INT16_C( 30373), INT16_C( 26114), INT16_C( 27974), INT16_C( 9291), INT16_C( 30098) },
|
|
{ -INT16_C( 23072), INT16_C( 20146), INT16_C( 22057), -INT16_C( 30744), INT16_C( 9661), -INT16_C( 1892), INT16_C( 31882), INT16_C( 30201),
|
|
INT16_C( 21019), INT16_C( 21719), INT16_C( 31754), INT16_C( 3275), INT16_C( 4578), INT16_C( 11642), INT16_C( 3126), INT16_C( 5795) },
|
|
{ -INT16_C( 32745), -INT16_C( 5430), INT16_C( 21281), INT16_C( 25179), INT16_MIN, INT16_MAX, INT16_C( 11553), INT16_C( 1681),
|
|
INT16_MIN, INT16_MIN, -INT16_C( 1860), -INT16_C( 20807), -INT16_C( 700), INT16_C( 28479), -INT16_C( 7064), -INT16_C( 2669) } },
|
|
{ { INT16_C( 21937), -INT16_C( 9627), INT16_C( 19883), INT16_C( 26721), -INT16_C( 654), -INT16_C( 928), INT16_C( 22905), -INT16_C( 27534),
|
|
INT16_C( 18860), -INT16_C( 18711), -INT16_C( 19259), -INT16_C( 22334), INT16_C( 15557), -INT16_C( 1067), INT16_C( 30792), -INT16_C( 1774) },
|
|
{ INT16_C( 30669), INT16_C( 30931), INT16_C( 13764), INT16_C( 14048), INT16_C( 16434), -INT16_C( 21453), -INT16_C( 23142), INT16_C( 17984),
|
|
INT16_C( 10734), -INT16_C( 19460), -INT16_C( 16675), -INT16_C( 23717), INT16_C( 12795), INT16_C( 17310), -INT16_C( 20311), INT16_C( 30525) },
|
|
{ INT16_C( 31564), -INT16_C( 6838), INT16_C( 274), INT16_MAX, -INT16_C( 262), -INT16_C( 284), INT16_MAX, INT16_MIN,
|
|
INT16_MAX, INT16_C( 3075), INT16_C( 16624), INT16_C( 32566), INT16_C( 30194), INT16_C( 7042), -INT16_C( 4515), INT16_MIN } },
|
|
{ { INT16_C( 4135), -INT16_C( 5137), -INT16_C( 12219), INT16_C( 30754), INT16_C( 21776), -INT16_C( 21980), INT16_C( 25850), -INT16_C( 5904),
|
|
-INT16_C( 4978), INT16_C( 27547), -INT16_C( 2133), -INT16_C( 23026), -INT16_C( 21208), -INT16_C( 11799), INT16_C( 9821), -INT16_C( 31416) },
|
|
{ INT16_C( 14391), INT16_C( 31856), -INT16_C( 28152), INT16_C( 6388), INT16_C( 6375), -INT16_C( 7741), -INT16_C( 19587), INT16_C( 3017),
|
|
INT16_C( 26016), INT16_C( 19318), -INT16_C( 31396), -INT16_C( 31503), -INT16_C( 9678), -INT16_C( 28843), -INT16_C( 25087), INT16_C( 14356) },
|
|
{ INT16_C( 9272), INT16_MIN, INT16_MAX, INT16_C( 31754), -INT16_C( 17465), INT16_MIN, INT16_C( 14116), -INT16_C( 22604),
|
|
-INT16_C( 32525), INT16_C( 20893), -INT16_C( 9409), INT16_MAX, INT16_C( 6698), INT16_C( 107), INT16_C( 19165), INT16_MIN } },
|
|
{ { -INT16_C( 31274), -INT16_C( 8524), -INT16_C( 22249), -INT16_C( 10), -INT16_C( 17983), INT16_C( 16096), -INT16_C( 21907), INT16_C( 3401),
|
|
-INT16_C( 16369), INT16_C( 27480), INT16_C( 18757), INT16_C( 30703), INT16_C( 17443), INT16_C( 9222), INT16_C( 7138), -INT16_C( 18340) },
|
|
{ INT16_C( 4512), -INT16_C( 18538), -INT16_C( 29254), INT16_C( 31670), -INT16_C( 26810), -INT16_C( 19526), INT16_C( 833), INT16_C( 20672),
|
|
INT16_C( 6339), INT16_C( 2235), -INT16_C( 21919), -INT16_C( 31361), -INT16_C( 30994), -INT16_C( 11863), INT16_C( 1697), INT16_C( 16777) },
|
|
{ -INT16_C( 22750), -INT16_C( 22239), INT16_MIN, -INT16_C( 25308), INT16_C( 23050), INT16_MIN, -INT16_C( 7284), -INT16_C( 19839),
|
|
INT16_MIN, -INT16_C( 11946), INT16_C( 8221), INT16_C( 25478), INT16_C( 4104), INT16_C( 9442), -INT16_C( 19131), -INT16_C( 15080) } },
|
|
{ { INT16_C( 8215), -INT16_C( 11784), -INT16_C( 20563), -INT16_C( 3252), INT16_C( 1606), -INT16_C( 30809), INT16_C( 26378), -INT16_C( 12841),
|
|
-INT16_C( 28032), -INT16_C( 7722), INT16_C( 21820), INT16_C( 10854), INT16_C( 4315), INT16_C( 31995), -INT16_C( 31466), INT16_C( 11709) },
|
|
{ -INT16_C( 18779), INT16_C( 21246), INT16_C( 19045), -INT16_C( 21691), -INT16_C( 5039), INT16_C( 23346), INT16_C( 2388), -INT16_C( 11224),
|
|
-INT16_C( 357), -INT16_C( 10315), INT16_C( 7252), INT16_C( 12033), -INT16_C( 724), INT16_C( 17068), INT16_C( 27010), INT16_C( 10095) },
|
|
{ INT16_C( 19999), -INT16_C( 17311), INT16_C( 32415), INT16_MAX, INT16_MIN, INT16_MAX, -INT16_C( 28385), INT16_C( 13612),
|
|
-INT16_C( 20310), INT16_C( 10966), -INT16_C( 27680), INT16_MIN, INT16_C( 9958), -INT16_C( 4781), -INT16_C( 17792), INT16_C( 16915) } },
|
|
{ { INT16_C( 27935), -INT16_C( 31623), -INT16_C( 16713), INT16_C( 2095), INT16_C( 25003), -INT16_C( 157), -INT16_C( 29590), INT16_C( 1491),
|
|
-INT16_C( 30582), -INT16_C( 8484), -INT16_C( 8540), -INT16_C( 12274), -INT16_C( 17701), INT16_C( 23826), -INT16_C( 32477), INT16_C( 17284) },
|
|
{ -INT16_C( 530), -INT16_C( 22841), -INT16_C( 2117), INT16_C( 26286), INT16_C( 4696), -INT16_C( 15515), INT16_C( 14494), INT16_C( 10440),
|
|
-INT16_C( 23103), INT16_C( 25863), INT16_C( 5507), INT16_C( 24118), INT16_C( 18639), -INT16_C( 3397), INT16_C( 16330), -INT16_C( 18379) },
|
|
{ INT16_MAX, -INT16_C( 18808), INT16_C( 25160), -INT16_C( 31081), INT16_C( 22311), -INT16_C( 28403), INT16_C( 20211), INT16_C( 4054),
|
|
-INT16_C( 22098), INT16_C( 3734), INT16_MIN, INT16_MIN, INT16_MIN, -INT16_C( 18611), INT16_C( 22036), INT16_MAX } },
|
|
{ { -INT16_C( 708), -INT16_C( 2210), INT16_C( 3572), INT16_C( 19550), -INT16_C( 15585), -INT16_C( 17137), -INT16_C( 9988), -INT16_C( 16923),
|
|
-INT16_C( 4995), INT16_C( 34), INT16_C( 22529), -INT16_C( 12194), INT16_C( 6561), INT16_C( 27587), -INT16_C( 1960), -INT16_C( 27613) },
|
|
{ -INT16_C( 32011), -INT16_C( 5749), -INT16_C( 5745), -INT16_C( 20938), INT16_C( 17837), -INT16_C( 22165), INT16_C( 20509), -INT16_C( 26010),
|
|
-INT16_C( 30659), INT16_C( 16026), -INT16_C( 1823), -INT16_C( 32241), -INT16_C( 11759), INT16_C( 27117), INT16_C( 4298), -INT16_C( 16131) },
|
|
{ INT16_C( 1502), -INT16_C( 15978), INT16_C( 1552), INT16_C( 6935), -INT16_C( 26262), INT16_C( 15193), INT16_MAX, INT16_MAX,
|
|
-INT16_C( 5029), INT16_MAX, -INT16_C( 21026), INT16_C( 25653), INT16_MIN, INT16_C( 30418), INT16_MIN, INT16_C( 20429) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_hsubs_epi16(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int32_t i32gather_buffer[4096];
|
|
|
|
static int
|
|
test_simde_mm_i32gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 141), INT32_C( 78), INT32_C( 249), INT32_C( 88) },
|
|
{ INT32_C( 141), INT32_C( 78), INT32_C( 249), INT32_C( 88) } },
|
|
{ { INT32_C( 189), INT32_C( 204), INT32_C( 14), INT32_C( 231) },
|
|
{ INT32_C( 189), INT32_C( 204), INT32_C( 14), INT32_C( 231) } },
|
|
{ { INT32_C( 199), INT32_C( 52), INT32_C( 133), INT32_C( 101) },
|
|
{ INT32_C( 199), INT32_C( 52), INT32_C( 133), INT32_C( 101) } },
|
|
{ { INT32_C( 239), INT32_C( 12), INT32_C( 121), INT32_C( 226) },
|
|
{ INT32_C( 239), INT32_C( 12), INT32_C( 121), INT32_C( 226) } },
|
|
{ { INT32_C( 197), INT32_C( 167), INT32_C( 235), INT32_C( 15) },
|
|
{ INT32_C( 197), INT32_C( 167), INT32_C( 235), INT32_C( 15) } },
|
|
{ { INT32_C( 239), INT32_C( 157), INT32_C( 219), INT32_C( 83) },
|
|
{ INT32_C( 239), INT32_C( 157), INT32_C( 219), INT32_C( 83) } },
|
|
{ { INT32_C( 230), INT32_C( 67), INT32_C( 195), INT32_C( 27) },
|
|
{ INT32_C( 230), INT32_C( 67), INT32_C( 195), INT32_C( 27) } },
|
|
{ { INT32_C( 203), INT32_C( 150), INT32_C( 133), INT32_C( 68) },
|
|
{ INT32_C( 203), INT32_C( 150), INT32_C( 133), INT32_C( 68) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128i r = simde_mm_i32gather_epi32(i32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i32gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t src[4];
|
|
const int32_t vindex[4];
|
|
const int32_t mask[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 685361840), -INT32_C( 1057547638), -INT32_C( 1601608401), -INT32_C( 2110383967) },
|
|
{ INT32_C( 85), INT32_C( 81), INT32_C( 250), INT32_C( 146) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 85), INT32_C( 81), INT32_C( 250), INT32_C( 146) } },
|
|
{ { -INT32_C( 612533238), -INT32_C( 2144538583), -INT32_C( 1518687133), INT32_C( 1765241328) },
|
|
{ INT32_C( 198), INT32_C( 202), INT32_C( 225), INT32_C( 124) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_MIN, INT32_MIN },
|
|
{ -INT32_C( 612533238), -INT32_C( 2144538583), INT32_C( 225), INT32_C( 124) } },
|
|
{ { INT32_C( 1518663255), -INT32_C( 1557876442), INT32_C( 1485068261), INT32_C( 248810868) },
|
|
{ INT32_C( 138), INT32_C( 226), INT32_C( 2), INT32_C( 239) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 138), INT32_C( 226), INT32_C( 2), INT32_C( 239) } },
|
|
{ { -INT32_C( 436463052), INT32_C( 46620719), -INT32_C( 637220286), -INT32_C( 624310953) },
|
|
{ INT32_C( 255), INT32_C( 71), INT32_C( 2), INT32_C( 72) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_C( 0) },
|
|
{ -INT32_C( 436463052), INT32_C( 71), -INT32_C( 637220286), -INT32_C( 624310953) } },
|
|
{ { INT32_C( 1290237130), -INT32_C( 376192698), -INT32_C( 487909938), -INT32_C( 1020567585) },
|
|
{ INT32_C( 161), INT32_C( 11), INT32_C( 227), INT32_C( 34) },
|
|
{ INT32_MIN, INT32_MIN, INT32_C( 0), INT32_MIN },
|
|
{ INT32_C( 161), INT32_C( 11), -INT32_C( 487909938), INT32_C( 34) } },
|
|
{ { -INT32_C( 193884505), INT32_C( 2130650489), INT32_C( 526459079), -INT32_C( 1220465615) },
|
|
{ INT32_C( 81), INT32_C( 199), INT32_C( 213), INT32_C( 171) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_C( 0) },
|
|
{ INT32_C( 81), INT32_C( 199), INT32_C( 213), -INT32_C( 1220465615) } },
|
|
{ { -INT32_C( 1028183535), INT32_C( 931744097), INT32_C( 34424318), -INT32_C( 1095912774) },
|
|
{ INT32_C( 3), INT32_C( 170), INT32_C( 26), INT32_C( 155) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_MIN },
|
|
{ -INT32_C( 1028183535), INT32_C( 931744097), INT32_C( 34424318), INT32_C( 155) } },
|
|
{ { INT32_C( 1720704891), -INT32_C( 1492085483), INT32_C( 1187097276), INT32_C( 1491223020) },
|
|
{ INT32_C( 248), INT32_C( 82), INT32_C( 255), INT32_C( 161) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0) },
|
|
{ INT32_C( 1720704891), -INT32_C( 1492085483), INT32_C( 1187097276), INT32_C( 1491223020) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i src = simde_x_mm_loadu_epi32(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128i mask = simde_x_mm_loadu_epi32(test_vec[i].mask);
|
|
simde__m128i r = simde_mm_mask_i32gather_epi32(src, i32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i32gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[8];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 27), INT32_C( 135), INT32_C( 222), INT32_C( 60), INT32_C( 120), INT32_C( 248), INT32_C( 252), INT32_C( 33) },
|
|
{ INT32_C( 27), INT32_C( 135), INT32_C( 222), INT32_C( 60), INT32_C( 120), INT32_C( 248), INT32_C( 252), INT32_C( 33) } },
|
|
{ { INT32_C( 94), INT32_C( 185), INT32_C( 221), INT32_C( 160), INT32_C( 28), INT32_C( 199), INT32_C( 216), INT32_C( 91) },
|
|
{ INT32_C( 94), INT32_C( 185), INT32_C( 221), INT32_C( 160), INT32_C( 28), INT32_C( 199), INT32_C( 216), INT32_C( 91) } },
|
|
{ { INT32_C( 198), INT32_C( 71), INT32_C( 176), INT32_C( 54), INT32_C( 235), INT32_C( 249), INT32_C( 5), INT32_C( 236) },
|
|
{ INT32_C( 198), INT32_C( 71), INT32_C( 176), INT32_C( 54), INT32_C( 235), INT32_C( 249), INT32_C( 5), INT32_C( 236) } },
|
|
{ { INT32_C( 152), INT32_C( 161), INT32_C( 168), INT32_C( 209), INT32_C( 201), INT32_C( 153), INT32_C( 8), INT32_C( 97) },
|
|
{ INT32_C( 152), INT32_C( 161), INT32_C( 168), INT32_C( 209), INT32_C( 201), INT32_C( 153), INT32_C( 8), INT32_C( 97) } },
|
|
{ { INT32_C( 210), INT32_C( 35), INT32_C( 29), INT32_C( 112), INT32_C( 115), INT32_C( 2), INT32_C( 240), INT32_C( 195) },
|
|
{ INT32_C( 210), INT32_C( 35), INT32_C( 29), INT32_C( 112), INT32_C( 115), INT32_C( 2), INT32_C( 240), INT32_C( 195) } },
|
|
{ { INT32_C( 126), INT32_C( 0), INT32_C( 49), INT32_C( 241), INT32_C( 211), INT32_C( 104), INT32_C( 198), INT32_C( 131) },
|
|
{ INT32_C( 126), INT32_C( 0), INT32_C( 49), INT32_C( 241), INT32_C( 211), INT32_C( 104), INT32_C( 198), INT32_C( 131) } },
|
|
{ { INT32_C( 25), INT32_C( 242), INT32_C( 37), INT32_C( 251), INT32_C( 120), INT32_C( 10), INT32_C( 98), INT32_C( 217) },
|
|
{ INT32_C( 25), INT32_C( 242), INT32_C( 37), INT32_C( 251), INT32_C( 120), INT32_C( 10), INT32_C( 98), INT32_C( 217) } },
|
|
{ { INT32_C( 159), INT32_C( 152), INT32_C( 136), INT32_C( 27), INT32_C( 62), INT32_C( 120), INT32_C( 145), INT32_C( 235) },
|
|
{ INT32_C( 159), INT32_C( 152), INT32_C( 136), INT32_C( 27), INT32_C( 62), INT32_C( 120), INT32_C( 145), INT32_C( 235) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256i r = simde_mm256_i32gather_epi32(i32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i32gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t src[8];
|
|
const int32_t vindex[8];
|
|
const int32_t mask[8];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 1086860273), -INT32_C( 849127954), -INT32_C( 348023026), -INT32_C( 1484367608), INT32_C( 287657063), -INT32_C( 380909789), INT32_C( 1004087424), -INT32_C( 1260891740) },
|
|
{ INT32_C( 19), INT32_C( 114), INT32_C( 118), INT32_C( 226), INT32_C( 83), INT32_C( 138), INT32_C( 11), INT32_C( 140) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_C( 0), INT32_C( 0), INT32_MIN },
|
|
{ -INT32_C( 1086860273), INT32_C( 114), INT32_C( 118), INT32_C( 226), INT32_C( 83), -INT32_C( 380909789), INT32_C( 1004087424), INT32_C( 140) } },
|
|
{ { -INT32_C( 1577111400), INT32_C( 1410892465), INT32_C( 678561379), INT32_C( 1578988305), -INT32_C( 1665833368), -INT32_C( 2026400021), INT32_C( 2139872828), -INT32_C( 596763836) },
|
|
{ INT32_C( 252), INT32_C( 84), INT32_C( 173), INT32_C( 158), INT32_C( 235), INT32_C( 148), INT32_C( 148), INT32_C( 100) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_MIN, INT32_MIN, INT32_C( 0), INT32_C( 0), INT32_C( 0) },
|
|
{ -INT32_C( 1577111400), INT32_C( 84), INT32_C( 678561379), INT32_C( 158), INT32_C( 235), -INT32_C( 2026400021), INT32_C( 2139872828), -INT32_C( 596763836) } },
|
|
{ { -INT32_C( 1074690759), -INT32_C( 1478416843), INT32_C( 592490712), INT32_C( 695179148), INT32_C( 220112409), -INT32_C( 128800944), INT32_C( 1706634309), -INT32_C( 1334452618) },
|
|
{ INT32_C( 152), INT32_C( 101), INT32_C( 140), INT32_C( 63), INT32_C( 238), INT32_C( 192), INT32_C( 66), INT32_C( 224) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_C( 0), INT32_MIN },
|
|
{ INT32_C( 152), INT32_C( 101), INT32_C( 140), INT32_C( 63), INT32_C( 238), INT32_C( 192), INT32_C( 1706634309), INT32_C( 224) } },
|
|
{ { -INT32_C( 1420665862), INT32_C( 1515996691), INT32_C( 969382596), INT32_C( 1431139470), INT32_C( 144133742), -INT32_C( 1133668042), -INT32_C( 2118118208), -INT32_C( 1488673875) },
|
|
{ INT32_C( 18), INT32_C( 161), INT32_C( 215), INT32_C( 22), INT32_C( 172), INT32_C( 28), INT32_C( 76), INT32_C( 203) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_MIN, INT32_MIN, INT32_MIN, INT32_C( 0) },
|
|
{ -INT32_C( 1420665862), INT32_C( 1515996691), INT32_C( 969382596), INT32_C( 1431139470), INT32_C( 172), INT32_C( 28), INT32_C( 76), -INT32_C( 1488673875) } },
|
|
{ { -INT32_C( 20439286), -INT32_C( 449069208), -INT32_C( 2012655728), -INT32_C( 1829288817), -INT32_C( 2081353314), INT32_C( 1074228372), INT32_C( 2142754948), -INT32_C( 1477248355) },
|
|
{ INT32_C( 130), INT32_C( 9), INT32_C( 190), INT32_C( 83), INT32_C( 47), INT32_C( 49), INT32_C( 83), INT32_C( 58) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN, INT32_C( 0), INT32_C( 0) },
|
|
{ INT32_C( 130), INT32_C( 9), INT32_C( 190), INT32_C( 83), INT32_C( 47), INT32_C( 49), INT32_C( 2142754948), -INT32_C( 1477248355) } },
|
|
{ { INT32_C( 1885499633), INT32_C( 656294547), -INT32_C( 1351644492), INT32_C( 1128532806), -INT32_C( 873657988), -INT32_C( 1764702148), -INT32_C( 2096027564), INT32_C( 1796130170) },
|
|
{ INT32_C( 201), INT32_C( 102), INT32_C( 201), INT32_C( 231), INT32_C( 159), INT32_C( 22), INT32_C( 38), INT32_C( 66) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_C( 0) },
|
|
{ INT32_C( 1885499633), INT32_C( 102), -INT32_C( 1351644492), INT32_C( 231), -INT32_C( 873657988), INT32_C( 22), -INT32_C( 2096027564), INT32_C( 1796130170) } },
|
|
{ { INT32_C( 515341239), -INT32_C( 737547912), -INT32_C( 778257104), INT32_C( 936725373), -INT32_C( 1833731923), INT32_C( 1914979922), INT32_C( 1184881778), -INT32_C( 583921882) },
|
|
{ INT32_C( 2), INT32_C( 3), INT32_C( 63), INT32_C( 107), INT32_C( 115), INT32_C( 226), INT32_C( 35), INT32_C( 31) },
|
|
{ INT32_MIN, INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_MIN, INT32_MIN, INT32_C( 0), INT32_MIN },
|
|
{ INT32_C( 2), -INT32_C( 737547912), INT32_C( 63), INT32_C( 936725373), INT32_C( 115), INT32_C( 226), INT32_C( 1184881778), INT32_C( 31) } },
|
|
{ { -INT32_C( 724013614), -INT32_C( 778505370), INT32_C( 2063310050), -INT32_C( 1154183402), -INT32_C( 707698399), INT32_C( 210159988), INT32_C( 1698257641), INT32_C( 36013360) },
|
|
{ INT32_C( 89), INT32_C( 212), INT32_C( 34), INT32_C( 214), INT32_C( 87), INT32_C( 97), INT32_C( 188), INT32_C( 22) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_C( 0), INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_C( 0) },
|
|
{ INT32_C( 89), INT32_C( 212), INT32_C( 34), -INT32_C( 1154183402), -INT32_C( 707698399), INT32_C( 97), INT32_C( 1698257641), INT32_C( 36013360) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i src = simde_x_mm256_loadu_epi32(test_vec[i].src);
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256i mask = simde_x_mm256_loadu_epi32(test_vec[i].mask);
|
|
simde__m256i r = simde_mm256_mask_i32gather_epi32(src, i32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_i64gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[2];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 136), INT64_C( 22) },
|
|
{ INT32_C( 136), INT32_C( 22), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 173), INT64_C( 86) },
|
|
{ INT32_C( 173), INT32_C( 86), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 157), INT64_C( 106) },
|
|
{ INT32_C( 157), INT32_C( 106), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 81), INT64_C( 112) },
|
|
{ INT32_C( 81), INT32_C( 112), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 42), INT64_C( 54) },
|
|
{ INT32_C( 42), INT32_C( 54), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 75), INT64_C( 158) },
|
|
{ INT32_C( 75), INT32_C( 158), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 9), INT64_C( 95) },
|
|
{ INT32_C( 9), INT32_C( 95), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT64_C( 192), INT64_C( 148) },
|
|
{ INT32_C( 192), INT32_C( 148), INT32_C( 0), INT32_C( 0) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128i r = simde_mm_i64gather_epi32(i32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i64gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t src[4];
|
|
const int64_t vindex[2];
|
|
const int32_t mask[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 1478898212), INT32_C( 916774907), -INT32_C( 1556893248), INT32_C( 1777183058) },
|
|
{ INT64_C( 141), INT64_C( 139) },
|
|
{ INT32_MIN, INT32_MIN, INT32_C( 0), INT32_C( 0) },
|
|
{ INT32_C( 141), INT32_C( 139), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 632300097), -INT32_C( 462958966), INT32_C( 1851006215), INT32_C( 721091466) },
|
|
{ INT64_C( 157), INT64_C( 177) },
|
|
{ INT32_MIN, INT32_MIN, INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 157), INT32_C( 177), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT32_C( 1526041333), -INT32_C( 1124607967), -INT32_C( 1106894900), INT32_C( 879726651) },
|
|
{ INT64_C( 0), INT64_C( 233) },
|
|
{ INT32_MIN, INT32_MIN, INT32_C( 0), INT32_MIN },
|
|
{ INT32_C( 0), INT32_C( 233), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 1009155372), INT32_C( 2126747810), INT32_C( 1779523445), -INT32_C( 1420614464) },
|
|
{ INT64_C( 44), INT64_C( 205) },
|
|
{ INT32_MIN, INT32_C( 0), INT32_MIN, INT32_C( 0) },
|
|
{ INT32_C( 44), INT32_C( 2126747810), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 2036541516), -INT32_C( 1464708264), INT32_C( 1817736563), INT32_C( 289001730) },
|
|
{ INT64_C( 210), INT64_C( 6) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_C( 0) },
|
|
{ -INT32_C( 2036541516), INT32_C( 6), INT32_C( 0), INT32_C( 0) } },
|
|
{ { INT32_C( 529894144), -INT32_C( 1242496641), -INT32_C( 1991166154), -INT32_C( 661684580) },
|
|
{ INT64_C( 15), INT64_C( 39) },
|
|
{ INT32_MIN, INT32_C( 0), INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 15), -INT32_C( 1242496641), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 2000072659), INT32_C( 932691705), -INT32_C( 673489744), INT32_C( 16648425) },
|
|
{ INT64_C( 234), INT64_C( 70) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_MIN },
|
|
{ -INT32_C( 2000072659), INT32_C( 70), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 913030322), -INT32_C( 1531700955), INT32_C( 960408096), -INT32_C( 1367393148) },
|
|
{ INT64_C( 118), INT64_C( 32) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_MIN },
|
|
{ -INT32_C( 913030322), -INT32_C( 1531700955), INT32_C( 0), INT32_C( 0) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i src = simde_x_mm_loadu_epi32(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128i mask = simde_x_mm_loadu_epi32(test_vec[i].mask);
|
|
simde__m128i r = simde_mm_mask_i64gather_epi32(src, i32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i64gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 164), INT64_C( 255), INT64_C( 34), INT64_C( 127) },
|
|
{ INT32_C( 164), INT32_C( 255), INT32_C( 34), INT32_C( 127) } },
|
|
{ { INT64_C( 52), INT64_C( 61), INT64_C( 40), INT64_C( 26) },
|
|
{ INT32_C( 52), INT32_C( 61), INT32_C( 40), INT32_C( 26) } },
|
|
{ { INT64_C( 166), INT64_C( 126), INT64_C( 130), INT64_C( 24) },
|
|
{ INT32_C( 166), INT32_C( 126), INT32_C( 130), INT32_C( 24) } },
|
|
{ { INT64_C( 246), INT64_C( 51), INT64_C( 78), INT64_C( 212) },
|
|
{ INT32_C( 246), INT32_C( 51), INT32_C( 78), INT32_C( 212) } },
|
|
{ { INT64_C( 104), INT64_C( 184), INT64_C( 15), INT64_C( 222) },
|
|
{ INT32_C( 104), INT32_C( 184), INT32_C( 15), INT32_C( 222) } },
|
|
{ { INT64_C( 136), INT64_C( 54), INT64_C( 141), INT64_C( 30) },
|
|
{ INT32_C( 136), INT32_C( 54), INT32_C( 141), INT32_C( 30) } },
|
|
{ { INT64_C( 103), INT64_C( 148), INT64_C( 191), INT64_C( 239) },
|
|
{ INT32_C( 103), INT32_C( 148), INT32_C( 191), INT32_C( 239) } },
|
|
{ { INT64_C( 123), INT64_C( 179), INT64_C( 92), INT64_C( 156) },
|
|
{ INT32_C( 123), INT32_C( 179), INT32_C( 92), INT32_C( 156) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128i r = simde_mm256_i64gather_epi32(i32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i64gather_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t src[4];
|
|
const int64_t vindex[4];
|
|
const int32_t mask[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 1914974857), -INT32_C( 268305992), INT32_C( 1600826892), INT32_C( 91051765) },
|
|
{ INT64_C( 21), INT64_C( 250), INT64_C( 89), INT64_C( 48) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_MIN, INT32_C( 0) },
|
|
{ -INT32_C( 1914974857), -INT32_C( 268305992), INT32_C( 89), INT32_C( 91051765) } },
|
|
{ { -INT32_C( 807128191), -INT32_C( 215463748), INT32_C( 975167766), INT32_C( 627724550) },
|
|
{ INT64_C( 89), INT64_C( 70), INT64_C( 162), INT64_C( 179) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_MIN, INT32_MIN },
|
|
{ -INT32_C( 807128191), -INT32_C( 215463748), INT32_C( 162), INT32_C( 179) } },
|
|
{ { -INT32_C( 569972142), INT32_C( 1199611944), INT32_C( 1668045913), -INT32_C( 770263134) },
|
|
{ INT64_C( 96), INT64_C( 18), INT64_C( 116), INT64_C( 3) },
|
|
{ INT32_MIN, INT32_C( 0), INT32_C( 0), INT32_C( 0) },
|
|
{ INT32_C( 96), INT32_C( 1199611944), INT32_C( 1668045913), -INT32_C( 770263134) } },
|
|
{ { INT32_C( 209437937), INT32_C( 25204532), INT32_C( 1584355103), -INT32_C( 1738428347) },
|
|
{ INT64_C( 249), INT64_C( 196), INT64_C( 215), INT64_C( 197) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 209437937), INT32_C( 25204532), INT32_C( 215), INT32_C( 197) } },
|
|
{ { INT32_C( 1431392925), INT32_C( 1278007459), INT32_C( 1966760398), INT32_C( 926662903) },
|
|
{ INT64_C( 228), INT64_C( 100), INT64_C( 202), INT64_C( 39) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 1431392925), INT32_C( 100), INT32_C( 202), INT32_C( 39) } },
|
|
{ { INT32_C( 286484245), -INT32_C( 1831110836), INT32_C( 1942952725), INT32_C( 2140816278) },
|
|
{ INT64_C( 25), INT64_C( 234), INT64_C( 181), INT64_C( 145) },
|
|
{ INT32_MIN, INT32_C( 0), INT32_MIN, INT32_C( 0) },
|
|
{ INT32_C( 25), -INT32_C( 1831110836), INT32_C( 181), INT32_C( 2140816278) } },
|
|
{ { INT32_C( 478193020), INT32_C( 1842534011), INT32_C( 1693907963), -INT32_C( 520749634) },
|
|
{ INT64_C( 40), INT64_C( 39), INT64_C( 239), INT64_C( 122) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_MIN, INT32_MIN },
|
|
{ INT32_C( 478193020), INT32_C( 39), INT32_C( 239), INT32_C( 122) } },
|
|
{ { -INT32_C( 683278108), INT32_C( 667313686), -INT32_C( 1862854276), -INT32_C( 552950175) },
|
|
{ INT64_C( 248), INT64_C( 188), INT64_C( 99), INT64_C( 19) },
|
|
{ INT32_C( 0), INT32_MIN, INT32_C( 0), INT32_MIN },
|
|
{ -INT32_C( 683278108), INT32_C( 188), -INT32_C( 1862854276), INT32_C( 19) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(i32gather_buffer) / sizeof(i32gather_buffer[0])) ; i++) { i32gather_buffer[i] = HEDLEY_STATIC_CAST(int32_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i src = simde_x_mm_loadu_epi32(test_vec[i].src);
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128i mask = simde_x_mm_loadu_epi32(test_vec[i].mask);
|
|
simde__m128i r = simde_mm256_mask_i64gather_epi32(src, i32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int64_t i64gather_buffer[4096];
|
|
|
|
static int
|
|
test_simde_mm_i32gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[4];
|
|
const int64_t r[2];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 213), INT32_C( 182), INT32_C( 137), INT32_C( 61) },
|
|
{ INT64_C( 213), INT64_C( 182) } },
|
|
{ { INT32_C( 194), INT32_C( 187), INT32_C( 51), INT32_C( 119) },
|
|
{ INT64_C( 194), INT64_C( 187) } },
|
|
{ { INT32_C( 228), INT32_C( 167), INT32_C( 116), INT32_C( 164) },
|
|
{ INT64_C( 228), INT64_C( 167) } },
|
|
{ { INT32_C( 165), INT32_C( 240), INT32_C( 155), INT32_C( 11) },
|
|
{ INT64_C( 165), INT64_C( 240) } },
|
|
{ { INT32_C( 24), INT32_C( 15), INT32_C( 38), INT32_C( 204) },
|
|
{ INT64_C( 24), INT64_C( 15) } },
|
|
{ { INT32_C( 213), INT32_C( 248), INT32_C( 99), INT32_C( 197) },
|
|
{ INT64_C( 213), INT64_C( 248) } },
|
|
{ { INT32_C( 246), INT32_C( 206), INT32_C( 198), INT32_C( 189) },
|
|
{ INT64_C( 246), INT64_C( 206) } },
|
|
{ { INT32_C( 177), INT32_C( 184), INT32_C( 118), INT32_C( 235) },
|
|
{ INT64_C( 177), INT64_C( 184) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128i r = simde_mm_i32gather_epi64(i64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_i64x2(r, simde_x_mm_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i32gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t src[2];
|
|
const int32_t vindex[4];
|
|
const int64_t mask[2];
|
|
const int64_t r[2];
|
|
} test_vec[] = {
|
|
{ { -INT64_C( 8019067203857977457), -INT64_C( 8061722764401183075) },
|
|
{ INT32_C( 183), INT32_C( 168), INT32_C( 220), INT32_C( 145) },
|
|
{ INT64_C( 0), INT64_C( 0) },
|
|
{ -INT64_C( 8019067203857977457), -INT64_C( 8061722764401183075) } },
|
|
{ { -INT64_C( 919569984677581009), -INT64_C( 1648047741553663091) },
|
|
{ INT32_C( 235), INT32_C( 124), INT32_C( 216), INT32_C( 241) },
|
|
{ INT64_C( 0), INT64_MIN },
|
|
{ -INT64_C( 919569984677581009), INT64_C( 124) } },
|
|
{ { -INT64_C( 8634359355635040034), -INT64_C( 3764535099121455859) },
|
|
{ INT32_C( 178), INT32_C( 242), INT32_C( 53), INT32_C( 4) },
|
|
{ INT64_C( 0), INT64_C( 0) },
|
|
{ -INT64_C( 8634359355635040034), -INT64_C( 3764535099121455859) } },
|
|
{ { INT64_C( 2549016659115993441), -INT64_C( 7458823204181079982) },
|
|
{ INT32_C( 77), INT32_C( 31), INT32_C( 104), INT32_C( 168) },
|
|
{ INT64_C( 0), INT64_C( 0) },
|
|
{ INT64_C( 2549016659115993441), -INT64_C( 7458823204181079982) } },
|
|
{ { INT64_C( 5881278022537621357), -INT64_C( 7234300930576215892) },
|
|
{ INT32_C( 151), INT32_C( 32), INT32_C( 36), INT32_C( 71) },
|
|
{ INT64_MIN, INT64_C( 0) },
|
|
{ INT64_C( 151), -INT64_C( 7234300930576215892) } },
|
|
{ { INT64_C( 349012936767990930), INT64_C( 1707613122462270608) },
|
|
{ INT32_C( 126), INT32_C( 80), INT32_C( 233), INT32_C( 146) },
|
|
{ INT64_C( 0), INT64_MIN },
|
|
{ INT64_C( 349012936767990930), INT64_C( 80) } },
|
|
{ { INT64_C( 4375785989412903820), -INT64_C( 4856981328699777274) },
|
|
{ INT32_C( 103), INT32_C( 227), INT32_C( 125), INT32_C( 99) },
|
|
{ INT64_MIN, INT64_C( 0) },
|
|
{ INT64_C( 103), -INT64_C( 4856981328699777274) } },
|
|
{ { -INT64_C( 7386706167218158950), -INT64_C( 7989056672551773465) },
|
|
{ INT32_C( 107), INT32_C( 21), INT32_C( 236), INT32_C( 252) },
|
|
{ INT64_C( 0), INT64_C( 0) },
|
|
{ -INT64_C( 7386706167218158950), -INT64_C( 7989056672551773465) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i src = simde_x_mm_loadu_epi64(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128i mask = simde_x_mm_loadu_epi64(test_vec[i].mask);
|
|
simde__m128i r = simde_mm_mask_i32gather_epi64(src, i64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_i64x2(r, simde_x_mm_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i32gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[4];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 222), INT32_C( 35), INT32_C( 153), INT32_C( 134) },
|
|
{ INT64_C( 222), INT64_C( 35), INT64_C( 153), INT64_C( 134) } },
|
|
{ { INT32_C( 57), INT32_C( 242), INT32_C( 165), INT32_C( 182) },
|
|
{ INT64_C( 57), INT64_C( 242), INT64_C( 165), INT64_C( 182) } },
|
|
{ { INT32_C( 137), INT32_C( 208), INT32_C( 222), INT32_C( 21) },
|
|
{ INT64_C( 137), INT64_C( 208), INT64_C( 222), INT64_C( 21) } },
|
|
{ { INT32_C( 45), INT32_C( 10), INT32_C( 128), INT32_C( 27) },
|
|
{ INT64_C( 45), INT64_C( 10), INT64_C( 128), INT64_C( 27) } },
|
|
{ { INT32_C( 23), INT32_C( 3), INT32_C( 105), INT32_C( 216) },
|
|
{ INT64_C( 23), INT64_C( 3), INT64_C( 105), INT64_C( 216) } },
|
|
{ { INT32_C( 28), INT32_C( 117), INT32_C( 171), INT32_C( 117) },
|
|
{ INT64_C( 28), INT64_C( 117), INT64_C( 171), INT64_C( 117) } },
|
|
{ { INT32_C( 238), INT32_C( 69), INT32_C( 187), INT32_C( 167) },
|
|
{ INT64_C( 238), INT64_C( 69), INT64_C( 187), INT64_C( 167) } },
|
|
{ { INT32_C( 243), INT32_C( 37), INT32_C( 145), INT32_C( 129) },
|
|
{ INT64_C( 243), INT64_C( 37), INT64_C( 145), INT64_C( 129) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256i r = simde_mm256_i32gather_epi64(i64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i32gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t src[4];
|
|
const int32_t vindex[4];
|
|
const int64_t mask[4];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 3369142246547613560), INT64_C( 7744810680774779185), -INT64_C( 7552795409020785613), INT64_C( 1387622825387924421) },
|
|
{ INT32_C( 64), INT32_C( 70), INT32_C( 80), INT32_C( 245) },
|
|
{ INT64_C( 0), INT64_MIN, INT64_C( 0), INT64_C( 0) },
|
|
{ INT64_C( 3369142246547613560), INT64_C( 70), -INT64_C( 7552795409020785613), INT64_C( 1387622825387924421) } },
|
|
{ { INT64_C( 3103440719973267570), -INT64_C( 1919373598316996544), -INT64_C( 6201068952727107105), -INT64_C( 2614573325330952241) },
|
|
{ INT32_C( 72), INT32_C( 23), INT32_C( 132), INT32_C( 99) },
|
|
{ INT64_MIN, INT64_C( 0), INT64_MIN, INT64_MIN },
|
|
{ INT64_C( 72), -INT64_C( 1919373598316996544), INT64_C( 132), INT64_C( 99) } },
|
|
{ { -INT64_C( 1752065872900610483), INT64_C( 8405587345429565333), INT64_C( 1653618346573801900), -INT64_C( 7161726922272969511) },
|
|
{ INT32_C( 116), INT32_C( 71), INT32_C( 153), INT32_C( 134) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_C( 0), INT64_MIN },
|
|
{ -INT64_C( 1752065872900610483), INT64_C( 8405587345429565333), INT64_C( 1653618346573801900), INT64_C( 134) } },
|
|
{ { INT64_C( 1257101528912083106), -INT64_C( 77386101739500697), -INT64_C( 6860348042974974061), INT64_C( 6311937495677122959) },
|
|
{ INT32_C( 104), INT32_C( 134), INT32_C( 114), INT32_C( 96) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_MIN, INT64_C( 0) },
|
|
{ INT64_C( 1257101528912083106), -INT64_C( 77386101739500697), INT64_C( 114), INT64_C( 6311937495677122959) } },
|
|
{ { -INT64_C( 2861233286667249227), INT64_C( 2994139127905595224), INT64_C( 1902462180205604141), INT64_C( 6568991147572350640) },
|
|
{ INT32_C( 20), INT32_C( 9), INT32_C( 185), INT32_C( 83) },
|
|
{ INT64_MIN, INT64_MIN, INT64_C( 0), INT64_C( 0) },
|
|
{ INT64_C( 20), INT64_C( 9), INT64_C( 1902462180205604141), INT64_C( 6568991147572350640) } },
|
|
{ { -INT64_C( 4429501574753673542), -INT64_C( 8290183239203434124), INT64_C( 9208322051927348199), -INT64_C( 3990225492664517654) },
|
|
{ INT32_C( 199), INT32_C( 26), INT32_C( 173), INT32_C( 45) },
|
|
{ INT64_C( 0), INT64_MIN, INT64_MIN, INT64_MIN },
|
|
{ -INT64_C( 4429501574753673542), INT64_C( 26), INT64_C( 173), INT64_C( 45) } },
|
|
{ { INT64_C( 5138321306576926676), INT64_C( 3583659973203966119), -INT64_C( 5991628195680088859), -INT64_C( 7026477670733466586) },
|
|
{ INT32_C( 168), INT32_C( 117), INT32_C( 131), INT32_C( 38) },
|
|
{ INT64_MIN, INT64_C( 0), INT64_C( 0), INT64_MIN },
|
|
{ INT64_C( 168), INT64_C( 3583659973203966119), -INT64_C( 5991628195680088859), INT64_C( 38) } },
|
|
{ { -INT64_C( 5654470186572994433), -INT64_C( 2076098425164798), INT64_C( 4968725845142138655), -INT64_C( 4249484596989279597) },
|
|
{ INT32_C( 199), INT32_C( 152), INT32_C( 117), INT32_C( 16) },
|
|
{ INT64_MIN, INT64_MIN, INT64_C( 0), INT64_C( 0) },
|
|
{ INT64_C( 199), INT64_C( 152), INT64_C( 4968725845142138655), -INT64_C( 4249484596989279597) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i src = simde_x_mm256_loadu_epi64(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256i mask = simde_x_mm256_loadu_epi64(test_vec[i].mask);
|
|
simde__m256i r = simde_mm256_mask_i32gather_epi64(src, i64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_i64gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[2];
|
|
const int64_t r[2];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 0), INT64_C( 234) },
|
|
{ INT64_C( 0), INT64_C( 234) } },
|
|
{ { INT64_C( 22), INT64_C( 245) },
|
|
{ INT64_C( 22), INT64_C( 245) } },
|
|
{ { INT64_C( 151), INT64_C( 230) },
|
|
{ INT64_C( 151), INT64_C( 230) } },
|
|
{ { INT64_C( 184), INT64_C( 194) },
|
|
{ INT64_C( 184), INT64_C( 194) } },
|
|
{ { INT64_C( 213), INT64_C( 241) },
|
|
{ INT64_C( 213), INT64_C( 241) } },
|
|
{ { INT64_C( 191), INT64_C( 195) },
|
|
{ INT64_C( 191), INT64_C( 195) } },
|
|
{ { INT64_C( 174), INT64_C( 128) },
|
|
{ INT64_C( 174), INT64_C( 128) } },
|
|
{ { INT64_C( 186), INT64_C( 50) },
|
|
{ INT64_C( 186), INT64_C( 50) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128i r = simde_mm_i64gather_epi64(i64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_i64x2(r, simde_x_mm_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i64gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t src[2];
|
|
const int64_t vindex[2];
|
|
const int64_t mask[2];
|
|
const int64_t r[2];
|
|
} test_vec[] = {
|
|
{ { -INT64_C( 2403370840913539277), INT64_C( 5164194594589355633) },
|
|
{ INT64_C( 73), INT64_C( 179) },
|
|
{ INT64_C( 0), INT64_C( 0) },
|
|
{ -INT64_C( 2403370840913539277), INT64_C( 5164194594589355633) } },
|
|
{ { INT64_C( 935513772061340819), INT64_C( 7894743952153131099) },
|
|
{ INT64_C( 36), INT64_C( 84) },
|
|
{ INT64_C( 0), INT64_MIN },
|
|
{ INT64_C( 935513772061340819), INT64_C( 84) } },
|
|
{ { INT64_C( 6537362916212700834), -INT64_C( 8981235666207658170) },
|
|
{ INT64_C( 157), INT64_C( 192) },
|
|
{ INT64_C( 0), INT64_MIN },
|
|
{ INT64_C( 6537362916212700834), INT64_C( 192) } },
|
|
{ { -INT64_C( 1290141850782853098), INT64_C( 6360822988240042599) },
|
|
{ INT64_C( 102), INT64_C( 84) },
|
|
{ INT64_C( 0), INT64_MIN },
|
|
{ -INT64_C( 1290141850782853098), INT64_C( 84) } },
|
|
{ { INT64_C( 6060159807846979595), -INT64_C( 2729284862310875763) },
|
|
{ INT64_C( 118), INT64_C( 230) },
|
|
{ INT64_C( 0), INT64_C( 0) },
|
|
{ INT64_C( 6060159807846979595), -INT64_C( 2729284862310875763) } },
|
|
{ { -INT64_C( 4478319151860018035), -INT64_C( 5765320646130876869) },
|
|
{ INT64_C( 255), INT64_C( 33) },
|
|
{ INT64_MIN, INT64_MIN },
|
|
{ INT64_C( 255), INT64_C( 33) } },
|
|
{ { INT64_C( 6993169290329548479), -INT64_C( 5736351597774397777) },
|
|
{ INT64_C( 95), INT64_C( 101) },
|
|
{ INT64_MIN, INT64_MIN },
|
|
{ INT64_C( 95), INT64_C( 101) } },
|
|
{ { INT64_C( 1384741590647677331), -INT64_C( 5107012464534872811) },
|
|
{ INT64_C( 42), INT64_C( 182) },
|
|
{ INT64_C( 0), INT64_MIN },
|
|
{ INT64_C( 1384741590647677331), INT64_C( 182) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i src = simde_x_mm_loadu_epi64(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128i mask = simde_x_mm_loadu_epi64(test_vec[i].mask);
|
|
simde__m128i r = simde_mm_mask_i64gather_epi64(src, i64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_i64x2(r, simde_x_mm_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i64gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[4];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 226), INT64_C( 163), INT64_C( 130), INT64_C( 153) },
|
|
{ INT64_C( 226), INT64_C( 163), INT64_C( 130), INT64_C( 153) } },
|
|
{ { INT64_C( 200), INT64_C( 98), INT64_C( 2), INT64_C( 50) },
|
|
{ INT64_C( 200), INT64_C( 98), INT64_C( 2), INT64_C( 50) } },
|
|
{ { INT64_C( 16), INT64_C( 32), INT64_C( 233), INT64_C( 157) },
|
|
{ INT64_C( 16), INT64_C( 32), INT64_C( 233), INT64_C( 157) } },
|
|
{ { INT64_C( 136), INT64_C( 125), INT64_C( 114), INT64_C( 31) },
|
|
{ INT64_C( 136), INT64_C( 125), INT64_C( 114), INT64_C( 31) } },
|
|
{ { INT64_C( 170), INT64_C( 197), INT64_C( 24), INT64_C( 71) },
|
|
{ INT64_C( 170), INT64_C( 197), INT64_C( 24), INT64_C( 71) } },
|
|
{ { INT64_C( 171), INT64_C( 221), INT64_C( 156), INT64_C( 172) },
|
|
{ INT64_C( 171), INT64_C( 221), INT64_C( 156), INT64_C( 172) } },
|
|
{ { INT64_C( 165), INT64_C( 159), INT64_C( 250), INT64_C( 110) },
|
|
{ INT64_C( 165), INT64_C( 159), INT64_C( 250), INT64_C( 110) } },
|
|
{ { INT64_C( 135), INT64_C( 146), INT64_C( 141), INT64_C( 229) },
|
|
{ INT64_C( 135), INT64_C( 146), INT64_C( 141), INT64_C( 229) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m256i r = simde_mm256_i64gather_epi64(i64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i64gather_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t src[4];
|
|
const int64_t vindex[4];
|
|
const int64_t mask[4];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 8348925912988061266), INT64_C( 4593288946901735853), INT64_C( 4308902935962320046), INT64_C( 5084668380847658629) },
|
|
{ INT64_C( 74), INT64_C( 225), INT64_C( 80), INT64_C( 129) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_MIN, INT64_MIN },
|
|
{ INT64_C( 8348925912988061266), INT64_C( 4593288946901735853), INT64_C( 80), INT64_C( 129) } },
|
|
{ { INT64_C( 1819345364246751166), INT64_C( 6003474620557878227), INT64_C( 4745430889957619642), -INT64_C( 181287204719907732) },
|
|
{ INT64_C( 153), INT64_C( 47), INT64_C( 169), INT64_C( 18) },
|
|
{ INT64_MIN, INT64_C( 0), INT64_MIN, INT64_C( 0) },
|
|
{ INT64_C( 153), INT64_C( 6003474620557878227), INT64_C( 169), -INT64_C( 181287204719907732) } },
|
|
{ { -INT64_C( 4982644635249127578), INT64_C( 1248644929523017696), -INT64_C( 5881855532059445236), -INT64_C( 3838907038599371630) },
|
|
{ INT64_C( 169), INT64_C( 136), INT64_C( 124), INT64_C( 218) },
|
|
{ INT64_C( 0), INT64_MIN, INT64_MIN, INT64_MIN },
|
|
{ -INT64_C( 4982644635249127578), INT64_C( 136), INT64_C( 124), INT64_C( 218) } },
|
|
{ { INT64_C( 3695928590331946469), -INT64_C( 3354854445674728064), -INT64_C( 7502590046551983353), INT64_C( 2128958219520435651) },
|
|
{ INT64_C( 145), INT64_C( 0), INT64_C( 131), INT64_C( 115) },
|
|
{ INT64_C( 0), INT64_MIN, INT64_MIN, INT64_MIN },
|
|
{ INT64_C( 3695928590331946469), INT64_C( 0), INT64_C( 131), INT64_C( 115) } },
|
|
{ { -INT64_C( 1365028202850547012), INT64_C( 7416463151597603534), INT64_C( 5974682522185630920), INT64_C( 4041606267062842147) },
|
|
{ INT64_C( 11), INT64_C( 207), INT64_C( 105), INT64_C( 70) },
|
|
{ INT64_C( 0), INT64_MIN, INT64_C( 0), INT64_C( 0) },
|
|
{ -INT64_C( 1365028202850547012), INT64_C( 207), INT64_C( 5974682522185630920), INT64_C( 4041606267062842147) } },
|
|
{ { -INT64_C( 9156116817736860426), INT64_C( 4444164503705539924), INT64_C( 449387376615079680), -INT64_C( 2018570388200701601) },
|
|
{ INT64_C( 16), INT64_C( 116), INT64_C( 131), INT64_C( 179) },
|
|
{ INT64_MIN, INT64_C( 0), INT64_C( 0), INT64_MIN },
|
|
{ INT64_C( 16), INT64_C( 4444164503705539924), INT64_C( 449387376615079680), INT64_C( 179) } },
|
|
{ { -INT64_C( 4232490538612136547), -INT64_C( 7797947821915074691), -INT64_C( 42789732815080928), INT64_C( 6176971354028858165) },
|
|
{ INT64_C( 52), INT64_C( 108), INT64_C( 215), INT64_C( 104) },
|
|
{ INT64_MIN, INT64_MIN, INT64_MIN, INT64_C( 0) },
|
|
{ INT64_C( 52), INT64_C( 108), INT64_C( 215), INT64_C( 6176971354028858165) } },
|
|
{ { INT64_C( 1917495916396991492), -INT64_C( 3737546505400132308), -INT64_C( 3617519179428978074), INT64_C( 5470992047431380744) },
|
|
{ INT64_C( 131), INT64_C( 67), INT64_C( 187), INT64_C( 54) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_MIN, INT64_MIN },
|
|
{ INT64_C( 1917495916396991492), -INT64_C( 3737546505400132308), INT64_C( 187), INT64_C( 54) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(i64gather_buffer) / sizeof(i64gather_buffer[0])) ; i++) { i64gather_buffer[i] = HEDLEY_STATIC_CAST(int64_t, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i src = simde_x_mm256_loadu_epi64(test_vec[i].src);
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m256i mask = simde_x_mm256_loadu_epi64(test_vec[i].mask);
|
|
simde__m256i r = simde_mm256_mask_i64gather_epi64(src, i64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static simde_float32 f32gather_buffer[4096];
|
|
|
|
static int
|
|
test_simde_mm_i32gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[4];
|
|
const simde_float32 r[4];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 161), INT32_C( 17), INT32_C( 47), INT32_C( 177) },
|
|
{ SIMDE_FLOAT32_C( 161.00), SIMDE_FLOAT32_C( 17.00), SIMDE_FLOAT32_C( 47.00), SIMDE_FLOAT32_C( 177.00) } },
|
|
{ { INT32_C( 192), INT32_C( 196), INT32_C( 32), INT32_C( 56) },
|
|
{ SIMDE_FLOAT32_C( 192.00), SIMDE_FLOAT32_C( 196.00), SIMDE_FLOAT32_C( 32.00), SIMDE_FLOAT32_C( 56.00) } },
|
|
{ { INT32_C( 243), INT32_C( 253), INT32_C( 198), INT32_C( 186) },
|
|
{ SIMDE_FLOAT32_C( 243.00), SIMDE_FLOAT32_C( 253.00), SIMDE_FLOAT32_C( 198.00), SIMDE_FLOAT32_C( 186.00) } },
|
|
{ { INT32_C( 201), INT32_C( 25), INT32_C( 83), INT32_C( 64) },
|
|
{ SIMDE_FLOAT32_C( 201.00), SIMDE_FLOAT32_C( 25.00), SIMDE_FLOAT32_C( 83.00), SIMDE_FLOAT32_C( 64.00) } },
|
|
{ { INT32_C( 173), INT32_C( 203), INT32_C( 45), INT32_C( 53) },
|
|
{ SIMDE_FLOAT32_C( 173.00), SIMDE_FLOAT32_C( 203.00), SIMDE_FLOAT32_C( 45.00), SIMDE_FLOAT32_C( 53.00) } },
|
|
{ { INT32_C( 232), INT32_C( 218), INT32_C( 33), INT32_C( 228) },
|
|
{ SIMDE_FLOAT32_C( 232.00), SIMDE_FLOAT32_C( 218.00), SIMDE_FLOAT32_C( 33.00), SIMDE_FLOAT32_C( 228.00) } },
|
|
{ { INT32_C( 26), INT32_C( 51), INT32_C( 182), INT32_C( 102) },
|
|
{ SIMDE_FLOAT32_C( 26.00), SIMDE_FLOAT32_C( 51.00), SIMDE_FLOAT32_C( 182.00), SIMDE_FLOAT32_C( 102.00) } },
|
|
{ { INT32_C( 4), INT32_C( 101), INT32_C( 200), INT32_C( 229) },
|
|
{ SIMDE_FLOAT32_C( 4.00), SIMDE_FLOAT32_C( 101.00), SIMDE_FLOAT32_C( 200.00), SIMDE_FLOAT32_C( 229.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128 r = simde_mm_i32gather_ps(f32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i32gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float32 src[4];
|
|
const int32_t vindex[4];
|
|
const simde_float32 mask[4];
|
|
const simde_float32 r[4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT32_C( 349.70), SIMDE_FLOAT32_C( -696.38), SIMDE_FLOAT32_C( 625.38), SIMDE_FLOAT32_C( 53.26) },
|
|
{ INT32_C( 66), INT32_C( 235), INT32_C( 243), INT32_C( 24) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 349.70), SIMDE_FLOAT32_C( 235.00), SIMDE_FLOAT32_C( 625.38), SIMDE_FLOAT32_C( 24.00) } },
|
|
{ { SIMDE_FLOAT32_C( -959.90), SIMDE_FLOAT32_C( -440.10), SIMDE_FLOAT32_C( 558.05), SIMDE_FLOAT32_C( -71.77) },
|
|
{ INT32_C( 40), INT32_C( 16), INT32_C( 251), INT32_C( 54) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -959.90), SIMDE_FLOAT32_C( 16.00), SIMDE_FLOAT32_C( 558.05), SIMDE_FLOAT32_C( 54.00) } },
|
|
{ { SIMDE_FLOAT32_C( 152.90), SIMDE_FLOAT32_C( 196.28), SIMDE_FLOAT32_C( -304.14), SIMDE_FLOAT32_C( 91.85) },
|
|
{ INT32_C( 37), INT32_C( 26), INT32_C( 139), INT32_C( 218) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 152.90), SIMDE_FLOAT32_C( 26.00), SIMDE_FLOAT32_C( -304.14), SIMDE_FLOAT32_C( 218.00) } },
|
|
{ { SIMDE_FLOAT32_C( 91.05), SIMDE_FLOAT32_C( 444.96), SIMDE_FLOAT32_C( 775.00), SIMDE_FLOAT32_C( -616.08) },
|
|
{ INT32_C( 74), INT32_C( 136), INT32_C( 157), INT32_C( 68) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 91.05), SIMDE_FLOAT32_C( 136.00), SIMDE_FLOAT32_C( 775.00), SIMDE_FLOAT32_C( 68.00) } },
|
|
{ { SIMDE_FLOAT32_C( -111.35), SIMDE_FLOAT32_C( 886.72), SIMDE_FLOAT32_C( 255.61), SIMDE_FLOAT32_C( -399.36) },
|
|
{ INT32_C( 126), INT32_C( 154), INT32_C( 177), INT32_C( 65) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -111.35), SIMDE_FLOAT32_C( 154.00), SIMDE_FLOAT32_C( 255.61), SIMDE_FLOAT32_C( 65.00) } },
|
|
{ { SIMDE_FLOAT32_C( 48.78), SIMDE_FLOAT32_C( 652.36), SIMDE_FLOAT32_C( -139.19), SIMDE_FLOAT32_C( -584.66) },
|
|
{ INT32_C( 215), INT32_C( 81), INT32_C( 153), INT32_C( 75) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 48.78), SIMDE_FLOAT32_C( 81.00), SIMDE_FLOAT32_C( -139.19), SIMDE_FLOAT32_C( 75.00) } },
|
|
{ { SIMDE_FLOAT32_C( 39.45), SIMDE_FLOAT32_C( 995.37), SIMDE_FLOAT32_C( 468.08), SIMDE_FLOAT32_C( -82.06) },
|
|
{ INT32_C( 220), INT32_C( 183), INT32_C( 125), INT32_C( 44) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 39.45), SIMDE_FLOAT32_C( 183.00), SIMDE_FLOAT32_C( 468.08), SIMDE_FLOAT32_C( 44.00) } },
|
|
{ { SIMDE_FLOAT32_C( 883.35), SIMDE_FLOAT32_C( -889.08), SIMDE_FLOAT32_C( 355.42), SIMDE_FLOAT32_C( 899.85) },
|
|
{ INT32_C( 173), INT32_C( 192), INT32_C( 223), INT32_C( 168) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 883.35), SIMDE_FLOAT32_C( 192.00), SIMDE_FLOAT32_C( 355.42), SIMDE_FLOAT32_C( 168.00) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128 src = simde_mm_loadu_ps(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128 mask = simde_mm_loadu_ps(test_vec[i].mask);
|
|
simde__m128 r = simde_mm_mask_i32gather_ps(src, f32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i32gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[8];
|
|
const simde_float32 r[8];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 156), INT32_C( 110), INT32_C( 202), INT32_C( 30), INT32_C( 85), INT32_C( 63), INT32_C( 139), INT32_C( 34) },
|
|
{ SIMDE_FLOAT32_C( 156.00), SIMDE_FLOAT32_C( 110.00), SIMDE_FLOAT32_C( 202.00), SIMDE_FLOAT32_C( 30.00),
|
|
SIMDE_FLOAT32_C( 85.00), SIMDE_FLOAT32_C( 63.00), SIMDE_FLOAT32_C( 139.00), SIMDE_FLOAT32_C( 34.00) } },
|
|
{ { INT32_C( 20), INT32_C( 209), INT32_C( 84), INT32_C( 116), INT32_C( 159), INT32_C( 9), INT32_C( 45), INT32_C( 240) },
|
|
{ SIMDE_FLOAT32_C( 20.00), SIMDE_FLOAT32_C( 209.00), SIMDE_FLOAT32_C( 84.00), SIMDE_FLOAT32_C( 116.00),
|
|
SIMDE_FLOAT32_C( 159.00), SIMDE_FLOAT32_C( 9.00), SIMDE_FLOAT32_C( 45.00), SIMDE_FLOAT32_C( 240.00) } },
|
|
{ { INT32_C( 229), INT32_C( 18), INT32_C( 146), INT32_C( 118), INT32_C( 19), INT32_C( 136), INT32_C( 196), INT32_C( 132) },
|
|
{ SIMDE_FLOAT32_C( 229.00), SIMDE_FLOAT32_C( 18.00), SIMDE_FLOAT32_C( 146.00), SIMDE_FLOAT32_C( 118.00),
|
|
SIMDE_FLOAT32_C( 19.00), SIMDE_FLOAT32_C( 136.00), SIMDE_FLOAT32_C( 196.00), SIMDE_FLOAT32_C( 132.00) } },
|
|
{ { INT32_C( 95), INT32_C( 188), INT32_C( 60), INT32_C( 152), INT32_C( 20), INT32_C( 16), INT32_C( 188), INT32_C( 106) },
|
|
{ SIMDE_FLOAT32_C( 95.00), SIMDE_FLOAT32_C( 188.00), SIMDE_FLOAT32_C( 60.00), SIMDE_FLOAT32_C( 152.00),
|
|
SIMDE_FLOAT32_C( 20.00), SIMDE_FLOAT32_C( 16.00), SIMDE_FLOAT32_C( 188.00), SIMDE_FLOAT32_C( 106.00) } },
|
|
{ { INT32_C( 126), INT32_C( 56), INT32_C( 197), INT32_C( 2), INT32_C( 172), INT32_C( 70), INT32_C( 92), INT32_C( 90) },
|
|
{ SIMDE_FLOAT32_C( 126.00), SIMDE_FLOAT32_C( 56.00), SIMDE_FLOAT32_C( 197.00), SIMDE_FLOAT32_C( 2.00),
|
|
SIMDE_FLOAT32_C( 172.00), SIMDE_FLOAT32_C( 70.00), SIMDE_FLOAT32_C( 92.00), SIMDE_FLOAT32_C( 90.00) } },
|
|
{ { INT32_C( 179), INT32_C( 221), INT32_C( 122), INT32_C( 117), INT32_C( 214), INT32_C( 77), INT32_C( 138), INT32_C( 77) },
|
|
{ SIMDE_FLOAT32_C( 179.00), SIMDE_FLOAT32_C( 221.00), SIMDE_FLOAT32_C( 122.00), SIMDE_FLOAT32_C( 117.00),
|
|
SIMDE_FLOAT32_C( 214.00), SIMDE_FLOAT32_C( 77.00), SIMDE_FLOAT32_C( 138.00), SIMDE_FLOAT32_C( 77.00) } },
|
|
{ { INT32_C( 201), INT32_C( 109), INT32_C( 209), INT32_C( 78), INT32_C( 64), INT32_C( 182), INT32_C( 193), INT32_C( 166) },
|
|
{ SIMDE_FLOAT32_C( 201.00), SIMDE_FLOAT32_C( 109.00), SIMDE_FLOAT32_C( 209.00), SIMDE_FLOAT32_C( 78.00),
|
|
SIMDE_FLOAT32_C( 64.00), SIMDE_FLOAT32_C( 182.00), SIMDE_FLOAT32_C( 193.00), SIMDE_FLOAT32_C( 166.00) } },
|
|
{ { INT32_C( 179), INT32_C( 70), INT32_C( 166), INT32_C( 103), INT32_C( 13), INT32_C( 186), INT32_C( 19), INT32_C( 11) },
|
|
{ SIMDE_FLOAT32_C( 179.00), SIMDE_FLOAT32_C( 70.00), SIMDE_FLOAT32_C( 166.00), SIMDE_FLOAT32_C( 103.00),
|
|
SIMDE_FLOAT32_C( 13.00), SIMDE_FLOAT32_C( 186.00), SIMDE_FLOAT32_C( 19.00), SIMDE_FLOAT32_C( 11.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256 r = simde_mm256_i32gather_ps(f32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i32gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float32 src[8];
|
|
const int32_t vindex[8];
|
|
const simde_float32 mask[8];
|
|
const simde_float32 r[8];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT32_C( 265.75), SIMDE_FLOAT32_C( 153.07), SIMDE_FLOAT32_C( 737.27), SIMDE_FLOAT32_C( 671.90),
|
|
SIMDE_FLOAT32_C( 596.53), SIMDE_FLOAT32_C( 857.73), SIMDE_FLOAT32_C( 355.81), SIMDE_FLOAT32_C( 117.96) },
|
|
{ INT32_C( 116), INT32_C( 49), INT32_C( 1), INT32_C( 154), INT32_C( 238), INT32_C( 237), INT32_C( 63), INT32_C( 95) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 265.75), SIMDE_FLOAT32_C( 49.00), SIMDE_FLOAT32_C( 737.27), SIMDE_FLOAT32_C( 154.00),
|
|
SIMDE_FLOAT32_C( 596.53), SIMDE_FLOAT32_C( 237.00), SIMDE_FLOAT32_C( 355.81), SIMDE_FLOAT32_C( 95.00) } },
|
|
{ { SIMDE_FLOAT32_C( 355.76), SIMDE_FLOAT32_C( -146.74), SIMDE_FLOAT32_C( 908.75), SIMDE_FLOAT32_C( 492.00),
|
|
SIMDE_FLOAT32_C( -494.15), SIMDE_FLOAT32_C( -429.18), SIMDE_FLOAT32_C( 884.15), SIMDE_FLOAT32_C( 245.56) },
|
|
{ INT32_C( 197), INT32_C( 188), INT32_C( 203), INT32_C( 9), INT32_C( 115), INT32_C( 247), INT32_C( 86), INT32_C( 118) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 355.76), SIMDE_FLOAT32_C( 188.00), SIMDE_FLOAT32_C( 908.75), SIMDE_FLOAT32_C( 9.00),
|
|
SIMDE_FLOAT32_C( -494.15), SIMDE_FLOAT32_C( 247.00), SIMDE_FLOAT32_C( 884.15), SIMDE_FLOAT32_C( 118.00) } },
|
|
{ { SIMDE_FLOAT32_C( -488.70), SIMDE_FLOAT32_C( 468.34), SIMDE_FLOAT32_C( -802.96), SIMDE_FLOAT32_C( 324.69),
|
|
SIMDE_FLOAT32_C( -471.47), SIMDE_FLOAT32_C( -786.76), SIMDE_FLOAT32_C( -838.26), SIMDE_FLOAT32_C( 905.98) },
|
|
{ INT32_C( 142), INT32_C( 89), INT32_C( 225), INT32_C( 62), INT32_C( 206), INT32_C( 139), INT32_C( 54), INT32_C( 104) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -488.70), SIMDE_FLOAT32_C( 89.00), SIMDE_FLOAT32_C( -802.96), SIMDE_FLOAT32_C( 62.00),
|
|
SIMDE_FLOAT32_C( -471.47), SIMDE_FLOAT32_C( 139.00), SIMDE_FLOAT32_C( -838.26), SIMDE_FLOAT32_C( 104.00) } },
|
|
{ { SIMDE_FLOAT32_C( -743.20), SIMDE_FLOAT32_C( 452.48), SIMDE_FLOAT32_C( 844.69), SIMDE_FLOAT32_C( 377.91),
|
|
SIMDE_FLOAT32_C( -629.91), SIMDE_FLOAT32_C( -501.68), SIMDE_FLOAT32_C( 485.08), SIMDE_FLOAT32_C( 859.54) },
|
|
{ INT32_C( 110), INT32_C( 70), INT32_C( 8), INT32_C( 120), INT32_C( 248), INT32_C( 78), INT32_C( 213), INT32_C( 81) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -743.20), SIMDE_FLOAT32_C( 70.00), SIMDE_FLOAT32_C( 844.69), SIMDE_FLOAT32_C( 120.00),
|
|
SIMDE_FLOAT32_C( -629.91), SIMDE_FLOAT32_C( 78.00), SIMDE_FLOAT32_C( 485.08), SIMDE_FLOAT32_C( 81.00) } },
|
|
{ { SIMDE_FLOAT32_C( -292.29), SIMDE_FLOAT32_C( -955.02), SIMDE_FLOAT32_C( -774.96), SIMDE_FLOAT32_C( 472.21),
|
|
SIMDE_FLOAT32_C( 826.00), SIMDE_FLOAT32_C( -866.19), SIMDE_FLOAT32_C( 101.43), SIMDE_FLOAT32_C( -113.16) },
|
|
{ INT32_C( 154), INT32_C( 23), INT32_C( 119), INT32_C( 42), INT32_C( 169), INT32_C( 248), INT32_C( 64), INT32_C( 209) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -292.29), SIMDE_FLOAT32_C( 23.00), SIMDE_FLOAT32_C( -774.96), SIMDE_FLOAT32_C( 42.00),
|
|
SIMDE_FLOAT32_C( 826.00), SIMDE_FLOAT32_C( 248.00), SIMDE_FLOAT32_C( 101.43), SIMDE_FLOAT32_C( 209.00) } },
|
|
{ { SIMDE_FLOAT32_C( 24.55), SIMDE_FLOAT32_C( 652.58), SIMDE_FLOAT32_C( 245.18), SIMDE_FLOAT32_C( -784.38),
|
|
SIMDE_FLOAT32_C( -205.61), SIMDE_FLOAT32_C( -224.89), SIMDE_FLOAT32_C( -769.96), SIMDE_FLOAT32_C( -33.65) },
|
|
{ INT32_C( 77), INT32_C( 199), INT32_C( 107), INT32_C( 90), INT32_C( 74), INT32_C( 93), INT32_C( 41), INT32_C( 69) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 24.55), SIMDE_FLOAT32_C( 199.00), SIMDE_FLOAT32_C( 245.18), SIMDE_FLOAT32_C( 90.00),
|
|
SIMDE_FLOAT32_C( -205.61), SIMDE_FLOAT32_C( 93.00), SIMDE_FLOAT32_C( -769.96), SIMDE_FLOAT32_C( 69.00) } },
|
|
{ { SIMDE_FLOAT32_C( 709.81), SIMDE_FLOAT32_C( -130.13), SIMDE_FLOAT32_C( -541.91), SIMDE_FLOAT32_C( -394.05),
|
|
SIMDE_FLOAT32_C( 142.57), SIMDE_FLOAT32_C( -331.04), SIMDE_FLOAT32_C( 771.89), SIMDE_FLOAT32_C( -815.62) },
|
|
{ INT32_C( 45), INT32_C( 168), INT32_C( 242), INT32_C( 53), INT32_C( 156), INT32_C( 67), INT32_C( 131), INT32_C( 254) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 709.81), SIMDE_FLOAT32_C( 168.00), SIMDE_FLOAT32_C( -541.91), SIMDE_FLOAT32_C( 53.00),
|
|
SIMDE_FLOAT32_C( 142.57), SIMDE_FLOAT32_C( 67.00), SIMDE_FLOAT32_C( 771.89), SIMDE_FLOAT32_C( 254.00) } },
|
|
{ { SIMDE_FLOAT32_C( 913.20), SIMDE_FLOAT32_C( -738.56), SIMDE_FLOAT32_C( 273.37), SIMDE_FLOAT32_C( -405.28),
|
|
SIMDE_FLOAT32_C( 609.46), SIMDE_FLOAT32_C( -442.74), SIMDE_FLOAT32_C( 800.15), SIMDE_FLOAT32_C( 259.23) },
|
|
{ INT32_C( 86), INT32_C( 169), INT32_C( 125), INT32_C( 69), INT32_C( 23), INT32_C( 149), INT32_C( 111), INT32_C( 202) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00),
|
|
SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 913.20), SIMDE_FLOAT32_C( 169.00), SIMDE_FLOAT32_C( 273.37), SIMDE_FLOAT32_C( 69.00),
|
|
SIMDE_FLOAT32_C( 609.46), SIMDE_FLOAT32_C( 149.00), SIMDE_FLOAT32_C( 800.15), SIMDE_FLOAT32_C( 202.00) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256 src = simde_mm256_loadu_ps(test_vec[i].src);
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256 mask = simde_mm256_loadu_ps(test_vec[i].mask);
|
|
simde__m256 r = simde_mm256_mask_i32gather_ps(src, f32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_i64gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[2];
|
|
const simde_float32 r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 255), INT64_C( 74) },
|
|
{ SIMDE_FLOAT32_C( 255.00), SIMDE_FLOAT32_C( 74.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 169), INT64_C( 122) },
|
|
{ SIMDE_FLOAT32_C( 169.00), SIMDE_FLOAT32_C( 122.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 224), INT64_C( 199) },
|
|
{ SIMDE_FLOAT32_C( 224.00), SIMDE_FLOAT32_C( 199.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 59), INT64_C( 158) },
|
|
{ SIMDE_FLOAT32_C( 59.00), SIMDE_FLOAT32_C( 158.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 50), INT64_C( 7) },
|
|
{ SIMDE_FLOAT32_C( 50.00), SIMDE_FLOAT32_C( 7.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 139), INT64_C( 78) },
|
|
{ SIMDE_FLOAT32_C( 139.00), SIMDE_FLOAT32_C( 78.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 100), INT64_C( 188) },
|
|
{ SIMDE_FLOAT32_C( 100.00), SIMDE_FLOAT32_C( 188.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { INT64_C( 215), INT64_C( 83) },
|
|
{ SIMDE_FLOAT32_C( 215.00), SIMDE_FLOAT32_C( 83.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128 r = simde_mm_i64gather_ps(f32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i64gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float32 src[4];
|
|
const int64_t vindex[2];
|
|
const simde_float32 mask[4];
|
|
const simde_float32 r[4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT32_C( -910.45), SIMDE_FLOAT32_C( 471.73), SIMDE_FLOAT32_C( -109.25), SIMDE_FLOAT32_C( -741.72) },
|
|
{ INT64_C( 149), INT64_C( 105) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -910.45), SIMDE_FLOAT32_C( 105.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( 501.51), SIMDE_FLOAT32_C( -569.16), SIMDE_FLOAT32_C( -498.09), SIMDE_FLOAT32_C( 591.93) },
|
|
{ INT64_C( 253), INT64_C( 55) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 501.51), SIMDE_FLOAT32_C( 55.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( -500.50), SIMDE_FLOAT32_C( -787.96), SIMDE_FLOAT32_C( -8.71), SIMDE_FLOAT32_C( -327.02) },
|
|
{ INT64_C( 86), INT64_C( 3) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -500.50), SIMDE_FLOAT32_C( 3.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( 268.16), SIMDE_FLOAT32_C( -168.09), SIMDE_FLOAT32_C( 771.83), SIMDE_FLOAT32_C( 974.65) },
|
|
{ INT64_C( 183), INT64_C( 149) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 268.16), SIMDE_FLOAT32_C( 149.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( -167.43), SIMDE_FLOAT32_C( -25.72), SIMDE_FLOAT32_C( 800.73), SIMDE_FLOAT32_C( 362.38) },
|
|
{ INT64_C( 37), INT64_C( 58) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -167.43), SIMDE_FLOAT32_C( 58.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( 879.51), SIMDE_FLOAT32_C( -467.85), SIMDE_FLOAT32_C( -818.26), SIMDE_FLOAT32_C( 221.05) },
|
|
{ INT64_C( 234), INT64_C( 186) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 879.51), SIMDE_FLOAT32_C( 186.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( -462.62), SIMDE_FLOAT32_C( -246.74), SIMDE_FLOAT32_C( -719.57), SIMDE_FLOAT32_C( 388.25) },
|
|
{ INT64_C( 12), INT64_C( 199) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -462.62), SIMDE_FLOAT32_C( 199.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } },
|
|
{ { SIMDE_FLOAT32_C( -212.03), SIMDE_FLOAT32_C( -784.09), SIMDE_FLOAT32_C( 477.31), SIMDE_FLOAT32_C( 490.83) },
|
|
{ INT64_C( 10), INT64_C( 106) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -212.03), SIMDE_FLOAT32_C( 106.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128 src = simde_mm_loadu_ps(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128 mask = simde_mm_loadu_ps(test_vec[i].mask);
|
|
simde__m128 r = simde_mm_mask_i64gather_ps(src, f32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i64gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[4];
|
|
const simde_float32 r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 102), INT64_C( 248), INT64_C( 114), INT64_C( 223) },
|
|
{ SIMDE_FLOAT32_C( 102.00), SIMDE_FLOAT32_C( 248.00), SIMDE_FLOAT32_C( 114.00), SIMDE_FLOAT32_C( 223.00) } },
|
|
{ { INT64_C( 250), INT64_C( 132), INT64_C( 220), INT64_C( 173) },
|
|
{ SIMDE_FLOAT32_C( 250.00), SIMDE_FLOAT32_C( 132.00), SIMDE_FLOAT32_C( 220.00), SIMDE_FLOAT32_C( 173.00) } },
|
|
{ { INT64_C( 19), INT64_C( 230), INT64_C( 86), INT64_C( 7) },
|
|
{ SIMDE_FLOAT32_C( 19.00), SIMDE_FLOAT32_C( 230.00), SIMDE_FLOAT32_C( 86.00), SIMDE_FLOAT32_C( 7.00) } },
|
|
{ { INT64_C( 137), INT64_C( 241), INT64_C( 195), INT64_C( 198) },
|
|
{ SIMDE_FLOAT32_C( 137.00), SIMDE_FLOAT32_C( 241.00), SIMDE_FLOAT32_C( 195.00), SIMDE_FLOAT32_C( 198.00) } },
|
|
{ { INT64_C( 252), INT64_C( 215), INT64_C( 67), INT64_C( 180) },
|
|
{ SIMDE_FLOAT32_C( 252.00), SIMDE_FLOAT32_C( 215.00), SIMDE_FLOAT32_C( 67.00), SIMDE_FLOAT32_C( 180.00) } },
|
|
{ { INT64_C( 100), INT64_C( 137), INT64_C( 243), INT64_C( 185) },
|
|
{ SIMDE_FLOAT32_C( 100.00), SIMDE_FLOAT32_C( 137.00), SIMDE_FLOAT32_C( 243.00), SIMDE_FLOAT32_C( 185.00) } },
|
|
{ { INT64_C( 175), INT64_C( 29), INT64_C( 122), INT64_C( 116) },
|
|
{ SIMDE_FLOAT32_C( 175.00), SIMDE_FLOAT32_C( 29.00), SIMDE_FLOAT32_C( 122.00), SIMDE_FLOAT32_C( 116.00) } },
|
|
{ { INT64_C( 48), INT64_C( 182), INT64_C( 53), INT64_C( 192) },
|
|
{ SIMDE_FLOAT32_C( 48.00), SIMDE_FLOAT32_C( 182.00), SIMDE_FLOAT32_C( 53.00), SIMDE_FLOAT32_C( 192.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128 r = simde_mm256_i64gather_ps(f32gather_buffer, vindex, 4);
|
|
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i64gather_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float32 src[4];
|
|
const int64_t vindex[4];
|
|
const simde_float32 mask[4];
|
|
const simde_float32 r[4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT32_C( -557.85), SIMDE_FLOAT32_C( -785.29), SIMDE_FLOAT32_C( -569.41), SIMDE_FLOAT32_C( -404.80) },
|
|
{ INT64_C( 204), INT64_C( 120), INT64_C( 37), INT64_C( 130) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -557.85), SIMDE_FLOAT32_C( 120.00), SIMDE_FLOAT32_C( -569.41), SIMDE_FLOAT32_C( 130.00) } },
|
|
{ { SIMDE_FLOAT32_C( 831.45), SIMDE_FLOAT32_C( -114.89), SIMDE_FLOAT32_C( -779.68), SIMDE_FLOAT32_C( 6.19) },
|
|
{ INT64_C( 168), INT64_C( 241), INT64_C( 231), INT64_C( 98) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( 831.45), SIMDE_FLOAT32_C( 241.00), SIMDE_FLOAT32_C( -779.68), SIMDE_FLOAT32_C( 98.00) } },
|
|
{ { SIMDE_FLOAT32_C( -926.84), SIMDE_FLOAT32_C( -613.11), SIMDE_FLOAT32_C( 474.57), SIMDE_FLOAT32_C( -308.37) },
|
|
{ INT64_C( 188), INT64_C( 117), INT64_C( 230), INT64_C( 107) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -926.84), SIMDE_FLOAT32_C( 117.00), SIMDE_FLOAT32_C( 474.57), SIMDE_FLOAT32_C( 107.00) } },
|
|
{ { SIMDE_FLOAT32_C( -210.98), SIMDE_FLOAT32_C( -337.89), SIMDE_FLOAT32_C( -71.79), SIMDE_FLOAT32_C( -805.12) },
|
|
{ INT64_C( 188), INT64_C( 100), INT64_C( 159), INT64_C( 80) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -210.98), SIMDE_FLOAT32_C( 100.00), SIMDE_FLOAT32_C( -71.79), SIMDE_FLOAT32_C( 80.00) } },
|
|
{ { SIMDE_FLOAT32_C( -900.97), SIMDE_FLOAT32_C( 631.07), SIMDE_FLOAT32_C( 698.37), SIMDE_FLOAT32_C( 195.85) },
|
|
{ INT64_C( 49), INT64_C( 72), INT64_C( 255), INT64_C( 112) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -900.97), SIMDE_FLOAT32_C( 72.00), SIMDE_FLOAT32_C( 698.37), SIMDE_FLOAT32_C( 112.00) } },
|
|
{ { SIMDE_FLOAT32_C( -812.07), SIMDE_FLOAT32_C( 60.40), SIMDE_FLOAT32_C( -955.01), SIMDE_FLOAT32_C( -625.48) },
|
|
{ INT64_C( 7), INT64_C( 209), INT64_C( 12), INT64_C( 97) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -812.07), SIMDE_FLOAT32_C( 209.00), SIMDE_FLOAT32_C( -955.01), SIMDE_FLOAT32_C( 97.00) } },
|
|
{ { SIMDE_FLOAT32_C( -948.25), SIMDE_FLOAT32_C( 53.13), SIMDE_FLOAT32_C( -171.41), SIMDE_FLOAT32_C( 245.75) },
|
|
{ INT64_C( 170), INT64_C( 104), INT64_C( 82), INT64_C( 123) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -948.25), SIMDE_FLOAT32_C( 104.00), SIMDE_FLOAT32_C( -171.41), SIMDE_FLOAT32_C( 123.00) } },
|
|
{ { SIMDE_FLOAT32_C( -63.25), SIMDE_FLOAT32_C( 125.71), SIMDE_FLOAT32_C( 69.11), SIMDE_FLOAT32_C( -25.31) },
|
|
{ INT64_C( 145), INT64_C( 84), INT64_C( 244), INT64_C( 22) },
|
|
{ SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-2147483648.00) },
|
|
{ SIMDE_FLOAT32_C( -63.25), SIMDE_FLOAT32_C( 84.00), SIMDE_FLOAT32_C( 69.11), SIMDE_FLOAT32_C( 22.00) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(f32gather_buffer) / sizeof(f32gather_buffer[0])) ; i++) { f32gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float32, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128 src = simde_mm_loadu_ps(test_vec[i].src);
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128 mask = simde_mm_loadu_ps(test_vec[i].mask);
|
|
simde__m128 r = simde_mm256_mask_i64gather_ps(src, f32gather_buffer, vindex, mask, 4);
|
|
simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static simde_float64 f64gather_buffer[4096];
|
|
|
|
static int
|
|
test_simde_mm_i32gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[4];
|
|
const simde_float64 r[2];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 151), INT32_C( 228), INT32_C( 22), INT32_C( 128) },
|
|
{ SIMDE_FLOAT64_C( 151.00), SIMDE_FLOAT64_C( 228.00) } },
|
|
{ { INT32_C( 162), INT32_C( 84), INT32_C( 9), INT32_C( 70) },
|
|
{ SIMDE_FLOAT64_C( 162.00), SIMDE_FLOAT64_C( 84.00) } },
|
|
{ { INT32_C( 218), INT32_C( 181), INT32_C( 119), INT32_C( 133) },
|
|
{ SIMDE_FLOAT64_C( 218.00), SIMDE_FLOAT64_C( 181.00) } },
|
|
{ { INT32_C( 22), INT32_C( 114), INT32_C( 193), INT32_C( 112) },
|
|
{ SIMDE_FLOAT64_C( 22.00), SIMDE_FLOAT64_C( 114.00) } },
|
|
{ { INT32_C( 79), INT32_C( 111), INT32_C( 117), INT32_C( 77) },
|
|
{ SIMDE_FLOAT64_C( 79.00), SIMDE_FLOAT64_C( 111.00) } },
|
|
{ { INT32_C( 123), INT32_C( 187), INT32_C( 81), INT32_C( 26) },
|
|
{ SIMDE_FLOAT64_C( 123.00), SIMDE_FLOAT64_C( 187.00) } },
|
|
{ { INT32_C( 171), INT32_C( 12), INT32_C( 85), INT32_C( 56) },
|
|
{ SIMDE_FLOAT64_C( 171.00), SIMDE_FLOAT64_C( 12.00) } },
|
|
{ { INT32_C( 64), INT32_C( 180), INT32_C( 87), INT32_C( 104) },
|
|
{ SIMDE_FLOAT64_C( 64.00), SIMDE_FLOAT64_C( 180.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
#if defined(SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_) && HEDLEY_GCC_VERSION_CHECK(12,0,0)
|
|
HEDLEY_DIAGNOSTIC_PUSH
|
|
SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_
|
|
#endif
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128d r = simde_mm_i32gather_pd(f64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
#if defined(SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_) && HEDLEY_GCC_VERSION_CHECK(12,0,0)
|
|
HEDLEY_DIAGNOSTIC_POP
|
|
#endif
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i32gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float64 src[2];
|
|
const int32_t vindex[4];
|
|
const simde_float64 mask[2];
|
|
const simde_float64 r[2];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT64_C( -480.33), SIMDE_FLOAT64_C( -315.66) },
|
|
{ INT32_C( 197), INT32_C( 5), INT32_C( 11), INT32_C( 103) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -480.33), SIMDE_FLOAT64_C( 5.00) } },
|
|
{ { SIMDE_FLOAT64_C( -766.75), SIMDE_FLOAT64_C( -247.86) },
|
|
{ INT32_C( 60), INT32_C( 245), INT32_C( 66), INT32_C( 155) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -766.75), SIMDE_FLOAT64_C( 245.00) } },
|
|
{ { SIMDE_FLOAT64_C( -243.19), SIMDE_FLOAT64_C( 794.07) },
|
|
{ INT32_C( 29), INT32_C( 87), INT32_C( 99), INT32_C( 99) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -243.19), SIMDE_FLOAT64_C( 87.00) } },
|
|
{ { SIMDE_FLOAT64_C( 424.26), SIMDE_FLOAT64_C( -504.72) },
|
|
{ INT32_C( 71), INT32_C( 70), INT32_C( 235), INT32_C( 194) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 424.26), SIMDE_FLOAT64_C( 70.00) } },
|
|
{ { SIMDE_FLOAT64_C( 881.31), SIMDE_FLOAT64_C( -768.55) },
|
|
{ INT32_C( 65), INT32_C( 188), INT32_C( 232), INT32_C( 73) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 881.31), SIMDE_FLOAT64_C( 188.00) } },
|
|
{ { SIMDE_FLOAT64_C( -774.67), SIMDE_FLOAT64_C( 356.86) },
|
|
{ INT32_C( 174), INT32_C( 126), INT32_C( 251), INT32_C( 40) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -774.67), SIMDE_FLOAT64_C( 126.00) } },
|
|
{ { SIMDE_FLOAT64_C( -351.27), SIMDE_FLOAT64_C( -343.71) },
|
|
{ INT32_C( 190), INT32_C( 201), INT32_C( 87), INT32_C( 59) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -351.27), SIMDE_FLOAT64_C( 201.00) } },
|
|
{ { SIMDE_FLOAT64_C( -898.19), SIMDE_FLOAT64_C( -375.56) },
|
|
{ INT32_C( 234), INT32_C( 148), INT32_C( 170), INT32_C( 24) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -898.19), SIMDE_FLOAT64_C( 148.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128d src = simde_mm_loadu_pd(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m128d mask = simde_mm_loadu_pd(test_vec[i].mask);
|
|
simde__m128d r = simde_mm_mask_i32gather_pd(src, f64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i32gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t vindex[4];
|
|
const simde_float64 r[4];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 177), INT32_C( 141), INT32_C( 100), INT32_C( 45) },
|
|
{ SIMDE_FLOAT64_C( 177.00), SIMDE_FLOAT64_C( 141.00), SIMDE_FLOAT64_C( 100.00), SIMDE_FLOAT64_C( 45.00) } },
|
|
{ { INT32_C( 150), INT32_C( 114), INT32_C( 229), INT32_C( 101) },
|
|
{ SIMDE_FLOAT64_C( 150.00), SIMDE_FLOAT64_C( 114.00), SIMDE_FLOAT64_C( 229.00), SIMDE_FLOAT64_C( 101.00) } },
|
|
{ { INT32_C( 226), INT32_C( 173), INT32_C( 89), INT32_C( 9) },
|
|
{ SIMDE_FLOAT64_C( 226.00), SIMDE_FLOAT64_C( 173.00), SIMDE_FLOAT64_C( 89.00), SIMDE_FLOAT64_C( 9.00) } },
|
|
{ { INT32_C( 29), INT32_C( 54), INT32_C( 230), INT32_C( 153) },
|
|
{ SIMDE_FLOAT64_C( 29.00), SIMDE_FLOAT64_C( 54.00), SIMDE_FLOAT64_C( 230.00), SIMDE_FLOAT64_C( 153.00) } },
|
|
{ { INT32_C( 130), INT32_C( 112), INT32_C( 170), INT32_C( 75) },
|
|
{ SIMDE_FLOAT64_C( 130.00), SIMDE_FLOAT64_C( 112.00), SIMDE_FLOAT64_C( 170.00), SIMDE_FLOAT64_C( 75.00) } },
|
|
{ { INT32_C( 81), INT32_C( 83), INT32_C( 244), INT32_C( 81) },
|
|
{ SIMDE_FLOAT64_C( 81.00), SIMDE_FLOAT64_C( 83.00), SIMDE_FLOAT64_C( 244.00), SIMDE_FLOAT64_C( 81.00) } },
|
|
{ { INT32_C( 29), INT32_C( 15), INT32_C( 115), INT32_C( 79) },
|
|
{ SIMDE_FLOAT64_C( 29.00), SIMDE_FLOAT64_C( 15.00), SIMDE_FLOAT64_C( 115.00), SIMDE_FLOAT64_C( 79.00) } },
|
|
{ { INT32_C( 131), INT32_C( 207), INT32_C( 76), INT32_C( 123) },
|
|
{ SIMDE_FLOAT64_C( 131.00), SIMDE_FLOAT64_C( 207.00), SIMDE_FLOAT64_C( 76.00), SIMDE_FLOAT64_C( 123.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
#if defined(SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_) && HEDLEY_GCC_VERSION_CHECK(12,0,0)
|
|
HEDLEY_DIAGNOSTIC_PUSH
|
|
SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_
|
|
#endif
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256d r = simde_mm256_i32gather_pd(f64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
#if defined(SIMDE_DIAGNOSTIC_DISABLE_UNINITIALIZED_) && HEDLEY_GCC_VERSION_CHECK(12,0,0)
|
|
HEDLEY_DIAGNOSTIC_POP
|
|
#endif
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i32gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float64 src[4];
|
|
const int32_t vindex[4];
|
|
const simde_float64 mask[4];
|
|
const simde_float64 r[4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT64_C( 267.18), SIMDE_FLOAT64_C( 752.26), SIMDE_FLOAT64_C( 216.84), SIMDE_FLOAT64_C( 987.12) },
|
|
{ INT32_C( 123), INT32_C( 197), INT32_C( 179), INT32_C( 0) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 267.18), SIMDE_FLOAT64_C( 197.00), SIMDE_FLOAT64_C( 216.84), SIMDE_FLOAT64_C( 0.00) } },
|
|
{ { SIMDE_FLOAT64_C( 608.28), SIMDE_FLOAT64_C( 322.28), SIMDE_FLOAT64_C( 399.60), SIMDE_FLOAT64_C( -753.21) },
|
|
{ INT32_C( 249), INT32_C( 84), INT32_C( 194), INT32_C( 44) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 608.28), SIMDE_FLOAT64_C( 84.00), SIMDE_FLOAT64_C( 399.60), SIMDE_FLOAT64_C( 44.00) } },
|
|
{ { SIMDE_FLOAT64_C( 765.40), SIMDE_FLOAT64_C( -73.02), SIMDE_FLOAT64_C( 385.76), SIMDE_FLOAT64_C( 103.67) },
|
|
{ INT32_C( 55), INT32_C( 66), INT32_C( 86), INT32_C( 189) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 765.40), SIMDE_FLOAT64_C( 66.00), SIMDE_FLOAT64_C( 385.76), SIMDE_FLOAT64_C( 189.00) } },
|
|
{ { SIMDE_FLOAT64_C( 170.06), SIMDE_FLOAT64_C( 333.86), SIMDE_FLOAT64_C( -731.28), SIMDE_FLOAT64_C( -526.76) },
|
|
{ INT32_C( 11), INT32_C( 174), INT32_C( 199), INT32_C( 205) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 170.06), SIMDE_FLOAT64_C( 174.00), SIMDE_FLOAT64_C( -731.28), SIMDE_FLOAT64_C( 205.00) } },
|
|
{ { SIMDE_FLOAT64_C( -655.08), SIMDE_FLOAT64_C( 43.94), SIMDE_FLOAT64_C( 458.52), SIMDE_FLOAT64_C( 50.01) },
|
|
{ INT32_C( 17), INT32_C( 204), INT32_C( 61), INT32_C( 41) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -655.08), SIMDE_FLOAT64_C( 204.00), SIMDE_FLOAT64_C( 458.52), SIMDE_FLOAT64_C( 41.00) } },
|
|
{ { SIMDE_FLOAT64_C( 91.50), SIMDE_FLOAT64_C( 334.64), SIMDE_FLOAT64_C( -285.42), SIMDE_FLOAT64_C( 872.18) },
|
|
{ INT32_C( 206), INT32_C( 59), INT32_C( 5), INT32_C( 108) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 91.50), SIMDE_FLOAT64_C( 59.00), SIMDE_FLOAT64_C( -285.42), SIMDE_FLOAT64_C( 108.00) } },
|
|
{ { SIMDE_FLOAT64_C( -329.65), SIMDE_FLOAT64_C( 179.37), SIMDE_FLOAT64_C( -815.96), SIMDE_FLOAT64_C( 824.89) },
|
|
{ INT32_C( 228), INT32_C( 234), INT32_C( 46), INT32_C( 94) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -329.65), SIMDE_FLOAT64_C( 234.00), SIMDE_FLOAT64_C( -815.96), SIMDE_FLOAT64_C( 94.00) } },
|
|
{ { SIMDE_FLOAT64_C( -490.85), SIMDE_FLOAT64_C( 503.59), SIMDE_FLOAT64_C( -623.45), SIMDE_FLOAT64_C( 519.67) },
|
|
{ INT32_C( 127), INT32_C( 223), INT32_C( 120), INT32_C( 66) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -490.85), SIMDE_FLOAT64_C( 223.00), SIMDE_FLOAT64_C( -623.45), SIMDE_FLOAT64_C( 66.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256d src = simde_mm256_loadu_pd(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi32(test_vec[i].vindex);
|
|
simde__m256d mask = simde_mm256_loadu_pd(test_vec[i].mask);
|
|
simde__m256d r = simde_mm256_mask_i32gather_pd(src, f64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_i64gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[2];
|
|
const simde_float64 r[2];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 44), INT64_C( 35) },
|
|
{ SIMDE_FLOAT64_C( 44.00), SIMDE_FLOAT64_C( 35.00) } },
|
|
{ { INT64_C( 67), INT64_C( 111) },
|
|
{ SIMDE_FLOAT64_C( 67.00), SIMDE_FLOAT64_C( 111.00) } },
|
|
{ { INT64_C( 136), INT64_C( 227) },
|
|
{ SIMDE_FLOAT64_C( 136.00), SIMDE_FLOAT64_C( 227.00) } },
|
|
{ { INT64_C( 149), INT64_C( 42) },
|
|
{ SIMDE_FLOAT64_C( 149.00), SIMDE_FLOAT64_C( 42.00) } },
|
|
{ { INT64_C( 162), INT64_C( 73) },
|
|
{ SIMDE_FLOAT64_C( 162.00), SIMDE_FLOAT64_C( 73.00) } },
|
|
{ { INT64_C( 34), INT64_C( 86) },
|
|
{ SIMDE_FLOAT64_C( 34.00), SIMDE_FLOAT64_C( 86.00) } },
|
|
{ { INT64_C( 0), INT64_C( 81) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 81.00) } },
|
|
{ { INT64_C( 121), INT64_C( 62) },
|
|
{ SIMDE_FLOAT64_C( 121.00), SIMDE_FLOAT64_C( 62.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128d r = simde_mm_i64gather_pd(f64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_mask_i64gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float64 src[2];
|
|
const int64_t vindex[2];
|
|
const simde_float64 mask[2];
|
|
const simde_float64 r[2];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT64_C( 228.75), SIMDE_FLOAT64_C( -39.16) },
|
|
{ INT64_C( 151), INT64_C( 61) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 228.75), SIMDE_FLOAT64_C( 61.00) } },
|
|
{ { SIMDE_FLOAT64_C( -882.35), SIMDE_FLOAT64_C( 591.91) },
|
|
{ INT64_C( 204), INT64_C( 199) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -882.35), SIMDE_FLOAT64_C( 199.00) } },
|
|
{ { SIMDE_FLOAT64_C( 141.24), SIMDE_FLOAT64_C( 212.29) },
|
|
{ INT64_C( 117), INT64_C( 141) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 141.24), SIMDE_FLOAT64_C( 141.00) } },
|
|
{ { SIMDE_FLOAT64_C( -950.10), SIMDE_FLOAT64_C( 891.20) },
|
|
{ INT64_C( 83), INT64_C( 248) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -950.10), SIMDE_FLOAT64_C( 248.00) } },
|
|
{ { SIMDE_FLOAT64_C( 89.46), SIMDE_FLOAT64_C( -130.83) },
|
|
{ INT64_C( 70), INT64_C( 253) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 89.46), SIMDE_FLOAT64_C( 253.00) } },
|
|
{ { SIMDE_FLOAT64_C( -460.75), SIMDE_FLOAT64_C( -728.93) },
|
|
{ INT64_C( 2), INT64_C( 214) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -460.75), SIMDE_FLOAT64_C( 214.00) } },
|
|
{ { SIMDE_FLOAT64_C( 878.60), SIMDE_FLOAT64_C( 965.00) },
|
|
{ INT64_C( 72), INT64_C( 241) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 878.60), SIMDE_FLOAT64_C( 241.00) } },
|
|
{ { SIMDE_FLOAT64_C( 564.46), SIMDE_FLOAT64_C( 962.41) },
|
|
{ INT64_C( 206), INT64_C( 147) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 564.46), SIMDE_FLOAT64_C( 147.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128d src = simde_mm_loadu_pd(test_vec[i].src);
|
|
simde__m128i vindex = simde_x_mm_loadu_epi64(test_vec[i].vindex);
|
|
simde__m128d mask = simde_mm_loadu_pd(test_vec[i].mask);
|
|
simde__m128d r = simde_mm_mask_i64gather_pd(src, f64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_i64gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t vindex[4];
|
|
const simde_float64 r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 155), INT64_C( 134), INT64_C( 102), INT64_C( 36) },
|
|
{ SIMDE_FLOAT64_C( 155.00), SIMDE_FLOAT64_C( 134.00), SIMDE_FLOAT64_C( 102.00), SIMDE_FLOAT64_C( 36.00) } },
|
|
{ { INT64_C( 188), INT64_C( 82), INT64_C( 119), INT64_C( 247) },
|
|
{ SIMDE_FLOAT64_C( 188.00), SIMDE_FLOAT64_C( 82.00), SIMDE_FLOAT64_C( 119.00), SIMDE_FLOAT64_C( 247.00) } },
|
|
{ { INT64_C( 60), INT64_C( 4), INT64_C( 193), INT64_C( 157) },
|
|
{ SIMDE_FLOAT64_C( 60.00), SIMDE_FLOAT64_C( 4.00), SIMDE_FLOAT64_C( 193.00), SIMDE_FLOAT64_C( 157.00) } },
|
|
{ { INT64_C( 191), INT64_C( 201), INT64_C( 171), INT64_C( 123) },
|
|
{ SIMDE_FLOAT64_C( 191.00), SIMDE_FLOAT64_C( 201.00), SIMDE_FLOAT64_C( 171.00), SIMDE_FLOAT64_C( 123.00) } },
|
|
{ { INT64_C( 25), INT64_C( 82), INT64_C( 149), INT64_C( 61) },
|
|
{ SIMDE_FLOAT64_C( 25.00), SIMDE_FLOAT64_C( 82.00), SIMDE_FLOAT64_C( 149.00), SIMDE_FLOAT64_C( 61.00) } },
|
|
{ { INT64_C( 213), INT64_C( 24), INT64_C( 205), INT64_C( 61) },
|
|
{ SIMDE_FLOAT64_C( 213.00), SIMDE_FLOAT64_C( 24.00), SIMDE_FLOAT64_C( 205.00), SIMDE_FLOAT64_C( 61.00) } },
|
|
{ { INT64_C( 212), INT64_C( 90), INT64_C( 134), INT64_C( 96) },
|
|
{ SIMDE_FLOAT64_C( 212.00), SIMDE_FLOAT64_C( 90.00), SIMDE_FLOAT64_C( 134.00), SIMDE_FLOAT64_C( 96.00) } },
|
|
{ { INT64_C( 73), INT64_C( 18), INT64_C( 98), INT64_C( 201) },
|
|
{ SIMDE_FLOAT64_C( 73.00), SIMDE_FLOAT64_C( 18.00), SIMDE_FLOAT64_C( 98.00), SIMDE_FLOAT64_C( 201.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m256d r = simde_mm256_i64gather_pd(f64gather_buffer, vindex, 8);
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mask_i64gather_pd (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float64 src[4];
|
|
const int64_t vindex[4];
|
|
const simde_float64 mask[4];
|
|
const simde_float64 r[4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT64_C( -225.70), SIMDE_FLOAT64_C( -7.36), SIMDE_FLOAT64_C( 407.57), SIMDE_FLOAT64_C( 907.28) },
|
|
{ INT64_C( 44), INT64_C( 253), INT64_C( 186), INT64_C( 235) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -225.70), SIMDE_FLOAT64_C( 253.00), SIMDE_FLOAT64_C( 407.57), SIMDE_FLOAT64_C( 235.00) } },
|
|
{ { SIMDE_FLOAT64_C( -714.19), SIMDE_FLOAT64_C( 993.64), SIMDE_FLOAT64_C( -956.79), SIMDE_FLOAT64_C( 142.66) },
|
|
{ INT64_C( 117), INT64_C( 6), INT64_C( 107), INT64_C( 114) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -714.19), SIMDE_FLOAT64_C( 6.00), SIMDE_FLOAT64_C( -956.79), SIMDE_FLOAT64_C( 114.00) } },
|
|
{ { SIMDE_FLOAT64_C( 927.00), SIMDE_FLOAT64_C( 732.99), SIMDE_FLOAT64_C( -422.33), SIMDE_FLOAT64_C( 720.35) },
|
|
{ INT64_C( 41), INT64_C( 9), INT64_C( 229), INT64_C( 58) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 927.00), SIMDE_FLOAT64_C( 9.00), SIMDE_FLOAT64_C( -422.33), SIMDE_FLOAT64_C( 58.00) } },
|
|
{ { SIMDE_FLOAT64_C( -504.21), SIMDE_FLOAT64_C( -460.73), SIMDE_FLOAT64_C( 337.37), SIMDE_FLOAT64_C( -249.52) },
|
|
{ INT64_C( 86), INT64_C( 35), INT64_C( 77), INT64_C( 8) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -504.21), SIMDE_FLOAT64_C( 35.00), SIMDE_FLOAT64_C( 337.37), SIMDE_FLOAT64_C( 8.00) } },
|
|
{ { SIMDE_FLOAT64_C( -359.51), SIMDE_FLOAT64_C( 323.22), SIMDE_FLOAT64_C( -224.22), SIMDE_FLOAT64_C( 888.99) },
|
|
{ INT64_C( 88), INT64_C( 225), INT64_C( 40), INT64_C( 71) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -359.51), SIMDE_FLOAT64_C( 225.00), SIMDE_FLOAT64_C( -224.22), SIMDE_FLOAT64_C( 71.00) } },
|
|
{ { SIMDE_FLOAT64_C( -595.68), SIMDE_FLOAT64_C( 6.34), SIMDE_FLOAT64_C( 51.10), SIMDE_FLOAT64_C( 42.13) },
|
|
{ INT64_C( 61), INT64_C( 53), INT64_C( 127), INT64_C( 227) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -595.68), SIMDE_FLOAT64_C( 53.00), SIMDE_FLOAT64_C( 51.10), SIMDE_FLOAT64_C( 227.00) } },
|
|
{ { SIMDE_FLOAT64_C( 356.87), SIMDE_FLOAT64_C( 122.53), SIMDE_FLOAT64_C( -844.94), SIMDE_FLOAT64_C( 51.26) },
|
|
{ INT64_C( 71), INT64_C( 43), INT64_C( 173), INT64_C( 232) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( 356.87), SIMDE_FLOAT64_C( 43.00), SIMDE_FLOAT64_C( -844.94), SIMDE_FLOAT64_C( 232.00) } },
|
|
{ { SIMDE_FLOAT64_C( -545.64), SIMDE_FLOAT64_C( 253.09), SIMDE_FLOAT64_C( -327.77), SIMDE_FLOAT64_C( 486.99) },
|
|
{ INT64_C( 97), INT64_C( 231), INT64_C( 140), INT64_C( 243) },
|
|
{ SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-9223372036854775808.00) },
|
|
{ SIMDE_FLOAT64_C( -545.64), SIMDE_FLOAT64_C( 231.00), SIMDE_FLOAT64_C( -327.77), SIMDE_FLOAT64_C( 243.00) } }
|
|
};
|
|
for (size_t i = 0 ; i < (sizeof(f64gather_buffer) / sizeof(f64gather_buffer[0])) ; i++) { f64gather_buffer[i] = HEDLEY_STATIC_CAST(simde_float64, i); }
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256d src = simde_mm256_loadu_pd(test_vec[i].src);
|
|
simde__m256i vindex = simde_x_mm256_loadu_epi64(test_vec[i].vindex);
|
|
simde__m256d mask = simde_mm256_loadu_pd(test_vec[i].mask);
|
|
simde__m256d r = simde_mm256_mask_i64gather_pd(src, f64gather_buffer, vindex, mask, 8);
|
|
simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_inserti128_si256 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t b[4];
|
|
const int32_t ra[8];
|
|
const int32_t rb[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 21047385), -INT32_C( 230819693), -INT32_C( 2121983276), INT32_C( 325772553), -INT32_C( 910275464), INT32_C( 1357952964), INT32_C( 2017751920), INT32_C( 9626969) },
|
|
{ INT32_C( 1358909628), INT32_C( 474102856), INT32_C( 1604241494), INT32_C( 628230317) },
|
|
{ INT32_C( 1358909628), INT32_C( 474102856), INT32_C( 1604241494), INT32_C( 628230317), -INT32_C( 910275464), INT32_C( 1357952964), INT32_C( 2017751920), INT32_C( 9626969) },
|
|
{ -INT32_C( 21047385), -INT32_C( 230819693), -INT32_C( 2121983276), INT32_C( 325772553), INT32_C( 1358909628), INT32_C( 474102856), INT32_C( 1604241494), INT32_C( 628230317) } },
|
|
{ { INT32_C( 435106133), INT32_C( 1483333608), -INT32_C( 1412321710), INT32_C( 1353474963), -INT32_C( 73356365), INT32_C( 1041752807), INT32_C( 1486730666), INT32_C( 326963390) },
|
|
{ INT32_C( 690777153), -INT32_C( 1652451765), -INT32_C( 683060668), INT32_C( 1747449269) },
|
|
{ INT32_C( 690777153), -INT32_C( 1652451765), -INT32_C( 683060668), INT32_C( 1747449269), -INT32_C( 73356365), INT32_C( 1041752807), INT32_C( 1486730666), INT32_C( 326963390) },
|
|
{ INT32_C( 435106133), INT32_C( 1483333608), -INT32_C( 1412321710), INT32_C( 1353474963), INT32_C( 690777153), -INT32_C( 1652451765), -INT32_C( 683060668), INT32_C( 1747449269) } },
|
|
{ { -INT32_C( 2023503968), INT32_C( 1422228394), -INT32_C( 290692304), -INT32_C( 1274992013), -INT32_C( 488821098), INT32_C( 142565060), INT32_C( 1725941937), INT32_C( 1573849021) },
|
|
{ INT32_C( 2028286670), -INT32_C( 556946771), -INT32_C( 2134083315), INT32_C( 976539299) },
|
|
{ INT32_C( 2028286670), -INT32_C( 556946771), -INT32_C( 2134083315), INT32_C( 976539299), -INT32_C( 488821098), INT32_C( 142565060), INT32_C( 1725941937), INT32_C( 1573849021) },
|
|
{ -INT32_C( 2023503968), INT32_C( 1422228394), -INT32_C( 290692304), -INT32_C( 1274992013), INT32_C( 2028286670), -INT32_C( 556946771), -INT32_C( 2134083315), INT32_C( 976539299) } },
|
|
{ { -INT32_C( 1071902212), INT32_C( 566795120), INT32_C( 562538340), INT32_C( 2105497262), INT32_C( 922051721), INT32_C( 471122446), -INT32_C( 543366852), -INT32_C( 1424371281) },
|
|
{ INT32_C( 1382757858), INT32_C( 896742353), -INT32_C( 1990788134), -INT32_C( 637086383) },
|
|
{ INT32_C( 1382757858), INT32_C( 896742353), -INT32_C( 1990788134), -INT32_C( 637086383), INT32_C( 922051721), INT32_C( 471122446), -INT32_C( 543366852), -INT32_C( 1424371281) },
|
|
{ -INT32_C( 1071902212), INT32_C( 566795120), INT32_C( 562538340), INT32_C( 2105497262), INT32_C( 1382757858), INT32_C( 896742353), -INT32_C( 1990788134), -INT32_C( 637086383) } },
|
|
{ { INT32_C( 1209137977), -INT32_C( 94100034), -INT32_C( 1244069882), -INT32_C( 1268714543), -INT32_C( 116995288), -INT32_C( 651265282), -INT32_C( 966621835), -INT32_C( 1801361318) },
|
|
{ INT32_C( 568111715), -INT32_C( 568639273), INT32_C( 311686464), INT32_C( 281474280) },
|
|
{ INT32_C( 568111715), -INT32_C( 568639273), INT32_C( 311686464), INT32_C( 281474280), -INT32_C( 116995288), -INT32_C( 651265282), -INT32_C( 966621835), -INT32_C( 1801361318) },
|
|
{ INT32_C( 1209137977), -INT32_C( 94100034), -INT32_C( 1244069882), -INT32_C( 1268714543), INT32_C( 568111715), -INT32_C( 568639273), INT32_C( 311686464), INT32_C( 281474280) } },
|
|
{ { -INT32_C( 1106588481), -INT32_C( 1147717562), INT32_C( 411236797), -INT32_C( 995351711), -INT32_C( 1394177835), INT32_C( 143262152), -INT32_C( 568713482), -INT32_C( 772808686) },
|
|
{ -INT32_C( 208668243), -INT32_C( 273734095), -INT32_C( 2147012321), INT32_C( 692433748) },
|
|
{ -INT32_C( 208668243), -INT32_C( 273734095), -INT32_C( 2147012321), INT32_C( 692433748), -INT32_C( 1394177835), INT32_C( 143262152), -INT32_C( 568713482), -INT32_C( 772808686) },
|
|
{ -INT32_C( 1106588481), -INT32_C( 1147717562), INT32_C( 411236797), -INT32_C( 995351711), -INT32_C( 208668243), -INT32_C( 273734095), -INT32_C( 2147012321), INT32_C( 692433748) } },
|
|
{ { INT32_C( 64301883), INT32_C( 587948076), -INT32_C( 1878972802), -INT32_C( 1285427194), INT32_C( 463991273), INT32_C( 923424279), -INT32_C( 608759417), -INT32_C( 16450364) },
|
|
{ INT32_C( 1409472807), -INT32_C( 1216934599), INT32_C( 977762355), INT32_C( 1391307113) },
|
|
{ INT32_C( 1409472807), -INT32_C( 1216934599), INT32_C( 977762355), INT32_C( 1391307113), INT32_C( 463991273), INT32_C( 923424279), -INT32_C( 608759417), -INT32_C( 16450364) },
|
|
{ INT32_C( 64301883), INT32_C( 587948076), -INT32_C( 1878972802), -INT32_C( 1285427194), INT32_C( 1409472807), -INT32_C( 1216934599), INT32_C( 977762355), INT32_C( 1391307113) } },
|
|
{ { -INT32_C( 1318218598), INT32_C( 1911060458), INT32_C( 1280090248), -INT32_C( 1001697124), INT32_C( 1662537002), -INT32_C( 1910796453), INT32_C( 1892180487), -INT32_C( 1513900533) },
|
|
{ INT32_C( 894906442), INT32_C( 816201640), INT32_C( 2088629215), INT32_C( 1832962115) },
|
|
{ INT32_C( 894906442), INT32_C( 816201640), INT32_C( 2088629215), INT32_C( 1832962115), INT32_C( 1662537002), -INT32_C( 1910796453), INT32_C( 1892180487), -INT32_C( 1513900533) },
|
|
{ -INT32_C( 1318218598), INT32_C( 1911060458), INT32_C( 1280090248), -INT32_C( 1001697124), INT32_C( 894906442), INT32_C( 816201640), INT32_C( 2088629215), INT32_C( 1832962115) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m128i b = simde_x_mm_loadu_epi32(test_vec[i].b);
|
|
simde__m256i ra = simde_mm256_inserti128_si256(a, b, 0);
|
|
simde__m256i rb = simde_mm256_inserti128_si256(a, b, 1);
|
|
simde_test_x86_assert_equal_i32x8(ra, simde_x_mm256_loadu_epi32(test_vec[i].ra));
|
|
simde_test_x86_assert_equal_i32x8(rb, simde_x_mm256_loadu_epi32(test_vec[i].rb));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_madd_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-22074), INT16_C( 27892), INT16_C(-27402), INT16_C( -5185),
|
|
INT16_C(-13617), INT16_C( 6733), INT16_C( 31914), INT16_C( 16627),
|
|
INT16_C( 14296), INT16_C( 527), INT16_C(-18797), INT16_C( 25549),
|
|
INT16_C( 30759), INT16_C(-12360), INT16_C( 6414), INT16_C( 21507)),
|
|
simde_mm256_set_epi16(INT16_C( 13087), INT16_C( 552), INT16_C(-32388), INT16_C( 21398),
|
|
INT16_C( -2724), INT16_C( 12527), INT16_C( 4881), INT16_C( -1411),
|
|
INT16_C( 4971), INT16_C( -716), INT16_C(-15438), INT16_C( 22737),
|
|
INT16_C( 22649), INT16_C( 14157), INT16_C( 16131), INT16_C( 25742)),
|
|
simde_mm256_set_epi32(INT32_C( -273486054), INT32_C( 776547346), INT32_C( 121436999), INT32_C( 132311537),
|
|
INT32_C( 70688084), INT32_C( 871095699), INT32_C( 521680071), INT32_C( 657097428)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 31591), INT16_C( 27463), INT16_C(-11448), INT16_C( 12754),
|
|
INT16_C( 23360), INT16_C( 24732), INT16_C( 21501), INT16_C( 9477),
|
|
INT16_C(-29628), INT16_C( 15818), INT16_C( 22405), INT16_C(-17463),
|
|
INT16_C( -4252), INT16_C( 1744), INT16_C( 29107), INT16_C( -236)),
|
|
simde_mm256_set_epi16(INT16_C( 17376), INT16_C(-10713), INT16_C( 2486), INT16_C( 1967),
|
|
INT16_C( 3397), INT16_C( 25143), INT16_C( 11210), INT16_C( -8470),
|
|
INT16_C( -7431), INT16_C(-24781), INT16_C( 28646), INT16_C(-15461),
|
|
INT16_C( -7439), INT16_C(-17272), INT16_C(-12699), INT16_C( 15557)),
|
|
simde_mm256_set_epi32(INT32_C( 254714097), INT32_C( -3372610), INT32_C( 701190596), INT32_C( 160756020),
|
|
INT32_C( -171820190), INT32_C( 911809073), INT32_C( 1508260), INT32_C( -373301245)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-23018), INT16_C( 27443), INT16_C( -9704), INT16_C( 6815),
|
|
INT16_C(-10742), INT16_C(-15199), INT16_C(-25926), INT16_C( 11907),
|
|
INT16_C(-11173), INT16_C( -1296), INT16_C(-31401), INT16_C(-11984),
|
|
INT16_C( 29153), INT16_C( 26221), INT16_C( 23204), INT16_C( 24693)),
|
|
simde_mm256_set_epi16(INT16_C( 22883), INT16_C( -1430), INT16_C(-22444), INT16_C( -4173),
|
|
INT16_C( -9271), INT16_C(-22344), INT16_C(-19214), INT16_C(-15237),
|
|
INT16_C( 8913), INT16_C(-31636), INT16_C(-32308), INT16_C( 15943),
|
|
INT16_C( 4837), INT16_C( -6600), INT16_C(-14527), INT16_C(-29993)),
|
|
simde_mm256_set_epi32(INT32_C( -565964384), INT32_C( 189357581), INT32_C( 439195538), INT32_C( 316715205),
|
|
INT32_C( -58584693), INT32_C( 823442596), INT32_C( -32045539), INT32_C(-1077701657)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -2513), INT16_C( -1446), INT16_C( 20507), INT16_C(-25668),
|
|
INT16_C( 32595), INT16_C( 1090), INT16_C( 8204), INT16_C( 9120),
|
|
INT16_C( -8133), INT16_C( 31849), INT16_C(-18457), INT16_C(-12347),
|
|
INT16_C( 18795), INT16_C( -8246), INT16_C( 23278), INT16_C(-14987)),
|
|
simde_mm256_set_epi16(INT16_C( 12529), INT16_C(-11077), INT16_C( 5410), INT16_C(-23993),
|
|
INT16_C(-26377), INT16_C( -6112), INT16_C(-21857), INT16_C( 3969),
|
|
INT16_C( -2477), INT16_C(-13689), INT16_C( 21824), INT16_C( -644),
|
|
INT16_C( 10631), INT16_C(-12974), INT16_C(-28564), INT16_C( 32352)),
|
|
simde_mm256_set_epi32(INT32_C( -15468035), INT32_C( 726795194), INT32_C( -866420395), INT32_C( -143117548),
|
|
INT32_C( -415835520), INT32_C( -394854100), INT32_C( 306793249), INT32_C(-1149772216)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 7571), INT16_C( 21562), INT16_C( 24839), INT16_C( 27056),
|
|
INT16_C(-18448), INT16_C( 29209), INT16_C( 1880), INT16_C(-21767),
|
|
INT16_C( 26198), INT16_C(-31641), INT16_C( 3244), INT16_C(-13098),
|
|
INT16_C( -4443), INT16_C( -521), INT16_C(-27791), INT16_C(-13063)),
|
|
simde_mm256_set_epi16(INT16_C(-17648), INT16_C( 8337), INT16_C( -3551), INT16_C(-28013),
|
|
INT16_C(-17930), INT16_C( 577), INT16_C( 32382), INT16_C( 20122),
|
|
INT16_C(-14435), INT16_C(-21581), INT16_C(-32759), INT16_C( 2792),
|
|
INT16_C(-24268), INT16_C( 11663), INT16_C( -1946), INT16_C( 19139)),
|
|
simde_mm256_set_epi32(INT32_C( 46149386), INT32_C( -846123017), INT32_C( 347626233), INT32_C( -377117414),
|
|
INT32_C( 304676291), INT32_C( -142839812), INT32_C( 101746301), INT32_C( -195931471)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-11993), INT16_C( -3203), INT16_C( 15681), INT16_C(-18383),
|
|
INT16_C( 16847), INT16_C( 2437), INT16_C( -8441), INT16_C( 14338),
|
|
INT16_C( 7300), INT16_C(-21082), INT16_C(-17580), INT16_C( 1429),
|
|
INT16_C(-32388), INT16_C(-10418), INT16_C(-19218), INT16_C(-31595)),
|
|
simde_mm256_set_epi16(INT16_C(-24077), INT16_C(-32143), INT16_C( 18864), INT16_C( 11719),
|
|
INT16_C( -5555), INT16_C( -6220), INT16_C(-30370), INT16_C( 23594),
|
|
INT16_C( 29026), INT16_C( 10950), INT16_C( 31566), INT16_C(-28277),
|
|
INT16_C( 28777), INT16_C( 17653), INT16_C(-21542), INT16_C( 7263)),
|
|
simde_mm256_set_epi32(INT32_C( 391709490), INT32_C( 80376007), INT32_C( -108743225), INT32_C( 594643942),
|
|
INT32_C( -18958100), INT32_C( -595338113), INT32_C(-1115938430), INT32_C( 184519671)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-31708), INT16_C( -6736), INT16_C(-12543), INT16_C(-19831),
|
|
INT16_C( -5660), INT16_C(-20189), INT16_C( 31844), INT16_C( 20882),
|
|
INT16_C(-22159), INT16_C( -7550), INT16_C( 8622), INT16_C(-20427),
|
|
INT16_C(-19784), INT16_C( 4739), INT16_C( -9632), INT16_C( 3416)),
|
|
simde_mm256_set_epi16(INT16_C( 18684), INT16_C( 4347), INT16_C( 18074), INT16_C(-24539),
|
|
INT16_C( 14613), INT16_C(-28009), INT16_C( 18528), INT16_C(-16867),
|
|
INT16_C( 1794), INT16_C(-22885), INT16_C( 27546), INT16_C( 25964),
|
|
INT16_C( -3488), INT16_C(-31053), INT16_C( 6969), INT16_C(-12364)),
|
|
simde_mm256_set_epi32(INT32_C( -621713664), INT32_C( 259930727), INT32_C( 482764121), INT32_C( 237788938),
|
|
INT32_C( 133028504), INT32_C( -292865016), INT32_C( -78153575), INT32_C( -109360832)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 32611), INT16_C(-26810), INT16_C( 32585), INT16_C( 6944),
|
|
INT16_C( 26033), INT16_C( 2406), INT16_C(-32105), INT16_C(-11091),
|
|
INT16_C(-32475), INT16_C(-29532), INT16_C( 13591), INT16_C(-15433),
|
|
INT16_C( 29089), INT16_C(-24035), INT16_C( 15832), INT16_C(-10008)),
|
|
simde_mm256_set_epi16(INT16_C( 16370), INT16_C( -9733), INT16_C( -7456), INT16_C( -2346),
|
|
INT16_C( -1285), INT16_C( -5955), INT16_C(-24955), INT16_C( -4486),
|
|
INT16_C( 4170), INT16_C(-17666), INT16_C( 7986), INT16_C( 19848),
|
|
INT16_C(-13940), INT16_C( 24511), INT16_C( 18142), INT16_C(-26201)),
|
|
simde_mm256_set_epi32(INT32_C( 794783800), INT32_C( -259244384), INT32_C( -47780135), INT32_C( 850934501),
|
|
INT32_C( 386291562), INT32_C( -197776458), INT32_C( -994622545), INT32_C( 549443752)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_madd_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_maddubs_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const uint8_t a[32];
|
|
const int8_t b[32];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { UINT8_C(109), UINT8_C(252), UINT8_C( 25), UINT8_C(124), UINT8_C(145), UINT8_C(132), UINT8_C( 41), UINT8_C(134),
|
|
UINT8_C( 24), UINT8_C( 84), UINT8_C(233), UINT8_C(164), UINT8_C(189), UINT8_C( 12), UINT8_C(171), UINT8_C( 39),
|
|
UINT8_C(233), UINT8_C(115), UINT8_C(157), UINT8_C(228), UINT8_C(143), UINT8_C(175), UINT8_C(252), UINT8_C( 18),
|
|
UINT8_C(160), UINT8_C( 8), UINT8_C(174), UINT8_C(181), UINT8_C(235), UINT8_C( 97), UINT8_C(108), UINT8_C( 88) },
|
|
{ INT8_C( 94), -INT8_C( 123), -INT8_C( 44), -INT8_C( 17), INT8_C( 10), -INT8_C( 3), INT8_C( 117), INT8_C( 34),
|
|
INT8_C( 81), INT8_C( 94), -INT8_C( 58), INT8_C( 15), INT8_C( 107), INT8_C( 113), INT8_C( 54), INT8_C( 84),
|
|
-INT8_C( 27), -INT8_C( 44), INT8_C( 56), INT8_C( 116), -INT8_C( 125), INT8_C( 52), -INT8_C( 122), INT8_C( 36),
|
|
INT8_C( 60), INT8_C( 53), -INT8_C( 39), INT8_C( 39), -INT8_C( 106), INT8_C( 70), INT8_MAX, -INT8_C( 12) },
|
|
{ -INT16_C( 20750), -INT16_C( 3208), INT16_C( 1054), INT16_C( 9353), INT16_C( 9840), -INT16_C( 11054), INT16_C( 21579), INT16_C( 12510),
|
|
-INT16_C( 11351), INT16_MAX, -INT16_C( 8775), -INT16_C( 30096), INT16_C( 10024), INT16_C( 273), -INT16_C( 18120), INT16_C( 12660) } },
|
|
{ { UINT8_C(203), UINT8_C( 83), UINT8_C(228), UINT8_C(213), UINT8_C( 80), UINT8_C( 89), UINT8_C(247), UINT8_C(162),
|
|
UINT8_C(184), UINT8_C(190), UINT8_C(177), UINT8_C( 35), UINT8_C( 47), UINT8_C(231), UINT8_C(119), UINT8_C( 20),
|
|
UINT8_C(187), UINT8_C(176), UINT8_C(137), UINT8_C( 63), UINT8_C(228), UINT8_C( 15), UINT8_C( 99), UINT8_C( 33),
|
|
UINT8_C( 68), UINT8_C( 60), UINT8_C( 72), UINT8_C(219), UINT8_C(130), UINT8_C(200), UINT8_C(207), UINT8_C( 78) },
|
|
{ INT8_C( 27), -INT8_C( 77), INT8_C( 35), INT8_C( 108), INT8_C( 13), INT8_C( 27), INT8_C( 14), -INT8_C( 59),
|
|
-INT8_C( 39), -INT8_C( 65), -INT8_C( 24), INT8_C( 8), -INT8_C( 90), INT8_C( 95), INT8_C( 29), INT8_C( 98),
|
|
INT8_C( 15), -INT8_C( 90), -INT8_C( 95), -INT8_C( 12), -INT8_C( 75), INT8_C( 4), INT8_C( 21), -INT8_C( 6),
|
|
INT8_C( 64), INT8_C( 93), -INT8_C( 43), -INT8_C( 61), INT8_C( 37), -INT8_C( 92), INT8_C( 17), INT8_C( 65) },
|
|
{ -INT16_C( 910), INT16_C( 30984), INT16_C( 3443), -INT16_C( 6100), -INT16_C( 19526), -INT16_C( 3968), INT16_C( 17715), INT16_C( 5411),
|
|
-INT16_C( 13035), -INT16_C( 13771), -INT16_C( 17040), INT16_C( 1881), INT16_C( 9932), -INT16_C( 16455), -INT16_C( 13590), INT16_C( 8589) } },
|
|
{ { UINT8_C( 88), UINT8_C( 52), UINT8_C(173), UINT8_C(101), UINT8_C( 79), UINT8_C(187), UINT8_C( 42), UINT8_C( 40),
|
|
UINT8_C(122), UINT8_C( 18), UINT8_C( 49), UINT8_C( 32), UINT8_C(113), UINT8_C( 78), UINT8_C(130), UINT8_C(129),
|
|
UINT8_C(244), UINT8_C( 35), UINT8_C(117), UINT8_C(169), UINT8_C( 39), UINT8_C(138), UINT8_C(163), UINT8_C(104),
|
|
UINT8_C(231), UINT8_C(120), UINT8_C( 43), UINT8_C( 13), UINT8_C( 29), UINT8_C( 60), UINT8_C( 78), UINT8_C(117) },
|
|
{ INT8_C( 112), -INT8_C( 5), -INT8_C( 38), -INT8_C( 64), -INT8_C( 74), INT8_C( 4), -INT8_C( 24), INT8_C( 48),
|
|
INT8_C( 22), INT8_C( 25), INT8_C( 80), -INT8_C( 121), INT8_C( 103), -INT8_C( 45), INT8_C( 8), INT8_C( 91),
|
|
-INT8_C( 10), INT8_C( 125), INT8_C( 5), INT8_C( 30), INT8_C( 7), -INT8_C( 88), -INT8_C( 122), -INT8_C( 17),
|
|
INT8_C( 33), -INT8_C( 79), -INT8_C( 4), INT8_C( 62), -INT8_C( 19), INT8_C( 74), -INT8_C( 77), INT8_C( 93) },
|
|
{ INT16_C( 9596), -INT16_C( 13038), -INT16_C( 5098), INT16_C( 912), INT16_C( 3134), INT16_C( 48), INT16_C( 8129), INT16_C( 12779),
|
|
INT16_C( 1935), INT16_C( 5655), -INT16_C( 11871), -INT16_C( 21654), -INT16_C( 1857), INT16_C( 634), INT16_C( 3889), INT16_C( 4875) } },
|
|
{ { UINT8_C( 69), UINT8_C(141), UINT8_C( 29), UINT8_C(251), UINT8_C(145), UINT8_C( 6), UINT8_C( 43), UINT8_C(167),
|
|
UINT8_C( 31), UINT8_C(123), UINT8_C( 46), UINT8_C(135), UINT8_C( 78), UINT8_C( 55), UINT8_C(226), UINT8_C( 69),
|
|
UINT8_C(180), UINT8_C(231), UINT8_C( 99), UINT8_C(188), UINT8_C(144), UINT8_C(233), UINT8_C(171), UINT8_C(177),
|
|
UINT8_C(154), UINT8_C(167), UINT8_C(239), UINT8_C(135), UINT8_C(241), UINT8_C(162), UINT8_C(228), UINT8_C( 54) },
|
|
{ INT8_C( 47), INT8_C( 2), INT8_C( 49), -INT8_C( 64), INT8_C( 8), INT8_C( 92), INT8_C( 103), INT8_C( 39),
|
|
-INT8_C( 41), -INT8_C( 107), -INT8_C( 82), INT8_C( 38), -INT8_C( 52), -INT8_C( 111), INT8_C( 107), -INT8_C( 127),
|
|
INT8_C( 120), -INT8_C( 50), INT8_C( 61), INT8_C( 8), -INT8_C( 73), -INT8_C( 24), -INT8_C( 71), INT8_C( 81),
|
|
-INT8_C( 113), -INT8_C( 88), -INT8_C( 40), INT8_MIN, INT8_C( 74), -INT8_C( 68), -INT8_C( 74), INT8_C( 121) },
|
|
{ INT16_C( 3525), -INT16_C( 14643), INT16_C( 1712), INT16_C( 10942), -INT16_C( 14432), INT16_C( 1358), -INT16_C( 10161), INT16_C( 15419),
|
|
INT16_C( 10050), INT16_C( 7543), -INT16_C( 16104), INT16_C( 2196), -INT16_C( 32098), -INT16_C( 26840), INT16_C( 6818), -INT16_C( 10338) } },
|
|
{ { UINT8_C(190), UINT8_C(231), UINT8_C( 57), UINT8_C(198), UINT8_C( 67), UINT8_C(160), UINT8_C(238), UINT8_C( 26),
|
|
UINT8_C( 54), UINT8_C(156), UINT8_C( 64), UINT8_C( 2), UINT8_C( 45), UINT8_C(171), UINT8_C(131), UINT8_C(166),
|
|
UINT8_C(121), UINT8_C(192), UINT8_C(174), UINT8_C( 48), UINT8_C(168), UINT8_C(104), UINT8_C(129), UINT8_C( 55),
|
|
UINT8_C( 16), UINT8_C( 89), UINT8_C(183), UINT8_C( 91), UINT8_C( 22), UINT8_C(109), UINT8_C(212), UINT8_C(212) },
|
|
{ INT8_C( 84), INT8_C( 14), -INT8_C( 101), -INT8_C( 105), -INT8_C( 82), -INT8_C( 119), -INT8_C( 78), -INT8_C( 28),
|
|
INT8_C( 37), -INT8_C( 14), -INT8_C( 25), INT8_C( 83), -INT8_C( 98), INT8_C( 106), -INT8_C( 7), INT8_C( 23),
|
|
INT8_C( 43), -INT8_C( 89), INT8_C( 72), -INT8_C( 45), INT8_C( 15), -INT8_C( 55), INT8_C( 11), INT8_C( 32),
|
|
INT8_C( 35), -INT8_C( 62), INT8_C( 123), INT8_C( 57), INT8_C( 48), INT8_C( 79), INT8_C( 13), -INT8_C( 124) },
|
|
{ INT16_C( 19194), -INT16_C( 26547), -INT16_C( 24534), -INT16_C( 19292), -INT16_C( 186), -INT16_C( 1434), INT16_C( 13716), INT16_C( 2901),
|
|
-INT16_C( 11885), INT16_C( 10368), -INT16_C( 3200), INT16_C( 3179), -INT16_C( 4958), INT16_C( 27696), INT16_C( 9667), -INT16_C( 23532) } },
|
|
{ { UINT8_C( 93), UINT8_C(168), UINT8_C( 28), UINT8_C( 12), UINT8_C( 49), UINT8_C(206), UINT8_C(240), UINT8_C( 87),
|
|
UINT8_C(192), UINT8_C(215), UINT8_C(170), UINT8_C( 94), UINT8_C( 66), UINT8_C(163), UINT8_C(118), UINT8_C(109),
|
|
UINT8_C( 74), UINT8_C(190), UINT8_C( 64), UINT8_C( 90), UINT8_C(135), UINT8_C( 75), UINT8_C(122), UINT8_C(170),
|
|
UINT8_C( 14), UINT8_C(245), UINT8_C(227), UINT8_C( 62), UINT8_C( 68), UINT8_C(241), UINT8_C(194), UINT8_C(162) },
|
|
{ -INT8_C( 103), -INT8_C( 34), -INT8_C( 82), -INT8_C( 53), -INT8_C( 84), -INT8_C( 98), INT8_C( 34), INT8_C( 109),
|
|
INT8_C( 118), -INT8_C( 52), -INT8_C( 53), -INT8_C( 72), INT8_C( 111), INT8_C( 65), INT8_C( 37), -INT8_C( 71),
|
|
-INT8_C( 1), INT8_C( 101), INT8_C( 19), -INT8_C( 121), -INT8_C( 79), -INT8_C( 115), INT8_C( 49), -INT8_C( 65),
|
|
-INT8_C( 126), INT8_C( 21), -INT8_C( 3), -INT8_C( 57), INT8_C( 6), -INT8_C( 65), INT8_C( 105), -INT8_C( 97) },
|
|
{ -INT16_C( 15291), -INT16_C( 2932), -INT16_C( 24304), INT16_C( 17643), INT16_C( 11476), -INT16_C( 15778), INT16_C( 17921), -INT16_C( 3373),
|
|
INT16_C( 19116), -INT16_C( 9674), -INT16_C( 19290), -INT16_C( 5072), INT16_C( 3381), -INT16_C( 4215), -INT16_C( 15257), INT16_C( 4656) } },
|
|
{ { UINT8_C(158), UINT8_C( 23), UINT8_C(106), UINT8_C( 74), UINT8_C(181), UINT8_C(140), UINT8_C(183), UINT8_C( 43),
|
|
UINT8_C( 88), UINT8_C(131), UINT8_C(227), UINT8_C(199), UINT8_C(196), UINT8_C( 8), UINT8_C(129), UINT8_C(196),
|
|
UINT8_C(110), UINT8_C(148), UINT8_C( 75), UINT8_C( 31), UINT8_C( 34), UINT8_C(124), UINT8_C(222), UINT8_C(164),
|
|
UINT8_C(145), UINT8_C(219), UINT8_C(107), UINT8_C(151), UINT8_C(154), UINT8_C(212), UINT8_C( 55), UINT8_C( 56) },
|
|
{ -INT8_C( 21), -INT8_C( 95), -INT8_C( 125), -INT8_C( 95), INT8_C( 46), INT8_C( 58), -INT8_C( 52), -INT8_C( 122),
|
|
-INT8_C( 67), -INT8_C( 80), INT8_C( 78), -INT8_C( 126), -INT8_C( 72), -INT8_C( 49), INT8_C( 70), INT8_C( 38),
|
|
INT8_C( 99), -INT8_C( 111), INT8_C( 69), -INT8_C( 123), INT8_C( 13), INT8_C( 35), INT8_C( 42), -INT8_C( 97),
|
|
-INT8_C( 2), -INT8_C( 107), INT8_C( 54), -INT8_C( 103), INT8_C( 106), INT8_C( 109), -INT8_C( 47), INT8_C( 85) },
|
|
{ -INT16_C( 5503), -INT16_C( 20280), INT16_C( 16446), -INT16_C( 14762), -INT16_C( 16376), -INT16_C( 7368), -INT16_C( 14504), INT16_C( 16478),
|
|
-INT16_C( 5538), INT16_C( 1362), INT16_C( 4782), -INT16_C( 6584), -INT16_C( 23723), -INT16_C( 9775), INT16_MAX, INT16_C( 2175) } },
|
|
{ { UINT8_C( 15), UINT8_C( 84), UINT8_C(246), UINT8_C( 61), UINT8_C(143), UINT8_C(195), UINT8_C(195), UINT8_C( 76),
|
|
UINT8_C(115), UINT8_C( 17), UINT8_C(206), UINT8_C( 43), UINT8_C(224), UINT8_C( 20), UINT8_C( 82), UINT8_C( 68),
|
|
UINT8_C(165), UINT8_C(151), UINT8_C(201), UINT8_C(179), UINT8_C(187), UINT8_C(243), UINT8_C( 82), UINT8_C(185),
|
|
UINT8_C(137), UINT8_C(136), UINT8_C( 82), UINT8_C(243), UINT8_C(246), UINT8_C( 36), UINT8_C( 72), UINT8_C( 5) },
|
|
{ INT8_C( 120), INT8_C( 63), INT8_C( 66), INT8_C( 7), INT8_C( 2), INT8_C( 5), INT8_C( 84), INT8_C( 117),
|
|
INT8_C( 23), INT8_C( 34), -INT8_C( 96), -INT8_C( 9), INT8_C( 55), -INT8_C( 14), INT8_C( 59), -INT8_C( 36),
|
|
-INT8_C( 118), INT8_C( 5), -INT8_C( 113), INT8_C( 69), -INT8_C( 8), -INT8_C( 31), -INT8_C( 2), -INT8_C( 127),
|
|
INT8_C( 106), INT8_C( 81), INT8_C( 116), INT8_C( 96), INT8_C( 117), -INT8_C( 67), INT8_C( 101), -INT8_C( 19) },
|
|
{ INT16_C( 7092), INT16_C( 16663), INT16_C( 1261), INT16_C( 25272), INT16_C( 3223), -INT16_C( 20163), INT16_C( 12040), INT16_C( 2390),
|
|
-INT16_C( 18715), -INT16_C( 10362), -INT16_C( 9029), -INT16_C( 23659), INT16_C( 25538), INT16_MAX, INT16_C( 26370), INT16_C( 7177) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_maddubs_epi16(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_maskload_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[4];
|
|
const int32_t b[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 534968926), INT32_C( 77452639), -INT32_C( 2020739113), -INT32_C( 154957017) },
|
|
{ INT32_C( 730249678), -INT32_C( 1555222833), INT32_C( 1430166726), INT32_C( 515979712) },
|
|
{ INT32_C( 0), INT32_C( 77452639), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 1824611532), INT32_C( 1335417720), -INT32_C( 103406126), INT32_C( 2129697456) },
|
|
{ INT32_C( 581531219), INT32_C( 1808201381), INT32_C( 1405158547), INT32_C( 1920107070) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 1643794395), INT32_C( 1575853451), INT32_C( 1918289090), -INT32_C( 1309653410) },
|
|
{ INT32_C( 1658034877), INT32_C( 600676752), -INT32_C( 596144482), INT32_C( 911141136) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 1918289090), INT32_C( 0) } },
|
|
{ { INT32_C( 617894809), -INT32_C( 1283341839), -INT32_C( 483993723), -INT32_C( 611052002) },
|
|
{ INT32_C( 1094543536), -INT32_C( 1620833791), -INT32_C( 1451500647), INT32_C( 1574947268) },
|
|
{ INT32_C( 0), -INT32_C( 1283341839), -INT32_C( 483993723), INT32_C( 0) } },
|
|
{ { INT32_C( 243381021), -INT32_C( 88014219), -INT32_C( 119609382), -INT32_C( 1361874178) },
|
|
{ -INT32_C( 588312358), -INT32_C( 1283763174), -INT32_C( 195168465), -INT32_C( 581878592) },
|
|
{ INT32_C( 243381021), -INT32_C( 88014219), -INT32_C( 119609382), -INT32_C( 1361874178) } },
|
|
{ { INT32_C( 1709954032), -INT32_C( 1352684075), -INT32_C( 1834533484), -INT32_C( 1975420240) },
|
|
{ -INT32_C( 1520029558), -INT32_C( 1269243260), -INT32_C( 1716996647), -INT32_C( 495453710) },
|
|
{ INT32_C( 1709954032), -INT32_C( 1352684075), -INT32_C( 1834533484), -INT32_C( 1975420240) } },
|
|
{ { -INT32_C( 1572379956), -INT32_C( 1538152945), -INT32_C( 1808336412), -INT32_C( 31557773) },
|
|
{ INT32_C( 748914088), INT32_C( 1088486247), -INT32_C( 1546024783), INT32_C( 1317359746) },
|
|
{ INT32_C( 0), INT32_C( 0), -INT32_C( 1808336412), INT32_C( 0) } },
|
|
{ { -INT32_C( 1024406349), INT32_C( 1449542258), -INT32_C( 1360356037), -INT32_C( 1129576172) },
|
|
{ -INT32_C( 169259122), -INT32_C( 63583925), -INT32_C( 727773614), INT32_C( 304227423) },
|
|
{ -INT32_C( 1024406349), INT32_C( 1449542258), -INT32_C( 1360356037), INT32_C( 0) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i b = simde_x_mm_loadu_epi32(test_vec[i].b);
|
|
simde__m128i r = simde_mm_maskload_epi32(test_vec[i].a, b);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#if !defined(HEDLEY_MSVC_VERSION)
|
|
static int
|
|
test_simde_mm_maskload_epi32_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
|
|
// ref: https://github.com/simd-everywhere/simde/issues/998
|
|
// make sure maskload never accesses memory for masked out regions
|
|
// will segfault in case memory is accessed
|
|
#if defined(_GNU_SOURCE)
|
|
int32_t *ptr = HEDLEY_STATIC_CAST(int32_t *, mmap(NULL, 4 * sizeof(int32_t), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
|
#else
|
|
int32_t *ptr = HEDLEY_STATIC_CAST(int32_t *, mmap(NULL, 4 * sizeof(int32_t), PROT_NONE , MAP_PRIVATE, -1, 0));
|
|
#endif
|
|
const simde__m128i mask = simde_mm_set_epi32(0, 0, 0, 0);
|
|
simde__m128i test = simde_mm_maskload_epi32(ptr, mask);
|
|
int32_t r[4] = { INT32_C(0), INT32_C(0), INT32_C(0), INT32_C(0) };
|
|
simde_test_x86_assert_equal_i32x4(test, simde_mm_loadu_epi32(r));
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
static int
|
|
test_simde_mm256_maskload_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t b[8];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 678062514), INT32_C( 351869071), INT32_C( 2136335632), -INT32_C( 212796243), INT32_C( 1333699519), -INT32_C( 1581125468), INT32_C( 304063629), INT32_C( 630727383) },
|
|
{ INT32_C( 1207709368), INT32_C( 1448932678), -INT32_C( 1999261221), INT32_C( 1836852910), INT32_C( 1841167049), INT32_C( 1997438698), -INT32_C( 108450526), INT32_C( 119415375) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 2136335632), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 304063629), INT32_C( 0) } },
|
|
{ { -INT32_C( 1773266096), -INT32_C( 336811504), INT32_C( 175423836), -INT32_C( 1334316825), -INT32_C( 719506198), -INT32_C( 716428366), -INT32_C( 1479616936), INT32_C( 1219423736) },
|
|
{ INT32_C( 417266952), INT32_C( 50645671), INT32_C( 1930262667), INT32_C( 1378059624), INT32_C( 1814512057), -INT32_C( 985566100), INT32_C( 1114378058), INT32_C( 76159996) },
|
|
{ INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 716428366), INT32_C( 0), INT32_C( 0) } },
|
|
{ { -INT32_C( 1088591848), -INT32_C( 1111285454), INT32_C( 19976345), INT32_C( 257119317), INT32_C( 24869781), INT32_C( 969325807), -INT32_C( 931449909), INT32_C( 1724646734) },
|
|
{ -INT32_C( 1624905363), -INT32_C( 1554192374), INT32_C( 245665209), INT32_C( 1981675745), INT32_C( 1652004979), INT32_C( 547044948), -INT32_C( 1075308943), -INT32_C( 2010794981) },
|
|
{ -INT32_C( 1088591848), -INT32_C( 1111285454), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 931449909), INT32_C( 1724646734) } },
|
|
{ { -INT32_C( 1473820002), -INT32_C( 330529997), -INT32_C( 235212784), INT32_C( 1533483240), INT32_C( 96329648), -INT32_C( 1910155235), -INT32_C( 1991438994), INT32_C( 1594979009) },
|
|
{ -INT32_C( 284673860), -INT32_C( 858041156), INT32_C( 767481412), -INT32_C( 1635244562), INT32_C( 564348420), INT32_C( 229623966), -INT32_C( 1751712555), INT32_C( 737585262) },
|
|
{ -INT32_C( 1473820002), -INT32_C( 330529997), INT32_C( 0), INT32_C( 1533483240), INT32_C( 0), INT32_C( 0), -INT32_C( 1991438994), INT32_C( 0) } },
|
|
{ { -INT32_C( 1675952416), -INT32_C( 1754663342), -INT32_C( 1161549876), INT32_C( 1364741196), INT32_C( 829619346), -INT32_C( 1707203900), -INT32_C( 1926114274), INT32_C( 1572349820) },
|
|
{ INT32_C( 2029638182), -INT32_C( 1810931000), -INT32_C( 699477111), -INT32_C( 1306024160), INT32_C( 1742969251), -INT32_C( 637460037), INT32_C( 1919365878), -INT32_C( 2133909670) },
|
|
{ INT32_C( 0), -INT32_C( 1754663342), -INT32_C( 1161549876), INT32_C( 1364741196), INT32_C( 0), -INT32_C( 1707203900), INT32_C( 0), INT32_C( 1572349820) } },
|
|
{ { -INT32_C( 1158100495), -INT32_C( 1253177301), -INT32_C( 74736165), -INT32_C( 407981500), INT32_C( 122589515), -INT32_C( 1444851533), -INT32_C( 602191742), INT32_C( 1482484583) },
|
|
{ -INT32_C( 552446540), INT32_C( 949248349), INT32_C( 1110712318), INT32_C( 489284305), INT32_C( 639924083), INT32_C( 1255081415), -INT32_C( 1272517811), -INT32_C( 1978891306) },
|
|
{ -INT32_C( 1158100495), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0), -INT32_C( 602191742), INT32_C( 1482484583) } },
|
|
{ { INT32_C( 896081880), INT32_C( 2121137792), -INT32_C( 272588515), -INT32_C( 150148733), INT32_C( 673001568), -INT32_C( 2106397387), -INT32_C( 1372153640), -INT32_C( 214416869) },
|
|
{ -INT32_C( 517430943), -INT32_C( 1117808993), -INT32_C( 1146347721), INT32_C( 1773320200), INT32_C( 496095208), -INT32_C( 1801518148), -INT32_C( 1220356709), INT32_C( 2041215511) },
|
|
{ INT32_C( 896081880), INT32_C( 2121137792), -INT32_C( 272588515), INT32_C( 0), INT32_C( 0), -INT32_C( 2106397387), -INT32_C( 1372153640), INT32_C( 0) } },
|
|
{ { -INT32_C( 1151675620), -INT32_C( 1602700695), -INT32_C( 497343271), -INT32_C( 1001714212), -INT32_C( 1713251107), INT32_C( 2049867999), INT32_C( 1831956565), INT32_C( 132570347) },
|
|
{ INT32_C( 415383727), -INT32_C( 726123526), INT32_C( 1018565727), -INT32_C( 33554143), -INT32_C( 1130831139), -INT32_C( 1204369822), INT32_C( 556099638), -INT32_C( 215479484) },
|
|
{ INT32_C( 0), -INT32_C( 1602700695), INT32_C( 0), -INT32_C( 1001714212), -INT32_C( 1713251107), INT32_C( 2049867999), INT32_C( 0), INT32_C( 132570347) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_maskload_epi32(test_vec[i].a, b);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#if !defined(HEDLEY_MSVC_VERSION)
|
|
static int
|
|
test_simde_mm256_maskload_epi32_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
|
|
// ref: https://github.com/simd-everywhere/simde/issues/998
|
|
// make sure maskload never accesses memory for masked out regions
|
|
// will segfault in case memory is accessed
|
|
#if defined(_GNU_SOURCE)
|
|
int32_t *ptr = HEDLEY_STATIC_CAST(int32_t *, mmap(NULL, 8 * sizeof(int32_t), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
|
#else
|
|
int32_t *ptr = HEDLEY_STATIC_CAST(int32_t *, mmap(NULL, 8 * sizeof(int32_t), PROT_NONE , MAP_PRIVATE, -1, 0));
|
|
#endif
|
|
const simde__m256i mask = simde_mm256_set_epi32(0, 0, 0, 0, 0, 0, 0, 0);
|
|
simde__m256i test = simde_mm256_maskload_epi32(ptr, mask);
|
|
int32_t r[8] = { INT32_C(0), INT32_C(0), INT32_C(0), INT32_C(0),
|
|
INT32_C(0), INT32_C(0), INT32_C(0), INT32_C(0)};
|
|
simde_test_x86_assert_equal_i32x8(test, simde_mm256_loadu_epi32(r));
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
static int
|
|
test_simde_mm_maskload_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t a[2];
|
|
const int64_t b[2];
|
|
const int64_t r[2];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 7349151601351223182), INT64_C( 2152075836815026901) },
|
|
{ -INT64_C( 3451509024372858266), INT64_C( 7639172437864636040) },
|
|
{ INT64_C( 7349151601351223182), INT64_C( 0) } },
|
|
{ { INT64_C( 5694817644399627057), INT64_C( 3631998945759467448) },
|
|
{ -INT64_C( 1550766173522912299), INT64_C( 6212325517381229296) },
|
|
{ INT64_C( 5694817644399627057), INT64_C( 0) } },
|
|
{ { INT64_C( 1040332979076417448), INT64_C( 5698954012533458456) },
|
|
{ INT64_C( 1415945725891154011), -INT64_C( 8842793825335295795) },
|
|
{ INT64_C( 0), INT64_C( 5698954012533458456) } },
|
|
{ { INT64_C( 6538970759181058396), INT64_C( 3740051304798361630) },
|
|
{ INT64_C( 2385384236005712100), INT64_C( 7654249160401746390) },
|
|
{ INT64_C( 0), INT64_C( 0) } },
|
|
{ { INT64_C( 1601271529454952604), -INT64_C( 5765005774754515213) },
|
|
{ INT64_C( 6551277872407309686), -INT64_C( 846316808078164535) },
|
|
{ INT64_C( 0), -INT64_C( 5765005774754515213) } },
|
|
{ { INT64_C( 3041629830225484840), -INT64_C( 1154342652176112512) },
|
|
{ INT64_C( 5313864382184796385), INT64_C( 4390553429439728801) },
|
|
{ INT64_C( 0), INT64_C( 0) } },
|
|
{ { INT64_C( 5413206681815138493), -INT64_C( 1594397375012137610) },
|
|
{ -INT64_C( 2591526659806029760), INT64_C( 5199903345750714841) },
|
|
{ INT64_C( 5413206681815138493), INT64_C( 0) } },
|
|
{ { -INT64_C( 8242893437788125820), INT64_C( 172082101606953329) },
|
|
{ -INT64_C( 7562726032021409293), INT64_C( 3082904871272505846) },
|
|
{ -INT64_C( 8242893437788125820), INT64_C( 0) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i b = simde_x_mm_loadu_epi64(test_vec[i].b);
|
|
simde__m128i r;
|
|
#if defined(SIMDE_X86_AVX2_NATIVE) && defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
r = simde_mm_maskload_epi64(HEDLEY_REINTERPRET_CAST(const long long *, test_vec[i].a), b);
|
|
#else
|
|
r = simde_mm_maskload_epi64(test_vec[i].a, b);
|
|
#endif
|
|
simde_test_x86_assert_equal_i64x2(r, simde_x_mm_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#if !defined(HEDLEY_MSVC_VERSION)
|
|
static int
|
|
test_simde_mm_maskload_epi64_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
|
|
// ref: https://github.com/simd-everywhere/simde/issues/998
|
|
// make sure maskload never accesses memory for masked out regions
|
|
// will segfault in case memory is accessed
|
|
#if defined(_GNU_SOURCE)
|
|
int64_t *ptr = HEDLEY_STATIC_CAST(int64_t *, mmap(NULL, 2 * sizeof(int64_t), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
|
#else
|
|
int64_t *ptr = HEDLEY_STATIC_CAST(int64_t *, mmap(NULL, 2 * sizeof(int64_t), PROT_NONE , MAP_PRIVATE, -1, 0));
|
|
#endif
|
|
const simde__m128i mask = simde_mm_set_epi64x(INT64_C(0), INT64_C(0));
|
|
simde__m128i test;
|
|
int64_t r[2] = { INT64_C(0), INT64_C(0) };
|
|
#if defined(SIMDE_X86_AVX2_NATIVE) && defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
test = simde_mm_maskload_epi64(HEDLEY_REINTERPRET_CAST(const long long *, ptr), mask);
|
|
#else
|
|
test = simde_mm_maskload_epi64(ptr, mask);
|
|
#endif
|
|
simde_test_x86_assert_equal_i64x2(test, simde_x_mm_loadu_epi64(r));
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
static int
|
|
test_simde_mm256_maskload_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t a[4];
|
|
const int64_t b[4];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { -INT64_C( 1070553612364617574), -INT64_C( 114323686149473380), -INT64_C( 3053698850669963787), -INT64_C( 5793007821577797203) },
|
|
{ -INT64_C( 2874087956492281342), -INT64_C( 8133550842580450581), -INT64_C( 5976205236281087193), -INT64_C( 520589115781817598) },
|
|
{ -INT64_C( 1070553612364617574), -INT64_C( 114323686149473380), -INT64_C( 3053698850669963787), -INT64_C( 5793007821577797203) } },
|
|
{ { -INT64_C( 1284580311155027432), -INT64_C( 8201847224291781372), INT64_C( 1425908320736694043), INT64_C( 4873440337809026227) },
|
|
{ INT64_C( 771455870039475650), INT64_C( 1030716232118617176), -INT64_C( 6788626756700334683), -INT64_C( 6553603994163678305) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_C( 1425908320736694043), INT64_C( 4873440337809026227) } },
|
|
{ { -INT64_C( 4701442009973677136), -INT64_C( 1880874889532052765), -INT64_C( 6814117747969290272), INT64_C( 6260135033578371671) },
|
|
{ INT64_C( 5566394621280209690), INT64_C( 7448400211646594360), -INT64_C( 5351783383607936745), -INT64_C( 5306699842386385569) },
|
|
{ INT64_C( 0), INT64_C( 0), -INT64_C( 6814117747969290272), INT64_C( 6260135033578371671) } },
|
|
{ { INT64_C( 7985576165328250651), INT64_C( 1523138059357910324), INT64_C( 6652636875035990078), INT64_C( 3270100493289996814) },
|
|
{ INT64_C( 4884017522370844707), INT64_C( 3642606102698241657), -INT64_C( 5416668556751356806), INT64_C( 1486680395769328994) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_C( 6652636875035990078), INT64_C( 0) } },
|
|
{ { INT64_C( 5884855437847515992), INT64_C( 5046377720733805283), INT64_C( 6515463978070497041), -INT64_C( 2175959308119914040) },
|
|
{ INT64_C( 5975418466285927107), INT64_C( 1995148555708839069), -INT64_C( 3865991726324617720), INT64_C( 6589137445521139719) },
|
|
{ INT64_C( 0), INT64_C( 0), INT64_C( 6515463978070497041), INT64_C( 0) } },
|
|
{ { INT64_C( 5353903293904370059), -INT64_C( 5855694748648180329), -INT64_C( 3198110109063606318), -INT64_C( 134311449431170769) },
|
|
{ -INT64_C( 7888822226924332658), INT64_C( 8074655740636379578), -INT64_C( 1071888862176560257), -INT64_C( 1912662773025177085) },
|
|
{ INT64_C( 5353903293904370059), INT64_C( 0), -INT64_C( 3198110109063606318), -INT64_C( 134311449431170769) } },
|
|
{ { INT64_C( 7746936492670348532), INT64_C( 2660740784655676895), INT64_C( 1605972051073446037), -INT64_C( 3437089993967009519) },
|
|
{ -INT64_C( 970171594833891988), -INT64_C( 4341088310040570377), -INT64_C( 3263873051487686261), -INT64_C( 6047621540034756507) },
|
|
{ INT64_C( 7746936492670348532), INT64_C( 2660740784655676895), INT64_C( 1605972051073446037), -INT64_C( 3437089993967009519) } },
|
|
{ { INT64_C( 935152317656388341), INT64_C( 5736295944050796969), INT64_C( 9164439426345842332), -INT64_C( 1815279467665200671) },
|
|
{ -INT64_C( 7653891838718273370), INT64_C( 8531516276872147026), -INT64_C( 3001928471202802754), -INT64_C( 7835481678918706838) },
|
|
{ INT64_C( 935152317656388341), INT64_C( 0), INT64_C( 9164439426345842332), -INT64_C( 1815279467665200671) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i b = simde_x_mm256_loadu_epi64(test_vec[i].b);
|
|
simde__m256i r;
|
|
#if defined(SIMDE_X86_AVX2_NATIVE) && defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
r = simde_mm256_maskload_epi64(HEDLEY_REINTERPRET_CAST(const long long *, test_vec[i].a), b);
|
|
#else
|
|
r = simde_mm256_maskload_epi64(test_vec[i].a, b);
|
|
#endif
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
#if !defined(HEDLEY_MSVC_VERSION)
|
|
static int
|
|
test_simde_mm256_maskload_epi64_no_illegal_memory_access (SIMDE_MUNIT_TEST_ARGS) {
|
|
// ref: https://github.com/simd-everywhere/simde/issues/998
|
|
// make sure maskload never accesses memory for masked out regions
|
|
// will segfault in case memory is accessed
|
|
#if defined(_GNU_SOURCE)
|
|
int64_t *ptr = HEDLEY_STATIC_CAST(int64_t *, mmap(NULL, 4 * sizeof(int64_t), PROT_NONE , MAP_PRIVATE | MAP_ANONYMOUS, -1, 0));
|
|
#else
|
|
int64_t *ptr = HEDLEY_STATIC_CAST(int64_t *, mmap(NULL, 4 * sizeof(int64_t), PROT_NONE , MAP_PRIVATE, -1, 0));
|
|
#endif
|
|
const simde__m256i mask = simde_mm256_set_epi64x(INT64_C(0), INT64_C(0), INT64_C(0), INT64_C(0));
|
|
simde__m256i test;
|
|
int64_t r[4] = { INT64_C(0), INT64_C(0), INT64_C(0), INT64_C(0) };
|
|
#if defined(SIMDE_X86_AVX2_NATIVE) && defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
test = simde_mm256_maskload_epi64(HEDLEY_REINTERPRET_CAST(const long long *, ptr), mask);
|
|
#else
|
|
test = simde_mm256_maskload_epi64(ptr, mask);
|
|
#endif
|
|
simde_test_x86_assert_equal_i64x4(test, simde_x_mm256_loadu_epi64(r));
|
|
return 0;
|
|
}
|
|
#endif
|
|
|
|
static int
|
|
test_simde_mm_maskstore_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t mask[4];
|
|
const int32_t a[4];
|
|
const int32_t ri[4];
|
|
const int32_t ro[4];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 1072310678), -INT32_C( 1753702976), -INT32_C( 1000721038), INT32_C( 1139936175) },
|
|
{ -INT32_C( 921988596), -INT32_C( 1384169384), INT32_C( 1969759351), INT32_C( 323044521) },
|
|
{ -INT32_C( 921988596), -INT32_C( 1384169384), INT32_C( 1969759351), INT32_C( 22034) },
|
|
{ -INT32_C( 921988596), -INT32_C( 1384169384), INT32_C( 1969759351), INT32_C( 22034) } },
|
|
{ { -INT32_C( 623618278), INT32_C( 1718766836), INT32_C( 824888449), -INT32_C( 462152488) },
|
|
{ INT32_C( 112033710), INT32_C( 917712319), -INT32_C( 72606895), INT32_C( 2047798624) },
|
|
{ INT32_C( 112033710), -INT32_C( 1384169384), INT32_C( 1969759351), INT32_C( 2047798624) },
|
|
{ INT32_C( 112033710), -INT32_C( 1384169384), INT32_C( 1969759351), INT32_C( 2047798624) } },
|
|
{ { INT32_C( 945152580), -INT32_C( 1331771601), INT32_C( 1809959315), -INT32_C( 1806674203) },
|
|
{ -INT32_C( 1785004587), INT32_C( 2093698602), -INT32_C( 914917527), -INT32_C( 1455127195) },
|
|
{ INT32_C( 112033710), INT32_C( 2093698602), INT32_C( 1969759351), -INT32_C( 1455127195) },
|
|
{ INT32_C( 112033710), INT32_C( 2093698602), INT32_C( 1969759351), -INT32_C( 1455127195) } },
|
|
{ { -INT32_C( 1746757272), -INT32_C( 213417888), INT32_C( 794765641), INT32_C( 1422110591) },
|
|
{ -INT32_C( 672571988), INT32_C( 357807531), -INT32_C( 1847670228), -INT32_C( 1220861361) },
|
|
{ -INT32_C( 672571988), INT32_C( 357807531), INT32_C( 1969759351), -INT32_C( 1455127195) },
|
|
{ -INT32_C( 672571988), INT32_C( 357807531), INT32_C( 1969759351), -INT32_C( 1455127195) } },
|
|
{ { INT32_C( 458104251), -INT32_C( 418408803), INT32_C( 1041657535), -INT32_C( 913123043) },
|
|
{ -INT32_C( 492798922), INT32_C( 1576530737), INT32_C( 233821629), -INT32_C( 1278989576) },
|
|
{ -INT32_C( 672571988), INT32_C( 1576530737), INT32_C( 1969759351), -INT32_C( 1278989576) },
|
|
{ -INT32_C( 672571988), INT32_C( 1576530737), INT32_C( 1969759351), -INT32_C( 1278989576) } },
|
|
{ { -INT32_C( 456191161), INT32_C( 1758191273), INT32_C( 1772544332), -INT32_C( 248366918) },
|
|
{ -INT32_C( 439102540), -INT32_C( 2075931962), -INT32_C( 1752092001), -INT32_C( 1555344036) },
|
|
{ -INT32_C( 439102540), INT32_C( 1576530737), INT32_C( 1969759351), -INT32_C( 1555344036) },
|
|
{ -INT32_C( 439102540), INT32_C( 1576530737), INT32_C( 1969759351), -INT32_C( 1555344036) } },
|
|
{ { INT32_C( 294066792), INT32_C( 1148802040), -INT32_C( 273866956), INT32_C( 216063832) },
|
|
{ INT32_C( 2045948850), INT32_C( 486356349), -INT32_C( 1011577241), INT32_C( 1281818595) },
|
|
{ -INT32_C( 439102540), INT32_C( 1576530737), -INT32_C( 1011577241), -INT32_C( 1555344036) },
|
|
{ -INT32_C( 439102540), INT32_C( 1576530737), -INT32_C( 1011577241), -INT32_C( 1555344036) } },
|
|
{ { INT32_C( 291368217), INT32_C( 1968559936), INT32_C( 1315177206), -INT32_C( 1805957919) },
|
|
{ INT32_C( 1947028983), -INT32_C( 376436094), INT32_C( 2074887320), INT32_C( 1556550211) },
|
|
{ -INT32_C( 439102540), INT32_C( 1576530737), -INT32_C( 1011577241), INT32_C( 1556550211) },
|
|
{ -INT32_C( 439102540), INT32_C( 1576530737), -INT32_C( 1011577241), INT32_C( 1556550211) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i mask = simde_x_mm_loadu_epi32(test_vec[i].mask);
|
|
simde__m128i a = simde_x_mm_loadu_epi32(test_vec[i].a);
|
|
int32_t r[4];
|
|
simde_memcpy(r, test_vec[i].ri, sizeof(r));
|
|
simde_mm_maskstore_epi32(r, mask, a);
|
|
simde_assert_equal_vi32(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_maskstore_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t mask[8];
|
|
const int32_t a[8];
|
|
const int32_t ri[8];
|
|
const int32_t ro[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 2076816164), INT32_C( 922486962), INT32_C( 556407151), INT32_C( 1733355511), INT32_C( 401058348), -INT32_C( 81912571), -INT32_C( 1174954754), INT32_C( 302965558) },
|
|
{ -INT32_C( 493403088), -INT32_C( 1139240115), -INT32_C( 1545780564), INT32_C( 1426795817), -INT32_C( 580062504), INT32_C( 232294927), INT32_C( 1573376039), -INT32_C( 479210061) },
|
|
{ -INT32_C( 493403088), INT32_C( 0), INT32_C( 1022469250), INT32_C( 32547), INT32_C( 1022406520), INT32_C( 232294927), INT32_C( 1573376039), INT32_C( 32547) },
|
|
{ -INT32_C( 493403088), INT32_C( 0), INT32_C( 1022469250), INT32_C( 32547), INT32_C( 1022406520), INT32_C( 232294927), INT32_C( 1573376039), INT32_C( 32547) } },
|
|
{ { INT32_C( 1724188185), INT32_C( 1176690073), INT32_C( 1240071968), INT32_C( 94368813), -INT32_C( 152957977), -INT32_C( 1123763306), INT32_C( 1041943435), -INT32_C( 1188918880) },
|
|
{ INT32_C( 690022288), -INT32_C( 445693243), INT32_C( 1865308482), INT32_C( 880069965), INT32_C( 1865111257), -INT32_C( 1674825967), -INT32_C( 1696905478), INT32_C( 1599339983) },
|
|
{ -INT32_C( 493403088), INT32_C( 0), INT32_C( 1022469250), INT32_C( 32547), INT32_C( 1865111257), -INT32_C( 1674825967), INT32_C( 1573376039), INT32_C( 1599339983) },
|
|
{ -INT32_C( 493403088), INT32_C( 0), INT32_C( 1022469250), INT32_C( 32547), INT32_C( 1865111257), -INT32_C( 1674825967), INT32_C( 1573376039), INT32_C( 1599339983) } },
|
|
{ { -INT32_C( 1450609692), -INT32_C( 124847946), -INT32_C( 1620591279), INT32_C( 1674828682), INT32_C( 1137901105), INT32_C( 668991021), INT32_C( 348240452), -INT32_C( 1670179401) },
|
|
{ INT32_C( 1044774024), INT32_C( 1177998581), INT32_C( 468032913), -INT32_C( 1434470024), -INT32_C( 437431881), -INT32_C( 1811100592), INT32_C( 1051250311), INT32_C( 1809456355) },
|
|
{ INT32_C( 1044774024), INT32_C( 1177998581), INT32_C( 468032913), INT32_C( 32547), INT32_C( 1865111257), -INT32_C( 1674825967), INT32_C( 1573376039), INT32_C( 1809456355) },
|
|
{ INT32_C( 1044774024), INT32_C( 1177998581), INT32_C( 468032913), INT32_C( 32547), INT32_C( 1865111257), -INT32_C( 1674825967), INT32_C( 1573376039), INT32_C( 1809456355) } },
|
|
{ { INT32_C( 229253144), -INT32_C( 2058034956), -INT32_C( 157271682), -INT32_C( 1432346638), -INT32_C( 1047556751), -INT32_C( 514483366), INT32_C( 1277165161), INT32_C( 850983450) },
|
|
{ INT32_C( 239100442), -INT32_C( 1064070078), -INT32_C( 1061735475), -INT32_C( 999663789), INT32_C( 1065744869), -INT32_C( 31401324), -INT32_C( 230015016), INT32_C( 1394934329) },
|
|
{ INT32_C( 1044774024), -INT32_C( 1064070078), -INT32_C( 1061735475), -INT32_C( 999663789), INT32_C( 1065744869), -INT32_C( 31401324), INT32_C( 1573376039), INT32_C( 1809456355) },
|
|
{ INT32_C( 1044774024), -INT32_C( 1064070078), -INT32_C( 1061735475), -INT32_C( 999663789), INT32_C( 1065744869), -INT32_C( 31401324), INT32_C( 1573376039), INT32_C( 1809456355) } },
|
|
{ { -INT32_C( 1486789276), -INT32_C( 966265607), INT32_C( 2072387112), INT32_C( 1530916982), INT32_C( 2124072169), INT32_C( 2004662942), INT32_C( 862570233), INT32_C( 763793097) },
|
|
{ -INT32_C( 321591053), INT32_C( 78855388), -INT32_C( 796968614), INT32_C( 321633834), INT32_C( 563201410), INT32_C( 2040008063), -INT32_C( 1649671724), -INT32_C( 2083900784) },
|
|
{ -INT32_C( 321591053), INT32_C( 78855388), -INT32_C( 1061735475), -INT32_C( 999663789), INT32_C( 1065744869), -INT32_C( 31401324), INT32_C( 1573376039), INT32_C( 1809456355) },
|
|
{ -INT32_C( 321591053), INT32_C( 78855388), -INT32_C( 1061735475), -INT32_C( 999663789), INT32_C( 1065744869), -INT32_C( 31401324), INT32_C( 1573376039), INT32_C( 1809456355) } },
|
|
{ { -INT32_C( 143614182), INT32_C( 905651163), -INT32_C( 2046395556), -INT32_C( 1130745543), INT32_C( 1994206199), INT32_C( 233796921), INT32_C( 111844214), -INT32_C( 393579314) },
|
|
{ -INT32_C( 287311341), INT32_C( 2032458525), -INT32_C( 1895814570), INT32_C( 1380686427), -INT32_C( 20371259), INT32_C( 336312477), INT32_C( 572175700), INT32_C( 1024107562) },
|
|
{ -INT32_C( 287311341), INT32_C( 78855388), -INT32_C( 1895814570), INT32_C( 1380686427), INT32_C( 1065744869), -INT32_C( 31401324), INT32_C( 1573376039), INT32_C( 1024107562) },
|
|
{ -INT32_C( 287311341), INT32_C( 78855388), -INT32_C( 1895814570), INT32_C( 1380686427), INT32_C( 1065744869), -INT32_C( 31401324), INT32_C( 1573376039), INT32_C( 1024107562) } },
|
|
{ { -INT32_C( 1154684258), INT32_C( 456478917), -INT32_C( 710265478), -INT32_C( 1809254705), -INT32_C( 1131155170), -INT32_C( 36659543), INT32_C( 2116020820), INT32_C( 767240847) },
|
|
{ -INT32_C( 638982380), -INT32_C( 1309401545), INT32_C( 579313235), -INT32_C( 1279873132), INT32_C( 1232030112), INT32_C( 1011302376), -INT32_C( 1195743703), -INT32_C( 1528400496) },
|
|
{ -INT32_C( 638982380), INT32_C( 78855388), INT32_C( 579313235), -INT32_C( 1279873132), INT32_C( 1232030112), INT32_C( 1011302376), INT32_C( 1573376039), INT32_C( 1024107562) },
|
|
{ -INT32_C( 638982380), INT32_C( 78855388), INT32_C( 579313235), -INT32_C( 1279873132), INT32_C( 1232030112), INT32_C( 1011302376), INT32_C( 1573376039), INT32_C( 1024107562) } },
|
|
{ { -INT32_C( 1803694243), INT32_C( 1078358509), -INT32_C( 1537028848), INT32_C( 475469948), INT32_C( 1248183906), INT32_C( 797355013), -INT32_C( 1545125869), INT32_C( 306761141) },
|
|
{ -INT32_C( 1985493604), INT32_C( 1204415799), INT32_C( 921381818), -INT32_C( 1504558268), INT32_C( 267433737), INT32_C( 2000582244), INT32_C( 1796875702), -INT32_C( 1887542541) },
|
|
{ -INT32_C( 1985493604), INT32_C( 78855388), INT32_C( 921381818), -INT32_C( 1279873132), INT32_C( 1232030112), INT32_C( 1011302376), INT32_C( 1796875702), INT32_C( 1024107562) },
|
|
{ -INT32_C( 1985493604), INT32_C( 78855388), INT32_C( 921381818), -INT32_C( 1279873132), INT32_C( 1232030112), INT32_C( 1011302376), INT32_C( 1796875702), INT32_C( 1024107562) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i mask = simde_x_mm256_loadu_epi32(test_vec[i].mask);
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
int32_t r[8];
|
|
simde_memcpy(r, test_vec[i].ri, sizeof(r));
|
|
simde_mm256_maskstore_epi32(r, mask, a);
|
|
simde_assert_equal_vi32(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_maskstore_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t mask[2];
|
|
const int64_t a[2];
|
|
const int64_t ri[2];
|
|
const int64_t ro[2];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 3149967905596390459), -INT64_C( 4778628840774069374) },
|
|
{ INT64_C( 5664027239959376000), INT64_C( 8937778571530162224) },
|
|
{ INT64_C( 140732988756112), INT64_C( 8937778571530162224) },
|
|
{ INT64_C( 140732988756112), INT64_C( 8937778571530162224) } },
|
|
{ { INT64_C( 8062610935831789210), -INT64_C( 8946025712957579848) },
|
|
{ -INT64_C( 7091179927189929083), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 140732988756112), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 140732988756112), -INT64_C( 5251394950330663071) } },
|
|
{ { INT64_C( 7684922938565365066), INT64_C( 2879875638071020913) },
|
|
{ -INT64_C( 2293448770573013726), INT64_C( 332036821611605703) },
|
|
{ INT64_C( 140732988756112), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 140732988756112), -INT64_C( 5251394950330663071) } },
|
|
{ { -INT64_C( 3437124613673645265), INT64_C( 6050651184505868846) },
|
|
{ INT64_C( 3965153871791286441), INT64_C( 6501991883275471484) },
|
|
{ INT64_C( 3965153871791286441), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 3965153871791286441), -INT64_C( 5251394950330663071) } },
|
|
{ { -INT64_C( 8650702022112413758), INT64_C( 2008129837236434778) },
|
|
{ INT64_C( 5359365805870137528), -INT64_C( 767092764058747948) },
|
|
{ INT64_C( 5359365805870137528), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 5359365805870137528), -INT64_C( 5251394950330663071) } },
|
|
{ { INT64_C( 8652269335912879668), INT64_C( 8272797757509692224) },
|
|
{ INT64_C( 3511395233916719521), INT64_C( 3215161084095773558) },
|
|
{ INT64_C( 5359365805870137528), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 5359365805870137528), -INT64_C( 5251394950330663071) } },
|
|
{ { -INT64_C( 20041080821402335), INT64_C( 4567917337930546231) },
|
|
{ INT64_C( 8151067802542735250), -INT64_C( 303508250809446492) },
|
|
{ INT64_C( 8151067802542735250), -INT64_C( 5251394950330663071) },
|
|
{ INT64_C( 8151067802542735250), -INT64_C( 5251394950330663071) } },
|
|
{ { -INT64_C( 8778935907035413907), -INT64_C( 1185330308615447376) },
|
|
{ INT64_C( 5136350581142404060), -INT64_C( 8781828949867732662) },
|
|
{ INT64_C( 5136350581142404060), -INT64_C( 8781828949867732662) },
|
|
{ INT64_C( 5136350581142404060), -INT64_C( 8781828949867732662) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i mask = simde_x_mm_loadu_epi64(test_vec[i].mask);
|
|
simde__m128i a = simde_x_mm_loadu_epi64(test_vec[i].a);
|
|
int64_t r[2];
|
|
simde_memcpy(r, test_vec[i].ri, sizeof(r));
|
|
#if defined(SIMDE_X86_AVX2_NATIVE) && defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
simde_mm_maskstore_epi64((long long *)r, mask, a);
|
|
#else
|
|
simde_mm_maskstore_epi64(r, mask, a);
|
|
#endif
|
|
simde_assert_equal_vi64(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_maskstore_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t mask[4];
|
|
const int64_t a[4];
|
|
const int64_t ri[4];
|
|
const int64_t ro[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 5242526618242621661), INT64_C( 6166759832868221493), -INT64_C( 3838943471189419310), -INT64_C( 300229214128524470) },
|
|
{ INT64_C( 2195119886963881727), INT64_C( 4994165925608667027), -INT64_C( 2162954226736872975), INT64_C( 464305096456775511) },
|
|
{ INT64_C( 2050), INT64_C( 1313770), -INT64_C( 2162954226736872975), INT64_C( 464305096456775511) },
|
|
{ INT64_C( 2050), INT64_C( 1313770), -INT64_C( 2162954226736872975), INT64_C( 464305096456775511) } },
|
|
{ { -INT64_C( 8770573412453887679), INT64_C( 5987762628439542624), -INT64_C( 105974608678354161), INT64_C( 663406593554201895) },
|
|
{ INT64_C( 8191901560846116662), INT64_C( 917429192545808134), -INT64_C( 1800249354620813217), -INT64_C( 7905707010328004489) },
|
|
{ INT64_C( 8191901560846116662), INT64_C( 1313770), -INT64_C( 1800249354620813217), INT64_C( 464305096456775511) },
|
|
{ INT64_C( 8191901560846116662), INT64_C( 1313770), -INT64_C( 1800249354620813217), INT64_C( 464305096456775511) } },
|
|
{ { -INT64_C( 129641248100483919), INT64_C( 3792913607644641434), INT64_C( 579345394647586402), INT64_C( 1920382171601182647) },
|
|
{ INT64_C( 7351017860721565965), -INT64_C( 1112211479437939833), -INT64_C( 4570841319541126409), INT64_C( 8628750009532471612) },
|
|
{ INT64_C( 7351017860721565965), INT64_C( 1313770), -INT64_C( 1800249354620813217), INT64_C( 464305096456775511) },
|
|
{ INT64_C( 7351017860721565965), INT64_C( 1313770), -INT64_C( 1800249354620813217), INT64_C( 464305096456775511) } },
|
|
{ { INT64_C( 3606962921541573595), -INT64_C( 6599710048517223188), -INT64_C( 3120222027706958616), -INT64_C( 2560234815484229993) },
|
|
{ INT64_C( 7111344849244452307), INT64_C( 4967546651701690014), INT64_C( 8227770697573080513), -INT64_C( 5454725699460683665) },
|
|
{ INT64_C( 7351017860721565965), INT64_C( 4967546651701690014), INT64_C( 8227770697573080513), -INT64_C( 5454725699460683665) },
|
|
{ INT64_C( 7351017860721565965), INT64_C( 4967546651701690014), INT64_C( 8227770697573080513), -INT64_C( 5454725699460683665) } },
|
|
{ { INT64_C( 124660851703730401), -INT64_C( 7079591700845521376), INT64_C( 5739316420021843801), -INT64_C( 1845900778233980467) },
|
|
{ -INT64_C( 7620099957265165093), INT64_C( 2379821211310001037), -INT64_C( 1082557009605755447), -INT64_C( 6989304304425322474) },
|
|
{ INT64_C( 7351017860721565965), INT64_C( 2379821211310001037), INT64_C( 8227770697573080513), -INT64_C( 6989304304425322474) },
|
|
{ INT64_C( 7351017860721565965), INT64_C( 2379821211310001037), INT64_C( 8227770697573080513), -INT64_C( 6989304304425322474) } },
|
|
{ { -INT64_C( 4350446221603815788), INT64_C( 5661361750980473512), -INT64_C( 413503352329476305), INT64_C( 8362083761278804137) },
|
|
{ -INT64_C( 5886734649484449196), -INT64_C( 2548280180651164976), INT64_C( 3707993608283921047), -INT64_C( 746280734714459568) },
|
|
{ -INT64_C( 5886734649484449196), INT64_C( 2379821211310001037), INT64_C( 3707993608283921047), -INT64_C( 6989304304425322474) },
|
|
{ -INT64_C( 5886734649484449196), INT64_C( 2379821211310001037), INT64_C( 3707993608283921047), -INT64_C( 6989304304425322474) } },
|
|
{ { INT64_C( 1174539280240812695), -INT64_C( 5561656252458243512), -INT64_C( 4512708599429136223), INT64_C( 4954969688283086893) },
|
|
{ INT64_C( 6343651101063070392), INT64_C( 1685505655689801368), INT64_C( 7084341664285954590), -INT64_C( 8028524129605893725) },
|
|
{ -INT64_C( 5886734649484449196), INT64_C( 1685505655689801368), INT64_C( 7084341664285954590), -INT64_C( 6989304304425322474) },
|
|
{ -INT64_C( 5886734649484449196), INT64_C( 1685505655689801368), INT64_C( 7084341664285954590), -INT64_C( 6989304304425322474) } },
|
|
{ { INT64_C( 4296032324518769974), INT64_C( 2922363408830294785), INT64_C( 1764011878569726692), -INT64_C( 3048659187356095416) },
|
|
{ -INT64_C( 3724554084945282703), INT64_C( 8347090473923591588), -INT64_C( 2580272778841387612), INT64_C( 443794320655161779) },
|
|
{ -INT64_C( 5886734649484449196), INT64_C( 1685505655689801368), INT64_C( 7084341664285954590), INT64_C( 443794320655161779) },
|
|
{ -INT64_C( 5886734649484449196), INT64_C( 1685505655689801368), INT64_C( 7084341664285954590), INT64_C( 443794320655161779) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i mask = simde_x_mm256_loadu_epi64(test_vec[i].mask);
|
|
simde__m256i a = simde_x_mm256_loadu_epi64(test_vec[i].a);
|
|
int64_t r[4];
|
|
simde_memcpy(r, test_vec[i].ri, sizeof(r));
|
|
#if defined(SIMDE_X86_AVX2_NATIVE) && defined(SIMDE_NATIVE_ALIASES_TESTING)
|
|
simde_mm256_maskstore_epi64((long long *)r, mask, a);
|
|
#else
|
|
simde_mm256_maskstore_epi64(r, mask, a);
|
|
#endif
|
|
simde_assert_equal_vi64(sizeof(r) / sizeof(r[0]), r, test_vec[i].ro);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_max_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 82), INT8_C( 80), INT8_C( 100), INT8_C(-114),
|
|
INT8_C(-121), INT8_C(-115), INT8_C( -33), INT8_C( -36),
|
|
INT8_C(-105), INT8_C( -52), INT8_C( 94), INT8_C( 97),
|
|
INT8_C( -84), INT8_C( 116), INT8_C( 107), INT8_C( -76),
|
|
INT8_C( 5), INT8_C( 53), INT8_C( 122), INT8_C(-101),
|
|
INT8_C( 32), INT8_C(-122), INT8_C( -66), INT8_C( -61),
|
|
INT8_C( -25), INT8_C( -2), INT8_C( 14), INT8_C( -94),
|
|
INT8_C( 18), INT8_C( -35), INT8_C(-102), INT8_C( 57)),
|
|
simde_mm256_set_epi8(INT8_C( 46), INT8_C( -89), INT8_C( 83), INT8_C( 115),
|
|
INT8_C( 114), INT8_C( 48), INT8_C( 9), INT8_C( 1),
|
|
INT8_C( 54), INT8_C( -93), INT8_C( 118), INT8_C( -84),
|
|
INT8_C( 50), INT8_C( -43), INT8_C(-125), INT8_C( -87),
|
|
INT8_C( 48), INT8_C( 67), INT8_C( 65), INT8_C( 103),
|
|
INT8_C( 105), INT8_C( -97), INT8_C( -54), INT8_C( 17),
|
|
INT8_C( -90), INT8_C( -86), INT8_C( 116), INT8_C( 127),
|
|
INT8_C( 77), INT8_C( -5), INT8_C( 31), INT8_C( 24)),
|
|
simde_mm256_set_epi8(INT8_C( 82), INT8_C( 80), INT8_C( 100), INT8_C( 115),
|
|
INT8_C( 114), INT8_C( 48), INT8_C( 9), INT8_C( 1),
|
|
INT8_C( 54), INT8_C( -52), INT8_C( 118), INT8_C( 97),
|
|
INT8_C( 50), INT8_C( 116), INT8_C( 107), INT8_C( -76),
|
|
INT8_C( 48), INT8_C( 67), INT8_C( 122), INT8_C( 103),
|
|
INT8_C( 105), INT8_C( -97), INT8_C( -54), INT8_C( 17),
|
|
INT8_C( -25), INT8_C( -2), INT8_C( 116), INT8_C( 127),
|
|
INT8_C( 77), INT8_C( -5), INT8_C( 31), INT8_C( 57)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 104), INT8_C( 106), INT8_C(-125), INT8_C( -4),
|
|
INT8_C( -59), INT8_C( 95), INT8_C( -56), INT8_C( 31),
|
|
INT8_C( 108), INT8_C( 5), INT8_C( 101), INT8_C( 27),
|
|
INT8_C( -64), INT8_C( 57), INT8_C(-101), INT8_C( -55),
|
|
INT8_C( 77), INT8_C( 118), INT8_C( 99), INT8_C( 21),
|
|
INT8_C( 95), INT8_C( 17), INT8_C( 54), INT8_C( -21),
|
|
INT8_C( 92), INT8_C( -54), INT8_C( 78), INT8_C( 40),
|
|
INT8_C( 102), INT8_C(-101), INT8_C( 0), INT8_C( 127)),
|
|
simde_mm256_set_epi8(INT8_C( -59), INT8_C( 102), INT8_C( 95), INT8_C( -82),
|
|
INT8_C( -77), INT8_C( -39), INT8_C( -88), INT8_C( -22),
|
|
INT8_C( 54), INT8_C( 84), INT8_C( -33), INT8_C( 49),
|
|
INT8_C( 63), INT8_C( 99), INT8_C( 64), INT8_C(-122),
|
|
INT8_C( 102), INT8_C( 28), INT8_C( 90), INT8_C( 72),
|
|
INT8_C( 24), INT8_C( 50), INT8_C( 78), INT8_C( -15),
|
|
INT8_C( -20), INT8_C( -56), INT8_C( 73), INT8_C( 48),
|
|
INT8_C( -27), INT8_C( 7), INT8_C( -15), INT8_C(-109)),
|
|
simde_mm256_set_epi8(INT8_C( 104), INT8_C( 106), INT8_C( 95), INT8_C( -4),
|
|
INT8_C( -59), INT8_C( 95), INT8_C( -56), INT8_C( 31),
|
|
INT8_C( 108), INT8_C( 84), INT8_C( 101), INT8_C( 49),
|
|
INT8_C( 63), INT8_C( 99), INT8_C( 64), INT8_C( -55),
|
|
INT8_C( 102), INT8_C( 118), INT8_C( 99), INT8_C( 72),
|
|
INT8_C( 95), INT8_C( 50), INT8_C( 78), INT8_C( -15),
|
|
INT8_C( 92), INT8_C( -54), INT8_C( 78), INT8_C( 48),
|
|
INT8_C( 102), INT8_C( 7), INT8_C( 0), INT8_C( 127)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 65), INT8_C( 23), INT8_C( 64), INT8_C( -32),
|
|
INT8_C( -17), INT8_C( 98), INT8_C( -25), INT8_C( 100),
|
|
INT8_C(-100), INT8_C( -55), INT8_C( -13), INT8_C( 105),
|
|
INT8_C( 8), INT8_C( 62), INT8_C(-102), INT8_C( 30),
|
|
INT8_C( -9), INT8_C( 71), INT8_C( -37), INT8_C( -11),
|
|
INT8_C( -97), INT8_C( 54), INT8_C( -23), INT8_C( 103),
|
|
INT8_C( 11), INT8_C( -76), INT8_C( 47), INT8_C( 45),
|
|
INT8_C( -29), INT8_C( -83), INT8_C( -52), INT8_C( 82)),
|
|
simde_mm256_set_epi8(INT8_C( -2), INT8_C( -84), INT8_C( -69), INT8_C( -58),
|
|
INT8_C(-128), INT8_C( 76), INT8_C( 110), INT8_C( -99),
|
|
INT8_C( 46), INT8_C( 8), INT8_C( -50), INT8_C( -2),
|
|
INT8_C( 114), INT8_C( 31), INT8_C( -27), INT8_C( -16),
|
|
INT8_C( 63), INT8_C( -83), INT8_C(-114), INT8_C( 116),
|
|
INT8_C( 14), INT8_C( -31), INT8_C( 3), INT8_C(-105),
|
|
INT8_C( -84), INT8_C( -19), INT8_C( 81), INT8_C( 57),
|
|
INT8_C( -55), INT8_C( -67), INT8_C( -89), INT8_C( 74)),
|
|
simde_mm256_set_epi8(INT8_C( 65), INT8_C( 23), INT8_C( 64), INT8_C( -32),
|
|
INT8_C( -17), INT8_C( 98), INT8_C( 110), INT8_C( 100),
|
|
INT8_C( 46), INT8_C( 8), INT8_C( -13), INT8_C( 105),
|
|
INT8_C( 114), INT8_C( 62), INT8_C( -27), INT8_C( 30),
|
|
INT8_C( 63), INT8_C( 71), INT8_C( -37), INT8_C( 116),
|
|
INT8_C( 14), INT8_C( 54), INT8_C( 3), INT8_C( 103),
|
|
INT8_C( 11), INT8_C( -19), INT8_C( 81), INT8_C( 57),
|
|
INT8_C( -29), INT8_C( -67), INT8_C( -52), INT8_C( 82)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 3), INT8_C( -48), INT8_C( -19), INT8_C( 101),
|
|
INT8_C( -3), INT8_C( -85), INT8_C(-102), INT8_C( 26),
|
|
INT8_C( 89), INT8_C( -95), INT8_C( 51), INT8_C( -5),
|
|
INT8_C( 13), INT8_C( 30), INT8_C( -92), INT8_C( -13),
|
|
INT8_C( 68), INT8_C( 71), INT8_C(-127), INT8_C( -65),
|
|
INT8_C(-102), INT8_C( -1), INT8_C( 48), INT8_C( 30),
|
|
INT8_C( 43), INT8_C( 71), INT8_C( 53), INT8_C( 78),
|
|
INT8_C( 81), INT8_C( 119), INT8_C( -32), INT8_C( 18)),
|
|
simde_mm256_set_epi8(INT8_C( -81), INT8_C( -54), INT8_C( -70), INT8_C( 102),
|
|
INT8_C( 86), INT8_C( 106), INT8_C( 99), INT8_C( -7),
|
|
INT8_C( -74), INT8_C( -52), INT8_C(-121), INT8_C(-127),
|
|
INT8_C( 49), INT8_C(-119), INT8_C( 52), INT8_C( 119),
|
|
INT8_C( 123), INT8_C(-104), INT8_C( 44), INT8_C( -14),
|
|
INT8_C( 56), INT8_C( -83), INT8_C( 21), INT8_C( 108),
|
|
INT8_C( -43), INT8_C( 75), INT8_C( 75), INT8_C( 51),
|
|
INT8_C( 54), INT8_C( -18), INT8_C( 100), INT8_C( 49)),
|
|
simde_mm256_set_epi8(INT8_C( 3), INT8_C( -48), INT8_C( -19), INT8_C( 102),
|
|
INT8_C( 86), INT8_C( 106), INT8_C( 99), INT8_C( 26),
|
|
INT8_C( 89), INT8_C( -52), INT8_C( 51), INT8_C( -5),
|
|
INT8_C( 49), INT8_C( 30), INT8_C( 52), INT8_C( 119),
|
|
INT8_C( 123), INT8_C( 71), INT8_C( 44), INT8_C( -14),
|
|
INT8_C( 56), INT8_C( -1), INT8_C( 48), INT8_C( 108),
|
|
INT8_C( 43), INT8_C( 75), INT8_C( 75), INT8_C( 78),
|
|
INT8_C( 81), INT8_C( 119), INT8_C( 100), INT8_C( 49)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -92), INT8_C( 89), INT8_C( 61), INT8_C( 117),
|
|
INT8_C( -42), INT8_C( 29), INT8_C( -36), INT8_C( 67),
|
|
INT8_C(-107), INT8_C( 95), INT8_C(-103), INT8_C( -42),
|
|
INT8_C( -63), INT8_C( 54), INT8_C( 53), INT8_C( -40),
|
|
INT8_C( -66), INT8_C( -31), INT8_C( -91), INT8_C( 82),
|
|
INT8_C( 110), INT8_C( -33), INT8_C( 21), INT8_C( 38),
|
|
INT8_C( -69), INT8_C( 34), INT8_C( -74), INT8_C( 24),
|
|
INT8_C( -26), INT8_C(-124), INT8_C( -81), INT8_C( 36)),
|
|
simde_mm256_set_epi8(INT8_C(-105), INT8_C( 55), INT8_C(-117), INT8_C( 72),
|
|
INT8_C( -82), INT8_C( -42), INT8_C( 100), INT8_C( -21),
|
|
INT8_C( 19), INT8_C( 104), INT8_C( 11), INT8_C( 52),
|
|
INT8_C( 30), INT8_C( 8), INT8_C( 70), INT8_C( -51),
|
|
INT8_C( -61), INT8_C( -91), INT8_C( 126), INT8_C( -28),
|
|
INT8_C( -34), INT8_C( 102), INT8_C( 69), INT8_C( 99),
|
|
INT8_C( 81), INT8_C( 11), INT8_C( -51), INT8_C( 2),
|
|
INT8_C( 60), INT8_C( -70), INT8_C( 92), INT8_C( -37)),
|
|
simde_mm256_set_epi8(INT8_C( -92), INT8_C( 89), INT8_C( 61), INT8_C( 117),
|
|
INT8_C( -42), INT8_C( 29), INT8_C( 100), INT8_C( 67),
|
|
INT8_C( 19), INT8_C( 104), INT8_C( 11), INT8_C( 52),
|
|
INT8_C( 30), INT8_C( 54), INT8_C( 70), INT8_C( -40),
|
|
INT8_C( -61), INT8_C( -31), INT8_C( 126), INT8_C( 82),
|
|
INT8_C( 110), INT8_C( 102), INT8_C( 69), INT8_C( 99),
|
|
INT8_C( 81), INT8_C( 34), INT8_C( -51), INT8_C( 24),
|
|
INT8_C( 60), INT8_C( -70), INT8_C( 92), INT8_C( 36)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-123), INT8_C( 126), INT8_C( 24), INT8_C( 94),
|
|
INT8_C( -42), INT8_C( 118), INT8_C( 5), INT8_C( -41),
|
|
INT8_C( -65), INT8_C( -51), INT8_C( -68), INT8_C( 107),
|
|
INT8_C( -74), INT8_C( 112), INT8_C( 53), INT8_C( 87),
|
|
INT8_C( 26), INT8_C( -33), INT8_C( 99), INT8_C(-107),
|
|
INT8_C( 6), INT8_C( 119), INT8_C( -42), INT8_C( 32),
|
|
INT8_C( 54), INT8_C( -97), INT8_C(-117), INT8_C( -9),
|
|
INT8_C(-107), INT8_C( 44), INT8_C( -40), INT8_C( 33)),
|
|
simde_mm256_set_epi8(INT8_C(-115), INT8_C( -12), INT8_C( -81), INT8_C(-120),
|
|
INT8_C( 82), INT8_C( 114), INT8_C( -55), INT8_C(-106),
|
|
INT8_C( -54), INT8_C( 126), INT8_C( 70), INT8_C( 83),
|
|
INT8_C( 64), INT8_C( -11), INT8_C( 10), INT8_C( 72),
|
|
INT8_C( 19), INT8_C( -35), INT8_C( 123), INT8_C( -50),
|
|
INT8_C( 95), INT8_C( -2), INT8_C( 77), INT8_C( -12),
|
|
INT8_C(-127), INT8_C( -73), INT8_C( 117), INT8_C( 14),
|
|
INT8_C( 40), INT8_C( -92), INT8_C( 74), INT8_C( 114)),
|
|
simde_mm256_set_epi8(INT8_C(-115), INT8_C( 126), INT8_C( 24), INT8_C( 94),
|
|
INT8_C( 82), INT8_C( 118), INT8_C( 5), INT8_C( -41),
|
|
INT8_C( -54), INT8_C( 126), INT8_C( 70), INT8_C( 107),
|
|
INT8_C( 64), INT8_C( 112), INT8_C( 53), INT8_C( 87),
|
|
INT8_C( 26), INT8_C( -33), INT8_C( 123), INT8_C( -50),
|
|
INT8_C( 95), INT8_C( 119), INT8_C( 77), INT8_C( 32),
|
|
INT8_C( 54), INT8_C( -73), INT8_C( 117), INT8_C( 14),
|
|
INT8_C( 40), INT8_C( 44), INT8_C( 74), INT8_C( 114)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 29), INT8_C( 41), INT8_C( 107), INT8_C( 24),
|
|
INT8_C(-113), INT8_C( 113), INT8_C( -53), INT8_C( 6),
|
|
INT8_C( -82), INT8_C( 34), INT8_C( 0), INT8_C( 35),
|
|
INT8_C( -43), INT8_C(-128), INT8_C( -61), INT8_C( -69),
|
|
INT8_C( 2), INT8_C( 64), INT8_C( 89), INT8_C( -88),
|
|
INT8_C( 111), INT8_C( -95), INT8_C( 42), INT8_C( -15),
|
|
INT8_C( 21), INT8_C( 73), INT8_C( 70), INT8_C( 127),
|
|
INT8_C( 32), INT8_C( 116), INT8_C( 36), INT8_C( -14)),
|
|
simde_mm256_set_epi8(INT8_C( 52), INT8_C( -53), INT8_C( 101), INT8_C( 79),
|
|
INT8_C( -8), INT8_C( -70), INT8_C( -81), INT8_C(-117),
|
|
INT8_C( 27), INT8_C( -60), INT8_C( 78), INT8_C( 6),
|
|
INT8_C( 79), INT8_C( 72), INT8_C( 1), INT8_C( -62),
|
|
INT8_C( -36), INT8_C( -42), INT8_C( 0), INT8_C( -10),
|
|
INT8_C( -19), INT8_C( -1), INT8_C( 25), INT8_C( -88),
|
|
INT8_C( -5), INT8_C( -10), INT8_C( 127), INT8_C( 114),
|
|
INT8_C( 110), INT8_C( -1), INT8_C( -27), INT8_C( 51)),
|
|
simde_mm256_set_epi8(INT8_C( 52), INT8_C( 41), INT8_C( 107), INT8_C( 79),
|
|
INT8_C( -8), INT8_C( 113), INT8_C( -53), INT8_C( 6),
|
|
INT8_C( 27), INT8_C( 34), INT8_C( 78), INT8_C( 35),
|
|
INT8_C( 79), INT8_C( 72), INT8_C( 1), INT8_C( -62),
|
|
INT8_C( 2), INT8_C( 64), INT8_C( 89), INT8_C( -10),
|
|
INT8_C( 111), INT8_C( -1), INT8_C( 42), INT8_C( -15),
|
|
INT8_C( 21), INT8_C( 73), INT8_C( 127), INT8_C( 127),
|
|
INT8_C( 110), INT8_C( 116), INT8_C( 36), INT8_C( 51)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 94), INT8_C( -83), INT8_C( -81), INT8_C( 109),
|
|
INT8_C( -8), INT8_C( 100), INT8_C( 40), INT8_C(-125),
|
|
INT8_C( 114), INT8_C( -99), INT8_C( 42), INT8_C( 35),
|
|
INT8_C( 59), INT8_C( 67), INT8_C( 26), INT8_C( -39),
|
|
INT8_C( 79), INT8_C( 116), INT8_C( 3), INT8_C( -47),
|
|
INT8_C( 73), INT8_C( 13), INT8_C( -83), INT8_C( -95),
|
|
INT8_C( 75), INT8_C( -48), INT8_C( -36), INT8_C( 127),
|
|
INT8_C( 117), INT8_C( -9), INT8_C( 94), INT8_C( -87)),
|
|
simde_mm256_set_epi8(INT8_C( -44), INT8_C( -67), INT8_C(-100), INT8_C( 73),
|
|
INT8_C( 63), INT8_C( 69), INT8_C( -48), INT8_C( -87),
|
|
INT8_C( -1), INT8_C( -19), INT8_C( -9), INT8_C( 66),
|
|
INT8_C( 27), INT8_C( 17), INT8_C(-109), INT8_C( 22),
|
|
INT8_C( 98), INT8_C( 106), INT8_C( -50), INT8_C( -90),
|
|
INT8_C( 92), INT8_C( 106), INT8_C( -59), INT8_C( 31),
|
|
INT8_C( -18), INT8_C( -17), INT8_C( -80), INT8_C( -46),
|
|
INT8_C( 67), INT8_C( -29), INT8_C( 44), INT8_C( 76)),
|
|
simde_mm256_set_epi8(INT8_C( 94), INT8_C( -67), INT8_C( -81), INT8_C( 109),
|
|
INT8_C( 63), INT8_C( 100), INT8_C( 40), INT8_C( -87),
|
|
INT8_C( 114), INT8_C( -19), INT8_C( 42), INT8_C( 66),
|
|
INT8_C( 59), INT8_C( 67), INT8_C( 26), INT8_C( 22),
|
|
INT8_C( 98), INT8_C( 116), INT8_C( 3), INT8_C( -47),
|
|
INT8_C( 92), INT8_C( 106), INT8_C( -59), INT8_C( 31),
|
|
INT8_C( 75), INT8_C( -17), INT8_C( -36), INT8_C( 127),
|
|
INT8_C( 117), INT8_C( -9), INT8_C( 94), INT8_C( 76)) },
|
|
};
|
|
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_max_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_max_epu8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu8(UINT8_C(180), UINT8_C(215), UINT8_C( 58), UINT8_C(173),
|
|
UINT8_C(238), UINT8_C(242), UINT8_C( 74), UINT8_C(116),
|
|
UINT8_C(237), UINT8_C( 59), UINT8_C(170), UINT8_C(217),
|
|
UINT8_C(180), UINT8_C(149), UINT8_C(157), UINT8_C(250),
|
|
UINT8_C(224), UINT8_C(201), UINT8_C(109), UINT8_C(247),
|
|
UINT8_C( 25), UINT8_C(111), UINT8_C( 62), UINT8_C(129),
|
|
UINT8_C(115), UINT8_C(244), UINT8_C( 23), UINT8_C(181),
|
|
UINT8_C(205), UINT8_C(130), UINT8_C( 15), UINT8_C( 6)),
|
|
simde_x_mm256_set_epu8(UINT8_C(129), UINT8_C(102), UINT8_C(249), UINT8_C(232),
|
|
UINT8_C(171), UINT8_C(250), UINT8_C(155), UINT8_C( 41),
|
|
UINT8_C(184), UINT8_C(159), UINT8_C(213), UINT8_C( 99),
|
|
UINT8_C(220), UINT8_C(155), UINT8_C(220), UINT8_C(163),
|
|
UINT8_C(219), UINT8_C(184), UINT8_C( 97), UINT8_C(230),
|
|
UINT8_C( 89), UINT8_C( 94), UINT8_C( 73), UINT8_C(152),
|
|
UINT8_C( 89), UINT8_C( 86), UINT8_C(115), UINT8_C(206),
|
|
UINT8_C(132), UINT8_C(230), UINT8_C(207), UINT8_C( 0)),
|
|
simde_x_mm256_set_epu8(UINT8_C(180), UINT8_C(215), UINT8_C(249), UINT8_C(232),
|
|
UINT8_C(238), UINT8_C(250), UINT8_C(155), UINT8_C(116),
|
|
UINT8_C(237), UINT8_C(159), UINT8_C(213), UINT8_C(217),
|
|
UINT8_C(220), UINT8_C(155), UINT8_C(220), UINT8_C(250),
|
|
UINT8_C(224), UINT8_C(201), UINT8_C(109), UINT8_C(247),
|
|
UINT8_C( 89), UINT8_C(111), UINT8_C( 73), UINT8_C(152),
|
|
UINT8_C(115), UINT8_C(244), UINT8_C(115), UINT8_C(206),
|
|
UINT8_C(205), UINT8_C(230), UINT8_C(207), UINT8_C( 6)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(218), UINT8_C(157), UINT8_C(237), UINT8_C(159),
|
|
UINT8_C( 73), UINT8_C(122), UINT8_C( 14), UINT8_C(243),
|
|
UINT8_C(232), UINT8_C(133), UINT8_C( 42), UINT8_C( 15),
|
|
UINT8_C( 24), UINT8_C(199), UINT8_C(216), UINT8_C( 25),
|
|
UINT8_C(242), UINT8_C(254), UINT8_C(156), UINT8_C(113),
|
|
UINT8_C( 5), UINT8_C( 95), UINT8_C( 73), UINT8_C(123),
|
|
UINT8_C(224), UINT8_C(233), UINT8_C(137), UINT8_C(219),
|
|
UINT8_C(122), UINT8_C(103), UINT8_C( 32), UINT8_C( 32)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(178), UINT8_C( 89), UINT8_C( 15),
|
|
UINT8_C( 21), UINT8_C(211), UINT8_C(214), UINT8_C(175),
|
|
UINT8_C( 24), UINT8_C(208), UINT8_C(242), UINT8_C( 16),
|
|
UINT8_C( 86), UINT8_C(207), UINT8_C(159), UINT8_C( 23),
|
|
UINT8_C( 74), UINT8_C( 72), UINT8_C(123), UINT8_C( 85),
|
|
UINT8_C( 99), UINT8_C( 6), UINT8_C( 15), UINT8_C(240),
|
|
UINT8_C(112), UINT8_C( 36), UINT8_C(217), UINT8_C( 82),
|
|
UINT8_C(251), UINT8_C( 67), UINT8_C(226), UINT8_C(252)),
|
|
simde_x_mm256_set_epu8(UINT8_C(255), UINT8_C(178), UINT8_C(237), UINT8_C(159),
|
|
UINT8_C( 73), UINT8_C(211), UINT8_C(214), UINT8_C(243),
|
|
UINT8_C(232), UINT8_C(208), UINT8_C(242), UINT8_C( 16),
|
|
UINT8_C( 86), UINT8_C(207), UINT8_C(216), UINT8_C( 25),
|
|
UINT8_C(242), UINT8_C(254), UINT8_C(156), UINT8_C(113),
|
|
UINT8_C( 99), UINT8_C( 95), UINT8_C( 73), UINT8_C(240),
|
|
UINT8_C(224), UINT8_C(233), UINT8_C(217), UINT8_C(219),
|
|
UINT8_C(251), UINT8_C(103), UINT8_C(226), UINT8_C(252)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 99), UINT8_C(186), UINT8_C(163), UINT8_C( 4),
|
|
UINT8_C( 50), UINT8_C( 29), UINT8_C( 2), UINT8_C( 45),
|
|
UINT8_C( 57), UINT8_C( 0), UINT8_C(206), UINT8_C( 78),
|
|
UINT8_C(164), UINT8_C( 87), UINT8_C( 32), UINT8_C(133),
|
|
UINT8_C(239), UINT8_C(167), UINT8_C( 26), UINT8_C(218),
|
|
UINT8_C(142), UINT8_C( 23), UINT8_C( 41), UINT8_C( 63),
|
|
UINT8_C(230), UINT8_C(150), UINT8_C( 27), UINT8_C(237),
|
|
UINT8_C(105), UINT8_C(166), UINT8_C( 82), UINT8_C( 50)),
|
|
simde_x_mm256_set_epu8(UINT8_C(129), UINT8_C(111), UINT8_C( 84), UINT8_C(213),
|
|
UINT8_C( 28), UINT8_C( 33), UINT8_C(141), UINT8_C(175),
|
|
UINT8_C( 38), UINT8_C(248), UINT8_C( 9), UINT8_C( 4),
|
|
UINT8_C(199), UINT8_C( 40), UINT8_C(185), UINT8_C(144),
|
|
UINT8_C( 46), UINT8_C( 14), UINT8_C( 90), UINT8_C(214),
|
|
UINT8_C( 91), UINT8_C( 56), UINT8_C( 35), UINT8_C(120),
|
|
UINT8_C(228), UINT8_C( 66), UINT8_C( 89), UINT8_C(196),
|
|
UINT8_C(150), UINT8_C(233), UINT8_C(114), UINT8_C(153)),
|
|
simde_x_mm256_set_epu8(UINT8_C(129), UINT8_C(186), UINT8_C(163), UINT8_C(213),
|
|
UINT8_C( 50), UINT8_C( 33), UINT8_C(141), UINT8_C(175),
|
|
UINT8_C( 57), UINT8_C(248), UINT8_C(206), UINT8_C( 78),
|
|
UINT8_C(199), UINT8_C( 87), UINT8_C(185), UINT8_C(144),
|
|
UINT8_C(239), UINT8_C(167), UINT8_C( 90), UINT8_C(218),
|
|
UINT8_C(142), UINT8_C( 56), UINT8_C( 41), UINT8_C(120),
|
|
UINT8_C(230), UINT8_C(150), UINT8_C( 89), UINT8_C(237),
|
|
UINT8_C(150), UINT8_C(233), UINT8_C(114), UINT8_C(153)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 80), UINT8_C( 4), UINT8_C(125), UINT8_C( 7),
|
|
UINT8_C( 48), UINT8_C(207), UINT8_C( 44), UINT8_C(221),
|
|
UINT8_C(215), UINT8_C( 45), UINT8_C(223), UINT8_C(194),
|
|
UINT8_C(186), UINT8_C( 12), UINT8_C(145), UINT8_C(171),
|
|
UINT8_C(238), UINT8_C(191), UINT8_C( 72), UINT8_C(118),
|
|
UINT8_C( 66), UINT8_C(123), UINT8_C(140), UINT8_C(190),
|
|
UINT8_C( 2), UINT8_C(202), UINT8_C( 43), UINT8_C( 29),
|
|
UINT8_C( 54), UINT8_C( 64), UINT8_C(115), UINT8_C( 16)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 80), UINT8_C(158), UINT8_C(246), UINT8_C( 30),
|
|
UINT8_C(178), UINT8_C(129), UINT8_C(199), UINT8_C(213),
|
|
UINT8_C( 85), UINT8_C(149), UINT8_C(108), UINT8_C( 59),
|
|
UINT8_C(205), UINT8_C(149), UINT8_C(119), UINT8_C(194),
|
|
UINT8_C(246), UINT8_C( 94), UINT8_C(221), UINT8_C(162),
|
|
UINT8_C( 94), UINT8_C(125), UINT8_C(138), UINT8_C(231),
|
|
UINT8_C(191), UINT8_C( 11), UINT8_C( 15), UINT8_C( 66),
|
|
UINT8_C(133), UINT8_C(100), UINT8_C( 76), UINT8_C( 29)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 80), UINT8_C(158), UINT8_C(246), UINT8_C( 30),
|
|
UINT8_C(178), UINT8_C(207), UINT8_C(199), UINT8_C(221),
|
|
UINT8_C(215), UINT8_C(149), UINT8_C(223), UINT8_C(194),
|
|
UINT8_C(205), UINT8_C(149), UINT8_C(145), UINT8_C(194),
|
|
UINT8_C(246), UINT8_C(191), UINT8_C(221), UINT8_C(162),
|
|
UINT8_C( 94), UINT8_C(125), UINT8_C(140), UINT8_C(231),
|
|
UINT8_C(191), UINT8_C(202), UINT8_C( 43), UINT8_C( 66),
|
|
UINT8_C(133), UINT8_C(100), UINT8_C(115), UINT8_C( 29)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(197), UINT8_C( 85), UINT8_C( 13), UINT8_C(197),
|
|
UINT8_C( 97), UINT8_C(213), UINT8_C( 19), UINT8_C(106),
|
|
UINT8_C(135), UINT8_C( 2), UINT8_C(117), UINT8_C(164),
|
|
UINT8_C(206), UINT8_C(103), UINT8_C( 74), UINT8_C( 88),
|
|
UINT8_C(183), UINT8_C( 33), UINT8_C(103), UINT8_C(216),
|
|
UINT8_C(136), UINT8_C(200), UINT8_C( 59), UINT8_C(124),
|
|
UINT8_C(188), UINT8_C(115), UINT8_C(181), UINT8_C(132),
|
|
UINT8_C(156), UINT8_C( 81), UINT8_C(255), UINT8_C(214)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 95), UINT8_C( 13), UINT8_C(157), UINT8_C(137),
|
|
UINT8_C( 41), UINT8_C(108), UINT8_C( 8), UINT8_C( 29),
|
|
UINT8_C( 52), UINT8_C(238), UINT8_C( 31), UINT8_C( 23),
|
|
UINT8_C( 9), UINT8_C( 86), UINT8_C( 2), UINT8_C( 88),
|
|
UINT8_C( 88), UINT8_C(185), UINT8_C(173), UINT8_C(108),
|
|
UINT8_C(234), UINT8_C(252), UINT8_C(231), UINT8_C( 15),
|
|
UINT8_C( 68), UINT8_C(138), UINT8_C( 60), UINT8_C(162),
|
|
UINT8_C(131), UINT8_C(215), UINT8_C( 87), UINT8_C( 44)),
|
|
simde_x_mm256_set_epu8(UINT8_C(197), UINT8_C( 85), UINT8_C(157), UINT8_C(197),
|
|
UINT8_C( 97), UINT8_C(213), UINT8_C( 19), UINT8_C(106),
|
|
UINT8_C(135), UINT8_C(238), UINT8_C(117), UINT8_C(164),
|
|
UINT8_C(206), UINT8_C(103), UINT8_C( 74), UINT8_C( 88),
|
|
UINT8_C(183), UINT8_C(185), UINT8_C(173), UINT8_C(216),
|
|
UINT8_C(234), UINT8_C(252), UINT8_C(231), UINT8_C(124),
|
|
UINT8_C(188), UINT8_C(138), UINT8_C(181), UINT8_C(162),
|
|
UINT8_C(156), UINT8_C(215), UINT8_C(255), UINT8_C(214)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(231), UINT8_C(112), UINT8_C(155), UINT8_C( 33),
|
|
UINT8_C( 64), UINT8_C(148), UINT8_C(180), UINT8_C( 63),
|
|
UINT8_C( 75), UINT8_C(171), UINT8_C(170), UINT8_C(114),
|
|
UINT8_C(142), UINT8_C(212), UINT8_C(162), UINT8_C(149),
|
|
UINT8_C( 47), UINT8_C(201), UINT8_C( 71), UINT8_C( 17),
|
|
UINT8_C(237), UINT8_C(172), UINT8_C(186), UINT8_C( 26),
|
|
UINT8_C(227), UINT8_C(106), UINT8_C(215), UINT8_C(216),
|
|
UINT8_C(247), UINT8_C(225), UINT8_C( 9), UINT8_C( 60)),
|
|
simde_x_mm256_set_epu8(UINT8_C(136), UINT8_C( 20), UINT8_C(248), UINT8_C(149),
|
|
UINT8_C( 4), UINT8_C(138), UINT8_C(203), UINT8_C( 63),
|
|
UINT8_C(168), UINT8_C(148), UINT8_C(215), UINT8_C( 68),
|
|
UINT8_C(209), UINT8_C(109), UINT8_C(191), UINT8_C(165),
|
|
UINT8_C( 20), UINT8_C( 98), UINT8_C(113), UINT8_C(151),
|
|
UINT8_C(142), UINT8_C(111), UINT8_C(162), UINT8_C(190),
|
|
UINT8_C(230), UINT8_C(122), UINT8_C(213), UINT8_C(213),
|
|
UINT8_C(118), UINT8_C(189), UINT8_C( 22), UINT8_C(229)),
|
|
simde_x_mm256_set_epu8(UINT8_C(231), UINT8_C(112), UINT8_C(248), UINT8_C(149),
|
|
UINT8_C( 64), UINT8_C(148), UINT8_C(203), UINT8_C( 63),
|
|
UINT8_C(168), UINT8_C(171), UINT8_C(215), UINT8_C(114),
|
|
UINT8_C(209), UINT8_C(212), UINT8_C(191), UINT8_C(165),
|
|
UINT8_C( 47), UINT8_C(201), UINT8_C(113), UINT8_C(151),
|
|
UINT8_C(237), UINT8_C(172), UINT8_C(186), UINT8_C(190),
|
|
UINT8_C(230), UINT8_C(122), UINT8_C(215), UINT8_C(216),
|
|
UINT8_C(247), UINT8_C(225), UINT8_C( 22), UINT8_C(229)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(183), UINT8_C( 9), UINT8_C( 46), UINT8_C( 70),
|
|
UINT8_C( 48), UINT8_C(117), UINT8_C(202), UINT8_C(154),
|
|
UINT8_C(250), UINT8_C(204), UINT8_C(191), UINT8_C( 51),
|
|
UINT8_C( 37), UINT8_C( 5), UINT8_C(178), UINT8_C( 19),
|
|
UINT8_C(105), UINT8_C( 57), UINT8_C( 19), UINT8_C( 60),
|
|
UINT8_C( 26), UINT8_C( 52), UINT8_C(197), UINT8_C( 41),
|
|
UINT8_C(112), UINT8_C(146), UINT8_C(171), UINT8_C( 51),
|
|
UINT8_C( 94), UINT8_C(195), UINT8_C(226), UINT8_C(203)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 96), UINT8_C( 68), UINT8_C( 60), UINT8_C( 83),
|
|
UINT8_C(130), UINT8_C( 56), UINT8_C(227), UINT8_C(106),
|
|
UINT8_C(254), UINT8_C(175), UINT8_C(176), UINT8_C(122),
|
|
UINT8_C(126), UINT8_C(122), UINT8_C(171), UINT8_C(205),
|
|
UINT8_C( 85), UINT8_C(250), UINT8_C( 22), UINT8_C(153),
|
|
UINT8_C(140), UINT8_C(119), UINT8_C( 56), UINT8_C(225),
|
|
UINT8_C( 78), UINT8_C(180), UINT8_C(234), UINT8_C(136),
|
|
UINT8_C( 47), UINT8_C(214), UINT8_C( 40), UINT8_C(206)),
|
|
simde_x_mm256_set_epu8(UINT8_C(183), UINT8_C( 68), UINT8_C( 60), UINT8_C( 83),
|
|
UINT8_C(130), UINT8_C(117), UINT8_C(227), UINT8_C(154),
|
|
UINT8_C(254), UINT8_C(204), UINT8_C(191), UINT8_C(122),
|
|
UINT8_C(126), UINT8_C(122), UINT8_C(178), UINT8_C(205),
|
|
UINT8_C(105), UINT8_C(250), UINT8_C( 22), UINT8_C(153),
|
|
UINT8_C(140), UINT8_C(119), UINT8_C(197), UINT8_C(225),
|
|
UINT8_C(112), UINT8_C(180), UINT8_C(234), UINT8_C(136),
|
|
UINT8_C( 94), UINT8_C(214), UINT8_C(226), UINT8_C(206)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 93), UINT8_C(234), UINT8_C(139), UINT8_C( 2),
|
|
UINT8_C( 9), UINT8_C(232), UINT8_C( 35), UINT8_C( 78),
|
|
UINT8_C(197), UINT8_C( 13), UINT8_C(224), UINT8_C( 83),
|
|
UINT8_C( 37), UINT8_C(182), UINT8_C( 94), UINT8_C( 69),
|
|
UINT8_C(143), UINT8_C( 54), UINT8_C(219), UINT8_C(171),
|
|
UINT8_C( 22), UINT8_C(117), UINT8_C( 46), UINT8_C(238),
|
|
UINT8_C( 4), UINT8_C(125), UINT8_C( 7), UINT8_C(106),
|
|
UINT8_C(127), UINT8_C( 87), UINT8_C( 56), UINT8_C( 20)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 73), UINT8_C(103), UINT8_C( 49), UINT8_C(198),
|
|
UINT8_C(212), UINT8_C(255), UINT8_C(227), UINT8_C( 52),
|
|
UINT8_C(122), UINT8_C( 22), UINT8_C(213), UINT8_C(204),
|
|
UINT8_C(103), UINT8_C( 93), UINT8_C( 45), UINT8_C( 45),
|
|
UINT8_C(221), UINT8_C(118), UINT8_C( 73), UINT8_C( 16),
|
|
UINT8_C(194), UINT8_C( 60), UINT8_C(246), UINT8_C(126),
|
|
UINT8_C( 84), UINT8_C(155), UINT8_C(128), UINT8_C( 83),
|
|
UINT8_C( 5), UINT8_C( 37), UINT8_C(157), UINT8_C(132)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 93), UINT8_C(234), UINT8_C(139), UINT8_C(198),
|
|
UINT8_C(212), UINT8_C(255), UINT8_C(227), UINT8_C( 78),
|
|
UINT8_C(197), UINT8_C( 22), UINT8_C(224), UINT8_C(204),
|
|
UINT8_C(103), UINT8_C(182), UINT8_C( 94), UINT8_C( 69),
|
|
UINT8_C(221), UINT8_C(118), UINT8_C(219), UINT8_C(171),
|
|
UINT8_C(194), UINT8_C(117), UINT8_C(246), UINT8_C(238),
|
|
UINT8_C( 84), UINT8_C(155), UINT8_C(128), UINT8_C(106),
|
|
UINT8_C(127), UINT8_C( 87), UINT8_C(157), UINT8_C(132)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_max_epu8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_max_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 13945), INT16_C(-32397), INT16_C( -8500), INT16_C(-16936),
|
|
INT16_C( -615), INT16_C( 28879), INT16_C( 19952), INT16_C(-20844),
|
|
INT16_C(-18762), INT16_C( 23311), INT16_C(-22090), INT16_C( 16355),
|
|
INT16_C( 18939), INT16_C( -9393), INT16_C( 19655), INT16_C( 25483)),
|
|
simde_mm256_set_epi16(INT16_C(-30076), INT16_C(-27428), INT16_C(-24061), INT16_C( -9620),
|
|
INT16_C(-17974), INT16_C( 3150), INT16_C( 6986), INT16_C(-23891),
|
|
INT16_C( 12942), INT16_C( 12645), INT16_C(-13904), INT16_C( -868),
|
|
INT16_C(-14591), INT16_C( 24935), INT16_C( 4654), INT16_C( 4591)),
|
|
simde_mm256_set_epi16(INT16_C( 13945), INT16_C(-27428), INT16_C( -8500), INT16_C( -9620),
|
|
INT16_C( -615), INT16_C( 28879), INT16_C( 19952), INT16_C(-20844),
|
|
INT16_C( 12942), INT16_C( 23311), INT16_C(-13904), INT16_C( 16355),
|
|
INT16_C( 18939), INT16_C( 24935), INT16_C( 19655), INT16_C( 25483)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 15746), INT16_C( 16476), INT16_C(-26892), INT16_C( 15551),
|
|
INT16_C( 4802), INT16_C( 22020), INT16_C( 7684), INT16_C( 20433),
|
|
INT16_C(-15213), INT16_C( -9067), INT16_C( 11028), INT16_C( 2768),
|
|
INT16_C( 19036), INT16_C(-29021), INT16_C( 27796), INT16_C(-20181)),
|
|
simde_mm256_set_epi16(INT16_C(-15017), INT16_C(-10120), INT16_C(-23789), INT16_C(-21730),
|
|
INT16_C( 16078), INT16_C( 3607), INT16_C(-18668), INT16_C(-12209),
|
|
INT16_C( -562), INT16_C( 30247), INT16_C( 20324), INT16_C( -8924),
|
|
INT16_C( 24524), INT16_C( -5426), INT16_C( 25503), INT16_C( 2215)),
|
|
simde_mm256_set_epi16(INT16_C( 15746), INT16_C( 16476), INT16_C(-23789), INT16_C( 15551),
|
|
INT16_C( 16078), INT16_C( 22020), INT16_C( 7684), INT16_C( 20433),
|
|
INT16_C( -562), INT16_C( 30247), INT16_C( 20324), INT16_C( 2768),
|
|
INT16_C( 24524), INT16_C( -5426), INT16_C( 27796), INT16_C( 2215)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 9558), INT16_C( 24602), INT16_C(-11854), INT16_C( 13316),
|
|
INT16_C( -7111), INT16_C( 5322), INT16_C( 10474), INT16_C( 14309),
|
|
INT16_C( 10175), INT16_C(-23285), INT16_C( -7105), INT16_C(-18408),
|
|
INT16_C( -9456), INT16_C(-31797), INT16_C( 6677), INT16_C( 24246)),
|
|
simde_mm256_set_epi16(INT16_C( 8353), INT16_C(-12225), INT16_C( 10989), INT16_C( 20160),
|
|
INT16_C(-24928), INT16_C( 11285), INT16_C(-21080), INT16_C(-21637),
|
|
INT16_C( -557), INT16_C(-15431), INT16_C(-14247), INT16_C( 1813),
|
|
INT16_C( -7571), INT16_C( 22502), INT16_C( 12550), INT16_C( 3083)),
|
|
simde_mm256_set_epi16(INT16_C( 9558), INT16_C( 24602), INT16_C( 10989), INT16_C( 20160),
|
|
INT16_C( -7111), INT16_C( 11285), INT16_C( 10474), INT16_C( 14309),
|
|
INT16_C( 10175), INT16_C(-15431), INT16_C( -7105), INT16_C( 1813),
|
|
INT16_C( -7571), INT16_C( 22502), INT16_C( 12550), INT16_C( 24246)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 25542), INT16_C(-21715), INT16_C(-12723), INT16_C( 3641),
|
|
INT16_C( 10626), INT16_C( 1975), INT16_C( 32038), INT16_C( 13257),
|
|
INT16_C( 26030), INT16_C(-29459), INT16_C( 27784), INT16_C(-29348),
|
|
INT16_C( 24986), INT16_C( 19201), INT16_C(-21133), INT16_C( -544)),
|
|
simde_mm256_set_epi16(INT16_C(-15360), INT16_C( -9091), INT16_C( 9964), INT16_C(-26119),
|
|
INT16_C(-13193), INT16_C( -4473), INT16_C(-16910), INT16_C( -8355),
|
|
INT16_C( 29088), INT16_C( 26903), INT16_C( 19970), INT16_C( 20929),
|
|
INT16_C( 21866), INT16_C( -554), INT16_C(-31252), INT16_C(-27281)),
|
|
simde_mm256_set_epi16(INT16_C( 25542), INT16_C( -9091), INT16_C( 9964), INT16_C( 3641),
|
|
INT16_C( 10626), INT16_C( 1975), INT16_C( 32038), INT16_C( 13257),
|
|
INT16_C( 29088), INT16_C( 26903), INT16_C( 27784), INT16_C( 20929),
|
|
INT16_C( 24986), INT16_C( 19201), INT16_C(-21133), INT16_C( -544)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28957), INT16_C( 7788), INT16_C(-11350), INT16_C( 29385),
|
|
INT16_C( -7207), INT16_C(-21363), INT16_C(-10963), INT16_C(-23177),
|
|
INT16_C( 22883), INT16_C(-14765), INT16_C( 17155), INT16_C(-19202),
|
|
INT16_C(-32343), INT16_C( 8167), INT16_C( 17107), INT16_C(-17194)),
|
|
simde_mm256_set_epi16(INT16_C(-21587), INT16_C( 21036), INT16_C( 16036), INT16_C(-20844),
|
|
INT16_C( 2600), INT16_C(-15232), INT16_C( 4125), INT16_C( 22708),
|
|
INT16_C(-29000), INT16_C(-22285), INT16_C( 8338), INT16_C( 25191),
|
|
INT16_C( 5401), INT16_C(-28508), INT16_C(-16518), INT16_C(-23781)),
|
|
simde_mm256_set_epi16(INT16_C(-21587), INT16_C( 21036), INT16_C( 16036), INT16_C( 29385),
|
|
INT16_C( 2600), INT16_C(-15232), INT16_C( 4125), INT16_C( 22708),
|
|
INT16_C( 22883), INT16_C(-14765), INT16_C( 17155), INT16_C( 25191),
|
|
INT16_C( 5401), INT16_C( 8167), INT16_C( 17107), INT16_C(-17194)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 26823), INT16_C( 30422), INT16_C(-10399), INT16_C( 6469),
|
|
INT16_C(-22608), INT16_C( 3602), INT16_C( 24356), INT16_C( -5312),
|
|
INT16_C( 22553), INT16_C( 4057), INT16_C( 16984), INT16_C( 14642),
|
|
INT16_C( -4725), INT16_C(-13132), INT16_C(-32486), INT16_C( -9795)),
|
|
simde_mm256_set_epi16(INT16_C(-16670), INT16_C( 11037), INT16_C(-12867), INT16_C( -9733),
|
|
INT16_C(-19057), INT16_C( 28626), INT16_C( 27349), INT16_C( 21991),
|
|
INT16_C(-17860), INT16_C( -7267), INT16_C( 21708), INT16_C( 27219),
|
|
INT16_C( 3344), INT16_C(-13000), INT16_C( -5702), INT16_C( 8873)),
|
|
simde_mm256_set_epi16(INT16_C( 26823), INT16_C( 30422), INT16_C(-10399), INT16_C( 6469),
|
|
INT16_C(-19057), INT16_C( 28626), INT16_C( 27349), INT16_C( 21991),
|
|
INT16_C( 22553), INT16_C( 4057), INT16_C( 21708), INT16_C( 27219),
|
|
INT16_C( 3344), INT16_C(-13000), INT16_C( -5702), INT16_C( 8873)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 28327), INT16_C( 28059), INT16_C(-12455), INT16_C(-22892),
|
|
INT16_C( 9516), INT16_C(-23091), INT16_C( 28067), INT16_C( 29028),
|
|
INT16_C(-24610), INT16_C(-13303), INT16_C( -3871), INT16_C( 25753),
|
|
INT16_C(-19764), INT16_C(-10115), INT16_C( -9313), INT16_C(-10807)),
|
|
simde_mm256_set_epi16(INT16_C( 1267), INT16_C( -7929), INT16_C( 29505), INT16_C( 22745),
|
|
INT16_C( 1801), INT16_C( -829), INT16_C( 2659), INT16_C( 24204),
|
|
INT16_C( 27266), INT16_C(-10805), INT16_C( 7071), INT16_C( 12404),
|
|
INT16_C( 27748), INT16_C( 11490), INT16_C(-10130), INT16_C( 7320)),
|
|
simde_mm256_set_epi16(INT16_C( 28327), INT16_C( 28059), INT16_C( 29505), INT16_C( 22745),
|
|
INT16_C( 9516), INT16_C( -829), INT16_C( 28067), INT16_C( 29028),
|
|
INT16_C( 27266), INT16_C(-10805), INT16_C( 7071), INT16_C( 25753),
|
|
INT16_C( 27748), INT16_C( 11490), INT16_C( -9313), INT16_C( 7320)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28396), INT16_C( 3489), INT16_C( 18687), INT16_C( 31879),
|
|
INT16_C( 15536), INT16_C(-17843), INT16_C( 25087), INT16_C(-27693),
|
|
INT16_C(-17170), INT16_C( 22369), INT16_C(-27360), INT16_C( -5829),
|
|
INT16_C(-28550), INT16_C( 650), INT16_C(-11446), INT16_C( 3172)),
|
|
simde_mm256_set_epi16(INT16_C(-17057), INT16_C(-18950), INT16_C( 15210), INT16_C(-25469),
|
|
INT16_C(-29475), INT16_C( 24211), INT16_C(-14409), INT16_C( -9847),
|
|
INT16_C( 14530), INT16_C(-24184), INT16_C(-29404), INT16_C( 9879),
|
|
INT16_C( 2544), INT16_C(-17943), INT16_C( 7392), INT16_C( 21259)),
|
|
simde_mm256_set_epi16(INT16_C(-17057), INT16_C( 3489), INT16_C( 18687), INT16_C( 31879),
|
|
INT16_C( 15536), INT16_C( 24211), INT16_C( 25087), INT16_C( -9847),
|
|
INT16_C( 14530), INT16_C( 22369), INT16_C(-27360), INT16_C( 9879),
|
|
INT16_C( 2544), INT16_C( 650), INT16_C( 7392), INT16_C( 21259)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_max_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_max_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-1578701412), INT32_C(-1861943275), INT32_C( 1717826073), INT32_C( -689858277),
|
|
INT32_C(-2120069619), INT32_C( -269745295), INT32_C( 993893699), INT32_C( 1747535129)),
|
|
simde_mm256_set_epi32(INT32_C(-1662415513), INT32_C( 528745592), INT32_C( -219858588), INT32_C( 622357704),
|
|
INT32_C(-2013314779), INT32_C(-1188086430), INT32_C( 1171120200), INT32_C( 259652605)),
|
|
simde_mm256_set_epi32(INT32_C(-1578701412), INT32_C( 528745592), INT32_C( 1717826073), INT32_C( 622357704),
|
|
INT32_C(-2013314779), INT32_C( -269745295), INT32_C( 1171120200), INT32_C( 1747535129)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1892880717), INT32_C( 489135272), INT32_C( 1334433155), INT32_C( 820950025),
|
|
INT32_C( 875780372), INT32_C( 1165542940), INT32_C(-1922521413), INT32_C( 1603602866)),
|
|
simde_mm256_set_epi32(INT32_C( 1774078122), INT32_C( 717307143), INT32_C( 1385706638), INT32_C( 1722931608),
|
|
INT32_C( 722989282), INT32_C( 346685962), INT32_C( 888351034), INT32_C(-1040558861)),
|
|
simde_mm256_set_epi32(INT32_C( 1892880717), INT32_C( 717307143), INT32_C( 1385706638), INT32_C( 1722931608),
|
|
INT32_C( 875780372), INT32_C( 1165542940), INT32_C( 888351034), INT32_C( 1603602866)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 542527818), INT32_C( 704072326), INT32_C(-1102544845), INT32_C( 1444592706),
|
|
INT32_C(-1925092178), INT32_C( -204731801), INT32_C( 775742710), INT32_C( 1177505754)),
|
|
simde_mm256_set_epi32(INT32_C( -551142491), INT32_C( 444795418), INT32_C( -825745617), INT32_C(-1787304548),
|
|
INT32_C(-1241777147), INT32_C( 265612525), INT32_C( 2134936507), INT32_C(-1780599144)),
|
|
simde_mm256_set_epi32(INT32_C( 542527818), INT32_C( 704072326), INT32_C( -825745617), INT32_C( 1444592706),
|
|
INT32_C(-1241777147), INT32_C( 265612525), INT32_C( 2134936507), INT32_C( 1177505754)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 788610578), INT32_C( 1831830497), INT32_C( -755374494), INT32_C( 2130364415),
|
|
INT32_C( -342185910), INT32_C( 854700402), INT32_C( 1343385181), INT32_C( 891289886)),
|
|
simde_mm256_set_epi32(INT32_C( 1917738489), INT32_C( 690751883), INT32_C(-1037858966), INT32_C(-1567909551),
|
|
INT32_C( -26783282), INT32_C( -715472333), INT32_C( -713074037), INT32_C( -17697982)),
|
|
simde_mm256_set_epi32(INT32_C( 1917738489), INT32_C( 1831830497), INT32_C( -755374494), INT32_C( 2130364415),
|
|
INT32_C( -26783282), INT32_C( 854700402), INT32_C( 1343385181), INT32_C( 891289886)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1796568981), INT32_C(-1846046069), INT32_C(-1495880353), INT32_C(-1105562137),
|
|
INT32_C(-2000119429), INT32_C( 450352139), INT32_C( -734796291), INT32_C(-1851159287)),
|
|
simde_mm256_set_epi32(INT32_C( 1076027923), INT32_C( 1999677975), INT32_C( -498539521), INT32_C(-1166856281),
|
|
INT32_C(-1611419248), INT32_C(-1268341170), INT32_C(-1115547457), INT32_C( 1554907000)),
|
|
simde_mm256_set_epi32(INT32_C( 1796568981), INT32_C( 1999677975), INT32_C( -498539521), INT32_C(-1105562137),
|
|
INT32_C(-1611419248), INT32_C( 450352139), INT32_C( -734796291), INT32_C( 1554907000)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -263364521), INT32_C( 1666932430), INT32_C( 378039954), INT32_C( 1866502452),
|
|
INT32_C( -756222443), INT32_C( -752660448), INT32_C( 1087715357), INT32_C( 1808069656)),
|
|
simde_mm256_set_epi32(INT32_C( 10375777), INT32_C( 958545984), INT32_C(-1916055393), INT32_C(-1450264731),
|
|
INT32_C( -550755823), INT32_C( 2131394316), INT32_C( 243861812), INT32_C( 1031114919)),
|
|
simde_mm256_set_epi32(INT32_C( 10375777), INT32_C( 1666932430), INT32_C( 378039954), INT32_C( 1866502452),
|
|
INT32_C( -550755823), INT32_C( 2131394316), INT32_C( 1087715357), INT32_C( 1808069656)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1075159077), INT32_C( -789508054), INT32_C(-2102436600), INT32_C( 177892995),
|
|
INT32_C(-1910430929), INT32_C( -135620958), INT32_C( 1899951190), INT32_C(-1286116105)),
|
|
simde_mm256_set_epi32(INT32_C(-1117240644), INT32_C(-1011771686), INT32_C(-1764247251), INT32_C( -953836385),
|
|
INT32_C(-1633093106), INT32_C( 1815106343), INT32_C( 1418749534), INT32_C( 1718021188)),
|
|
simde_mm256_set_epi32(INT32_C(-1075159077), INT32_C( -789508054), INT32_C(-1764247251), INT32_C( 177892995),
|
|
INT32_C(-1633093106), INT32_C( 1815106343), INT32_C( 1899951190), INT32_C( 1718021188)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -585726505), INT32_C( -735532451), INT32_C( 1572773329), INT32_C(-1610167093),
|
|
INT32_C( 934479765), INT32_C( 1726304740), INT32_C(-1433078949), INT32_C(-1056217637)),
|
|
simde_mm256_set_epi32(INT32_C( 201330788), INT32_C( 1825214883), INT32_C( 489777084), INT32_C( -824102072),
|
|
INT32_C(-1255028012), INT32_C(-1300324544), INT32_C(-1269112569), INT32_C( -124131174)),
|
|
simde_mm256_set_epi32(INT32_C( 201330788), INT32_C( 1825214883), INT32_C( 1572773329), INT32_C( -824102072),
|
|
INT32_C( 934479765), INT32_C( 1726304740), INT32_C(-1269112569), INT32_C( -124131174)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_max_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_min_epu8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 83), UINT8_C( 77), UINT8_C(142), UINT8_C(252),
|
|
UINT8_C( 19), UINT8_C( 26), UINT8_C(193), UINT8_C( 92),
|
|
UINT8_C(253), UINT8_C(183), UINT8_C(225), UINT8_C(205),
|
|
UINT8_C(165), UINT8_C( 19), UINT8_C(154), UINT8_C(158),
|
|
UINT8_C(126), UINT8_C(221), UINT8_C(206), UINT8_C( 22),
|
|
UINT8_C(217), UINT8_C(166), UINT8_C(237), UINT8_C(161),
|
|
UINT8_C(207), UINT8_C( 26), UINT8_C( 36), UINT8_C( 78),
|
|
UINT8_C( 55), UINT8_C(167), UINT8_C( 36), UINT8_C(198)),
|
|
simde_x_mm256_set_epu8(UINT8_C(203), UINT8_C( 44), UINT8_C( 47), UINT8_C( 51),
|
|
UINT8_C(185), UINT8_C( 39), UINT8_C(221), UINT8_C( 75),
|
|
UINT8_C(182), UINT8_C(100), UINT8_C(238), UINT8_C(172),
|
|
UINT8_C(248), UINT8_C(164), UINT8_C( 91), UINT8_C(138),
|
|
UINT8_C(128), UINT8_C( 29), UINT8_C(136), UINT8_C(164),
|
|
UINT8_C( 43), UINT8_C( 85), UINT8_C(168), UINT8_C(105),
|
|
UINT8_C(240), UINT8_C(205), UINT8_C(221), UINT8_C(217),
|
|
UINT8_C(244), UINT8_C(220), UINT8_C(102), UINT8_C( 37)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 83), UINT8_C( 44), UINT8_C( 47), UINT8_C( 51),
|
|
UINT8_C( 19), UINT8_C( 26), UINT8_C(193), UINT8_C( 75),
|
|
UINT8_C(182), UINT8_C(100), UINT8_C(225), UINT8_C(172),
|
|
UINT8_C(165), UINT8_C( 19), UINT8_C( 91), UINT8_C(138),
|
|
UINT8_C(126), UINT8_C( 29), UINT8_C(136), UINT8_C( 22),
|
|
UINT8_C( 43), UINT8_C( 85), UINT8_C(168), UINT8_C(105),
|
|
UINT8_C(207), UINT8_C( 26), UINT8_C( 36), UINT8_C( 78),
|
|
UINT8_C( 55), UINT8_C(167), UINT8_C( 36), UINT8_C( 37)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(177), UINT8_C(210), UINT8_C( 28), UINT8_C(116),
|
|
UINT8_C(174), UINT8_C(162), UINT8_C(241), UINT8_C( 21),
|
|
UINT8_C(126), UINT8_C(202), UINT8_C(250), UINT8_C(169),
|
|
UINT8_C( 43), UINT8_C(239), UINT8_C(224), UINT8_C(202),
|
|
UINT8_C(208), UINT8_C( 48), UINT8_C(132), UINT8_C( 78),
|
|
UINT8_C( 59), UINT8_C( 2), UINT8_C(213), UINT8_C(228),
|
|
UINT8_C( 42), UINT8_C( 45), UINT8_C(244), UINT8_C( 41),
|
|
UINT8_C( 49), UINT8_C( 48), UINT8_C(111), UINT8_C(211)),
|
|
simde_x_mm256_set_epu8(UINT8_C(114), UINT8_C( 33), UINT8_C(210), UINT8_C(232),
|
|
UINT8_C(128), UINT8_C(122), UINT8_C(216), UINT8_C(228),
|
|
UINT8_C( 91), UINT8_C( 37), UINT8_C(119), UINT8_C(203),
|
|
UINT8_C(236), UINT8_C( 24), UINT8_C(170), UINT8_C(120),
|
|
UINT8_C( 95), UINT8_C(231), UINT8_C(152), UINT8_C(143),
|
|
UINT8_C( 42), UINT8_C( 38), UINT8_C(240), UINT8_C(125),
|
|
UINT8_C(124), UINT8_C(251), UINT8_C(118), UINT8_C( 44),
|
|
UINT8_C( 68), UINT8_C( 42), UINT8_C( 54), UINT8_C(185)),
|
|
simde_x_mm256_set_epu8(UINT8_C(114), UINT8_C( 33), UINT8_C( 28), UINT8_C(116),
|
|
UINT8_C(128), UINT8_C(122), UINT8_C(216), UINT8_C( 21),
|
|
UINT8_C( 91), UINT8_C( 37), UINT8_C(119), UINT8_C(169),
|
|
UINT8_C( 43), UINT8_C( 24), UINT8_C(170), UINT8_C(120),
|
|
UINT8_C( 95), UINT8_C( 48), UINT8_C(132), UINT8_C( 78),
|
|
UINT8_C( 42), UINT8_C( 2), UINT8_C(213), UINT8_C(125),
|
|
UINT8_C( 42), UINT8_C( 45), UINT8_C(118), UINT8_C( 41),
|
|
UINT8_C( 49), UINT8_C( 42), UINT8_C( 54), UINT8_C(185)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 78), UINT8_C( 16), UINT8_C( 42), UINT8_C(217),
|
|
UINT8_C( 5), UINT8_C( 96), UINT8_C( 7), UINT8_C( 83),
|
|
UINT8_C( 16), UINT8_C(208), UINT8_C( 1), UINT8_C(207),
|
|
UINT8_C( 75), UINT8_C(207), UINT8_C(252), UINT8_C( 92),
|
|
UINT8_C(122), UINT8_C( 24), UINT8_C( 32), UINT8_C(104),
|
|
UINT8_C( 88), UINT8_C( 59), UINT8_C(218), UINT8_C( 28),
|
|
UINT8_C( 51), UINT8_C( 64), UINT8_C( 65), UINT8_C( 92),
|
|
UINT8_C( 24), UINT8_C( 83), UINT8_C(248), UINT8_C(243)),
|
|
simde_x_mm256_set_epu8(UINT8_C(167), UINT8_C( 87), UINT8_C( 75), UINT8_C( 10),
|
|
UINT8_C( 44), UINT8_C(173), UINT8_C(210), UINT8_C(150),
|
|
UINT8_C(187), UINT8_C(229), UINT8_C(246), UINT8_C( 10),
|
|
UINT8_C( 80), UINT8_C( 74), UINT8_C(174), UINT8_C(128),
|
|
UINT8_C( 64), UINT8_C(160), UINT8_C(126), UINT8_C(231),
|
|
UINT8_C(215), UINT8_C( 80), UINT8_C(115), UINT8_C( 66),
|
|
UINT8_C(204), UINT8_C( 18), UINT8_C(158), UINT8_C(133),
|
|
UINT8_C(170), UINT8_C(119), UINT8_C(216), UINT8_C(196)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 78), UINT8_C( 16), UINT8_C( 42), UINT8_C( 10),
|
|
UINT8_C( 5), UINT8_C( 96), UINT8_C( 7), UINT8_C( 83),
|
|
UINT8_C( 16), UINT8_C(208), UINT8_C( 1), UINT8_C( 10),
|
|
UINT8_C( 75), UINT8_C( 74), UINT8_C(174), UINT8_C( 92),
|
|
UINT8_C( 64), UINT8_C( 24), UINT8_C( 32), UINT8_C(104),
|
|
UINT8_C( 88), UINT8_C( 59), UINT8_C(115), UINT8_C( 28),
|
|
UINT8_C( 51), UINT8_C( 18), UINT8_C( 65), UINT8_C( 92),
|
|
UINT8_C( 24), UINT8_C( 83), UINT8_C(216), UINT8_C(196)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 4), UINT8_C(145), UINT8_C( 75), UINT8_C( 42),
|
|
UINT8_C( 60), UINT8_C(146), UINT8_C(158), UINT8_C( 3),
|
|
UINT8_C( 57), UINT8_C(210), UINT8_C( 14), UINT8_C(106),
|
|
UINT8_C( 96), UINT8_C(136), UINT8_C( 82), UINT8_C( 54),
|
|
UINT8_C(227), UINT8_C(202), UINT8_C( 35), UINT8_C(184),
|
|
UINT8_C( 41), UINT8_C(205), UINT8_C(162), UINT8_C(206),
|
|
UINT8_C(247), UINT8_C( 69), UINT8_C(139), UINT8_C(186),
|
|
UINT8_C( 13), UINT8_C(119), UINT8_C( 79), UINT8_C( 53)),
|
|
simde_x_mm256_set_epu8(UINT8_C(239), UINT8_C(239), UINT8_C( 37), UINT8_C(187),
|
|
UINT8_C(237), UINT8_C(203), UINT8_C( 68), UINT8_C( 35),
|
|
UINT8_C(147), UINT8_C(109), UINT8_C(244), UINT8_C(194),
|
|
UINT8_C(131), UINT8_C(189), UINT8_C( 51), UINT8_C( 84),
|
|
UINT8_C( 48), UINT8_C( 26), UINT8_C(203), UINT8_C( 35),
|
|
UINT8_C(128), UINT8_C( 76), UINT8_C( 16), UINT8_C( 52),
|
|
UINT8_C(103), UINT8_C(192), UINT8_C(105), UINT8_C( 65),
|
|
UINT8_C(117), UINT8_C(100), UINT8_C( 71), UINT8_C(124)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 4), UINT8_C(145), UINT8_C( 37), UINT8_C( 42),
|
|
UINT8_C( 60), UINT8_C(146), UINT8_C( 68), UINT8_C( 3),
|
|
UINT8_C( 57), UINT8_C(109), UINT8_C( 14), UINT8_C(106),
|
|
UINT8_C( 96), UINT8_C(136), UINT8_C( 51), UINT8_C( 54),
|
|
UINT8_C( 48), UINT8_C( 26), UINT8_C( 35), UINT8_C( 35),
|
|
UINT8_C( 41), UINT8_C( 76), UINT8_C( 16), UINT8_C( 52),
|
|
UINT8_C(103), UINT8_C( 69), UINT8_C(105), UINT8_C( 65),
|
|
UINT8_C( 13), UINT8_C(100), UINT8_C( 71), UINT8_C( 53)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(144), UINT8_C(140), UINT8_C(121), UINT8_C(161),
|
|
UINT8_C( 2), UINT8_C( 56), UINT8_C(102), UINT8_C(220),
|
|
UINT8_C(246), UINT8_C( 67), UINT8_C( 19), UINT8_C( 67),
|
|
UINT8_C( 18), UINT8_C(117), UINT8_C(155), UINT8_C( 84),
|
|
UINT8_C( 3), UINT8_C(204), UINT8_C( 72), UINT8_C( 34),
|
|
UINT8_C(218), UINT8_C(208), UINT8_C( 99), UINT8_C( 27),
|
|
UINT8_C(224), UINT8_C( 99), UINT8_C(119), UINT8_C(221),
|
|
UINT8_C( 98), UINT8_C(202), UINT8_C(146), UINT8_C( 18)),
|
|
simde_x_mm256_set_epu8(UINT8_C(127), UINT8_C(108), UINT8_C( 76), UINT8_C(146),
|
|
UINT8_C(206), UINT8_C(221), UINT8_C(206), UINT8_C(168),
|
|
UINT8_C( 11), UINT8_C(166), UINT8_C(228), UINT8_C(131),
|
|
UINT8_C( 46), UINT8_C( 42), UINT8_C(192), UINT8_C(117),
|
|
UINT8_C(166), UINT8_C(151), UINT8_C(189), UINT8_C(138),
|
|
UINT8_C(121), UINT8_C( 19), UINT8_C( 89), UINT8_C(188),
|
|
UINT8_C(255), UINT8_C(104), UINT8_C(124), UINT8_C(206),
|
|
UINT8_C( 89), UINT8_C(160), UINT8_C(162), UINT8_C( 10)),
|
|
simde_x_mm256_set_epu8(UINT8_C(127), UINT8_C(108), UINT8_C( 76), UINT8_C(146),
|
|
UINT8_C( 2), UINT8_C( 56), UINT8_C(102), UINT8_C(168),
|
|
UINT8_C( 11), UINT8_C( 67), UINT8_C( 19), UINT8_C( 67),
|
|
UINT8_C( 18), UINT8_C( 42), UINT8_C(155), UINT8_C( 84),
|
|
UINT8_C( 3), UINT8_C(151), UINT8_C( 72), UINT8_C( 34),
|
|
UINT8_C(121), UINT8_C( 19), UINT8_C( 89), UINT8_C( 27),
|
|
UINT8_C(224), UINT8_C( 99), UINT8_C(119), UINT8_C(206),
|
|
UINT8_C( 89), UINT8_C(160), UINT8_C(146), UINT8_C( 10)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 74), UINT8_C(143), UINT8_C( 19), UINT8_C( 8),
|
|
UINT8_C( 11), UINT8_C(124), UINT8_C( 76), UINT8_C( 6),
|
|
UINT8_C(148), UINT8_C( 67), UINT8_C(224), UINT8_C(163),
|
|
UINT8_C(113), UINT8_C(245), UINT8_C( 59), UINT8_C( 27),
|
|
UINT8_C(131), UINT8_C(161), UINT8_C(251), UINT8_C(125),
|
|
UINT8_C(201), UINT8_C(252), UINT8_C(140), UINT8_C( 24),
|
|
UINT8_C(254), UINT8_C(183), UINT8_C(205), UINT8_C(238),
|
|
UINT8_C(180), UINT8_C( 21), UINT8_C( 59), UINT8_C(174)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 98), UINT8_C(152), UINT8_C(212), UINT8_C(148),
|
|
UINT8_C(183), UINT8_C( 37), UINT8_C(170), UINT8_C( 93),
|
|
UINT8_C( 52), UINT8_C(182), UINT8_C(181), UINT8_C(242),
|
|
UINT8_C(229), UINT8_C(182), UINT8_C(143), UINT8_C( 43),
|
|
UINT8_C(177), UINT8_C(115), UINT8_C(177), UINT8_C(170),
|
|
UINT8_C( 71), UINT8_C(222), UINT8_C(162), UINT8_C(198),
|
|
UINT8_C(195), UINT8_C(222), UINT8_C( 10), UINT8_C( 86),
|
|
UINT8_C( 48), UINT8_C(215), UINT8_C( 16), UINT8_C( 69)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 74), UINT8_C(143), UINT8_C( 19), UINT8_C( 8),
|
|
UINT8_C( 11), UINT8_C( 37), UINT8_C( 76), UINT8_C( 6),
|
|
UINT8_C( 52), UINT8_C( 67), UINT8_C(181), UINT8_C(163),
|
|
UINT8_C(113), UINT8_C(182), UINT8_C( 59), UINT8_C( 27),
|
|
UINT8_C(131), UINT8_C(115), UINT8_C(177), UINT8_C(125),
|
|
UINT8_C( 71), UINT8_C(222), UINT8_C(140), UINT8_C( 24),
|
|
UINT8_C(195), UINT8_C(183), UINT8_C( 10), UINT8_C( 86),
|
|
UINT8_C( 48), UINT8_C( 21), UINT8_C( 16), UINT8_C( 69)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(119), UINT8_C(117), UINT8_C( 13), UINT8_C(207),
|
|
UINT8_C( 70), UINT8_C(197), UINT8_C(152), UINT8_C( 89),
|
|
UINT8_C(135), UINT8_C(159), UINT8_C( 50), UINT8_C(184),
|
|
UINT8_C(155), UINT8_C( 62), UINT8_C(253), UINT8_C(248),
|
|
UINT8_C(240), UINT8_C(207), UINT8_C( 53), UINT8_C(202),
|
|
UINT8_C(203), UINT8_C(241), UINT8_C(218), UINT8_C(118),
|
|
UINT8_C(121), UINT8_C(140), UINT8_C(125), UINT8_C( 65),
|
|
UINT8_C( 70), UINT8_C(249), UINT8_C(217), UINT8_C(237)),
|
|
simde_x_mm256_set_epu8(UINT8_C(125), UINT8_C( 67), UINT8_C( 52), UINT8_C( 8),
|
|
UINT8_C(207), UINT8_C(205), UINT8_C( 56), UINT8_C(196),
|
|
UINT8_C( 42), UINT8_C(240), UINT8_C(116), UINT8_C( 44),
|
|
UINT8_C(109), UINT8_C(201), UINT8_C(220), UINT8_C(182),
|
|
UINT8_C(224), UINT8_C( 99), UINT8_C(151), UINT8_C(222),
|
|
UINT8_C(220), UINT8_C(252), UINT8_C( 6), UINT8_C(245),
|
|
UINT8_C(215), UINT8_C(221), UINT8_C(177), UINT8_C(240),
|
|
UINT8_C(118), UINT8_C(155), UINT8_C(143), UINT8_C(240)),
|
|
simde_x_mm256_set_epu8(UINT8_C(119), UINT8_C( 67), UINT8_C( 13), UINT8_C( 8),
|
|
UINT8_C( 70), UINT8_C(197), UINT8_C( 56), UINT8_C( 89),
|
|
UINT8_C( 42), UINT8_C(159), UINT8_C( 50), UINT8_C( 44),
|
|
UINT8_C(109), UINT8_C( 62), UINT8_C(220), UINT8_C(182),
|
|
UINT8_C(224), UINT8_C( 99), UINT8_C( 53), UINT8_C(202),
|
|
UINT8_C(203), UINT8_C(241), UINT8_C( 6), UINT8_C(118),
|
|
UINT8_C(121), UINT8_C(140), UINT8_C(125), UINT8_C( 65),
|
|
UINT8_C( 70), UINT8_C(155), UINT8_C(143), UINT8_C(237)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(201), UINT8_C(240), UINT8_C( 36), UINT8_C( 35),
|
|
UINT8_C(236), UINT8_C( 73), UINT8_C( 29), UINT8_C(244),
|
|
UINT8_C(140), UINT8_C( 36), UINT8_C(200), UINT8_C(155),
|
|
UINT8_C( 8), UINT8_C(245), UINT8_C( 10), UINT8_C( 93),
|
|
UINT8_C(124), UINT8_C(125), UINT8_C( 25), UINT8_C(192),
|
|
UINT8_C( 32), UINT8_C(119), UINT8_C(142), UINT8_C(147),
|
|
UINT8_C( 56), UINT8_C( 66), UINT8_C(172), UINT8_C(214),
|
|
UINT8_C(227), UINT8_C(203), UINT8_C( 62), UINT8_C( 37)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 5), UINT8_C( 64), UINT8_C(205), UINT8_C(118),
|
|
UINT8_C( 53), UINT8_C( 5), UINT8_C( 28), UINT8_C( 17),
|
|
UINT8_C( 93), UINT8_C(223), UINT8_C( 18), UINT8_C( 93),
|
|
UINT8_C(210), UINT8_C(158), UINT8_C( 37), UINT8_C( 66),
|
|
UINT8_C(184), UINT8_C(142), UINT8_C(246), UINT8_C( 15),
|
|
UINT8_C(153), UINT8_C( 9), UINT8_C(121), UINT8_C(211),
|
|
UINT8_C( 7), UINT8_C( 12), UINT8_C( 41), UINT8_C( 14),
|
|
UINT8_C(127), UINT8_C(208), UINT8_C( 7), UINT8_C( 93)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 5), UINT8_C( 64), UINT8_C( 36), UINT8_C( 35),
|
|
UINT8_C( 53), UINT8_C( 5), UINT8_C( 28), UINT8_C( 17),
|
|
UINT8_C( 93), UINT8_C( 36), UINT8_C( 18), UINT8_C( 93),
|
|
UINT8_C( 8), UINT8_C(158), UINT8_C( 10), UINT8_C( 66),
|
|
UINT8_C(124), UINT8_C(125), UINT8_C( 25), UINT8_C( 15),
|
|
UINT8_C( 32), UINT8_C( 9), UINT8_C(121), UINT8_C(147),
|
|
UINT8_C( 7), UINT8_C( 12), UINT8_C( 41), UINT8_C( 14),
|
|
UINT8_C(127), UINT8_C(203), UINT8_C( 7), UINT8_C( 37)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_min_epu8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_min_epu16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 21985), UINT16_C( 37408), UINT16_C( 64559), UINT16_C( 50506),
|
|
UINT16_C( 21348), UINT16_C( 50917), UINT16_C( 43331), UINT16_C( 4092),
|
|
UINT16_C( 58372), UINT16_C( 9106), UINT16_C( 30380), UINT16_C( 36427),
|
|
UINT16_C( 37095), UINT16_C( 38478), UINT16_C( 20272), UINT16_C( 48447)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 1564), UINT16_C( 15505), UINT16_C( 60508), UINT16_C( 59764),
|
|
UINT16_C( 4697), UINT16_C( 47817), UINT16_C( 4510), UINT16_C( 63199),
|
|
UINT16_C( 46692), UINT16_C( 14440), UINT16_C( 53716), UINT16_C( 9747),
|
|
UINT16_C( 59579), UINT16_C( 43113), UINT16_C( 42711), UINT16_C( 11767)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 1564), UINT16_C( 15505), UINT16_C( 60508), UINT16_C( 50506),
|
|
UINT16_C( 4697), UINT16_C( 47817), UINT16_C( 4510), UINT16_C( 4092),
|
|
UINT16_C( 46692), UINT16_C( 9106), UINT16_C( 30380), UINT16_C( 9747),
|
|
UINT16_C( 37095), UINT16_C( 38478), UINT16_C( 20272), UINT16_C( 11767)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 19955), UINT16_C( 258), UINT16_C( 7499), UINT16_C( 10868),
|
|
UINT16_C( 6000), UINT16_C( 24962), UINT16_C( 19695), UINT16_C( 32604),
|
|
UINT16_C( 25690), UINT16_C( 5375), UINT16_C( 7487), UINT16_C( 63875),
|
|
UINT16_C( 58580), UINT16_C( 15823), UINT16_C( 50945), UINT16_C( 25251)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 40574), UINT16_C( 18810), UINT16_C( 13888), UINT16_C( 49326),
|
|
UINT16_C( 64223), UINT16_C( 65297), UINT16_C( 61868), UINT16_C( 28086),
|
|
UINT16_C( 41020), UINT16_C( 35514), UINT16_C( 58890), UINT16_C( 3107),
|
|
UINT16_C( 7813), UINT16_C( 34771), UINT16_C( 34306), UINT16_C( 41125)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 19955), UINT16_C( 258), UINT16_C( 7499), UINT16_C( 10868),
|
|
UINT16_C( 6000), UINT16_C( 24962), UINT16_C( 19695), UINT16_C( 28086),
|
|
UINT16_C( 25690), UINT16_C( 5375), UINT16_C( 7487), UINT16_C( 3107),
|
|
UINT16_C( 7813), UINT16_C( 15823), UINT16_C( 34306), UINT16_C( 25251)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 54635), UINT16_C( 31649), UINT16_C( 37203), UINT16_C( 44269),
|
|
UINT16_C( 35808), UINT16_C( 48759), UINT16_C( 30288), UINT16_C( 48436),
|
|
UINT16_C( 40625), UINT16_C( 61846), UINT16_C( 14756), UINT16_C( 44804),
|
|
UINT16_C( 3949), UINT16_C( 42131), UINT16_C( 39125), UINT16_C( 37028)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 57949), UINT16_C( 27621), UINT16_C( 31226), UINT16_C( 53362),
|
|
UINT16_C( 27488), UINT16_C( 47169), UINT16_C( 31030), UINT16_C( 24207),
|
|
UINT16_C( 4423), UINT16_C( 14910), UINT16_C( 30727), UINT16_C( 21908),
|
|
UINT16_C( 50230), UINT16_C( 46262), UINT16_C( 25828), UINT16_C( 42233)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 54635), UINT16_C( 27621), UINT16_C( 31226), UINT16_C( 44269),
|
|
UINT16_C( 27488), UINT16_C( 47169), UINT16_C( 30288), UINT16_C( 24207),
|
|
UINT16_C( 4423), UINT16_C( 14910), UINT16_C( 14756), UINT16_C( 21908),
|
|
UINT16_C( 3949), UINT16_C( 42131), UINT16_C( 25828), UINT16_C( 37028)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 20152), UINT16_C( 27686), UINT16_C( 12466), UINT16_C( 27372),
|
|
UINT16_C( 44680), UINT16_C( 5041), UINT16_C( 65098), UINT16_C( 61815),
|
|
UINT16_C( 46798), UINT16_C( 41939), UINT16_C( 44487), UINT16_C( 43543),
|
|
UINT16_C( 48144), UINT16_C( 56243), UINT16_C( 61060), UINT16_C( 26152)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 5079), UINT16_C( 44741), UINT16_C( 26080), UINT16_C( 22525),
|
|
UINT16_C( 28605), UINT16_C( 1946), UINT16_C( 59845), UINT16_C( 20686),
|
|
UINT16_C( 33395), UINT16_C( 20058), UINT16_C( 31413), UINT16_C( 18280),
|
|
UINT16_C( 56644), UINT16_C( 26935), UINT16_C( 15289), UINT16_C( 20043)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 5079), UINT16_C( 27686), UINT16_C( 12466), UINT16_C( 22525),
|
|
UINT16_C( 28605), UINT16_C( 1946), UINT16_C( 59845), UINT16_C( 20686),
|
|
UINT16_C( 33395), UINT16_C( 20058), UINT16_C( 31413), UINT16_C( 18280),
|
|
UINT16_C( 48144), UINT16_C( 26935), UINT16_C( 15289), UINT16_C( 20043)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 50822), UINT16_C( 22037), UINT16_C( 40380), UINT16_C( 27848),
|
|
UINT16_C( 22453), UINT16_C( 65299), UINT16_C( 416), UINT16_C( 55389),
|
|
UINT16_C( 3972), UINT16_C( 20597), UINT16_C( 3476), UINT16_C( 46123),
|
|
UINT16_C( 29301), UINT16_C( 51108), UINT16_C( 35981), UINT16_C( 8905)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 25885), UINT16_C( 59271), UINT16_C( 16174), UINT16_C( 33039),
|
|
UINT16_C( 55355), UINT16_C( 49380), UINT16_C( 36750), UINT16_C( 16476),
|
|
UINT16_C( 22855), UINT16_C( 12806), UINT16_C( 3167), UINT16_C( 41606),
|
|
UINT16_C( 57407), UINT16_C( 61681), UINT16_C( 28474), UINT16_C( 18472)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 25885), UINT16_C( 22037), UINT16_C( 16174), UINT16_C( 27848),
|
|
UINT16_C( 22453), UINT16_C( 49380), UINT16_C( 416), UINT16_C( 16476),
|
|
UINT16_C( 3972), UINT16_C( 12806), UINT16_C( 3167), UINT16_C( 41606),
|
|
UINT16_C( 29301), UINT16_C( 51108), UINT16_C( 28474), UINT16_C( 8905)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 38411), UINT16_C( 38062), UINT16_C( 63184), UINT16_C( 5327),
|
|
UINT16_C( 2662), UINT16_C( 37879), UINT16_C( 38436), UINT16_C( 35926),
|
|
UINT16_C( 37505), UINT16_C( 16059), UINT16_C( 30023), UINT16_C( 13435),
|
|
UINT16_C( 55897), UINT16_C( 41272), UINT16_C( 35066), UINT16_C( 45732)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 4290), UINT16_C( 8244), UINT16_C( 17610), UINT16_C( 27365),
|
|
UINT16_C( 41082), UINT16_C( 32808), UINT16_C( 11681), UINT16_C( 25455),
|
|
UINT16_C( 5969), UINT16_C( 52658), UINT16_C( 58404), UINT16_C( 43100),
|
|
UINT16_C( 23433), UINT16_C( 56801), UINT16_C( 40070), UINT16_C( 43765)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 4290), UINT16_C( 8244), UINT16_C( 17610), UINT16_C( 5327),
|
|
UINT16_C( 2662), UINT16_C( 32808), UINT16_C( 11681), UINT16_C( 25455),
|
|
UINT16_C( 5969), UINT16_C( 16059), UINT16_C( 30023), UINT16_C( 13435),
|
|
UINT16_C( 23433), UINT16_C( 41272), UINT16_C( 35066), UINT16_C( 43765)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 3920), UINT16_C( 2672), UINT16_C( 125), UINT16_C( 16695),
|
|
UINT16_C( 9026), UINT16_C( 9313), UINT16_C( 36585), UINT16_C( 38441),
|
|
UINT16_C( 50905), UINT16_C( 11221), UINT16_C( 28122), UINT16_C( 18875),
|
|
UINT16_C( 30095), UINT16_C( 22178), UINT16_C( 51689), UINT16_C( 19916)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 58371), UINT16_C( 46494), UINT16_C( 62748), UINT16_C( 27388),
|
|
UINT16_C( 64543), UINT16_C( 23688), UINT16_C( 42332), UINT16_C( 43841),
|
|
UINT16_C( 27632), UINT16_C( 34295), UINT16_C( 21862), UINT16_C( 32789),
|
|
UINT16_C( 42560), UINT16_C( 49564), UINT16_C( 10833), UINT16_C( 33089)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 3920), UINT16_C( 2672), UINT16_C( 125), UINT16_C( 16695),
|
|
UINT16_C( 9026), UINT16_C( 9313), UINT16_C( 36585), UINT16_C( 38441),
|
|
UINT16_C( 27632), UINT16_C( 11221), UINT16_C( 21862), UINT16_C( 18875),
|
|
UINT16_C( 30095), UINT16_C( 22178), UINT16_C( 10833), UINT16_C( 19916)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 32155), UINT16_C( 62138), UINT16_C( 45089), UINT16_C( 64592),
|
|
UINT16_C( 57638), UINT16_C( 36363), UINT16_C( 16857), UINT16_C( 65526),
|
|
UINT16_C( 4908), UINT16_C( 33576), UINT16_C( 61433), UINT16_C( 64967),
|
|
UINT16_C( 30812), UINT16_C( 35007), UINT16_C( 3114), UINT16_C( 45540)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 46521), UINT16_C( 5351), UINT16_C( 22645), UINT16_C( 25668),
|
|
UINT16_C( 14295), UINT16_C( 52574), UINT16_C( 9596), UINT16_C( 37163),
|
|
UINT16_C( 27912), UINT16_C( 36566), UINT16_C( 34315), UINT16_C( 2157),
|
|
UINT16_C( 51210), UINT16_C( 14248), UINT16_C( 30537), UINT16_C( 57705)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 32155), UINT16_C( 5351), UINT16_C( 22645), UINT16_C( 25668),
|
|
UINT16_C( 14295), UINT16_C( 36363), UINT16_C( 9596), UINT16_C( 37163),
|
|
UINT16_C( 4908), UINT16_C( 33576), UINT16_C( 34315), UINT16_C( 2157),
|
|
UINT16_C( 30812), UINT16_C( 14248), UINT16_C( 3114), UINT16_C( 45540)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_min_epu16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_min_epu32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1967336836), UINT32_C(4229175532), UINT32_C(3383228965), UINT32_C( 979444700),
|
|
UINT32_C( 138906106), UINT32_C( 146006389), UINT32_C(2494756173), UINT32_C(2105904126)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2893387611), UINT32_C(2460478173), UINT32_C(3299027518), UINT32_C( 896184310),
|
|
UINT32_C(1699227452), UINT32_C(1922730015), UINT32_C(1220777705), UINT32_C( 483108197)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1967336836), UINT32_C(2460478173), UINT32_C(3299027518), UINT32_C( 896184310),
|
|
UINT32_C( 138906106), UINT32_C( 146006389), UINT32_C(1220777705), UINT32_C( 483108197)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 596030925), UINT32_C(1623933296), UINT32_C(4116080130), UINT32_C(2140384796),
|
|
UINT32_C(1701047302), UINT32_C( 386212074), UINT32_C( 328829151), UINT32_C(3670208831)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3740465827), UINT32_C(1627250042), UINT32_C(2355376593), UINT32_C(1538421544),
|
|
UINT32_C( 533181547), UINT32_C(1474624420), UINT32_C( 464742120), UINT32_C(1469792713)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 596030925), UINT32_C(1623933296), UINT32_C(2355376593), UINT32_C(1538421544),
|
|
UINT32_C( 533181547), UINT32_C( 386212074), UINT32_C( 328829151), UINT32_C(1469792713)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(3969449230), UINT32_C(1656808571), UINT32_C(3512723294), UINT32_C(1894827634),
|
|
UINT32_C( 143242580), UINT32_C(1411474427), UINT32_C(1474375050), UINT32_C(2576321811)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3817774721), UINT32_C(1995677222), UINT32_C(2801037071), UINT32_C(1160265207),
|
|
UINT32_C( 536799050), UINT32_C(3040213718), UINT32_C(2960203135), UINT32_C( 387289056)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3817774721), UINT32_C(1656808571), UINT32_C(2801037071), UINT32_C(1160265207),
|
|
UINT32_C( 143242580), UINT32_C(1411474427), UINT32_C(1474375050), UINT32_C( 387289056)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(4117731720), UINT32_C(2896203570), UINT32_C(2130869721), UINT32_C( 624464130),
|
|
UINT32_C(3920434556), UINT32_C(3882005287), UINT32_C(2912704980), UINT32_C(3353740323)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1011878374), UINT32_C( 876977997), UINT32_C( 633144937), UINT32_C(2591224872),
|
|
UINT32_C(1689064732), UINT32_C(1345088039), UINT32_C(3928457299), UINT32_C(1317789172)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1011878374), UINT32_C( 876977997), UINT32_C( 633144937), UINT32_C( 624464130),
|
|
UINT32_C(1689064732), UINT32_C(1345088039), UINT32_C(2912704980), UINT32_C(1317789172)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1278890315), UINT32_C(3068059236), UINT32_C( 937423722), UINT32_C( 545836753),
|
|
UINT32_C(3944086739), UINT32_C(2155957693), UINT32_C( 750306742), UINT32_C( 995938818)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2300290567), UINT32_C(3884383026), UINT32_C( 682756216), UINT32_C( 434660596),
|
|
UINT32_C(3895444851), UINT32_C(3229085704), UINT32_C(3028266335), UINT32_C(2490258842)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1278890315), UINT32_C(3068059236), UINT32_C( 682756216), UINT32_C( 434660596),
|
|
UINT32_C(3895444851), UINT32_C(2155957693), UINT32_C( 750306742), UINT32_C( 995938818)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 953347239), UINT32_C(3233201384), UINT32_C( 883460426), UINT32_C( 630153716),
|
|
UINT32_C(2626834474), UINT32_C(4260188706), UINT32_C(4276291548), UINT32_C(1697478493)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3841797977), UINT32_C( 519016629), UINT32_C( 54139722), UINT32_C(4160085404),
|
|
UINT32_C(2354740665), UINT32_C( 224670449), UINT32_C(2606748626), UINT32_C(2604287898)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 953347239), UINT32_C( 519016629), UINT32_C( 54139722), UINT32_C( 630153716),
|
|
UINT32_C(2354740665), UINT32_C( 224670449), UINT32_C(2606748626), UINT32_C(1697478493)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(4276795094), UINT32_C(3517498069), UINT32_C(3286132221), UINT32_C(1640896057),
|
|
UINT32_C(1497672480), UINT32_C( 40644986), UINT32_C(1824934232), UINT32_C(1194285849)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1850977199), UINT32_C(1916865152), UINT32_C(2772610612), UINT32_C(2574813520),
|
|
UINT32_C(1514631464), UINT32_C(2960447777), UINT32_C(2276426609), UINT32_C(1419491712)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1850977199), UINT32_C(1916865152), UINT32_C(2772610612), UINT32_C(1640896057),
|
|
UINT32_C(1497672480), UINT32_C( 40644986), UINT32_C(1824934232), UINT32_C(1194285849)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 990577222), UINT32_C(1025245358), UINT32_C(2406551265), UINT32_C(4071927667),
|
|
UINT32_C(3189139328), UINT32_C(1739830541), UINT32_C(1739044254), UINT32_C( 584922997)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 72076484), UINT32_C(2950382985), UINT32_C( 915753842), UINT32_C( 355749909),
|
|
UINT32_C(3000181234), UINT32_C(3918623971), UINT32_C(3711879869), UINT32_C(3103913192)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 72076484), UINT32_C(1025245358), UINT32_C( 915753842), UINT32_C( 355749909),
|
|
UINT32_C(3000181234), UINT32_C(1739830541), UINT32_C(1739044254), UINT32_C( 584922997)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_min_epu32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_movemask_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
int32_t r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( -96), INT8_C(-118), INT8_C( 98), INT8_C( 62),
|
|
INT8_C( -51), INT8_C( 97), INT8_C( -33), INT8_C( 125),
|
|
INT8_C(-127), INT8_C( -72), INT8_C( -2), INT8_C( 75),
|
|
INT8_C( 7), INT8_C( 73), INT8_C( -28), INT8_C( 60),
|
|
INT8_C( 8), INT8_C( -37), INT8_C(-119), INT8_C( 83),
|
|
INT8_C( -63), INT8_C( 105), INT8_C(-120), INT8_C( -81),
|
|
INT8_C( 66), INT8_C( -93), INT8_C( 75), INT8_C( -69),
|
|
INT8_C( 47), INT8_C( 11), INT8_C( 51), INT8_C( 35)),
|
|
-891131056 },
|
|
{ simde_mm256_set_epi8(INT8_C( 15), INT8_C( 104), INT8_C( -65), INT8_C(-125),
|
|
INT8_C( 29), INT8_C( 110), INT8_C( -50), INT8_C( 21),
|
|
INT8_C( -48), INT8_C( 105), INT8_C( 56), INT8_C( 122),
|
|
INT8_C( -60), INT8_C( 127), INT8_C( 65), INT8_C(-126),
|
|
INT8_C( -5), INT8_C( -40), INT8_C( -84), INT8_C( -80),
|
|
INT8_C( 27), INT8_C( 14), INT8_C( 89), INT8_C( 45),
|
|
INT8_C(-125), INT8_C( -33), INT8_C( 119), INT8_C( -9),
|
|
INT8_C( 20), INT8_C(-117), INT8_C( -34), INT8_C( -66)),
|
|
847900887 },
|
|
{ simde_mm256_set_epi8(INT8_C( 106), INT8_C( 46), INT8_C( 114), INT8_C( -45),
|
|
INT8_C( 75), INT8_C( 29), INT8_C( -66), INT8_C(-117),
|
|
INT8_C( 47), INT8_C( 53), INT8_C( 50), INT8_C( 31),
|
|
INT8_C(-111), INT8_C( 36), INT8_C( -73), INT8_C( 38),
|
|
INT8_C( -23), INT8_C( 112), INT8_C( -88), INT8_C( 42),
|
|
INT8_C( -89), INT8_C( 120), INT8_C( 50), INT8_C( 27),
|
|
INT8_C( 6), INT8_C( 1), INT8_C( 127), INT8_C( 127),
|
|
INT8_C( 38), INT8_C( 57), INT8_C( 13), INT8_C( -14)),
|
|
319465473 },
|
|
{ simde_mm256_set_epi8(INT8_C( -21), INT8_C( 113), INT8_C( 127), INT8_C( -53),
|
|
INT8_C( 111), INT8_C( 121), INT8_C( -27), INT8_C( 17),
|
|
INT8_C(-104), INT8_C( 11), INT8_C( -41), INT8_C( -39),
|
|
INT8_C( 51), INT8_C( 41), INT8_C( 91), INT8_C( -62),
|
|
INT8_C(-116), INT8_C( 34), INT8_C( 15), INT8_C( -55),
|
|
INT8_C( -90), INT8_C( -31), INT8_C( -66), INT8_C( -64),
|
|
INT8_C( 115), INT8_C( -38), INT8_C( -54), INT8_C( 24),
|
|
INT8_C( -59), INT8_C( -48), INT8_C( 15), INT8_C( 60)),
|
|
-1833853076 },
|
|
{ simde_mm256_set_epi8(INT8_C( -84), INT8_C( 66), INT8_C( 126), INT8_C( -52),
|
|
INT8_C( 88), INT8_C( 79), INT8_C( 71), INT8_C( -11),
|
|
INT8_C( -43), INT8_C( -40), INT8_C(-120), INT8_C( 75),
|
|
INT8_C( 12), INT8_C( -40), INT8_C( 86), INT8_C( 111),
|
|
INT8_C( 107), INT8_C( -40), INT8_C( -47), INT8_C( 90),
|
|
INT8_C( 21), INT8_C( 126), INT8_C( -72), INT8_C( -52),
|
|
INT8_C( -36), INT8_C( -82), INT8_C( -69), INT8_C( 97),
|
|
INT8_C(-122), INT8_C( -39), INT8_C( 59), INT8_C( 25)),
|
|
-1847303188 },
|
|
{ simde_mm256_set_epi8(INT8_C( 67), INT8_C( 64), INT8_C( 17), INT8_C( -4),
|
|
INT8_C( -84), INT8_C( 57), INT8_C( 94), INT8_C( 94),
|
|
INT8_C(-112), INT8_C( 59), INT8_C( -47), INT8_C( -43),
|
|
INT8_C( -74), INT8_C( 39), INT8_C( 45), INT8_C( -64),
|
|
INT8_C( -47), INT8_C( 114), INT8_C( -10), INT8_C( 33),
|
|
INT8_C( 47), INT8_C( -82), INT8_C( -45), INT8_C( 28),
|
|
INT8_C( 16), INT8_C( 34), INT8_C( 94), INT8_C( 53),
|
|
INT8_C( 64), INT8_C(-113), INT8_C( -53), INT8_C( 74)),
|
|
414819846 },
|
|
{ simde_mm256_set_epi8(INT8_C( 27), INT8_C( -3), INT8_C( 33), INT8_C( -42),
|
|
INT8_C( 113), INT8_C( -79), INT8_C( 119), INT8_C( 38),
|
|
INT8_C( 96), INT8_C( 109), INT8_C( 125), INT8_C( 82),
|
|
INT8_C( 8), INT8_C( -29), INT8_C( 10), INT8_C( -22),
|
|
INT8_C( -49), INT8_C( 123), INT8_C( 109), INT8_C( -49),
|
|
INT8_C( 6), INT8_C( -16), INT8_C( -14), INT8_C( 102),
|
|
INT8_C( -5), INT8_C( 88), INT8_C( 66), INT8_C( -63),
|
|
INT8_C( 82), INT8_C( 34), INT8_C( 44), INT8_C( 56)),
|
|
1409652368 },
|
|
{ simde_mm256_set_epi8(INT8_C( -69), INT8_C( -65), INT8_C( 16), INT8_C( 111),
|
|
INT8_C( 123), INT8_C( 89), INT8_C( 77), INT8_C( 3),
|
|
INT8_C( 37), INT8_C( -13), INT8_C( 28), INT8_C( 56),
|
|
INT8_C( -40), INT8_C( -18), INT8_C( -12), INT8_C( 32),
|
|
INT8_C( -91), INT8_C( -40), INT8_C( 109), INT8_C( 79),
|
|
INT8_C( 14), INT8_C( 52), INT8_C( 95), INT8_C( 73),
|
|
INT8_C( 62), INT8_C( -36), INT8_C( -31), INT8_C( 24),
|
|
INT8_C( 60), INT8_C( -72), INT8_C( 1), INT8_C( -18)),
|
|
-1068580763 },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
int32_t r = simde_mm256_movemask_epi8(test_vec[i].a);
|
|
simde_assert_equal_i32(r, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mpsadbw_epu8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const uint8_t a[32];
|
|
const uint8_t b[32];
|
|
const uint16_t r[16];
|
|
} test_vec[] = {
|
|
{ { UINT8_C(116), UINT8_C(168), UINT8_C(162), UINT8_C(173), UINT8_C(122), UINT8_C(179), UINT8_C(242), UINT8_C( 70),
|
|
UINT8_C(251), UINT8_C(139), UINT8_C(136), UINT8_C(248), UINT8_C(103), UINT8_C(122), UINT8_C( 83), UINT8_C(207),
|
|
UINT8_C(164), UINT8_C( 64), UINT8_C(139), UINT8_C(142), UINT8_MAX, UINT8_C( 80), UINT8_C(177), UINT8_C(166),
|
|
UINT8_C( 81), UINT8_C(193), UINT8_C(178), UINT8_C(140), UINT8_C( 66), UINT8_C(185), UINT8_C( 86), UINT8_C(182) },
|
|
{ UINT8_C( 98), UINT8_C(248), UINT8_C( 99), UINT8_C(220), UINT8_C(171), UINT8_C( 85), UINT8_C( 34), UINT8_C(166),
|
|
UINT8_C(225), UINT8_C(170), UINT8_C(158), UINT8_C( 72), UINT8_C( 36), UINT8_C(242), UINT8_C( 23), UINT8_C(201),
|
|
UINT8_C( 50), UINT8_C(162), UINT8_C( 87), UINT8_C( 49), UINT8_C(242), UINT8_C( 8), UINT8_C(215), UINT8_C( 68),
|
|
UINT8_C(201), UINT8_C(137), UINT8_C(208), UINT8_C( 12), UINT8_C( 67), UINT8_C( 38), UINT8_C(194), UINT8_C(165) },
|
|
{ UINT16_C( 499), UINT16_C( 240), UINT16_C( 668), UINT16_C( 224), UINT16_C( 478), UINT16_C( 532), UINT16_C( 265), UINT16_C( 568),
|
|
UINT16_C( 357), UINT16_C( 298), UINT16_C( 308), UINT16_C( 320), UINT16_C( 494), UINT16_C( 156), UINT16_C( 281), UINT16_C( 432) } },
|
|
{ { UINT8_C( 30), UINT8_C( 38), UINT8_C(129), UINT8_C(202), UINT8_C(123), UINT8_C(163), UINT8_C(112), UINT8_C( 92),
|
|
UINT8_C( 77), UINT8_C( 15), UINT8_C(164), UINT8_C(114), UINT8_C( 1), UINT8_C(187), UINT8_C( 59), UINT8_C( 51),
|
|
UINT8_C( 94), UINT8_C(146), UINT8_C(100), UINT8_C( 80), UINT8_C(155), UINT8_C( 60), UINT8_C(148), UINT8_C(100),
|
|
UINT8_C(197), UINT8_C(100), UINT8_C(112), UINT8_C( 8), UINT8_C(138), UINT8_C( 51), UINT8_C(173), UINT8_C(169) },
|
|
{ UINT8_C( 89), UINT8_C( 46), UINT8_C(115), UINT8_C(212), UINT8_C(209), UINT8_C(227), UINT8_C( 49), UINT8_C( 31),
|
|
UINT8_C(242), UINT8_C(213), UINT8_C(145), UINT8_C(243), UINT8_C(145), UINT8_C(204), UINT8_C( 38), UINT8_C(239),
|
|
UINT8_C( 94), UINT8_C(139), UINT8_C( 63), UINT8_C(249), UINT8_C(199), UINT8_C(212), UINT8_C( 94), UINT8_C(140),
|
|
UINT8_C( 56), UINT8_C(206), UINT8_C(149), UINT8_C(195), UINT8_C( 1), UINT8_C( 66), UINT8_C(108), UINT8_C( 90) },
|
|
{ UINT16_C( 284), UINT16_C( 326), UINT16_C( 408), UINT16_C( 278), UINT16_C( 508), UINT16_C( 484), UINT16_C( 198), UINT16_C( 563),
|
|
UINT16_C( 213), UINT16_C( 202), UINT16_C( 346), UINT16_C( 134), UINT16_C( 374), UINT16_C( 132), UINT16_C( 376), UINT16_C( 238) } },
|
|
{ { UINT8_C(113), UINT8_C(223), UINT8_C( 47), UINT8_C( 66), UINT8_C(194), UINT8_C( 96), UINT8_C( 97), UINT8_C(181),
|
|
UINT8_C( 53), UINT8_C(242), UINT8_C(168), UINT8_C(198), UINT8_C(190), UINT8_C(207), UINT8_C(181), UINT8_C( 29),
|
|
UINT8_C( 90), UINT8_C(245), UINT8_C( 22), UINT8_C( 33), UINT8_C(201), UINT8_C(116), UINT8_C(173), UINT8_C( 1),
|
|
UINT8_C( 67), UINT8_C( 66), UINT8_C(196), UINT8_C( 68), UINT8_C(133), UINT8_C( 48), UINT8_C(159), UINT8_C(246) },
|
|
{ UINT8_C( 15), UINT8_C(206), UINT8_C( 56), UINT8_C(210), UINT8_C( 46), UINT8_C(154), UINT8_C(135), UINT8_C( 99),
|
|
UINT8_C(140), UINT8_C( 47), UINT8_C( 42), UINT8_C( 75), UINT8_C(254), UINT8_C(223), UINT8_C(104), UINT8_C( 88),
|
|
UINT8_C(212), UINT8_C(126), UINT8_C(121), UINT8_C(157), UINT8_C(243), UINT8_C( 39), UINT8_C(159), UINT8_C( 54),
|
|
UINT8_C(105), UINT8_C( 99), UINT8_C(122), UINT8_C(238), UINT8_C(148), UINT8_C( 25), UINT8_C(228), UINT8_C(163) },
|
|
{ UINT16_C( 287), UINT16_C( 396), UINT16_C( 404), UINT16_C( 461), UINT16_C( 394), UINT16_C( 263), UINT16_C( 316), UINT16_C( 285),
|
|
UINT16_C( 464), UINT16_C( 269), UINT16_C( 404), UINT16_C( 275), UINT16_C( 229), UINT16_C( 353), UINT16_C( 309), UINT16_C( 364) } },
|
|
{ { UINT8_C(231), UINT8_C( 29), UINT8_C(117), UINT8_C( 21), UINT8_C(183), UINT8_C(252), UINT8_C(121), UINT8_C( 67),
|
|
UINT8_C( 44), UINT8_C(163), UINT8_C(142), UINT8_C( 42), UINT8_C(130), UINT8_C(246), UINT8_C(131), UINT8_C( 87),
|
|
UINT8_C(117), UINT8_C(252), UINT8_C(244), UINT8_C(104), UINT8_C( 35), UINT8_C(147), UINT8_C(158), UINT8_C(141),
|
|
UINT8_C(247), UINT8_C( 24), UINT8_C(123), UINT8_C(139), UINT8_C( 50), UINT8_C( 96), UINT8_C( 46), UINT8_C( 25) },
|
|
{ UINT8_C(125), UINT8_C(164), UINT8_C( 47), UINT8_C( 52), UINT8_C(160), UINT8_C(168), UINT8_C(119), UINT8_C(204),
|
|
UINT8_C( 75), UINT8_C( 6), UINT8_C(247), UINT8_C(205), UINT8_C(252), UINT8_C(122), UINT8_C( 36), UINT8_C(113),
|
|
UINT8_C(118), UINT8_C( 25), UINT8_C(217), UINT8_C(154), UINT8_C(172), UINT8_C(119), UINT8_C( 39), UINT8_C(163),
|
|
UINT8_C(144), UINT8_C(162), UINT8_C( 46), UINT8_C(194), UINT8_C( 2), UINT8_C( 93), UINT8_C(219), UINT8_C(127) },
|
|
{ UINT16_C( 330), UINT16_C( 101), UINT16_C( 244), UINT16_C( 419), UINT16_C( 426), UINT16_C( 132), UINT16_C( 417), UINT16_C( 446),
|
|
UINT16_C( 305), UINT16_C( 585), UINT16_C( 394), UINT16_C( 98), UINT16_C( 277), UINT16_C( 331), UINT16_C( 316), UINT16_C( 469) } },
|
|
{ { UINT8_C( 1), UINT8_C( 10), UINT8_C(179), UINT8_C(161), UINT8_C(178), UINT8_C( 43), UINT8_C(110), UINT8_C(253),
|
|
UINT8_C( 49), UINT8_C(101), UINT8_C(203), UINT8_C( 45), UINT8_C(223), UINT8_C(239), UINT8_C(159), UINT8_C( 85),
|
|
UINT8_C( 8), UINT8_C(120), UINT8_C(239), UINT8_C(181), UINT8_C(240), UINT8_C( 22), UINT8_C( 88), UINT8_C(128),
|
|
UINT8_C(185), UINT8_C(135), UINT8_C( 66), UINT8_C(187), UINT8_C(228), UINT8_C( 29), UINT8_C( 59), UINT8_C(229) },
|
|
{ UINT8_C( 40), UINT8_C(238), UINT8_C(134), UINT8_C(218), UINT8_C( 25), UINT8_C(244), UINT8_C(216), UINT8_C( 74),
|
|
UINT8_C( 89), UINT8_C(163), UINT8_C(120), UINT8_C( 56), UINT8_C(146), UINT8_C( 23), UINT8_C(142), UINT8_C(155),
|
|
UINT8_C(143), UINT8_C(125), UINT8_C( 80), UINT8_C(127), UINT8_C(148), UINT8_C(168), UINT8_MAX, UINT8_C( 77),
|
|
UINT8_C( 47), UINT8_C( 65), UINT8_C( 8), UINT8_C( 19), UINT8_C( 95), UINT8_C( 67), UINT8_C(248), UINT8_C(135) },
|
|
{ UINT16_C( 182), UINT16_C( 407), UINT16_C( 413), UINT16_C( 222), UINT16_C( 346), UINT16_C( 390), UINT16_C( 244), UINT16_C( 402),
|
|
UINT16_C( 353), UINT16_C( 351), UINT16_C( 417), UINT16_C( 250), UINT16_C( 209), UINT16_C( 264), UINT16_C( 171), UINT16_C( 191) } },
|
|
{ { UINT8_C( 50), UINT8_C(127), UINT8_C( 97), UINT8_C( 75), UINT8_C(115), UINT8_C( 57), UINT8_C(150), UINT8_C(205),
|
|
UINT8_C(220), UINT8_C( 14), UINT8_C( 5), UINT8_C(111), UINT8_C( 37), UINT8_C(147), UINT8_C( 10), UINT8_C(180),
|
|
UINT8_C( 17), UINT8_C( 90), UINT8_C( 52), UINT8_C(165), UINT8_C( 2), UINT8_C( 51), UINT8_C(242), UINT8_C( 50),
|
|
UINT8_C(117), UINT8_C(250), UINT8_C( 69), UINT8_C(212), UINT8_C( 62), UINT8_C( 62), UINT8_C( 91), UINT8_C(112) },
|
|
{ UINT8_C(189), UINT8_C(188), UINT8_C(187), UINT8_C( 48), UINT8_C(246), UINT8_C( 81), UINT8_C(253), UINT8_C(210),
|
|
UINT8_C( 95), UINT8_C( 3), UINT8_C( 65), UINT8_C(132), UINT8_C(150), UINT8_C( 75), UINT8_C( 57), UINT8_C(167),
|
|
UINT8_C(165), UINT8_C(109), UINT8_C( 76), UINT8_C(168), UINT8_C(160), UINT8_C( 62), UINT8_C(218), UINT8_C( 21),
|
|
UINT8_C( 57), UINT8_C( 31), UINT8_C(233), UINT8_C(119), UINT8_C( 93), UINT8_C( 68), UINT8_C(231), UINT8_C( 26) },
|
|
{ UINT16_C( 184), UINT16_C( 369), UINT16_C( 446), UINT16_C( 405), UINT16_C( 239), UINT16_C( 390), UINT16_C( 221), UINT16_C( 324),
|
|
UINT16_C( 194), UINT16_C( 387), UINT16_C( 360), UINT16_C( 206), UINT16_C( 505), UINT16_C( 324), UINT16_C( 259), UINT16_C( 396) } },
|
|
{ { UINT8_C( 1), UINT8_C(162), UINT8_C( 75), UINT8_C(247), UINT8_C(244), UINT8_C( 72), UINT8_C(201), UINT8_C( 83),
|
|
UINT8_C( 75), UINT8_C( 11), UINT8_C(216), UINT8_C(226), UINT8_C( 86), UINT8_C( 17), UINT8_C(137), UINT8_C(252),
|
|
UINT8_C(126), UINT8_C(214), UINT8_C(164), UINT8_C( 30), UINT8_C( 20), UINT8_C(126), UINT8_C( 52), UINT8_C( 77),
|
|
UINT8_C(157), UINT8_C( 29), UINT8_C(196), UINT8_C(251), UINT8_C( 98), UINT8_C(171), UINT8_C( 21), UINT8_C( 99) },
|
|
{ UINT8_C( 78), UINT8_C( 96), UINT8_C( 90), UINT8_C( 66), UINT8_C(169), UINT8_C( 35), UINT8_C(149), UINT8_C(244),
|
|
UINT8_C( 46), UINT8_C(109), UINT8_C(214), UINT8_C(133), UINT8_C(126), UINT8_C( 96), UINT8_C(129), UINT8_C(252),
|
|
UINT8_C( 54), UINT8_C( 37), UINT8_C( 27), UINT8_C( 74), UINT8_C(163), UINT8_C( 79), UINT8_C(152), UINT8_C( 64),
|
|
UINT8_C(108), UINT8_C( 92), UINT8_C( 59), UINT8_C(206), UINT8_C( 8), UINT8_C( 81), UINT8_C( 49), UINT8_C( 86) },
|
|
{ UINT16_C( 383), UINT16_C( 382), UINT16_C( 383), UINT16_C( 218), UINT16_C( 249), UINT16_C( 498), UINT16_C( 498), UINT16_C( 337),
|
|
UINT16_C( 430), UINT16_C( 344), UINT16_C( 176), UINT16_C( 162), UINT16_C( 151), UINT16_C( 220), UINT16_C( 217), UINT16_C( 267) } },
|
|
{ { UINT8_C(177), UINT8_C(139), UINT8_C(152), UINT8_C( 90), UINT8_C(175), UINT8_C( 45), UINT8_C( 79), UINT8_C(221),
|
|
UINT8_C(155), UINT8_C( 37), UINT8_C( 98), UINT8_C( 25), UINT8_C(133), UINT8_C(227), UINT8_C( 22), UINT8_C(187),
|
|
UINT8_C( 8), UINT8_C( 49), UINT8_C( 6), UINT8_C(171), UINT8_C(128), UINT8_C(158), UINT8_C(236), UINT8_C(236),
|
|
UINT8_C(250), UINT8_C( 39), UINT8_C(187), UINT8_C( 2), UINT8_C(120), UINT8_C(236), UINT8_C( 88), UINT8_C( 42) },
|
|
{ UINT8_C(120), UINT8_C(240), UINT8_C(132), UINT8_C( 39), UINT8_C( 30), UINT8_C(211), UINT8_C( 4), UINT8_C(185),
|
|
UINT8_C(249), UINT8_C(103), UINT8_C(210), UINT8_C(126), UINT8_C( 74), UINT8_C(232), UINT8_C( 58), UINT8_C( 83),
|
|
UINT8_C( 25), UINT8_C( 64), UINT8_C(254), UINT8_C(153), UINT8_C(222), UINT8_C(234), UINT8_C(134), UINT8_C(216),
|
|
UINT8_C( 18), UINT8_C( 65), UINT8_C(219), UINT8_C(138), UINT8_C( 45), UINT8_C( 51), UINT8_C(180), UINT8_C(165) },
|
|
{ UINT16_C( 447), UINT16_C( 417), UINT16_C( 159), UINT16_C( 260), UINT16_C( 374), UINT16_C( 254), UINT16_C( 450), UINT16_C( 378),
|
|
UINT16_C( 298), UINT16_C( 190), UINT16_C( 257), UINT16_C( 389), UINT16_C( 298), UINT16_C( 420), UINT16_C( 501), UINT16_C( 646) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi8(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi8(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_mpsadbw_epu8(a, b, 7);
|
|
simde_test_x86_assert_equal_u16x16(r, simde_x_mm256_loadu_epi8(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mul_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t b[8];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 1249839109), INT32_C( 383478711), -INT32_C( 552642143), INT32_C( 566134082), -INT32_C( 1345465419), -INT32_C( 1119937342), INT32_C( 1351952468), INT32_C( 75355400) },
|
|
{ -INT32_C( 2068185395), INT32_C( 177902953), INT32_C( 820620014), -INT32_C( 464410577), INT32_C( 1033117563), -INT32_C( 1879387333), INT32_C( 81825788), INT32_C( 839408997) },
|
|
{ INT64_C( 2584898991333613055), -INT64_C( 453509203125650002), -INT64_C( 1390023954778053897), INT64_C( 110624576032644784) } },
|
|
{ { -INT32_C( 994655653), INT32_C( 1171214679), INT32_C( 712358139), -INT32_C( 602945952), INT32_C( 555328485), INT32_C( 1924142198), INT32_C( 142053539), INT32_C( 1228570606) },
|
|
{ -INT32_C( 1743851199), INT32_C( 1037950274), -INT32_C( 161000811), -INT32_C( 19761639), -INT32_C( 1876956391), -INT32_C( 1560096513), INT32_C( 1319860576), INT32_C( 983099129) },
|
|
{ INT64_C( 1734531453076177947), -INT64_C( 114690238101450729), -INT64_C( 1042327349025097635), INT64_C( 187490865807378464) } },
|
|
{ { INT32_C( 433301207), INT32_C( 408334467), INT32_C( 470727939), INT32_C( 1293606964), -INT32_C( 874693940), INT32_C( 1785651210), INT32_C( 1387862617), -INT32_C( 678604544) },
|
|
{ INT32_C( 2062573815), INT32_C( 328353296), INT32_C( 925868291), INT32_C( 1300580993), -INT32_C( 1910939004), -INT32_C( 1661434046), -INT32_C( 1578192479), -INT32_C( 109544702) },
|
|
{ INT64_C( 893715723566094705), INT64_C( 435832072407882249), INT64_C( 1671486766508435760), -INT64_C( 2190314344034657543) } },
|
|
{ { -INT32_C( 327980837), -INT32_C( 1291909458), INT32_C( 686370727), -INT32_C( 42570119), INT32_C( 327913425), -INT32_C( 1196457194), INT32_C( 928620085), -INT32_C( 181284327) },
|
|
{ -INT32_C( 371088326), INT32_C( 1369170090), -INT32_C( 2005236721), -INT32_C( 997854989), -INT32_C( 1781067649), -INT32_C( 917665900), INT32_C( 1040230181), -INT32_C( 1288490631) },
|
|
{ INT64_C( 121709859762408862), -INT64_C( 1376335785999866167), -INT64_C( 584035992940287825), INT64_C( 965978639099785385) } },
|
|
{ { -INT32_C( 2137254698), INT32_C( 80885749), -INT32_C( 1349694276), -INT32_C( 1150086596), -INT32_C( 1219474909), -INT32_C( 159342895), -INT32_C( 1103790011), -INT32_C( 2005833550) },
|
|
{ INT32_C( 1913130621), INT32_C( 24566341), INT32_C( 1655702310), INT32_C( 958210838), INT32_C( 1072721518), INT32_C( 1362522124), -INT32_C( 1576047632), INT32_C( 1344962771) },
|
|
{ -INT64_C( 4088847407619907458), -INT64_C( 2234691930566977560), -INT64_C( 1308156975545391862), INT64_C( 1739625633061803952) } },
|
|
{ { -INT32_C( 725470322), INT32_C( 886389005), INT32_C( 1385596476), INT32_C( 395031721), INT32_C( 777485090), -INT32_C( 595620373), -INT32_C( 880898312), -INT32_C( 1659066098) },
|
|
{ -INT32_C( 378413348), INT32_C( 1411204631), INT32_C( 1990636748), -INT32_C( 1970458008), -INT32_C( 1715936083), INT32_C( 1769289585), -INT32_C( 751438907), INT32_C( 2020626844) },
|
|
{ INT64_C( 274527653422658056), INT64_C( 2758219263024900048), -INT64_C( 1334114719925502470), INT64_C( 661941264747424984) } },
|
|
{ { INT32_C( 1197662511), -INT32_C( 191135960), -INT32_C( 1687535309), INT32_C( 556136563), INT32_C( 1320869340), -INT32_C( 642306284), -INT32_C( 1079120862), INT32_C( 1832328509) },
|
|
{ INT32_C( 666147327), INT32_C( 1276858137), INT32_C( 82347664), INT32_C( 1512377726), -INT32_C( 5709845), INT32_C( 819552270), -INT32_C( 1964014004), -INT32_C( 1560860765) },
|
|
{ INT64_C( 797819680350758097), -INT64_C( 138964590613668176), -INT64_C( 7541959196652300), INT64_C( 2119408484976551448) } },
|
|
{ { -INT32_C( 641094720), -INT32_C( 1977162246), -INT32_C( 376566165), INT32_C( 105100059), -INT32_C( 1610158958), -INT32_C( 1731076276), INT32_C( 136495205), -INT32_C( 1465181721) },
|
|
{ -INT32_C( 1098812220), -INT32_C( 1001805991), -INT32_C( 777136203), INT32_C( 500691339), INT32_C( 700374493), INT32_C( 566333372), INT32_C( 925557839), -INT32_C( 1025518083) },
|
|
{ INT64_C( 704442712513478400), INT64_C( 292643199646371495), -INT64_C( 1127714263858658294), INT64_C( 126334206973661995) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_mul_epi32(a, b);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mul_epu32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const uint32_t a[8];
|
|
const uint32_t b[8];
|
|
const uint64_t r[4];
|
|
} test_vec[] = {
|
|
{ { UINT32_C(1983947362), UINT32_C(3053479846), UINT32_C(1792953067), UINT32_C(3215038466), UINT32_C( 607004743), UINT32_C(2578666130), UINT32_C(1073743766), UINT32_C(1510921976) },
|
|
{ UINT32_C( 533745272), UINT32_C(2715144374), UINT32_C( 487371546), UINT32_C(2480713036), UINT32_C(1756826326), UINT32_C(4060244572), UINT32_C(1764885105), UINT32_C(1371816409) },
|
|
{ UINT64_C( 1058922524364372464), UINT64_C( 873834308169231582), UINT64_C( 1066401912509264218), UINT64_C( 1895034379200005430) } },
|
|
{ { UINT32_C(1165005967), UINT32_C(2145863013), UINT32_C(1167913977), UINT32_C(1993898144), UINT32_C(3739193218), UINT32_C(1792074233), UINT32_C(3167945699), UINT32_C(3540948804) },
|
|
{ UINT32_C(2434367020), UINT32_C(3171942596), UINT32_C(2466426355), UINT32_C(2819283493), UINT32_C(1653008745), UINT32_C(2915850186), UINT32_C(2657787738), UINT32_C(1668380727) },
|
|
{ UINT64_C( 2836052104168008340), UINT64_C( 2880573813245663835), UINT64_C( 6180919088598691410), UINT64_C( 8419727233452038862) } },
|
|
{ { UINT32_C(3136588534), UINT32_C(2104951946), UINT32_C(3608246705), UINT32_C(3162446675), UINT32_C(3458073860), UINT32_C(3061574236), UINT32_C(3243566474), UINT32_C(1411696221) },
|
|
{ UINT32_C(3675134032), UINT32_C(3461907996), UINT32_C(1403349503), UINT32_C(2282693764), UINT32_C(2253794857), UINT32_C(2721894936), UINT32_C( 358846903), UINT32_C(2808710999) },
|
|
{ UINT64_C(11527383265684389088), UINT64_C( 5063631220163137615), UINT64_C( 7793789080794138020), UINT64_C( 1163943783869530022) } },
|
|
{ { UINT32_C(3162666911), UINT32_C(4253735933), UINT32_C(3377475396), UINT32_C(2085707603), UINT32_C(2785192077), UINT32_C( 826818426), UINT32_C( 658943184), UINT32_C(3553537843) },
|
|
{ UINT32_C( 613372199), UINT32_C(1881217324), UINT32_C(2604233032), UINT32_C(1578601425), UINT32_C(2902727219), UINT32_C( 702434649), UINT32_C( 743450105), UINT32_C(4227800788) },
|
|
{ UINT64_C( 1939891957904607289), UINT64_C( 8795732991030480672), UINT64_C( 8084652852051043863), UINT64_C( 489891379333834320) } },
|
|
{ { UINT32_C(2602602095), UINT32_C(4010557863), UINT32_C(2223654323), UINT32_C( 65184464), UINT32_C( 363915196), UINT32_C( 759074612), UINT32_C(2287570612), UINT32_C( 478435756) },
|
|
{ UINT32_C(2411177191), UINT32_C(2558444517), UINT32_C(3642493193), UINT32_C(1742602155), UINT32_C( 444370406), UINT32_C(3494361628), UINT32_C(4099514440), UINT32_C(3775979001) },
|
|
{ UINT64_C( 6275334808712815145), UINT64_C( 8099645735112523339), UINT64_C( 161713143396089576), UINT64_C( 9377928756413637280) } },
|
|
{ { UINT32_C(1718667393), UINT32_C(2499800715), UINT32_C(2725125111), UINT32_C( 609050), UINT32_C(4112156120), UINT32_C(2277859647), UINT32_C(4219215362), UINT32_C(2094828795) },
|
|
{ UINT32_C(3772992596), UINT32_C( 846520891), UINT32_C( 416670461), UINT32_C( 102293037), UINT32_C(2751148900), UINT32_C(2519449748), UINT32_C(3667044319), UINT32_C(2287431219) },
|
|
{ UINT64_C( 6484519348775622228), UINT64_C( 1135479136283046171), UINT64_C(11313153786166268000), UINT64_C(15472049723859628478) } },
|
|
{ { UINT32_C(4134025915), UINT32_C( 422108188), UINT32_C(3962699199), UINT32_C(1089620700), UINT32_C( 300150141), UINT32_C(2376601262), UINT32_C(3915856565), UINT32_C(1668398760) },
|
|
{ UINT32_C( 341432824), UINT32_C(1949205173), UINT32_C(1533108095), UINT32_C( 647713705), UINT32_C(4013457217), UINT32_C(1132257421), UINT32_C(3257721626), UINT32_C(2586221986) },
|
|
{ UINT64_C( 1411492142647633960), UINT64_C( 6075246220036915905), UINT64_C( 1204639749580017597), UINT64_C(12756770616114574690) } },
|
|
{ { UINT32_C( 732921718), UINT32_C(2174803201), UINT32_C(3873177916), UINT32_C(2500622420), UINT32_C(2223260919), UINT32_C(1053229092), UINT32_C(2248274916), UINT32_C( 102770576) },
|
|
{ UINT32_C(2821902246), UINT32_C(3911832236), UINT32_C( 667878867), UINT32_C(1958599549), UINT32_C(1157185824), UINT32_C( 646168642), UINT32_C(1152156852), UINT32_C(1363922091) },
|
|
{ UINT64_C( 2068233442166378628), UINT64_C( 2586813678227501172), UINT64_C( 2572726018520012256), UINT64_C( 2590365349649124432) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_mul_epu32(a, b);
|
|
simde_test_x86_assert_equal_u64x4(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mulhi_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t b[16];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 3387), INT16_C( 9328), -INT16_C( 608), -INT16_C( 8041), -INT16_C( 24120), -INT16_C( 28930), INT16_C( 24168), -INT16_C( 16718),
|
|
-INT16_C( 28202), -INT16_C( 22224), -INT16_C( 31685), -INT16_C( 30796), -INT16_C( 32360), -INT16_C( 29908), INT16_C( 7198), -INT16_C( 7385) },
|
|
{ -INT16_C( 26610), -INT16_C( 20985), -INT16_C( 24939), INT16_C( 23950), -INT16_C( 29633), -INT16_C( 22548), -INT16_C( 24853), -INT16_C( 16027),
|
|
-INT16_C( 27089), INT16_C( 27498), INT16_C( 7962), -INT16_C( 19726), INT16_C( 7840), -INT16_C( 16835), INT16_C( 25914), INT16_C( 18593) },
|
|
{ INT16_C( 1375), -INT16_C( 2987), INT16_C( 231), -INT16_C( 2939), INT16_C( 10906), INT16_C( 9953), -INT16_C( 9166), INT16_C( 4088),
|
|
INT16_C( 11657), -INT16_C( 9325), -INT16_C( 3850), INT16_C( 9269), -INT16_C( 3872), INT16_C( 7682), INT16_C( 2846), -INT16_C( 2096) } },
|
|
{ { -INT16_C( 22275), -INT16_C( 27913), -INT16_C( 31418), -INT16_C( 31248), -INT16_C( 9198), -INT16_C( 724), -INT16_C( 28038), -INT16_C( 21826),
|
|
INT16_C( 10536), INT16_C( 16917), INT16_C( 1864), -INT16_C( 5900), INT16_C( 12582), INT16_C( 24743), INT16_C( 18582), -INT16_C( 27735) },
|
|
{ -INT16_C( 24335), INT16_C( 14118), INT16_C( 5669), INT16_C( 14269), -INT16_C( 5646), INT16_C( 27700), -INT16_C( 3205), -INT16_C( 23786),
|
|
INT16_C( 11036), INT16_C( 25829), -INT16_C( 9933), INT16_C( 22860), -INT16_C( 3317), -INT16_C( 24135), INT16_C( 25148), INT16_C( 11573) },
|
|
{ INT16_C( 8271), -INT16_C( 6014), -INT16_C( 2718), -INT16_C( 6804), INT16_C( 792), -INT16_C( 307), INT16_C( 1371), INT16_C( 7921),
|
|
INT16_C( 1774), INT16_C( 6667), -INT16_C( 283), -INT16_C( 2059), -INT16_C( 637), -INT16_C( 9113), INT16_C( 7130), -INT16_C( 4898) } },
|
|
{ { INT16_C( 23298), INT16_C( 10340), INT16_C( 8561), INT16_C( 25439), -INT16_C( 27637), -INT16_C( 31025), -INT16_C( 6521), -INT16_C( 23766),
|
|
INT16_C( 3857), INT16_C( 17415), INT16_C( 21481), -INT16_C( 2915), INT16_C( 22343), -INT16_C( 31851), -INT16_C( 13639), -INT16_C( 17232) },
|
|
{ INT16_C( 5157), -INT16_C( 26908), INT16_C( 17206), INT16_C( 16889), -INT16_C( 13865), INT16_C( 24263), -INT16_C( 3665), -INT16_C( 16383),
|
|
INT16_C( 2049), -INT16_C( 5627), -INT16_C( 23972), -INT16_C( 23586), INT16_C( 29689), -INT16_C( 19674), -INT16_C( 10690), INT16_C( 25455) },
|
|
{ INT16_C( 1833), -INT16_C( 4246), INT16_C( 2247), INT16_C( 6555), INT16_C( 5846), -INT16_C( 11487), INT16_C( 364), INT16_C( 5941),
|
|
INT16_C( 120), -INT16_C( 1496), -INT16_C( 7858), INT16_C( 1049), INT16_C( 10121), INT16_C( 9561), INT16_C( 2224), -INT16_C( 6694) } },
|
|
{ { INT16_C( 21482), INT16_C( 8442), -INT16_C( 3178), INT16_C( 28257), INT16_C( 10684), INT16_C( 27596), -INT16_C( 12774), INT16_C( 6956),
|
|
INT16_C( 12758), INT16_C( 12805), -INT16_C( 7213), -INT16_C( 12843), -INT16_C( 1193), -INT16_C( 27264), -INT16_C( 4143), -INT16_C( 17160) },
|
|
{ -INT16_C( 3518), -INT16_C( 10020), INT16_C( 16102), -INT16_C( 23994), INT16_C( 4967), -INT16_C( 32498), INT16_C( 15073), -INT16_C( 18531),
|
|
-INT16_C( 23957), INT16_C( 16106), -INT16_C( 16506), -INT16_C( 8949), -INT16_C( 29765), -INT16_C( 29582), INT16_C( 27258), -INT16_C( 17336) },
|
|
{ -INT16_C( 1154), -INT16_C( 1291), -INT16_C( 781), -INT16_C( 10346), INT16_C( 809), -INT16_C( 13685), -INT16_C( 2938), -INT16_C( 1967),
|
|
-INT16_C( 4664), INT16_C( 3146), INT16_C( 1816), INT16_C( 1753), INT16_C( 541), INT16_C( 12306), -INT16_C( 1724), INT16_C( 4539) } },
|
|
{ { INT16_C( 9565), INT16_C( 17301), -INT16_C( 9373), -INT16_C( 13595), -INT16_C( 3090), -INT16_C( 12469), -INT16_C( 6099), -INT16_C( 26489),
|
|
INT16_C( 29067), INT16_C( 4567), -INT16_C( 7632), -INT16_C( 5138), INT16_C( 24686), -INT16_C( 6024), -INT16_C( 16182), INT16_C( 10149) },
|
|
{ INT16_C( 15077), INT16_C( 18538), INT16_C( 20501), INT16_C( 1042), INT16_C( 24131), INT16_C( 29139), INT16_C( 23110), -INT16_C( 12023),
|
|
-INT16_C( 7989), -INT16_C( 798), -INT16_C( 12093), INT16_C( 12775), INT16_C( 24368), -INT16_C( 1255), -INT16_C( 16864), INT16_C( 1314) },
|
|
{ INT16_C( 2200), INT16_C( 4893), -INT16_C( 2933), -INT16_C( 217), -INT16_C( 1138), -INT16_C( 5545), -INT16_C( 2151), INT16_C( 4859),
|
|
-INT16_C( 3544), -INT16_C( 56), INT16_C( 1408), -INT16_C( 1002), INT16_C( 9178), INT16_C( 115), INT16_C( 4164), INT16_C( 203) } },
|
|
{ { -INT16_C( 29192), INT16_C( 3662), INT16_C( 24797), INT16_C( 8210), -INT16_C( 6722), INT16_C( 1425), -INT16_C( 25792), INT16_C( 3030),
|
|
-INT16_C( 18053), INT16_C( 15879), -INT16_C( 4215), -INT16_C( 17809), -INT16_C( 30386), INT16_C( 28341), -INT16_C( 10425), INT16_C( 16500) },
|
|
{ -INT16_C( 15772), INT16_C( 16718), INT16_C( 24610), -INT16_C( 7838), -INT16_C( 3259), -INT16_C( 31258), -INT16_C( 17266), INT16_C( 2705),
|
|
-INT16_C( 26507), -INT16_C( 184), -INT16_C( 18297), -INT16_C( 10567), INT16_C( 28225), -INT16_C( 30652), -INT16_C( 18363), -INT16_C( 21816) },
|
|
{ INT16_C( 7025), INT16_C( 934), INT16_C( 9311), -INT16_C( 982), INT16_C( 334), -INT16_C( 680), INT16_C( 6795), INT16_C( 125),
|
|
INT16_C( 7301), -INT16_C( 45), INT16_C( 1176), INT16_C( 2871), -INT16_C( 13087), -INT16_C( 13256), INT16_C( 2921), -INT16_C( 5493) } },
|
|
{ { INT16_C( 5754), -INT16_C( 25109), INT16_C( 19830), -INT16_C( 17282), INT16_C( 25665), -INT16_C( 12479), -INT16_C( 11744), -INT16_C( 26919),
|
|
INT16_C( 8811), -INT16_C( 3435), INT16_C( 20186), INT16_C( 7112), INT16_C( 3516), INT16_C( 419), INT16_C( 27845), INT16_C( 16555) },
|
|
{ -INT16_C( 26750), -INT16_C( 1571), INT16_C( 23524), INT16_C( 9653), -INT16_C( 2369), -INT16_C( 8203), -INT16_C( 12599), INT16_C( 13429),
|
|
INT16_C( 2800), -INT16_C( 13786), -INT16_C( 4264), INT16_C( 5349), -INT16_C( 30212), -INT16_C( 16106), -INT16_C( 15883), INT16_C( 30465) },
|
|
{ -INT16_C( 2349), INT16_C( 601), INT16_C( 7117), -INT16_C( 2546), -INT16_C( 928), INT16_C( 1561), INT16_C( 2257), -INT16_C( 5516),
|
|
INT16_C( 376), INT16_C( 722), -INT16_C( 1314), INT16_C( 580), -INT16_C( 1621), -INT16_C( 103), -INT16_C( 6749), INT16_C( 7695) } },
|
|
{ { -INT16_C( 8616), INT16_C( 15728), INT16_C( 9529), -INT16_C( 1950), INT16_C( 22300), -INT16_C( 6696), INT16_C( 19750), INT16_C( 5657),
|
|
INT16_C( 16216), -INT16_C( 20255), -INT16_C( 14802), INT16_C( 10949), -INT16_C( 9393), INT16_C( 17644), -INT16_C( 4708), -INT16_C( 2628) },
|
|
{ INT16_C( 11468), INT16_C( 1330), -INT16_C( 27566), INT16_C( 28414), -INT16_C( 10516), INT16_C( 4691), INT16_C( 27683), INT16_C( 31528),
|
|
INT16_C( 2475), -INT16_C( 9684), -INT16_C( 3632), INT16_C( 7940), -INT16_C( 3892), INT16_C( 26724), INT16_C( 8414), -INT16_C( 21923) },
|
|
{ -INT16_C( 1508), INT16_C( 319), -INT16_C( 4009), -INT16_C( 846), -INT16_C( 3579), -INT16_C( 480), INT16_C( 8342), INT16_C( 2721),
|
|
INT16_C( 612), INT16_C( 2993), INT16_C( 820), INT16_C( 1326), INT16_C( 557), INT16_C( 7194), -INT16_C( 605), INT16_C( 879) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_mulhi_epi16(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mulhi_epu16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const uint16_t a[16];
|
|
const uint16_t b[16];
|
|
const uint16_t r[16];
|
|
} test_vec[] = {
|
|
{ { UINT16_C(10332), UINT16_C(42272), UINT16_C(44135), UINT16_C( 8711), UINT16_C(23908), UINT16_C(41433), UINT16_C(47685), UINT16_C( 9375),
|
|
UINT16_C( 1656), UINT16_C(30122), UINT16_C( 5686), UINT16_C(62995), UINT16_C(28193), UINT16_C(48077), UINT16_C(50425), UINT16_C(21926) },
|
|
{ UINT16_C(50924), UINT16_C(21499), UINT16_C( 626), UINT16_C(54901), UINT16_C(20063), UINT16_C(42103), UINT16_C( 5641), UINT16_C(33224),
|
|
UINT16_C(29468), UINT16_C(21238), UINT16_C( 2441), UINT16_C(43592), UINT16_C( 5751), UINT16_C(29029), UINT16_C( 3034), UINT16_C(50886) },
|
|
{ UINT16_C( 8028), UINT16_C(13867), UINT16_C( 421), UINT16_C( 7297), UINT16_C( 7319), UINT16_C(26618), UINT16_C( 4104), UINT16_C( 4752),
|
|
UINT16_C( 744), UINT16_C( 9761), UINT16_C( 211), UINT16_C(41901), UINT16_C( 2474), UINT16_C(21295), UINT16_C( 2334), UINT16_C(17024) } },
|
|
{ { UINT16_C(49617), UINT16_C(17177), UINT16_C(36803), UINT16_C( 8729), UINT16_C(37341), UINT16_C(59079), UINT16_C(36775), UINT16_C(50280),
|
|
UINT16_C(24066), UINT16_C(35606), UINT16_C(24424), UINT16_C(57142), UINT16_C(39797), UINT16_C(20304), UINT16_C( 6055), UINT16_C(30741) },
|
|
{ UINT16_C(11992), UINT16_C(40124), UINT16_C(54717), UINT16_C(39870), UINT16_C(34150), UINT16_C( 3713), UINT16_C(59669), UINT16_C( 6098),
|
|
UINT16_C(59464), UINT16_C(45219), UINT16_C(55623), UINT16_C(48271), UINT16_C(57460), UINT16_C( 6923), UINT16_C( 8439), UINT16_C(53140) },
|
|
{ UINT16_C( 9079), UINT16_C(10516), UINT16_C(30727), UINT16_C( 5310), UINT16_C(19457), UINT16_C( 3347), UINT16_C(33482), UINT16_C( 4678),
|
|
UINT16_C(21836), UINT16_C(24567), UINT16_C(20729), UINT16_C(42088), UINT16_C(34892), UINT16_C( 2144), UINT16_C( 779), UINT16_C(24926) } },
|
|
{ { UINT16_C(20559), UINT16_C( 3179), UINT16_C(10789), UINT16_C(36007), UINT16_C(10671), UINT16_C(50330), UINT16_C(27666), UINT16_C(23260),
|
|
UINT16_C(32596), UINT16_C(39946), UINT16_C(39512), UINT16_C(52312), UINT16_C(25722), UINT16_C(29160), UINT16_C(31876), UINT16_C(54080) },
|
|
{ UINT16_C(44236), UINT16_C(61920), UINT16_C(34774), UINT16_C(34173), UINT16_C( 6064), UINT16_C(49994), UINT16_C( 9859), UINT16_C(55325),
|
|
UINT16_C(10405), UINT16_C(64884), UINT16_C(52418), UINT16_C(15561), UINT16_C(45360), UINT16_C(46509), UINT16_C(60717), UINT16_C(63880) },
|
|
{ UINT16_C(13877), UINT16_C( 3003), UINT16_C( 5724), UINT16_C(18775), UINT16_C( 987), UINT16_C(38394), UINT16_C( 4161), UINT16_C(19635),
|
|
UINT16_C( 5175), UINT16_C(39548), UINT16_C(31603), UINT16_C(12421), UINT16_C(17803), UINT16_C(20694), UINT16_C(29532), UINT16_C(52713) } },
|
|
{ { UINT16_C(26777), UINT16_C(28651), UINT16_C(26864), UINT16_C(41205), UINT16_C(16256), UINT16_C( 867), UINT16_C(33125), UINT16_C( 2779),
|
|
UINT16_C(20393), UINT16_C(27399), UINT16_C(53276), UINT16_C(19623), UINT16_C(21634), UINT16_C(44801), UINT16_C(35393), UINT16_C(56233) },
|
|
{ UINT16_C(38130), UINT16_C(57930), UINT16_C(16380), UINT16_C(31875), UINT16_C(59006), UINT16_C(58240), UINT16_C(23399), UINT16_C( 4333),
|
|
UINT16_C(62635), UINT16_C(51067), UINT16_C( 8901), UINT16_C(18195), UINT16_C( 5494), UINT16_C(47350), UINT16_C(40863), UINT16_C(37267) },
|
|
{ UINT16_C(15579), UINT16_C(25325), UINT16_C( 6714), UINT16_C(20041), UINT16_C(14636), UINT16_C( 770), UINT16_C(11826), UINT16_C( 183),
|
|
UINT16_C(19490), UINT16_C(21349), UINT16_C( 7235), UINT16_C( 5448), UINT16_C( 1813), UINT16_C(32368), UINT16_C(22068), UINT16_C(31976) } },
|
|
{ { UINT16_C(56627), UINT16_C(12404), UINT16_C(63261), UINT16_C(39852), UINT16_C(11485), UINT16_C(17791), UINT16_C(27784), UINT16_C(13141),
|
|
UINT16_C(53601), UINT16_C( 9978), UINT16_C( 3571), UINT16_C(27245), UINT16_C(25378), UINT16_C(49442), UINT16_C(46339), UINT16_C(13907) },
|
|
{ UINT16_C(51090), UINT16_C(44902), UINT16_C( 5054), UINT16_C(39755), UINT16_C(51775), UINT16_C(51168), UINT16_C(13878), UINT16_C(38906),
|
|
UINT16_C(62471), UINT16_C(64189), UINT16_C(10754), UINT16_C( 9316), UINT16_C(34446), UINT16_C(37350), UINT16_C(14651), UINT16_C(52935) },
|
|
{ UINT16_C(44144), UINT16_C( 8498), UINT16_C( 4878), UINT16_C(24174), UINT16_C( 9073), UINT16_C(13890), UINT16_C( 5883), UINT16_C( 7801),
|
|
UINT16_C(51094), UINT16_C( 9772), UINT16_C( 585), UINT16_C( 3872), UINT16_C(13338), UINT16_C(28177), UINT16_C(10359), UINT16_C(11233) } },
|
|
{ { UINT16_C(11776), UINT16_C(48765), UINT16_C(51265), UINT16_C(32857), UINT16_C(14994), UINT16_C(51528), UINT16_C(17008), UINT16_C(30560),
|
|
UINT16_C( 7735), UINT16_C(14705), UINT16_C(54856), UINT16_C(54877), UINT16_C(17244), UINT16_C(39015), UINT16_C(12156), UINT16_C(31846) },
|
|
{ UINT16_C(58205), UINT16_C(40506), UINT16_C(38060), UINT16_C(15902), UINT16_C(26318), UINT16_C(15879), UINT16_C(26793), UINT16_C(57525),
|
|
UINT16_C( 9862), UINT16_C(52761), UINT16_C(30460), UINT16_C(22949), UINT16_C( 3258), UINT16_C(14065), UINT16_C(22331), UINT16_C(39091) },
|
|
{ UINT16_C(10458), UINT16_C(30140), UINT16_C(29772), UINT16_C( 7972), UINT16_C( 6021), UINT16_C(12484), UINT16_C( 6953), UINT16_C(26824),
|
|
UINT16_C( 1163), UINT16_C(11838), UINT16_C(25496), UINT16_C(19216), UINT16_C( 857), UINT16_C( 8373), UINT16_C( 4142), UINT16_C(18995) } },
|
|
{ { UINT16_C(60730), UINT16_C(58934), UINT16_C(21889), UINT16_C(20261), UINT16_C(11451), UINT16_C(25741), UINT16_C(17044), UINT16_C( 6724),
|
|
UINT16_C(23913), UINT16_C(26089), UINT16_C(36564), UINT16_C(36542), UINT16_C(44954), UINT16_C(54980), UINT16_C(30470), UINT16_C(16750) },
|
|
{ UINT16_C(42341), UINT16_C(58919), UINT16_C(19706), UINT16_C(46390), UINT16_C(50041), UINT16_C( 3354), UINT16_C(24070), UINT16_C(28456),
|
|
UINT16_C( 4540), UINT16_C(37076), UINT16_C(37791), UINT16_C(14622), UINT16_C(57922), UINT16_C(18703), UINT16_C(32346), UINT16_C(49034) },
|
|
{ UINT16_C(39235), UINT16_C(52983), UINT16_C( 6581), UINT16_C(14341), UINT16_C( 8743), UINT16_C( 1317), UINT16_C( 6259), UINT16_C( 2919),
|
|
UINT16_C( 1656), UINT16_C(14759), UINT16_C(21084), UINT16_C( 8153), UINT16_C(39731), UINT16_C(15690), UINT16_C(15038), UINT16_C(12532) } },
|
|
{ { UINT16_C(45347), UINT16_C( 7589), UINT16_C(56318), UINT16_C(30674), UINT16_C(60575), UINT16_C(42372), UINT16_C(44107), UINT16_C( 1812),
|
|
UINT16_C(59581), UINT16_C(23703), UINT16_C(46459), UINT16_C(48790), UINT16_C(42391), UINT16_C(61703), UINT16_C(37155), UINT16_C(18096) },
|
|
{ UINT16_C(22082), UINT16_C(16483), UINT16_C(13873), UINT16_C(53431), UINT16_C(15394), UINT16_C(28021), UINT16_C(35304), UINT16_C(42612),
|
|
UINT16_C( 2930), UINT16_C(60674), UINT16_C(39104), UINT16_C(22699), UINT16_C(45630), UINT16_C(24905), UINT16_C(64067), UINT16_C(34472) },
|
|
{ UINT16_C(15279), UINT16_C( 1908), UINT16_C(11921), UINT16_C(25008), UINT16_C(14228), UINT16_C(18116), UINT16_C(23760), UINT16_C( 1178),
|
|
UINT16_C( 2663), UINT16_C(21944), UINT16_C(27721), UINT16_C(16898), UINT16_C(29515), UINT16_C(23448), UINT16_C(36322), UINT16_C( 9518) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_mulhi_epu16(a, b);
|
|
simde_test_x86_assert_equal_u16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mulhrs_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t b[16];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 7424), -INT16_C( 12265), INT16_C( 30100), INT16_C( 15580), INT16_C( 26159), -INT16_C( 29591), -INT16_C( 20062), -INT16_C( 16404),
|
|
INT16_C( 25875), -INT16_C( 16332), INT16_C( 6642), INT16_C( 19995), -INT16_C( 16871), INT16_C( 7464), -INT16_C( 21479), INT16_C( 6866) },
|
|
{ -INT16_C( 5744), INT16_C( 9450), -INT16_C( 14498), -INT16_C( 29088), -INT16_C( 13779), -INT16_C( 12518), INT16_C( 1915), -INT16_C( 28786),
|
|
-INT16_C( 15764), INT16_C( 24143), INT16_C( 27355), -INT16_C( 2900), -INT16_C( 10967), INT16_C( 16914), -INT16_C( 7039), INT16_C( 4444) },
|
|
{ INT16_C( 1301), -INT16_C( 3537), -INT16_C( 13318), -INT16_C( 13830), -INT16_C( 11000), INT16_C( 11304), -INT16_C( 1172), INT16_C( 14411),
|
|
-INT16_C( 12448), -INT16_C( 12033), INT16_C( 5545), -INT16_C( 1770), INT16_C( 5646), INT16_C( 3853), INT16_C( 4614), INT16_C( 931) } },
|
|
{ { INT16_C( 18381), INT16_C( 11062), -INT16_C( 27122), INT16_C( 15289), -INT16_C( 11168), -INT16_C( 9206), -INT16_C( 26405), INT16_C( 18283),
|
|
-INT16_C( 17829), INT16_C( 13989), INT16_C( 20773), INT16_C( 20011), INT16_C( 15654), -INT16_C( 22384), -INT16_C( 4831), -INT16_C( 4423) },
|
|
{ -INT16_C( 4300), INT16_C( 16921), -INT16_C( 11386), -INT16_C( 6531), -INT16_C( 30809), -INT16_C( 32062), INT16_C( 11551), INT16_C( 31433),
|
|
INT16_C( 28392), INT16_C( 3505), -INT16_C( 9025), -INT16_C( 6565), -INT16_C( 5351), INT16_C( 14990), INT16_C( 18392), INT16_C( 3112) },
|
|
{ -INT16_C( 2412), INT16_C( 5712), INT16_C( 9424), -INT16_C( 3047), INT16_C( 10500), INT16_C( 9008), -INT16_C( 9308), INT16_C( 17538),
|
|
-INT16_C( 15448), INT16_C( 1496), -INT16_C( 5721), -INT16_C( 4009), -INT16_C( 2556), -INT16_C( 10240), -INT16_C( 2712), -INT16_C( 420) } },
|
|
{ { INT16_C( 16695), -INT16_C( 17074), -INT16_C( 13548), -INT16_C( 17501), INT16_C( 26194), INT16_C( 29245), INT16_C( 1683), INT16_C( 31724),
|
|
-INT16_C( 25228), INT16_C( 13448), -INT16_C( 7303), -INT16_C( 28134), -INT16_C( 22321), -INT16_C( 22580), -INT16_C( 2833), INT16_C( 9908) },
|
|
{ INT16_C( 566), INT16_C( 19171), -INT16_C( 30770), INT16_C( 8198), INT16_C( 17389), -INT16_C( 32622), INT16_C( 32586), -INT16_C( 16644),
|
|
-INT16_C( 31716), -INT16_C( 26894), INT16_C( 3176), INT16_C( 14120), -INT16_C( 2636), -INT16_C( 23330), -INT16_C( 27927), INT16_C( 8138) },
|
|
{ INT16_C( 288), -INT16_C( 9989), INT16_C( 12722), -INT16_C( 4378), INT16_C( 13900), -INT16_C( 29115), INT16_C( 1674), -INT16_C( 16114),
|
|
INT16_C( 24418), -INT16_C( 11037), -INT16_C( 708), -INT16_C( 12123), INT16_C( 1796), INT16_C( 16076), INT16_C( 2414), INT16_C( 2461) } },
|
|
{ { -INT16_C( 20843), INT16_C( 25450), INT16_C( 28725), INT16_C( 8835), INT16_C( 5811), -INT16_C( 606), -INT16_C( 24939), -INT16_C( 20036),
|
|
-INT16_C( 20957), -INT16_C( 29881), INT16_C( 28859), INT16_C( 28610), -INT16_C( 24475), INT16_C( 19987), -INT16_C( 8653), -INT16_C( 14226) },
|
|
{ -INT16_C( 10100), -INT16_C( 16085), -INT16_C( 20920), -INT16_C( 1053), -INT16_C( 31292), INT16_C( 23033), -INT16_C( 19164), INT16_C( 18187),
|
|
INT16_C( 21091), INT16_C( 7890), -INT16_C( 27454), INT16_C( 10126), -INT16_C( 24268), INT16_C( 26486), -INT16_C( 7041), INT16_C( 2863) },
|
|
{ INT16_C( 6424), -INT16_C( 12493), -INT16_C( 18339), -INT16_C( 284), -INT16_C( 5549), -INT16_C( 426), INT16_C( 14585), -INT16_C( 11120),
|
|
-INT16_C( 13489), -INT16_C( 7195), -INT16_C( 24179), INT16_C( 8841), INT16_C( 18126), INT16_C( 16155), INT16_C( 1859), -INT16_C( 1243) } },
|
|
{ { INT16_C( 23228), INT16_C( 1228), -INT16_C( 20727), -INT16_C( 12801), -INT16_C( 1995), INT16_C( 22823), INT16_C( 12973), INT16_C( 4512),
|
|
INT16_C( 29316), INT16_C( 18223), -INT16_C( 17146), INT16_C( 14958), -INT16_C( 7073), -INT16_C( 8542), -INT16_C( 11832), -INT16_C( 31510) },
|
|
{ -INT16_C( 18900), INT16_C( 13704), -INT16_C( 30618), -INT16_C( 25854), INT16_C( 10624), INT16_C( 12020), -INT16_C( 27557), -INT16_C( 8129),
|
|
INT16_C( 28166), INT16_C( 3111), -INT16_C( 27348), -INT16_C( 29882), -INT16_C( 6022), INT16_C( 17001), INT16_C( 21434), -INT16_C( 6457) },
|
|
{ -INT16_C( 13397), INT16_C( 514), INT16_C( 19367), INT16_C( 10100), -INT16_C( 647), INT16_C( 8372), -INT16_C( 10910), -INT16_C( 1119),
|
|
INT16_C( 25199), INT16_C( 1730), INT16_C( 14310), -INT16_C( 13641), INT16_C( 1300), -INT16_C( 4432), -INT16_C( 7739), INT16_C( 6209) } },
|
|
{ { INT16_C( 20234), INT16_C( 28699), INT16_C( 7639), INT16_C( 22539), -INT16_C( 185), -INT16_C( 23930), -INT16_C( 14957), -INT16_C( 26238),
|
|
-INT16_C( 22221), INT16_C( 24485), -INT16_C( 5313), -INT16_C( 17942), INT16_C( 21716), -INT16_C( 28933), -INT16_C( 15705), -INT16_C( 20108) },
|
|
{ -INT16_C( 28910), -INT16_C( 5855), INT16_C( 11436), -INT16_C( 3263), -INT16_C( 14549), -INT16_C( 16746), INT16_C( 6284), -INT16_C( 16297),
|
|
-INT16_C( 830), INT16_C( 287), INT16_C( 2792), -INT16_C( 17222), -INT16_C( 19106), INT16_C( 1354), -INT16_C( 16776), -INT16_C( 30025) },
|
|
{ -INT16_C( 17852), -INT16_C( 5128), INT16_C( 2666), -INT16_C( 2244), INT16_C( 82), INT16_C( 12229), -INT16_C( 2868), INT16_C( 13049),
|
|
INT16_C( 563), INT16_C( 214), -INT16_C( 453), INT16_C( 9430), -INT16_C( 12662), -INT16_C( 1196), INT16_C( 8040), INT16_C( 18425) } },
|
|
{ { -INT16_C( 10163), -INT16_C( 1677), -INT16_C( 19195), INT16_C( 12525), -INT16_C( 31876), INT16_C( 2543), INT16_C( 18075), INT16_C( 24009),
|
|
-INT16_C( 6077), INT16_C( 11102), INT16_C( 6386), INT16_C( 20711), INT16_C( 12750), INT16_C( 18006), INT16_C( 3567), INT16_C( 15568) },
|
|
{ INT16_C( 17381), -INT16_C( 5579), INT16_C( 8952), INT16_C( 29979), INT16_C( 2725), INT16_C( 16766), INT16_C( 18256), -INT16_C( 27746),
|
|
-INT16_C( 721), INT16_C( 8894), -INT16_C( 23275), -INT16_C( 7310), -INT16_C( 14122), -INT16_C( 15063), -INT16_C( 1579), -INT16_C( 17663) },
|
|
{ -INT16_C( 5391), INT16_C( 286), -INT16_C( 5244), INT16_C( 11459), -INT16_C( 2651), INT16_C( 1301), INT16_C( 10070), -INT16_C( 20329),
|
|
INT16_C( 134), INT16_C( 3013), -INT16_C( 4536), -INT16_C( 4620), -INT16_C( 5495), -INT16_C( 8277), -INT16_C( 172), -INT16_C( 8392) } },
|
|
{ { INT16_C( 14141), INT16_C( 13733), -INT16_C( 16295), -INT16_C( 86), INT16_C( 10442), INT16_C( 6976), -INT16_C( 8593), -INT16_C( 24658),
|
|
INT16_C( 28123), -INT16_C( 3647), INT16_C( 13074), -INT16_C( 5676), -INT16_C( 260), -INT16_C( 11858), -INT16_C( 20233), INT16_C( 13452) },
|
|
{ INT16_C( 13031), INT16_C( 16490), INT16_C( 5362), -INT16_C( 17089), INT16_C( 32573), -INT16_C( 21288), -INT16_C( 31138), INT16_C( 14667),
|
|
INT16_C( 3315), INT16_C( 1578), -INT16_C( 192), INT16_C( 15599), -INT16_C( 25091), -INT16_C( 3059), -INT16_C( 26035), INT16_C( 13353) },
|
|
{ INT16_C( 5624), INT16_C( 6911), -INT16_C( 2666), INT16_C( 45), INT16_C( 10380), -INT16_C( 4532), INT16_C( 8166), -INT16_C( 11037),
|
|
INT16_C( 2845), -INT16_C( 176), -INT16_C( 77), -INT16_C( 2702), INT16_C( 199), INT16_C( 1107), INT16_C( 16076), INT16_C( 5482) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_mulhrs_epi16(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mullo_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 26958), INT16_C( 5839), INT16_C( 10773), INT16_C(-17217),
|
|
INT16_C( 20782), INT16_C(-24278), INT16_C( 14053), INT16_C( 4872),
|
|
INT16_C(-31512), INT16_C( -5844), INT16_C( 1857), INT16_C( 9311),
|
|
INT16_C( 26459), INT16_C( 31943), INT16_C(-26611), INT16_C( 26444)),
|
|
simde_mm256_set_epi16(INT16_C( 25062), INT16_C(-26342), INT16_C( 2282), INT16_C( -1929),
|
|
INT16_C( -4943), INT16_C(-11597), INT16_C(-15401), INT16_C(-15540),
|
|
INT16_C( -1566), INT16_C( -8249), INT16_C( 3344), INT16_C(-23800),
|
|
INT16_C( 15220), INT16_C( -3764), INT16_C( 25181), INT16_C( 11266)),
|
|
simde_mm256_set_epi16(INT16_C( 10772), INT16_C( 2054), INT16_C( 7986), INT16_C(-15159),
|
|
INT16_C(-30514), INT16_C( 9310), INT16_C(-30381), INT16_C(-16800),
|
|
INT16_C( -816), INT16_C(-27340), INT16_C(-16112), INT16_C(-24584),
|
|
INT16_C(-12740), INT16_C( 25108), INT16_C( 14009), INT16_C( -8552)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -5684), INT16_C( 15383), INT16_C(-12220), INT16_C( 1990),
|
|
INT16_C( -3866), INT16_C(-10346), INT16_C( 21545), INT16_C( 18065),
|
|
INT16_C(-21267), INT16_C( -3518), INT16_C( 27216), INT16_C( 24702),
|
|
INT16_C( -8721), INT16_C(-16371), INT16_C( 21885), INT16_C( 22906)),
|
|
simde_mm256_set_epi16(INT16_C( -9241), INT16_C( -3030), INT16_C(-27821), INT16_C( 13222),
|
|
INT16_C( -7134), INT16_C( 9766), INT16_C( 1304), INT16_C( 21664),
|
|
INT16_C( 21613), INT16_C( 29626), INT16_C(-23683), INT16_C( 15587),
|
|
INT16_C( 14936), INT16_C( 31442), INT16_C( 1986), INT16_C(-23873)),
|
|
simde_mm256_set_epi16(INT16_C( 31508), INT16_C(-14394), INT16_C(-28148), INT16_C( 31844),
|
|
INT16_C(-10612), INT16_C( 17476), INT16_C(-20264), INT16_C(-20832),
|
|
INT16_C( 25833), INT16_C(-22028), INT16_C( -9968), INT16_C( 6074),
|
|
INT16_C( 28712), INT16_C(-17238), INT16_C( 13242), INT16_C( -2554)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-22642), INT16_C( 406), INT16_C( -2741), INT16_C( 24854),
|
|
INT16_C(-32159), INT16_C( 5357), INT16_C( 22365), INT16_C(-19783),
|
|
INT16_C( 6458), INT16_C( -2382), INT16_C( 27277), INT16_C( 20167),
|
|
INT16_C( 308), INT16_C( 11773), INT16_C(-18240), INT16_C(-22526)),
|
|
simde_mm256_set_epi16(INT16_C( 3067), INT16_C( -5016), INT16_C( 13492), INT16_C(-13562),
|
|
INT16_C(-32027), INT16_C(-13606), INT16_C(-15731), INT16_C( 23689),
|
|
INT16_C( -1980), INT16_C(-21001), INT16_C( 20300), INT16_C( -4296),
|
|
INT16_C( -123), INT16_C( 14799), INT16_C(-32140), INT16_C( 31677)),
|
|
simde_mm256_set_epi16(INT16_C( 25146), INT16_C( -4880), INT16_C(-19268), INT16_C(-18300),
|
|
INT16_C( -7483), INT16_C(-11310), INT16_C(-26567), INT16_C( 8449),
|
|
INT16_C( -7320), INT16_C( 20414), INT16_C( 9436), INT16_C( 1160),
|
|
INT16_C( 27652), INT16_C(-31597), INT16_C( 14080), INT16_C( -134)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-19186), INT16_C( 1301), INT16_C( 31295), INT16_C(-15933),
|
|
INT16_C( 15507), INT16_C( -5145), INT16_C( 22638), INT16_C( -9549),
|
|
INT16_C( 5226), INT16_C( -8321), INT16_C( 11534), INT16_C( -7469),
|
|
INT16_C( 21265), INT16_C( -8572), INT16_C( 3867), INT16_C( 30789)),
|
|
simde_mm256_set_epi16(INT16_C(-11613), INT16_C( 15229), INT16_C( -2018), INT16_C( 27597),
|
|
INT16_C(-11741), INT16_C(-30691), INT16_C( 13581), INT16_C(-20193),
|
|
INT16_C( 19002), INT16_C(-20438), INT16_C( 23792), INT16_C( 10741),
|
|
INT16_C( 24708), INT16_C(-12234), INT16_C(-16212), INT16_C(-32518)),
|
|
simde_mm256_set_epi16(INT16_C(-15382), INT16_C( 21057), INT16_C( 23394), INT16_C(-21977),
|
|
INT16_C( -8679), INT16_C( 28971), INT16_C( 17302), INT16_C( 16045),
|
|
INT16_C( 17412), INT16_C( -1322), INT16_C( 17696), INT16_C( -8465),
|
|
INT16_C( 13508), INT16_C( 12248), INT16_C( 26148), INT16_C( -3230)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 31461), INT16_C( 28893), INT16_C(-27940), INT16_C(-14179),
|
|
INT16_C( -7147), INT16_C( 8716), INT16_C( -5522), INT16_C( -7988),
|
|
INT16_C( 11144), INT16_C( 18257), INT16_C( -233), INT16_C( 22445),
|
|
INT16_C(-19828), INT16_C( 15498), INT16_C( 17919), INT16_C( -2256)),
|
|
simde_mm256_set_epi16(INT16_C(-10903), INT16_C( 5816), INT16_C( 24259), INT16_C(-27791),
|
|
INT16_C(-16404), INT16_C( 3280), INT16_C(-17628), INT16_C( -2370),
|
|
INT16_C( 12909), INT16_C( 25550), INT16_C( 7994), INT16_C( 693),
|
|
INT16_C( -412), INT16_C( 18409), INT16_C(-18714), INT16_C( -7)),
|
|
simde_mm256_set_epi16(INT16_C( -3859), INT16_C( 7384), INT16_C(-23148), INT16_C(-19379),
|
|
INT16_C( -4516), INT16_C( 14784), INT16_C( 20856), INT16_C( -8344),
|
|
INT16_C( 6376), INT16_C(-18898), INT16_C(-27594), INT16_C( 22353),
|
|
INT16_C(-22864), INT16_C( 24474), INT16_C( 11546), INT16_C( 15792)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-23599), INT16_C( -6775), INT16_C(-22042), INT16_C( 23599),
|
|
INT16_C( 29883), INT16_C(-16427), INT16_C( 18767), INT16_C( 13204),
|
|
INT16_C(-18900), INT16_C(-23120), INT16_C( 17609), INT16_C(-28983),
|
|
INT16_C( 10186), INT16_C(-12557), INT16_C( 9866), INT16_C( 22138)),
|
|
simde_mm256_set_epi16(INT16_C(-21041), INT16_C(-13045), INT16_C( 15958), INT16_C( 31878),
|
|
INT16_C( 18632), INT16_C( 10843), INT16_C(-29976), INT16_C(-16463),
|
|
INT16_C(-15244), INT16_C( -3717), INT16_C( 16396), INT16_C(-24330),
|
|
INT16_C( -6946), INT16_C( 27306), INT16_C( -9977), INT16_C(-30515)),
|
|
simde_mm256_set_epi16(INT16_C(-19713), INT16_C(-28189), INT16_C(-14524), INT16_C( 1178),
|
|
INT16_C(-13800), INT16_C( 8887), INT16_C( 1432), INT16_C( 5460),
|
|
INT16_C( 15344), INT16_C( 19344), INT16_C( 31084), INT16_C(-10970),
|
|
INT16_C( 26924), INT16_C( 2910), INT16_C( 1990), INT16_C( 4018)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 8019), INT16_C(-18318), INT16_C(-27174), INT16_C(-24268),
|
|
INT16_C(-11542), INT16_C( 3812), INT16_C( 30491), INT16_C( 9957),
|
|
INT16_C( 24267), INT16_C( 14634), INT16_C( 742), INT16_C( 6819),
|
|
INT16_C( 18671), INT16_C(-25958), INT16_C( 11320), INT16_C( 22969)),
|
|
simde_mm256_set_epi16(INT16_C(-30081), INT16_C(-15383), INT16_C(-30862), INT16_C( 19583),
|
|
INT16_C( 4817), INT16_C( 15541), INT16_C( 22774), INT16_C( -2106),
|
|
INT16_C(-10048), INT16_C(-27305), INT16_C(-18367), INT16_C(-29706),
|
|
INT16_C(-10409), INT16_C( 15691), INT16_C( 9193), INT16_C( 19182)),
|
|
simde_mm256_set_epi16(INT16_C( 18477), INT16_C(-19006), INT16_C(-20204), INT16_C( 26828),
|
|
INT16_C(-23286), INT16_C( -2252), INT16_C(-17422), INT16_C( 2078),
|
|
INT16_C( 24640), INT16_C( -8378), INT16_C( 3174), INT16_C( 6562),
|
|
INT16_C(-32199), INT16_C( -738), INT16_C( -6408), INT16_C( -7170)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 1498), INT16_C(-31368), INT16_C( -3455), INT16_C(-19849),
|
|
INT16_C(-16083), INT16_C(-23087), INT16_C( 26835), INT16_C( 10141),
|
|
INT16_C( 24239), INT16_C(-15471), INT16_C( 117), INT16_C(-26512),
|
|
INT16_C( -4941), INT16_C( 10703), INT16_C( 12266), INT16_C(-25802)),
|
|
simde_mm256_set_epi16(INT16_C(-20053), INT16_C(-31092), INT16_C( 14330), INT16_C( 14498),
|
|
INT16_C( 16232), INT16_C(-21016), INT16_C( 26384), INT16_C(-26667),
|
|
INT16_C( 26626), INT16_C( -346), INT16_C( 22688), INT16_C(-31544),
|
|
INT16_C( 24113), INT16_C( 2549), INT16_C( 12831), INT16_C(-19325)),
|
|
simde_mm256_set_epi16(INT16_C(-23906), INT16_C(-12896), INT16_C(-30470), INT16_C( -2226),
|
|
INT16_C(-29368), INT16_C(-32152), INT16_C( 29232), INT16_C(-28511),
|
|
INT16_C(-10914), INT16_C(-20986), INT16_C(-32480), INT16_C(-10368),
|
|
INT16_C( 2115), INT16_C( 18971), INT16_C(-32426), INT16_C( 25762)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_mullo_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_mullo_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-1352403780), INT32_C( -343467662), INT32_C( 517643457), INT32_C( -488960691),
|
|
INT32_C(-1266352672), INT32_C( 1517008609), INT32_C( 990411931), INT32_C(-1870795966)),
|
|
simde_mm256_set_epi32(INT32_C(-1381411484), INT32_C(-1688230631), INT32_C( 2122460393), INT32_C( 1331099088),
|
|
INT32_C(-1172838687), INT32_C(-1435873650), INT32_C( 806691655), INT32_C( 1528853489)),
|
|
simde_mm256_set_epi32(INT32_C( 1332348272), INT32_C(-1964640734), INT32_C( 1072420777), INT32_C( 814972816),
|
|
INT32_C(-1273339424), INT32_C( 480378574), INT32_C( -786776067), INT32_C( 1970872098)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1337827173), INT32_C( -259025503), INT32_C( -584925635), INT32_C( 195250370),
|
|
INT32_C(-1297361156), INT32_C( -136339105), INT32_C( 279578676), INT32_C(-1541670246)),
|
|
simde_mm256_set_epi32(INT32_C( 163529464), INT32_C( 1163098936), INT32_C(-2107715246), INT32_C( 687192711),
|
|
INT32_C( 869285726), INT32_C(-1567378281), INT32_C(-1698583124), INT32_C( 1922904107)),
|
|
simde_mm256_set_epi32(INT32_C(-1675267112), INT32_C(-2071980488), INT32_C( 114736266), INT32_C(-1214098866),
|
|
INT32_C( -977210232), INT32_C( 971766537), INT32_C(-1862490384), INT32_C( 337770462)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1141523047), INT32_C( 75738515), INT32_C( 2021274638), INT32_C(-1605111533),
|
|
INT32_C( 702401071), INT32_C( 991513903), INT32_C( 1097525967), INT32_C( 12869194)),
|
|
simde_mm256_set_epi32(INT32_C( -236040676), INT32_C(-1937249843), INT32_C( -759698458), INT32_C( 1440000042),
|
|
INT32_C( 500464056), INT32_C( 1039800065), INT32_C( 1696902588), INT32_C( 1988285066)),
|
|
simde_mm256_set_epi32(INT32_C(-1142728004), INT32_C( 1660012983), INT32_C( 496344724), INT32_C( 1454769438),
|
|
INT32_C(-1377466168), INT32_C( 334399023), INT32_C( -78753020), INT32_C( 2093451236)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 135806382), INT32_C( 1225419686), INT32_C(-1943331695), INT32_C( -184770167),
|
|
INT32_C( -868496558), INT32_C(-1570632013), INT32_C(-1946534455), INT32_C( 456616503)),
|
|
simde_mm256_set_epi32(INT32_C( 1379577055), INT32_C( -512074604), INT32_C(-1891332670), INT32_C( 1111532874),
|
|
INT32_C(-1428646370), INT32_C( 907679144), INT32_C( -10646910), INT32_C( 1881159279)),
|
|
simde_mm256_set_epi32(INT32_C( 200974994), INT32_C( 735175672), INT32_C(-1930722590), INT32_C( 1499725466),
|
|
INT32_C( -111943780), INT32_C( -608414600), INT32_C(-1553548782), INT32_C( -733042727)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1387302426), INT32_C( -589733281), INT32_C(-1148378464), INT32_C(-1369430370),
|
|
INT32_C( 64719355), INT32_C( 1048033330), INT32_C( 1019366599), INT32_C(-1908464696)),
|
|
simde_mm256_set_epi32(INT32_C( -277676972), INT32_C( -370073323), INT32_C( -963247981), INT32_C( 258227968),
|
|
INT32_C( 1397531888), INT32_C( 91286530), INT32_C( 441718636), INT32_C( 180722050)),
|
|
simde_mm256_set_epi32(INT32_C( 2070165640), INT32_C( 905072843), INT32_C(-1144331808), INT32_C( 20505088),
|
|
INT32_C(-1715853488), INT32_C( 1788708964), INT32_C( 2116699380), INT32_C( 1364898704)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1766434696), INT32_C( -696400655), INT32_C( -511755431), INT32_C( 254323910),
|
|
INT32_C(-1407716551), INT32_C( -866109177), INT32_C( 1454483112), INT32_C( 830274169)),
|
|
simde_mm256_set_epi32(INT32_C( -369468938), INT32_C( 827481876), INT32_C( 733336376), INT32_C( -709198563),
|
|
INT32_C(-1510456310), INT32_C( 2091700298), INT32_C(-1848267445), INT32_C( -214051693)),
|
|
simde_mm256_set_epi32(INT32_C( 718619824), INT32_C(-1541746220), INT32_C( 447501944), INT32_C( -640401298),
|
|
INT32_C( 1908581434), INT32_C( -153474042), INT32_C( 1165187896), INT32_C( 1946486651)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 551854829), INT32_C(-1524250015), INT32_C( 248754089), INT32_C( 2058702947),
|
|
INT32_C( 514801021), INT32_C(-2062150747), INT32_C( 1811376814), INT32_C( 1655721768)),
|
|
simde_mm256_set_epi32(INT32_C( -68197299), INT32_C( -108251896), INT32_C( 732768373), INT32_C(-1458146720),
|
|
INT32_C(-1648648199), INT32_C( 765297486), INT32_C( 1888788167), INT32_C( 1580342871)),
|
|
simde_mm256_set_epi32(INT32_C(-1364421303), INT32_C( 35678216), INT32_C( -228151235), INT32_C( 88881952),
|
|
INT32_C( 1123185045), INT32_C( -436704442), INT32_C( 1841516866), INT32_C( 1493276312)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1004493292), INT32_C( 86312384), INT32_C(-1589794735), INT32_C( 1105371360),
|
|
INT32_C( 893767357), INT32_C( -562966901), INT32_C( 980757301), INT32_C( 2070176970)),
|
|
simde_mm256_set_epi32(INT32_C( 1498513889), INT32_C( 1078743553), INT32_C( 911009242), INT32_C( -31879959),
|
|
INT32_C( 673790886), INT32_C(-1100901508), INT32_C( 837704078), INT32_C( -540129822)),
|
|
simde_mm256_set_epi32(INT32_C( 1421216660), INT32_C(-1778612800), INT32_C(-2078422534), INT32_C( -585176096),
|
|
INT32_C( 1177460110), INT32_C(-2056987564), INT32_C( 2034852966), INT32_C( 240610388)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_mullo_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_x_mm256_mullo_epu32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu32(UINT32_C(2258322750), UINT32_C(2861166599), UINT32_C(3174424968), UINT32_C(2016553993),
|
|
UINT32_C(2997181236), UINT32_C( 363976099), UINT32_C(1103728177), UINT32_C(2198010875)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1159500967), UINT32_C(2653222606), UINT32_C(3215542902), UINT32_C(2811870533),
|
|
UINT32_C(3872912803), UINT32_C(1788506759), UINT32_C(1042504603), UINT32_C(1249290459)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3692692338), UINT32_C(3668041634), UINT32_C( 617563312), UINT32_C(2691269485),
|
|
UINT32_C(1346229788), UINT32_C(2750955253), UINT32_C(3376906923), UINT32_C(3164358585)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(2548089923), UINT32_C(1352192202), UINT32_C(3738306426), UINT32_C( 536787617),
|
|
UINT32_C( 525476003), UINT32_C(3633025093), UINT32_C(1784195446), UINT32_C(1453616288)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1186306915), UINT32_C( 779102467), UINT32_C(1127274760), UINT32_C(2603214034),
|
|
UINT32_C( 521716141), UINT32_C(3878310832), UINT32_C(2866604767), UINT32_C(3646073150)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3894376169), UINT32_C( 261803102), UINT32_C(1405527504), UINT32_C(2079685650),
|
|
UINT32_C(3781357863), UINT32_C( 235638384), UINT32_C(2877913546), UINT32_C(4073189056)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1846808532), UINT32_C(4103184512), UINT32_C(1968463192), UINT32_C(1782167042),
|
|
UINT32_C(2474531325), UINT32_C( 998377243), UINT32_C( 44320792), UINT32_C( 386122774)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3246150743), UINT32_C(1171028203), UINT32_C(3269727308), UINT32_C(1281786774),
|
|
UINT32_C(4190872936), UINT32_C( 118349934), UINT32_C(3463597682), UINT32_C( 47529222)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2092101900), UINT32_C( 720000384), UINT32_C(1052153376), UINT32_C(3804212012),
|
|
UINT32_C(3421741000), UINT32_C(1903537562), UINT32_C(2781833904), UINT32_C(3256735364)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(4276815888), UINT32_C(1336815165), UINT32_C( 961795267), UINT32_C( 314541168),
|
|
UINT32_C(2077700186), UINT32_C(2373614491), UINT32_C(2478361141), UINT32_C(3586675075)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1354372236), UINT32_C(3218632640), UINT32_C(3308884037), UINT32_C( 276466624),
|
|
UINT32_C(1857596357), UINT32_C(2760506734), UINT32_C( 503740282), UINT32_C(1124719285)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2697570496), UINT32_C(3475448000), UINT32_C( 162597007), UINT32_C( 703341568),
|
|
UINT32_C(1989432130), UINT32_C(1220299674), UINT32_C(1062010946), UINT32_C(3802541983)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1408536206), UINT32_C( 904931218), UINT32_C(3779421746), UINT32_C( 832565776),
|
|
UINT32_C( 37616047), UINT32_C(1134646772), UINT32_C(3784150216), UINT32_C(1429477789)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 961414585), UINT32_C(1502350843), UINT32_C(3315915686), UINT32_C(2253735990),
|
|
UINT32_C(2519475515), UINT32_C( 980432319), UINT32_C( 560915899), UINT32_C(2488230114)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2143799966), UINT32_C(2052142630), UINT32_C(1668614764), UINT32_C( 857837408),
|
|
UINT32_C(3983726165), UINT32_C(3203048716), UINT32_C(2806300184), UINT32_C(1829534874)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 574695235), UINT32_C( 304227009), UINT32_C(1668479769), UINT32_C(3452443080),
|
|
UINT32_C(3762070562), UINT32_C(2046023294), UINT32_C( 475815618), UINT32_C( 179358113)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 260558052), UINT32_C(3663947713), UINT32_C(4165399884), UINT32_C(1745062207),
|
|
UINT32_C(2120455131), UINT32_C(4011446154), UINT32_C(1023802013), UINT32_C( 827938078)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 245717932), UINT32_C( 844814977), UINT32_C(1900509292), UINT32_C(1197629496),
|
|
UINT32_C(3678793494), UINT32_C(2083488236), UINT32_C(2902036730), UINT32_C(3718452702)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1617715092), UINT32_C(2193069624), UINT32_C( 650454244), UINT32_C(2538964293),
|
|
UINT32_C(1532176753), UINT32_C(3080365125), UINT32_C(2879482590), UINT32_C(3982850403)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1884881854), UINT32_C(3265025687), UINT32_C(1041888717), UINT32_C(1140822020),
|
|
UINT32_C(4094158163), UINT32_C( 967388894), UINT32_C(1291557283), UINT32_C(2562715165)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3489770456), UINT32_C(3235932936), UINT32_C(2322644628), UINT32_C(1191699732),
|
|
UINT32_C(3592389795), UINT32_C(3492534742), UINT32_C(1884272986), UINT32_C(2486553143)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(3590735797), UINT32_C(1425583171), UINT32_C( 334293210), UINT32_C( 791405491),
|
|
UINT32_C(1931435573), UINT32_C( 591893589), UINT32_C(1994069612), UINT32_C( 354132544)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2748385695), UINT32_C( 731899882), UINT32_C(1077607699), UINT32_C(1910108083),
|
|
UINT32_C(1267460605), UINT32_C(2091709757), UINT32_C(2754232525), UINT32_C(2186524445)),
|
|
simde_x_mm256_set_epu32(UINT32_C(4029736555), UINT32_C(1297803838), UINT32_C(3726162478), UINT32_C(4211036969),
|
|
UINT32_C( 8738657), UINT32_C(3189748033), UINT32_C(3502503036), UINT32_C(1071456576)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_x_mm256_mullo_epu32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_or_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( -801044498564576659), INT64_C(-2909946603020252481),
|
|
INT64_C( 5958340648204315976), INT64_C( 8713768337389103061)),
|
|
simde_mm256_set_epi64x(INT64_C( 9176724763357309327), INT64_C( 4054644920102546891),
|
|
INT64_C( 4782244109117166481), INT64_C( 3831721763102663031)),
|
|
simde_mm256_set_epi64x(INT64_C( -1584611843413009), INT64_C( -9571266241499137),
|
|
INT64_C( 5980208482798747609), INT64_C( 9074056875634305015)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 1317517346722662736), INT64_C( 8192878697228400830),
|
|
INT64_C(-3537455209908178968), INT64_C(-2713816682012121382)),
|
|
simde_mm256_set_epi64x(INT64_C( 7957277620212510994), INT64_C( -737217900053345188),
|
|
INT64_C( 8353910688937076237), INT64_C( 240232259721200655)),
|
|
simde_mm256_set_epi64x(INT64_C( 9110201366055221586), INT64_C( -723122418076615426),
|
|
INT64_C( -4662226728259603), INT64_C(-2641361182872049953)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-1030545204507091849), INT64_C(-1542600680052722313),
|
|
INT64_C(-7648307982573512602), INT64_C( 5973019580240685616)),
|
|
simde_mm256_set_epi64x(INT64_C(-6290470397500953523), INT64_C( 8109710997204180941),
|
|
INT64_C( 5917924879433877736), INT64_C( 8502004464391034004)),
|
|
simde_mm256_set_epi64x(INT64_C( -453800777020900225), INT64_C( -387309568701530113),
|
|
INT64_C(-2883445622328010514), INT64_C( 8646205037023002292)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-2990334454120409171), INT64_C(-3220201474370514905),
|
|
INT64_C( 8548083516217107397), INT64_C( 1251663319653874101)),
|
|
simde_mm256_set_epi64x(INT64_C(-2621282330722334206), INT64_C( 5235652619773460077),
|
|
INT64_C(-8007055325654862889), INT64_C( 4775726838041815408)),
|
|
simde_mm256_set_epi64x(INT64_C(-2333014432620503121), INT64_C(-2598629952962888081),
|
|
INT64_C( -656965087403232297), INT64_C( 6007467006593006069)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 1315645066342648861), INT64_C( 3754004658427516786),
|
|
INT64_C(-7880307939890805097), INT64_C(-5701204371115270443)),
|
|
simde_mm256_set_epi64x(INT64_C( 4172903126396830914), INT64_C( -493154668521044871),
|
|
INT64_C(-2309759438976524777), INT64_C(-1689539225349388212)),
|
|
simde_mm256_set_epi64x(INT64_C( 4317612287190453471), INT64_C( -198167755223214213),
|
|
INT64_C(-2309335405310321001), INT64_C( -509524860864094499)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-7748112100043814155), INT64_C( 5814291251258484552),
|
|
INT64_C( 8569511450246080549), INT64_C(-3900190118960098388)),
|
|
simde_mm256_set_epi64x(INT64_C( 9015646334468450927), INT64_C( 883710405382046595),
|
|
INT64_C( 2743428167896968049), INT64_C(-6564603084509542605)),
|
|
simde_mm256_set_epi64x(INT64_C( -180373114503566593), INT64_C( 6697859792108349387),
|
|
INT64_C( 8574745263641455477), INT64_C(-1297039137678485569)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5980675563351081308), INT64_C( 7108230643859206772),
|
|
INT64_C(-7185068082285956895), INT64_C(-5748801677096031915)),
|
|
simde_mm256_set_epi64x(INT64_C(-1209090942768865396), INT64_C(-7402713372895048445),
|
|
INT64_C( -24471728257632960), INT64_C( 3473093230644658861)),
|
|
simde_mm256_set_epi64x(INT64_C( -14577395916836), INT64_C( -295610862468677769),
|
|
INT64_C( -6315904187370015), INT64_C(-5748026933373309955)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 3669045510431781214), INT64_C(-8656850301840548621),
|
|
INT64_C(-5639311717074453893), INT64_C(-8609899897096571068)),
|
|
simde_mm256_set_epi64x(INT64_C(-5772405160554679118), INT64_C( 8581290868842963452),
|
|
INT64_C(-7553387725647900846), INT64_C( 1768046205102779153)),
|
|
simde_mm256_set_epi64x(INT64_C(-4616368323934308866), INT64_C( -585750987759698433),
|
|
INT64_C(-5206728520596308101), INT64_C(-7454726563416572075)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_or_si256(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_packs_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t b[16];
|
|
const int8_t r[32];
|
|
} test_vec[] = {
|
|
{ { INT16_C( 217), INT16_C( 133), INT16_C( 35), INT16_C( 164), INT16_C( 69), INT16_C( 101), INT16_C( 149), INT16_C( 103),
|
|
INT16_C( 41), INT16_C( 56), INT16_C( 76), INT16_C( 183), INT16_C( 83), INT16_C( 188), INT16_C( 132), INT16_C( 172) },
|
|
{ INT16_C( 172), INT16_C( 254), INT16_C( 196), INT16_C( 19), INT16_C( 250), INT16_C( 196), INT16_C( 4), INT16_C( 186),
|
|
INT16_C( 183), INT16_C( 52), INT16_C( 215), INT16_C( 95), INT16_C( 224), INT16_C( 86), INT16_C( 229), INT16_C( 194) },
|
|
{ INT8_MAX, INT8_MAX, INT8_C( 35), INT8_MAX, INT8_C( 69), INT8_C( 101), INT8_MAX, INT8_C( 103),
|
|
INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 19), INT8_MAX, INT8_MAX, INT8_C( 4), INT8_MAX,
|
|
INT8_C( 41), INT8_C( 56), INT8_C( 76), INT8_MAX, INT8_C( 83), INT8_MAX, INT8_MAX, INT8_MAX,
|
|
INT8_MAX, INT8_C( 52), INT8_MAX, INT8_C( 95), INT8_MAX, INT8_C( 86), INT8_MAX, INT8_MAX } },
|
|
{ { INT16_C( 51), INT16_C( 97), INT16_C( 99), INT16_C( 1), INT16_C( 236), INT16_C( 236), INT16_C( 241), INT16_C( 30),
|
|
INT16_C( 153), INT16_C( 173), INT16_C( 62), INT16_C( 155), INT16_C( 40), INT16_C( 131), INT16_C( 243), INT16_C( 160) },
|
|
{ INT16_C( 5), INT16_C( 30), INT16_C( 118), INT16_C( 197), INT16_C( 229), INT16_C( 83), INT16_C( 88), INT16_C( 128),
|
|
INT16_C( 195), INT16_C( 97), INT16_C( 57), INT16_C( 32), INT16_C( 238), INT16_C( 112), INT16_C( 232), INT16_C( 8) },
|
|
{ INT8_C( 51), INT8_C( 97), INT8_C( 99), INT8_C( 1), INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 30),
|
|
INT8_C( 5), INT8_C( 30), INT8_C( 118), INT8_MAX, INT8_MAX, INT8_C( 83), INT8_C( 88), INT8_MAX,
|
|
INT8_MAX, INT8_MAX, INT8_C( 62), INT8_MAX, INT8_C( 40), INT8_MAX, INT8_MAX, INT8_MAX,
|
|
INT8_MAX, INT8_C( 97), INT8_C( 57), INT8_C( 32), INT8_MAX, INT8_C( 112), INT8_MAX, INT8_C( 8) } },
|
|
{ { INT16_C( 17), INT16_C( 86), INT16_C( 70), INT16_C( 234), INT16_C( 205), INT16_C( 2), INT16_C( 174), INT16_C( 22),
|
|
INT16_C( 175), INT16_C( 115), INT16_C( 116), INT16_C( 75), INT16_C( 54), INT16_C( 69), INT16_C( 203), INT16_C( 11) },
|
|
{ INT16_C( 116), INT16_C( 100), INT16_C( 125), INT16_C( 229), INT16_C( 139), INT16_C( 111), INT16_C( 106), INT16_C( 170),
|
|
INT16_C( 252), INT16_C( 3), INT16_C( 176), INT16_C( 212), INT16_C( 9), INT16_C( 4), INT16_C( 102), INT16_C( 176) },
|
|
{ INT8_C( 17), INT8_C( 86), INT8_C( 70), INT8_MAX, INT8_MAX, INT8_C( 2), INT8_MAX, INT8_C( 22),
|
|
INT8_C( 116), INT8_C( 100), INT8_C( 125), INT8_MAX, INT8_MAX, INT8_C( 111), INT8_C( 106), INT8_MAX,
|
|
INT8_MAX, INT8_C( 115), INT8_C( 116), INT8_C( 75), INT8_C( 54), INT8_C( 69), INT8_MAX, INT8_C( 11),
|
|
INT8_MAX, INT8_C( 3), INT8_MAX, INT8_MAX, INT8_C( 9), INT8_C( 4), INT8_C( 102), INT8_MAX } },
|
|
{ { INT16_C( 113), INT16_C( 148), INT16_C( 98), INT16_C( 56), INT16_C( 98), INT16_C( 38), INT16_C( 44), INT16_C( 230),
|
|
INT16_C( 238), INT16_C( 154), INT16_C( 55), INT16_C( 133), INT16_C( 135), INT16_C( 20), INT16_C( 154), INT16_C( 200) },
|
|
{ INT16_C( 217), INT16_C( 250), INT16_C( 214), INT16_C( 41), INT16_C( 218), INT16_C( 5), INT16_C( 33), INT16_C( 47),
|
|
INT16_C( 213), INT16_C( 174), INT16_C( 55), INT16_C( 77), INT16_C( 190), INT16_C( 172), INT16_C( 38), INT16_C( 99) },
|
|
{ INT8_C( 113), INT8_MAX, INT8_C( 98), INT8_C( 56), INT8_C( 98), INT8_C( 38), INT8_C( 44), INT8_MAX,
|
|
INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 41), INT8_MAX, INT8_C( 5), INT8_C( 33), INT8_C( 47),
|
|
INT8_MAX, INT8_MAX, INT8_C( 55), INT8_MAX, INT8_MAX, INT8_C( 20), INT8_MAX, INT8_MAX,
|
|
INT8_MAX, INT8_MAX, INT8_C( 55), INT8_C( 77), INT8_MAX, INT8_MAX, INT8_C( 38), INT8_C( 99) } },
|
|
{ { INT16_C( 208), INT16_C( 60), INT16_C( 144), INT16_C( 223), INT16_C( 181), INT16_C( 112), INT16_C( 208), INT16_C( 230),
|
|
INT16_C( 105), INT16_C( 177), INT16_C( 200), INT16_C( 95), INT16_C( 96), INT16_C( 222), INT16_C( 127), INT16_C( 134) },
|
|
{ INT16_C( 159), INT16_C( 247), INT16_C( 40), INT16_C( 153), INT16_C( 187), INT16_C( 180), INT16_C( 170), INT16_C( 48),
|
|
INT16_C( 46), INT16_C( 180), INT16_C( 224), INT16_C( 125), INT16_C( 31), INT16_C( 198), INT16_C( 158), INT16_C( 239) },
|
|
{ INT8_MAX, INT8_C( 60), INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 112), INT8_MAX, INT8_MAX,
|
|
INT8_MAX, INT8_MAX, INT8_C( 40), INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 48),
|
|
INT8_C( 105), INT8_MAX, INT8_MAX, INT8_C( 95), INT8_C( 96), INT8_MAX, INT8_MAX, INT8_MAX,
|
|
INT8_C( 46), INT8_MAX, INT8_MAX, INT8_C( 125), INT8_C( 31), INT8_MAX, INT8_MAX, INT8_MAX } },
|
|
{ { INT16_C( 15), INT16_C( 109), INT16_C( 188), INT16_C( 21), INT16_C( 16), INT16_C( 2), INT16_C( 99), INT16_C( 206),
|
|
INT16_C( 20), INT16_C( 136), INT16_C( 150), INT16_C( 52), INT16_C( 98), INT16_C( 85), INT16_C( 71), INT16_C( 61) },
|
|
{ INT16_C( 42), INT16_C( 142), INT16_C( 177), INT16_C( 94), INT16_C( 108), INT16_C( 124), INT16_C( 147), INT16_C( 97),
|
|
INT16_C( 204), INT16_C( 155), INT16_C( 239), INT16_C( 25), INT16_C( 201), INT16_C( 81), INT16_C( 178), INT16_C( 104) },
|
|
{ INT8_C( 15), INT8_C( 109), INT8_MAX, INT8_C( 21), INT8_C( 16), INT8_C( 2), INT8_C( 99), INT8_MAX,
|
|
INT8_C( 42), INT8_MAX, INT8_MAX, INT8_C( 94), INT8_C( 108), INT8_C( 124), INT8_MAX, INT8_C( 97),
|
|
INT8_C( 20), INT8_MAX, INT8_MAX, INT8_C( 52), INT8_C( 98), INT8_C( 85), INT8_C( 71), INT8_C( 61),
|
|
INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 25), INT8_MAX, INT8_C( 81), INT8_MAX, INT8_C( 104) } },
|
|
{ { INT16_C( 57), INT16_C( 194), INT16_C( 154), INT16_C( 172), INT16_C( 129), INT16_C( 214), INT16_C( 114), INT16_C( 187),
|
|
INT16_C( 32), INT16_C( 161), INT16_C( 37), INT16_C( 97), INT16_C( 40), INT16_C( 255), INT16_C( 66), INT16_C( 182) },
|
|
{ INT16_C( 94), INT16_C( 102), INT16_C( 153), INT16_C( 254), INT16_C( 58), INT16_C( 46), INT16_C( 11), INT16_C( 234),
|
|
INT16_C( 63), INT16_C( 60), INT16_C( 70), INT16_C( 83), INT16_C( 80), INT16_C( 73), INT16_C( 186), INT16_C( 14) },
|
|
{ INT8_C( 57), INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 114), INT8_MAX,
|
|
INT8_C( 94), INT8_C( 102), INT8_MAX, INT8_MAX, INT8_C( 58), INT8_C( 46), INT8_C( 11), INT8_MAX,
|
|
INT8_C( 32), INT8_MAX, INT8_C( 37), INT8_C( 97), INT8_C( 40), INT8_MAX, INT8_C( 66), INT8_MAX,
|
|
INT8_C( 63), INT8_C( 60), INT8_C( 70), INT8_C( 83), INT8_C( 80), INT8_C( 73), INT8_MAX, INT8_C( 14) } },
|
|
{ { INT16_C( 121), INT16_C( 16), INT16_C( 134), INT16_C( 45), INT16_C( 227), INT16_C( 108), INT16_C( 69), INT16_C( 26),
|
|
INT16_C( 226), INT16_C( 233), INT16_C( 244), INT16_C( 152), INT16_C( 142), INT16_C( 215), INT16_C( 225), INT16_C( 96) },
|
|
{ INT16_C( 89), INT16_C( 109), INT16_C( 127), INT16_C( 159), INT16_C( 245), INT16_C( 80), INT16_C( 97), INT16_C( 191),
|
|
INT16_C( 193), INT16_C( 109), INT16_C( 228), INT16_C( 250), INT16_C( 230), INT16_C( 187), INT16_C( 182), INT16_C( 34) },
|
|
{ INT8_C( 121), INT8_C( 16), INT8_MAX, INT8_C( 45), INT8_MAX, INT8_C( 108), INT8_C( 69), INT8_C( 26),
|
|
INT8_C( 89), INT8_C( 109), INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 80), INT8_C( 97), INT8_MAX,
|
|
INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 96),
|
|
INT8_MAX, INT8_C( 109), INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_MAX, INT8_C( 34) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_packs_epi16(a, b);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_packs_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t b[8];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 26989), INT32_C( 24063), INT32_C( 64705), INT32_C( 36658), INT32_C( 50142), INT32_C( 39242), INT32_C( 8518), INT32_C( 3656) },
|
|
{ INT32_C( 34423), INT32_C( 1251), INT32_C( 52992), INT32_C( 41566), INT32_C( 36965), INT32_C( 1065), INT32_C( 2853), INT32_C( 14105) },
|
|
{ INT16_C( 26989), INT16_C( 24063), INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 1251), INT16_MAX, INT16_MAX,
|
|
INT16_MAX, INT16_MAX, INT16_C( 8518), INT16_C( 3656), INT16_MAX, INT16_C( 1065), INT16_C( 2853), INT16_C( 14105) } },
|
|
{ { INT32_C( 23229), INT32_C( 38238), INT32_C( 64100), INT32_C( 13468), INT32_C( 43716), INT32_C( 10670), INT32_C( 7220), INT32_C( 25683) },
|
|
{ INT32_C( 59070), INT32_C( 63100), INT32_C( 3056), INT32_C( 41535), INT32_C( 15948), INT32_C( 20583), INT32_C( 3692), INT32_C( 51058) },
|
|
{ INT16_C( 23229), INT16_MAX, INT16_MAX, INT16_C( 13468), INT16_MAX, INT16_MAX, INT16_C( 3056), INT16_MAX,
|
|
INT16_MAX, INT16_C( 10670), INT16_C( 7220), INT16_C( 25683), INT16_C( 15948), INT16_C( 20583), INT16_C( 3692), INT16_MAX } },
|
|
{ { INT32_C( 33198), INT32_C( 51063), INT32_C( 44498), INT32_C( 33103), INT32_C( 2239), INT32_C( 25432), INT32_C( 43889), INT32_C( 21875) },
|
|
{ INT32_C( 25046), INT32_C( 21800), INT32_C( 43267), INT32_C( 8746), INT32_C( 33578), INT32_C( 54246), INT32_C( 52094), INT32_C( 20512) },
|
|
{ INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 25046), INT16_C( 21800), INT16_MAX, INT16_C( 8746),
|
|
INT16_C( 2239), INT16_C( 25432), INT16_MAX, INT16_C( 21875), INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 20512) } },
|
|
{ { INT32_C( 23985), INT32_C( 64179), INT32_C( 57507), INT32_C( 62979), INT32_C( 51066), INT32_C( 63386), INT32_C( 62658), INT32_C( 7493) },
|
|
{ INT32_C( 8058), INT32_C( 42009), INT32_C( 60548), INT32_C( 16866), INT32_C( 25865), INT32_C( 30044), INT32_C( 51050), INT32_C( 56292) },
|
|
{ INT16_C( 23985), INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 8058), INT16_MAX, INT16_MAX, INT16_C( 16866),
|
|
INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 7493), INT16_C( 25865), INT16_C( 30044), INT16_MAX, INT16_MAX } },
|
|
{ { INT32_C( 30202), INT32_C( 28441), INT32_C( 23387), INT32_C( 55965), INT32_C( 22335), INT32_C( 1741), INT32_C( 48077), INT32_C( 35735) },
|
|
{ INT32_C( 39681), INT32_C( 30219), INT32_C( 57042), INT32_C( 16312), INT32_C( 24214), INT32_C( 19812), INT32_C( 32777), INT32_C( 61964) },
|
|
{ INT16_C( 30202), INT16_C( 28441), INT16_C( 23387), INT16_MAX, INT16_MAX, INT16_C( 30219), INT16_MAX, INT16_C( 16312),
|
|
INT16_C( 22335), INT16_C( 1741), INT16_MAX, INT16_MAX, INT16_C( 24214), INT16_C( 19812), INT16_MAX, INT16_MAX } },
|
|
{ { INT32_C( 55181), INT32_C( 57421), INT32_C( 41918), INT32_C( 41954), INT32_C( 514), INT32_C( 30543), INT32_C( 31479), INT32_C( 10860) },
|
|
{ INT32_C( 14337), INT32_C( 37144), INT32_C( 64565), INT32_C( 48032), INT32_C( 28093), INT32_C( 41188), INT32_C( 23835), INT32_C( 61319) },
|
|
{ INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 14337), INT16_MAX, INT16_MAX, INT16_MAX,
|
|
INT16_C( 514), INT16_C( 30543), INT16_C( 31479), INT16_C( 10860), INT16_C( 28093), INT16_MAX, INT16_C( 23835), INT16_MAX } },
|
|
{ { INT32_C( 5159), INT32_C( 17829), INT32_C( 25153), INT32_C( 33309), INT32_C( 36079), INT32_C( 19244), INT32_C( 36521), INT32_C( 20605) },
|
|
{ INT32_C( 36964), INT32_C( 64213), INT32_C( 54876), INT32_C( 31577), INT32_C( 14599), INT32_C( 52101), INT32_C( 19033), INT32_C( 6043) },
|
|
{ INT16_C( 5159), INT16_C( 17829), INT16_C( 25153), INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 31577),
|
|
INT16_MAX, INT16_C( 19244), INT16_MAX, INT16_C( 20605), INT16_C( 14599), INT16_MAX, INT16_C( 19033), INT16_C( 6043) } },
|
|
{ { INT32_C( 24743), INT32_C( 61018), INT32_C( 35780), INT32_C( 33286), INT32_C( 33467), INT32_C( 48461), INT32_C( 52488), INT32_C( 63716) },
|
|
{ INT32_C( 44120), INT32_C( 39834), INT32_C( 38694), INT32_C( 57881), INT32_C( 32100), INT32_C( 33594), INT32_C( 54096), INT32_C( 35019) },
|
|
{ INT16_C( 24743), INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX,
|
|
INT16_MAX, INT16_MAX, INT16_MAX, INT16_MAX, INT16_C( 32100), INT16_MAX, INT16_MAX, INT16_MAX } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_packs_epi32(a, b);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_packus_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t b[16];
|
|
const uint8_t r[32];
|
|
} test_vec[] = {
|
|
{ { INT16_C( 1278), INT16_C( 16487), INT16_C( 23908), -INT16_C( 22641), -INT16_C( 20243), INT16_C( 19138), INT16_C( 5855), -INT16_C( 25236),
|
|
INT16_C( 27106), -INT16_C( 20692), -INT16_C( 28351), -INT16_C( 14963), -INT16_C( 25251), -INT16_C( 8084), -INT16_C( 9791), -INT16_C( 16413) },
|
|
{ INT16_C( 75), INT16_C( 65), INT16_C( 142), INT16_C( 150), INT16_C( 171), INT16_C( 30), INT16_C( 77), INT16_C( 163),
|
|
INT16_C( 231), INT16_C( 247), INT16_C( 224), INT16_C( 213), INT16_C( 41), INT16_C( 62), INT16_C( 153), INT16_C( 223) },
|
|
{ UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0),
|
|
UINT8_C( 75), UINT8_C( 65), UINT8_C(142), UINT8_C(150), UINT8_C(171), UINT8_C( 30), UINT8_C( 77), UINT8_C(163),
|
|
UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(231), UINT8_C(247), UINT8_C(224), UINT8_C(213), UINT8_C( 41), UINT8_C( 62), UINT8_C(153), UINT8_C(223) } },
|
|
{ { -INT16_C( 796), -INT16_C( 29664), INT16_C( 2443), -INT16_C( 14046), INT16_C( 948), INT16_C( 30183), -INT16_C( 23984), INT16_C( 1561),
|
|
INT16_C( 27529), INT16_C( 765), -INT16_C( 17845), -INT16_C( 13865), -INT16_C( 29213), -INT16_C( 6905), INT16_C( 1318), INT16_C( 2756) },
|
|
{ INT16_C( 228), INT16_C( 140), INT16_C( 185), INT16_C( 161), INT16_C( 61), INT16_C( 12), INT16_C( 48), INT16_C( 105),
|
|
INT16_C( 15), INT16_C( 231), INT16_C( 67), INT16_C( 172), INT16_C( 183), INT16_C( 246), INT16_C( 85), INT16_C( 190) },
|
|
{ UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX,
|
|
UINT8_C(228), UINT8_C(140), UINT8_C(185), UINT8_C(161), UINT8_C( 61), UINT8_C( 12), UINT8_C( 48), UINT8_C(105),
|
|
UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX,
|
|
UINT8_C( 15), UINT8_C(231), UINT8_C( 67), UINT8_C(172), UINT8_C(183), UINT8_C(246), UINT8_C( 85), UINT8_C(190) } },
|
|
{ { -INT16_C( 27078), INT16_C( 10058), -INT16_C( 24497), INT16_C( 3017), -INT16_C( 7970), -INT16_C( 16873), INT16_C( 10512), -INT16_C( 21721),
|
|
-INT16_C( 27847), INT16_C( 658), INT16_C( 17110), -INT16_C( 22865), INT16_C( 16634), -INT16_C( 18788), -INT16_C( 25450), -INT16_C( 12172) },
|
|
{ INT16_C( 191), INT16_C( 130), INT16_C( 192), INT16_C( 61), INT16_C( 165), INT16_C( 176), INT16_C( 35), INT16_C( 7),
|
|
INT16_C( 238), INT16_C( 140), INT16_C( 185), INT16_C( 43), INT16_C( 206), INT16_C( 143), INT16_C( 86), INT16_C( 156) },
|
|
{ UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0),
|
|
UINT8_C(191), UINT8_C(130), UINT8_C(192), UINT8_C( 61), UINT8_C(165), UINT8_C(176), UINT8_C( 35), UINT8_C( 7),
|
|
UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(238), UINT8_C(140), UINT8_C(185), UINT8_C( 43), UINT8_C(206), UINT8_C(143), UINT8_C( 86), UINT8_C(156) } },
|
|
{ { INT16_C( 22293), INT16_C( 29726), -INT16_C( 21481), -INT16_C( 18254), -INT16_C( 21167), INT16_C( 8040), -INT16_C( 15152), -INT16_C( 31193),
|
|
INT16_C( 12723), -INT16_C( 7150), INT16_C( 17642), -INT16_C( 7409), -INT16_C( 4078), INT16_C( 31859), -INT16_C( 11706), INT16_C( 23321) },
|
|
{ INT16_C( 55), INT16_C( 65), INT16_C( 130), INT16_C( 52), INT16_C( 97), INT16_C( 0), INT16_C( 123), INT16_C( 217),
|
|
INT16_C( 153), INT16_C( 150), INT16_C( 204), INT16_C( 240), INT16_C( 236), INT16_C( 3), INT16_C( 133), INT16_C( 232) },
|
|
{ UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 55), UINT8_C( 65), UINT8_C(130), UINT8_C( 52), UINT8_C( 97), UINT8_C( 0), UINT8_C(123), UINT8_C(217),
|
|
UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX,
|
|
UINT8_C(153), UINT8_C(150), UINT8_C(204), UINT8_C(240), UINT8_C(236), UINT8_C( 3), UINT8_C(133), UINT8_C(232) } },
|
|
{ { INT16_C( 11965), -INT16_C( 24535), INT16_C( 8880), -INT16_C( 7979), INT16_C( 10628), -INT16_C( 21792), INT16_C( 26276), INT16_C( 20611),
|
|
INT16_C( 16639), -INT16_C( 8730), INT16_C( 24332), -INT16_C( 14131), INT16_C( 14668), INT16_C( 3019), INT16_C( 10943), INT16_C( 31987) },
|
|
{ INT16_C( 29), INT16_C( 9), INT16_C( 241), INT16_C( 195), INT16_C( 201), INT16_C( 190), INT16_C( 240), INT16_C( 47),
|
|
INT16_C( 244), INT16_C( 60), INT16_C( 217), INT16_C( 160), INT16_C( 208), INT16_C( 209), INT16_C( 158), INT16_C( 83) },
|
|
{ UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX,
|
|
UINT8_C( 29), UINT8_C( 9), UINT8_C(241), UINT8_C(195), UINT8_C(201), UINT8_C(190), UINT8_C(240), UINT8_C( 47),
|
|
UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX,
|
|
UINT8_C(244), UINT8_C( 60), UINT8_C(217), UINT8_C(160), UINT8_C(208), UINT8_C(209), UINT8_C(158), UINT8_C( 83) } },
|
|
{ { INT16_C( 27323), -INT16_C( 1188), INT16_C( 17755), INT16_C( 30398), INT16_C( 11278), INT16_C( 15668), INT16_C( 17180), INT16_C( 19820),
|
|
INT16_C( 30775), -INT16_C( 29815), -INT16_C( 29103), INT16_C( 25643), -INT16_C( 10657), INT16_C( 22837), -INT16_C( 31883), INT16_C( 12460) },
|
|
{ INT16_C( 8), INT16_C( 72), INT16_C( 234), INT16_C( 91), INT16_C( 243), INT16_C( 50), INT16_C( 5), INT16_C( 109),
|
|
INT16_C( 9), INT16_C( 207), INT16_C( 36), INT16_C( 246), INT16_C( 105), INT16_C( 112), INT16_C( 252), INT16_C( 217) },
|
|
{ UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX,
|
|
UINT8_C( 8), UINT8_C( 72), UINT8_C(234), UINT8_C( 91), UINT8_C(243), UINT8_C( 50), UINT8_C( 5), UINT8_C(109),
|
|
UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX,
|
|
UINT8_C( 9), UINT8_C(207), UINT8_C( 36), UINT8_C(246), UINT8_C(105), UINT8_C(112), UINT8_C(252), UINT8_C(217) } },
|
|
{ { -INT16_C( 13307), INT16_C( 21025), -INT16_C( 8010), -INT16_C( 13138), INT16_C( 18387), INT16_C( 2558), INT16_C( 32332), -INT16_C( 13706),
|
|
INT16_C( 28551), INT16_C( 7834), -INT16_C( 12908), -INT16_C( 28907), INT16_C( 25910), INT16_C( 8959), -INT16_C( 24735), INT16_C( 26363) },
|
|
{ INT16_C( 29), INT16_C( 33), INT16_C( 103), INT16_C( 208), INT16_C( 236), INT16_C( 250), INT16_C( 79), INT16_C( 241),
|
|
INT16_C( 95), INT16_C( 83), INT16_C( 36), INT16_C( 99), INT16_C( 225), INT16_C( 235), INT16_C( 129), INT16_C( 236) },
|
|
{ UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0),
|
|
UINT8_C( 29), UINT8_C( 33), UINT8_C(103), UINT8_C(208), UINT8_C(236), UINT8_C(250), UINT8_C( 79), UINT8_C(241),
|
|
UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX,
|
|
UINT8_C( 95), UINT8_C( 83), UINT8_C( 36), UINT8_C( 99), UINT8_C(225), UINT8_C(235), UINT8_C(129), UINT8_C(236) } },
|
|
{ { INT16_C( 2718), -INT16_C( 25843), -INT16_C( 1167), INT16_C( 8043), INT16_C( 17639), INT16_C( 20762), -INT16_C( 8301), INT16_C( 21058),
|
|
INT16_C( 20798), INT16_C( 27301), -INT16_C( 30858), -INT16_C( 51), INT16_C( 21352), -INT16_C( 5654), INT16_C( 15572), INT16_C( 29397) },
|
|
{ INT16_C( 226), INT16_C( 184), INT16_C( 120), INT16_C( 196), INT16_C( 241), INT16_C( 79), INT16_C( 87), INT16_C( 14),
|
|
INT16_C( 71), INT16_C( 31), INT16_C( 70), INT16_C( 55), INT16_C( 9), INT16_C( 109), INT16_C( 245), INT16_C( 139) },
|
|
{ UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_MAX,
|
|
UINT8_C(226), UINT8_C(184), UINT8_C(120), UINT8_C(196), UINT8_C(241), UINT8_C( 79), UINT8_C( 87), UINT8_C( 14),
|
|
UINT8_MAX, UINT8_MAX, UINT8_C( 0), UINT8_C( 0), UINT8_MAX, UINT8_C( 0), UINT8_MAX, UINT8_MAX,
|
|
UINT8_C( 71), UINT8_C( 31), UINT8_C( 70), UINT8_C( 55), UINT8_C( 9), UINT8_C(109), UINT8_C(245), UINT8_C(139) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi16(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_packus_epi16(a, b);
|
|
simde_test_x86_assert_equal_u8x32(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_packus_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t b[8];
|
|
const uint16_t r[16];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 56303), INT32_C( 60373), INT32_C( 50246), INT32_C( 4724), INT32_C( 15585), INT32_C( 12721), INT32_C( 31788), INT32_C( 19403) },
|
|
{ -INT32_C( 1490634197), INT32_C( 1234369705), INT32_C( 638441621), INT32_C( 2100920576), INT32_C( 12196591), INT32_C( 1060203433), INT32_C( 196828782), INT32_C( 1750501180) },
|
|
{ UINT16_C(56303), UINT16_C(60373), UINT16_C(50246), UINT16_C( 4724), UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_MAX,
|
|
UINT16_C(15585), UINT16_C(12721), UINT16_C(31788), UINT16_C(19403), UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX } },
|
|
{ { INT32_C( 59919), INT32_C( 3636), INT32_C( 31284), INT32_C( 45815), INT32_C( 12722), INT32_C( 35697), INT32_C( 32406), INT32_C( 62950) },
|
|
{ -INT32_C( 471861910), INT32_C( 301011863), INT32_C( 411772245), INT32_C( 466256531), INT32_C( 1363967284), -INT32_C( 1545814687), -INT32_C( 1658752278), -INT32_C( 913176481) },
|
|
{ UINT16_C(59919), UINT16_C( 3636), UINT16_C(31284), UINT16_C(45815), UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_MAX,
|
|
UINT16_C(12722), UINT16_C(35697), UINT16_C(32406), UINT16_C(62950), UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_C( 0) } },
|
|
{ { INT32_C( 38060), INT32_C( 55973), INT32_C( 22258), INT32_C( 59249), INT32_C( 39736), INT32_C( 25918), INT32_C( 58882), INT32_C( 26031) },
|
|
{ -INT32_C( 1929815033), -INT32_C( 1134059527), -INT32_C( 2112726577), INT32_C( 1349092118), -INT32_C( 1125408447), INT32_C( 1008806325), -INT32_C( 266198135), -INT32_C( 1084894792) },
|
|
{ UINT16_C(38060), UINT16_C(55973), UINT16_C(22258), UINT16_C(59249), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_MAX,
|
|
UINT16_C(39736), UINT16_C(25918), UINT16_C(58882), UINT16_C(26031), UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_C( 0) } },
|
|
{ { INT32_C( 10060), INT32_C( 48611), INT32_C( 9024), INT32_C( 47731), INT32_C( 118), INT32_C( 4412), INT32_C( 29442), INT32_C( 23859) },
|
|
{ -INT32_C( 1803255898), INT32_C( 1045588018), -INT32_C( 681471394), -INT32_C( 2037197509), -INT32_C( 1132001228), INT32_C( 1540277152), INT32_C( 1389285410), -INT32_C( 827391705) },
|
|
{ UINT16_C(10060), UINT16_C(48611), UINT16_C( 9024), UINT16_C(47731), UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 118), UINT16_C( 4412), UINT16_C(29442), UINT16_C(23859), UINT16_C( 0), UINT16_MAX, UINT16_MAX, UINT16_C( 0) } },
|
|
{ { INT32_C( 45666), INT32_C( 64241), INT32_C( 33489), INT32_C( 23304), INT32_C( 3096), INT32_C( 30055), INT32_C( 56775), INT32_C( 47019) },
|
|
{ INT32_C( 1181355690), INT32_C( 155212738), -INT32_C( 712306003), -INT32_C( 516910219), INT32_C( 1995261987), -INT32_C( 454339538), -INT32_C( 1044204918), -INT32_C( 747082456) },
|
|
{ UINT16_C(45666), UINT16_C(64241), UINT16_C(33489), UINT16_C(23304), UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 3096), UINT16_C(30055), UINT16_C(56775), UINT16_C(47019), UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_C( 0) } },
|
|
{ { INT32_C( 15897), INT32_C( 60231), INT32_C( 57792), INT32_C( 35011), INT32_C( 26622), INT32_C( 36684), INT32_C( 50256), INT32_C( 63383) },
|
|
{ -INT32_C( 399134549), INT32_C( 1993571338), -INT32_C( 1286040754), -INT32_C( 1120134268), -INT32_C( 802932021), -INT32_C( 1084264412), -INT32_C( 92033154), INT32_C( 603003512) },
|
|
{ UINT16_C(15897), UINT16_C(60231), UINT16_C(57792), UINT16_C(35011), UINT16_C( 0), UINT16_MAX, UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C(26622), UINT16_C(36684), UINT16_C(50256), UINT16_C(63383), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_MAX } },
|
|
{ { INT32_C( 54539), INT32_C( 61516), INT32_C( 63139), INT32_C( 35507), INT32_C( 15963), INT32_C( 51197), INT32_C( 58049), INT32_C( 26117) },
|
|
{ INT32_C( 2050756824), INT32_C( 1651149039), -INT32_C( 346550996), INT32_C( 125111533), INT32_C( 742772964), -INT32_C( 168607093), INT32_C( 1607972035), INT32_C( 1053154406) },
|
|
{ UINT16_C(54539), UINT16_C(61516), UINT16_C(63139), UINT16_C(35507), UINT16_MAX, UINT16_MAX, UINT16_C( 0), UINT16_MAX,
|
|
UINT16_C(15963), UINT16_C(51197), UINT16_C(58049), UINT16_C(26117), UINT16_MAX, UINT16_C( 0), UINT16_MAX, UINT16_MAX } },
|
|
{ { INT32_C( 56504), INT32_C( 46398), INT32_C( 7584), INT32_C( 34340), INT32_C( 29107), INT32_C( 28518), INT32_C( 49614), INT32_C( 1536) },
|
|
{ INT32_C( 518174869), INT32_C( 198451419), INT32_C( 1495823542), INT32_C( 1910459530), INT32_C( 1625461429), -INT32_C( 1798354631), -INT32_C( 1605001850), -INT32_C( 962177743) },
|
|
{ UINT16_C(56504), UINT16_C(46398), UINT16_C( 7584), UINT16_C(34340), UINT16_MAX, UINT16_MAX, UINT16_MAX, UINT16_MAX,
|
|
UINT16_C(29107), UINT16_C(28518), UINT16_C(49614), UINT16_C( 1536), UINT16_MAX, UINT16_C( 0), UINT16_C( 0), UINT16_C( 0) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_packus_epi32(a, b);
|
|
simde_test_x86_assert_equal_u16x16(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_permute4x64_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C(-4031273950158647677), INT64_C(-7434948453373431243),
|
|
INT64_C( 966046851086666502), INT64_C(-3558090175042735721)),
|
|
simde_mm256_set_epi64x(INT64_C(-3558090175042735721), INT64_C(-3558090175042735721),
|
|
INT64_C(-4031273950158647677), INT64_C( 966046851086666502)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-5846597928812893198), INT64_C(-4353963629209663352),
|
|
INT64_C(-7799994890686903985), INT64_C( 1444957477620918324)),
|
|
simde_mm256_set_epi64x(INT64_C( 1444957477620918324), INT64_C( 1444957477620918324),
|
|
INT64_C(-5846597928812893198), INT64_C(-7799994890686903985)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-1184806487964558659), INT64_C( 7043949117721512702),
|
|
INT64_C( -92438279376413162), INT64_C( 2263934164871463775)),
|
|
simde_mm256_set_epi64x(INT64_C( 2263934164871463775), INT64_C( 2263934164871463775),
|
|
INT64_C(-1184806487964558659), INT64_C( -92438279376413162)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 9090919205935740251), INT64_C( 3797255434791406626),
|
|
INT64_C(-3974983398240952043), INT64_C(-2667637164037811982)),
|
|
simde_mm256_set_epi64x(INT64_C(-2667637164037811982), INT64_C(-2667637164037811982),
|
|
INT64_C( 9090919205935740251), INT64_C(-3974983398240952043)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 7885365925671452944), INT64_C( 8557735835567037410),
|
|
INT64_C( 1805700887716213163), INT64_C(-5945530108016559723)),
|
|
simde_mm256_set_epi64x(INT64_C(-5945530108016559723), INT64_C(-5945530108016559723),
|
|
INT64_C( 7885365925671452944), INT64_C( 1805700887716213163)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( -666700084400918528), INT64_C( 2293046882897477780),
|
|
INT64_C(-4361422993016110212), INT64_C( 5540865589910111090)),
|
|
simde_mm256_set_epi64x(INT64_C( 5540865589910111090), INT64_C( 5540865589910111090),
|
|
INT64_C( -666700084400918528), INT64_C(-4361422993016110212)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-4089126903474854143), INT64_C(-3405442608942374627),
|
|
INT64_C(-5965708747641475330), INT64_C( 3779098457061206514)),
|
|
simde_mm256_set_epi64x(INT64_C( 3779098457061206514), INT64_C( 3779098457061206514),
|
|
INT64_C(-4089126903474854143), INT64_C(-5965708747641475330)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-7195404196599220190), INT64_C( 4846123797420351534),
|
|
INT64_C( 1973553066803872882), INT64_C(-2603358823346386940)),
|
|
simde_mm256_set_epi64x(INT64_C(-2603358823346386940), INT64_C(-2603358823346386940),
|
|
INT64_C(-7195404196599220190), INT64_C( 1973553066803872882)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_permute4x64_epi64(test_vec[i].a, 13);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_permute4x64_pd(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256d a;
|
|
simde__m256d r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -641.76), SIMDE_FLOAT64_C( 477.18),
|
|
SIMDE_FLOAT64_C( 278.49), SIMDE_FLOAT64_C( 569.18)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 569.18), SIMDE_FLOAT64_C( 569.18),
|
|
SIMDE_FLOAT64_C( -641.76), SIMDE_FLOAT64_C( 278.49)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -489.82), SIMDE_FLOAT64_C( -641.14),
|
|
SIMDE_FLOAT64_C( -951.91), SIMDE_FLOAT64_C( 935.01)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 935.01), SIMDE_FLOAT64_C( 935.01),
|
|
SIMDE_FLOAT64_C( -489.82), SIMDE_FLOAT64_C( -951.91)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -602.75), SIMDE_FLOAT64_C( 339.47),
|
|
SIMDE_FLOAT64_C( -820.66), SIMDE_FLOAT64_C( -740.61)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -740.61), SIMDE_FLOAT64_C( -740.61),
|
|
SIMDE_FLOAT64_C( -602.75), SIMDE_FLOAT64_C( -820.66)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -303.98), SIMDE_FLOAT64_C( -350.58),
|
|
SIMDE_FLOAT64_C( -574.59), SIMDE_FLOAT64_C( 850.86)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 850.86), SIMDE_FLOAT64_C( 850.86),
|
|
SIMDE_FLOAT64_C( -303.98), SIMDE_FLOAT64_C( -574.59)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -623.12), SIMDE_FLOAT64_C( -143.91),
|
|
SIMDE_FLOAT64_C( -840.93), SIMDE_FLOAT64_C( 411.53)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( 411.53), SIMDE_FLOAT64_C( 411.53),
|
|
SIMDE_FLOAT64_C( -623.12), SIMDE_FLOAT64_C( -840.93)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -167.73), SIMDE_FLOAT64_C( -215.71),
|
|
SIMDE_FLOAT64_C( -717.06), SIMDE_FLOAT64_C( -432.13)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -432.13), SIMDE_FLOAT64_C( -432.13),
|
|
SIMDE_FLOAT64_C( -167.73), SIMDE_FLOAT64_C( -717.06)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( 572.27), SIMDE_FLOAT64_C( -942.37),
|
|
SIMDE_FLOAT64_C( 905.44), SIMDE_FLOAT64_C( -810.45)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -810.45), SIMDE_FLOAT64_C( -810.45),
|
|
SIMDE_FLOAT64_C( 572.27), SIMDE_FLOAT64_C( 905.44)) },
|
|
{ simde_mm256_set_pd(SIMDE_FLOAT64_C( -340.56), SIMDE_FLOAT64_C( 537.41),
|
|
SIMDE_FLOAT64_C( -960.96), SIMDE_FLOAT64_C( -230.88)),
|
|
simde_mm256_set_pd(SIMDE_FLOAT64_C( -230.88), SIMDE_FLOAT64_C( -230.88),
|
|
SIMDE_FLOAT64_C( -340.56), SIMDE_FLOAT64_C( -960.96)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256d r = simde_mm256_permute4x64_pd(test_vec[i].a, 13);
|
|
simde_assert_m256d_close(r, test_vec[i].r, 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_permute2x128_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 9096692030846176105), INT64_C( 644260392039444522),
|
|
INT64_C(-4583540275174352405), INT64_C(-6816753880857675259)),
|
|
simde_mm256_set_epi64x(INT64_C(-7886827988827131690), INT64_C(-2107575233125845054),
|
|
INT64_C(-8398644678734943287), INT64_C( 7172114359254607016)),
|
|
simde_mm256_set_epi64x(INT64_C( 9096692030846176105), INT64_C( 644260392039444522),
|
|
INT64_C(-7886827988827131690), INT64_C(-2107575233125845054)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-6314946612387904819), INT64_C(-1883921203594067636),
|
|
INT64_C(-5030251871897832411), INT64_C( 8348493077761215789)),
|
|
simde_mm256_set_epi64x(INT64_C( 2582913386835954622), INT64_C( 153655168481379701),
|
|
INT64_C(-1087064137492042031), INT64_C( 1783808851867973139)),
|
|
simde_mm256_set_epi64x(INT64_C(-6314946612387904819), INT64_C(-1883921203594067636),
|
|
INT64_C( 2582913386835954622), INT64_C( 153655168481379701)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3208478614025680333), INT64_C(-3409066786741744502),
|
|
INT64_C(-6957643043766269700), INT64_C( 3219428559958296960)),
|
|
simde_mm256_set_epi64x(INT64_C(-1736924574103250292), INT64_C(-2810347538827243748),
|
|
INT64_C( -297965813118371045), INT64_C(-7618358042182251122)),
|
|
simde_mm256_set_epi64x(INT64_C(-3208478614025680333), INT64_C(-3409066786741744502),
|
|
INT64_C(-1736924574103250292), INT64_C(-2810347538827243748)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 796366024780064289), INT64_C(-1489690745108457074),
|
|
INT64_C(-7990282097237082056), INT64_C(-7545130296515735090)),
|
|
simde_mm256_set_epi64x(INT64_C( 951803776889232332), INT64_C(-6640461449591045668),
|
|
INT64_C( 5271740244822761531), INT64_C( 3149915688837762175)),
|
|
simde_mm256_set_epi64x(INT64_C( 796366024780064289), INT64_C(-1489690745108457074),
|
|
INT64_C( 951803776889232332), INT64_C(-6640461449591045668)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( -95120238103258498), INT64_C(-1762353908339260045),
|
|
INT64_C( 6992845328844002662), INT64_C(-5939283762406250642)),
|
|
simde_mm256_set_epi64x(INT64_C(-5885001620821736092), INT64_C(-6745062192544323367),
|
|
INT64_C( 7803931770148523943), INT64_C(-8993062880293478576)),
|
|
simde_mm256_set_epi64x(INT64_C( -95120238103258498), INT64_C(-1762353908339260045),
|
|
INT64_C(-5885001620821736092), INT64_C(-6745062192544323367)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3708437875152674849), INT64_C( 8243162546537572005),
|
|
INT64_C(-1103721052327437925), INT64_C(-2925489198757650175)),
|
|
simde_mm256_set_epi64x(INT64_C( 1440085788748654982), INT64_C( 1725906984156202179),
|
|
INT64_C( 5845599904819452784), INT64_C( 7162548421658470679)),
|
|
simde_mm256_set_epi64x(INT64_C(-3708437875152674849), INT64_C( 8243162546537572005),
|
|
INT64_C( 1440085788748654982), INT64_C( 1725906984156202179)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 6834943649491098623), INT64_C( 2759372331225584008),
|
|
INT64_C(-1659900994892419246), INT64_C(-2119655686628377164)),
|
|
simde_mm256_set_epi64x(INT64_C( 1954610004667753515), INT64_C( 5688482191974230934),
|
|
INT64_C(-3937849964004809456), INT64_C(-8694088207381845200)),
|
|
simde_mm256_set_epi64x(INT64_C( 6834943649491098623), INT64_C( 2759372331225584008),
|
|
INT64_C( 1954610004667753515), INT64_C( 5688482191974230934)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5051547726856501651), INT64_C( 7333908238294102632),
|
|
INT64_C( 7118133466490521985), INT64_C( 6243950982549416292)),
|
|
simde_mm256_set_epi64x(INT64_C(-6805527145604381785), INT64_C(-1282569833996306134),
|
|
INT64_C(-1497859500202369050), INT64_C( 1581543684384159070)),
|
|
simde_mm256_set_epi64x(INT64_C( 5051547726856501651), INT64_C( 7333908238294102632),
|
|
INT64_C(-6805527145604381785), INT64_C(-1282569833996306134)) },
|
|
};
|
|
|
|
//printf("\n");
|
|
//for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
// simde__m256i_private a, b, r;
|
|
|
|
// munit_rand_memory(sizeof(a), (uint8_t*) &a);
|
|
// munit_rand_memory(sizeof(b), (uint8_t*) &b);
|
|
|
|
// r = simde__m256i_to_private(simde_mm256_permute2x128_si256(simde__m256i_from_private(a), simde__m256i_from_private(b), 23));
|
|
|
|
// printf(" { simde_mm256_set_epi64x(INT64_C(%20" PRId64 "), INT64_C(%20" PRId64 "),\n"
|
|
// " INT64_C(%20" PRId64 "), INT64_C(%20" PRId64 ")),\n",
|
|
// a.i64[3], a.i64[2], a.i64[1], a.i64[0]);
|
|
// printf(" simde_mm256_set_epi64x(INT64_C(%20" PRId64 "), INT64_C(%20" PRId64 "),\n"
|
|
// " INT64_C(%20" PRId64 "), INT64_C(%20" PRId64 ")),\n",
|
|
// b.i64[3], b.i64[2], b.i64[1], b.i64[0]);
|
|
// printf(" simde_mm256_set_epi64x(INT64_C(%20" PRId64 "), INT64_C(%20" PRId64 "),\n"
|
|
// " INT64_C(%20" PRId64 "), INT64_C(%20" PRId64 ")) },\n",
|
|
// r.i64[3], r.i64[2], r.i64[1], r.i64[0]);
|
|
//}
|
|
//return MUNIT_FAIL;
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_permute2x128_si256(test_vec[i].a, test_vec[i].b, 23);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_permutevar8x32_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t b[8];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 1408063718), INT32_C( 1053738302), -INT32_C( 1926009139), INT32_C( 971995611), -INT32_C( 79435850), INT32_C( 1766687132), -INT32_C( 1602616261), -INT32_C( 891684124) },
|
|
{ -INT32_C( 1877031342), INT32_C( 1489955979), INT32_C( 920978011), INT32_C( 829478011), INT32_C( 1462612923), INT32_C( 1874885172), INT32_C( 1645165438), -INT32_C( 2027034571) },
|
|
{ -INT32_C( 1926009139), INT32_C( 971995611), INT32_C( 971995611), INT32_C( 971995611), INT32_C( 971995611), -INT32_C( 79435850), -INT32_C( 1602616261), INT32_C( 1766687132) } },
|
|
{ { INT32_C( 957828014), -INT32_C( 1835932105), INT32_C( 1674147816), INT32_C( 127220043), INT32_C( 543081196), -INT32_C( 1165025476), -INT32_C( 1893949862), INT32_C( 873875846) },
|
|
{ -INT32_C( 865260140), -INT32_C( 77660653), -INT32_C( 1050728587), INT32_C( 1288238176), -INT32_C( 227793226), -INT32_C( 1616053435), INT32_C( 523159705), -INT32_C( 1504492526) },
|
|
{ INT32_C( 543081196), INT32_C( 127220043), -INT32_C( 1165025476), INT32_C( 957828014), -INT32_C( 1893949862), -INT32_C( 1165025476), -INT32_C( 1835932105), INT32_C( 1674147816) } },
|
|
{ { -INT32_C( 2056077198), INT32_C( 880923071), INT32_C( 1509286136), -INT32_C( 1968849452), INT32_C( 695997156), -INT32_C( 1479989235), INT32_C( 46594032), -INT32_C( 1364649412) },
|
|
{ -INT32_C( 1724703782), -INT32_C( 439438100), INT32_C( 1748943764), INT32_C( 1710416769), INT32_C( 59666165), -INT32_C( 2018879594), -INT32_C( 1953927089), INT32_C( 1698247306) },
|
|
{ INT32_C( 1509286136), INT32_C( 695997156), INT32_C( 695997156), INT32_C( 880923071), -INT32_C( 1479989235), INT32_C( 46594032), -INT32_C( 1364649412), INT32_C( 1509286136) } },
|
|
{ { INT32_C( 989752398), -INT32_C( 1256207327), INT32_C( 287202704), INT32_C( 913707073), INT32_C( 356058239), -INT32_C( 1415781540), -INT32_C( 566876588), -INT32_C( 1505530024) },
|
|
{ -INT32_C( 52346149), -INT32_C( 1632501746), -INT32_C( 1615867810), INT32_C( 1607804384), -INT32_C( 2039148758), INT32_C( 1177620978), -INT32_C( 1876596937), -INT32_C( 1321834282) },
|
|
{ INT32_C( 913707073), -INT32_C( 566876588), -INT32_C( 566876588), INT32_C( 989752398), INT32_C( 287202704), INT32_C( 287202704), -INT32_C( 1505530024), -INT32_C( 566876588) } },
|
|
{ { -INT32_C( 1179773014), INT32_C( 1985437720), INT32_C( 269813552), INT32_C( 1450240556), -INT32_C( 321067527), INT32_C( 775032310), INT32_C( 1253988212), INT32_C( 1794962624) },
|
|
{ INT32_C( 606317068), INT32_C( 983202570), -INT32_C( 1370837118), -INT32_C( 1828341095), -INT32_C( 1770004065), INT32_C( 1673834991), -INT32_C( 911310327), -INT32_C( 2110543242) },
|
|
{ -INT32_C( 321067527), INT32_C( 269813552), INT32_C( 269813552), INT32_C( 1985437720), INT32_C( 1794962624), INT32_C( 1794962624), INT32_C( 1985437720), INT32_C( 1253988212) } },
|
|
{ { INT32_C( 1587959636), INT32_C( 1419264210), -INT32_C( 1996299537), INT32_C( 1008469917), -INT32_C( 657286167), INT32_C( 1429968460), -INT32_C( 1893799656), -INT32_C( 418295149) },
|
|
{ INT32_C( 2068166825), -INT32_C( 389030408), INT32_C( 1567740352), -INT32_C( 1030124071), INT32_C( 1956277288), INT32_C( 466277634), INT32_C( 1386932415), -INT32_C( 482690246) },
|
|
{ INT32_C( 1419264210), INT32_C( 1587959636), INT32_C( 1587959636), INT32_C( 1419264210), INT32_C( 1587959636), -INT32_C( 1996299537), -INT32_C( 418295149), -INT32_C( 1996299537) } },
|
|
{ { INT32_C( 1818132339), INT32_C( 492055901), -INT32_C( 663042561), INT32_C( 2056917842), -INT32_C( 2098318209), -INT32_C( 929187831), -INT32_C( 618969183), INT32_C( 1992250626) },
|
|
{ INT32_C( 836902356), INT32_C( 1246639691), INT32_C( 1294125307), INT32_C( 1539816668), -INT32_C( 102910480), INT32_C( 264403566), -INT32_C( 991240767), INT32_C( 104507698) },
|
|
{ -INT32_C( 2098318209), INT32_C( 2056917842), INT32_C( 2056917842), -INT32_C( 2098318209), INT32_C( 1818132339), -INT32_C( 618969183), INT32_C( 492055901), -INT32_C( 663042561) } },
|
|
{ { INT32_C( 305667271), INT32_C( 1297909330), INT32_C( 731545167), INT32_C( 713449786), -INT32_C( 2078055402), -INT32_C( 1600920098), -INT32_C( 194740542), -INT32_C( 285499865) },
|
|
{ INT32_C( 201339834), INT32_C( 140074169), INT32_C( 338949082), INT32_C( 1782495828), -INT32_C( 51420642), INT32_C( 178029127), INT32_C( 687734784), INT32_C( 1477900702) },
|
|
{ INT32_C( 731545167), INT32_C( 1297909330), INT32_C( 731545167), -INT32_C( 2078055402), -INT32_C( 194740542), -INT32_C( 285499865), INT32_C( 305667271), -INT32_C( 194740542) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_permutevar8x32_epi32(a, b);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_permutevar8x32_ps (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const simde_float32 a[8];
|
|
const int32_t b[8];
|
|
const simde_float32 r[8];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT32_C( 809.43), SIMDE_FLOAT32_C( 302.44), SIMDE_FLOAT32_C( -655.90), SIMDE_FLOAT32_C( 628.58),
|
|
SIMDE_FLOAT32_C( 242.76), SIMDE_FLOAT32_C( -149.67), SIMDE_FLOAT32_C( 759.40), SIMDE_FLOAT32_C( 143.90) },
|
|
{ -INT32_C( 716838906), INT32_C( 339742123), -INT32_C( 1286153911), -INT32_C( 443567707), -INT32_C( 1899934705), INT32_C( 2112822676), -INT32_C( 1385550335), INT32_C( 16765946) },
|
|
{ SIMDE_FLOAT32_C( 759.40), SIMDE_FLOAT32_C( 628.58), SIMDE_FLOAT32_C( 302.44), SIMDE_FLOAT32_C( -149.67),
|
|
SIMDE_FLOAT32_C( 143.90), SIMDE_FLOAT32_C( 242.76), SIMDE_FLOAT32_C( 302.44), SIMDE_FLOAT32_C( -655.90) } },
|
|
{ { SIMDE_FLOAT32_C( 110.93), SIMDE_FLOAT32_C( 350.59), SIMDE_FLOAT32_C( -543.10), SIMDE_FLOAT32_C( -725.49),
|
|
SIMDE_FLOAT32_C( 18.95), SIMDE_FLOAT32_C( -444.18), SIMDE_FLOAT32_C( -148.59), SIMDE_FLOAT32_C( 920.56) },
|
|
{ -INT32_C( 1806839313), -INT32_C( 1854284414), -INT32_C( 1122026711), INT32_C( 1513754200), INT32_C( 923247932), INT32_C( 859244152), -INT32_C( 1667625654), INT32_C( 322311203) },
|
|
{ SIMDE_FLOAT32_C( 920.56), SIMDE_FLOAT32_C( -543.10), SIMDE_FLOAT32_C( 350.59), SIMDE_FLOAT32_C( 110.93),
|
|
SIMDE_FLOAT32_C( 18.95), SIMDE_FLOAT32_C( 110.93), SIMDE_FLOAT32_C( -543.10), SIMDE_FLOAT32_C( -725.49) } },
|
|
{ { SIMDE_FLOAT32_C( -73.44), SIMDE_FLOAT32_C( -32.92), SIMDE_FLOAT32_C( 765.45), SIMDE_FLOAT32_C( 761.19),
|
|
SIMDE_FLOAT32_C( 685.64), SIMDE_FLOAT32_C( 282.32), SIMDE_FLOAT32_C( 215.31), SIMDE_FLOAT32_C( -532.59) },
|
|
{ -INT32_C( 1270343332), INT32_C( 1678672423), -INT32_C( 1617226457), INT32_C( 1725157915), INT32_C( 50490848), INT32_C( 1729509505), INT32_C( 500154044), INT32_C( 1000917215) },
|
|
{ SIMDE_FLOAT32_C( 685.64), SIMDE_FLOAT32_C( -532.59), SIMDE_FLOAT32_C( -532.59), SIMDE_FLOAT32_C( 761.19),
|
|
SIMDE_FLOAT32_C( -73.44), SIMDE_FLOAT32_C( -32.92), SIMDE_FLOAT32_C( 685.64), SIMDE_FLOAT32_C( -532.59) } },
|
|
{ { SIMDE_FLOAT32_C( -786.97), SIMDE_FLOAT32_C( -512.61), SIMDE_FLOAT32_C( 516.41), SIMDE_FLOAT32_C( -558.86),
|
|
SIMDE_FLOAT32_C( -760.16), SIMDE_FLOAT32_C( 955.28), SIMDE_FLOAT32_C( -651.17), SIMDE_FLOAT32_C( 933.60) },
|
|
{ INT32_C( 792266771), -INT32_C( 1164636966), -INT32_C( 71395463), -INT32_C( 1939680049), INT32_C( 1906913682), -INT32_C( 609463815), -INT32_C( 1260086207), -INT32_C( 1387376230) },
|
|
{ SIMDE_FLOAT32_C( -558.86), SIMDE_FLOAT32_C( 516.41), SIMDE_FLOAT32_C( -512.61), SIMDE_FLOAT32_C( 933.60),
|
|
SIMDE_FLOAT32_C( 516.41), SIMDE_FLOAT32_C( -512.61), SIMDE_FLOAT32_C( -512.61), SIMDE_FLOAT32_C( 516.41) } },
|
|
{ { SIMDE_FLOAT32_C( -59.26), SIMDE_FLOAT32_C( 439.31), SIMDE_FLOAT32_C( 841.23), SIMDE_FLOAT32_C( -266.81),
|
|
SIMDE_FLOAT32_C( 199.59), SIMDE_FLOAT32_C( -17.60), SIMDE_FLOAT32_C( 866.57), SIMDE_FLOAT32_C( -521.77) },
|
|
{ -INT32_C( 670520312), INT32_C( 325347968), -INT32_C( 1786507877), -INT32_C( 1603260065), INT32_C( 1733579981), -INT32_C( 32202075), -INT32_C( 1104023254), INT32_C( 1808473954) },
|
|
{ SIMDE_FLOAT32_C( -59.26), SIMDE_FLOAT32_C( -59.26), SIMDE_FLOAT32_C( -266.81), SIMDE_FLOAT32_C( -521.77),
|
|
SIMDE_FLOAT32_C( -17.60), SIMDE_FLOAT32_C( -17.60), SIMDE_FLOAT32_C( 841.23), SIMDE_FLOAT32_C( 841.23) } },
|
|
{ { SIMDE_FLOAT32_C( -400.14), SIMDE_FLOAT32_C( 83.44), SIMDE_FLOAT32_C( -751.08), SIMDE_FLOAT32_C( 794.29),
|
|
SIMDE_FLOAT32_C( 639.38), SIMDE_FLOAT32_C( -222.75), SIMDE_FLOAT32_C( -375.60), SIMDE_FLOAT32_C( 682.13) },
|
|
{ INT32_C( 326099892), -INT32_C( 508240108), -INT32_C( 666367949), -INT32_C( 707371605), -INT32_C( 1332541618), -INT32_C( 233087449), INT32_C( 1899912754), -INT32_C( 1169449723) },
|
|
{ SIMDE_FLOAT32_C( 639.38), SIMDE_FLOAT32_C( 639.38), SIMDE_FLOAT32_C( 794.29), SIMDE_FLOAT32_C( 794.29),
|
|
SIMDE_FLOAT32_C( -375.60), SIMDE_FLOAT32_C( 682.13), SIMDE_FLOAT32_C( -751.08), SIMDE_FLOAT32_C( -222.75) } },
|
|
{ { SIMDE_FLOAT32_C( -742.55), SIMDE_FLOAT32_C( -101.38), SIMDE_FLOAT32_C( -337.44), SIMDE_FLOAT32_C( 380.26),
|
|
SIMDE_FLOAT32_C( 642.80), SIMDE_FLOAT32_C( 959.92), SIMDE_FLOAT32_C( -937.04), SIMDE_FLOAT32_C( -939.55) },
|
|
{ INT32_C( 899989386), INT32_C( 1779071516), -INT32_C( 1474585215), INT32_C( 781924091), -INT32_C( 1700800107), -INT32_C( 128652681), INT32_C( 1032659620), INT32_C( 755565731) },
|
|
{ SIMDE_FLOAT32_C( -337.44), SIMDE_FLOAT32_C( 642.80), SIMDE_FLOAT32_C( -101.38), SIMDE_FLOAT32_C( 380.26),
|
|
SIMDE_FLOAT32_C( 959.92), SIMDE_FLOAT32_C( -939.55), SIMDE_FLOAT32_C( 642.80), SIMDE_FLOAT32_C( 380.26) } },
|
|
{ { SIMDE_FLOAT32_C( -5.16), SIMDE_FLOAT32_C( 584.21), SIMDE_FLOAT32_C( 220.31), SIMDE_FLOAT32_C( -944.84),
|
|
SIMDE_FLOAT32_C( -786.38), SIMDE_FLOAT32_C( -527.06), SIMDE_FLOAT32_C( -779.98), SIMDE_FLOAT32_C( -331.72) },
|
|
{ INT32_C( 89220617), INT32_C( 825486492), INT32_C( 1020056261), INT32_C( 1614028988), -INT32_C( 425868734), -INT32_C( 1978423610), INT32_C( 2053862995), -INT32_C( 333269278) },
|
|
{ SIMDE_FLOAT32_C( 584.21), SIMDE_FLOAT32_C( -786.38), SIMDE_FLOAT32_C( -527.06), SIMDE_FLOAT32_C( -786.38),
|
|
SIMDE_FLOAT32_C( 220.31), SIMDE_FLOAT32_C( -779.98), SIMDE_FLOAT32_C( -944.84), SIMDE_FLOAT32_C( 220.31) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi32(test_vec[i].b);
|
|
simde__m256 r = simde_mm256_permutevar8x32_ps(a, b);
|
|
simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const uint8_t a[32];
|
|
const uint8_t b[32];
|
|
const uint64_t r[4];
|
|
} test_vec[] = {
|
|
{ { UINT8_C(193), UINT8_C(212), UINT8_C( 9), UINT8_C(139), UINT8_C(179), UINT8_C(138), UINT8_C(126), UINT8_C(149),
|
|
UINT8_C(188), UINT8_C(191), UINT8_C(174), UINT8_C( 53), UINT8_C(220), UINT8_C(132), UINT8_C(137), UINT8_C(189),
|
|
UINT8_C( 77), UINT8_C( 99), UINT8_C(211), UINT8_C(102), UINT8_C( 2), UINT8_C( 4), UINT8_C(118), UINT8_C(127),
|
|
UINT8_C(149), UINT8_C( 77), UINT8_C( 65), UINT8_C(195), UINT8_C(184), UINT8_C(249), UINT8_C(233), UINT8_C(122) },
|
|
{ UINT8_C(205), UINT8_C(242), UINT8_C( 5), UINT8_C(128), UINT8_C(125), UINT8_C(131), UINT8_C( 22), UINT8_C( 57),
|
|
UINT8_C( 66), UINT8_C(196), UINT8_C(111), UINT8_C( 30), UINT8_C( 72), UINT8_C(248), UINT8_C(220), UINT8_C(149),
|
|
UINT8_C( 91), UINT8_C(175), UINT8_C(251), UINT8_C( 93), UINT8_C(179), UINT8_C(113), UINT8_C(220), UINT8_C( 72),
|
|
UINT8_C(190), UINT8_C( 29), UINT8_C( 11), UINT8_C(119), UINT8_C( 23), UINT8_C(244), UINT8_C(241), UINT8_C(228) },
|
|
{ UINT64_C( 314), UINT64_C( 600), UINT64_C( 582), UINT64_C( 499) } },
|
|
{ { UINT8_C(231), UINT8_C(246), UINT8_C(101), UINT8_C(100), UINT8_C(122), UINT8_C(123), UINT8_C(157), UINT8_C(188),
|
|
UINT8_C( 63), UINT8_C( 12), UINT8_C(219), UINT8_C(135), UINT8_C( 4), UINT8_C(183), UINT8_C( 28), UINT8_C( 95),
|
|
UINT8_C(102), UINT8_C( 24), UINT8_C(189), UINT8_C( 26), UINT8_C(137), UINT8_C(153), UINT8_C( 98), UINT8_C( 72),
|
|
UINT8_C(183), UINT8_C(110), UINT8_C(191), UINT8_C(206), UINT8_C( 98), UINT8_C(176), UINT8_C(178), UINT8_C( 73) },
|
|
{ UINT8_C(166), UINT8_C( 23), UINT8_C(173), UINT8_C( 32), UINT8_C(146), UINT8_C( 75), UINT8_C(221), UINT8_C(209),
|
|
UINT8_C( 87), UINT8_C(184), UINT8_C( 88), UINT8_C( 92), UINT8_C(111), UINT8_C(117), UINT8_C(187), UINT8_C(213),
|
|
UINT8_C(141), UINT8_C(120), UINT8_C(239), UINT8_C( 22), UINT8_C( 18), UINT8_C( 82), UINT8_C( 94), UINT8_C(201),
|
|
UINT8_C(192), UINT8_C( 29), UINT8_C(151), UINT8_C( 34), UINT8_C(205), UINT8_C( 73), UINT8_C(108), UINT8_C(116) },
|
|
{ UINT64_C( 585), UINT64_C( 820), UINT64_C( 512), UINT64_C( 625) } },
|
|
{ { UINT8_C( 97), UINT8_C( 25), UINT8_C(148), UINT8_C(243), UINT8_C(100), UINT8_C(113), UINT8_C(197), UINT8_C(188),
|
|
UINT8_C( 41), UINT8_C( 29), UINT8_C( 24), UINT8_C(152), UINT8_C(146), UINT8_C(211), UINT8_C(110), UINT8_C( 31),
|
|
UINT8_C( 76), UINT8_C( 93), UINT8_C( 54), UINT8_C( 94), UINT8_C(175), UINT8_C(148), UINT8_C( 39), UINT8_C(111),
|
|
UINT8_C(178), UINT8_C(190), UINT8_C(146), UINT8_C(127), UINT8_C( 7), UINT8_C(254), UINT8_C(243), UINT8_C(104) },
|
|
{ UINT8_C( 23), UINT8_C(136), UINT8_C( 92), UINT8_C(124), UINT8_C(249), UINT8_C( 33), UINT8_C( 56), UINT8_C( 35),
|
|
UINT8_C( 62), UINT8_C( 80), UINT8_C(187), UINT8_C(209), UINT8_C( 35), UINT8_C( 41), UINT8_C(240), UINT8_C(111),
|
|
UINT8_C(135), UINT8_C( 38), UINT8_C(205), UINT8_C( 54), UINT8_C(187), UINT8_C(244), UINT8_C(166), UINT8_C(109),
|
|
UINT8_C(178), UINT8_C( 56), UINT8_C(236), UINT8_C(186), UINT8_C( 54), UINT8_C(224), UINT8_C( 34), UINT8_C( 77) },
|
|
{ UINT64_C( 883), UINT64_C( 783), UINT64_C( 542), UINT64_C( 596) } },
|
|
{ { UINT8_C(104), UINT8_C(126), UINT8_C(201), UINT8_C( 97), UINT8_C(159), UINT8_C( 1), UINT8_C(132), UINT8_C(222),
|
|
UINT8_C( 81), UINT8_C( 64), UINT8_C(175), UINT8_C(117), UINT8_C(105), UINT8_C(159), UINT8_C(228), UINT8_C(240),
|
|
UINT8_C(198), UINT8_C(178), UINT8_C( 39), UINT8_C(129), UINT8_C(166), UINT8_C(205), UINT8_C(238), UINT8_C( 89),
|
|
UINT8_C( 5), UINT8_C(218), UINT8_C( 19), UINT8_C( 59), UINT8_C(186), UINT8_C( 53), UINT8_C(136), UINT8_C( 34) },
|
|
{ UINT8_C(180), UINT8_C( 82), UINT8_C(132), UINT8_C( 83), UINT8_C( 83), UINT8_C( 8), UINT8_C( 49), UINT8_C(165),
|
|
UINT8_C( 72), UINT8_C(224), UINT8_C( 26), UINT8_C(178), UINT8_C(128), UINT8_C(254), UINT8_C(162), UINT8_C( 70),
|
|
UINT8_C(176), UINT8_C(201), UINT8_C(199), UINT8_C( 87), UINT8_C(150), UINT8_C(181), UINT8_C(176), UINT8_C(155),
|
|
UINT8_C(143), UINT8_C(195), UINT8_C(214), UINT8_C( 74), UINT8_C(248), UINT8_C( 95), UINT8_C(108), UINT8_C(172) },
|
|
{ UINT64_C( 426), UINT64_C( 733), UINT64_C( 415), UINT64_C( 641) } },
|
|
{ { UINT8_C(177), UINT8_C(240), UINT8_C( 0), UINT8_C( 4), UINT8_C(249), UINT8_C( 49), UINT8_C(169), UINT8_C( 65),
|
|
UINT8_C( 18), UINT8_C(195), UINT8_C(243), UINT8_C(146), UINT8_C(194), UINT8_C(150), UINT8_C(216), UINT8_C(114),
|
|
UINT8_C( 95), UINT8_C(159), UINT8_C(201), UINT8_C(246), UINT8_C( 84), UINT8_C(121), UINT8_C(145), UINT8_C(227),
|
|
UINT8_C( 60), UINT8_C(104), UINT8_C( 45), UINT8_C( 53), UINT8_C(199), UINT8_C(154), UINT8_C(225), UINT8_C(120) },
|
|
{ UINT8_C(138), UINT8_C(225), UINT8_C(124), UINT8_C(131), UINT8_C( 19), UINT8_C( 38), UINT8_C(197), UINT8_C( 37),
|
|
UINT8_C(233), UINT8_C(184), UINT8_C(183), UINT8_C(171), UINT8_C( 78), UINT8_C(143), UINT8_C( 30), UINT8_C(174),
|
|
UINT8_C( 46), UINT8_C(231), UINT8_C(164), UINT8_C(130), UINT8_C( 97), UINT8_C( 53), UINT8_C(101), UINT8_C(157),
|
|
UINT8_C(157), UINT8_C(147), UINT8_C(210), UINT8_C(100), UINT8_C( 45), UINT8_C(180), UINT8_C(220), UINT8_C(183) },
|
|
{ UINT64_C( 602), UINT64_C( 680), UINT64_C( 469), UINT64_C( 600) } },
|
|
{ { UINT8_C(149), UINT8_C( 89), UINT8_C( 59), UINT8_C(168), UINT8_C(127), UINT8_C( 0), UINT8_C(205), UINT8_C(104),
|
|
UINT8_C(184), UINT8_C(132), UINT8_C( 20), UINT8_C( 7), UINT8_C( 19), UINT8_C( 50), UINT8_C(181), UINT8_C( 65),
|
|
UINT8_C( 25), UINT8_C( 89), UINT8_C(195), UINT8_C(122), UINT8_C(142), UINT8_C( 41), UINT8_C( 24), UINT8_C( 44),
|
|
UINT8_C(188), UINT8_C(234), UINT8_C(144), UINT8_C(233), UINT8_C(158), UINT8_C(109), UINT8_C(160), UINT8_C( 52) },
|
|
{ UINT8_C(198), UINT8_C(219), UINT8_C(220), UINT8_C( 69), UINT8_C(219), UINT8_C(170), UINT8_C(173), UINT8_C(148),
|
|
UINT8_C( 46), UINT8_C(193), UINT8_C(155), UINT8_C( 66), UINT8_C(243), UINT8_C( 80), UINT8_C(131), UINT8_C( 13),
|
|
UINT8_C(169), UINT8_C( 71), UINT8_C(135), UINT8_C( 55), UINT8_C(112), UINT8_C(159), UINT8_C( 99), UINT8_C( 44),
|
|
UINT8_C(138), UINT8_C(244), UINT8_C( 21), UINT8_C( 40), UINT8_C( 97), UINT8_C(181), UINT8_C( 92), UINT8_C( 39) },
|
|
{ UINT64_C( 777), UINT64_C( 749), UINT64_C( 512), UINT64_C( 590) } },
|
|
{ { UINT8_C(145), UINT8_C( 57), UINT8_C(108), UINT8_C(108), UINT8_C(227), UINT8_C( 25), UINT8_C( 0), UINT8_C( 17),
|
|
UINT8_C(219), UINT8_C(155), UINT8_C( 83), UINT8_C(206), UINT8_C(235), UINT8_C(215), UINT8_C(219), UINT8_C(148),
|
|
UINT8_C( 30), UINT8_C( 99), UINT8_C(204), UINT8_C(142), UINT8_C( 2), UINT8_C( 47), UINT8_C(186), UINT8_C(140),
|
|
UINT8_C( 35), UINT8_C(207), UINT8_C(181), UINT8_C(132), UINT8_C(132), UINT8_C( 17), UINT8_C(171), UINT8_C( 21) },
|
|
{ UINT8_C( 74), UINT8_C( 23), UINT8_C(130), UINT8_C( 45), UINT8_C( 49), UINT8_C(130), UINT8_C( 63), UINT8_C( 12),
|
|
UINT8_C( 30), UINT8_C(146), UINT8_C(218), UINT8_C( 9), UINT8_C(105), UINT8_C(182), UINT8_C(158), UINT8_C(135),
|
|
UINT8_C( 25), UINT8_C(106), UINT8_C( 21), UINT8_C( 27), UINT8_C(153), UINT8_C(207), UINT8_C(168), UINT8_C(189),
|
|
UINT8_C(158), UINT8_C( 93), UINT8_C( 65), UINT8_C( 35), UINT8_C(110), UINT8_C(237), UINT8_C( 56), UINT8_C(185) },
|
|
{ UINT64_C( 541), UINT64_C( 767), UINT64_C( 688), UINT64_C( 971) } },
|
|
{ { UINT8_C( 4), UINT8_C(186), UINT8_C(230), UINT8_C( 53), UINT8_C( 61), UINT8_C( 37), UINT8_C( 65), UINT8_C( 91),
|
|
UINT8_C(184), UINT8_C( 28), UINT8_C(100), UINT8_C( 33), UINT8_C(210), UINT8_C( 2), UINT8_C(169), UINT8_C(235),
|
|
UINT8_C(108), UINT8_C(190), UINT8_C( 6), UINT8_C( 6), UINT8_C(142), UINT8_C(174), UINT8_C(195), UINT8_C( 44),
|
|
UINT8_C( 11), UINT8_C( 4), UINT8_C( 79), UINT8_C(122), UINT8_C(241), UINT8_C(136), UINT8_C( 51), UINT8_C(246) },
|
|
{ UINT8_C( 66), UINT8_C( 25), UINT8_C( 43), UINT8_C(127), UINT8_C( 63), UINT8_C(109), UINT8_C(218), UINT8_C(247),
|
|
UINT8_C(137), UINT8_C( 63), UINT8_C( 24), UINT8_C( 91), UINT8_C( 65), UINT8_C(193), UINT8_C( 70), UINT8_C(174),
|
|
UINT8_C(128), UINT8_C( 76), UINT8_C(180), UINT8_C( 14), UINT8_C(251), UINT8_C(119), UINT8_C( 58), UINT8_C( 6),
|
|
UINT8_C(123), UINT8_C(138), UINT8_C(128), UINT8_C(109), UINT8_C( 18), UINT8_C(179), UINT8_C( 99), UINT8_C( 84) },
|
|
{ UINT64_C( 867), UINT64_C( 712), UINT64_C( 655), UINT64_C( 784) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi8(test_vec[i].a);
|
|
simde__m256i b = simde_x_mm256_loadu_epi8(test_vec[i].b);
|
|
simde__m256i r = simde_mm256_sad_epu8(a, b);
|
|
simde_test_x86_assert_equal_u64x4(r, simde_x_mm256_loadu_epi8(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_shuffle_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu8(UINT8_C(132), UINT8_C(100), UINT8_C(115), UINT8_C( 94),
|
|
UINT8_C( 73), UINT8_C(247), UINT8_C(104), UINT8_C(220),
|
|
UINT8_C(117), UINT8_C( 74), UINT8_C( 39), UINT8_C(125),
|
|
UINT8_C( 51), UINT8_C( 55), UINT8_C(148), UINT8_C(183),
|
|
UINT8_C( 5), UINT8_C(228), UINT8_C( 33), UINT8_C( 72),
|
|
UINT8_C( 84), UINT8_C( 4), UINT8_C(172), UINT8_C(134),
|
|
UINT8_C( 26), UINT8_C(247), UINT8_C(250), UINT8_C( 1),
|
|
UINT8_C(220), UINT8_C( 43), UINT8_C( 83), UINT8_C(118)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 24), UINT8_C(160), UINT8_C( 38), UINT8_C(201),
|
|
UINT8_C(108), UINT8_C( 32), UINT8_C( 93), UINT8_C( 16),
|
|
UINT8_C(104), UINT8_C(146), UINT8_C(128), UINT8_C(127),
|
|
UINT8_C(240), UINT8_C(187), UINT8_C(163), UINT8_C( 93),
|
|
UINT8_C(161), UINT8_C(148), UINT8_C(236), UINT8_C(208),
|
|
UINT8_C(110), UINT8_C( 19), UINT8_C( 3), UINT8_C(142),
|
|
UINT8_C( 56), UINT8_C( 74), UINT8_C( 2), UINT8_C(168),
|
|
UINT8_C(100), UINT8_C(209), UINT8_C( 27), UINT8_C( 46)),
|
|
simde_x_mm256_set_epu8(UINT8_C(220), UINT8_C( 0), UINT8_C( 74), UINT8_C( 0),
|
|
UINT8_C( 94), UINT8_C(183), UINT8_C(115), UINT8_C(183),
|
|
UINT8_C(220), UINT8_C( 0), UINT8_C( 0), UINT8_C(132),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(115),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(228), UINT8_C(220), UINT8_C(220), UINT8_C( 0),
|
|
UINT8_C(134), UINT8_C( 4), UINT8_C( 43), UINT8_C( 0),
|
|
UINT8_C( 1), UINT8_C( 0), UINT8_C( 84), UINT8_C(228)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 53), UINT8_C(227), UINT8_C(193), UINT8_C(203),
|
|
UINT8_C(188), UINT8_C( 31), UINT8_C(134), UINT8_C(151),
|
|
UINT8_C( 90), UINT8_C(227), UINT8_C(228), UINT8_C( 42),
|
|
UINT8_C(223), UINT8_C( 71), UINT8_C( 37), UINT8_C(166),
|
|
UINT8_C(115), UINT8_C( 13), UINT8_C(136), UINT8_C( 67),
|
|
UINT8_C(142), UINT8_C( 55), UINT8_C(218), UINT8_C(135),
|
|
UINT8_C(160), UINT8_C(121), UINT8_C(105), UINT8_C(225),
|
|
UINT8_C( 67), UINT8_C(106), UINT8_C( 80), UINT8_C(187)),
|
|
simde_x_mm256_set_epu8(UINT8_C(139), UINT8_C(207), UINT8_C(188), UINT8_C(170),
|
|
UINT8_C(232), UINT8_C(172), UINT8_C( 51), UINT8_C( 14),
|
|
UINT8_C( 50), UINT8_C(186), UINT8_C( 76), UINT8_C(187),
|
|
UINT8_C( 22), UINT8_C( 90), UINT8_C(150), UINT8_C(148),
|
|
UINT8_C(123), UINT8_C( 36), UINT8_C(145), UINT8_C( 72),
|
|
UINT8_C(252), UINT8_C(171), UINT8_C(109), UINT8_C( 77),
|
|
UINT8_C(145), UINT8_C( 77), UINT8_C(121), UINT8_C(107),
|
|
UINT8_C(138), UINT8_C(154), UINT8_C(236), UINT8_C( 13)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(223), UINT8_C(227),
|
|
UINT8_C( 71), UINT8_C( 0), UINT8_C(203), UINT8_C( 0),
|
|
UINT8_C(227), UINT8_C( 31), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(142), UINT8_C(225), UINT8_C( 0), UINT8_C(135),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(136), UINT8_C(136),
|
|
UINT8_C( 0), UINT8_C(136), UINT8_C(218), UINT8_C(142),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(136)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(147), UINT8_C(175), UINT8_C(103), UINT8_C(105),
|
|
UINT8_C(115), UINT8_C( 25), UINT8_C( 88), UINT8_C( 95),
|
|
UINT8_C(108), UINT8_C(195), UINT8_C( 30), UINT8_C( 32),
|
|
UINT8_C(183), UINT8_C(198), UINT8_C(177), UINT8_C( 61),
|
|
UINT8_C(213), UINT8_C( 7), UINT8_C(150), UINT8_C(186),
|
|
UINT8_C( 52), UINT8_C( 9), UINT8_C( 76), UINT8_C(240),
|
|
UINT8_C(240), UINT8_C(126), UINT8_C(242), UINT8_C(203),
|
|
UINT8_C(162), UINT8_C( 72), UINT8_C(186), UINT8_C( 35)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 26), UINT8_C( 1), UINT8_C(253), UINT8_C(220),
|
|
UINT8_C(156), UINT8_C(126), UINT8_C(237), UINT8_C(228),
|
|
UINT8_C(210), UINT8_C( 82), UINT8_C( 8), UINT8_C( 8),
|
|
UINT8_C(104), UINT8_C( 35), UINT8_C( 98), UINT8_C( 24),
|
|
UINT8_C(230), UINT8_C(227), UINT8_C( 73), UINT8_C(233),
|
|
UINT8_C(132), UINT8_C( 49), UINT8_C( 63), UINT8_C(172),
|
|
UINT8_C(137), UINT8_C( 87), UINT8_C( 85), UINT8_C(128),
|
|
UINT8_C(136), UINT8_C(108), UINT8_C( 70), UINT8_C(218)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 25), UINT8_C(177), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(175), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(198), UINT8_C( 95), UINT8_C( 95),
|
|
UINT8_C( 95), UINT8_C(183), UINT8_C(198), UINT8_C( 95),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 76), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(186), UINT8_C(213), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(240), UINT8_C(242), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(186), UINT8_C(126), UINT8_C( 0)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(132), UINT8_C( 22), UINT8_C(115), UINT8_C(245),
|
|
UINT8_C(139), UINT8_C(127), UINT8_C( 30), UINT8_C( 96),
|
|
UINT8_C(123), UINT8_C(228), UINT8_C( 73), UINT8_C(244),
|
|
UINT8_C( 12), UINT8_C( 46), UINT8_C( 26), UINT8_C( 36),
|
|
UINT8_C(186), UINT8_C( 18), UINT8_C(169), UINT8_C(233),
|
|
UINT8_C( 8), UINT8_C(185), UINT8_C(123), UINT8_C( 50),
|
|
UINT8_C(171), UINT8_C(240), UINT8_C(159), UINT8_C(176),
|
|
UINT8_C( 29), UINT8_C(146), UINT8_C( 85), UINT8_C( 34)),
|
|
simde_x_mm256_set_epu8(UINT8_C(197), UINT8_C( 93), UINT8_C( 52), UINT8_C(130),
|
|
UINT8_C(124), UINT8_C( 87), UINT8_C( 88), UINT8_C( 89),
|
|
UINT8_C( 56), UINT8_C(209), UINT8_C( 85), UINT8_C(235),
|
|
UINT8_C( 45), UINT8_C(236), UINT8_C(154), UINT8_C( 72),
|
|
UINT8_C(164), UINT8_C(253), UINT8_C(196), UINT8_C( 41),
|
|
UINT8_C( 28), UINT8_C(181), UINT8_C(180), UINT8_C(237),
|
|
UINT8_C( 65), UINT8_C(122), UINT8_C(110), UINT8_C( 94),
|
|
UINT8_C(125), UINT8_C( 60), UINT8_C( 80), UINT8_C(209)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C(115), UINT8_C(244), UINT8_C( 0),
|
|
UINT8_C(245), UINT8_C(123), UINT8_C( 96), UINT8_C( 30),
|
|
UINT8_C( 96), UINT8_C( 0), UINT8_C( 73), UINT8_C( 0),
|
|
UINT8_C(115), UINT8_C( 0), UINT8_C( 0), UINT8_C( 96),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(123),
|
|
UINT8_C(233), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 85), UINT8_C(185), UINT8_C( 18), UINT8_C( 18),
|
|
UINT8_C(169), UINT8_C(233), UINT8_C( 34), UINT8_C( 0)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(233), UINT8_C(108), UINT8_C(215), UINT8_C(181),
|
|
UINT8_C(100), UINT8_C( 72), UINT8_C(220), UINT8_C( 52),
|
|
UINT8_C( 24), UINT8_C( 0), UINT8_C(242), UINT8_C(125),
|
|
UINT8_C(116), UINT8_C(102), UINT8_C( 94), UINT8_C( 64),
|
|
UINT8_C(158), UINT8_C(177), UINT8_C( 3), UINT8_C(246),
|
|
UINT8_C(164), UINT8_C(171), UINT8_C(138), UINT8_C( 15),
|
|
UINT8_C( 30), UINT8_C( 68), UINT8_C(246), UINT8_C(147),
|
|
UINT8_C(162), UINT8_C( 13), UINT8_C( 93), UINT8_C( 58)),
|
|
simde_x_mm256_set_epu8(UINT8_C(159), UINT8_C(224), UINT8_C(140), UINT8_C(117),
|
|
UINT8_C( 95), UINT8_C( 45), UINT8_C(144), UINT8_C( 69),
|
|
UINT8_C(174), UINT8_C( 34), UINT8_C(237), UINT8_C( 42),
|
|
UINT8_C( 78), UINT8_C( 7), UINT8_C(200), UINT8_C(173),
|
|
UINT8_C(137), UINT8_C( 75), UINT8_C(170), UINT8_C(110),
|
|
UINT8_C(182), UINT8_C(180), UINT8_C(173), UINT8_C(172),
|
|
UINT8_C(227), UINT8_C(222), UINT8_C(132), UINT8_C( 4),
|
|
UINT8_C(190), UINT8_C( 7), UINT8_C( 12), UINT8_C( 21)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(242),
|
|
UINT8_C(233), UINT8_C(215), UINT8_C( 0), UINT8_C(242),
|
|
UINT8_C( 0), UINT8_C(102), UINT8_C( 0), UINT8_C( 72),
|
|
UINT8_C(108), UINT8_C( 24), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(164), UINT8_C( 0), UINT8_C(177),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(147),
|
|
UINT8_C( 0), UINT8_C( 30), UINT8_C(246), UINT8_C(246)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(239), UINT8_C(190), UINT8_C( 67), UINT8_C(183),
|
|
UINT8_C(162), UINT8_C( 57), UINT8_C(249), UINT8_C(218),
|
|
UINT8_C(176), UINT8_C(139), UINT8_C( 3), UINT8_C(248),
|
|
UINT8_C(214), UINT8_C( 36), UINT8_C(105), UINT8_C( 96),
|
|
UINT8_C( 80), UINT8_C(108), UINT8_C(142), UINT8_C( 2),
|
|
UINT8_C(196), UINT8_C(162), UINT8_C( 38), UINT8_C( 4),
|
|
UINT8_C(175), UINT8_C(178), UINT8_C( 88), UINT8_C(165),
|
|
UINT8_C(168), UINT8_C( 71), UINT8_C( 76), UINT8_C(232)),
|
|
simde_x_mm256_set_epu8(UINT8_C(199), UINT8_C( 95), UINT8_C( 43), UINT8_C(216),
|
|
UINT8_C(128), UINT8_C(137), UINT8_C(103), UINT8_C( 51),
|
|
UINT8_C(121), UINT8_C( 84), UINT8_C(196), UINT8_C(101),
|
|
UINT8_C(251), UINT8_C( 4), UINT8_C( 89), UINT8_C( 54),
|
|
UINT8_C(216), UINT8_C(149), UINT8_C(145), UINT8_C( 73),
|
|
UINT8_C(162), UINT8_C( 73), UINT8_C(124), UINT8_C(146),
|
|
UINT8_C( 70), UINT8_C(151), UINT8_C(137), UINT8_C(218),
|
|
UINT8_C(230), UINT8_C(112), UINT8_C( 45), UINT8_C(226)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C(239), UINT8_C(162), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(176), UINT8_C(214),
|
|
UINT8_C(249), UINT8_C(248), UINT8_C( 0), UINT8_C( 3),
|
|
UINT8_C( 0), UINT8_C(248), UINT8_C(249), UINT8_C(139),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 38),
|
|
UINT8_C( 0), UINT8_C( 38), UINT8_C( 2), UINT8_C( 0),
|
|
UINT8_C(178), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(232), UINT8_C(142), UINT8_C( 0)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 81), UINT8_C(102), UINT8_C( 49), UINT8_C(133),
|
|
UINT8_C(250), UINT8_C( 13), UINT8_C(233), UINT8_C( 67),
|
|
UINT8_C(205), UINT8_C(254), UINT8_C( 41), UINT8_C( 6),
|
|
UINT8_C(117), UINT8_C(148), UINT8_C(222), UINT8_C(171),
|
|
UINT8_C( 8), UINT8_C( 99), UINT8_C( 93), UINT8_C( 39),
|
|
UINT8_C(103), UINT8_C(215), UINT8_C(216), UINT8_C( 75),
|
|
UINT8_C( 94), UINT8_C(171), UINT8_C( 41), UINT8_C(173),
|
|
UINT8_C(217), UINT8_C(138), UINT8_C(180), UINT8_C(160)),
|
|
simde_x_mm256_set_epu8(UINT8_C(200), UINT8_C(107), UINT8_C(119), UINT8_C(216),
|
|
UINT8_C( 73), UINT8_C(187), UINT8_C(212), UINT8_C( 20),
|
|
UINT8_C( 22), UINT8_C( 11), UINT8_C(155), UINT8_C(106),
|
|
UINT8_C( 35), UINT8_C(108), UINT8_C( 43), UINT8_C( 58),
|
|
UINT8_C(102), UINT8_C(228), UINT8_C( 5), UINT8_C(227),
|
|
UINT8_C(106), UINT8_C(119), UINT8_C(184), UINT8_C(199),
|
|
UINT8_C( 57), UINT8_C(120), UINT8_C( 14), UINT8_C( 56),
|
|
UINT8_C( 82), UINT8_C( 19), UINT8_C( 33), UINT8_C( 82)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C(250), UINT8_C(205), UINT8_C( 0),
|
|
UINT8_C(233), UINT8_C( 0), UINT8_C( 0), UINT8_C( 6),
|
|
UINT8_C(254), UINT8_C(250), UINT8_C( 0), UINT8_C( 13),
|
|
UINT8_C(117), UINT8_C(133), UINT8_C(250), UINT8_C( 13),
|
|
UINT8_C(171), UINT8_C( 0), UINT8_C( 41), UINT8_C( 0),
|
|
UINT8_C(215), UINT8_C( 94), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(216), UINT8_C( 75), UINT8_C( 99), UINT8_C( 75),
|
|
UINT8_C(138), UINT8_C(217), UINT8_C(180), UINT8_C(138)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(173), UINT8_C(218), UINT8_C( 20), UINT8_C( 45),
|
|
UINT8_C(110), UINT8_C( 90), UINT8_C(183), UINT8_C( 54),
|
|
UINT8_C(102), UINT8_C(126), UINT8_C(167), UINT8_C(135),
|
|
UINT8_C( 42), UINT8_C( 74), UINT8_C( 22), UINT8_C(137),
|
|
UINT8_C( 56), UINT8_C( 5), UINT8_C( 18), UINT8_C(105),
|
|
UINT8_C( 83), UINT8_C(146), UINT8_C(229), UINT8_C( 54),
|
|
UINT8_C(169), UINT8_C( 55), UINT8_C(228), UINT8_C(168),
|
|
UINT8_C( 1), UINT8_C(126), UINT8_C(169), UINT8_C(235)),
|
|
simde_x_mm256_set_epu8(UINT8_C(254), UINT8_C( 56), UINT8_C( 4), UINT8_C(163),
|
|
UINT8_C( 35), UINT8_C( 52), UINT8_C(182), UINT8_C( 52),
|
|
UINT8_C( 1), UINT8_C( 45), UINT8_C(119), UINT8_C(169),
|
|
UINT8_C(175), UINT8_C(254), UINT8_C( 71), UINT8_C( 63),
|
|
UINT8_C( 24), UINT8_C(116), UINT8_C(194), UINT8_C(184),
|
|
UINT8_C(150), UINT8_C(167), UINT8_C(101), UINT8_C(133),
|
|
UINT8_C( 95), UINT8_C( 84), UINT8_C(199), UINT8_C(134),
|
|
UINT8_C(251), UINT8_C(101), UINT8_C( 38), UINT8_C( 43)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C( 54), UINT8_C(135), UINT8_C( 0),
|
|
UINT8_C( 42), UINT8_C(135), UINT8_C( 0), UINT8_C(135),
|
|
UINT8_C( 22), UINT8_C( 20), UINT8_C(102), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(102), UINT8_C(173),
|
|
UINT8_C( 54), UINT8_C(168), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(228), UINT8_C( 0),
|
|
UINT8_C( 56), UINT8_C(168), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(228), UINT8_C( 55), UINT8_C( 83)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_shuffle_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_shuffle_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 7953530), INT32_C( 1626445648), INT32_C( 338474584), INT32_C( 1314132322),
|
|
INT32_C( -165526664), INT32_C( 1862544223), INT32_C( 1736492928), INT32_C( -812721862)),
|
|
simde_mm256_set_epi32(INT32_C( 1626445648), INT32_C( 1626445648), INT32_C( 1626445648), INT32_C( 1626445648),
|
|
INT32_C( 1862544223), INT32_C( 1862544223), INT32_C( 1862544223), INT32_C( 1862544223)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1571455878), INT32_C( 1654912639), INT32_C( 1961566624), INT32_C( 1369731271),
|
|
INT32_C( -802314883), INT32_C( 1895104772), INT32_C(-1294636783), INT32_C( -2090880)),
|
|
simde_mm256_set_epi32(INT32_C( 1654912639), INT32_C( 1654912639), INT32_C( 1654912639), INT32_C( 1654912639),
|
|
INT32_C( 1895104772), INT32_C( 1895104772), INT32_C( 1895104772), INT32_C( 1895104772)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 716787034), INT32_C( 279681787), INT32_C( -21556639), INT32_C(-1981624037),
|
|
INT32_C( 330738474), INT32_C(-1021797214), INT32_C( 117555788), INT32_C( 1295745410)),
|
|
simde_mm256_set_epi32(INT32_C( 279681787), INT32_C( 279681787), INT32_C( 279681787), INT32_C( 279681787),
|
|
INT32_C(-1021797214), INT32_C(-1021797214), INT32_C(-1021797214), INT32_C(-1021797214)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1161252350), INT32_C( 1333069761), INT32_C( -746913676), INT32_C(-1297385199),
|
|
INT32_C( 1762552906), INT32_C( 1819201471), INT32_C(-1000519846), INT32_C( 2096577459)),
|
|
simde_mm256_set_epi32(INT32_C( 1333069761), INT32_C( 1333069761), INT32_C( 1333069761), INT32_C( 1333069761),
|
|
INT32_C( 1819201471), INT32_C( 1819201471), INT32_C( 1819201471), INT32_C( 1819201471)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1772174643), INT32_C( 2012282759), INT32_C( 407185018), INT32_C(-1907491648),
|
|
INT32_C(-1950535235), INT32_C( 59473466), INT32_C( -212502371), INT32_C( -171378108)),
|
|
simde_mm256_set_epi32(INT32_C( 2012282759), INT32_C( 2012282759), INT32_C( 2012282759), INT32_C( 2012282759),
|
|
INT32_C( 59473466), INT32_C( 59473466), INT32_C( 59473466), INT32_C( 59473466)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1786867928), INT32_C( 183968379), INT32_C(-1710767833), INT32_C( 419209661),
|
|
INT32_C( 1470446764), INT32_C( -838411183), INT32_C( 1711518303), INT32_C(-1929674962)),
|
|
simde_mm256_set_epi32(INT32_C( 183968379), INT32_C( 183968379), INT32_C( 183968379), INT32_C( 183968379),
|
|
INT32_C( -838411183), INT32_C( -838411183), INT32_C( -838411183), INT32_C( -838411183)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1296827172), INT32_C(-1426782704), INT32_C( 461497475), INT32_C( 857689164),
|
|
INT32_C( -127267738), INT32_C( -225620875), INT32_C( -476268334), INT32_C( 275470)),
|
|
simde_mm256_set_epi32(INT32_C(-1426782704), INT32_C(-1426782704), INT32_C(-1426782704), INT32_C(-1426782704),
|
|
INT32_C( -225620875), INT32_C( -225620875), INT32_C( -225620875), INT32_C( -225620875)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 492995740), INT32_C(-1095702956), INT32_C( 1746718954), INT32_C( 2048506117),
|
|
INT32_C( 180431580), INT32_C(-1463759846), INT32_C( 1212242273), INT32_C(-1640731308)),
|
|
simde_mm256_set_epi32(INT32_C(-1095702956), INT32_C(-1095702956), INT32_C(-1095702956), INT32_C(-1095702956),
|
|
INT32_C(-1463759846), INT32_C(-1463759846), INT32_C(-1463759846), INT32_C(-1463759846)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_shuffle_epi32(test_vec[i].a, 0xaa);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_shufflehi_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 2516), -INT16_C( 21378), INT16_C( 2569), INT16_C( 28926), INT16_C( 23995), INT16_C( 19519), INT16_C( 305), INT16_C( 3639),
|
|
INT16_C( 27436), INT16_C( 23441), -INT16_C( 10560), INT16_C( 8981), -INT16_C( 30716), -INT16_C( 1213), -INT16_C( 20665), INT16_C( 29550) },
|
|
{ -INT16_C( 2516), -INT16_C( 21378), INT16_C( 2569), INT16_C( 28926), INT16_C( 19519), INT16_C( 19519), INT16_C( 19519), INT16_C( 305),
|
|
INT16_C( 27436), INT16_C( 23441), -INT16_C( 10560), INT16_C( 8981), -INT16_C( 1213), -INT16_C( 1213), -INT16_C( 1213), -INT16_C( 20665) } },
|
|
{ { -INT16_C( 4955), -INT16_C( 20961), INT16_C( 7670), -INT16_C( 19938), INT16_C( 24187), -INT16_C( 21250), INT16_C( 13663), -INT16_C( 29766),
|
|
INT16_C( 19360), INT16_C( 24806), -INT16_C( 1247), INT16_C( 9603), -INT16_C( 14717), -INT16_C( 13792), -INT16_C( 29067), INT16_C( 6973) },
|
|
{ -INT16_C( 4955), -INT16_C( 20961), INT16_C( 7670), -INT16_C( 19938), -INT16_C( 21250), -INT16_C( 21250), -INT16_C( 21250), INT16_C( 13663),
|
|
INT16_C( 19360), INT16_C( 24806), -INT16_C( 1247), INT16_C( 9603), -INT16_C( 13792), -INT16_C( 13792), -INT16_C( 13792), -INT16_C( 29067) } },
|
|
{ { INT16_C( 23675), INT16_C( 29129), -INT16_C( 6022), -INT16_C( 2781), INT16_C( 8518), -INT16_C( 23135), INT16_C( 23638), -INT16_C( 2512),
|
|
INT16_C( 5799), -INT16_C( 13993), -INT16_C( 9710), -INT16_C( 27154), INT16_C( 4001), INT16_C( 5728), -INT16_C( 25187), INT16_C( 6193) },
|
|
{ INT16_C( 23675), INT16_C( 29129), -INT16_C( 6022), -INT16_C( 2781), -INT16_C( 23135), -INT16_C( 23135), -INT16_C( 23135), INT16_C( 23638),
|
|
INT16_C( 5799), -INT16_C( 13993), -INT16_C( 9710), -INT16_C( 27154), INT16_C( 5728), INT16_C( 5728), INT16_C( 5728), -INT16_C( 25187) } },
|
|
{ { -INT16_C( 1030), INT16_C( 29834), -INT16_C( 21021), INT16_C( 10601), INT16_C( 2767), INT16_C( 9678), -INT16_C( 410), INT16_C( 3612),
|
|
INT16_C( 29460), INT16_C( 9943), -INT16_C( 15027), -INT16_C( 4420), INT16_C( 7380), INT16_C( 29189), INT16_C( 14009), -INT16_C( 19574) },
|
|
{ -INT16_C( 1030), INT16_C( 29834), -INT16_C( 21021), INT16_C( 10601), INT16_C( 9678), INT16_C( 9678), INT16_C( 9678), -INT16_C( 410),
|
|
INT16_C( 29460), INT16_C( 9943), -INT16_C( 15027), -INT16_C( 4420), INT16_C( 29189), INT16_C( 29189), INT16_C( 29189), INT16_C( 14009) } },
|
|
{ { INT16_C( 5169), INT16_C( 5159), -INT16_C( 28478), -INT16_C( 28355), INT16_C( 2971), INT16_C( 438), -INT16_C( 11767), INT16_C( 7695),
|
|
-INT16_C( 6587), -INT16_C( 27836), INT16_C( 172), -INT16_C( 32639), -INT16_C( 31204), -INT16_C( 10510), INT16_C( 32189), -INT16_C( 4471) },
|
|
{ INT16_C( 5169), INT16_C( 5159), -INT16_C( 28478), -INT16_C( 28355), INT16_C( 438), INT16_C( 438), INT16_C( 438), -INT16_C( 11767),
|
|
-INT16_C( 6587), -INT16_C( 27836), INT16_C( 172), -INT16_C( 32639), -INT16_C( 10510), -INT16_C( 10510), -INT16_C( 10510), INT16_C( 32189) } },
|
|
{ { -INT16_C( 20079), INT16_C( 21251), INT16_C( 16449), -INT16_C( 8988), -INT16_C( 25780), INT16_C( 21982), -INT16_C( 4755), -INT16_C( 19597),
|
|
-INT16_C( 18220), -INT16_C( 32698), -INT16_C( 14408), -INT16_C( 11008), -INT16_C( 3250), INT16_C( 2987), INT16_C( 13424), INT16_C( 505) },
|
|
{ -INT16_C( 20079), INT16_C( 21251), INT16_C( 16449), -INT16_C( 8988), INT16_C( 21982), INT16_C( 21982), INT16_C( 21982), -INT16_C( 4755),
|
|
-INT16_C( 18220), -INT16_C( 32698), -INT16_C( 14408), -INT16_C( 11008), INT16_C( 2987), INT16_C( 2987), INT16_C( 2987), INT16_C( 13424) } },
|
|
{ { -INT16_C( 795), INT16_C( 10069), INT16_C( 14653), -INT16_C( 30461), -INT16_C( 7724), INT16_C( 17118), INT16_C( 21199), -INT16_C( 23563),
|
|
INT16_C( 15114), -INT16_C( 15837), INT16_C( 8962), INT16_C( 20631), INT16_C( 16918), -INT16_C( 31141), INT16_C( 21879), INT16_C( 23688) },
|
|
{ -INT16_C( 795), INT16_C( 10069), INT16_C( 14653), -INT16_C( 30461), INT16_C( 17118), INT16_C( 17118), INT16_C( 17118), INT16_C( 21199),
|
|
INT16_C( 15114), -INT16_C( 15837), INT16_C( 8962), INT16_C( 20631), -INT16_C( 31141), -INT16_C( 31141), -INT16_C( 31141), INT16_C( 21879) } },
|
|
{ { -INT16_C( 8879), -INT16_C( 29053), -INT16_C( 30954), -INT16_C( 5353), -INT16_C( 2456), INT16_C( 14125), INT16_C( 8776), INT16_C( 21210),
|
|
-INT16_C( 675), INT16_C( 24340), -INT16_C( 21471), INT16_C( 14256), INT16_C( 3054), INT16_C( 26046), INT16_C( 18016), -INT16_C( 19774) },
|
|
{ -INT16_C( 8879), -INT16_C( 29053), -INT16_C( 30954), -INT16_C( 5353), INT16_C( 14125), INT16_C( 14125), INT16_C( 14125), INT16_C( 8776),
|
|
-INT16_C( 675), INT16_C( 24340), -INT16_C( 21471), INT16_C( 14256), INT16_C( 26046), INT16_C( 26046), INT16_C( 26046), INT16_C( 18016) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m256i r = simde_mm256_shufflehi_epi16(a, 149);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_shufflelo_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( -2179), INT16_C( 30608), INT16_C( 19808), INT16_C(-28307),
|
|
INT16_C( 25873), INT16_C( -9642), INT16_C( 56), INT16_C( 338),
|
|
INT16_C(-29256), INT16_C( 9693), INT16_C( 18909), INT16_C( 3915),
|
|
INT16_C( 2653), INT16_C( 26676), INT16_C(-23808), INT16_C( 25025)),
|
|
simde_mm256_set_epi16(INT16_C( -2179), INT16_C( 30608), INT16_C( 19808), INT16_C(-28307),
|
|
INT16_C( -9642), INT16_C( 56), INT16_C( 56), INT16_C( 56),
|
|
INT16_C(-29256), INT16_C( 9693), INT16_C( 18909), INT16_C( 3915),
|
|
INT16_C( 26676), INT16_C(-23808), INT16_C(-23808), INT16_C(-23808)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 18348), INT16_C(-29440), INT16_C( -6978), INT16_C( 22811),
|
|
INT16_C(-31995), INT16_C( 32157), INT16_C( -1931), INT16_C( 15650),
|
|
INT16_C( 25681), INT16_C( 27258), INT16_C( -9033), INT16_C( 28640),
|
|
INT16_C(-16045), INT16_C( 2509), INT16_C(-23756), INT16_C( 4399)),
|
|
simde_mm256_set_epi16(INT16_C( 18348), INT16_C(-29440), INT16_C( -6978), INT16_C( 22811),
|
|
INT16_C( 32157), INT16_C( -1931), INT16_C( -1931), INT16_C( -1931),
|
|
INT16_C( 25681), INT16_C( 27258), INT16_C( -9033), INT16_C( 28640),
|
|
INT16_C( 2509), INT16_C(-23756), INT16_C(-23756), INT16_C(-23756)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 32389), INT16_C(-20100), INT16_C( 26342), INT16_C(-12082),
|
|
INT16_C( 27809), INT16_C( 10468), INT16_C( 29312), INT16_C( -5875),
|
|
INT16_C( 10801), INT16_C(-11039), INT16_C(-32348), INT16_C(-19420),
|
|
INT16_C(-32754), INT16_C(-20940), INT16_C( 17235), INT16_C(-29506)),
|
|
simde_mm256_set_epi16(INT16_C( 32389), INT16_C(-20100), INT16_C( 26342), INT16_C(-12082),
|
|
INT16_C( 10468), INT16_C( 29312), INT16_C( 29312), INT16_C( 29312),
|
|
INT16_C( 10801), INT16_C(-11039), INT16_C(-32348), INT16_C(-19420),
|
|
INT16_C(-20940), INT16_C( 17235), INT16_C( 17235), INT16_C( 17235)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-30489), INT16_C( 27619), INT16_C(-16535), INT16_C(-14927),
|
|
INT16_C( 10253), INT16_C( 31108), INT16_C( 46), INT16_C( 10088),
|
|
INT16_C(-25344), INT16_C( -5295), INT16_C( 22387), INT16_C( 27540),
|
|
INT16_C(-30287), INT16_C( 3057), INT16_C( -2994), INT16_C( 31366)),
|
|
simde_mm256_set_epi16(INT16_C(-30489), INT16_C( 27619), INT16_C(-16535), INT16_C(-14927),
|
|
INT16_C( 31108), INT16_C( 46), INT16_C( 46), INT16_C( 46),
|
|
INT16_C(-25344), INT16_C( -5295), INT16_C( 22387), INT16_C( 27540),
|
|
INT16_C( 3057), INT16_C( -2994), INT16_C( -2994), INT16_C( -2994)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -7255), INT16_C(-20910), INT16_C( 13809), INT16_C( 9595),
|
|
INT16_C( -1612), INT16_C( 23053), INT16_C( 7111), INT16_C(-11581),
|
|
INT16_C(-12829), INT16_C( 20686), INT16_C(-16865), INT16_C( 5649),
|
|
INT16_C(-25623), INT16_C( -2444), INT16_C( 11296), INT16_C( 7832)),
|
|
simde_mm256_set_epi16(INT16_C( -7255), INT16_C(-20910), INT16_C( 13809), INT16_C( 9595),
|
|
INT16_C( 23053), INT16_C( 7111), INT16_C( 7111), INT16_C( 7111),
|
|
INT16_C(-12829), INT16_C( 20686), INT16_C(-16865), INT16_C( 5649),
|
|
INT16_C( -2444), INT16_C( 11296), INT16_C( 11296), INT16_C( 11296)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-26606), INT16_C( 4305), INT16_C( 13601), INT16_C( 6245),
|
|
INT16_C( -6095), INT16_C( 5518), INT16_C(-13456), INT16_C(-16529),
|
|
INT16_C(-18890), INT16_C( 32306), INT16_C( 18285), INT16_C( 9413),
|
|
INT16_C( -4831), INT16_C( 31394), INT16_C( 7403), INT16_C( 8863)),
|
|
simde_mm256_set_epi16(INT16_C(-26606), INT16_C( 4305), INT16_C( 13601), INT16_C( 6245),
|
|
INT16_C( 5518), INT16_C(-13456), INT16_C(-13456), INT16_C(-13456),
|
|
INT16_C(-18890), INT16_C( 32306), INT16_C( 18285), INT16_C( 9413),
|
|
INT16_C( 31394), INT16_C( 7403), INT16_C( 7403), INT16_C( 7403)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-22090), INT16_C( 3292), INT16_C(-24353), INT16_C(-13630),
|
|
INT16_C( 1106), INT16_C( 20149), INT16_C( 12111), INT16_C( -9481),
|
|
INT16_C( 8059), INT16_C( 23722), INT16_C(-24846), INT16_C(-19082),
|
|
INT16_C( 18649), INT16_C( 23374), INT16_C(-15098), INT16_C( 5703)),
|
|
simde_mm256_set_epi16(INT16_C(-22090), INT16_C( 3292), INT16_C(-24353), INT16_C(-13630),
|
|
INT16_C( 20149), INT16_C( 12111), INT16_C( 12111), INT16_C( 12111),
|
|
INT16_C( 8059), INT16_C( 23722), INT16_C(-24846), INT16_C(-19082),
|
|
INT16_C( 23374), INT16_C(-15098), INT16_C(-15098), INT16_C(-15098)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 31351), INT16_C(-28147), INT16_C(-17219), INT16_C( 13266),
|
|
INT16_C( 26309), INT16_C( 5438), INT16_C( -9093), INT16_C( -541),
|
|
INT16_C( -7590), INT16_C(-28792), INT16_C( 9449), INT16_C(-27866),
|
|
INT16_C( 7986), INT16_C(-24032), INT16_C( 23568), INT16_C( 18541)),
|
|
simde_mm256_set_epi16(INT16_C( 31351), INT16_C(-28147), INT16_C(-17219), INT16_C( 13266),
|
|
INT16_C( 5438), INT16_C( -9093), INT16_C( -9093), INT16_C( -9093),
|
|
INT16_C( -7590), INT16_C(-28792), INT16_C( 9449), INT16_C(-27866),
|
|
INT16_C(-24032), INT16_C( 23568), INT16_C( 23568), INT16_C( 23568)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_shufflelo_epi16(test_vec[i].a, 149);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sign_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[9] = {
|
|
{ simde_mm256_set_epi8(INT8_C(-124), INT8_C( -48), INT8_C( 10), INT8_C( 63),
|
|
INT8_C( -84), INT8_C( 103), INT8_C( -14), INT8_C( 63),
|
|
INT8_C( 82), INT8_C( -68), INT8_C( -17), INT8_C( 117),
|
|
INT8_C( -80), INT8_C(-104), INT8_C( 37), INT8_C( 59),
|
|
INT8_C( 121), INT8_C( 11), INT8_C( -20), INT8_C( -38),
|
|
INT8_C( 36), INT8_C( -63), INT8_C( -89), INT8_C( -39),
|
|
INT8_C( 115), INT8_C( 43), INT8_C(-116), INT8_C( 8),
|
|
INT8_C( -68), INT8_C( -15), INT8_C( 35), INT8_C( -73)),
|
|
simde_mm256_set_epi8(INT8_C( 64), INT8_C( -46), INT8_C( 104), INT8_C( 85),
|
|
INT8_C( -66), INT8_C( 103), INT8_C( -19), INT8_C( -91),
|
|
INT8_C(-116), INT8_C( 86), INT8_C( 54), INT8_C( 90),
|
|
INT8_C(-128), INT8_C( 120), INT8_C( 127), INT8_C( -41),
|
|
INT8_C( 56), INT8_C( 45), INT8_C( -60), INT8_C( 14),
|
|
INT8_C( -4), INT8_C( -42), INT8_C( -79), INT8_C( 83),
|
|
INT8_C( 72), INT8_C( 65), INT8_C( -99), INT8_C( 111),
|
|
INT8_C( -84), INT8_C( 103), INT8_C( -29), INT8_C( -65)),
|
|
simde_mm256_set_epi8(INT8_C(-124), INT8_C( 48), INT8_C( 10), INT8_C( 63),
|
|
INT8_C( 84), INT8_C( 103), INT8_C( 14), INT8_C( -63),
|
|
INT8_C( -82), INT8_C( -68), INT8_C( -17), INT8_C( 117),
|
|
INT8_C( 80), INT8_C(-104), INT8_C( 37), INT8_C( -59),
|
|
INT8_C( 121), INT8_C( 11), INT8_C( 20), INT8_C( -38),
|
|
INT8_C( -36), INT8_C( 63), INT8_C( 89), INT8_C( -39),
|
|
INT8_C( 115), INT8_C( 43), INT8_C( 116), INT8_C( 8),
|
|
INT8_C( 68), INT8_C( -15), INT8_C( -35), INT8_C( 73)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 122), INT8_C( 101), INT8_C( 57), INT8_C(-117),
|
|
INT8_C( -22), INT8_C( -56), INT8_C( -5), INT8_C( 60),
|
|
INT8_C( 110), INT8_C( -69), INT8_C( -30), INT8_C( -83),
|
|
INT8_C( 50), INT8_C( 67), INT8_C( -85), INT8_C( 24),
|
|
INT8_C( 64), INT8_C( 117), INT8_C( 23), INT8_C( -97),
|
|
INT8_C( 88), INT8_C( 95), INT8_C( 73), INT8_C( 84),
|
|
INT8_C( 44), INT8_C( 108), INT8_C( -73), INT8_C(-105),
|
|
INT8_C( 58), INT8_C( 125), INT8_C( 21), INT8_C( -8)),
|
|
simde_mm256_set_epi8(INT8_C( -54), INT8_C( -52), INT8_C( 108), INT8_C( 17),
|
|
INT8_C( -61), INT8_C( 77), INT8_C( -68), INT8_C(-127),
|
|
INT8_C( 55), INT8_C( -25), INT8_C( -44), INT8_C(-111),
|
|
INT8_C( 12), INT8_C( -35), INT8_C( 116), INT8_C( 64),
|
|
INT8_C( -32), INT8_C( 127), INT8_C( -91), INT8_C( -72),
|
|
INT8_C( -92), INT8_C( 13), INT8_C( 97), INT8_C( -10),
|
|
INT8_C(-120), INT8_C( -40), INT8_C( -37), INT8_C( -49),
|
|
INT8_C( 123), INT8_C( -15), INT8_C( 100), INT8_C( -27)),
|
|
simde_mm256_set_epi8(INT8_C(-122), INT8_C(-101), INT8_C( 57), INT8_C(-117),
|
|
INT8_C( 22), INT8_C( -56), INT8_C( 5), INT8_C( -60),
|
|
INT8_C( 110), INT8_C( 69), INT8_C( 30), INT8_C( 83),
|
|
INT8_C( 50), INT8_C( -67), INT8_C( -85), INT8_C( 24),
|
|
INT8_C( -64), INT8_C( 117), INT8_C( -23), INT8_C( 97),
|
|
INT8_C( -88), INT8_C( 95), INT8_C( 73), INT8_C( -84),
|
|
INT8_C( -44), INT8_C(-108), INT8_C( 73), INT8_C( 105),
|
|
INT8_C( 58), INT8_C(-125), INT8_C( 21), INT8_C( 8)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 80), INT8_C(-104), INT8_C( 33), INT8_C( -96),
|
|
INT8_C( 105), INT8_C( -57), INT8_C(-123), INT8_C( 89),
|
|
INT8_C( 62), INT8_C( -47), INT8_C( -92), INT8_C( -33),
|
|
INT8_C( 113), INT8_C( 44), INT8_C( 125), INT8_C( -43),
|
|
INT8_C( 28), INT8_C( -43), INT8_C( 122), INT8_C(-115),
|
|
INT8_C( 45), INT8_C( 72), INT8_C( 66), INT8_C( 86),
|
|
INT8_C( -11), INT8_C( 17), INT8_C( 64), INT8_C( -36),
|
|
INT8_C( -86), INT8_C( -6), INT8_C( -64), INT8_C( 31)),
|
|
simde_mm256_set_epi8(INT8_C( 65), INT8_C( -61), INT8_C( 83), INT8_C( -37),
|
|
INT8_C(-100), INT8_C( 96), INT8_C( 90), INT8_C( -24),
|
|
INT8_C( 86), INT8_C( -18), INT8_C( -62), INT8_C(-110),
|
|
INT8_C(-107), INT8_C( -6), INT8_C( 9), INT8_C( -6),
|
|
INT8_C( 80), INT8_C( -71), INT8_C( -81), INT8_C( 127),
|
|
INT8_C( -21), INT8_C( -14), INT8_C( 27), INT8_C( 82),
|
|
INT8_C(-126), INT8_C( 70), INT8_C( 18), INT8_C( -75),
|
|
INT8_C( 126), INT8_C(-103), INT8_C(-109), INT8_C( 116)),
|
|
simde_mm256_set_epi8(INT8_C( 80), INT8_C( 104), INT8_C( 33), INT8_C( 96),
|
|
INT8_C(-105), INT8_C( -57), INT8_C(-123), INT8_C( -89),
|
|
INT8_C( 62), INT8_C( 47), INT8_C( 92), INT8_C( 33),
|
|
INT8_C(-113), INT8_C( -44), INT8_C( 125), INT8_C( 43),
|
|
INT8_C( 28), INT8_C( 43), INT8_C(-122), INT8_C(-115),
|
|
INT8_C( -45), INT8_C( -72), INT8_C( 66), INT8_C( 86),
|
|
INT8_C( 11), INT8_C( 17), INT8_C( 64), INT8_C( 36),
|
|
INT8_C( -86), INT8_C( 6), INT8_C( 64), INT8_C( 31)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 88), INT8_C( 57), INT8_C( -36), INT8_C( 10),
|
|
INT8_C( 93), INT8_C( -67), INT8_C( 35), INT8_C( 4),
|
|
INT8_C( 82), INT8_C( -81), INT8_C( 18), INT8_C( 74),
|
|
INT8_C(-119), INT8_C( -48), INT8_C( 50), INT8_C( -37),
|
|
INT8_C( 85), INT8_C( 99), INT8_C( -94), INT8_C(-127),
|
|
INT8_C( 126), INT8_C( 36), INT8_C( 87), INT8_C( -95),
|
|
INT8_C( 111), INT8_C( 86), INT8_C( -49), INT8_C( -3),
|
|
INT8_C( -39), INT8_C( 19), INT8_C( -3), INT8_C( -93)),
|
|
simde_mm256_set_epi8(INT8_C( -50), INT8_C( 47), INT8_C( 110), INT8_C( 89),
|
|
INT8_C( -98), INT8_C( -62), INT8_C( 100), INT8_C( -53),
|
|
INT8_C( -92), INT8_C( -2), INT8_C( 91), INT8_C( -12),
|
|
INT8_C( -28), INT8_C( -91), INT8_C( -27), INT8_C( 32),
|
|
INT8_C(-110), INT8_C( -42), INT8_C( 73), INT8_C(-102),
|
|
INT8_C(-122), INT8_C( 48), INT8_C( -4), INT8_C( -50),
|
|
INT8_C( 9), INT8_C( -36), INT8_C( 102), INT8_C(-126),
|
|
INT8_C( 34), INT8_C( 96), INT8_C( -57), INT8_C( 7)),
|
|
simde_mm256_set_epi8(INT8_C( -88), INT8_C( 57), INT8_C( -36), INT8_C( 10),
|
|
INT8_C( -93), INT8_C( 67), INT8_C( 35), INT8_C( -4),
|
|
INT8_C( -82), INT8_C( 81), INT8_C( 18), INT8_C( -74),
|
|
INT8_C( 119), INT8_C( 48), INT8_C( -50), INT8_C( -37),
|
|
INT8_C( -85), INT8_C( -99), INT8_C( -94), INT8_C( 127),
|
|
INT8_C(-126), INT8_C( 36), INT8_C( -87), INT8_C( 95),
|
|
INT8_C( 111), INT8_C( -86), INT8_C( -49), INT8_C( 3),
|
|
INT8_C( -39), INT8_C( 19), INT8_C( 3), INT8_C( -93)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 77), INT8_C( -76), INT8_C( 117), INT8_C( -63),
|
|
INT8_C( -98), INT8_C( -23), INT8_C( 99), INT8_C( 28),
|
|
INT8_C( 114), INT8_C( -99), INT8_C( 117), INT8_C( -16),
|
|
INT8_C( -35), INT8_C( 79), INT8_C( -35), INT8_C( -40),
|
|
INT8_C( 116), INT8_C( 97), INT8_C( 16), INT8_C( 32),
|
|
INT8_C(-122), INT8_C( -2), INT8_C( 116), INT8_C( -53),
|
|
INT8_C(-103), INT8_C( -52), INT8_C( 50), INT8_C( -27),
|
|
INT8_C(-112), INT8_C( 115), INT8_C( -42), INT8_C( -87)),
|
|
simde_mm256_set_epi8(INT8_C( 49), INT8_C( 101), INT8_C( -91), INT8_C( -11),
|
|
INT8_C( 38), INT8_C( 110), INT8_C( 63), INT8_C( 118),
|
|
INT8_C( 65), INT8_C( -80), INT8_C( 118), INT8_C( -75),
|
|
INT8_C( 103), INT8_C( -76), INT8_C( 10), INT8_C( -66),
|
|
INT8_C( 107), INT8_C(-120), INT8_C( 11), INT8_C( -38),
|
|
INT8_C( -59), INT8_C( -40), INT8_C( -9), INT8_C( 123),
|
|
INT8_C( -3), INT8_C( -44), INT8_C( -64), INT8_C( 26),
|
|
INT8_C( -30), INT8_C( 14), INT8_C(-100), INT8_C( 22)),
|
|
simde_mm256_set_epi8(INT8_C( 77), INT8_C( -76), INT8_C(-117), INT8_C( 63),
|
|
INT8_C( -98), INT8_C( -23), INT8_C( 99), INT8_C( 28),
|
|
INT8_C( 114), INT8_C( 99), INT8_C( 117), INT8_C( 16),
|
|
INT8_C( -35), INT8_C( -79), INT8_C( -35), INT8_C( 40),
|
|
INT8_C( 116), INT8_C( -97), INT8_C( 16), INT8_C( -32),
|
|
INT8_C( 122), INT8_C( 2), INT8_C(-116), INT8_C( -53),
|
|
INT8_C( 103), INT8_C( 52), INT8_C( -50), INT8_C( -27),
|
|
INT8_C( 112), INT8_C( 115), INT8_C( 42), INT8_C( -87)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -77), INT8_C( 55), INT8_C( 69), INT8_C( 5),
|
|
INT8_C( -56), INT8_C( 30), INT8_C( 123), INT8_C( 84),
|
|
INT8_C( 88), INT8_C(-108), INT8_C( 47), INT8_C( -23),
|
|
INT8_C( -58), INT8_C( -90), INT8_C( 18), INT8_C(-120),
|
|
INT8_C( -15), INT8_C( 43), INT8_C( 102), INT8_C( 1),
|
|
INT8_C( -38), INT8_C( 45), INT8_C( 120), INT8_C( 124),
|
|
INT8_C( 39), INT8_C( 42), INT8_C(-106), INT8_C( 42),
|
|
INT8_C( 50), INT8_C( 123), INT8_C( 83), INT8_C( -75)),
|
|
simde_mm256_set_epi8(INT8_C( -99), INT8_C( 1), INT8_C( 103), INT8_C( -24),
|
|
INT8_C( 77), INT8_C( 77), INT8_C( -55), INT8_C( 64),
|
|
INT8_C( -51), INT8_C( 124), INT8_C( -74), INT8_C( 85),
|
|
INT8_C( 26), INT8_C( -10), INT8_C( -19), INT8_C( -23),
|
|
INT8_C( -11), INT8_C( 18), INT8_C(-116), INT8_C( 62),
|
|
INT8_C( -42), INT8_C( -20), INT8_C( 104), INT8_C(-123),
|
|
INT8_C(-113), INT8_C( 1), INT8_C( -68), INT8_C( -90),
|
|
INT8_C( 1), INT8_C( -32), INT8_C( 1), INT8_C(-108)),
|
|
simde_mm256_set_epi8(INT8_C( 77), INT8_C( 55), INT8_C( 69), INT8_C( -5),
|
|
INT8_C( -56), INT8_C( 30), INT8_C(-123), INT8_C( 84),
|
|
INT8_C( -88), INT8_C(-108), INT8_C( -47), INT8_C( -23),
|
|
INT8_C( -58), INT8_C( 90), INT8_C( -18), INT8_C( 120),
|
|
INT8_C( 15), INT8_C( 43), INT8_C(-102), INT8_C( 1),
|
|
INT8_C( 38), INT8_C( -45), INT8_C( 120), INT8_C(-124),
|
|
INT8_C( -39), INT8_C( 42), INT8_C( 106), INT8_C( -42),
|
|
INT8_C( 50), INT8_C(-123), INT8_C( 83), INT8_C( 75)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 124), INT8_C( 74), INT8_C( -32), INT8_C( 30),
|
|
INT8_C(-109), INT8_C( 52), INT8_C( 31), INT8_C( 94),
|
|
INT8_C( -78), INT8_C( -59), INT8_C( -8), INT8_C( 92),
|
|
INT8_C( 9), INT8_C( -91), INT8_C( -63), INT8_C( -72),
|
|
INT8_C( -85), INT8_C( 1), INT8_C( 60), INT8_C( 84),
|
|
INT8_C( 43), INT8_C( -36), INT8_C(-112), INT8_C( 6),
|
|
INT8_C( -19), INT8_C(-123), INT8_C( 80), INT8_C( -53),
|
|
INT8_C( -54), INT8_C( 94), INT8_C( 3), INT8_C( 112)),
|
|
simde_mm256_set_epi8(INT8_C( -31), INT8_C( -40), INT8_C( -74), INT8_C( 49),
|
|
INT8_C(-107), INT8_C(-106), INT8_C( 102), INT8_C( 9),
|
|
INT8_C( 117), INT8_C( 90), INT8_C( 114), INT8_C( -61),
|
|
INT8_C( 32), INT8_C( -8), INT8_C( -4), INT8_C( -57),
|
|
INT8_C( 123), INT8_C(-125), INT8_C( 9), INT8_C(-128),
|
|
INT8_C(-101), INT8_C( 1), INT8_C( 32), INT8_C( -63),
|
|
INT8_C( 99), INT8_C( 41), INT8_C( 38), INT8_C(-106),
|
|
INT8_C( -65), INT8_C( 58), INT8_C( -23), INT8_C( 120)),
|
|
simde_mm256_set_epi8(INT8_C(-124), INT8_C( -74), INT8_C( 32), INT8_C( 30),
|
|
INT8_C( 109), INT8_C( -52), INT8_C( 31), INT8_C( 94),
|
|
INT8_C( -78), INT8_C( -59), INT8_C( -8), INT8_C( -92),
|
|
INT8_C( 9), INT8_C( 91), INT8_C( 63), INT8_C( 72),
|
|
INT8_C( -85), INT8_C( -1), INT8_C( 60), INT8_C( -84),
|
|
INT8_C( -43), INT8_C( -36), INT8_C(-112), INT8_C( -6),
|
|
INT8_C( -19), INT8_C(-123), INT8_C( 80), INT8_C( 53),
|
|
INT8_C( 54), INT8_C( 94), INT8_C( -3), INT8_C( 112)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -49), INT8_C(-106), INT8_C( 23), INT8_C( 37),
|
|
INT8_C( -87), INT8_C( 105), INT8_C( 66), INT8_C( -47),
|
|
INT8_C(-100), INT8_C( -77), INT8_C(-123), INT8_C( -73),
|
|
INT8_C( -4), INT8_C( -48), INT8_C( 97), INT8_C( -78),
|
|
INT8_C( 21), INT8_C( 125), INT8_C(-128), INT8_C( 30),
|
|
INT8_C( -87), INT8_C( 46), INT8_C( -21), INT8_C( -69),
|
|
INT8_C( -4), INT8_C( 15), INT8_C( -17), INT8_C( -95),
|
|
INT8_C( 7), INT8_C( 32), INT8_C( 93), INT8_C( -95)),
|
|
simde_mm256_set_epi8(INT8_C( 27), INT8_C( 61), INT8_C( 26), INT8_C( 17),
|
|
INT8_C( 110), INT8_C( 35), INT8_C( 70), INT8_C( -63),
|
|
INT8_C( 51), INT8_C( -79), INT8_C( -47), INT8_C( 74),
|
|
INT8_C( 44), INT8_C( 7), INT8_C( 125), INT8_C( -59),
|
|
INT8_C( -26), INT8_C( -74), INT8_C( -55), INT8_C( -22),
|
|
INT8_C( 18), INT8_C( -40), INT8_C( 33), INT8_C( 126),
|
|
INT8_C(-127), INT8_C( -2), INT8_C(-125), INT8_C( 79),
|
|
INT8_C( 113), INT8_C( 14), INT8_C( 113), INT8_C( 21)),
|
|
simde_mm256_set_epi8(INT8_C( -49), INT8_C(-106), INT8_C( 23), INT8_C( 37),
|
|
INT8_C( -87), INT8_C( 105), INT8_C( 66), INT8_C( 47),
|
|
INT8_C(-100), INT8_C( 77), INT8_C( 123), INT8_C( -73),
|
|
INT8_C( -4), INT8_C( -48), INT8_C( 97), INT8_C( 78),
|
|
INT8_C( -21), INT8_C(-125), INT8_C(-128), INT8_C( -30),
|
|
INT8_C( -87), INT8_C( -46), INT8_C( -21), INT8_C( -69),
|
|
INT8_C( 4), INT8_C( -15), INT8_C( 17), INT8_C( -95),
|
|
INT8_C( 7), INT8_C( 32), INT8_C( 93), INT8_C( -95)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -49), INT8_C(-106), INT8_C( 23), INT8_C( 37),
|
|
INT8_C( -87), INT8_C( 105), INT8_C( 66), INT8_C( -47),
|
|
INT8_C(-100), INT8_C( -77), INT8_C(-123), INT8_C( -73),
|
|
INT8_C( -4), INT8_C( -48), INT8_C( 97), INT8_C( -78),
|
|
INT8_C( 21), INT8_C( 125), INT8_C(-128), INT8_C( 30),
|
|
INT8_C( -87), INT8_C( 46), INT8_C( -21), INT8_C( -69),
|
|
INT8_C( -4), INT8_C( 15), INT8_C( -17), INT8_C( -95),
|
|
INT8_C( 7), INT8_C( 32), INT8_C( 93), INT8_C( -95)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sign_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sign_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[9] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-31536), INT16_C( 2623), INT16_C(-21401), INT16_C( -3521),
|
|
INT16_C( 21180), INT16_C( -4235), INT16_C(-20328), INT16_C( 9531),
|
|
INT16_C( 30987), INT16_C( -4902), INT16_C( 9409), INT16_C(-22567),
|
|
INT16_C( 29483), INT16_C(-29688), INT16_C(-17167), INT16_C( 9143)),
|
|
simde_mm256_set_epi16(INT16_C( 16594), INT16_C( 26709), INT16_C(-16793), INT16_C( -4699),
|
|
INT16_C(-29610), INT16_C( 13914), INT16_C(-32648), INT16_C( 32727),
|
|
INT16_C( 14381), INT16_C(-15346), INT16_C( -810), INT16_C(-20141),
|
|
INT16_C( 18497), INT16_C(-25233), INT16_C(-21401), INT16_C( -7233)),
|
|
simde_mm256_set_epi16(INT16_C(-31536), INT16_C( 2623), INT16_C( 21401), INT16_C( 3521),
|
|
INT16_C(-21180), INT16_C( -4235), INT16_C( 20328), INT16_C( 9531),
|
|
INT16_C( 30987), INT16_C( 4902), INT16_C( -9409), INT16_C( 22567),
|
|
INT16_C( 29483), INT16_C( 29688), INT16_C( 17167), INT16_C( -9143)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 31333), INT16_C( 14731), INT16_C( -5432), INT16_C( -1220),
|
|
INT16_C( 28347), INT16_C( -7507), INT16_C( 12867), INT16_C(-21736),
|
|
INT16_C( 16501), INT16_C( 6047), INT16_C( 22623), INT16_C( 18772),
|
|
INT16_C( 11372), INT16_C(-18537), INT16_C( 14973), INT16_C( 5624)),
|
|
simde_mm256_set_epi16(INT16_C(-13620), INT16_C( 27665), INT16_C(-15539), INT16_C(-17279),
|
|
INT16_C( 14311), INT16_C(-11119), INT16_C( 3293), INT16_C( 29760),
|
|
INT16_C( -8065), INT16_C(-23112), INT16_C(-23539), INT16_C( 25078),
|
|
INT16_C(-30504), INT16_C( -9265), INT16_C( 31729), INT16_C( 25829)),
|
|
simde_mm256_set_epi16(INT16_C(-31333), INT16_C( 14731), INT16_C( 5432), INT16_C( 1220),
|
|
INT16_C( 28347), INT16_C( 7507), INT16_C( 12867), INT16_C(-21736),
|
|
INT16_C(-16501), INT16_C( -6047), INT16_C(-22623), INT16_C( 18772),
|
|
INT16_C(-11372), INT16_C( 18537), INT16_C( 14973), INT16_C( 5624)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 20632), INT16_C( 8608), INT16_C( 27079), INT16_C(-31399),
|
|
INT16_C( 16081), INT16_C(-23329), INT16_C( 28972), INT16_C( 32213),
|
|
INT16_C( 7381), INT16_C( 31373), INT16_C( 11592), INT16_C( 16982),
|
|
INT16_C( -2799), INT16_C( 16604), INT16_C(-21766), INT16_C(-16353)),
|
|
simde_mm256_set_epi16(INT16_C( 16835), INT16_C( 21467), INT16_C(-25504), INT16_C( 23272),
|
|
INT16_C( 22254), INT16_C(-15726), INT16_C(-27142), INT16_C( 2554),
|
|
INT16_C( 20665), INT16_C(-20609), INT16_C( -5134), INT16_C( 6994),
|
|
INT16_C(-32186), INT16_C( 4789), INT16_C( 32409), INT16_C(-27788)),
|
|
simde_mm256_set_epi16(INT16_C( 20632), INT16_C( 8608), INT16_C(-27079), INT16_C(-31399),
|
|
INT16_C( 16081), INT16_C( 23329), INT16_C(-28972), INT16_C( 32213),
|
|
INT16_C( 7381), INT16_C(-31373), INT16_C(-11592), INT16_C( 16982),
|
|
INT16_C( 2799), INT16_C( 16604), INT16_C(-21766), INT16_C( 16353)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 22585), INT16_C( -9206), INT16_C( 23997), INT16_C( 8964),
|
|
INT16_C( 21167), INT16_C( 4682), INT16_C(-30256), INT16_C( 13019),
|
|
INT16_C( 21859), INT16_C(-23935), INT16_C( 32292), INT16_C( 22433),
|
|
INT16_C( 28502), INT16_C(-12291), INT16_C( -9965), INT16_C( -605)),
|
|
simde_mm256_set_epi16(INT16_C(-12753), INT16_C( 28249), INT16_C(-24894), INT16_C( 25803),
|
|
INT16_C(-23298), INT16_C( 23540), INT16_C( -7003), INT16_C( -6880),
|
|
INT16_C(-27946), INT16_C( 18842), INT16_C(-31184), INT16_C( -818),
|
|
INT16_C( 2524), INT16_C( 26242), INT16_C( 8800), INT16_C(-14585)),
|
|
simde_mm256_set_epi16(INT16_C(-22585), INT16_C( -9206), INT16_C(-23997), INT16_C( 8964),
|
|
INT16_C(-21167), INT16_C( 4682), INT16_C( 30256), INT16_C(-13019),
|
|
INT16_C(-21859), INT16_C(-23935), INT16_C(-32292), INT16_C(-22433),
|
|
INT16_C( 28502), INT16_C(-12291), INT16_C( -9965), INT16_C( 605)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 19892), INT16_C( 30145), INT16_C(-24855), INT16_C( 25372),
|
|
INT16_C( 29341), INT16_C( 30192), INT16_C( -8881), INT16_C( -8744),
|
|
INT16_C( 29793), INT16_C( 4128), INT16_C(-30978), INT16_C( 29899),
|
|
INT16_C(-26164), INT16_C( 13029), INT16_C(-28557), INT16_C(-10583)),
|
|
simde_mm256_set_epi16(INT16_C( 12645), INT16_C(-23051), INT16_C( 9838), INT16_C( 16246),
|
|
INT16_C( 16816), INT16_C( 30389), INT16_C( 26548), INT16_C( 2750),
|
|
INT16_C( 27528), INT16_C( 3034), INT16_C(-14888), INT16_C( -2181),
|
|
INT16_C( -556), INT16_C(-16358), INT16_C( -7666), INT16_C(-25578)),
|
|
simde_mm256_set_epi16(INT16_C( 19892), INT16_C(-30145), INT16_C(-24855), INT16_C( 25372),
|
|
INT16_C( 29341), INT16_C( 30192), INT16_C( -8881), INT16_C( -8744),
|
|
INT16_C( 29793), INT16_C( 4128), INT16_C( 30978), INT16_C(-29899),
|
|
INT16_C( 26164), INT16_C(-13029), INT16_C( 28557), INT16_C( 10583)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-19657), INT16_C( 17669), INT16_C(-14306), INT16_C( 31572),
|
|
INT16_C( 22676), INT16_C( 12265), INT16_C(-14682), INT16_C( 4744),
|
|
INT16_C( -3797), INT16_C( 26113), INT16_C( -9683), INT16_C( 30844),
|
|
INT16_C( 10026), INT16_C(-27094), INT16_C( 12923), INT16_C( 21429)),
|
|
simde_mm256_set_epi16(INT16_C(-25343), INT16_C( 26600), INT16_C( 19789), INT16_C(-14016),
|
|
INT16_C(-12932), INT16_C(-18859), INT16_C( 6902), INT16_C( -4631),
|
|
INT16_C( -2798), INT16_C(-29634), INT16_C(-10516), INT16_C( 26757),
|
|
INT16_C(-28927), INT16_C(-17242), INT16_C( 480), INT16_C( 404)),
|
|
simde_mm256_set_epi16(INT16_C( 19657), INT16_C( 17669), INT16_C(-14306), INT16_C(-31572),
|
|
INT16_C(-22676), INT16_C(-12265), INT16_C(-14682), INT16_C( -4744),
|
|
INT16_C( 3797), INT16_C(-26113), INT16_C( 9683), INT16_C( 30844),
|
|
INT16_C(-10026), INT16_C( 27094), INT16_C( 12923), INT16_C( 21429)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 31818), INT16_C( -8162), INT16_C(-27852), INT16_C( 8030),
|
|
INT16_C(-19771), INT16_C( -1956), INT16_C( 2469), INT16_C(-15944),
|
|
INT16_C(-21759), INT16_C( 15444), INT16_C( 11228), INT16_C(-28666),
|
|
INT16_C( -4731), INT16_C( 20683), INT16_C(-13730), INT16_C( 880)),
|
|
simde_mm256_set_epi16(INT16_C( -7720), INT16_C(-18895), INT16_C(-27242), INT16_C( 26121),
|
|
INT16_C( 30042), INT16_C( 29379), INT16_C( 8440), INT16_C( -825),
|
|
INT16_C( 31619), INT16_C( 2432), INT16_C(-25855), INT16_C( 8385),
|
|
INT16_C( 25385), INT16_C( 9878), INT16_C(-16582), INT16_C( -5768)),
|
|
simde_mm256_set_epi16(INT16_C(-31818), INT16_C( 8162), INT16_C( 27852), INT16_C( 8030),
|
|
INT16_C(-19771), INT16_C( -1956), INT16_C( 2469), INT16_C( 15944),
|
|
INT16_C(-21759), INT16_C( 15444), INT16_C(-11228), INT16_C(-28666),
|
|
INT16_C( -4731), INT16_C( 20683), INT16_C( 13730), INT16_C( -880)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-12394), INT16_C( 5925), INT16_C(-22167), INT16_C( 17105),
|
|
INT16_C(-25421), INT16_C(-31305), INT16_C( -816), INT16_C( 25010),
|
|
INT16_C( 5501), INT16_C(-32738), INT16_C(-22226), INT16_C( -5189),
|
|
INT16_C( -1009), INT16_C( -4191), INT16_C( 1824), INT16_C( 23969)),
|
|
simde_mm256_set_epi16(INT16_C( 6973), INT16_C( 6673), INT16_C( 28195), INT16_C( 18113),
|
|
INT16_C( 13233), INT16_C(-11958), INT16_C( 11271), INT16_C( 32197),
|
|
INT16_C( -6474), INT16_C(-13846), INT16_C( 4824), INT16_C( 8574),
|
|
INT16_C(-32258), INT16_C(-31921), INT16_C( 28942), INT16_C( 28949)),
|
|
simde_mm256_set_epi16(INT16_C(-12394), INT16_C( 5925), INT16_C(-22167), INT16_C( 17105),
|
|
INT16_C(-25421), INT16_C( 31305), INT16_C( -816), INT16_C( 25010),
|
|
INT16_C( -5501), INT16_C( 32738), INT16_C(-22226), INT16_C( -5189),
|
|
INT16_C( 1009), INT16_C( 4191), INT16_C( 1824), INT16_C( 23969)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-12394), INT16_C( 5925), INT16_C(-22167), INT16_C( 17105),
|
|
INT16_C(-25421), INT16_C(-31305), INT16_C( -816), INT16_C( 25010),
|
|
INT16_C( 5501), INT16_C(-32738), INT16_C(-22226), INT16_C( -5189),
|
|
INT16_C( -1009), INT16_C( -4191), INT16_C( 1824), INT16_C( 23969)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sign_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sign_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[9] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-2066740673), INT32_C(-1402473921), INT32_C( 1388113781), INT32_C(-1332206277),
|
|
INT32_C( 2030824666), INT32_C( 616671193), INT32_C( 1932233736), INT32_C(-1125047369)),
|
|
simde_mm256_set_epi32(INT32_C( 1087531093), INT32_C(-1100485211), INT32_C(-1940507046), INT32_C(-2139586601),
|
|
INT32_C( 942523406), INT32_C( -53038765), INT32_C( 1212259695), INT32_C(-1402477633)),
|
|
simde_mm256_set_epi32(INT32_C(-2066740673), INT32_C( 1402473921), INT32_C(-1388113781), INT32_C( 1332206277),
|
|
INT32_C( 2030824666), INT32_C( -616671193), INT32_C( 1932233736), INT32_C( 1125047369)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 2053454219), INT32_C( -355927236), INT32_C( 1857807021), INT32_C( 843295512),
|
|
INT32_C( 1081415583), INT32_C( 1482639700), INT32_C( 745322391), INT32_C( 981276152)),
|
|
simde_mm256_set_epi32(INT32_C( -892572655), INT32_C(-1018315647), INT32_C( 937940113), INT32_C( 215839808),
|
|
INT32_C( -528505416), INT32_C(-1542626826), INT32_C(-1999053873), INT32_C( 2079417573)),
|
|
simde_mm256_set_epi32(INT32_C(-2053454219), INT32_C( 355927236), INT32_C( 1857807021), INT32_C( 843295512),
|
|
INT32_C(-1081415583), INT32_C(-1482639700), INT32_C( -745322391), INT32_C( 981276152)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1352147360), INT32_C( 1774683481), INT32_C( 1053926623), INT32_C( 1898741205),
|
|
INT32_C( 483752589), INT32_C( 759710294), INT32_C( -183418660), INT32_C(-1426407393)),
|
|
simde_mm256_set_epi32(INT32_C( 1103320027), INT32_C(-1671406872), INT32_C( 1458487954), INT32_C(-1778775558),
|
|
INT32_C( 1354346367), INT32_C( -336454830), INT32_C(-2109336907), INT32_C( 2123993972)),
|
|
simde_mm256_set_epi32(INT32_C( 1352147360), INT32_C(-1774683481), INT32_C( 1053926623), INT32_C(-1898741205),
|
|
INT32_C( 483752589), INT32_C( -759710294), INT32_C( 183418660), INT32_C(-1426407393)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1480186890), INT32_C( 1572676356), INT32_C( 1387205194), INT32_C(-1982844197),
|
|
INT32_C( 1432593025), INT32_C( 2116310945), INT32_C( 1867960317), INT32_C( -653001309)),
|
|
simde_mm256_set_epi32(INT32_C( -835752359), INT32_C(-1631427381), INT32_C(-1526834188), INT32_C( -458889952),
|
|
INT32_C(-1831450214), INT32_C(-2043609906), INT32_C( 165439106), INT32_C( 576767751)),
|
|
simde_mm256_set_epi32(INT32_C(-1480186890), INT32_C(-1572676356), INT32_C(-1387205194), INT32_C( 1982844197),
|
|
INT32_C(-1432593025), INT32_C(-2116310945), INT32_C( 1867960317), INT32_C( -653001309)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1303672257), INT32_C(-1628871908), INT32_C( 1922921968), INT32_C( -581968424),
|
|
INT32_C( 1952518176), INT32_C(-2030144309), INT32_C(-1714670875), INT32_C(-1871456599)),
|
|
simde_mm256_set_epi32(INT32_C( 828745205), INT32_C( 644759414), INT32_C( 1102083765), INT32_C( 1739852478),
|
|
INT32_C( 1804078042), INT32_C( -975636613), INT32_C( -36388838), INT32_C( -502359018)),
|
|
simde_mm256_set_epi32(INT32_C( 1303672257), INT32_C(-1628871908), INT32_C( 1922921968), INT32_C( -581968424),
|
|
INT32_C( 1952518176), INT32_C( 2030144309), INT32_C( 1714670875), INT32_C( 1871456599)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1288223483), INT32_C( -937526444), INT32_C( 1486106601), INT32_C( -962194808),
|
|
INT32_C( -248814079), INT32_C( -634554244), INT32_C( 657102378), INT32_C( 846943157)),
|
|
simde_mm256_set_epi32(INT32_C(-1660852248), INT32_C( 1296943424), INT32_C( -847464875), INT32_C( 452390377),
|
|
INT32_C( -183333826), INT32_C( -689149819), INT32_C(-1895711578), INT32_C( 31457684)),
|
|
simde_mm256_set_epi32(INT32_C( 1288223483), INT32_C( -937526444), INT32_C(-1486106601), INT32_C( -962194808),
|
|
INT32_C( 248814079), INT32_C( 634554244), INT32_C( -657102378), INT32_C( 846943157)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 2085281822), INT32_C(-1825300642), INT32_C(-1295648676), INT32_C( 161857976),
|
|
INT32_C(-1425982380), INT32_C( 735875078), INT32_C( -310030133), INT32_C( -899808400)),
|
|
simde_mm256_set_epi32(INT32_C( -505891279), INT32_C(-1785305591), INT32_C( 1968861891), INT32_C( 553188551),
|
|
INT32_C( 2072185216), INT32_C(-1694424895), INT32_C( 1663641238), INT32_C(-1086658184)),
|
|
simde_mm256_set_epi32(INT32_C(-2085281822), INT32_C( 1825300642), INT32_C(-1295648676), INT32_C( 161857976),
|
|
INT32_C(-1425982380), INT32_C( -735875078), INT32_C( -310030133), INT32_C( 899808400)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -812247259), INT32_C(-1452719407), INT32_C(-1665956425), INT32_C( -53452366),
|
|
INT32_C( 360546334), INT32_C(-1456542789), INT32_C( -66064479), INT32_C( 119561633)),
|
|
simde_mm256_set_epi32(INT32_C( 456989201), INT32_C( 1847805633), INT32_C( 867291466), INT32_C( 738688453),
|
|
INT32_C( -424228374), INT32_C( 316154238), INT32_C(-2114026673), INT32_C( 1896771861)),
|
|
simde_mm256_set_epi32(INT32_C( -812247259), INT32_C(-1452719407), INT32_C(-1665956425), INT32_C( -53452366),
|
|
INT32_C( -360546334), INT32_C(-1456542789), INT32_C( 66064479), INT32_C( 119561633)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -812247259), INT32_C(-1452719407), INT32_C(-1665956425), INT32_C( -53452366),
|
|
INT32_C( 360546334), INT32_C(-1456542789), INT32_C( -66064479), INT32_C( 119561633)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sign_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sll_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int64_t count[2];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 30967), -INT16_C( 15643), INT16_C( 9802), INT16_C( 10151), INT16_C( 21287), INT16_C( 10197), INT16_C( 23843), -INT16_C( 11577),
|
|
-INT16_C( 30272), INT16_C( 28806), INT16_C( 2696), INT16_C( 16693), INT16_C( 19713), -INT16_C( 3783), -INT16_C( 24678), -INT16_C( 23756) },
|
|
{ INT64_C( 6), INT64_C( 8) },
|
|
{ -INT16_C( 15808), -INT16_C( 18112), -INT16_C( 28032), -INT16_C( 5696), -INT16_C( 13888), -INT16_C( 2752), INT16_C( 18624), -INT16_C( 20032),
|
|
INT16_C( 28672), INT16_C( 8576), -INT16_C( 24064), INT16_C( 19776), INT16_C( 16448), INT16_C( 20032), -INT16_C( 6528), -INT16_C( 13056) } },
|
|
{ { -INT16_C( 8994), INT16_C( 26363), INT16_C( 12774), -INT16_C( 6233), -INT16_C( 7810), INT16_C( 6361), INT16_C( 3456), -INT16_C( 22596),
|
|
INT16_C( 8486), INT16_C( 25880), -INT16_C( 20434), -INT16_C( 28724), INT16_C( 22813), -INT16_C( 6381), INT16_C( 27054), -INT16_C( 29582) },
|
|
{ INT64_C( 1), INT64_C( 1) },
|
|
{ -INT16_C( 17988), -INT16_C( 12810), INT16_C( 25548), -INT16_C( 12466), -INT16_C( 15620), INT16_C( 12722), INT16_C( 6912), INT16_C( 20344),
|
|
INT16_C( 16972), -INT16_C( 13776), INT16_C( 24668), INT16_C( 8088), -INT16_C( 19910), -INT16_C( 12762), -INT16_C( 11428), INT16_C( 6372) } },
|
|
{ { -INT16_C( 17901), INT16_C( 16772), INT16_C( 20586), -INT16_C( 30768), -INT16_C( 7255), INT16_C( 22382), -INT16_C( 7860), -INT16_C( 28189),
|
|
-INT16_C( 10929), -INT16_C( 4420), -INT16_C( 12433), -INT16_C( 5877), INT16_C( 16570), -INT16_C( 19484), -INT16_C( 31182), INT16_C( 17873) },
|
|
{ INT64_C( 4), INT64_C( 13) },
|
|
{ -INT16_C( 24272), INT16_C( 6208), INT16_C( 1696), INT16_C( 32000), INT16_C( 14992), INT16_C( 30432), INT16_C( 5312), INT16_C( 7728),
|
|
INT16_C( 21744), -INT16_C( 5184), -INT16_C( 2320), -INT16_C( 28496), INT16_C( 2976), INT16_C( 15936), INT16_C( 25376), INT16_C( 23824) } },
|
|
{ { -INT16_C( 10913), -INT16_C( 12610), -INT16_C( 13916), INT16_C( 24248), -INT16_C( 25591), INT16_C( 15121), -INT16_C( 7389), INT16_C( 25472),
|
|
INT16_C( 1848), -INT16_C( 8690), INT16_C( 16222), -INT16_C( 26579), -INT16_C( 11297), INT16_C( 24607), INT16_C( 14429), -INT16_C( 17104) },
|
|
{ INT64_C( 12), INT64_C( 3) },
|
|
{ -INT16_C( 4096), -INT16_C( 8192), INT16_C( 16384), INT16_MIN, -INT16_C( 28672), INT16_C( 4096), INT16_C( 12288), INT16_C( 0),
|
|
INT16_MIN, -INT16_C( 8192), -INT16_C( 8192), -INT16_C( 12288), -INT16_C( 4096), -INT16_C( 4096), -INT16_C( 12288), INT16_C( 0) } },
|
|
{ { INT16_C( 29828), -INT16_C( 7654), INT16_C( 18356), -INT16_C( 27782), -INT16_C( 26085), INT16_C( 30964), INT16_C( 9426), -INT16_C( 8395),
|
|
-INT16_C( 16109), -INT16_C( 13680), -INT16_C( 24828), -INT16_C( 7029), -INT16_C( 30528), -INT16_C( 15129), INT16_C( 19973), -INT16_C( 30463) },
|
|
{ INT64_C( 7), INT64_C( 3) },
|
|
{ INT16_C( 16896), INT16_C( 3328), -INT16_C( 9728), -INT16_C( 17152), INT16_C( 3456), INT16_C( 31232), INT16_C( 26880), -INT16_C( 25984),
|
|
-INT16_C( 30336), INT16_C( 18432), -INT16_C( 32256), INT16_C( 17792), INT16_C( 24576), INT16_C( 29568), INT16_C( 640), -INT16_C( 32640) } },
|
|
{ { -INT16_C( 16147), -INT16_C( 3840), -INT16_C( 29856), INT16_C( 8406), -INT16_C( 17133), INT16_C( 6373), -INT16_C( 6645), -INT16_C( 12639),
|
|
INT16_C( 3073), INT16_C( 25668), INT16_C( 20210), INT16_C( 29154), -INT16_C( 9908), INT16_C( 28611), -INT16_C( 3323), -INT16_C( 3420) },
|
|
{ INT64_C( 4), INT64_C( 0) },
|
|
{ INT16_C( 3792), INT16_C( 4096), -INT16_C( 18944), INT16_C( 3424), -INT16_C( 11984), -INT16_C( 29104), INT16_C( 24752), -INT16_C( 5616),
|
|
-INT16_C( 16368), INT16_C( 17472), -INT16_C( 4320), INT16_C( 7712), -INT16_C( 27456), -INT16_C( 976), INT16_C( 12368), INT16_C( 10816) } },
|
|
{ { -INT16_C( 27382), -INT16_C( 923), INT16_C( 18659), INT16_C( 12397), INT16_C( 12321), INT16_C( 9887), INT16_C( 17188), -INT16_C( 10216),
|
|
-INT16_C( 1048), INT16_C( 6380), INT16_C( 8373), INT16_C( 11355), -INT16_C( 18630), INT16_C( 14766), -INT16_C( 75), -INT16_C( 16582) },
|
|
{ INT64_C( 0), INT64_C( 7) },
|
|
{ -INT16_C( 27382), -INT16_C( 923), INT16_C( 18659), INT16_C( 12397), INT16_C( 12321), INT16_C( 9887), INT16_C( 17188), -INT16_C( 10216),
|
|
-INT16_C( 1048), INT16_C( 6380), INT16_C( 8373), INT16_C( 11355), -INT16_C( 18630), INT16_C( 14766), -INT16_C( 75), -INT16_C( 16582) } },
|
|
{ { INT16_C( 16706), -INT16_C( 2166), -INT16_C( 6815), -INT16_C( 25821), -INT16_C( 11619), INT16_C( 21205), INT16_C( 4049), INT16_C( 25873),
|
|
-INT16_C( 13137), -INT16_C( 26660), -INT16_C( 31500), INT16_C( 19872), -INT16_C( 12342), INT16_C( 21706), INT16_C( 7958), INT16_C( 22982) },
|
|
{ INT64_C( 13), INT64_C( 15) },
|
|
{ INT16_C( 16384), INT16_C( 16384), INT16_C( 8192), INT16_C( 24576), -INT16_C( 24576), -INT16_C( 24576), INT16_C( 8192), INT16_C( 8192),
|
|
-INT16_C( 8192), INT16_MIN, INT16_MIN, INT16_C( 0), INT16_C( 16384), INT16_C( 16384), -INT16_C( 16384), -INT16_C( 16384) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_sll_epi16(a, count);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sll_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int64_t count[2];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 42405030), INT32_C( 2070762355), -INT32_C( 707236265), INT32_C( 839284725), INT32_C( 514773574), INT32_C( 579134346), INT32_C( 416515106), INT32_C( 1106560486) },
|
|
{ INT64_C( 2), INT64_C( 7) },
|
|
{ -INT32_C( 169620120), -INT32_C( 306885172), INT32_C( 1466022236), -INT32_C( 937828396), INT32_C( 2059094296), -INT32_C( 1978429912), INT32_C( 1666060424), INT32_C( 131274648) } },
|
|
{ { INT32_C( 1331425221), -INT32_C( 177086510), INT32_C( 1242383459), -INT32_C( 1031077367), INT32_C( 787335534), -INT32_C( 1924819852), INT32_C( 194785556), -INT32_C( 381100764) },
|
|
{ INT64_C( 28), INT64_C( 2) },
|
|
{ INT32_C( 1342177280), INT32_C( 536870912), INT32_C( 805306368), -INT32_C( 1879048192), -INT32_C( 536870912), INT32_C( 1073741824), INT32_C( 1073741824), INT32_C( 1073741824) } },
|
|
{ { -INT32_C( 113203067), INT32_C( 1350993212), -INT32_C( 614784330), -INT32_C( 859527937), -INT32_C( 882115256), -INT32_C( 1749876824), INT32_C( 1150280608), INT32_C( 609634975) },
|
|
{ INT64_C( 26), INT64_C( 24) },
|
|
{ INT32_C( 335544320), -INT32_C( 268435456), -INT32_C( 671088640), -INT32_C( 67108864), INT32_C( 536870912), -INT32_C( 1610612736), INT32_MIN, INT32_C( 2080374784) } },
|
|
{ { INT32_C( 378731886), -INT32_C( 1666366212), -INT32_C( 941605592), INT32_C( 2045523591), -INT32_C( 408483380), INT32_C( 1958291117), INT32_C( 2134533377), INT32_C( 1162267862) },
|
|
{ INT64_C( 8), INT64_C( 8) },
|
|
{ -INT32_C( 1828884992), -INT32_C( 1387987968), -INT32_C( 532862976), -INT32_C( 331970816), -INT32_C( 1492530176), -INT32_C( 1188647680), INT32_C( 979697920), INT32_C( 1187829248) } },
|
|
{ { -INT32_C( 1356010239), INT32_C( 354673940), INT32_C( 563371339), -INT32_C( 228140503), -INT32_C( 810040654), INT32_C( 286464203), -INT32_C( 740417702), INT32_C( 421012503) },
|
|
{ INT64_C( 14), INT64_C( 11) },
|
|
{ INT32_C( 994066432), -INT32_C( 112918528), INT32_C( 391299072), -INT32_C( 1232453632), -INT32_C( 257130496), -INT32_C( 969752576), -INT32_C( 2015985664), INT32_C( 151371776) } },
|
|
{ { -INT32_C( 1976886593), -INT32_C( 1919205838), INT32_C( 1969256798), -INT32_C( 1366394723), -INT32_C( 422291780), -INT32_C( 1990521279), -INT32_C( 2013596963), -INT32_C( 1360830993) },
|
|
{ INT64_C( 21), INT64_C( 25) },
|
|
{ INT32_C( 1474297856), -INT32_C( 968884224), INT32_C( 734003200), INT32_C( 329252864), -INT32_C( 679477248), -INT32_C( 937426944), INT32_C( 1537212416), -INT32_C( 1109393408) } },
|
|
{ { INT32_C( 1186097925), INT32_C( 1473252730), -INT32_C( 287388929), -INT32_C( 1617116888), INT32_C( 474600655), -INT32_C( 205094745), INT32_C( 652011031), -INT32_C( 1695386475) },
|
|
{ INT64_C( 22), INT64_C( 4) },
|
|
{ -INT32_C( 1052770304), INT32_C( 1585446912), -INT32_C( 1077936128), INT32_C( 1241513984), INT32_C( 868220928), INT32_C( 700448768), -INT32_C( 2051014656), INT32_C( 624951296) } },
|
|
{ { -INT32_C( 1203991536), INT32_C( 615187212), INT32_C( 2118813929), -INT32_C( 619168516), -INT32_C( 1841956384), INT32_C( 608429737), -INT32_C( 959978891), INT32_C( 803670558) },
|
|
{ INT64_C( 2), INT64_C( 5) },
|
|
{ -INT32_C( 520998848), -INT32_C( 1834218448), -INT32_C( 114678876), INT32_C( 1818293232), INT32_C( 1222109056), -INT32_C( 1861248348), INT32_C( 455051732), -INT32_C( 1080285064) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_sll_epi32(a, count);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sll_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t a[4];
|
|
const int64_t count[2];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { INT64_C( 6353669260759125320), -INT64_C( 3799575433940554765), -INT64_C( 3221953462652208759), -INT64_C( 5994917397228281305) },
|
|
{ INT64_C( 24), INT64_C( 54) },
|
|
{ -INT64_C( 8679599983080505344), INT64_C( 5051539236809867264), INT64_C( 7311530745351110656), INT64_C( 7187857302152544256) } },
|
|
{ { -INT64_C( 2273019595137522117), INT64_C( 3805099269717809854), -INT64_C( 582719818775460585), INT64_C( 7138324329339315939) },
|
|
{ INT64_C( 47), INT64_C( 36) },
|
|
{ -INT64_C( 5540131229107486720), INT64_C( 7881017872921657344), -INT64_C( 9039991089527783424), INT64_C( 3706884705790984192) } },
|
|
{ { INT64_C( 2023522753362425524), INT64_C( 2373503989335581029), -INT64_C( 4790959826946689851), -INT64_C( 4167002754303171549) },
|
|
{ INT64_C( 41), INT64_C( 6) },
|
|
{ INT64_C( 3237358056358543360), -INT64_C( 6646527998696620032), INT64_C( 6478861271553802240), INT64_C( 6829785800721301504) } },
|
|
{ { INT64_C( 3260993203488027417), INT64_C( 1269439804849385668), INT64_C( 5917508330730193206), -INT64_C( 7956805592445070552) },
|
|
{ INT64_C( 37), INT64_C( 55) },
|
|
{ -INT64_C( 7224227763165593600), -INT64_C( 486924771674554368), INT64_C( 1355626093914095616), INT64_C( 8001318738651512832) } },
|
|
{ { INT64_C( 1465206910307710346), INT64_C( 4671115228599013065), -INT64_C( 8577132701579089518), -INT64_C( 639029091708279909) },
|
|
{ INT64_C( 45), INT64_C( 43) },
|
|
{ -INT64_C( 2976527509971009536), -INT64_C( 443287903947194368), -INT64_C( 4813714682961461248), -INT64_C( 3714519714534260736) } },
|
|
{ { INT64_C( 7745356627688155572), INT64_C( 3877828844525065068), INT64_C( 4246041348744727368), INT64_C( 7187132229681079538) },
|
|
{ INT64_C( 16), INT64_C( 47) },
|
|
{ INT64_C( 635275905231749120), -INT64_C( 3401948701828317184), -INT64_C( 568520574133338112), -INT64_C( 3265373720462360576) } },
|
|
{ { INT64_C( 6705542549428466616), -INT64_C( 8947198048595020349), -INT64_C( 1652251508452938248), -INT64_C( 3179399383378874708) },
|
|
{ INT64_C( 29), INT64_C( 19) },
|
|
{ INT64_C( 8835620976327655424), -INT64_C( 1275188604754198528), INT64_C( 4170867338423304192), INT64_C( 7229233794509701120) } },
|
|
{ { -INT64_C( 5199636620313426708), -INT64_C( 1708347553783123364), INT64_C( 5888461629188206990), INT64_C( 5606339840074555950) },
|
|
{ INT64_C( 28), INT64_C( 39) },
|
|
{ -INT64_C( 5849700588702400512), INT64_C( 3998518232565678080), INT64_C( 8364450152747892736), INT64_C( 1737327477719564288) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi64(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_sll_epi64(a, count);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_slli_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[] = {
|
|
{ simde_mm256_set_epi16(INT16_C( -7189), INT16_C( -4038), INT16_C( 8832), INT16_C(-31599),
|
|
INT16_C( 9071), INT16_C(-26166), INT16_C( 4984), INT16_C(-29916),
|
|
INT16_C( 26692), INT16_C( 7557), INT16_C(-30970), INT16_C(-31903),
|
|
INT16_C( 32721), INT16_C( 14732), INT16_C( -9072), INT16_C(-28469)),
|
|
simde_mm256_set_epi16(INT16_C( -7189), INT16_C( -4038), INT16_C( 8832), INT16_C(-31599),
|
|
INT16_C( 9071), INT16_C(-26166), INT16_C( 4984), INT16_C(-29916),
|
|
INT16_C( 26692), INT16_C( 7557), INT16_C(-30970), INT16_C(-31903),
|
|
INT16_C( 32721), INT16_C( 14732), INT16_C( -9072), INT16_C(-28469)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 27658), INT16_C(-18253), INT16_C( 19135), INT16_C(-22021),
|
|
INT16_C(-31750), INT16_C( 26403), INT16_C(-14265), INT16_C( -1890),
|
|
INT16_C( 16323), INT16_C( -5176), INT16_C(-29730), INT16_C( -7646),
|
|
INT16_C(-24362), INT16_C( 28979), INT16_C( 13248), INT16_C( 6628)),
|
|
simde_mm256_set_epi16(INT16_C(-10220), INT16_C( 29030), INT16_C(-27266), INT16_C( 21494),
|
|
INT16_C( 2036), INT16_C(-12730), INT16_C(-28530), INT16_C( -3780),
|
|
INT16_C( 32646), INT16_C(-10352), INT16_C( 6076), INT16_C(-15292),
|
|
INT16_C( 16812), INT16_C( -7578), INT16_C( 26496), INT16_C( 13256)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-18549), INT16_C( -1433), INT16_C( 15072), INT16_C( 28665),
|
|
INT16_C(-22672), INT16_C( 30426), INT16_C(-11873), INT16_C(-28559),
|
|
INT16_C( 26366), INT16_C( 20007), INT16_C( 14676), INT16_C( -4391),
|
|
INT16_C(-13223), INT16_C(-20349), INT16_C(-14071), INT16_C( 6326)),
|
|
simde_mm256_set_epi16(INT16_C( -8660), INT16_C( -5732), INT16_C( -5248), INT16_C(-16412),
|
|
INT16_C(-25152), INT16_C( -9368), INT16_C( 18044), INT16_C( 16836),
|
|
INT16_C(-25608), INT16_C( 14492), INT16_C( -6832), INT16_C(-17564),
|
|
INT16_C( 12644), INT16_C(-15860), INT16_C( 9252), INT16_C( 25304)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-15802), INT16_C( 1115), INT16_C(-15134), INT16_C(-24432),
|
|
INT16_C( 29893), INT16_C( 28473), INT16_C( 18873), INT16_C( 20173),
|
|
INT16_C( 191), INT16_C( 32281), INT16_C( 13007), INT16_C( 21879),
|
|
INT16_C( 31137), INT16_C(-25345), INT16_C( 8960), INT16_C( 9998)),
|
|
simde_mm256_set_epi16(INT16_C( 4656), INT16_C( 8920), INT16_C( 10000), INT16_C( 1152),
|
|
INT16_C(-23000), INT16_C( 31176), INT16_C( 19912), INT16_C( 30312),
|
|
INT16_C( 1528), INT16_C( -3896), INT16_C(-27016), INT16_C(-21576),
|
|
INT16_C(-13048), INT16_C( -6152), INT16_C( 6144), INT16_C( 14448)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-11235), INT16_C( 12162), INT16_C(-25050), INT16_C(-16691),
|
|
INT16_C(-21645), INT16_C(-11525), INT16_C( 24581), INT16_C( 20473),
|
|
INT16_C( 17987), INT16_C( 13992), INT16_C( 21082), INT16_C( 9896),
|
|
INT16_C( 20946), INT16_C( -338), INT16_C( -890), INT16_C( 3047)),
|
|
simde_mm256_set_epi16(INT16_C( 16848), INT16_C( -2016), INT16_C( -7584), INT16_C( -4912),
|
|
INT16_C(-18640), INT16_C( 12208), INT16_C( 80), INT16_C( -112),
|
|
INT16_C( 25648), INT16_C( 27264), INT16_C( 9632), INT16_C( 27264),
|
|
INT16_C( 7456), INT16_C( -5408), INT16_C(-14240), INT16_C(-16784)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 4232), INT16_C( 9528), INT16_C( 5625), INT16_C( -2056),
|
|
INT16_C( -5147), INT16_C(-18162), INT16_C(-12026), INT16_C(-23947),
|
|
INT16_C( 19702), INT16_C( 18533), INT16_C( 17268), INT16_C( -7285),
|
|
INT16_C(-25540), INT16_C( 15541), INT16_C(-16480), INT16_C(-30543)),
|
|
simde_mm256_set_epi16(INT16_C( 4352), INT16_C(-22784), INT16_C(-16608), INT16_C( -256),
|
|
INT16_C( 31904), INT16_C( 8640), INT16_C( 8384), INT16_C( 20128),
|
|
INT16_C(-24896), INT16_C( 3232), INT16_C( 28288), INT16_C( 29024),
|
|
INT16_C(-30848), INT16_C(-26976), INT16_C( -3072), INT16_C( 5664)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 21401), INT16_C(-26197), INT16_C(-15084), INT16_C( 9940),
|
|
INT16_C(-15195), INT16_C( 26408), INT16_C( 31953), INT16_C( 9654),
|
|
INT16_C(-16569), INT16_C( 29048), INT16_C(-29616), INT16_C( 6990),
|
|
INT16_C( 2847), INT16_C(-28587), INT16_C( 20626), INT16_C( 4687)),
|
|
simde_mm256_set_epi16(INT16_C( -6592), INT16_C( 27328), INT16_C( 17664), INT16_C(-19200),
|
|
INT16_C( 10560), INT16_C(-13824), INT16_C( 13376), INT16_C( 28032),
|
|
INT16_C(-11840), INT16_C( 24064), INT16_C( 5120), INT16_C(-11392),
|
|
INT16_C(-14400), INT16_C( 5440), INT16_C( 9344), INT16_C(-27712)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -7756), INT16_C( -3283), INT16_C(-22803), INT16_C(-16163),
|
|
INT16_C( 5629), INT16_C( 29150), INT16_C( -9667), INT16_C( 12335),
|
|
INT16_C(-18839), INT16_C(-10112), INT16_C(-18195), INT16_C(-15969),
|
|
INT16_C(-29495), INT16_C( 29894), INT16_C(-13459), INT16_C( 16744)),
|
|
simde_mm256_set_epi16(INT16_C( -9728), INT16_C(-27008), INT16_C( 30336), INT16_C( 28288),
|
|
INT16_C( -384), INT16_C( -4352), INT16_C( 7808), INT16_C( 6016),
|
|
INT16_C( 13440), INT16_C( 16384), INT16_C( 30336), INT16_C(-12416),
|
|
INT16_C( 25728), INT16_C( 25344), INT16_C(-18816), INT16_C(-19456)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28557), INT16_C(-10724), INT16_C( 2722), INT16_C(-10967),
|
|
INT16_C( 5210), INT16_C( 29322), INT16_C( 15248), INT16_C( -8080),
|
|
INT16_C(-19889), INT16_C( 30125), INT16_C( 14116), INT16_C(-29183),
|
|
INT16_C( 11578), INT16_C(-15372), INT16_C(-24444), INT16_C( 10332)),
|
|
simde_mm256_set_epi16(INT16_C( 29440), INT16_C( 7168), INT16_C(-24064), INT16_C( 10496),
|
|
INT16_C( 23040), INT16_C(-30208), INT16_C(-28672), INT16_C( 28672),
|
|
INT16_C( 20224), INT16_C(-21248), INT16_C( 9216), INT16_C( 256),
|
|
INT16_C( 14848), INT16_C( -3072), INT16_C(-31744), INT16_C( 23552)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-21274), INT16_C(-31982), INT16_C(-20961), INT16_C( 5088),
|
|
INT16_C(-17462), INT16_C( -9409), INT16_C( 15757), INT16_C( 1966),
|
|
INT16_C(-22236), INT16_C(-28953), INT16_C( -1919), INT16_C(-19201),
|
|
INT16_C( 20002), INT16_C( 13277), INT16_C(-29203), INT16_C(-31968)),
|
|
simde_mm256_set_epi16(INT16_C(-13312), INT16_C( 9216), INT16_C( 15872), INT16_C(-16384),
|
|
INT16_C(-27648), INT16_C( 32256), INT16_C( 6656), INT16_C( 23552),
|
|
INT16_C( 18432), INT16_C(-12800), INT16_C( 512), INT16_C( -512),
|
|
INT16_C( 17408), INT16_C(-17920), INT16_C( -9728), INT16_C( 16384)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 18957), INT16_C( -9706), INT16_C( -6614), INT16_C( 10095),
|
|
INT16_C( 5161), INT16_C( -605), INT16_C( 13764), INT16_C( 27464),
|
|
INT16_C( -3974), INT16_C( -5977), INT16_C(-10905), INT16_C( 357),
|
|
INT16_C(-20180), INT16_C( 8910), INT16_C( -3748), INT16_C( 6077)),
|
|
simde_mm256_set_epi16(INT16_C( 13312), INT16_C( 22528), INT16_C(-22528), INT16_C(-17408),
|
|
INT16_C(-23552), INT16_C(-29696), INT16_C( 4096), INT16_C( 8192),
|
|
INT16_C( -6144), INT16_C(-25600), INT16_C(-25600), INT16_C(-27648),
|
|
INT16_C(-20480), INT16_C( 14336), INT16_C( 28672), INT16_C( -3072)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-31972), INT16_C( 18963), INT16_C( 30683), INT16_C(-21818),
|
|
INT16_C(-14936), INT16_C(-28324), INT16_C( -9468), INT16_C(-30588),
|
|
INT16_C(-23376), INT16_C( 11957), INT16_C(-26836), INT16_C( 1095),
|
|
INT16_C( 3892), INT16_C( 16953), INT16_C( 18603), INT16_C(-10451)),
|
|
simde_mm256_set_epi16(INT16_C( -8192), INT16_C(-26624), INT16_C(-10240), INT16_C( 12288),
|
|
INT16_C( 16384), INT16_C( -8192), INT16_C( 8192), INT16_C( 8192),
|
|
INT16_C(-32768), INT16_C(-22528), INT16_C( 24576), INT16_C( 14336),
|
|
INT16_C(-24576), INT16_C(-14336), INT16_C( 22528), INT16_C( 26624)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -5389), INT16_C(-19407), INT16_C( 25290), INT16_C( -4640),
|
|
INT16_C( 29672), INT16_C( 23128), INT16_C(-13360), INT16_C(-25779),
|
|
INT16_C(-15993), INT16_C( -8711), INT16_C(-27319), INT16_C( 5516),
|
|
INT16_C(-14272), INT16_C( 31123), INT16_C(-10448), INT16_C( 22014)),
|
|
simde_mm256_set_epi16(INT16_C( 12288), INT16_C( 4096), INT16_C(-24576), INT16_C( 0),
|
|
INT16_C(-32768), INT16_C(-32768), INT16_C( 0), INT16_C(-12288),
|
|
INT16_C( 28672), INT16_C(-28672), INT16_C(-28672), INT16_C(-16384),
|
|
INT16_C( 0), INT16_C( 12288), INT16_C( 0), INT16_C( -8192)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -8792), INT16_C( -1044), INT16_C(-11356), INT16_C( -9495),
|
|
INT16_C( 4809), INT16_C(-13629), INT16_C( 15424), INT16_C(-18049),
|
|
INT16_C( 4498), INT16_C(-15799), INT16_C(-26777), INT16_C( 7570),
|
|
INT16_C( 20105), INT16_C( -5032), INT16_C( -5734), INT16_C(-24145)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C(-32768), INT16_C(-32768), INT16_C( 8192),
|
|
INT16_C( 8192), INT16_C( 24576), INT16_C( 0), INT16_C( -8192),
|
|
INT16_C( 16384), INT16_C( 8192), INT16_C( -8192), INT16_C( 16384),
|
|
INT16_C( 8192), INT16_C( 0), INT16_C( 16384), INT16_C( -8192)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28948), INT16_C(-14792), INT16_C( 23966), INT16_C( 21707),
|
|
INT16_C( 7390), INT16_C( 8499), INT16_C( 25220), INT16_C( 26210),
|
|
INT16_C( 3798), INT16_C( 20760), INT16_C(-20165), INT16_C(-15694),
|
|
INT16_C( 538), INT16_C( 97), INT16_C( -3558), INT16_C(-31643)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C(-32768), INT16_C(-16384),
|
|
INT16_C(-32768), INT16_C(-16384), INT16_C( 0), INT16_C(-32768),
|
|
INT16_C(-32768), INT16_C( 0), INT16_C(-16384), INT16_C(-32768),
|
|
INT16_C(-32768), INT16_C( 16384), INT16_C(-32768), INT16_C( 16384)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-17181), INT16_C( 9599), INT16_C(-10139), INT16_C(-21574),
|
|
INT16_C( -1148), INT16_C(-14339), INT16_C( -9621), INT16_C( 4987),
|
|
INT16_C(-25046), INT16_C( 11688), INT16_C( -9678), INT16_C( -6619),
|
|
INT16_C( 24962), INT16_C(-11214), INT16_C( 26930), INT16_C(-12095)),
|
|
simde_mm256_set_epi16(INT16_C(-32768), INT16_C(-32768), INT16_C(-32768), INT16_C( 0),
|
|
INT16_C( 0), INT16_C(-32768), INT16_C(-32768), INT16_C(-32768),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C(-32768),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C(-32768)) }
|
|
};
|
|
|
|
simde__m256i r;
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[0].a, 0);
|
|
simde_assert_m256i_i16(r, ==, test_vec[0].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[1].a, 1);
|
|
simde_assert_m256i_i16(r, ==, test_vec[1].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[2].a, 2);
|
|
simde_assert_m256i_i16(r, ==, test_vec[2].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[3].a, 3);
|
|
simde_assert_m256i_i16(r, ==, test_vec[3].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[4].a, 4);
|
|
simde_assert_m256i_i16(r, ==, test_vec[4].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[5].a, 5);
|
|
simde_assert_m256i_i16(r, ==, test_vec[5].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[6].a, 6);
|
|
simde_assert_m256i_i16(r, ==, test_vec[6].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[7].a, 7);
|
|
simde_assert_m256i_i16(r, ==, test_vec[7].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[8].a, 8);
|
|
simde_assert_m256i_i16(r, ==, test_vec[8].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[9].a, 9);
|
|
simde_assert_m256i_i16(r, ==, test_vec[9].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[10].a, 10);
|
|
simde_assert_m256i_i16(r, ==, test_vec[10].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[11].a, 11);
|
|
simde_assert_m256i_i16(r, ==, test_vec[11].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[12].a, 12);
|
|
simde_assert_m256i_i16(r, ==, test_vec[12].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[13].a, 13);
|
|
simde_assert_m256i_i16(r, ==, test_vec[13].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[14].a, 14);
|
|
simde_assert_m256i_i16(r, ==, test_vec[14].r);
|
|
|
|
r = simde_mm256_slli_epi16(test_vec[15].a, 15);
|
|
simde_assert_m256i_i16(r, ==, test_vec[15].r);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_slli_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 1857969468), INT32_C( 1569141389), INT32_C(-1894985594), INT32_C( 1398609693),
|
|
INT32_C( 1177229575), INT32_C( 1655079421), INT32_C(-1753400065), INT32_C( -607538910)),
|
|
simde_mm256_set_epi32(INT32_C(-1434991502), INT32_C(-1643531728), INT32_C( 1435031148), INT32_C( -241637048),
|
|
INT32_C( 325610914), INT32_C( 482634268), INT32_C(-1954026803), INT32_C( -489641480)),
|
|
simde_mm256_set_epi32(INT32_C( -674519168), INT32_C(-1327083104), INT32_C( -509996864), INT32_C( 1805837216),
|
|
INT32_C( -983359264), INT32_C( 1422933920), INT32_C( -274227232), INT32_C( 2033591360)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1508060177), INT32_C( 2047506344), INT32_C( 1926956558), INT32_C( -567187171),
|
|
INT32_C( -718834191), INT32_C( 316061425), INT32_C(-1354037966), INT32_C(-2043187872)),
|
|
simde_mm256_set_epi32(INT32_C( -787812104), INT32_C(-1305007947), INT32_C( 1142922615), INT32_C( 1342194494),
|
|
INT32_C(-1552966924), INT32_C( 272965007), INT32_C(-2116417663), INT32_C( 1446174254)),
|
|
simde_mm256_set_epi32(INT32_C(-1013285408), INT32_C( 1095693568), INT32_C( 1533067712), INT32_C( -970120288),
|
|
INT32_C(-1527857632), INT32_C( 1524031008), INT32_C( -379541952), INT32_C( -957502464)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1315357752), INT32_C(-1727529785), INT32_C(-1290894210), INT32_C(-1585668235),
|
|
INT32_C( 1227224502), INT32_C( -793752248), INT32_C( -629408802), INT32_C( 1394059551)),
|
|
simde_mm256_set_epi32(INT32_C( 743833146), INT32_C( -347973949), INT32_C( 521095178), INT32_C( -742841452),
|
|
INT32_C( -734810084), INT32_C(-1542766714), INT32_C( 575957526), INT32_C(-1816399246)),
|
|
simde_mm256_set_epi32(INT32_C( -858224896), INT32_C( 553621728), INT32_C( 1641058240), INT32_C( 798224032),
|
|
INT32_C( 616478400), INT32_C( 369731840), INT32_C( 1333754816), INT32_C( 1660232672)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 150628023), INT32_C(-2069974717), INT32_C( 1177413093), INT32_C(-2053792688),
|
|
INT32_C(-1561038597), INT32_C( -690144185), INT32_C( -416879322), INT32_C( 1986359122)),
|
|
simde_mm256_set_epi32(INT32_C( 306184069), INT32_C( 2091432312), INT32_C( 1455569082), INT32_C( 1460019701),
|
|
INT32_C(-1968965681), INT32_C(-1344732712), INT32_C( 1352620988), INT32_C( 1100122997)),
|
|
simde_mm256_set_epi32(INT32_C( 525129440), INT32_C(-1814681504), INT32_C( -977486688), INT32_C(-1296856576),
|
|
INT32_C( 1586372448), INT32_C( -609777440), INT32_C( -455236416), INT32_C( -861017536)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1165370523), INT32_C( 190390907), INT32_C( -318174800), INT32_C(-1752249068),
|
|
INT32_C( 1366077326), INT32_C( 1019085647), INT32_C( 1171551091), INT32_C(-1805589438)),
|
|
simde_mm256_set_epi32(INT32_C(-1007170348), INT32_C( 2038045091), INT32_C( 483759032), INT32_C(-1769389731),
|
|
INT32_C( 1901958985), INT32_C(-1845366512), INT32_C( 234958311), INT32_C( -992749206)),
|
|
simde_mm256_set_epi32(INT32_C( 1362848928), INT32_C( 1797541728), INT32_C(-1591659008), INT32_C( -237395328),
|
|
INT32_C( 764801472), INT32_C(-1748997664), INT32_C(-1165070752), INT32_C(-1944287168)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -719890300), INT32_C(-1894949227), INT32_C( 1354912660), INT32_C( 262146704),
|
|
INT32_C(-2066437384), INT32_C( -277466785), INT32_C( 1307284092), INT32_C( -145490102)),
|
|
simde_mm256_set_epi32(INT32_C( 1880856976), INT32_C( -113670921), INT32_C(-1146592891), INT32_C( -833902193),
|
|
INT32_C( -226567429), INT32_C( -58637801), INT32_C( -547686157), INT32_C( 870297549)),
|
|
simde_mm256_set_epi32(INT32_C(-1561653120), INT32_C( -508833120), INT32_C( 407532160), INT32_C( -201240064),
|
|
INT32_C(-1701486848), INT32_C( -289002528), INT32_C(-1116582016), INT32_C( -360715968)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1194726573), INT32_C( -714629781), INT32_C( 721069762), INT32_C(-1027424294),
|
|
INT32_C(-1451303753), INT32_C( -307072244), INT32_C( 760761319), INT32_C(-1826453170)),
|
|
simde_mm256_set_epi32(INT32_C(-2121454006), INT32_C( 354423919), INT32_C( -610410351), INT32_C(-1822148121),
|
|
INT32_C( 2107148479), INT32_C(-1935868808), INT32_C( -573099828), INT32_C( 986406309)),
|
|
simde_mm256_set_epi32(INT32_C( -423455328), INT32_C(-1393316512), INT32_C( 1599395904), INT32_C( 1482160960),
|
|
INT32_C( 802920160), INT32_C(-1236377216), INT32_C(-1425441568), INT32_C( 1683040704)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -461263801), INT32_C( 1863945688), INT32_C( 508376318), INT32_C(-1101321410),
|
|
INT32_C( 1682501002), INT32_C(-1564690744), INT32_C( 469304116), INT32_C( 162493937)),
|
|
simde_mm256_set_epi32(INT32_C( 1027297411), INT32_C( 436621801), INT32_C( 2048624604), INT32_C( 613668083),
|
|
INT32_C( 2064314140), INT32_C( -717287635), INT32_C( 1286678409), INT32_C(-1591587787)),
|
|
simde_mm256_set_epi32(INT32_C(-1875539744), INT32_C( -483280128), INT32_C( -911827008), INT32_C( -882546752),
|
|
INT32_C(-1994542784), INT32_C( 1469503744), INT32_C( 2132829824), INT32_C( 904838688)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_slli_epi32(test_vec[i].a, 5);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_slli_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C(-1180812000753094585), INT64_C(-5675573813228216402),
|
|
INT64_C(-2208027268370360000), INT64_C( 6465428915389083026)),
|
|
simde_mm256_set_epi64x(INT64_C( 8452611756027991400), INT64_C(-5020149848375082542),
|
|
INT64_C( 7925308354439905072), INT64_C( 953522845551677435)),
|
|
simde_mm256_set_epi64x(INT64_C( -892495876679923488), INT64_C( 2849078713792591296),
|
|
INT64_C( 3130103706986686464), INT64_C( 3979540481645589056)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-4047432104007102232), INT64_C(-7778060476316871326),
|
|
INT64_C( 2270807563927334286), INT64_C(-5320870512275475361)),
|
|
simde_mm256_set_epi64x(INT64_C( 5866182958150697676), INT64_C(-5938517638175025937),
|
|
INT64_C( 6284264256050873550), INT64_C( 1402097755121835442)),
|
|
simde_mm256_set_epi64x(INT64_C( -390618812260410112), INT64_C(-9090262283915711424),
|
|
INT64_C(-1121134249163509312), INT64_C(-4247159729429247008)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-5299935544215164629), INT64_C(-5358218550815045801),
|
|
INT64_C(-2743808865442122704), INT64_C(-5577727586229156383)),
|
|
simde_mm256_set_epi64x(INT64_C(-1628942167927235670), INT64_C( 2616318076895434913),
|
|
INT64_C(-3093772338434873461), INT64_C( 5967250390824240978)),
|
|
simde_mm256_set_epi64x(INT64_C(-3577240751499303584), INT64_C(-5442296962695501088),
|
|
INT64_C( 4431836674399831552), INT64_C( 5980157977762511904)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5567340862163337259), INT64_C(-5967855323816927748),
|
|
INT64_C(-3043785185238641430), INT64_C( 8117316208405658103)),
|
|
simde_mm256_set_epi64x(INT64_C( 8644099717862406948), INT64_C(-2019559086403734381),
|
|
INT64_C(-4658546452517300382), INT64_C(-8872814693937714953)),
|
|
simde_mm256_set_epi64x(INT64_C(-6312533147868723872), INT64_C(-6503929625046171776),
|
|
INT64_C(-5167405559088767680), INT64_C( 1499701637047336672)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-8259641032964555923), INT64_C( 6678157623055419482),
|
|
INT64_C( -532130775756370858), INT64_C(-6271412084163076656)),
|
|
simde_mm256_set_epi64x(INT64_C( 6145157523311970224), INT64_C(-5190146230173537442),
|
|
INT64_C(-7773875053091172024), INT64_C(-4385818839583220370)),
|
|
simde_mm256_set_epi64x(INT64_C(-6054096022932066912), INT64_C(-7659884946741195968),
|
|
INT64_C( 1418559249505684160), INT64_C( 2228998117586614784)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3893461849415744807), INT64_C(-9064502035867553709),
|
|
INT64_C( 3098807305629640641), INT64_C( 6650302822439097584)),
|
|
simde_mm256_set_epi64x(INT64_C( 2307018380829868937), INT64_C( 8592643653599303501),
|
|
INT64_C( 8944692494744620746), INT64_C(-7922755342769649115)),
|
|
simde_mm256_set_epi64x(INT64_C( 4536429334663027488), INT64_C( 5083840031591107168),
|
|
INT64_C( 6928113411600742432), INT64_C(-8551238566463496704)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-1984148929379503272), INT64_C(-5205661836978001324),
|
|
INT64_C( 6359749525414039769), INT64_C(-1541764205226378294)),
|
|
simde_mm256_set_epi64x(INT64_C(-1490660722702882908), INT64_C( -633122769786086240),
|
|
INT64_C(-8686691198507413769), INT64_C(-9123917909533884922)),
|
|
simde_mm256_set_epi64x(INT64_C(-8152533519015449856), INT64_C( -560482119910077824),
|
|
INT64_C( 597800002444204832), INT64_C( 6003777653884549440)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-5232449947985336963), INT64_C( -518473474085028208),
|
|
INT64_C( 1841137168562663956), INT64_C( 5952445751598523173)),
|
|
simde_mm256_set_epi64x(INT64_C(-2687140035203018503), INT64_C( -119809082612743153),
|
|
INT64_C( 6113467954286988131), INT64_C(-1537862337526048352)),
|
|
simde_mm256_set_epi64x(INT64_C(-1417701672144818272), INT64_C( 1855592902988648960),
|
|
INT64_C( 3576157172876591744), INT64_C( 6010823314057225376)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_slli_epi64(test_vec[i].a,5);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_slli_si256 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int8_t a[32];
|
|
const int8_t r[32];
|
|
} test_vec[] = {
|
|
{ { INT8_C( 78), INT8_C( 117), -INT8_C( 82), INT8_C( 44), -INT8_C( 74), -INT8_C( 55), INT8_C( 109), -INT8_C( 43),
|
|
-INT8_C( 6), -INT8_C( 95), INT8_C( 101), INT8_C( 76), -INT8_C( 57), INT8_C( 91), INT8_C( 63), -INT8_C( 99),
|
|
INT8_C( 10), -INT8_C( 79), -INT8_C( 4), -INT8_C( 13), -INT8_C( 104), -INT8_C( 113), -INT8_C( 84), INT8_C( 2),
|
|
INT8_C( 111), INT8_C( 61), INT8_C( 13), INT8_C( 125), -INT8_C( 31), INT8_C( 95), -INT8_C( 60), INT8_C( 47) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 78),
|
|
INT8_C( 117), -INT8_C( 82), INT8_C( 44), -INT8_C( 74), -INT8_C( 55), INT8_C( 109), -INT8_C( 43), -INT8_C( 6),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 10),
|
|
-INT8_C( 79), -INT8_C( 4), -INT8_C( 13), -INT8_C( 104), -INT8_C( 113), -INT8_C( 84), INT8_C( 2), INT8_C( 111) } },
|
|
{ { -INT8_C( 44), INT8_C( 114), INT8_C( 91), -INT8_C( 118), INT8_C( 59), -INT8_C( 56), INT8_C( 95), INT8_C( 53),
|
|
INT8_C( 106), -INT8_C( 60), -INT8_C( 126), INT8_C( 49), INT8_C( 32), -INT8_C( 63), -INT8_C( 50), INT8_C( 42),
|
|
INT8_C( 114), -INT8_C( 54), INT8_C( 29), INT8_C( 10), INT8_C( 90), -INT8_C( 55), INT8_C( 13), -INT8_C( 55),
|
|
INT8_C( 6), INT8_C( 26), INT8_C( 70), -INT8_C( 25), INT8_C( 121), INT8_C( 10), INT8_C( 22), INT8_C( 77) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 44),
|
|
INT8_C( 114), INT8_C( 91), -INT8_C( 118), INT8_C( 59), -INT8_C( 56), INT8_C( 95), INT8_C( 53), INT8_C( 106),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 114),
|
|
-INT8_C( 54), INT8_C( 29), INT8_C( 10), INT8_C( 90), -INT8_C( 55), INT8_C( 13), -INT8_C( 55), INT8_C( 6) } },
|
|
{ { INT8_C( 124), INT8_C( 114), -INT8_C( 40), -INT8_C( 73), INT8_C( 58), INT8_C( 55), -INT8_C( 20), -INT8_C( 92),
|
|
-INT8_C( 4), INT8_C( 110), -INT8_C( 43), INT8_C( 28), INT8_C( 47), -INT8_C( 92), INT8_C( 70), -INT8_C( 95),
|
|
INT8_C( 110), INT8_C( 99), -INT8_C( 84), -INT8_C( 56), INT8_C( 44), -INT8_C( 71), -INT8_C( 111), INT8_C( 50),
|
|
-INT8_C( 45), -INT8_C( 41), INT8_C( 25), INT8_C( 76), -INT8_C( 31), INT8_C( 47), -INT8_C( 103), INT8_C( 93) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 124),
|
|
INT8_C( 114), -INT8_C( 40), -INT8_C( 73), INT8_C( 58), INT8_C( 55), -INT8_C( 20), -INT8_C( 92), -INT8_C( 4),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 110),
|
|
INT8_C( 99), -INT8_C( 84), -INT8_C( 56), INT8_C( 44), -INT8_C( 71), -INT8_C( 111), INT8_C( 50), -INT8_C( 45) } },
|
|
{ { -INT8_C( 95), INT8_C( 113), INT8_C( 20), -INT8_C( 36), -INT8_C( 87), INT8_C( 1), INT8_MIN, -INT8_C( 91),
|
|
INT8_C( 111), INT8_C( 86), -INT8_C( 63), -INT8_C( 97), -INT8_C( 6), INT8_C( 7), INT8_C( 64), INT8_C( 104),
|
|
INT8_C( 106), -INT8_C( 20), INT8_C( 49), -INT8_C( 106), -INT8_C( 91), -INT8_C( 62), -INT8_C( 56), INT8_C( 120),
|
|
-INT8_C( 102), -INT8_C( 31), -INT8_C( 60), INT8_C( 123), INT8_C( 16), INT8_C( 94), -INT8_C( 39), -INT8_C( 78) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 95),
|
|
INT8_C( 113), INT8_C( 20), -INT8_C( 36), -INT8_C( 87), INT8_C( 1), INT8_MIN, -INT8_C( 91), INT8_C( 111),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 106),
|
|
-INT8_C( 20), INT8_C( 49), -INT8_C( 106), -INT8_C( 91), -INT8_C( 62), -INT8_C( 56), INT8_C( 120), -INT8_C( 102) } },
|
|
{ { -INT8_C( 49), -INT8_C( 19), -INT8_C( 114), INT8_C( 120), -INT8_C( 18), INT8_C( 14), INT8_C( 29), INT8_C( 94),
|
|
INT8_C( 100), -INT8_C( 34), -INT8_C( 3), INT8_C( 94), -INT8_C( 27), INT8_C( 61), -INT8_C( 57), INT8_C( 79),
|
|
INT8_C( 42), -INT8_C( 8), -INT8_C( 27), -INT8_C( 49), -INT8_C( 70), -INT8_C( 83), INT8_C( 72), INT8_C( 84),
|
|
-INT8_C( 114), INT8_C( 12), -INT8_C( 48), -INT8_C( 97), INT8_C( 106), -INT8_C( 87), INT8_C( 81), INT8_C( 58) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 49),
|
|
-INT8_C( 19), -INT8_C( 114), INT8_C( 120), -INT8_C( 18), INT8_C( 14), INT8_C( 29), INT8_C( 94), INT8_C( 100),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 42),
|
|
-INT8_C( 8), -INT8_C( 27), -INT8_C( 49), -INT8_C( 70), -INT8_C( 83), INT8_C( 72), INT8_C( 84), -INT8_C( 114) } },
|
|
{ { -INT8_C( 106), -INT8_C( 33), -INT8_C( 78), -INT8_C( 123), -INT8_C( 19), -INT8_C( 48), -INT8_C( 29), INT8_C( 82),
|
|
-INT8_C( 82), -INT8_C( 32), -INT8_C( 80), -INT8_C( 108), INT8_C( 29), INT8_C( 119), -INT8_C( 29), INT8_C( 71),
|
|
INT8_C( 111), -INT8_C( 55), INT8_C( 23), INT8_C( 42), INT8_C( 118), INT8_C( 95), INT8_C( 126), INT8_C( 5),
|
|
INT8_C( 107), INT8_C( 78), -INT8_C( 92), -INT8_C( 42), -INT8_C( 9), -INT8_C( 11), INT8_C( 16), -INT8_C( 114) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 106),
|
|
-INT8_C( 33), -INT8_C( 78), -INT8_C( 123), -INT8_C( 19), -INT8_C( 48), -INT8_C( 29), INT8_C( 82), -INT8_C( 82),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 111),
|
|
-INT8_C( 55), INT8_C( 23), INT8_C( 42), INT8_C( 118), INT8_C( 95), INT8_C( 126), INT8_C( 5), INT8_C( 107) } },
|
|
{ { -INT8_C( 44), -INT8_C( 62), INT8_C( 19), -INT8_C( 63), -INT8_C( 110), -INT8_C( 10), INT8_C( 19), INT8_C( 65),
|
|
-INT8_C( 42), -INT8_C( 60), -INT8_C( 43), -INT8_C( 13), INT8_C( 59), -INT8_C( 72), INT8_C( 59), -INT8_C( 85),
|
|
-INT8_C( 127), INT8_C( 82), -INT8_C( 43), -INT8_C( 8), -INT8_C( 79), INT8_C( 83), -INT8_C( 3), INT8_C( 28),
|
|
-INT8_C( 94), -INT8_C( 95), -INT8_C( 14), -INT8_C( 103), -INT8_C( 106), INT8_C( 2), INT8_C( 39), INT8_C( 106) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 44),
|
|
-INT8_C( 62), INT8_C( 19), -INT8_C( 63), -INT8_C( 110), -INT8_C( 10), INT8_C( 19), INT8_C( 65), -INT8_C( 42),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 127),
|
|
INT8_C( 82), -INT8_C( 43), -INT8_C( 8), -INT8_C( 79), INT8_C( 83), -INT8_C( 3), INT8_C( 28), -INT8_C( 94) } },
|
|
{ { -INT8_C( 59), INT8_C( 58), INT8_C( 43), INT8_C( 87), INT8_C( 48), INT8_C( 63), -INT8_C( 104), INT8_C( 6),
|
|
INT8_C( 3), INT8_C( 109), -INT8_C( 6), INT8_C( 62), INT8_C( 38), INT8_C( 53), -INT8_C( 23), -INT8_C( 89),
|
|
-INT8_C( 121), -INT8_C( 66), -INT8_C( 97), INT8_C( 56), INT8_C( 18), -INT8_C( 100), INT8_C( 84), -INT8_C( 76),
|
|
INT8_C( 61), INT8_C( 71), INT8_C( 77), -INT8_C( 45), INT8_C( 73), INT8_C( 117), INT8_C( 61), INT8_C( 14) },
|
|
{ INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 59),
|
|
INT8_C( 58), INT8_C( 43), INT8_C( 87), INT8_C( 48), INT8_C( 63), -INT8_C( 104), INT8_C( 6), INT8_C( 3),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0), -INT8_C( 121),
|
|
-INT8_C( 66), -INT8_C( 97), INT8_C( 56), INT8_C( 18), -INT8_C( 100), INT8_C( 84), -INT8_C( 76), INT8_C( 61) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi8(test_vec[i].a);
|
|
simde__m256i r = simde_mm256_slli_si256(a, 7);
|
|
simde_test_x86_assert_equal_i8x32(r, simde_x_mm256_loadu_epi8(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_sllv_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i b;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi32(INT32_C( 1355265632), INT32_C( 1126629442), INT32_C( 130687039), INT32_C( -680602946)),
|
|
simde_mm_set_epi32(INT32_C( 29), INT32_C( 12), INT32_C( 25), INT32_C( 28)),
|
|
simde_mm_set_epi32(INT32_C( 0), INT32_C( 1879318528), INT32_C( 2113929216), INT32_C( -536870912)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1737379484), INT32_C( 1883980170), INT32_C( -705882711), INT32_C( 1718253197)),
|
|
simde_mm_set_epi32(INT32_C( 1), INT32_C( 30), INT32_C( 30), INT32_C(-2112542540)),
|
|
simde_mm_set_epi32(INT32_C( -820208328), INT32_MIN , INT32_C( 1073741824), INT32_C( 0)) },
|
|
{ simde_mm_set_epi32(INT32_C( 329097328), INT32_C(-1602739192), INT32_C(-1512309543), INT32_C(-1399203732)),
|
|
simde_mm_set_epi32(INT32_C( 24), INT32_C( 5), INT32_C( 13), INT32_C( 29)),
|
|
simde_mm_set_epi32(INT32_C( 1879048192), INT32_C( 251953408), INT32_C( 2140872704), INT32_MIN ) },
|
|
{ simde_mm_set_epi32(INT32_C( 1241289542), INT32_C( 668450526), INT32_C(-1156837735), INT32_C( 6941002)),
|
|
simde_mm_set_epi32(INT32_C( 1273396233), INT32_C( 1711746946), INT32_C( 28), INT32_C( 28)),
|
|
simde_mm_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C(-1879048192), INT32_C(-1610612736)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1594911645), INT32_C( -201864987), INT32_C(-1345215776), INT32_C(-1388228747)),
|
|
simde_mm_set_epi32(INT32_C( 25), INT32_C( 21), INT32_C( 2), INT32_C( 30)),
|
|
simde_mm_set_epi32(INT32_C( -973078528), INT32_C( 480247808), INT32_C(-1085895808), INT32_C( 1073741824)) },
|
|
{ simde_mm_set_epi32(INT32_C( -2803715), INT32_C( -534114403), INT32_C( -330536019), INT32_C( 1118335664)),
|
|
simde_mm_set_epi32(INT32_C( 10), INT32_C( 5), INT32_C( 21), INT32_C( 30)),
|
|
simde_mm_set_epi32(INT32_C( 1423963136), INT32_C( 88208288), INT32_C( 1973420032), INT32_C( 0)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1957597354), INT32_C( -483301922), INT32_C(-1795584966), INT32_C( 886123627)),
|
|
simde_mm_set_epi32(INT32_C( 7), INT32_C( 6), INT32_C( 22), INT32_C( 29)),
|
|
simde_mm_set_epi32(INT32_C( 1464358144), INT32_C( -866551936), INT32_C( 243269632), INT32_C( 1610612736)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1580825747), INT32_C(-2024732896), INT32_C(-1162095669), INT32_C( 732464901)),
|
|
simde_mm_set_epi32(INT32_C( 19), INT32_C( 12), INT32_C( 30), INT32_C( 2014545570)),
|
|
simde_mm_set_epi32(INT32_C( 459800576), INT32_C( 275906560), INT32_C(-1073741824), INT32_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_sllv_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m128i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sllv_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( -907599535), INT32_C( 1816850761), INT32_C(-1813723808), INT32_C( 1682346964),
|
|
INT32_C( 297464492), INT32_C( 1204833268), INT32_C(-2121860190), INT32_C( 1275339488)),
|
|
simde_mm256_set_epi32(INT32_C( 26), INT32_C( 9), INT32_C( 13), INT32_C( 1136705026),
|
|
INT32_C( 13), INT32_C( 1), INT32_C( 31), INT32_C( 21)),
|
|
simde_mm256_set_epi32(INT32_C( 1140850688), INT32_C(-1780313600), INT32_C(-1733558272), INT32_C( 0),
|
|
INT32_C( 1582661632), INT32_C(-1885300760), INT32_C( 0), INT32_C( 1543503872)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 829211350), INT32_C( -225754766), INT32_C( -55839), INT32_C(-1551786022),
|
|
INT32_C(-1090517055), INT32_C( 692773880), INT32_C(-1952556964), INT32_C( -931315699)),
|
|
simde_mm256_set_epi32(INT32_C( 920320477), INT32_C( 1278238897), INT32_C( 5), INT32_C( 17),
|
|
INT32_C( 14), INT32_C( 27), INT32_C( 10), INT32_C( 5)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( -1786848), INT32_C( 1068761088),
|
|
INT32_C( 32522240), INT32_C(-1073741824), INT32_C( 2036428800), INT32_C( 262668704)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1678489123), INT32_C( 600143956), INT32_C( 1432800149), INT32_C(-1881004909),
|
|
INT32_C( -8633494), INT32_C( 61500000), INT32_C( 1965990355), INT32_C( 563956027)),
|
|
simde_mm256_set_epi32(INT32_C( 23), INT32_C( 9), INT32_C( 1), INT32_C( 16),
|
|
INT32_C( 6), INT32_C( 10), INT32_C( 3), INT32_C( 12)),
|
|
simde_mm256_set_epi32(INT32_C( -293601280), INT32_C(-1963939840), INT32_C(-1429366998), INT32_C( 613613568),
|
|
INT32_C( -552543616), INT32_C(-1448509440), INT32_C(-1451946344), INT32_C( -728518656)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 338504320), INT32_C( 883906167), INT32_C( -890950152), INT32_C( -640473906),
|
|
INT32_C( -675244408), INT32_C( 1260399807), INT32_C( 1576784170), INT32_C( 1082002360)),
|
|
simde_mm256_set_epi32(INT32_C( 28), INT32_C( 10), INT32_C( 31), INT32_C( -121273429),
|
|
INT32_C( 14), INT32_C( 14), INT32_C( 26), INT32_C( 17)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C(-1118184448), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 631373824), INT32_C( 187678720), INT32_C(-1476395008), INT32_C( 393216000)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1222178972), INT32_C( 657678434), INT32_C( 1236396836), INT32_C( -851157565),
|
|
INT32_C( 991812030), INT32_C( -17431900), INT32_C( 1566944363), INT32_C( -95337079)),
|
|
simde_mm256_set_epi32(INT32_C( 31), INT32_C( 30), INT32_C(-1114512709), INT32_C( 1),
|
|
INT32_C( 6), INT32_C( 9), INT32_C( 15), INT32_C( 25)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_MIN , INT32_C( 0), INT32_C(-1702315130),
|
|
INT32_C( -948539520), INT32_C( -335198208), INT32_C( -701136896), INT32_C( 301989888)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1430218987), INT32_C(-1167579987), INT32_C(-1424112663), INT32_C(-2078521852),
|
|
INT32_C( -642033113), INT32_C( 1296873781), INT32_C( 1828392907), INT32_C( -832748013)),
|
|
simde_mm256_set_epi32(INT32_C( 1237301658), INT32_C( 10), INT32_C( 25), INT32_C( 2),
|
|
INT32_C( 1381780746), INT32_C( 7), INT32_C( 0), INT32_C( 9)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C(-1600998400), INT32_C( -771751936), INT32_C( 275847184),
|
|
INT32_C( 0), INT32_C(-1503880576), INT32_C( 1828392907), INT32_C(-1165220352)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1957098634), INT32_C( 2020272894), INT32_C( 274355604), INT32_C(-2023351499),
|
|
INT32_C( 1868935568), INT32_C( -188773630), INT32_C( 1217940242), INT32_C( -149131379)),
|
|
simde_mm256_set_epi32(INT32_C( 31), INT32_C( -296627453), INT32_C( 26), INT32_C( 17),
|
|
INT32_C( 3), INT32_C( 30), INT32_C( 1792285256), INT32_C( 21)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 1342177280), INT32_C( 912916480),
|
|
INT32_C( 2066582656), INT32_MIN , INT32_C( 0), INT32_C( -241172480)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1147857332), INT32_C( 1591168671), INT32_C( 670003425), INT32_C(-2025325767),
|
|
INT32_C( 1644550271), INT32_C( -644639924), INT32_C( -405472702), INT32_C(-1412280243)),
|
|
simde_mm256_set_epi32(INT32_C( 17), INT32_C( -931471145), INT32_C( 903571660), INT32_C( 7),
|
|
INT32_C( 2), INT32_C( 26), INT32_C( 19), INT32_C( 29)),
|
|
simde_mm256_set_epi32(INT32_C( -748158976), INT32_C( 0), INT32_C( 0), INT32_C(-1543660416),
|
|
INT32_C(-2011733508), INT32_C( 805306368), INT32_C( -770703360), INT32_C(-1610612736)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sllv_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_sllv_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i b;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi64x(INT64_C(7972759472039988968), INT64_C(-4018394183250543798)),
|
|
simde_mm_set_epi64x(INT64_C( 0), INT64_C( 14)),
|
|
simde_mm_set_epi64x(INT64_C(7972759472039988968), INT64_C(-940699307519868928)) },
|
|
{ simde_mm_set_epi64x(INT64_C( 758988409686043336), INT64_C(-1495726894487680579)),
|
|
simde_mm_set_epi64x(INT64_C( 3), INT64_C( 44)),
|
|
simde_mm_set_epi64x(INT64_C(6071907277488346688), INT64_C( 332087695960440832)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-2629933388658093644), INT64_C(-289252332092708880)),
|
|
simde_mm_set_epi64x(INT64_C( 10), INT64_C(-3585819117600524220)),
|
|
simde_mm_set_epi64x(INT64_C( 172844775706644480), INT64_C( 0)) },
|
|
{ simde_mm_set_epi64x(INT64_C(4426668050653871600), INT64_C(1900489733297038847)),
|
|
simde_mm_set_epi64x(INT64_C( 12), INT64_C( 1)),
|
|
simde_mm_set_epi64x(INT64_C(-1517088978231164928), INT64_C(3800979466594077694)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-6094836834726644397), INT64_C(-5043635791122646072)),
|
|
simde_mm_set_epi64x(INT64_C( 24), INT64_C( 28)),
|
|
simde_mm_set_epi64x(INT64_C(3516791194124288000), INT64_C(-8765408141610319872)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-5021615519821282876), INT64_C(7147251859786373177)),
|
|
simde_mm_set_epi64x(INT64_C( 19), INT64_C( 38)),
|
|
simde_mm_set_epi64x(INT64_C(1896775987578798080), INT64_C(-5456658230472081408)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-5191993007641480010), INT64_C(-4233139431813518757)),
|
|
simde_mm_set_epi64x(INT64_C( 31), INT64_C( 1)),
|
|
simde_mm_set_epi64x(INT64_C(1701193368639373312), INT64_C(-8466278863627037514)) },
|
|
{ simde_mm_set_epi64x(INT64_C( 546100030060415122), INT64_C(-8171136833646680622)),
|
|
simde_mm_set_epi64x(INT64_C(5414271824693851176), INT64_C(-2835576914550646887)),
|
|
simde_mm_set_epi64x(INT64_C( 0), INT64_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_sllv_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m128i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sllv_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( -91881763986021568), INT64_C( 8531978069693998286),
|
|
INT64_C( 7972759472039988968), INT64_C(-4018394183250543798)),
|
|
simde_mm256_set_epi64x(INT64_C( 3), INT64_C( 44),
|
|
INT64_C( 8), INT64_C( 61)),
|
|
simde_mm256_set_epi64x(INT64_C( -735054111888172544), INT64_C(-8481157707640864768),
|
|
INT64_C(-6562167339523053568), INT64_C( 4611686018427387904)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 766349923467523082), INT64_C(-3585819117600524220),
|
|
INT64_C(-2629933388658093644), INT64_C( -289252332092708880)),
|
|
simde_mm256_set_epi64x(INT64_C( 12), INT64_C( 1),
|
|
INT64_C( 48), INT64_C( 1900489733297038847)),
|
|
simde_mm256_set_epi64x(INT64_C( 3022793992350769152), INT64_C(-7171638235201048440),
|
|
INT64_C( 5887330612880080896), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 3582646241058391448), INT64_C( 5243361490463539228),
|
|
INT64_C(-6094836834726644397), INT64_C(-5043635791122646072)),
|
|
simde_mm256_set_epi64x(INT64_C( 19), INT64_C( 38),
|
|
INT64_C( 4), INT64_C( 57)),
|
|
simde_mm256_set_epi64x(INT64_C(-1282873453157810176), INT64_C( 193662480558325760),
|
|
INT64_C(-5283668987078552272), INT64_C(-8070450532247928832)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3133121661023385633), INT64_C( 86614665799225345),
|
|
INT64_C(-5191993007641480010), INT64_C(-4233139431813518757)),
|
|
simde_mm256_set_epi64x(INT64_C( 5414271824693851176), INT64_C(-2835576914550646887),
|
|
INT64_C( 18), INT64_C( 18)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 0),
|
|
INT64_C( 6302995343711141888), INT64_C( 8680028822435528704)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-8035395454128872003), INT64_C( 7344605666715935137),
|
|
INT64_C(-1365449772765093192), INT64_C( 717291431309989344)),
|
|
simde_mm256_set_epi64x(INT64_C( 55), INT64_C( 11),
|
|
INT64_C( 42), INT64_C( 47)),
|
|
simde_mm256_set_epi64x(INT64_C(-2413929400270585856), INT64_C( 7655985360950593536),
|
|
INT64_C(-3779962646619488256), INT64_C(-1517713074423857152)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-1439191960592432599), INT64_C( 1735866133656124044),
|
|
INT64_C(-3359799274550972684), INT64_C(-8271287930321791084)),
|
|
simde_mm256_set_epi64x(INT64_C( 41), INT64_C( 53),
|
|
INT64_C( 16), INT64_C( 10)),
|
|
simde_mm256_set_epi64x(INT64_C(-7744975299216932864), INT64_C( 5872693914091126784),
|
|
INT64_C(-7467993175337730048), INT64_C(-2743310816829878272)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 6427900085291119138), INT64_C( 5786748734574497216),
|
|
INT64_C( 5043272528786026223), INT64_C( 3596044833449463138)),
|
|
simde_mm256_set_epi64x(INT64_C( 63), INT64_C( 27),
|
|
INT64_C( 24), INT64_C( 24)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C(-8915429143793893376),
|
|
INT64_C(-6557303802913882112), INT64_C(-5103103612012199936)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 4490003779390629369), INT64_C( 8881591764214441368),
|
|
INT64_C(-2584940796434610056), INT64_C( 1109135920291955027)),
|
|
simde_mm256_set_epi64x(INT64_C( 14), INT64_C( 34),
|
|
INT64_C( 5), INT64_C(-3135683893925165551)),
|
|
simde_mm256_set_epi64x(INT64_C(-1393444417620262912), INT64_C(-8636331371352031232),
|
|
INT64_C(-8931129191069315328), INT64_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sllv_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sra_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int64_t count[2];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 21483), -INT16_C( 24863), INT16_C( 31976), -INT16_C( 522), INT16_C( 20226), INT16_C( 14016), INT16_C( 31056), INT16_C( 18579),
|
|
-INT16_C( 2251), INT16_C( 9160), -INT16_C( 13514), INT16_C( 32064), INT16_C( 6594), INT16_C( 27048), INT16_C( 5309), -INT16_C( 11561) },
|
|
{ INT64_C( 3), INT64_C( 1) },
|
|
{ -INT16_C( 2686), -INT16_C( 3108), INT16_C( 3997), -INT16_C( 66), INT16_C( 2528), INT16_C( 1752), INT16_C( 3882), INT16_C( 2322),
|
|
-INT16_C( 282), INT16_C( 1145), -INT16_C( 1690), INT16_C( 4008), INT16_C( 824), INT16_C( 3381), INT16_C( 663), -INT16_C( 1446) } },
|
|
{ { INT16_C( 5879), INT16_C( 11576), INT16_C( 30946), -INT16_C( 23382), INT16_C( 21137), INT16_C( 19982), -INT16_C( 6809), INT16_C( 10017),
|
|
-INT16_C( 28259), -INT16_C( 11568), INT16_C( 30456), -INT16_C( 21240), INT16_C( 30173), -INT16_C( 17229), INT16_C( 373), INT16_C( 27857) },
|
|
{ INT64_C( 1), INT64_C( 2) },
|
|
{ INT16_C( 2939), INT16_C( 5788), INT16_C( 15473), -INT16_C( 11691), INT16_C( 10568), INT16_C( 9991), -INT16_C( 3405), INT16_C( 5008),
|
|
-INT16_C( 14130), -INT16_C( 5784), INT16_C( 15228), -INT16_C( 10620), INT16_C( 15086), -INT16_C( 8615), INT16_C( 186), INT16_C( 13928) } },
|
|
{ { -INT16_C( 2797), INT16_C( 2816), INT16_C( 2411), INT16_C( 18616), INT16_C( 27518), -INT16_C( 3067), -INT16_C( 10644), -INT16_C( 31648),
|
|
-INT16_C( 1313), INT16_C( 24701), INT16_C( 6973), -INT16_C( 11406), -INT16_C( 11577), INT16_C( 22736), -INT16_C( 2732), INT16_C( 26503) },
|
|
{ INT64_C( 0), INT64_C( 5) },
|
|
{ -INT16_C( 2797), INT16_C( 2816), INT16_C( 2411), INT16_C( 18616), INT16_C( 27518), -INT16_C( 3067), -INT16_C( 10644), -INT16_C( 31648),
|
|
-INT16_C( 1313), INT16_C( 24701), INT16_C( 6973), -INT16_C( 11406), -INT16_C( 11577), INT16_C( 22736), -INT16_C( 2732), INT16_C( 26503) } },
|
|
{ { INT16_C( 1117), -INT16_C( 25672), INT16_C( 10783), -INT16_C( 6290), INT16_C( 16380), INT16_C( 20543), -INT16_C( 14796), INT16_C( 7863),
|
|
INT16_C( 10574), -INT16_C( 8589), INT16_C( 4436), -INT16_C( 5395), -INT16_C( 3916), INT16_C( 11756), INT16_C( 29524), -INT16_C( 20091) },
|
|
{ INT64_C( 6), INT64_C( 13) },
|
|
{ INT16_C( 17), -INT16_C( 402), INT16_C( 168), -INT16_C( 99), INT16_C( 255), INT16_C( 320), -INT16_C( 232), INT16_C( 122),
|
|
INT16_C( 165), -INT16_C( 135), INT16_C( 69), -INT16_C( 85), -INT16_C( 62), INT16_C( 183), INT16_C( 461), -INT16_C( 314) } },
|
|
{ { -INT16_C( 16491), -INT16_C( 5712), -INT16_C( 25135), -INT16_C( 31277), -INT16_C( 16242), -INT16_C( 7501), INT16_C( 14387), -INT16_C( 21869),
|
|
-INT16_C( 8074), -INT16_C( 8896), -INT16_C( 16741), -INT16_C( 27327), -INT16_C( 2437), -INT16_C( 317), INT16_C( 3938), -INT16_C( 2096) },
|
|
{ INT64_C( 10), INT64_C( 8) },
|
|
{ -INT16_C( 17), -INT16_C( 6), -INT16_C( 25), -INT16_C( 31), -INT16_C( 16), -INT16_C( 8), INT16_C( 14), -INT16_C( 22),
|
|
-INT16_C( 8), -INT16_C( 9), -INT16_C( 17), -INT16_C( 27), -INT16_C( 3), -INT16_C( 1), INT16_C( 3), -INT16_C( 3) } },
|
|
{ { -INT16_C( 28159), -INT16_C( 25500), -INT16_C( 23216), -INT16_C( 13519), -INT16_C( 2917), -INT16_C( 567), -INT16_C( 26365), -INT16_C( 11787),
|
|
-INT16_C( 10727), INT16_C( 14193), -INT16_C( 26998), -INT16_C( 30), INT16_C( 28782), INT16_C( 32422), -INT16_C( 1903), -INT16_C( 28155) },
|
|
{ INT64_C( 10), INT64_C( 2) },
|
|
{ -INT16_C( 28), -INT16_C( 25), -INT16_C( 23), -INT16_C( 14), -INT16_C( 3), -INT16_C( 1), -INT16_C( 26), -INT16_C( 12),
|
|
-INT16_C( 11), INT16_C( 13), -INT16_C( 27), -INT16_C( 1), INT16_C( 28), INT16_C( 31), -INT16_C( 2), -INT16_C( 28) } },
|
|
{ { -INT16_C( 26510), -INT16_C( 680), INT16_C( 15150), -INT16_C( 25348), -INT16_C( 23893), INT16_C( 15387), INT16_C( 8346), INT16_C( 9422),
|
|
-INT16_C( 887), -INT16_C( 26626), -INT16_C( 23717), -INT16_C( 20927), -INT16_C( 5870), INT16_C( 6660), INT16_C( 11141), -INT16_C( 1989) },
|
|
{ INT64_C( 7), INT64_C( 5) },
|
|
{ -INT16_C( 208), -INT16_C( 6), INT16_C( 118), -INT16_C( 199), -INT16_C( 187), INT16_C( 120), INT16_C( 65), INT16_C( 73),
|
|
-INT16_C( 7), -INT16_C( 209), -INT16_C( 186), -INT16_C( 164), -INT16_C( 46), INT16_C( 52), INT16_C( 87), -INT16_C( 16) } },
|
|
{ { INT16_C( 20864), -INT16_C( 9238), INT16_C( 11508), INT16_C( 1673), -INT16_C( 29419), -INT16_C( 26080), INT16_C( 23736), INT16_C( 31890),
|
|
-INT16_C( 30736), -INT16_C( 16529), -INT16_C( 392), INT16_C( 3129), -INT16_C( 4184), INT16_C( 29242), -INT16_C( 29581), -INT16_C( 3131) },
|
|
{ INT64_C( 15), INT64_C( 4) },
|
|
{ INT16_C( 0), -INT16_C( 1), INT16_C( 0), INT16_C( 0), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), INT16_C( 0),
|
|
-INT16_C( 1), -INT16_C( 1), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), INT16_C( 0), -INT16_C( 1), -INT16_C( 1) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_sra_epi16(a, count);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sra_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int64_t count[2];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 576905387), INT32_C( 1043904660), INT32_C( 295463941), INT32_C( 566319288), -INT32_C( 368870807), -INT32_C( 483175452), -INT32_C( 12265399), -INT32_C( 1827624387) },
|
|
{ INT64_C( 6), INT64_C( 15) },
|
|
{ -INT32_C( 9014147), INT32_C( 16311010), INT32_C( 4616624), INT32_C( 8848738), -INT32_C( 5763607), -INT32_C( 7549617), -INT32_C( 191647), -INT32_C( 28556632) } },
|
|
{ { -INT32_C( 1645940039), -INT32_C( 1887430843), INT32_C( 764331248), INT32_C( 952147822), -INT32_C( 1281937075), -INT32_C( 283233318), -INT32_C( 37905556), -INT32_C( 1812484902) },
|
|
{ INT64_C( 14), INT64_C( 14) },
|
|
{ -INT32_C( 100461), -INT32_C( 115200), INT32_C( 46651), INT32_C( 58114), -INT32_C( 78244), -INT32_C( 17288), -INT32_C( 2314), -INT32_C( 110626) } },
|
|
{ { -INT32_C( 593448446), INT32_C( 1389150181), INT32_C( 877627738), -INT32_C( 741914827), INT32_C( 381155107), INT32_C( 469379751), -INT32_C( 855766228), -INT32_C( 541451812) },
|
|
{ INT64_C( 7), INT64_C( 11) },
|
|
{ -INT32_C( 4636316), INT32_C( 10852735), INT32_C( 6856466), -INT32_C( 5796210), INT32_C( 2977774), INT32_C( 3667029), -INT32_C( 6685674), -INT32_C( 4230093) } },
|
|
{ { INT32_C( 265474151), INT32_C( 657116411), -INT32_C( 1259132713), INT32_C( 211004737), INT32_C( 566054408), -INT32_C( 426393642), -INT32_C( 1439941103), INT32_C( 359024046) },
|
|
{ INT64_C( 13), INT64_C( 14) },
|
|
{ INT32_C( 32406), INT32_C( 80214), -INT32_C( 153703), INT32_C( 25757), INT32_C( 69098), -INT32_C( 52051), -INT32_C( 175775), INT32_C( 43826) } },
|
|
{ { INT32_C( 1208124018), INT32_C( 1395627842), -INT32_C( 2080482347), -INT32_C( 1248238432), -INT32_C( 1547256419), -INT32_C( 2071921396), INT32_C( 20779304), -INT32_C( 1478426059) },
|
|
{ INT64_C( 5), INT64_C( 1) },
|
|
{ INT32_C( 37753875), INT32_C( 43613370), -INT32_C( 65015074), -INT32_C( 39007451), -INT32_C( 48351764), -INT32_C( 64747544), INT32_C( 649353), -INT32_C( 46200815) } },
|
|
{ { INT32_C( 935171370), -INT32_C( 1145356909), -INT32_C( 2084767666), INT32_C( 2133565178), -INT32_C( 62514303), -INT32_C( 1269997254), -INT32_C( 154263175), -INT32_C( 1206805106) },
|
|
{ INT64_C( 5), INT64_C( 5) },
|
|
{ INT32_C( 29224105), -INT32_C( 35792404), -INT32_C( 65148990), INT32_C( 66673911), -INT32_C( 1953572), -INT32_C( 39687415), -INT32_C( 4820725), -INT32_C( 37712660) } },
|
|
{ { INT32_C( 1582981924), INT32_C( 1024632772), INT32_C( 1446305992), -INT32_C( 1341241987), INT32_C( 527891987), INT32_C( 1266350248), INT32_C( 317216822), -INT32_C( 2056321951) },
|
|
{ INT64_C( 3), INT64_C( 15) },
|
|
{ INT32_C( 197872740), INT32_C( 128079096), INT32_C( 180788249), -INT32_C( 167655249), INT32_C( 65986498), INT32_C( 158293781), INT32_C( 39652102), -INT32_C( 257040244) } },
|
|
{ { INT32_C( 1125480859), -INT32_C( 1483829391), INT32_C( 1220114151), -INT32_C( 489870981), INT32_C( 1661907186), INT32_C( 2057009061), -INT32_C( 154392044), INT32_C( 1659621319) },
|
|
{ INT64_C( 7), INT64_C( 3) },
|
|
{ INT32_C( 8792819), -INT32_C( 11592418), INT32_C( 9532141), -INT32_C( 3827118), INT32_C( 12983649), INT32_C( 16070383), -INT32_C( 1206188), INT32_C( 12965791) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_sra_epi32(a, count);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srai_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r1;
|
|
simde__m256i r3;
|
|
simde__m256i r5;
|
|
simde__m256i r11;
|
|
simde__m256i r13;
|
|
simde__m256i r15;
|
|
simde__m256i r16;
|
|
simde__m256i r24;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 15196), INT16_C(-26519), INT16_C( 2034), INT16_C( 3767),
|
|
INT16_C( 20039), INT16_C( 24955), INT16_C( -829), INT16_C( 24412),
|
|
INT16_C( 5644), INT16_C(-14035), INT16_C( 32481), INT16_C(-26971),
|
|
INT16_C(-13019), INT16_C(-23412), INT16_C(-14153), INT16_C(-22092)),
|
|
simde_mm256_set_epi16(INT16_C( 7598), INT16_C(-13260), INT16_C( 1017), INT16_C( 1883),
|
|
INT16_C( 10019), INT16_C( 12477), INT16_C( -415), INT16_C( 12206),
|
|
INT16_C( 2822), INT16_C( -7018), INT16_C( 16240), INT16_C(-13486),
|
|
INT16_C( -6510), INT16_C(-11706), INT16_C( -7077), INT16_C(-11046)),
|
|
simde_mm256_set_epi16(INT16_C( 1899), INT16_C( -3315), INT16_C( 254), INT16_C( 470),
|
|
INT16_C( 2504), INT16_C( 3119), INT16_C( -104), INT16_C( 3051),
|
|
INT16_C( 705), INT16_C( -1755), INT16_C( 4060), INT16_C( -3372),
|
|
INT16_C( -1628), INT16_C( -2927), INT16_C( -1770), INT16_C( -2762)),
|
|
simde_mm256_set_epi16(INT16_C( 474), INT16_C( -829), INT16_C( 63), INT16_C( 117),
|
|
INT16_C( 626), INT16_C( 779), INT16_C( -26), INT16_C( 762),
|
|
INT16_C( 176), INT16_C( -439), INT16_C( 1015), INT16_C( -843),
|
|
INT16_C( -407), INT16_C( -732), INT16_C( -443), INT16_C( -691)),
|
|
simde_mm256_set_epi16(INT16_C( 7), INT16_C( -13), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 9), INT16_C( 12), INT16_C( -1), INT16_C( 11),
|
|
INT16_C( 2), INT16_C( -7), INT16_C( 15), INT16_C( -14),
|
|
INT16_C( -7), INT16_C( -12), INT16_C( -7), INT16_C( -11)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( -4), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 2), INT16_C( 3), INT16_C( -1), INT16_C( 2),
|
|
INT16_C( 0), INT16_C( -2), INT16_C( 3), INT16_C( -4),
|
|
INT16_C( -2), INT16_C( -3), INT16_C( -2), INT16_C( -3)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 21167), INT16_C( 19648), INT16_C( 2514), INT16_C( 5742),
|
|
INT16_C( 10728), INT16_C( -8816), INT16_C( 21963), INT16_C( 23917),
|
|
INT16_C( 14277), INT16_C(-22184), INT16_C( 6487), INT16_C( -1330),
|
|
INT16_C( 12982), INT16_C(-12306), INT16_C( -2383), INT16_C( -871)),
|
|
simde_mm256_set_epi16(INT16_C( 10583), INT16_C( 9824), INT16_C( 1257), INT16_C( 2871),
|
|
INT16_C( 5364), INT16_C( -4408), INT16_C( 10981), INT16_C( 11958),
|
|
INT16_C( 7138), INT16_C(-11092), INT16_C( 3243), INT16_C( -665),
|
|
INT16_C( 6491), INT16_C( -6153), INT16_C( -1192), INT16_C( -436)),
|
|
simde_mm256_set_epi16(INT16_C( 2645), INT16_C( 2456), INT16_C( 314), INT16_C( 717),
|
|
INT16_C( 1341), INT16_C( -1102), INT16_C( 2745), INT16_C( 2989),
|
|
INT16_C( 1784), INT16_C( -2773), INT16_C( 810), INT16_C( -167),
|
|
INT16_C( 1622), INT16_C( -1539), INT16_C( -298), INT16_C( -109)),
|
|
simde_mm256_set_epi16(INT16_C( 661), INT16_C( 614), INT16_C( 78), INT16_C( 179),
|
|
INT16_C( 335), INT16_C( -276), INT16_C( 686), INT16_C( 747),
|
|
INT16_C( 446), INT16_C( -694), INT16_C( 202), INT16_C( -42),
|
|
INT16_C( 405), INT16_C( -385), INT16_C( -75), INT16_C( -28)),
|
|
simde_mm256_set_epi16(INT16_C( 10), INT16_C( 9), INT16_C( 1), INT16_C( 2),
|
|
INT16_C( 5), INT16_C( -5), INT16_C( 10), INT16_C( 11),
|
|
INT16_C( 6), INT16_C( -11), INT16_C( 3), INT16_C( -1),
|
|
INT16_C( 6), INT16_C( -7), INT16_C( -2), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 2), INT16_C( 2), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( -2), INT16_C( 2), INT16_C( 2),
|
|
INT16_C( 1), INT16_C( -3), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 1), INT16_C( -2), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 2621), INT16_C(-27438), INT16_C(-25117), INT16_C(-30861),
|
|
INT16_C( 13622), INT16_C( 18856), INT16_C( 6824), INT16_C(-32482),
|
|
INT16_C(-22803), INT16_C( -6837), INT16_C( -6446), INT16_C(-26335),
|
|
INT16_C(-21911), INT16_C(-30376), INT16_C( -8706), INT16_C( -3742)),
|
|
simde_mm256_set_epi16(INT16_C( 1310), INT16_C(-13719), INT16_C(-12559), INT16_C(-15431),
|
|
INT16_C( 6811), INT16_C( 9428), INT16_C( 3412), INT16_C(-16241),
|
|
INT16_C(-11402), INT16_C( -3419), INT16_C( -3223), INT16_C(-13168),
|
|
INT16_C(-10956), INT16_C(-15188), INT16_C( -4353), INT16_C( -1871)),
|
|
simde_mm256_set_epi16(INT16_C( 327), INT16_C( -3430), INT16_C( -3140), INT16_C( -3858),
|
|
INT16_C( 1702), INT16_C( 2357), INT16_C( 853), INT16_C( -4061),
|
|
INT16_C( -2851), INT16_C( -855), INT16_C( -806), INT16_C( -3292),
|
|
INT16_C( -2739), INT16_C( -3797), INT16_C( -1089), INT16_C( -468)),
|
|
simde_mm256_set_epi16(INT16_C( 81), INT16_C( -858), INT16_C( -785), INT16_C( -965),
|
|
INT16_C( 425), INT16_C( 589), INT16_C( 213), INT16_C( -1016),
|
|
INT16_C( -713), INT16_C( -214), INT16_C( -202), INT16_C( -823),
|
|
INT16_C( -685), INT16_C( -950), INT16_C( -273), INT16_C( -117)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( -14), INT16_C( -13), INT16_C( -16),
|
|
INT16_C( 6), INT16_C( 9), INT16_C( 3), INT16_C( -16),
|
|
INT16_C( -12), INT16_C( -4), INT16_C( -4), INT16_C( -13),
|
|
INT16_C( -11), INT16_C( -15), INT16_C( -5), INT16_C( -2)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -4), INT16_C( -4), INT16_C( -4),
|
|
INT16_C( 1), INT16_C( 2), INT16_C( 0), INT16_C( -4),
|
|
INT16_C( -3), INT16_C( -1), INT16_C( -1), INT16_C( -4),
|
|
INT16_C( -3), INT16_C( -4), INT16_C( -2), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-20091), INT16_C( -5864), INT16_C( -1105), INT16_C( 9308),
|
|
INT16_C( 14226), INT16_C( 20343), INT16_C( -8516), INT16_C( -8308),
|
|
INT16_C( 4189), INT16_C(-13071), INT16_C( -7355), INT16_C(-23705),
|
|
INT16_C( 28782), INT16_C( 17354), INT16_C(-20377), INT16_C( 15337)),
|
|
simde_mm256_set_epi16(INT16_C(-10046), INT16_C( -2932), INT16_C( -553), INT16_C( 4654),
|
|
INT16_C( 7113), INT16_C( 10171), INT16_C( -4258), INT16_C( -4154),
|
|
INT16_C( 2094), INT16_C( -6536), INT16_C( -3678), INT16_C(-11853),
|
|
INT16_C( 14391), INT16_C( 8677), INT16_C(-10189), INT16_C( 7668)),
|
|
simde_mm256_set_epi16(INT16_C( -2512), INT16_C( -733), INT16_C( -139), INT16_C( 1163),
|
|
INT16_C( 1778), INT16_C( 2542), INT16_C( -1065), INT16_C( -1039),
|
|
INT16_C( 523), INT16_C( -1634), INT16_C( -920), INT16_C( -2964),
|
|
INT16_C( 3597), INT16_C( 2169), INT16_C( -2548), INT16_C( 1917)),
|
|
simde_mm256_set_epi16(INT16_C( -628), INT16_C( -184), INT16_C( -35), INT16_C( 290),
|
|
INT16_C( 444), INT16_C( 635), INT16_C( -267), INT16_C( -260),
|
|
INT16_C( 130), INT16_C( -409), INT16_C( -230), INT16_C( -741),
|
|
INT16_C( 899), INT16_C( 542), INT16_C( -637), INT16_C( 479)),
|
|
simde_mm256_set_epi16(INT16_C( -10), INT16_C( -3), INT16_C( -1), INT16_C( 4),
|
|
INT16_C( 6), INT16_C( 9), INT16_C( -5), INT16_C( -5),
|
|
INT16_C( 2), INT16_C( -7), INT16_C( -4), INT16_C( -12),
|
|
INT16_C( 14), INT16_C( 8), INT16_C( -10), INT16_C( 7)),
|
|
simde_mm256_set_epi16(INT16_C( -3), INT16_C( -1), INT16_C( -1), INT16_C( 1),
|
|
INT16_C( 1), INT16_C( 2), INT16_C( -2), INT16_C( -2),
|
|
INT16_C( 0), INT16_C( -2), INT16_C( -1), INT16_C( -3),
|
|
INT16_C( 3), INT16_C( 2), INT16_C( -3), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( -1), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-28903), INT16_C(-30383), INT16_C(-20860), INT16_C( 22246),
|
|
INT16_C( 20775), INT16_C(-18600), INT16_C(-18675), INT16_C( 2687),
|
|
INT16_C( 19939), INT16_C(-28692), INT16_C( -6959), INT16_C(-28677),
|
|
INT16_C( 8943), INT16_C(-16990), INT16_C( 17649), INT16_C(-10824)),
|
|
simde_mm256_set_epi16(INT16_C(-14452), INT16_C(-15192), INT16_C(-10430), INT16_C( 11123),
|
|
INT16_C( 10387), INT16_C( -9300), INT16_C( -9338), INT16_C( 1343),
|
|
INT16_C( 9969), INT16_C(-14346), INT16_C( -3480), INT16_C(-14339),
|
|
INT16_C( 4471), INT16_C( -8495), INT16_C( 8824), INT16_C( -5412)),
|
|
simde_mm256_set_epi16(INT16_C( -3613), INT16_C( -3798), INT16_C( -2608), INT16_C( 2780),
|
|
INT16_C( 2596), INT16_C( -2325), INT16_C( -2335), INT16_C( 335),
|
|
INT16_C( 2492), INT16_C( -3587), INT16_C( -870), INT16_C( -3585),
|
|
INT16_C( 1117), INT16_C( -2124), INT16_C( 2206), INT16_C( -1353)),
|
|
simde_mm256_set_epi16(INT16_C( -904), INT16_C( -950), INT16_C( -652), INT16_C( 695),
|
|
INT16_C( 649), INT16_C( -582), INT16_C( -584), INT16_C( 83),
|
|
INT16_C( 623), INT16_C( -897), INT16_C( -218), INT16_C( -897),
|
|
INT16_C( 279), INT16_C( -531), INT16_C( 551), INT16_C( -339)),
|
|
simde_mm256_set_epi16(INT16_C( -15), INT16_C( -15), INT16_C( -11), INT16_C( 10),
|
|
INT16_C( 10), INT16_C( -10), INT16_C( -10), INT16_C( 1),
|
|
INT16_C( 9), INT16_C( -15), INT16_C( -4), INT16_C( -15),
|
|
INT16_C( 4), INT16_C( -9), INT16_C( 8), INT16_C( -6)),
|
|
simde_mm256_set_epi16(INT16_C( -4), INT16_C( -4), INT16_C( -3), INT16_C( 2),
|
|
INT16_C( 2), INT16_C( -3), INT16_C( -3), INT16_C( 0),
|
|
INT16_C( 2), INT16_C( -4), INT16_C( -1), INT16_C( -4),
|
|
INT16_C( 1), INT16_C( -3), INT16_C( 2), INT16_C( -2)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1)),
|
|
simde_mm256_set_epi16(INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 30610), INT16_C( 28790), INT16_C( 937), INT16_C( 9694),
|
|
INT16_C(-17401), INT16_C(-32454), INT16_C(-25761), INT16_C( 3568),
|
|
INT16_C( 18158), INT16_C(-22052), INT16_C( 13442), INT16_C( 1933),
|
|
INT16_C( 24532), INT16_C(-29992), INT16_C( -2718), INT16_C( 141)),
|
|
simde_mm256_set_epi16(INT16_C( 15305), INT16_C( 14395), INT16_C( 468), INT16_C( 4847),
|
|
INT16_C( -8701), INT16_C(-16227), INT16_C(-12881), INT16_C( 1784),
|
|
INT16_C( 9079), INT16_C(-11026), INT16_C( 6721), INT16_C( 966),
|
|
INT16_C( 12266), INT16_C(-14996), INT16_C( -1359), INT16_C( 70)),
|
|
simde_mm256_set_epi16(INT16_C( 3826), INT16_C( 3598), INT16_C( 117), INT16_C( 1211),
|
|
INT16_C( -2176), INT16_C( -4057), INT16_C( -3221), INT16_C( 446),
|
|
INT16_C( 2269), INT16_C( -2757), INT16_C( 1680), INT16_C( 241),
|
|
INT16_C( 3066), INT16_C( -3749), INT16_C( -340), INT16_C( 17)),
|
|
simde_mm256_set_epi16(INT16_C( 956), INT16_C( 899), INT16_C( 29), INT16_C( 302),
|
|
INT16_C( -544), INT16_C( -1015), INT16_C( -806), INT16_C( 111),
|
|
INT16_C( 567), INT16_C( -690), INT16_C( 420), INT16_C( 60),
|
|
INT16_C( 766), INT16_C( -938), INT16_C( -85), INT16_C( 4)),
|
|
simde_mm256_set_epi16(INT16_C( 14), INT16_C( 14), INT16_C( 0), INT16_C( 4),
|
|
INT16_C( -9), INT16_C( -16), INT16_C( -13), INT16_C( 1),
|
|
INT16_C( 8), INT16_C( -11), INT16_C( 6), INT16_C( 0),
|
|
INT16_C( 11), INT16_C( -15), INT16_C( -2), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 3), INT16_C( 3), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( -3), INT16_C( -4), INT16_C( -4), INT16_C( 0),
|
|
INT16_C( 2), INT16_C( -3), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 2), INT16_C( -4), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 15336), INT16_C( -3979), INT16_C(-24197), INT16_C(-21101),
|
|
INT16_C(-22510), INT16_C( 14686), INT16_C( 22575), INT16_C( 6813),
|
|
INT16_C( 16551), INT16_C(-31832), INT16_C( 12767), INT16_C(-32161),
|
|
INT16_C( 11852), INT16_C( -8546), INT16_C(-23397), INT16_C( 31365)),
|
|
simde_mm256_set_epi16(INT16_C( 7668), INT16_C( -1990), INT16_C(-12099), INT16_C(-10551),
|
|
INT16_C(-11255), INT16_C( 7343), INT16_C( 11287), INT16_C( 3406),
|
|
INT16_C( 8275), INT16_C(-15916), INT16_C( 6383), INT16_C(-16081),
|
|
INT16_C( 5926), INT16_C( -4273), INT16_C(-11699), INT16_C( 15682)),
|
|
simde_mm256_set_epi16(INT16_C( 1917), INT16_C( -498), INT16_C( -3025), INT16_C( -2638),
|
|
INT16_C( -2814), INT16_C( 1835), INT16_C( 2821), INT16_C( 851),
|
|
INT16_C( 2068), INT16_C( -3979), INT16_C( 1595), INT16_C( -4021),
|
|
INT16_C( 1481), INT16_C( -1069), INT16_C( -2925), INT16_C( 3920)),
|
|
simde_mm256_set_epi16(INT16_C( 479), INT16_C( -125), INT16_C( -757), INT16_C( -660),
|
|
INT16_C( -704), INT16_C( 458), INT16_C( 705), INT16_C( 212),
|
|
INT16_C( 517), INT16_C( -995), INT16_C( 398), INT16_C( -1006),
|
|
INT16_C( 370), INT16_C( -268), INT16_C( -732), INT16_C( 980)),
|
|
simde_mm256_set_epi16(INT16_C( 7), INT16_C( -2), INT16_C( -12), INT16_C( -11),
|
|
INT16_C( -11), INT16_C( 7), INT16_C( 11), INT16_C( 3),
|
|
INT16_C( 8), INT16_C( -16), INT16_C( 6), INT16_C( -16),
|
|
INT16_C( 5), INT16_C( -5), INT16_C( -12), INT16_C( 15)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( -1), INT16_C( -3), INT16_C( -3),
|
|
INT16_C( -3), INT16_C( 1), INT16_C( 2), INT16_C( 0),
|
|
INT16_C( 2), INT16_C( -4), INT16_C( 1), INT16_C( -4),
|
|
INT16_C( 1), INT16_C( -2), INT16_C( -3), INT16_C( 3)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( 0), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 10638), INT16_C(-17208), INT16_C( -3442), INT16_C( 22577),
|
|
INT16_C(-18388), INT16_C( 22101), INT16_C( 9949), INT16_C( 9978),
|
|
INT16_C(-20527), INT16_C( -7864), INT16_C(-12143), INT16_C( -3713),
|
|
INT16_C( 32473), INT16_C( -9341), INT16_C( -1436), INT16_C( 17837)),
|
|
simde_mm256_set_epi16(INT16_C( 5319), INT16_C( -8604), INT16_C( -1721), INT16_C( 11288),
|
|
INT16_C( -9194), INT16_C( 11050), INT16_C( 4974), INT16_C( 4989),
|
|
INT16_C(-10264), INT16_C( -3932), INT16_C( -6072), INT16_C( -1857),
|
|
INT16_C( 16236), INT16_C( -4671), INT16_C( -718), INT16_C( 8918)),
|
|
simde_mm256_set_epi16(INT16_C( 1329), INT16_C( -2151), INT16_C( -431), INT16_C( 2822),
|
|
INT16_C( -2299), INT16_C( 2762), INT16_C( 1243), INT16_C( 1247),
|
|
INT16_C( -2566), INT16_C( -983), INT16_C( -1518), INT16_C( -465),
|
|
INT16_C( 4059), INT16_C( -1168), INT16_C( -180), INT16_C( 2229)),
|
|
simde_mm256_set_epi16(INT16_C( 332), INT16_C( -538), INT16_C( -108), INT16_C( 705),
|
|
INT16_C( -575), INT16_C( 690), INT16_C( 310), INT16_C( 311),
|
|
INT16_C( -642), INT16_C( -246), INT16_C( -380), INT16_C( -117),
|
|
INT16_C( 1014), INT16_C( -292), INT16_C( -45), INT16_C( 557)),
|
|
simde_mm256_set_epi16(INT16_C( 5), INT16_C( -9), INT16_C( -2), INT16_C( 11),
|
|
INT16_C( -9), INT16_C( 10), INT16_C( 4), INT16_C( 4),
|
|
INT16_C( -11), INT16_C( -4), INT16_C( -6), INT16_C( -2),
|
|
INT16_C( 15), INT16_C( -5), INT16_C( -1), INT16_C( 8)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( -3), INT16_C( -1), INT16_C( 2),
|
|
INT16_C( -3), INT16_C( 2), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( -3), INT16_C( -1), INT16_C( -2), INT16_C( -1),
|
|
INT16_C( 3), INT16_C( -2), INT16_C( -1), INT16_C( 2)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( -1), INT16_C( -1), INT16_C( -1), INT16_C( -1),
|
|
INT16_C( 0), INT16_C( -1), INT16_C( -1), INT16_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r;
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 0);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].a);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 1);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r1);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 3);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r3);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 5);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r5);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 11);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r11);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 13);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r13);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 15);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r15);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 16);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r16);
|
|
r = simde_mm256_srai_epi16(test_vec[i].a, 24);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r24);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srai_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r1;
|
|
simde__m256i r3;
|
|
simde__m256i r5;
|
|
simde__m256i r11;
|
|
simde__m256i r23;
|
|
simde__m256i r31;
|
|
simde__m256i r32;
|
|
simde__m256i r55;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 995924073), INT32_C( 133303991), INT32_C( 1313300859), INT32_C( -54304932),
|
|
INT32_C( 369936685), INT32_C( 2128713381), INT32_C( -853171060), INT32_C( -927487564)),
|
|
simde_mm256_set_epi32(INT32_C( 497962036), INT32_C( 66651995), INT32_C( 656650429), INT32_C( -27152466),
|
|
INT32_C( 184968342), INT32_C( 1064356690), INT32_C( -426585530), INT32_C( -463743782)),
|
|
simde_mm256_set_epi32(INT32_C( 124490509), INT32_C( 16662998), INT32_C( 164162607), INT32_C( -6788117),
|
|
INT32_C( 46242085), INT32_C( 266089172), INT32_C( -106646383), INT32_C( -115935946)),
|
|
simde_mm256_set_epi32(INT32_C( 31122627), INT32_C( 4165749), INT32_C( 41040651), INT32_C( -1697030),
|
|
INT32_C( 11560521), INT32_C( 66522293), INT32_C( -26661596), INT32_C( -28983987)),
|
|
simde_mm256_set_epi32(INT32_C( 486291), INT32_C( 65089), INT32_C( 641260), INT32_C( -26517),
|
|
INT32_C( 180633), INT32_C( 1039410), INT32_C( -416588), INT32_C( -452875)),
|
|
simde_mm256_set_epi32(INT32_C( 118), INT32_C( 15), INT32_C( 156), INT32_C( -7),
|
|
INT32_C( 44), INT32_C( 253), INT32_C( -102), INT32_C( -111)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1387220160), INT32_C( 164763246), INT32_C( 703126928), INT32_C( 1439391085),
|
|
INT32_C( 935700824), INT32_C( 425196238), INT32_C( 850841582), INT32_C( -156107623)),
|
|
simde_mm256_set_epi32(INT32_C( 693610080), INT32_C( 82381623), INT32_C( 351563464), INT32_C( 719695542),
|
|
INT32_C( 467850412), INT32_C( 212598119), INT32_C( 425420791), INT32_C( -78053812)),
|
|
simde_mm256_set_epi32(INT32_C( 173402520), INT32_C( 20595405), INT32_C( 87890866), INT32_C( 179923885),
|
|
INT32_C( 116962603), INT32_C( 53149529), INT32_C( 106355197), INT32_C( -19513453)),
|
|
simde_mm256_set_epi32(INT32_C( 43350630), INT32_C( 5148851), INT32_C( 21972716), INT32_C( 44980971),
|
|
INT32_C( 29240650), INT32_C( 13287382), INT32_C( 26588799), INT32_C( -4878364)),
|
|
simde_mm256_set_epi32(INT32_C( 677353), INT32_C( 80450), INT32_C( 343323), INT32_C( 702827),
|
|
INT32_C( 456885), INT32_C( 207615), INT32_C( 415449), INT32_C( -76225)),
|
|
simde_mm256_set_epi32(INT32_C( 165), INT32_C( 19), INT32_C( 83), INT32_C( 171),
|
|
INT32_C( 111), INT32_C( 50), INT32_C( 101), INT32_C( -19)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 171807954), INT32_C(-1646033037), INT32_C( 892750248), INT32_C( 447250718),
|
|
INT32_C(-1494358709), INT32_C( -422405855), INT32_C(-1435924136), INT32_C( -570494622)),
|
|
simde_mm256_set_epi32(INT32_C( 85903977), INT32_C( -823016519), INT32_C( 446375124), INT32_C( 223625359),
|
|
INT32_C( -747179355), INT32_C( -211202928), INT32_C( -717962068), INT32_C( -285247311)),
|
|
simde_mm256_set_epi32(INT32_C( 21475994), INT32_C( -205754130), INT32_C( 111593781), INT32_C( 55906339),
|
|
INT32_C( -186794839), INT32_C( -52800732), INT32_C( -179490517), INT32_C( -71311828)),
|
|
simde_mm256_set_epi32(INT32_C( 5368998), INT32_C( -51438533), INT32_C( 27898445), INT32_C( 13976584),
|
|
INT32_C( -46698710), INT32_C( -13200183), INT32_C( -44872630), INT32_C( -17827957)),
|
|
simde_mm256_set_epi32(INT32_C( 83890), INT32_C( -803728), INT32_C( 435913), INT32_C( 218384),
|
|
INT32_C( -729668), INT32_C( -206253), INT32_C( -701135), INT32_C( -278562)),
|
|
simde_mm256_set_epi32(INT32_C( 20), INT32_C( -197), INT32_C( 106), INT32_C( 53),
|
|
INT32_C( -179), INT32_C( -51), INT32_C( -172), INT32_C( -69)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( -1), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( -1), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( -1), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1316624104), INT32_C( -72407972), INT32_C( 932335479), INT32_C( -558047348),
|
|
INT32_C( 274582769), INT32_C( -481975449), INT32_C( 1886274506), INT32_C(-1335411735)),
|
|
simde_mm256_set_epi32(INT32_C( -658312052), INT32_C( -36203986), INT32_C( 466167739), INT32_C( -279023674),
|
|
INT32_C( 137291384), INT32_C( -240987725), INT32_C( 943137253), INT32_C( -667705868)),
|
|
simde_mm256_set_epi32(INT32_C( -164578013), INT32_C( -9050997), INT32_C( 116541934), INT32_C( -69755919),
|
|
INT32_C( 34322846), INT32_C( -60246932), INT32_C( 235784313), INT32_C( -166926467)),
|
|
simde_mm256_set_epi32(INT32_C( -41144504), INT32_C( -2262750), INT32_C( 29135483), INT32_C( -17438980),
|
|
INT32_C( 8580711), INT32_C( -15061733), INT32_C( 58946078), INT32_C( -41731617)),
|
|
simde_mm256_set_epi32(INT32_C( -642883), INT32_C( -35356), INT32_C( 455241), INT32_C( -272485),
|
|
INT32_C( 134073), INT32_C( -235340), INT32_C( 921032), INT32_C( -652057)),
|
|
simde_mm256_set_epi32(INT32_C( -157), INT32_C( -9), INT32_C( 111), INT32_C( -67),
|
|
INT32_C( 32), INT32_C( -58), INT32_C( 224), INT32_C( -160)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1894151855), INT32_C(-1367058714), INT32_C( 1361557336), INT32_C(-1223882113),
|
|
INT32_C( 1306759148), INT32_C( -456028165), INT32_C( 586136994), INT32_C( 1156699576)),
|
|
simde_mm256_set_epi32(INT32_C( -947075928), INT32_C( -683529357), INT32_C( 680778668), INT32_C( -611941057),
|
|
INT32_C( 653379574), INT32_C( -228014083), INT32_C( 293068497), INT32_C( 578349788)),
|
|
simde_mm256_set_epi32(INT32_C( -236768982), INT32_C( -170882340), INT32_C( 170194667), INT32_C( -152985265),
|
|
INT32_C( 163344893), INT32_C( -57003521), INT32_C( 73267124), INT32_C( 144587447)),
|
|
simde_mm256_set_epi32(INT32_C( -59192246), INT32_C( -42720585), INT32_C( 42548666), INT32_C( -38246317),
|
|
INT32_C( 40836223), INT32_C( -14250881), INT32_C( 18316781), INT32_C( 36146861)),
|
|
simde_mm256_set_epi32(INT32_C( -924879), INT32_C( -667510), INT32_C( 664822), INT32_C( -597599),
|
|
INT32_C( 638065), INT32_C( -222671), INT32_C( 286199), INT32_C( 564794)),
|
|
simde_mm256_set_epi32(INT32_C( -226), INT32_C( -163), INT32_C( 162), INT32_C( -146),
|
|
INT32_C( 155), INT32_C( -55), INT32_C( 69), INT32_C( 137)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0)),
|
|
simde_mm256_set_epi32(INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( -1), INT32_C( 0), INT32_C( 0)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 2006085750), INT32_C( 61416926), INT32_C(-1140358854), INT32_C(-1688269328),
|
|
INT32_C( 1190046172), INT32_C( 880936845), INT32_C( 1607764696), INT32_C( -178126707)),
|
|
simde_mm256_set_epi32(INT32_C( 1003042875), INT32_C( 30708463), INT32_C( -570179427), INT32_C( -844134664),
|
|
INT32_C( 595023086), INT32_C( 440468422), INT32_C( 803882348), INT32_C( -89063354)),
|
|
simde_mm256_set_epi32(INT32_C( 250760718), INT32_C( 7677115), INT32_C( -142544857), INT32_C( -211033666),
|
|
INT32_C( 148755771), INT32_C( 110117105), INT32_C( 200970587), INT32_C( -22265839)),
|
|
simde_mm256_set_epi32(INT32_C( 62690179), INT32_C( 1919278), INT32_C( -35636215), INT32_C( -52758417),
|
|
INT32_C( 37188942), INT32_C( 27529276), INT32_C( 50242646), INT32_C( -5566460)),
|
|
simde_mm256_set_epi32(INT32_C( 979534), INT32_C( 29988), INT32_C( -556816), INT32_C( -824351),
|
|
INT32_C( 581077), INT32_C( 430144), INT32_C( 785041), INT32_C( -86976)),
|
|
simde_mm256_set_epi32(INT32_C( 239), INT32_C( 7), INT32_C( -136), INT32_C( -202),
|
|
INT32_C( 141), INT32_C( 105), INT32_C( 191), INT32_C( -22)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( -1), INT32_C( -1),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1005121653), INT32_C(-1585730157), INT32_C(-1475200674), INT32_C( 1479482013),
|
|
INT32_C( 1084720040), INT32_C( 836731487), INT32_C( 776789662), INT32_C(-1533314427)),
|
|
simde_mm256_set_epi32(INT32_C( 502560826), INT32_C( -792865079), INT32_C( -737600337), INT32_C( 739741006),
|
|
INT32_C( 542360020), INT32_C( 418365743), INT32_C( 388394831), INT32_C( -766657214)),
|
|
simde_mm256_set_epi32(INT32_C( 125640206), INT32_C( -198216270), INT32_C( -184400085), INT32_C( 184935251),
|
|
INT32_C( 135590005), INT32_C( 104591435), INT32_C( 97098707), INT32_C( -191664304)),
|
|
simde_mm256_set_epi32(INT32_C( 31410051), INT32_C( -49554068), INT32_C( -46100022), INT32_C( 46233812),
|
|
INT32_C( 33897501), INT32_C( 26147858), INT32_C( 24274676), INT32_C( -47916076)),
|
|
simde_mm256_set_epi32(INT32_C( 490782), INT32_C( -774283), INT32_C( -720313), INT32_C( 722403),
|
|
INT32_C( 529648), INT32_C( 408560), INT32_C( 379291), INT32_C( -748689)),
|
|
simde_mm256_set_epi32(INT32_C( 119), INT32_C( -190), INT32_C( -176), INT32_C( 176),
|
|
INT32_C( 129), INT32_C( 99), INT32_C( 92), INT32_C( -183)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( 0), INT32_C( 0), INT32_C( 0), INT32_C( -1)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 697220296), INT32_C( -225552335), INT32_C(-1205053867), INT32_C( 652027642),
|
|
INT32_C(-1345199800), INT32_C( -795741825), INT32_C( 2128206723), INT32_C( -94091859)),
|
|
simde_mm256_set_epi32(INT32_C( 348610148), INT32_C( -112776168), INT32_C( -602526934), INT32_C( 326013821),
|
|
INT32_C( -672599900), INT32_C( -397870913), INT32_C( 1064103361), INT32_C( -47045930)),
|
|
simde_mm256_set_epi32(INT32_C( 87152537), INT32_C( -28194042), INT32_C( -150631734), INT32_C( 81503455),
|
|
INT32_C( -168149975), INT32_C( -99467729), INT32_C( 266025840), INT32_C( -11761483)),
|
|
simde_mm256_set_epi32(INT32_C( 21788134), INT32_C( -7048511), INT32_C( -37657934), INT32_C( 20375863),
|
|
INT32_C( -42037494), INT32_C( -24866933), INT32_C( 66506460), INT32_C( -2940371)),
|
|
simde_mm256_set_epi32(INT32_C( 340439), INT32_C( -110133), INT32_C( -588406), INT32_C( 318372),
|
|
INT32_C( -656836), INT32_C( -388546), INT32_C( 1039163), INT32_C( -45944)),
|
|
simde_mm256_set_epi32(INT32_C( 83), INT32_C( -27), INT32_C( -144), INT32_C( 77),
|
|
INT32_C( -161), INT32_C( -95), INT32_C( 253), INT32_C( -12)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( -1), INT32_C( -1), INT32_C( 0),
|
|
INT32_C( -1), INT32_C( -1), INT32_C( 0), INT32_C( -1)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r;
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 0);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].a);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 1);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r1);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 3);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r3);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 5);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r5);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 11);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r11);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 23);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r23);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 31);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r31);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 32);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r32);
|
|
r = simde_mm256_srai_epi32(test_vec[i].a, 55);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r55);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_srav_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[4];
|
|
const int32_t count[4];
|
|
const int32_t r[4];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 690570879), -INT32_C( 1738612706), -INT32_C( 540036542), -INT32_C( 885456606) },
|
|
{ INT32_C( 0), INT32_C( 4), INT32_C( 14), INT32_C( 2) },
|
|
{ -INT32_C( 690570879), -INT32_C( 108663295), -INT32_C( 32962), -INT32_C( 221364152) } },
|
|
{ { INT32_C( 990068252), INT32_C( 1624465950), INT32_C( 910140180), -INT32_C( 1677625180) },
|
|
{ INT32_C( 7), INT32_C( 10), INT32_C( 13), INT32_C( 8) },
|
|
{ INT32_C( 7734908), INT32_C( 1586392), INT32_C( 111101), -INT32_C( 6553224) } },
|
|
{ { INT32_C( 1388512308), INT32_C( 2075301734), -INT32_C( 558763462), INT32_C( 544912234) },
|
|
{ INT32_C( 10), INT32_C( 8), INT32_C( 13), INT32_C( 0) },
|
|
{ INT32_C( 1355969), INT32_C( 8106647), -INT32_C( 68209), INT32_C( 544912234) } },
|
|
{ { -INT32_C( 983752610), -INT32_C( 247459913), INT32_C( 1825566977), -INT32_C( 779335004) },
|
|
{ INT32_C( 12), INT32_C( 15), INT32_C( 8), INT32_C( 5) },
|
|
{ -INT32_C( 240174), -INT32_C( 7552), INT32_C( 7131121), -INT32_C( 24354219) } },
|
|
{ { -INT32_C( 132257471), -INT32_C( 85369352), -INT32_C( 211371698), INT32_C( 1757737475) },
|
|
{ INT32_C( 10), INT32_C( 10), INT32_C( 0), INT32_C( 11) },
|
|
{ -INT32_C( 129158), -INT32_C( 83369), -INT32_C( 211371698), INT32_C( 858270) } },
|
|
{ { -INT32_C( 1665761628), INT32_C( 697737435), INT32_C( 1545403481), INT32_C( 180675054) },
|
|
{ INT32_C( 2), INT32_C( 6), INT32_C( 1), INT32_C( 5) },
|
|
{ -INT32_C( 416440407), INT32_C( 10902147), INT32_C( 772701740), INT32_C( 5646095) } },
|
|
{ { INT32_C( 821596501), -INT32_C( 1973842127), INT32_C( 2061923979), INT32_C( 1938074199) },
|
|
{ INT32_C( 15), INT32_C( 1), INT32_C( 1), INT32_C( 0) },
|
|
{ INT32_C( 25073), -INT32_C( 986921064), INT32_C( 1030961989), INT32_C( 1938074199) } },
|
|
{ { -INT32_C( 717985117), -INT32_C( 2057335047), INT32_C( 1543456260), -INT32_C( 1999731728) },
|
|
{ INT32_C( 3), INT32_C( 2), INT32_C( 6), INT32_C( 3) },
|
|
{ -INT32_C( 89748140), -INT32_C( 514333762), INT32_C( 24116504), -INT32_C( 249966466) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m128i a = simde_x_mm_loadu_epi32(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi32(test_vec[i].count);
|
|
simde__m128i r = simde_mm_srav_epi32(a, count);
|
|
simde_test_x86_assert_equal_i32x4(r, simde_x_mm_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srav_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int32_t count[8];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 492051327), -INT32_C( 510825512), -INT32_C( 762777342), INT32_C( 1785481283), -INT32_C( 543476496), -INT32_C( 286322968), -INT32_C( 1946042097), -INT32_C( 254994066) },
|
|
{ INT32_C( 13), INT32_C( 14), INT32_C( 9), INT32_C( 7), INT32_C( 4), INT32_C( 11), INT32_C( 7), INT32_C( 4) },
|
|
{ -INT32_C( 60065), -INT32_C( 31179), -INT32_C( 1489800), INT32_C( 13949072), -INT32_C( 33967281), -INT32_C( 139807), -INT32_C( 15203454), -INT32_C( 15937130) } },
|
|
{ { INT32_C( 1813919881), -INT32_C( 397224553), -INT32_C( 1669658347), -INT32_C( 2045478611), -INT32_C( 1178113262), -INT32_C( 1183779151), INT32_C( 1882174246), INT32_C( 1287165379) },
|
|
{ INT32_C( 6), INT32_C( 12), INT32_C( 4), INT32_C( 5), INT32_C( 8), INT32_C( 10), INT32_C( 15), INT32_C( 13) },
|
|
{ INT32_C( 28342498), -INT32_C( 96979), -INT32_C( 104353647), -INT32_C( 63921207), -INT32_C( 4602005), -INT32_C( 1156035), INT32_C( 57439), INT32_C( 157124) } },
|
|
{ { INT32_C( 1463679147), INT32_C( 404261379), -INT32_C( 1822788270), -INT32_C( 974773529), INT32_C( 911536817), -INT32_C( 1629381521), INT32_C( 529661203), INT32_C( 2113458642) },
|
|
{ INT32_C( 12), INT32_C( 1), INT32_C( 4), INT32_C( 1), INT32_C( 14), INT32_C( 1), INT32_C( 15), INT32_C( 11) },
|
|
{ INT32_C( 357343), INT32_C( 202130689), -INT32_C( 113924267), -INT32_C( 487386765), INT32_C( 55635), -INT32_C( 814690761), INT32_C( 16163), INT32_C( 1031962) } },
|
|
{ { INT32_C( 495143517), -INT32_C( 1758566346), INT32_C( 148951975), -INT32_C( 635769251), INT32_C( 1321624144), -INT32_C( 1285598836), INT32_C( 1521258349), INT32_C( 353378999) },
|
|
{ INT32_C( 10), INT32_C( 10), INT32_C( 9), INT32_C( 5), INT32_C( 11), INT32_C( 15), INT32_C( 4), INT32_C( 10) },
|
|
{ INT32_C( 483538), -INT32_C( 1717350), INT32_C( 290921), -INT32_C( 19867790), INT32_C( 645324), -INT32_C( 39234), INT32_C( 95078646), INT32_C( 345096) } },
|
|
{ { -INT32_C( 347826706), INT32_C( 697270005), -INT32_C( 1598407784), INT32_C( 754525442), -INT32_C( 622747305), INT32_C( 1053444776), -INT32_C( 1785981858), INT32_C( 1563946863) },
|
|
{ INT32_C( 7), INT32_C( 9), INT32_C( 1), INT32_C( 13), INT32_C( 7), INT32_C( 12), INT32_C( 0), INT32_C( 11) },
|
|
{ -INT32_C( 2717397), INT32_C( 1361855), -INT32_C( 799203892), INT32_C( 92105), -INT32_C( 4865214), INT32_C( 257188), -INT32_C( 1785981858), INT32_C( 763645) } },
|
|
{ { INT32_C( 237938708), -INT32_C( 1818177152), -INT32_C( 1331113426), -INT32_C( 880088322), INT32_C( 2051030797), INT32_C( 1363539134), INT32_C( 1666491956), INT32_C( 1377285182) },
|
|
{ INT32_C( 13), INT32_C( 4), INT32_C( 13), INT32_C( 0), INT32_C( 7), INT32_C( 0), INT32_C( 11), INT32_C( 3) },
|
|
{ INT32_C( 29045), -INT32_C( 113636072), -INT32_C( 162490), -INT32_C( 880088322), INT32_C( 16023678), INT32_C( 1363539134), INT32_C( 813716), INT32_C( 172160647) } },
|
|
{ { -INT32_C( 602970939), INT32_C( 924876388), -INT32_C( 1744300650), INT32_C( 1403495573), INT32_C( 1389375617), INT32_C( 1935122175), -INT32_C( 1775845184), INT32_C( 97004096) },
|
|
{ INT32_C( 15), INT32_C( 14), INT32_C( 10), INT32_C( 5), INT32_C( 5), INT32_C( 2), INT32_C( 0), INT32_C( 10) },
|
|
{ -INT32_C( 18402), INT32_C( 56449), -INT32_C( 1703419), INT32_C( 43859236), INT32_C( 43417988), INT32_C( 483780543), -INT32_C( 1775845184), INT32_C( 94730) } },
|
|
{ { -INT32_C( 1163728540), INT32_C( 61263339), -INT32_C( 693163009), -INT32_C( 1255166120), -INT32_C( 317597057), -INT32_C( 1625562916), -INT32_C( 157163562), -INT32_C( 794449556) },
|
|
{ INT32_C( 7), INT32_C( 1), INT32_C( 11), INT32_C( 6), INT32_C( 13), INT32_C( 3), INT32_C( 11), INT32_C( 4) },
|
|
{ -INT32_C( 9091630), INT32_C( 30631669), -INT32_C( 338459), -INT32_C( 19611971), -INT32_C( 38770), -INT32_C( 203195365), -INT32_C( 76741), -INT32_C( 49653098) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m256i count = simde_x_mm256_loadu_epi32(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_srav_epi32(a, count);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srl_epi16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int16_t a[16];
|
|
const int64_t count[2];
|
|
const int16_t r[16];
|
|
} test_vec[] = {
|
|
{ { -INT16_C( 22997), -INT16_C( 654), INT16_C( 4109), -INT16_C( 4930), INT16_C( 21238), -INT16_C( 24602), -INT16_C( 1996), -INT16_C( 25685),
|
|
-INT16_C( 13301), INT16_C( 1794), -INT16_C( 3246), INT16_C( 8293), INT16_C( 10874), -INT16_C( 19744), INT16_C( 24589), INT16_C( 14500) },
|
|
{ INT64_C( 1), INT64_C( 14) },
|
|
{ INT16_C( 21269), INT16_C( 32441), INT16_C( 2054), INT16_C( 30303), INT16_C( 10619), INT16_C( 20467), INT16_C( 31770), INT16_C( 19925),
|
|
INT16_C( 26117), INT16_C( 897), INT16_C( 31145), INT16_C( 4146), INT16_C( 5437), INT16_C( 22896), INT16_C( 12294), INT16_C( 7250) } },
|
|
{ { INT16_C( 6196), -INT16_C( 30991), INT16_C( 22027), -INT16_C( 31322), -INT16_C( 30847), -INT16_C( 29129), -INT16_C( 8985), -INT16_C( 4409),
|
|
-INT16_C( 525), INT16_C( 6659), INT16_C( 1009), INT16_C( 14136), -INT16_C( 2582), -INT16_C( 13902), -INT16_C( 14242), -INT16_C( 27981) },
|
|
{ INT64_C( 7), INT64_C( 7) },
|
|
{ INT16_C( 48), INT16_C( 269), INT16_C( 172), INT16_C( 267), INT16_C( 271), INT16_C( 284), INT16_C( 441), INT16_C( 477),
|
|
INT16_C( 507), INT16_C( 52), INT16_C( 7), INT16_C( 110), INT16_C( 491), INT16_C( 403), INT16_C( 400), INT16_C( 293) } },
|
|
{ { INT16_C( 8143), -INT16_C( 16239), -INT16_C( 14045), INT16_C( 3575), -INT16_C( 22081), INT16_C( 7638), -INT16_C( 30351), INT16_C( 20911),
|
|
-INT16_C( 14290), INT16_C( 10812), -INT16_C( 21368), -INT16_C( 12634), -INT16_C( 20140), -INT16_C( 10244), INT16_C( 6531), INT16_C( 21070) },
|
|
{ INT64_C( 6), INT64_C( 15) },
|
|
{ INT16_C( 127), INT16_C( 770), INT16_C( 804), INT16_C( 55), INT16_C( 678), INT16_C( 119), INT16_C( 549), INT16_C( 326),
|
|
INT16_C( 800), INT16_C( 168), INT16_C( 690), INT16_C( 826), INT16_C( 709), INT16_C( 863), INT16_C( 102), INT16_C( 329) } },
|
|
{ { -INT16_C( 19460), -INT16_C( 31712), -INT16_C( 14497), -INT16_C( 19629), INT16_C( 20344), -INT16_C( 885), -INT16_C( 9880), -INT16_C( 24242),
|
|
INT16_C( 25016), INT16_C( 24828), INT16_C( 25963), INT16_C( 7880), INT16_C( 19619), INT16_C( 27459), -INT16_C( 17792), INT16_C( 32098) },
|
|
{ INT64_C( 12), INT64_C( 9) },
|
|
{ INT16_C( 11), INT16_C( 8), INT16_C( 12), INT16_C( 11), INT16_C( 4), INT16_C( 15), INT16_C( 13), INT16_C( 10),
|
|
INT16_C( 6), INT16_C( 6), INT16_C( 6), INT16_C( 1), INT16_C( 4), INT16_C( 6), INT16_C( 11), INT16_C( 7) } },
|
|
{ { -INT16_C( 21907), -INT16_C( 9988), -INT16_C( 15345), -INT16_C( 19721), INT16_C( 14865), -INT16_C( 28386), -INT16_C( 32524), INT16_C( 24846),
|
|
INT16_C( 4098), INT16_C( 19502), -INT16_C( 20892), INT16_C( 2062), -INT16_C( 13127), -INT16_C( 25323), -INT16_C( 15656), INT16_C( 17977) },
|
|
{ INT64_C( 0), INT64_C( 12) },
|
|
{ -INT16_C( 21907), -INT16_C( 9988), -INT16_C( 15345), -INT16_C( 19721), INT16_C( 14865), -INT16_C( 28386), -INT16_C( 32524), INT16_C( 24846),
|
|
INT16_C( 4098), INT16_C( 19502), -INT16_C( 20892), INT16_C( 2062), -INT16_C( 13127), -INT16_C( 25323), -INT16_C( 15656), INT16_C( 17977) } },
|
|
{ { -INT16_C( 11077), INT16_C( 7962), INT16_C( 10370), INT16_C( 15144), INT16_C( 15860), -INT16_C( 12840), INT16_C( 4607), INT16_C( 27667),
|
|
INT16_C( 12614), INT16_C( 16615), INT16_C( 5447), -INT16_C( 26805), -INT16_C( 6047), INT16_C( 11739), -INT16_C( 32365), INT16_C( 20220) },
|
|
{ INT64_C( 3), INT64_C( 4) },
|
|
{ INT16_C( 6807), INT16_C( 995), INT16_C( 1296), INT16_C( 1893), INT16_C( 1982), INT16_C( 6587), INT16_C( 575), INT16_C( 3458),
|
|
INT16_C( 1576), INT16_C( 2076), INT16_C( 680), INT16_C( 4841), INT16_C( 7436), INT16_C( 1467), INT16_C( 4146), INT16_C( 2527) } },
|
|
{ { INT16_C( 9541), -INT16_C( 29566), -INT16_C( 12741), -INT16_C( 25565), -INT16_C( 330), INT16_C( 18890), -INT16_C( 14720), -INT16_C( 10857),
|
|
INT16_C( 1244), INT16_C( 7085), -INT16_C( 16486), INT16_C( 27727), INT16_C( 20394), -INT16_C( 23234), INT16_C( 31843), -INT16_C( 22297) },
|
|
{ INT64_C( 14), INT64_C( 14) },
|
|
{ INT16_C( 0), INT16_C( 2), INT16_C( 3), INT16_C( 2), INT16_C( 3), INT16_C( 1), INT16_C( 3), INT16_C( 3),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 2), INT16_C( 1), INT16_C( 1), INT16_C( 2), INT16_C( 1), INT16_C( 2) } },
|
|
{ { INT16_C( 22738), INT16_C( 27649), INT16_C( 20503), -INT16_C( 15911), INT16_C( 6048), INT16_C( 871), INT16_C( 20116), INT16_C( 13995),
|
|
-INT16_C( 8264), -INT16_C( 4077), -INT16_C( 29642), -INT16_C( 29730), INT16_C( 5584), -INT16_C( 9887), INT16_C( 3299), -INT16_C( 18753) },
|
|
{ INT64_C( 11), INT64_C( 10) },
|
|
{ INT16_C( 11), INT16_C( 13), INT16_C( 10), INT16_C( 24), INT16_C( 2), INT16_C( 0), INT16_C( 9), INT16_C( 6),
|
|
INT16_C( 27), INT16_C( 30), INT16_C( 17), INT16_C( 17), INT16_C( 2), INT16_C( 27), INT16_C( 1), INT16_C( 22) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi16(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_srl_epi16(a, count);
|
|
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srl_epi32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int32_t a[8];
|
|
const int64_t count[2];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { INT32_C( 462342934), -INT32_C( 1870121018), INT32_C( 554160944), -INT32_C( 694160714), INT32_C( 612945077), -INT32_C( 1258241143), INT32_C( 228605294), INT32_C( 1633628746) },
|
|
{ INT64_C( 10), INT64_C( 0) },
|
|
{ INT32_C( 451506), INT32_C( 2368013), INT32_C( 541172), INT32_C( 3516412), INT32_C( 598579), INT32_C( 2965552), INT32_C( 223247), INT32_C( 1595340) } },
|
|
{ { INT32_C( 1814555874), INT32_C( 488712111), -INT32_C( 1372929436), -INT32_C( 250639628), -INT32_C( 1649112200), INT32_C( 1743980431), -INT32_C( 1342936734), INT32_C( 1655789695) },
|
|
{ INT64_C( 12), INT64_C( 7) },
|
|
{ INT32_C( 443006), INT32_C( 119314), INT32_C( 713388), INT32_C( 987384), INT32_C( 645960), INT32_C( 425776), INT32_C( 720710), INT32_C( 404245) } },
|
|
{ { INT32_C( 1020938925), -INT32_C( 1264333486), -INT32_C( 1234986953), INT32_C( 890770672), -INT32_C( 332863763), -INT32_C( 2024785450), INT32_C( 959275636), INT32_C( 813089667) },
|
|
{ INT64_C( 10), INT64_C( 15) },
|
|
{ INT32_C( 997010), INT32_C( 2959603), INT32_C( 2988262), INT32_C( 869893), INT32_C( 3869241), INT32_C( 2216974), INT32_C( 936792), INT32_C( 794032) } },
|
|
{ { -INT32_C( 530188790), -INT32_C( 1553418961), -INT32_C( 1696819945), INT32_C( 1724600920), -INT32_C( 1043973981), -INT32_C( 250160568), -INT32_C( 578150063), INT32_C( 1347770437) },
|
|
{ INT64_C( 16), INT64_C( 30) },
|
|
{ INT32_C( 57445), INT32_C( 41832), INT32_C( 39644), INT32_C( 26315), INT32_C( 49606), INT32_C( 61718), INT32_C( 56714), INT32_C( 20565) } },
|
|
{ { INT32_C( 1823781668), -INT32_C( 547501427), INT32_C( 834463724), -INT32_C( 1904144065), INT32_C( 990687948), INT32_C( 2025991498), INT32_C( 2097079083), -INT32_C( 210769201) },
|
|
{ INT64_C( 27), INT64_C( 20) },
|
|
{ INT32_C( 13), INT32_C( 27), INT32_C( 6), INT32_C( 17), INT32_C( 7), INT32_C( 15), INT32_C( 15), INT32_C( 30) } },
|
|
{ { -INT32_C( 1965064641), -INT32_C( 687693397), INT32_C( 1397948548), -INT32_C( 2008628502), -INT32_C( 709646874), INT32_C( 128957794), INT32_C( 1525398403), -INT32_C( 1996595895) },
|
|
{ INT64_C( 0), INT64_C( 11) },
|
|
{ -INT32_C( 1965064641), -INT32_C( 687693397), INT32_C( 1397948548), -INT32_C( 2008628502), -INT32_C( 709646874), INT32_C( 128957794), INT32_C( 1525398403), -INT32_C( 1996595895) } },
|
|
{ { -INT32_C( 1557251520), INT32_C( 2058018551), -INT32_C( 489384551), -INT32_C( 848571662), INT32_C( 760446383), -INT32_C( 1506823790), -INT32_C( 727350175), INT32_C( 1613638687) },
|
|
{ INT64_C( 26), INT64_C( 5) },
|
|
{ INT32_C( 40), INT32_C( 30), INT32_C( 56), INT32_C( 51), INT32_C( 11), INT32_C( 41), INT32_C( 53), INT32_C( 24) } },
|
|
{ { INT32_C( 828069023), INT32_C( 1742179077), INT32_C( 792427791), INT32_C( 277834153), INT32_C( 7180998), -INT32_C( 2116795073), INT32_C( 1874168817), INT32_C( 1268627116) },
|
|
{ INT64_C( 18), INT64_C( 28) },
|
|
{ INT32_C( 3158), INT32_C( 6645), INT32_C( 3022), INT32_C( 1059), INT32_C( 27), INT32_C( 8309), INT32_C( 7149), INT32_C( 4839) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi32(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_srl_epi32(a, count);
|
|
simde_test_x86_assert_equal_i32x8(r, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srl_epi64 (SIMDE_MUNIT_TEST_ARGS) {
|
|
static const struct {
|
|
const int64_t a[4];
|
|
const int64_t count[2];
|
|
const int64_t r[4];
|
|
} test_vec[] = {
|
|
{ { -INT64_C( 5615524349952248035), -INT64_C( 169181141632837383), -INT64_C( 2156056899313244590), INT64_C( 2210795734852214606) },
|
|
{ INT64_C( 53), INT64_C( 9) },
|
|
{ INT64_C( 1424), INT64_C( 2029), INT64_C( 1808), INT64_C( 245) } },
|
|
{ { -INT64_C( 1487990399803557942), INT64_C( 529040453150517560), -INT64_C( 2488935950564090945), INT64_C( 6943142796168475236) },
|
|
{ INT64_C( 43), INT64_C( 7) },
|
|
{ INT64_C( 1927987), INT64_C( 60144), INT64_C( 1814192), INT64_C( 789343) } },
|
|
{ { -INT64_C( 5357257909153707046), -INT64_C( 8261214601456445852), -INT64_C( 5095646641614933725), INT64_C( 5258072887802146680) },
|
|
{ INT64_C( 18), INT64_C( 36) },
|
|
{ INT64_C( 49932427080367), INT64_C( 38854711426746), INT64_C( 50930394867304), INT64_C( 20057956267555) } },
|
|
{ { INT64_C( 3236806875457131729), INT64_C( 2330891980307266465), -INT64_C( 800261788893942862), -INT64_C( 7202296167703893490) },
|
|
{ INT64_C( 18), INT64_C( 61) },
|
|
{ INT64_C( 12347438337162), INT64_C( 8891647263745), INT64_C( 67315987719786), INT64_C( 42894164680502) } },
|
|
{ { -INT64_C( 2722861607866604259), -INT64_C( 4610170485910138466), -INT64_C( 4356362314793495399), -INT64_C( 5361502814979693218) },
|
|
{ INT64_C( 14), INT64_C( 62) },
|
|
{ INT64_C( 959709623159359), INT64_C( 844517430895960), INT64_C( 860008652277591), INT64_C( 798659744795523) } },
|
|
{ { -INT64_C( 6211371764766002309), -INT64_C( 3676656067685929812), INT64_C( 6836255463078293771), -INT64_C( 6585853469746560704) },
|
|
{ INT64_C( 17), INT64_C( 46) },
|
|
{ INT64_C( 93348482581661), INT64_C( 112686828659237), INT64_C( 52156490044237), INT64_C( 90491413909629) } },
|
|
{ { -INT64_C( 2813834318091037066), -INT64_C( 3202319610422890814), -INT64_C( 2320715310519665176), INT64_C( 5863278639856965364) },
|
|
{ INT64_C( 48), INT64_C( 49) },
|
|
{ INT64_C( 55539), INT64_C( 54159), INT64_C( 57291), INT64_C( 20830) } },
|
|
{ { -INT64_C( 6120366921829610119), INT64_C( 5663747587464683628), INT64_C( 2390317772124553323), -INT64_C( 8174011239875094039) },
|
|
{ INT64_C( 23), INT64_C( 26) },
|
|
{ INT64_C( 1469418663010), INT64_C( 675171326096), INT64_C( 284948083415), INT64_C( 1224605182866) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_x_mm256_loadu_epi64(test_vec[i].a);
|
|
simde__m128i count = simde_x_mm_loadu_epi64(test_vec[i].count);
|
|
simde__m256i r = simde_mm256_srl_epi64(a, count);
|
|
simde_test_x86_assert_equal_i64x4(r, simde_x_mm256_loadu_epi64(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srli_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r1;
|
|
simde__m256i r3;
|
|
simde__m256i r5;
|
|
simde__m256i r11;
|
|
simde__m256i r13;
|
|
simde__m256i r15;
|
|
simde__m256i r16;
|
|
simde__m256i r24;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-13208), INT16_C( 32518), INT16_C(-12083), INT16_C( -4650),
|
|
INT16_C( 32616), INT16_C(-23415), INT16_C(-12219), INT16_C(-11043),
|
|
INT16_C( 17138), INT16_C( 18141), INT16_C( 29257), INT16_C(-17957),
|
|
INT16_C( -2929), INT16_C(-12343), INT16_C( -8291), INT16_C(-11958)),
|
|
simde_mm256_set_epi16(INT16_C( 26164), INT16_C( 16259), INT16_C( 26726), INT16_C( 30443),
|
|
INT16_C( 16308), INT16_C( 21060), INT16_C( 26658), INT16_C( 27246),
|
|
INT16_C( 8569), INT16_C( 9070), INT16_C( 14628), INT16_C( 23789),
|
|
INT16_C( 31303), INT16_C( 26596), INT16_C( 28622), INT16_C( 26789)),
|
|
simde_mm256_set_epi16(INT16_C( 6541), INT16_C( 4064), INT16_C( 6681), INT16_C( 7610),
|
|
INT16_C( 4077), INT16_C( 5265), INT16_C( 6664), INT16_C( 6811),
|
|
INT16_C( 2142), INT16_C( 2267), INT16_C( 3657), INT16_C( 5947),
|
|
INT16_C( 7825), INT16_C( 6649), INT16_C( 7155), INT16_C( 6697)),
|
|
simde_mm256_set_epi16(INT16_C( 1635), INT16_C( 1016), INT16_C( 1670), INT16_C( 1902),
|
|
INT16_C( 1019), INT16_C( 1316), INT16_C( 1666), INT16_C( 1702),
|
|
INT16_C( 535), INT16_C( 566), INT16_C( 914), INT16_C( 1486),
|
|
INT16_C( 1956), INT16_C( 1662), INT16_C( 1788), INT16_C( 1674)),
|
|
simde_mm256_set_epi16(INT16_C( 25), INT16_C( 15), INT16_C( 26), INT16_C( 29),
|
|
INT16_C( 15), INT16_C( 20), INT16_C( 26), INT16_C( 26),
|
|
INT16_C( 8), INT16_C( 8), INT16_C( 14), INT16_C( 23),
|
|
INT16_C( 30), INT16_C( 25), INT16_C( 27), INT16_C( 26)),
|
|
simde_mm256_set_epi16(INT16_C( 6), INT16_C( 3), INT16_C( 6), INT16_C( 7),
|
|
INT16_C( 3), INT16_C( 5), INT16_C( 6), INT16_C( 6),
|
|
INT16_C( 2), INT16_C( 2), INT16_C( 3), INT16_C( 5),
|
|
INT16_C( 7), INT16_C( 6), INT16_C( 6), INT16_C( 6)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( 0), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 1), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 9810), INT16_C( 24519), INT16_C(-20641), INT16_C( 29186),
|
|
INT16_C(-23300), INT16_C( -6682), INT16_C(-18375), INT16_C( 30920),
|
|
INT16_C( 29283), INT16_C( 14293), INT16_C( -6612), INT16_C( 11040),
|
|
INT16_C(-31748), INT16_C( -6890), INT16_C( 12929), INT16_C(-16870)),
|
|
simde_mm256_set_epi16(INT16_C( 4905), INT16_C( 12259), INT16_C( 22447), INT16_C( 14593),
|
|
INT16_C( 21118), INT16_C( 29427), INT16_C( 23580), INT16_C( 15460),
|
|
INT16_C( 14641), INT16_C( 7146), INT16_C( 29462), INT16_C( 5520),
|
|
INT16_C( 16894), INT16_C( 29323), INT16_C( 6464), INT16_C( 24333)),
|
|
simde_mm256_set_epi16(INT16_C( 1226), INT16_C( 3064), INT16_C( 5611), INT16_C( 3648),
|
|
INT16_C( 5279), INT16_C( 7356), INT16_C( 5895), INT16_C( 3865),
|
|
INT16_C( 3660), INT16_C( 1786), INT16_C( 7365), INT16_C( 1380),
|
|
INT16_C( 4223), INT16_C( 7330), INT16_C( 1616), INT16_C( 6083)),
|
|
simde_mm256_set_epi16(INT16_C( 306), INT16_C( 766), INT16_C( 1402), INT16_C( 912),
|
|
INT16_C( 1319), INT16_C( 1839), INT16_C( 1473), INT16_C( 966),
|
|
INT16_C( 915), INT16_C( 446), INT16_C( 1841), INT16_C( 345),
|
|
INT16_C( 1055), INT16_C( 1832), INT16_C( 404), INT16_C( 1520)),
|
|
simde_mm256_set_epi16(INT16_C( 4), INT16_C( 11), INT16_C( 21), INT16_C( 14),
|
|
INT16_C( 20), INT16_C( 28), INT16_C( 23), INT16_C( 15),
|
|
INT16_C( 14), INT16_C( 6), INT16_C( 28), INT16_C( 5),
|
|
INT16_C( 16), INT16_C( 28), INT16_C( 6), INT16_C( 23)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( 2), INT16_C( 5), INT16_C( 3),
|
|
INT16_C( 5), INT16_C( 7), INT16_C( 5), INT16_C( 3),
|
|
INT16_C( 3), INT16_C( 1), INT16_C( 7), INT16_C( 1),
|
|
INT16_C( 4), INT16_C( 7), INT16_C( 1), INT16_C( 5)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 0), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 4687), INT16_C( -4828), INT16_C( 9674), INT16_C( 8229),
|
|
INT16_C(-28519), INT16_C( 24429), INT16_C(-25708), INT16_C(-15646),
|
|
INT16_C( 27606), INT16_C( -993), INT16_C( 27866), INT16_C(-11890),
|
|
INT16_C( 25757), INT16_C( -1957), INT16_C( 24727), INT16_C(-30230)),
|
|
simde_mm256_set_epi16(INT16_C( 2343), INT16_C( 30354), INT16_C( 4837), INT16_C( 4114),
|
|
INT16_C( 18508), INT16_C( 12214), INT16_C( 19914), INT16_C( 24945),
|
|
INT16_C( 13803), INT16_C( 32271), INT16_C( 13933), INT16_C( 26823),
|
|
INT16_C( 12878), INT16_C( 31789), INT16_C( 12363), INT16_C( 17653)),
|
|
simde_mm256_set_epi16(INT16_C( 585), INT16_C( 7588), INT16_C( 1209), INT16_C( 1028),
|
|
INT16_C( 4627), INT16_C( 3053), INT16_C( 4978), INT16_C( 6236),
|
|
INT16_C( 3450), INT16_C( 8067), INT16_C( 3483), INT16_C( 6705),
|
|
INT16_C( 3219), INT16_C( 7947), INT16_C( 3090), INT16_C( 4413)),
|
|
simde_mm256_set_epi16(INT16_C( 146), INT16_C( 1897), INT16_C( 302), INT16_C( 257),
|
|
INT16_C( 1156), INT16_C( 763), INT16_C( 1244), INT16_C( 1559),
|
|
INT16_C( 862), INT16_C( 2016), INT16_C( 870), INT16_C( 1676),
|
|
INT16_C( 804), INT16_C( 1986), INT16_C( 772), INT16_C( 1103)),
|
|
simde_mm256_set_epi16(INT16_C( 2), INT16_C( 29), INT16_C( 4), INT16_C( 4),
|
|
INT16_C( 18), INT16_C( 11), INT16_C( 19), INT16_C( 24),
|
|
INT16_C( 13), INT16_C( 31), INT16_C( 13), INT16_C( 26),
|
|
INT16_C( 12), INT16_C( 31), INT16_C( 12), INT16_C( 17)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 7), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 4), INT16_C( 2), INT16_C( 4), INT16_C( 6),
|
|
INT16_C( 3), INT16_C( 7), INT16_C( 3), INT16_C( 6),
|
|
INT16_C( 3), INT16_C( 7), INT16_C( 3), INT16_C( 4)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 0), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 0), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 16592), INT16_C( -9654), INT16_C( -8076), INT16_C( 10592),
|
|
INT16_C( 20644), INT16_C( 25911), INT16_C( -1061), INT16_C( 18172),
|
|
INT16_C( 22556), INT16_C(-19191), INT16_C( 28031), INT16_C( -883),
|
|
INT16_C( 5347), INT16_C( -3724), INT16_C(-32544), INT16_C(-24989)),
|
|
simde_mm256_set_epi16(INT16_C( 8296), INT16_C( 27941), INT16_C( 28730), INT16_C( 5296),
|
|
INT16_C( 10322), INT16_C( 12955), INT16_C( 32237), INT16_C( 9086),
|
|
INT16_C( 11278), INT16_C( 23172), INT16_C( 14015), INT16_C( 32326),
|
|
INT16_C( 2673), INT16_C( 30906), INT16_C( 16496), INT16_C( 20273)),
|
|
simde_mm256_set_epi16(INT16_C( 2074), INT16_C( 6985), INT16_C( 7182), INT16_C( 1324),
|
|
INT16_C( 2580), INT16_C( 3238), INT16_C( 8059), INT16_C( 2271),
|
|
INT16_C( 2819), INT16_C( 5793), INT16_C( 3503), INT16_C( 8081),
|
|
INT16_C( 668), INT16_C( 7726), INT16_C( 4124), INT16_C( 5068)),
|
|
simde_mm256_set_epi16(INT16_C( 518), INT16_C( 1746), INT16_C( 1795), INT16_C( 331),
|
|
INT16_C( 645), INT16_C( 809), INT16_C( 2014), INT16_C( 567),
|
|
INT16_C( 704), INT16_C( 1448), INT16_C( 875), INT16_C( 2020),
|
|
INT16_C( 167), INT16_C( 1931), INT16_C( 1031), INT16_C( 1267)),
|
|
simde_mm256_set_epi16(INT16_C( 8), INT16_C( 27), INT16_C( 28), INT16_C( 5),
|
|
INT16_C( 10), INT16_C( 12), INT16_C( 31), INT16_C( 8),
|
|
INT16_C( 11), INT16_C( 22), INT16_C( 13), INT16_C( 31),
|
|
INT16_C( 2), INT16_C( 30), INT16_C( 16), INT16_C( 19)),
|
|
simde_mm256_set_epi16(INT16_C( 2), INT16_C( 6), INT16_C( 7), INT16_C( 1),
|
|
INT16_C( 2), INT16_C( 3), INT16_C( 7), INT16_C( 2),
|
|
INT16_C( 2), INT16_C( 5), INT16_C( 3), INT16_C( 7),
|
|
INT16_C( 0), INT16_C( 7), INT16_C( 4), INT16_C( 4)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 1), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 1), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -4839), INT16_C( 3174), INT16_C( 7509), INT16_C( 28795),
|
|
INT16_C( -1732), INT16_C(-26609), INT16_C(-11656), INT16_C( 3035),
|
|
INT16_C(-10865), INT16_C( 2405), INT16_C( 29471), INT16_C( 19828),
|
|
INT16_C( 29576), INT16_C( 23078), INT16_C( 11200), INT16_C( 26322)),
|
|
simde_mm256_set_epi16(INT16_C( 30348), INT16_C( 1587), INT16_C( 3754), INT16_C( 14397),
|
|
INT16_C( 31902), INT16_C( 19463), INT16_C( 26940), INT16_C( 1517),
|
|
INT16_C( 27335), INT16_C( 1202), INT16_C( 14735), INT16_C( 9914),
|
|
INT16_C( 14788), INT16_C( 11539), INT16_C( 5600), INT16_C( 13161)),
|
|
simde_mm256_set_epi16(INT16_C( 7587), INT16_C( 396), INT16_C( 938), INT16_C( 3599),
|
|
INT16_C( 7975), INT16_C( 4865), INT16_C( 6735), INT16_C( 379),
|
|
INT16_C( 6833), INT16_C( 300), INT16_C( 3683), INT16_C( 2478),
|
|
INT16_C( 3697), INT16_C( 2884), INT16_C( 1400), INT16_C( 3290)),
|
|
simde_mm256_set_epi16(INT16_C( 1896), INT16_C( 99), INT16_C( 234), INT16_C( 899),
|
|
INT16_C( 1993), INT16_C( 1216), INT16_C( 1683), INT16_C( 94),
|
|
INT16_C( 1708), INT16_C( 75), INT16_C( 920), INT16_C( 619),
|
|
INT16_C( 924), INT16_C( 721), INT16_C( 350), INT16_C( 822)),
|
|
simde_mm256_set_epi16(INT16_C( 29), INT16_C( 1), INT16_C( 3), INT16_C( 14),
|
|
INT16_C( 31), INT16_C( 19), INT16_C( 26), INT16_C( 1),
|
|
INT16_C( 26), INT16_C( 1), INT16_C( 14), INT16_C( 9),
|
|
INT16_C( 14), INT16_C( 11), INT16_C( 5), INT16_C( 12)),
|
|
simde_mm256_set_epi16(INT16_C( 7), INT16_C( 0), INT16_C( 0), INT16_C( 3),
|
|
INT16_C( 7), INT16_C( 4), INT16_C( 6), INT16_C( 0),
|
|
INT16_C( 6), INT16_C( 0), INT16_C( 3), INT16_C( 2),
|
|
INT16_C( 3), INT16_C( 2), INT16_C( 1), INT16_C( 3)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 1), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-25851), INT16_C( 6707), INT16_C(-23633), INT16_C( -4351),
|
|
INT16_C( -641), INT16_C(-22303), INT16_C( 6727), INT16_C( 9129),
|
|
INT16_C( 1286), INT16_C(-28152), INT16_C(-22922), INT16_C( -950),
|
|
INT16_C( -1798), INT16_C(-15465), INT16_C( 910), INT16_C(-23243)),
|
|
simde_mm256_set_epi16(INT16_C( 19842), INT16_C( 3353), INT16_C( 20951), INT16_C( 30592),
|
|
INT16_C( 32447), INT16_C( 21616), INT16_C( 3363), INT16_C( 4564),
|
|
INT16_C( 643), INT16_C( 18692), INT16_C( 21307), INT16_C( 32293),
|
|
INT16_C( 31869), INT16_C( 25035), INT16_C( 455), INT16_C( 21146)),
|
|
simde_mm256_set_epi16(INT16_C( 4960), INT16_C( 838), INT16_C( 5237), INT16_C( 7648),
|
|
INT16_C( 8111), INT16_C( 5404), INT16_C( 840), INT16_C( 1141),
|
|
INT16_C( 160), INT16_C( 4673), INT16_C( 5326), INT16_C( 8073),
|
|
INT16_C( 7967), INT16_C( 6258), INT16_C( 113), INT16_C( 5286)),
|
|
simde_mm256_set_epi16(INT16_C( 1240), INT16_C( 209), INT16_C( 1309), INT16_C( 1912),
|
|
INT16_C( 2027), INT16_C( 1351), INT16_C( 210), INT16_C( 285),
|
|
INT16_C( 40), INT16_C( 1168), INT16_C( 1331), INT16_C( 2018),
|
|
INT16_C( 1991), INT16_C( 1564), INT16_C( 28), INT16_C( 1321)),
|
|
simde_mm256_set_epi16(INT16_C( 19), INT16_C( 3), INT16_C( 20), INT16_C( 29),
|
|
INT16_C( 31), INT16_C( 21), INT16_C( 3), INT16_C( 4),
|
|
INT16_C( 0), INT16_C( 18), INT16_C( 20), INT16_C( 31),
|
|
INT16_C( 31), INT16_C( 24), INT16_C( 0), INT16_C( 20)),
|
|
simde_mm256_set_epi16(INT16_C( 4), INT16_C( 0), INT16_C( 5), INT16_C( 7),
|
|
INT16_C( 7), INT16_C( 5), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 4), INT16_C( 5), INT16_C( 7),
|
|
INT16_C( 7), INT16_C( 6), INT16_C( 0), INT16_C( 5)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( 0), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 0), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 7674), INT16_C( 18879), INT16_C( 27446), INT16_C(-29225),
|
|
INT16_C( -2725), INT16_C( 23364), INT16_C( 12045), INT16_C(-28927),
|
|
INT16_C(-14599), INT16_C(-16964), INT16_C( 660), INT16_C( 23234),
|
|
INT16_C(-21987), INT16_C(-30631), INT16_C( 26152), INT16_C(-28363)),
|
|
simde_mm256_set_epi16(INT16_C( 3837), INT16_C( 9439), INT16_C( 13723), INT16_C( 18155),
|
|
INT16_C( 31405), INT16_C( 11682), INT16_C( 6022), INT16_C( 18304),
|
|
INT16_C( 25468), INT16_C( 24286), INT16_C( 330), INT16_C( 11617),
|
|
INT16_C( 21774), INT16_C( 17452), INT16_C( 13076), INT16_C( 18586)),
|
|
simde_mm256_set_epi16(INT16_C( 959), INT16_C( 2359), INT16_C( 3430), INT16_C( 4538),
|
|
INT16_C( 7851), INT16_C( 2920), INT16_C( 1505), INT16_C( 4576),
|
|
INT16_C( 6367), INT16_C( 6071), INT16_C( 82), INT16_C( 2904),
|
|
INT16_C( 5443), INT16_C( 4363), INT16_C( 3269), INT16_C( 4646)),
|
|
simde_mm256_set_epi16(INT16_C( 239), INT16_C( 589), INT16_C( 857), INT16_C( 1134),
|
|
INT16_C( 1962), INT16_C( 730), INT16_C( 376), INT16_C( 1144),
|
|
INT16_C( 1591), INT16_C( 1517), INT16_C( 20), INT16_C( 726),
|
|
INT16_C( 1360), INT16_C( 1090), INT16_C( 817), INT16_C( 1161)),
|
|
simde_mm256_set_epi16(INT16_C( 3), INT16_C( 9), INT16_C( 13), INT16_C( 17),
|
|
INT16_C( 30), INT16_C( 11), INT16_C( 5), INT16_C( 17),
|
|
INT16_C( 24), INT16_C( 23), INT16_C( 0), INT16_C( 11),
|
|
INT16_C( 21), INT16_C( 17), INT16_C( 12), INT16_C( 18)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 2), INT16_C( 3), INT16_C( 4),
|
|
INT16_C( 7), INT16_C( 2), INT16_C( 1), INT16_C( 4),
|
|
INT16_C( 6), INT16_C( 5), INT16_C( 0), INT16_C( 2),
|
|
INT16_C( 5), INT16_C( 4), INT16_C( 3), INT16_C( 4)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 1), INT16_C( 0), INT16_C( 0), INT16_C( 1),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 1), INT16_C( 0), INT16_C( 1)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-13197), INT16_C( 24881), INT16_C(-10578), INT16_C(-21298),
|
|
INT16_C( 16303), INT16_C( -8332), INT16_C( 25558), INT16_C( 12717),
|
|
INT16_C( 18247), INT16_C(-30759), INT16_C( 9647), INT16_C( 18112),
|
|
INT16_C( -4632), INT16_C( 7524), INT16_C(-32339), INT16_C( 28325)),
|
|
simde_mm256_set_epi16(INT16_C( 26169), INT16_C( 12440), INT16_C( 27479), INT16_C( 22119),
|
|
INT16_C( 8151), INT16_C( 28602), INT16_C( 12779), INT16_C( 6358),
|
|
INT16_C( 9123), INT16_C( 17388), INT16_C( 4823), INT16_C( 9056),
|
|
INT16_C( 30452), INT16_C( 3762), INT16_C( 16598), INT16_C( 14162)),
|
|
simde_mm256_set_epi16(INT16_C( 6542), INT16_C( 3110), INT16_C( 6869), INT16_C( 5529),
|
|
INT16_C( 2037), INT16_C( 7150), INT16_C( 3194), INT16_C( 1589),
|
|
INT16_C( 2280), INT16_C( 4347), INT16_C( 1205), INT16_C( 2264),
|
|
INT16_C( 7613), INT16_C( 940), INT16_C( 4149), INT16_C( 3540)),
|
|
simde_mm256_set_epi16(INT16_C( 1635), INT16_C( 777), INT16_C( 1717), INT16_C( 1382),
|
|
INT16_C( 509), INT16_C( 1787), INT16_C( 798), INT16_C( 397),
|
|
INT16_C( 570), INT16_C( 1086), INT16_C( 301), INT16_C( 566),
|
|
INT16_C( 1903), INT16_C( 235), INT16_C( 1037), INT16_C( 885)),
|
|
simde_mm256_set_epi16(INT16_C( 25), INT16_C( 12), INT16_C( 26), INT16_C( 21),
|
|
INT16_C( 7), INT16_C( 27), INT16_C( 12), INT16_C( 6),
|
|
INT16_C( 8), INT16_C( 16), INT16_C( 4), INT16_C( 8),
|
|
INT16_C( 29), INT16_C( 3), INT16_C( 16), INT16_C( 13)),
|
|
simde_mm256_set_epi16(INT16_C( 6), INT16_C( 3), INT16_C( 6), INT16_C( 5),
|
|
INT16_C( 1), INT16_C( 6), INT16_C( 3), INT16_C( 1),
|
|
INT16_C( 2), INT16_C( 4), INT16_C( 1), INT16_C( 2),
|
|
INT16_C( 7), INT16_C( 0), INT16_C( 4), INT16_C( 3)),
|
|
simde_mm256_set_epi16(INT16_C( 1), INT16_C( 0), INT16_C( 1), INT16_C( 1),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 1), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 1), INT16_C( 0), INT16_C( 1), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)),
|
|
simde_mm256_set_epi16(INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0),
|
|
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r;
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 0);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].a);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 1);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r1);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 3);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r3);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 5);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r5);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 11);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r11);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 13);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r13);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 15);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r15);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 16);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r16);
|
|
r = simde_mm256_srli_epi16(test_vec[i].a, 24);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r24);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srli_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 732419944), INT32_C( -77147012), INT32_C( 489295522), INT32_C( -707244875),
|
|
INT32_C( 1759674836), INT32_C( 934163130), INT32_C( 1804082267), INT32_C(-1601331496)),
|
|
simde_mm256_set_epi32(INT32_C( 849157488), INT32_C( 1818223314), INT32_C( -155475303), INT32_C(-1398665928),
|
|
INT32_C( 1594244161), INT32_C( -844009252), INT32_C( 1806417213), INT32_C(-2079022073)),
|
|
simde_mm256_set_epi32(INT32_C( 5722030), INT32_C( 32951720), INT32_C( 3822621), INT32_C( 28029081),
|
|
INT32_C( 13747459), INT32_C( 7298149), INT32_C( 14094392), INT32_C( 21044029)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1876248297), INT32_C(-2075193364), INT32_C( 172214735), INT32_C( 1442116689),
|
|
INT32_C(-1288626413), INT32_C( 967081158), INT32_C(-1720117739), INT32_C( 578489253)),
|
|
simde_mm256_set_epi32(INT32_C( 428131799), INT32_C( -748788150), INT32_C(-1439171179), INT32_C(-1390423819),
|
|
INT32_C(-1892283443), INT32_C( 1334337044), INT32_C(-1388554016), INT32_C( -267755914)),
|
|
simde_mm256_set_epi32(INT32_C( 18896242), INT32_C( 17341983), INT32_C( 1345427), INT32_C( 11266536),
|
|
INT32_C( 23487038), INT32_C( 7555321), INT32_C( 20116012), INT32_C( 4519447)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 2139550852), INT32_C( 1705221620), INT32_C( -794518741), INT32_C( 1217473420),
|
|
INT32_C( -178348948), INT32_C( -348930603), INT32_C( 1243233554), INT32_C( 409162556)),
|
|
simde_mm256_set_epi32(INT32_C(-1403015061), INT32_C( 1726506153), INT32_C(-1594809223), INT32_C( -409985534),
|
|
INT32_C( 1511772803), INT32_C( 1304778026), INT32_C( 245063900), INT32_C(-1297537554)),
|
|
simde_mm256_set_epi32(INT32_C( 16715241), INT32_C( 13322043), INT32_C( 27347254), INT32_C( 9511511),
|
|
INT32_C( 32161080), INT32_C( 30828411), INT32_C( 9712762), INT32_C( 3196582)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -266647535), INT32_C(-1026471549), INT32_C( 2142406190), INT32_C( 988722559),
|
|
INT32_C( -185570336), INT32_C( 377523091), INT32_C( 41928420), INT32_C( 778993888)),
|
|
simde_mm256_set_epi32(INT32_C( -589207043), INT32_C( 1553242780), INT32_C(-1285792025), INT32_C( -729017109),
|
|
INT32_C( 1574494207), INT32_C( 934652742), INT32_C( 140826824), INT32_C(-1967394389)),
|
|
simde_mm256_set_epi32(INT32_C( 31471248), INT32_C( 25535123), INT32_C( 16737548), INT32_C( 7724394),
|
|
INT32_C( 32104663), INT32_C( 2949399), INT32_C( 327565), INT32_C( 6085889)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1791792894), INT32_C( 1191804972), INT32_C( -126480817), INT32_C( 1125707739),
|
|
INT32_C( -881879475), INT32_C( 143668756), INT32_C( -526899451), INT32_C( 1691821556)),
|
|
simde_mm256_set_epi32(INT32_C( 1203771433), INT32_C(-1195415594), INT32_C( 39184838), INT32_C( 1288741747),
|
|
INT32_C(-1347767789), INT32_C( 1099277192), INT32_C( 1193566195), INT32_C( -378044470)),
|
|
simde_mm256_set_epi32(INT32_C( 19556050), INT32_C( 9310976), INT32_C( 32566300), INT32_C( 8794591),
|
|
INT32_C( 26664748), INT32_C( 1122412), INT32_C( 29438030), INT32_C( 13217355)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-2125943644), INT32_C(-1910893035), INT32_C( 262981568), INT32_C( 1406838420),
|
|
INT32_C( 1188023687), INT32_C( -157711585), INT32_C(-1355034011), INT32_C( 1720639911)),
|
|
simde_mm256_set_epi32(INT32_C(-2060210004), INT32_C( 1988675682), INT32_C(-1866317501), INT32_C(-1240234337),
|
|
INT32_C(-1832718526), INT32_C(-1229749178), INT32_C(-1445633372), INT32_C(-1964281870)),
|
|
simde_mm256_set_epi32(INT32_C( 16945497), INT32_C( 18625580), INT32_C( 2054543), INT32_C( 10990925),
|
|
INT32_C( 9281435), INT32_C( 32322310), INT32_C( 22968228), INT32_C( 13442499)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-2026359983), INT32_C( 713896046), INT32_C( 968519053), INT32_C( 1906109584),
|
|
INT32_C( -45372712), INT32_C( 1799473244), INT32_C( -655893602), INT32_C( 1170033241)),
|
|
simde_mm256_set_epi32(INT32_C( -638177916), INT32_C( 1362453557), INT32_C( -397570420), INT32_C(-1865678794),
|
|
INT32_C( -397148457), INT32_C( -942451042), INT32_C( 944509801), INT32_C( -43249903)),
|
|
simde_mm256_set_epi32(INT32_C( 17723494), INT32_C( 5577312), INT32_C( 7566555), INT32_C( 14891481),
|
|
INT32_C( 33199957), INT32_C( 14058384), INT32_C( 28430263), INT32_C( 9140884)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1081998790), INT32_C( 485579923), INT32_C(-1608658429), INT32_C(-1749625928),
|
|
INT32_C( -779220060), INT32_C( 1164169772), INT32_C( 1589226288), INT32_C(-1216437245)),
|
|
simde_mm256_set_epi32(INT32_C( 320527694), INT32_C( 1480004810), INT32_C( 343325687), INT32_C( 772720606),
|
|
INT32_C( 1014221898), INT32_C(-1455936050), INT32_C(-1191095377), INT32_C( 1501993218)),
|
|
simde_mm256_set_epi32(INT32_C( 25101316), INT32_C( 3793593), INT32_C( 20986788), INT32_C( 19885479),
|
|
INT32_C( 27466775), INT32_C( 9095076), INT32_C( 12415830), INT32_C( 24051016)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_srli_epi32(test_vec[i].a, 7);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srli_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C(13444540030250453406)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 3078071440592676417)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C(12679412335333608791)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(11535715936901372554))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1641179202911432)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 375741142650473)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1547779826090528)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1408168449328780))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 225928524470693751)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 2474929979316735680)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 9996007191945919101)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(17512962486882118479))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 27579165584801)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 302115475990812)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1220215721673085)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 2137812803574477))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 982097740378530081)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 970769818047416681)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C(17255424662243862193)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(11037271049098666112))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 119884978073551)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 118502175054616)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 2106375080840315)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1347323126110677))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C(11593238181509994155)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 7911460325067993277)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C(14357185542824356538)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 8595783393340762736))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1415190207703856)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 965754434212401)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1752586125833051)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1049289965007417))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1166612957385363389)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(16938733438792705089)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C(15575845187785487375)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(10601739794903951841))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 142408808274580)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 2067716484227625)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1901348289524595)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1294157689807611))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C(15633886144376419396)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 8542868240583792995)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C(15596557227725823268)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 8048867687018942442))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1908433367233449)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1042830595774388)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1903876614712624)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 982527793825554))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C(15325764881028507458)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(15687264368536599834)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C(15848782944379583666)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 6713584830763153714))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1870820908328675)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1914949263737377)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1934665886765085)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 819529398286517))) },
|
|
{ simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 4987716052637776361)), HEDLEY_STATIC_CAST(int64_t, UINT64_C(12811672244172189341)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 5840602719775879932)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 2103118507556192853))),
|
|
simde_mm256_set_epi64x(HEDLEY_STATIC_CAST(int64_t, UINT64_C( 608852057206759)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 1563924834493675)),
|
|
HEDLEY_STATIC_CAST(int64_t, UINT64_C( 712964199191391)), HEDLEY_STATIC_CAST(int64_t, UINT64_C( 256728333441918))) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_srli_epi64(test_vec[i].a, 13);
|
|
simde_assert_m256i_u64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srli_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 96), INT8_C( 17), INT8_C( 11), INT8_C( 103),
|
|
INT8_C( 75), INT8_C( 47), INT8_C( -18), INT8_C( 1),
|
|
INT8_C( 93), INT8_C( -43), INT8_C( -55), INT8_C( 100),
|
|
INT8_C( -48), INT8_C( 21), INT8_C( -29), INT8_C( 10),
|
|
INT8_C( 66), INT8_C(-116), INT8_C( 19), INT8_C( -92),
|
|
INT8_C( -95), INT8_C( 82), INT8_C( -36), INT8_C( -42),
|
|
INT8_C( 126), INT8_C( 88), INT8_C( -28), INT8_C( -8),
|
|
INT8_C( -38), INT8_C(-106), INT8_C( 21), INT8_C( 13)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 96),
|
|
INT8_C( 17), INT8_C( 11), INT8_C( 103), INT8_C( 75),
|
|
INT8_C( 47), INT8_C( -18), INT8_C( 1), INT8_C( 93),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 66),
|
|
INT8_C(-116), INT8_C( 19), INT8_C( -92), INT8_C( -95),
|
|
INT8_C( 82), INT8_C( -36), INT8_C( -42), INT8_C( 126)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-108), INT8_C( -86), INT8_C( -14), INT8_C( -95),
|
|
INT8_C( 109), INT8_C( 36), INT8_C( 47), INT8_C(-100),
|
|
INT8_C( 19), INT8_C( 29), INT8_C( -48), INT8_C(-125),
|
|
INT8_C( -86), INT8_C( 59), INT8_C(-103), INT8_C( 59),
|
|
INT8_C( 123), INT8_C( -73), INT8_C(-107), INT8_C( -42),
|
|
INT8_C( 68), INT8_C( 37), INT8_C( 115), INT8_C( 51),
|
|
INT8_C( -48), INT8_C( 56), INT8_C( -7), INT8_C( -79),
|
|
INT8_C( -38), INT8_C(-103), INT8_C( 68), INT8_C( 60)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C(-108),
|
|
INT8_C( -86), INT8_C( -14), INT8_C( -95), INT8_C( 109),
|
|
INT8_C( 36), INT8_C( 47), INT8_C(-100), INT8_C( 19),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 123),
|
|
INT8_C( -73), INT8_C(-107), INT8_C( -42), INT8_C( 68),
|
|
INT8_C( 37), INT8_C( 115), INT8_C( 51), INT8_C( -48)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 76), INT8_C( 16), INT8_C( -72), INT8_C( 118),
|
|
INT8_C( 21), INT8_C( -73), INT8_C( -17), INT8_C( -69),
|
|
INT8_C( 119), INT8_C( 79), INT8_C( 76), INT8_C( 29),
|
|
INT8_C( 50), INT8_C( -64), INT8_C( -33), INT8_C( 123),
|
|
INT8_C( -96), INT8_C( 33), INT8_C( 83), INT8_C( -25),
|
|
INT8_C( 49), INT8_C( 0), INT8_C( -75), INT8_C( 118),
|
|
INT8_C( -51), INT8_C( -18), INT8_C( -17), INT8_C(-114),
|
|
INT8_C( 65), INT8_C( 26), INT8_C( -78), INT8_C( 60)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 76),
|
|
INT8_C( 16), INT8_C( -72), INT8_C( 118), INT8_C( 21),
|
|
INT8_C( -73), INT8_C( -17), INT8_C( -69), INT8_C( 119),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -96),
|
|
INT8_C( 33), INT8_C( 83), INT8_C( -25), INT8_C( 49),
|
|
INT8_C( 0), INT8_C( -75), INT8_C( 118), INT8_C( -51)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -24), INT8_C( -43), INT8_C( -68), INT8_C( 95),
|
|
INT8_C( -74), INT8_C( 73), INT8_C( 100), INT8_C( 109),
|
|
INT8_C( 96), INT8_C( -49), INT8_C( -75), INT8_C( 117),
|
|
INT8_C( 13), INT8_C( -72), INT8_C( -68), INT8_C( 14),
|
|
INT8_C( -76), INT8_C( 76), INT8_C( 21), INT8_C( -85),
|
|
INT8_C( -57), INT8_C(-103), INT8_C( 22), INT8_C( -25),
|
|
INT8_C( -64), INT8_C( 0), INT8_C( 92), INT8_C( -92),
|
|
INT8_C(-101), INT8_C( -65), INT8_C( -20), INT8_C( 63)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -24),
|
|
INT8_C( -43), INT8_C( -68), INT8_C( 95), INT8_C( -74),
|
|
INT8_C( 73), INT8_C( 100), INT8_C( 109), INT8_C( 96),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -76),
|
|
INT8_C( 76), INT8_C( 21), INT8_C( -85), INT8_C( -57),
|
|
INT8_C(-103), INT8_C( 22), INT8_C( -25), INT8_C( -64)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -68), INT8_C( -24), INT8_C( 84), INT8_C(-116),
|
|
INT8_C( -43), INT8_C( 79), INT8_C( -39), INT8_C( -68),
|
|
INT8_C( 124), INT8_C( -14), INT8_C( 98), INT8_C(-100),
|
|
INT8_C( 125), INT8_C( 110), INT8_C( 79), INT8_C( -13),
|
|
INT8_C( -72), INT8_C(-119), INT8_C( -50), INT8_C( -7),
|
|
INT8_C( 127), INT8_C( 126), INT8_C( -62), INT8_C(-124),
|
|
INT8_C( -36), INT8_C( -38), INT8_C( -1), INT8_C( 11),
|
|
INT8_C( -6), INT8_C( 75), INT8_C( 3), INT8_C( 46)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -68),
|
|
INT8_C( -24), INT8_C( 84), INT8_C(-116), INT8_C( -43),
|
|
INT8_C( 79), INT8_C( -39), INT8_C( -68), INT8_C( 124),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -72),
|
|
INT8_C(-119), INT8_C( -50), INT8_C( -7), INT8_C( 127),
|
|
INT8_C( 126), INT8_C( -62), INT8_C(-124), INT8_C( -36)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-121), INT8_C( -60), INT8_C( 94), INT8_C( 113),
|
|
INT8_C( -23), INT8_C( 116), INT8_C( 51), INT8_C( 98),
|
|
INT8_C( 52), INT8_C( -39), INT8_C( -43), INT8_C( -8),
|
|
INT8_C( 98), INT8_C( 57), INT8_C( -33), INT8_C( -19),
|
|
INT8_C( 7), INT8_C( -17), INT8_C( 13), INT8_C( 106),
|
|
INT8_C(-115), INT8_C(-117), INT8_C(-118), INT8_C( -11),
|
|
INT8_C( -1), INT8_C( 104), INT8_C( -53), INT8_C( 93),
|
|
INT8_C( -53), INT8_C( 34), INT8_C( -17), INT8_C( -60)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C(-121),
|
|
INT8_C( -60), INT8_C( 94), INT8_C( 113), INT8_C( -23),
|
|
INT8_C( 116), INT8_C( 51), INT8_C( 98), INT8_C( 52),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 7),
|
|
INT8_C( -17), INT8_C( 13), INT8_C( 106), INT8_C(-115),
|
|
INT8_C(-117), INT8_C(-118), INT8_C( -11), INT8_C( -1)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -26), INT8_C( -15), INT8_C( -63), INT8_C( 20),
|
|
INT8_C( -47), INT8_C( -75), INT8_C( -93), INT8_C( -10),
|
|
INT8_C( -70), INT8_C( -68), INT8_C( 51), INT8_C( -33),
|
|
INT8_C( -77), INT8_C( -93), INT8_C(-109), INT8_C( -87),
|
|
INT8_C(-100), INT8_C( -94), INT8_C( 37), INT8_C( -30),
|
|
INT8_C( -77), INT8_C( -68), INT8_C( -55), INT8_C(-112),
|
|
INT8_C( -35), INT8_C( 48), INT8_C( 19), INT8_C( 104),
|
|
INT8_C( 67), INT8_C( 105), INT8_C(-110), INT8_C( 111)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( -26),
|
|
INT8_C( -15), INT8_C( -63), INT8_C( 20), INT8_C( -47),
|
|
INT8_C( -75), INT8_C( -93), INT8_C( -10), INT8_C( -70),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C(-100),
|
|
INT8_C( -94), INT8_C( 37), INT8_C( -30), INT8_C( -77),
|
|
INT8_C( -68), INT8_C( -55), INT8_C(-112), INT8_C( -35)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 45), INT8_C( -53), INT8_C(-119), INT8_C( 36),
|
|
INT8_C( -11), INT8_C( -24), INT8_C( 109), INT8_C( -22),
|
|
INT8_C( -79), INT8_C( -98), INT8_C( -10), INT8_C( 35),
|
|
INT8_C( 46), INT8_C(-121), INT8_C( 7), INT8_C( 38),
|
|
INT8_C( 124), INT8_C( -47), INT8_C( -7), INT8_C( 41),
|
|
INT8_C( 33), INT8_C( 95), INT8_C( 12), INT8_C( 3),
|
|
INT8_C( 105), INT8_C( 16), INT8_C( 33), INT8_C(-106),
|
|
INT8_C( 94), INT8_C( 28), INT8_C( 14), INT8_C( 63)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 45),
|
|
INT8_C( -53), INT8_C(-119), INT8_C( 36), INT8_C( -11),
|
|
INT8_C( -24), INT8_C( 109), INT8_C( -22), INT8_C( -79),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 0),
|
|
INT8_C( 0), INT8_C( 0), INT8_C( 0), INT8_C( 124),
|
|
INT8_C( -47), INT8_C( -7), INT8_C( 41), INT8_C( 33),
|
|
INT8_C( 95), INT8_C( 12), INT8_C( 3), INT8_C( 105)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_srli_si256(test_vec[i].a, 7);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_srlv_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i b;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi32(INT32_C( 750889845), INT32_C( 1061237522), INT32_C( -532194576), INT32_C( 369438034)),
|
|
simde_mm_set_epi32(INT32_C( 24), INT32_C( 8), INT32_C( 6), INT32_C( 22)),
|
|
simde_mm_set_epi32(INT32_C( 44), INT32_C( 4145459), INT32_C( 58793323), INT32_C( 88)) },
|
|
{ simde_mm_set_epi32(INT32_C( 258457925), INT32_C( -26515586), INT32_C( 413932222), INT32_C( 1067196057)),
|
|
simde_mm_set_epi32(INT32_C( 31), INT32_C( 28), INT32_C( 8), INT32_C(-1408300382)),
|
|
simde_mm_set_epi32(INT32_C( 0), INT32_C( 15), INT32_C( 1616922), INT32_C( 0)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1382618640), INT32_C(-1421089532), INT32_C( 108769767), INT32_C( -467052333)),
|
|
simde_mm_set_epi32(INT32_C( 21), INT32_C( 14), INT32_C( 16), INT32_C( 14)),
|
|
simde_mm_set_epi32(INT32_C( 1388), INT32_C( 175407), INT32_C( 1659), INT32_C( 233637)) },
|
|
{ simde_mm_set_epi32(INT32_C( -987735049), INT32_C( 1751785542), INT32_C( -871968813), INT32_C( -682701112)),
|
|
simde_mm_set_epi32(INT32_C( 1275084561), INT32_C( 344565288), INT32_C( 29), INT32_C( 13)),
|
|
simde_mm_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 6), INT32_C( 440950)) },
|
|
{ simde_mm_set_epi32(INT32_C( -172652498), INT32_C(-1982996024), INT32_C( -540050425), INT32_C( -840529876)),
|
|
simde_mm_set_epi32(INT32_C( 23), INT32_C( 23), INT32_C( 26), INT32_C( 22)),
|
|
simde_mm_set_epi32(INT32_C( 491), INT32_C( 275), INT32_C( 55), INT32_C( 823)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1748060455), INT32_C( 1899512955), INT32_C( 350293706), INT32_C(-1638949235)),
|
|
simde_mm_set_epi32(INT32_C( 0), INT32_C( 10), INT32_C( 17), INT32_C( 6)),
|
|
simde_mm_set_epi32(INT32_C( 1748060455), INT32_C( 1854993), INT32_C( 2672), INT32_C( 41500282)) },
|
|
{ simde_mm_set_epi32(INT32_C(-1740858648), INT32_C( 1128670113), INT32_C(-1204328910), INT32_C( -772579618)),
|
|
simde_mm_set_epi32(INT32_C( 9), INT32_C( 28), INT32_C( 11), INT32_C( 14)),
|
|
simde_mm_set_epi32(INT32_C( 4988493), INT32_C( 4), INT32_C( 1509100), INT32_C( 214989)) },
|
|
{ simde_mm_set_epi32(INT32_C( -969095340), INT32_C( 1833136862), INT32_C(-2029269927), INT32_C( 238413160)),
|
|
simde_mm_set_epi32(INT32_C( 3), INT32_C( 20), INT32_C( 27), INT32_C(-1565782040)),
|
|
simde_mm_set_epi32(INT32_C( 415733994), INT32_C( 1748), INT32_C( 16), INT32_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_srlv_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m128i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srlv_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 861771480), INT32_C( 1241239464), INT32_C( 563960678), INT32_C(-1557457802),
|
|
INT32_C( 750889845), INT32_C( 1061237522), INT32_C( -532194576), INT32_C( 369438034)),
|
|
simde_mm256_set_epi32(INT32_C( 31), INT32_C( 28), INT32_C( 8), INT32_C(-1408300382),
|
|
INT32_C( 5), INT32_C( 30), INT32_C( 30), INT32_C( 25)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 4), INT32_C( 2202971), INT32_C( 0),
|
|
INT32_C( 23465307), INT32_C( 0), INT32_C( 3), INT32_C( 11)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1385973461), INT32_C( 1951417326), INT32_C( 1227312976), INT32_C( 1815104686),
|
|
INT32_C(-1382618640), INT32_C(-1421089532), INT32_C( 108769767), INT32_C( -467052333)),
|
|
simde_mm256_set_epi32(INT32_C( 1275084561), INT32_C( 344565288), INT32_C( 29), INT32_C( 13),
|
|
INT32_C( 23), INT32_C( 6), INT32_C( 19), INT32_C( 8)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 0), INT32_C( 2), INT32_C( 221570),
|
|
INT32_C( 347), INT32_C( 44904340), INT32_C( 207), INT32_C( 14952792)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 585901719), INT32_C( 528891191), INT32_C( 1862281050), INT32_C( 2077782134),
|
|
INT32_C( -172652498), INT32_C(-1982996024), INT32_C( -540050425), INT32_C( -840529876)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 10), INT32_C( 17), INT32_C( 6),
|
|
INT32_C( 7), INT32_C( 27), INT32_C( 10), INT32_C( 13)),
|
|
simde_mm256_set_epi32(INT32_C( 585901719), INT32_C( 516495), INT32_C( 14208), INT32_C( 32465345),
|
|
INT32_C( 32205584), INT32_C( 17), INT32_C( 3666911), INT32_C( 421684)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -594595895), INT32_C( 1620324892), INT32_C( 211976587), INT32_C( 477414606),
|
|
INT32_C(-1740858648), INT32_C( 1128670113), INT32_C(-1204328910), INT32_C( -772579618)),
|
|
simde_mm256_set_epi32(INT32_C( 3), INT32_C( 20), INT32_C( 27), INT32_C(-1565782040),
|
|
INT32_C( 20), INT32_C( 30), INT32_C( 25), INT32_C( 8)),
|
|
simde_mm256_set_epi32(INT32_C( 462546425), INT32_C( 1545), INT32_C( 1), INT32_C( 0),
|
|
INT32_C( 2435), INT32_C( 1), INT32_C( 92), INT32_C( 13759326)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -889280255), INT32_C( 271958618), INT32_C( -251228133), INT32_C( 720482352),
|
|
INT32_C(-1904765782), INT32_C( 203744379), INT32_C( 1575427578), INT32_C( -282602589)),
|
|
simde_mm256_set_epi32(INT32_C( 23), INT32_C( 13), INT32_C( 1563325862), INT32_C( 29),
|
|
INT32_C( 19), INT32_C( 7), INT32_C( 24), INT32_C( 3)),
|
|
simde_mm256_set_epi32(INT32_C( 405), INT32_C( 33198), INT32_C( 0), INT32_C( 1),
|
|
INT32_C( 4558), INT32_C( 1591752), INT32_C( 93), INT32_C( 501545588)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1315029482), INT32_C(-1940519792), INT32_C( 49328210), INT32_C( -718320499),
|
|
INT32_C(-2013049672), INT32_C( -426567571), INT32_C( 1959340047), INT32_C( 359056326)),
|
|
simde_mm256_set_epi32(INT32_C( -523938288), INT32_C( 12), INT32_C( 7), INT32_C( 25),
|
|
INT32_C(-1642052233), INT32_C( 14), INT32_C( 21), INT32_C( 28)),
|
|
simde_mm256_set_epi32(INT32_C( 0), INT32_C( 574816), INT32_C( 385376), INT32_C( 106),
|
|
INT32_C( 0), INT32_C( 236108), INT32_C( 934), INT32_C( 1)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1635822813), INT32_C( 796954372), INT32_C(-1179699383), INT32_C(-1410308028),
|
|
INT32_C(-1961762130), INT32_C( 185876307), INT32_C(-1502255170), INT32_C( -357150625)),
|
|
simde_mm256_set_epi32(INT32_C( 2), INT32_C(-2068185893), INT32_C( 15), INT32_C( 10),
|
|
INT32_C( 21), INT32_C( 20), INT32_C( -337949468), INT32_C( 29)),
|
|
simde_mm256_set_epi32(INT32_C( 664786120), INT32_C( 0), INT32_C( 95070), INT32_C( 2817050),
|
|
INT32_C( 1112), INT32_C( 177), INT32_C( 0), INT32_C( 7)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1698380028), INT32_C( -28278292), INT32_C( 1781848426), INT32_C( -350034661),
|
|
INT32_C(-1536163099), INT32_C( -584250792), INT32_C(-1013422776), INT32_C( 880343098)),
|
|
simde_mm256_set_epi32(INT32_C( 23), INT32_C( 170594558), INT32_C( -142350595), INT32_C( 17),
|
|
INT32_C( 24), INT32_C( 3), INT32_C( 16), INT32_C( 14)),
|
|
simde_mm256_set_epi32(INT32_C( 202), INT32_C( 0), INT32_C( 0), INT32_C( 30097),
|
|
INT32_C( 164), INT32_C( 463839563), INT32_C( 50072), INT32_C( 53731)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_srlv_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_srlv_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i b;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi64x(INT64_C(3225047328234746642), INT64_C(-2285758298659148462)),
|
|
simde_mm_set_epi64x(INT64_C( 40), INT64_C( 54)),
|
|
simde_mm_set_epi64x(INT64_C( 2933163), INT64_C( 897)) },
|
|
{ simde_mm_set_epi64x(INT64_C(1110068339535472510), INT64_C(1777825357317807769)),
|
|
simde_mm_set_epi64x(INT64_C( 28), INT64_C( 34)),
|
|
simde_mm_set_epi64x(INT64_C( 4135326815), INT64_C( 103483055)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-5938301838766119676), INT64_C( 467162595886454995)),
|
|
simde_mm_set_epi64x(INT64_C( 46), INT64_C(5271269095691537582)),
|
|
simde_mm_set_epi64x(INT64_C( 177755), INT64_C( 0)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-4242289730816171962), INT64_C(-3745077531354673464)),
|
|
simde_mm_set_epi64x(INT64_C( 40), INT64_C( 45)),
|
|
simde_mm_set_epi64x(INT64_C( 12918875), INT64_C( 417846)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-741536830170734136), INT64_C(-2319498910111463380)),
|
|
simde_mm_set_epi64x(INT64_C( 55), INT64_C( 54)),
|
|
simde_mm_set_epi64x(INT64_C( 491), INT64_C( 895)) },
|
|
{ simde_mm_set_epi64x(INT64_C(7507862487555392635), INT64_C(1504500013920657037)),
|
|
simde_mm_set_epi64x(INT64_C( 10), INT64_C( 38)),
|
|
simde_mm_set_epi64x(INT64_C( 7331896960503313), INT64_C( 5473339)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-7476930958990105695), INT64_C(-5172553278554939682)),
|
|
simde_mm_set_epi64x(INT64_C( 28), INT64_C( 14)),
|
|
simde_mm_set_epi64x(INT64_C( 40865738372), INT64_C( 810192309274573)) },
|
|
{ simde_mm_set_epi64x(INT64_C(-4162232790172863778), INT64_C(-8715647970982894232)),
|
|
simde_mm_set_epi64x(INT64_C(-7347100370153245868), INT64_C(2854270594309689320)),
|
|
simde_mm_set_epi64x(INT64_C( 0), INT64_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_srlv_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m128i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_srlv_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 3701280324466757544), INT64_C( 2422192670977496182),
|
|
INT64_C( 3225047328234746642), INT64_C(-2285758298659148462)),
|
|
simde_mm256_set_epi64x(INT64_C( 28), INT64_C( 34),
|
|
INT64_C( 62), INT64_C( 25)),
|
|
simde_mm256_set_epi64x(INT64_C( 13788343684), INT64_C( 140990169),
|
|
INT64_C( 0), INT64_C( 481634908171)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5952710690070348782), INT64_C( 5271269095691537582),
|
|
INT64_C(-5938301838766119676), INT64_C( 467162595886454995)),
|
|
simde_mm256_set_epi64x(INT64_C( 40), INT64_C( 45),
|
|
INT64_C( 6), INT64_C(-3745077531354673464)),
|
|
simde_mm256_set_epi64x(INT64_C( 5413958), INT64_C( 149818),
|
|
INT64_C( 195444409920991124), INT64_C( 0)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 2516428722304073015), INT64_C( 7998436207788322934),
|
|
INT64_C( -741536830170734136), INT64_C(-2319498910111463380)),
|
|
simde_mm256_set_epi64x(INT64_C( 10), INT64_C( 38),
|
|
INT64_C( 59), INT64_C( 13)),
|
|
simde_mm256_set_epi64x(INT64_C( 2457449924125071), INT64_C( 29098141),
|
|
INT64_C( 30), INT64_C( 1968657856884532)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-2553769921740525028), INT64_C( 910432509160113358),
|
|
INT64_C(-7476930958990105695), INT64_C(-5172553278554939682)),
|
|
simde_mm256_set_epi64x(INT64_C(-7347100370153245868), INT64_C( 2854270594309689320),
|
|
INT64_C( 30), INT64_C( 40)),
|
|
simde_mm256_set_epi64x(INT64_C( 0), INT64_C( 0),
|
|
INT64_C( 10216434593), INT64_C( 12072806)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3819429611931581862), INT64_C(-1079016614349656016),
|
|
INT64_C(-8180906740026121093), INT64_C( 6766409928738853795)),
|
|
simde_mm256_set_epi64x(INT64_C( 13), INT64_C( 61),
|
|
INT64_C( 39), INT64_C( 3)),
|
|
simde_mm256_set_epi64x(INT64_C( 1785560847385006), INT64_C( 7),
|
|
INT64_C( 18673449), INT64_C( 845801241092356724)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5648008620820268176), INT64_C( 211863052296866957),
|
|
INT64_C(-8645982502595127187), INT64_C( 8415301423967159238)),
|
|
simde_mm256_set_epi64x(INT64_C( 12), INT64_C( 25),
|
|
INT64_C( 14), INT64_C( 28)),
|
|
simde_mm256_set_epi64x(INT64_C( 1378908354692448), INT64_C( 6314010986),
|
|
INT64_C( 598191013861964), INT64_C( 31349440753)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-7025805483088769276), INT64_C(-5066770266211719100),
|
|
INT64_C(-8425704190695424173), INT64_C(-6452136821459103649)),
|
|
simde_mm256_set_epi64x(INT64_C( 27), INT64_C( 42),
|
|
INT64_C( 52), INT64_C( 29)),
|
|
simde_mm256_set_epi64x(INT64_C( 85092623461), INT64_C( 3042253),
|
|
INT64_C( 2225), INT64_C( 22341697015)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 7294486680706253292), INT64_C( 7652980720044008731),
|
|
INT64_C(-6597770267816293800), INT64_C(-4352617679061190598)),
|
|
simde_mm256_set_epi64x(INT64_C( 62), INT64_C( 17),
|
|
INT64_C( 35), INT64_C(-3878551521611571282)),
|
|
simde_mm256_set_epi64x(INT64_C( 1), INT64_C( 58387609253265),
|
|
INT64_C( 344850524), INT64_C( 0)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_srlv_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_stream_load_si256 (SIMDE_MUNIT_TEST_ARGS) {
|
|
/* XL C/C++ doesn't seem to honor the alignment requirements if this
|
|
* is static. I'm actually not sure if it honors them if it's not
|
|
* static or just happens to generate properly aligned data… */
|
|
const struct {
|
|
SIMDE_ALIGN_LIKE_32(simde__m256i) const int32_t a[8];
|
|
const int32_t r[8];
|
|
} test_vec[] = {
|
|
{ { -INT32_C( 318278464), -INT32_C( 1120465675), INT32_C( 457266700), INT32_C( 2139701695), INT32_C( 1033159662), -INT32_C( 359675734), INT32_C( 1714257348), INT32_C( 1256709514) },
|
|
{ -INT32_C( 318278464), -INT32_C( 1120465675), INT32_C( 457266700), INT32_C( 2139701695), INT32_C( 1033159662), -INT32_C( 359675734), INT32_C( 1714257348), INT32_C( 1256709514) } },
|
|
{ { INT32_C( 1178070609), INT32_C( 117731066), -INT32_C( 2094905916), INT32_C( 1963174791), INT32_C( 431200111), INT32_C( 587416159), INT32_C( 1233793215), INT32_C( 1586786573) },
|
|
{ INT32_C( 1178070609), INT32_C( 117731066), -INT32_C( 2094905916), INT32_C( 1963174791), INT32_C( 431200111), INT32_C( 587416159), INT32_C( 1233793215), INT32_C( 1586786573) } },
|
|
{ { INT32_C( 1504037727), -INT32_C( 27219654), INT32_C( 1971487470), -INT32_C( 1645509330), INT32_C( 2092342812), -INT32_C( 1616921888), -INT32_C( 118937110), -INT32_C( 111772262) },
|
|
{ INT32_C( 1504037727), -INT32_C( 27219654), INT32_C( 1971487470), -INT32_C( 1645509330), INT32_C( 2092342812), -INT32_C( 1616921888), -INT32_C( 118937110), -INT32_C( 111772262) } },
|
|
{ { -INT32_C( 2108425400), -INT32_C( 1820216412), INT32_C( 1678246710), -INT32_C( 1543375992), INT32_C( 1897969553), INT32_C( 1544667249), -INT32_C( 2074805527), -INT32_C( 1082283401) },
|
|
{ -INT32_C( 2108425400), -INT32_C( 1820216412), INT32_C( 1678246710), -INT32_C( 1543375992), INT32_C( 1897969553), INT32_C( 1544667249), -INT32_C( 2074805527), -INT32_C( 1082283401) } },
|
|
{ { INT32_C( 1245892774), -INT32_C( 1159871612), INT32_C( 1310648006), INT32_C( 1811029977), INT32_C( 1222382550), -INT32_C( 1130041901), INT32_C( 1581316327), INT32_C( 1209974434) },
|
|
{ INT32_C( 1245892774), -INT32_C( 1159871612), INT32_C( 1310648006), INT32_C( 1811029977), INT32_C( 1222382550), -INT32_C( 1130041901), INT32_C( 1581316327), INT32_C( 1209974434) } },
|
|
{ { INT32_C( 311648398), -INT32_C( 372477917), INT32_C( 808970838), -INT32_C( 526702327), INT32_C( 254310204), INT32_C( 1288490085), INT32_C( 1722485956), INT32_C( 1504692682) },
|
|
{ INT32_C( 311648398), -INT32_C( 372477917), INT32_C( 808970838), -INT32_C( 526702327), INT32_C( 254310204), INT32_C( 1288490085), INT32_C( 1722485956), INT32_C( 1504692682) } },
|
|
{ { INT32_C( 1282097705), INT32_C( 154482866), INT32_C( 741960738), -INT32_C( 770911083), -INT32_C( 1327418293), -INT32_C( 990008064), -INT32_C( 2077579078), -INT32_C( 1696736911) },
|
|
{ INT32_C( 1282097705), INT32_C( 154482866), INT32_C( 741960738), -INT32_C( 770911083), -INT32_C( 1327418293), -INT32_C( 990008064), -INT32_C( 2077579078), -INT32_C( 1696736911) } },
|
|
{ { -INT32_C( 823768805), -INT32_C( 1546183807), INT32_C( 483332231), INT32_C( 804183012), INT32_C( 266391567), INT32_C( 936631677), -INT32_C( 155386235), -INT32_C( 208627241) },
|
|
{ -INT32_C( 823768805), -INT32_C( 1546183807), INT32_C( 483332231), INT32_C( 804183012), INT32_C( 266391567), INT32_C( 936631677), -INT32_C( 155386235), -INT32_C( 208627241) } }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde__m256i a = simde_mm256_stream_load_si256(SIMDE_ALIGN_CAST(simde__m256i const*, test_vec[i].a));
|
|
simde_test_x86_assert_equal_i32x8(a, simde_x_mm256_loadu_epi32(test_vec[i].r));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sub_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( -37), INT8_C( -5), INT8_C( -23), INT8_C( 84),
|
|
INT8_C(-108), INT8_C( -92), INT8_C( 86), INT8_C( -77),
|
|
INT8_C( 77), INT8_C( -93), INT8_C( -37), INT8_C( 101),
|
|
INT8_C( 79), INT8_C( -45), INT8_C( 56), INT8_C( -51),
|
|
INT8_C( 103), INT8_C(-116), INT8_C( -58), INT8_C( -2),
|
|
INT8_C( 39), INT8_C(-101), INT8_C(-113), INT8_C( 21),
|
|
INT8_C( -77), INT8_C( 26), INT8_C( -37), INT8_C( 126),
|
|
INT8_C( 102), INT8_C( 27), INT8_C( -92), INT8_C( -33)),
|
|
simde_mm256_set_epi8(INT8_C(-122), INT8_C( -91), INT8_C( 24), INT8_C(-103),
|
|
INT8_C( 34), INT8_C( 5), INT8_C( 109), INT8_C(-120),
|
|
INT8_C( -7), INT8_C( 86), INT8_C( 3), INT8_C( 90),
|
|
INT8_C( 98), INT8_C(-108), INT8_C(-128), INT8_C( 33),
|
|
INT8_C( -84), INT8_C( -73), INT8_C( -39), INT8_C( 33),
|
|
INT8_C( 103), INT8_C( -21), INT8_C(-117), INT8_C( -60),
|
|
INT8_C( -48), INT8_C( -88), INT8_C( 95), INT8_C( 100),
|
|
INT8_C( -66), INT8_C( 52), INT8_C( -40), INT8_C( 90)),
|
|
simde_mm256_set_epi8(INT8_C( 85), INT8_C( 86), INT8_C( -47), INT8_C( -69),
|
|
INT8_C( 114), INT8_C( -97), INT8_C( -23), INT8_C( 43),
|
|
INT8_C( 84), INT8_C( 77), INT8_C( -40), INT8_C( 11),
|
|
INT8_C( -19), INT8_C( 63), INT8_C( -72), INT8_C( -84),
|
|
INT8_C( -69), INT8_C( -43), INT8_C( -19), INT8_C( -35),
|
|
INT8_C( -64), INT8_C( -80), INT8_C( 4), INT8_C( 81),
|
|
INT8_C( -29), INT8_C( 114), INT8_C( 124), INT8_C( 26),
|
|
INT8_C( -88), INT8_C( -25), INT8_C( -52), INT8_C(-123)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -74), INT8_C( -43), INT8_C( -65), INT8_C( 71),
|
|
INT8_C(-122), INT8_C(-128), INT8_C( 4), INT8_C( 54),
|
|
INT8_C( 12), INT8_C( 60), INT8_C( 80), INT8_C( -43),
|
|
INT8_C( -85), INT8_C( 94), INT8_C( -70), INT8_C( 67),
|
|
INT8_C( 82), INT8_C( 40), INT8_C( -92), INT8_C( -55),
|
|
INT8_C( 114), INT8_C( 12), INT8_C( -43), INT8_C( -93),
|
|
INT8_C( -89), INT8_C( -90), INT8_C( 46), INT8_C( -34),
|
|
INT8_C( -53), INT8_C( 0), INT8_C( 91), INT8_C( -43)),
|
|
simde_mm256_set_epi8(INT8_C( 34), INT8_C( -42), INT8_C( 32), INT8_C( -31),
|
|
INT8_C( 117), INT8_C( -44), INT8_C( 116), INT8_C( -46),
|
|
INT8_C( 114), INT8_C( 78), INT8_C( -3), INT8_C( 123),
|
|
INT8_C( 103), INT8_C( 4), INT8_C( -99), INT8_C(-112),
|
|
INT8_C( 67), INT8_C(-113), INT8_C( -1), INT8_C(-117),
|
|
INT8_C( -58), INT8_C( -63), INT8_C(-110), INT8_C( 65),
|
|
INT8_C( 53), INT8_C(-113), INT8_C(-123), INT8_C( -24),
|
|
INT8_C( -84), INT8_C( -96), INT8_C( 116), INT8_C( 23)),
|
|
simde_mm256_set_epi8(INT8_C(-108), INT8_C( -1), INT8_C( -97), INT8_C( 102),
|
|
INT8_C( 17), INT8_C( -84), INT8_C(-112), INT8_C( 100),
|
|
INT8_C(-102), INT8_C( -18), INT8_C( 83), INT8_C( 90),
|
|
INT8_C( 68), INT8_C( 90), INT8_C( 29), INT8_C( -77),
|
|
INT8_C( 15), INT8_C(-103), INT8_C( -91), INT8_C( 62),
|
|
INT8_C( -84), INT8_C( 75), INT8_C( 67), INT8_C( 98),
|
|
INT8_C( 114), INT8_C( 23), INT8_C( -87), INT8_C( -10),
|
|
INT8_C( 31), INT8_C( 96), INT8_C( -25), INT8_C( -66)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -56), INT8_C( -54), INT8_C( -84), INT8_C( -79),
|
|
INT8_C( 25), INT8_C( -22), INT8_C( -93), INT8_C( -71),
|
|
INT8_C(-106), INT8_C(-125), INT8_C( -67), INT8_C( 53),
|
|
INT8_C( 101), INT8_C(-105), INT8_C( -28), INT8_C( 37),
|
|
INT8_C( -61), INT8_C( -39), INT8_C(-117), INT8_C(-116),
|
|
INT8_C( -16), INT8_C(-126), INT8_C( 25), INT8_C( 103),
|
|
INT8_C( -81), INT8_C( 88), INT8_C( 1), INT8_C( 20),
|
|
INT8_C( 36), INT8_C( 16), INT8_C( -44), INT8_C( 107)),
|
|
simde_mm256_set_epi8(INT8_C( 73), INT8_C(-125), INT8_C( 72), INT8_C( 17),
|
|
INT8_C( -36), INT8_C( 20), INT8_C( -81), INT8_C( 10),
|
|
INT8_C( 119), INT8_C( 41), INT8_C( -90), INT8_C( -54),
|
|
INT8_C(-116), INT8_C( 15), INT8_C( -64), INT8_C( 60),
|
|
INT8_C( -43), INT8_C( 5), INT8_C( 93), INT8_C( 54),
|
|
INT8_C( -46), INT8_C(-106), INT8_C(-117), INT8_C( 127),
|
|
INT8_C( 81), INT8_C( -75), INT8_C(-105), INT8_C( 31),
|
|
INT8_C( 51), INT8_C(-105), INT8_C( -23), INT8_C( 95)),
|
|
simde_mm256_set_epi8(INT8_C( 127), INT8_C( 71), INT8_C( 100), INT8_C( -96),
|
|
INT8_C( 61), INT8_C( -42), INT8_C( -12), INT8_C( -81),
|
|
INT8_C( 31), INT8_C( 90), INT8_C( 23), INT8_C( 107),
|
|
INT8_C( -39), INT8_C(-120), INT8_C( 36), INT8_C( -23),
|
|
INT8_C( -18), INT8_C( -44), INT8_C( 46), INT8_C( 86),
|
|
INT8_C( 30), INT8_C( -20), INT8_C(-114), INT8_C( -24),
|
|
INT8_C( 94), INT8_C( -93), INT8_C( 106), INT8_C( -11),
|
|
INT8_C( -15), INT8_C( 121), INT8_C( -21), INT8_C( 12)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 114), INT8_C( 34), INT8_C( 26), INT8_C( -19),
|
|
INT8_C( -79), INT8_C( -66), INT8_C( -16), INT8_C( 14),
|
|
INT8_C(-119), INT8_C( 36), INT8_C( 48), INT8_C(-124),
|
|
INT8_C( -3), INT8_C( 65), INT8_C( 48), INT8_C(-117),
|
|
INT8_C( -76), INT8_C( -16), INT8_C( 83), INT8_C( 8),
|
|
INT8_C( 76), INT8_C( -37), INT8_C( -88), INT8_C( -95),
|
|
INT8_C( -96), INT8_C( 84), INT8_C( -4), INT8_C( 56),
|
|
INT8_C( 13), INT8_C( -84), INT8_C( 107), INT8_C( -97)),
|
|
simde_mm256_set_epi8(INT8_C(-116), INT8_C( -40), INT8_C( 117), INT8_C( -7),
|
|
INT8_C( -80), INT8_C( 53), INT8_C( -24), INT8_C(-123),
|
|
INT8_C(-119), INT8_C( -47), INT8_C( -64), INT8_C( -25),
|
|
INT8_C( 117), INT8_C( 45), INT8_C( 40), INT8_C( -91),
|
|
INT8_C( 19), INT8_C( 123), INT8_C( 36), INT8_C( -6),
|
|
INT8_C( 29), INT8_C( -9), INT8_C( 117), INT8_C( -17),
|
|
INT8_C( -12), INT8_C( 82), INT8_C( 121), INT8_C( 9),
|
|
INT8_C( -40), INT8_C(-118), INT8_C( -50), INT8_C( -94)),
|
|
simde_mm256_set_epi8(INT8_C( -26), INT8_C( 74), INT8_C( -91), INT8_C( -12),
|
|
INT8_C( 1), INT8_C(-119), INT8_C( 8), INT8_C(-119),
|
|
INT8_C( 0), INT8_C( 83), INT8_C( 112), INT8_C( -99),
|
|
INT8_C(-120), INT8_C( 20), INT8_C( 8), INT8_C( -26),
|
|
INT8_C( -95), INT8_C( 117), INT8_C( 47), INT8_C( 14),
|
|
INT8_C( 47), INT8_C( -28), INT8_C( 51), INT8_C( -78),
|
|
INT8_C( -84), INT8_C( 2), INT8_C(-125), INT8_C( 47),
|
|
INT8_C( 53), INT8_C( 34), INT8_C( -99), INT8_C( -3)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 95), INT8_C( -54), INT8_C( -5), INT8_C( -28),
|
|
INT8_C( -63), INT8_C( 54), INT8_C(-113), INT8_C( 127),
|
|
INT8_C( -25), INT8_C( -12), INT8_C(-108), INT8_C(-123),
|
|
INT8_C( -64), INT8_C( 68), INT8_C( 89), INT8_C( 72),
|
|
INT8_C( -46), INT8_C( -63), INT8_C( 56), INT8_C( 125),
|
|
INT8_C( 44), INT8_C( 8), INT8_C( 49), INT8_C( 105),
|
|
INT8_C( 43), INT8_C( 41), INT8_C( -46), INT8_C(-117),
|
|
INT8_C( 22), INT8_C( 27), INT8_C( -55), INT8_C( 106)),
|
|
simde_mm256_set_epi8(INT8_C( 15), INT8_C( -64), INT8_C( 3), INT8_C( -17),
|
|
INT8_C( 127), INT8_C(-101), INT8_C( 76), INT8_C( 31),
|
|
INT8_C( 79), INT8_C( 115), INT8_C( -72), INT8_C( -19),
|
|
INT8_C(-105), INT8_C( 117), INT8_C( -69), INT8_C( 62),
|
|
INT8_C( 51), INT8_C( -12), INT8_C( -69), INT8_C(-109),
|
|
INT8_C(-101), INT8_C( -50), INT8_C( 90), INT8_C( 52),
|
|
INT8_C( 58), INT8_C( -94), INT8_C( -69), INT8_C( 88),
|
|
INT8_C( -9), INT8_C( 25), INT8_C( 89), INT8_C( 31)),
|
|
simde_mm256_set_epi8(INT8_C( 80), INT8_C( 10), INT8_C( -8), INT8_C( -11),
|
|
INT8_C( 66), INT8_C(-101), INT8_C( 67), INT8_C( 96),
|
|
INT8_C(-104), INT8_C(-127), INT8_C( -36), INT8_C(-104),
|
|
INT8_C( 41), INT8_C( -49), INT8_C( -98), INT8_C( 10),
|
|
INT8_C( -97), INT8_C( -51), INT8_C( 125), INT8_C( -22),
|
|
INT8_C(-111), INT8_C( 58), INT8_C( -41), INT8_C( 53),
|
|
INT8_C( -15), INT8_C(-121), INT8_C( 23), INT8_C( 51),
|
|
INT8_C( 31), INT8_C( 2), INT8_C( 112), INT8_C( 75)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 58), INT8_C( -35), INT8_C( -9), INT8_C( -15),
|
|
INT8_C( -74), INT8_C( -92), INT8_C( -26), INT8_C( -48),
|
|
INT8_C( -14), INT8_C( 54), INT8_C( 39), INT8_C( 120),
|
|
INT8_C( -38), INT8_C( -90), INT8_C( 101), INT8_C( 25),
|
|
INT8_C( 90), INT8_C( 106), INT8_C( 24), INT8_C( -31),
|
|
INT8_C( -57), INT8_C( 7), INT8_C( 29), INT8_C( 106),
|
|
INT8_C( 124), INT8_C( 62), INT8_C( 44), INT8_C( 40),
|
|
INT8_C( 54), INT8_C( 54), INT8_C( -93), INT8_C( -77)),
|
|
simde_mm256_set_epi8(INT8_C( 65), INT8_C(-103), INT8_C( 10), INT8_C( 103),
|
|
INT8_C( 65), INT8_C( 90), INT8_C( -56), INT8_C( 98),
|
|
INT8_C( 64), INT8_C( 110), INT8_C( -94), INT8_C( 23),
|
|
INT8_C( -62), INT8_C( 19), INT8_C( 115), INT8_C( 93),
|
|
INT8_C( 68), INT8_C( 91), INT8_C( -1), INT8_C( 5),
|
|
INT8_C( 19), INT8_C( -54), INT8_C( -79), INT8_C(-124),
|
|
INT8_C( -14), INT8_C( 106), INT8_C( -71), INT8_C( -34),
|
|
INT8_C( 39), INT8_C( -20), INT8_C( 117), INT8_C( -23)),
|
|
simde_mm256_set_epi8(INT8_C( -7), INT8_C( 68), INT8_C( -19), INT8_C(-118),
|
|
INT8_C( 117), INT8_C( 74), INT8_C( 30), INT8_C( 110),
|
|
INT8_C( -78), INT8_C( -56), INT8_C(-123), INT8_C( 97),
|
|
INT8_C( 24), INT8_C(-109), INT8_C( -14), INT8_C( -68),
|
|
INT8_C( 22), INT8_C( 15), INT8_C( 25), INT8_C( -36),
|
|
INT8_C( -76), INT8_C( 61), INT8_C( 108), INT8_C( -26),
|
|
INT8_C(-118), INT8_C( -44), INT8_C( 115), INT8_C( 74),
|
|
INT8_C( 15), INT8_C( 74), INT8_C( 46), INT8_C( -54)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -10), INT8_C( 24), INT8_C(-113), INT8_C( -36),
|
|
INT8_C( 115), INT8_C( 49), INT8_C( 18), INT8_C( 86),
|
|
INT8_C( 112), INT8_C( 85), INT8_C( -24), INT8_C( -37),
|
|
INT8_C( -39), INT8_C( 13), INT8_C( 8), INT8_C( 92),
|
|
INT8_C( -95), INT8_C(-112), INT8_C( 83), INT8_C( 16),
|
|
INT8_C( 106), INT8_C(-127), INT8_C( 122), INT8_C( -83),
|
|
INT8_C( -96), INT8_C( -94), INT8_C( 86), INT8_C( -10),
|
|
INT8_C( -44), INT8_C( -36), INT8_C( 93), INT8_C( 71)),
|
|
simde_mm256_set_epi8(INT8_C( -12), INT8_C(-115), INT8_C( 101), INT8_C( -47),
|
|
INT8_C( 85), INT8_C( -78), INT8_C( -44), INT8_C( 16),
|
|
INT8_C( 71), INT8_C( 4), INT8_C( -58), INT8_C( 7),
|
|
INT8_C( 30), INT8_C( 54), INT8_C( 60), INT8_C( -1),
|
|
INT8_C( -73), INT8_C( -28), INT8_C( -92), INT8_C( -36),
|
|
INT8_C( 82), INT8_C( -11), INT8_C( -69), INT8_C( 2),
|
|
INT8_C( -76), INT8_C( 100), INT8_C( 99), INT8_C( 0),
|
|
INT8_C( -87), INT8_C( -70), INT8_C( 29), INT8_C( 121)),
|
|
simde_mm256_set_epi8(INT8_C( 2), INT8_C(-117), INT8_C( 42), INT8_C( 11),
|
|
INT8_C( 30), INT8_C( 127), INT8_C( 62), INT8_C( 70),
|
|
INT8_C( 41), INT8_C( 81), INT8_C( 34), INT8_C( -44),
|
|
INT8_C( -69), INT8_C( -41), INT8_C( -52), INT8_C( 93),
|
|
INT8_C( -22), INT8_C( -84), INT8_C( -81), INT8_C( 52),
|
|
INT8_C( 24), INT8_C(-116), INT8_C( -65), INT8_C( -85),
|
|
INT8_C( -20), INT8_C( 62), INT8_C( -13), INT8_C( -10),
|
|
INT8_C( 43), INT8_C( 34), INT8_C( 64), INT8_C( -50)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 2), INT8_C( -33), INT8_C( 21), INT8_C( 39),
|
|
INT8_C( -5), INT8_C(-110), INT8_C(-113), INT8_C( 98),
|
|
INT8_C( 6), INT8_C( 47), INT8_C( -26), INT8_C( 73),
|
|
INT8_C(-121), INT8_C( -53), INT8_C( 102), INT8_C( 110),
|
|
INT8_C( -38), INT8_C( -97), INT8_C( -70), INT8_C(-105),
|
|
INT8_C(-128), INT8_C( 48), INT8_C( -78), INT8_C( 108),
|
|
INT8_C( 118), INT8_C( 9), INT8_C( 40), INT8_C( 110),
|
|
INT8_C( -32), INT8_C( -25), INT8_C( 39), INT8_C(-123)),
|
|
simde_mm256_set_epi8(INT8_C( 15), INT8_C( 27), INT8_C( -7), INT8_C(-103),
|
|
INT8_C( 81), INT8_C( 127), INT8_C( -25), INT8_C( 51),
|
|
INT8_C( -31), INT8_C( 28), INT8_C(-102), INT8_C( 24),
|
|
INT8_C( 73), INT8_C( 119), INT8_C( 106), INT8_C( 1),
|
|
INT8_C( 5), INT8_C(-108), INT8_C( -84), INT8_C( 54),
|
|
INT8_C( -30), INT8_C(-120), INT8_C( 39), INT8_C( 6),
|
|
INT8_C(-115), INT8_C(-128), INT8_C( 110), INT8_C( 39),
|
|
INT8_C(-110), INT8_C(-102), INT8_C( 6), INT8_C( 126)),
|
|
simde_mm256_set_epi8(INT8_C( -13), INT8_C( -60), INT8_C( 28), INT8_C(-114),
|
|
INT8_C( -86), INT8_C( 19), INT8_C( -88), INT8_C( 47),
|
|
INT8_C( 37), INT8_C( 19), INT8_C( 76), INT8_C( 49),
|
|
INT8_C( 62), INT8_C( 84), INT8_C( -4), INT8_C( 109),
|
|
INT8_C( -43), INT8_C( 11), INT8_C( 14), INT8_C( 97),
|
|
INT8_C( -98), INT8_C( -88), INT8_C(-117), INT8_C( 102),
|
|
INT8_C( -23), INT8_C(-119), INT8_C( -70), INT8_C( 71),
|
|
INT8_C( 78), INT8_C( 77), INT8_C( 33), INT8_C( 7)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sub_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sub_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-27953), INT16_C(-25893), INT16_C( 18102), INT16_C( -6593),
|
|
INT16_C( 7623), INT16_C( 27326), INT16_C(-15847), INT16_C( 25196),
|
|
INT16_C( 4150), INT16_C( 31494), INT16_C( 14922), INT16_C( 2426),
|
|
INT16_C( 8906), INT16_C( -8618), INT16_C(-26305), INT16_C( 2552)),
|
|
simde_mm256_set_epi16(INT16_C(-20113), INT16_C( 26325), INT16_C( 23863), INT16_C(-13511),
|
|
INT16_C( 6653), INT16_C( 22833), INT16_C( 26506), INT16_C( 21325),
|
|
INT16_C(-18785), INT16_C( -8308), INT16_C( -2522), INT16_C( 805),
|
|
INT16_C(-27299), INT16_C( 31631), INT16_C( -9722), INT16_C( 3708)),
|
|
simde_mm256_set_epi16(INT16_C( -7840), INT16_C( 13318), INT16_C( -5761), INT16_C( 6918),
|
|
INT16_C( 970), INT16_C( 4493), INT16_C( 23183), INT16_C( 3871),
|
|
INT16_C( 22935), INT16_C(-25734), INT16_C( 17444), INT16_C( 1621),
|
|
INT16_C(-29331), INT16_C( 25287), INT16_C(-16583), INT16_C( -1156)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-11131), INT16_C(-17560), INT16_C( 30989), INT16_C( -1961),
|
|
INT16_C( 25635), INT16_C(-31167), INT16_C( 13893), INT16_C(-24056),
|
|
INT16_C( 29937), INT16_C( 24074), INT16_C( 3624), INT16_C( 30721),
|
|
INT16_C( 7318), INT16_C(-21871), INT16_C(-24159), INT16_C( 27811)),
|
|
simde_mm256_set_epi16(INT16_C(-14801), INT16_C( 18665), INT16_C( 21171), INT16_C( 2083),
|
|
INT16_C( 9794), INT16_C(-14994), INT16_C( -7071), INT16_C(-14888),
|
|
INT16_C( 17983), INT16_C(-13129), INT16_C(-28994), INT16_C( 8299),
|
|
INT16_C( 22982), INT16_C( 2227), INT16_C(-21646), INT16_C(-28910)),
|
|
simde_mm256_set_epi16(INT16_C( 3670), INT16_C( 29311), INT16_C( 9818), INT16_C( -4044),
|
|
INT16_C( 15841), INT16_C(-16173), INT16_C( 20964), INT16_C( -9168),
|
|
INT16_C( 11954), INT16_C(-28333), INT16_C( 32618), INT16_C( 22422),
|
|
INT16_C(-15664), INT16_C(-24098), INT16_C( -2513), INT16_C( -8815)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-23995), INT16_C( 25905), INT16_C( -5982), INT16_C( 20058),
|
|
INT16_C( 2118), INT16_C( -114), INT16_C( 287), INT16_C(-16504),
|
|
INT16_C( 12216), INT16_C( 31693), INT16_C( 7692), INT16_C(-10279),
|
|
INT16_C( -9654), INT16_C( 13919), INT16_C( 14030), INT16_C( -6049)),
|
|
simde_mm256_set_epi16(INT16_C( 18387), INT16_C( 3058), INT16_C( 24810), INT16_C(-31587),
|
|
INT16_C( 19314), INT16_C(-13527), INT16_C( 20849), INT16_C(-15645),
|
|
INT16_C( 4064), INT16_C( 5808), INT16_C( 11755), INT16_C( 23823),
|
|
INT16_C(-12210), INT16_C( -514), INT16_C(-10077), INT16_C( 8317)),
|
|
simde_mm256_set_epi16(INT16_C( 23154), INT16_C( 22847), INT16_C(-30792), INT16_C(-13891),
|
|
INT16_C(-17196), INT16_C( 13413), INT16_C(-20562), INT16_C( -859),
|
|
INT16_C( 8152), INT16_C( 25885), INT16_C( -4063), INT16_C( 31434),
|
|
INT16_C( 2556), INT16_C( 14433), INT16_C( 24107), INT16_C(-14366)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 16733), INT16_C(-19192), INT16_C(-19177), INT16_C(-13201),
|
|
INT16_C(-14970), INT16_C(-23573), INT16_C( 23037), INT16_C(-14068),
|
|
INT16_C( 18230), INT16_C( 11141), INT16_C( 3822), INT16_C( 6182),
|
|
INT16_C(-23525), INT16_C(-16307), INT16_C( 26522), INT16_C( 21806)),
|
|
simde_mm256_set_epi16(INT16_C(-30186), INT16_C( 24213), INT16_C( 29509), INT16_C( 2127),
|
|
INT16_C( -4444), INT16_C( 10965), INT16_C(-26578), INT16_C( -9065),
|
|
INT16_C( -2827), INT16_C( 31843), INT16_C( 28821), INT16_C( 8551),
|
|
INT16_C( -1781), INT16_C( 16565), INT16_C(-30183), INT16_C( 9876)),
|
|
simde_mm256_set_epi16(INT16_C(-18617), INT16_C( 22131), INT16_C( 16850), INT16_C(-15328),
|
|
INT16_C(-10526), INT16_C( 30998), INT16_C(-15921), INT16_C( -5003),
|
|
INT16_C( 21057), INT16_C(-20702), INT16_C(-24999), INT16_C( -2369),
|
|
INT16_C(-21744), INT16_C( 32664), INT16_C( -8831), INT16_C( 11930)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-10649), INT16_C( 1789), INT16_C( 27012), INT16_C( 5765),
|
|
INT16_C(-10851), INT16_C( 5376), INT16_C( -9175), INT16_C(-28947),
|
|
INT16_C( 7733), INT16_C( 7167), INT16_C(-27568), INT16_C( 2115),
|
|
INT16_C( 10120), INT16_C(-30644), INT16_C(-28345), INT16_C( 20915)),
|
|
simde_mm256_set_epi16(INT16_C( 23043), INT16_C( 25420), INT16_C( 19475), INT16_C(-31775),
|
|
INT16_C(-12265), INT16_C( -4342), INT16_C( 11340), INT16_C( 16492),
|
|
INT16_C( 28872), INT16_C( -2502), INT16_C(-23877), INT16_C(-30231),
|
|
INT16_C( 1907), INT16_C( 764), INT16_C( -427), INT16_C(-25788)),
|
|
simde_mm256_set_epi16(INT16_C( 31844), INT16_C(-23631), INT16_C( 7537), INT16_C(-27996),
|
|
INT16_C( 1414), INT16_C( 9718), INT16_C(-20515), INT16_C( 20097),
|
|
INT16_C(-21139), INT16_C( 9669), INT16_C( -3691), INT16_C( 32346),
|
|
INT16_C( 8213), INT16_C(-31408), INT16_C(-27918), INT16_C(-18833)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 10906), INT16_C( -7304), INT16_C( 1755), INT16_C( 4890),
|
|
INT16_C(-11395), INT16_C( -7564), INT16_C( 10816), INT16_C(-23172),
|
|
INT16_C(-11608), INT16_C(-11875), INT16_C(-15837), INT16_C(-17763),
|
|
INT16_C( 21395), INT16_C( 8598), INT16_C(-20063), INT16_C(-10275)),
|
|
simde_mm256_set_epi16(INT16_C( -9448), INT16_C( 6330), INT16_C(-18331), INT16_C( -6901),
|
|
INT16_C(-14581), INT16_C( 32348), INT16_C( 9963), INT16_C( 31451),
|
|
INT16_C( 24178), INT16_C( 12481), INT16_C( 12230), INT16_C(-12978),
|
|
INT16_C(-27030), INT16_C( -1366), INT16_C(-22019), INT16_C( 19232)),
|
|
simde_mm256_set_epi16(INT16_C( 20354), INT16_C(-13634), INT16_C( 20086), INT16_C( 11791),
|
|
INT16_C( 3186), INT16_C( 25624), INT16_C( 853), INT16_C( 10913),
|
|
INT16_C( 29750), INT16_C(-24356), INT16_C(-28067), INT16_C( -4785),
|
|
INT16_C(-17111), INT16_C( 9964), INT16_C( 1956), INT16_C(-29507)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 30843), INT16_C( 21336), INT16_C( 5686), INT16_C( 2828),
|
|
INT16_C( 19954), INT16_C( 31539), INT16_C(-19646), INT16_C( 671),
|
|
INT16_C( 25132), INT16_C( 3458), INT16_C(-19712), INT16_C( 4606),
|
|
INT16_C( 5503), INT16_C(-15517), INT16_C( 355), INT16_C( 25145)),
|
|
simde_mm256_set_epi16(INT16_C( -6584), INT16_C( 11532), INT16_C( 13185), INT16_C(-20125),
|
|
INT16_C( 10954), INT16_C( -8384), INT16_C( 2784), INT16_C( 19614),
|
|
INT16_C( 16337), INT16_C( 21741), INT16_C( 28414), INT16_C( 19897),
|
|
INT16_C(-27104), INT16_C( 23081), INT16_C( 17729), INT16_C( 27826)),
|
|
simde_mm256_set_epi16(INT16_C(-28109), INT16_C( 9804), INT16_C( -7499), INT16_C( 22953),
|
|
INT16_C( 9000), INT16_C(-25613), INT16_C(-22430), INT16_C(-18943),
|
|
INT16_C( 8795), INT16_C(-18283), INT16_C( 17410), INT16_C(-15291),
|
|
INT16_C( 32607), INT16_C( 26938), INT16_C(-17374), INT16_C( -2681)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-16362), INT16_C(-26163), INT16_C( -8945), INT16_C( 5119),
|
|
INT16_C( 30284), INT16_C( 12893), INT16_C(-21079), INT16_C( 124),
|
|
INT16_C( -1271), INT16_C( 3217), INT16_C( 20702), INT16_C( 647),
|
|
INT16_C(-30215), INT16_C( 25412), INT16_C( 851), INT16_C( 30446)),
|
|
simde_mm256_set_epi16(INT16_C( 8605), INT16_C(-24114), INT16_C( -5979), INT16_C( -9101),
|
|
INT16_C( 6437), INT16_C(-25374), INT16_C( 24146), INT16_C(-14771),
|
|
INT16_C(-26765), INT16_C( 30576), INT16_C( 25327), INT16_C( 1225),
|
|
INT16_C(-13633), INT16_C(-15186), INT16_C(-14472), INT16_C( 31809)),
|
|
simde_mm256_set_epi16(INT16_C(-24967), INT16_C( -2049), INT16_C( -2966), INT16_C( 14220),
|
|
INT16_C( 23847), INT16_C(-27269), INT16_C( 20311), INT16_C( 14895),
|
|
INT16_C( 25494), INT16_C(-27359), INT16_C( -4625), INT16_C( -578),
|
|
INT16_C(-16582), INT16_C(-24938), INT16_C( 15323), INT16_C( -1363)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sub_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sub_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 326943318), INT32_C(-1426446841), INT32_C( -705322739), INT32_C( 1382181134),
|
|
INT32_C( -752013979), INT32_C( 1926838871), INT32_C(-1267474220), INT32_C(-1807600682)),
|
|
simde_mm256_set_epi32(INT32_C( 251701658), INT32_C( 1304570849), INT32_C(-1313346575), INT32_C( 548342496),
|
|
INT32_C( 350328631), INT32_C( 492623957), INT32_C( 209048435), INT32_C( 494519967)),
|
|
simde_mm256_set_epi32(INT32_C( 75241660), INT32_C( 1563949606), INT32_C( 608023836), INT32_C( 833838638),
|
|
INT32_C(-1102342610), INT32_C( 1434214914), INT32_C(-1476522655), INT32_C( 1992846647)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -933394757), INT32_C( 2044671684), INT32_C( 359818497), INT32_C( 1070534780),
|
|
INT32_C( -970998086), INT32_C(-1718071453), INT32_C( 1676992968), INT32_C(-1700643811)),
|
|
simde_mm256_set_epi32(INT32_C( 1601497259), INT32_C( -783324799), INT32_C( 230836562), INT32_C( -793897628),
|
|
INT32_C( 2109010219), INT32_C( -500991481), INT32_C( 1633364343), INT32_C(-1085575788)),
|
|
simde_mm256_set_epi32(INT32_C( 1760075280), INT32_C(-1466970813), INT32_C( 128981935), INT32_C( 1864432408),
|
|
INT32_C( 1214958991), INT32_C(-1217079972), INT32_C( 43628625), INT32_C( -615068023)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -51216759), INT32_C( -878749548), INT32_C(-1368701232), INT32_C(-2046658418),
|
|
INT32_C(-1669301170), INT32_C(-2003910541), INT32_C( 1329758066), INT32_C( 1724000039)),
|
|
simde_mm256_set_epi32(INT32_C(-2019361399), INT32_C( 1441882288), INT32_C(-1015852054), INT32_C(-2140601122),
|
|
INT32_C( 1393090412), INT32_C( -54787332), INT32_C( -18616908), INT32_C(-2129018166)),
|
|
simde_mm256_set_epi32(INT32_C( 1968144640), INT32_C( 1974335460), INT32_C( -352849178), INT32_C( 93942704),
|
|
INT32_C( 1232575714), INT32_C(-1949123209), INT32_C( 1348374974), INT32_C( -441949091)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -198091267), INT32_C( -797938117), INT32_C( 1365606315), INT32_C( 1369771544),
|
|
INT32_C( 454471573), INT32_C(-1496770990), INT32_C(-1504062345), INT32_C(-1729521659)),
|
|
simde_mm256_set_epi32(INT32_C(-1875378957), INT32_C( 1413357347), INT32_C(-2041380610), INT32_C( 1834864782),
|
|
INT32_C( 265860555), INT32_C( 367864932), INT32_C(-1203083960), INT32_C( 193499515)),
|
|
simde_mm256_set_epi32(INT32_C( 1677287690), INT32_C( 2083671832), INT32_C( -887980371), INT32_C( -465093238),
|
|
INT32_C( 188611018), INT32_C(-1864635922), INT32_C( -300978385), INT32_C(-1923021174)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1042833230), INT32_C( 1624054732), INT32_C( 234631196), INT32_C( 738820353),
|
|
INT32_C(-1501237092), INT32_C(-1737761237), INT32_C(-1663334158), INT32_C( -439342149)),
|
|
simde_mm256_set_epi32(INT32_C( 164170961), INT32_C( 1826341689), INT32_C(-1379584328), INT32_C( -883834236),
|
|
INT32_C( -145065229), INT32_C( 1276456429), INT32_C( 908937179), INT32_C( 1101978337)),
|
|
simde_mm256_set_epi32(INT32_C(-1207004191), INT32_C( -202286957), INT32_C( 1614215524), INT32_C( 1622654589),
|
|
INT32_C(-1356171863), INT32_C( 1280749630), INT32_C( 1722695959), INT32_C(-1541320486)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1638607685), INT32_C(-2009128326), INT32_C( -563580109), INT32_C( 1319284819),
|
|
INT32_C( -21113241), INT32_C( -656216704), INT32_C( 927278729), INT32_C( 414207795)),
|
|
simde_mm256_set_epi32(INT32_C(-1371308348), INT32_C( 1761271665), INT32_C( 1358250649), INT32_C( -906482895),
|
|
INT32_C( 540611685), INT32_C( 776022210), INT32_C( 1935373704), INT32_C( -317327387)),
|
|
simde_mm256_set_epi32(INT32_C(-1285051263), INT32_C( 524567305), INT32_C(-1921830758), INT32_C(-2069199582),
|
|
INT32_C( -561724926), INT32_C(-1432238914), INT32_C(-1008094975), INT32_C( 731535182)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-2100986650), INT32_C( 1414058950), INT32_C(-1053542475), INT32_C( -736674814),
|
|
INT32_C(-2096553410), INT32_C(-1369794669), INT32_C( 26060713), INT32_C(-1294950753)),
|
|
simde_mm256_set_epi32(INT32_C( 2012616977), INT32_C( 1553490078), INT32_C( 324319438), INT32_C(-1664423684),
|
|
INT32_C( 1284704444), INT32_C( 1334884932), INT32_C(-1343260831), INT32_C( -516360618)),
|
|
simde_mm256_set_epi32(INT32_C( 181363669), INT32_C( -139431128), INT32_C(-1377861913), INT32_C( 927748870),
|
|
INT32_C( 913709442), INT32_C( 1590287695), INT32_C( 1369321544), INT32_C( -778590135)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1942786341), INT32_C(-1691503678), INT32_C(-1765167726), INT32_C( 1858759286),
|
|
INT32_C( 627375525), INT32_C(-1868274030), INT32_C( 12505540), INT32_C( 986732702)),
|
|
simde_mm256_set_epi32(INT32_C(-1777720655), INT32_C(-2032047915), INT32_C( -56259521), INT32_C( -952761137),
|
|
INT32_C( 805966046), INT32_C( 372017673), INT32_C( 20751226), INT32_C( -331388981)),
|
|
simde_mm256_set_epi32(INT32_C( -165065686), INT32_C( 340544237), INT32_C(-1708908205), INT32_C(-1483446873),
|
|
INT32_C( -178590521), INT32_C( 2054675593), INT32_C( -8245686), INT32_C( 1318121683)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sub_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_sub_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C(-2885858146882597019), INT64_C(-3498254024691385676),
|
|
INT64_C( 7972223233728178657), INT64_C( 6231317733982512179)),
|
|
simde_mm256_set_epi64x(INT64_C( 3826502112888397679), INT64_C(-8682306207824752089),
|
|
INT64_C( 8218291866756092637), INT64_C( 977663894185762148)),
|
|
simde_mm256_set_epi64x(INT64_C(-6712360259770994698), INT64_C( 5184052183133366413),
|
|
INT64_C( -246068633027913980), INT64_C( 5253653839796750031)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 7921380973104735890), INT64_C(-5532460099708114375),
|
|
INT64_C( 865084101794303087), INT64_C(-7356844417578967355)),
|
|
simde_mm256_set_epi64x(INT64_C(-3491207381975027904), INT64_C(-1030678116339367991),
|
|
INT64_C(-8175524911489530105), INT64_C( 323779015099665520)),
|
|
simde_mm256_set_epi64x(INT64_C(-7034155718629787822), INT64_C(-4501781983368746384),
|
|
INT64_C( 9040609013283833192), INT64_C(-7680623432678632875)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 4341016735029725119), INT64_C(-4017352277952498418),
|
|
INT64_C( 7582500189708583283), INT64_C(-5892965129862928683)),
|
|
simde_mm256_set_epi64x(INT64_C(-8237509791976513777), INT64_C( -470554251606780044),
|
|
INT64_C( 6040143329078659839), INT64_C( -424501583476695872)),
|
|
simde_mm256_set_epi64x(INT64_C(-5868217546703312720), INT64_C(-3546798026345718374),
|
|
INT64_C( 1542356860629923444), INT64_C(-5468463546386232811)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-7392183468556786070), INT64_C(-6610175517365172355),
|
|
INT64_C(-3756419626009538740), INT64_C(-9036454621798279072)),
|
|
simde_mm256_set_epi64x(INT64_C( 6035045015129345008), INT64_C( 8791627257213638823),
|
|
INT64_C(-8556126845609402343), INT64_C( 1314921607038438268)),
|
|
simde_mm256_set_epi64x(INT64_C( 5019515590023420538), INT64_C( 3044941299130740438),
|
|
INT64_C( 4799707219599863603), INT64_C( 8095367844872834276)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 8174138309950782489), INT64_C(-3595444893239169269),
|
|
INT64_C(-6261543721635705717), INT64_C(-8089986319993999570)),
|
|
simde_mm256_set_epi64x(INT64_C( 4668020520258365306), INT64_C( 1754255393252662962),
|
|
INT64_C( 1690801515152582572), INT64_C(-7136424812163547703)),
|
|
simde_mm256_set_epi64x(INT64_C( 3506117789692417183), INT64_C(-5349700286491832231),
|
|
INT64_C(-7952345236788288289), INT64_C( -953561507830451867)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 6033172137928900790), INT64_C(-5612895834493214657),
|
|
INT64_C(-8524528714074059580), INT64_C(-3969628664745125304)),
|
|
simde_mm256_set_epi64x(INT64_C( 7126793331936974199), INT64_C( 5665142255281704397),
|
|
INT64_C( 1602540828580772090), INT64_C( 8387594021483335882)),
|
|
simde_mm256_set_epi64x(INT64_C(-1093621194008073409), INT64_C( 7168705983934632562),
|
|
INT64_C( 8319674531054719946), INT64_C( 6089521387481090430)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 3903790755083266798), INT64_C(-4529825138752859475),
|
|
INT64_C( -488451067611140207), INT64_C( 375847149564403603)),
|
|
simde_mm256_set_epi64x(INT64_C(-7317636610137191039), INT64_C(-6404029010026237648),
|
|
INT64_C( 2684127196708781119), INT64_C(-4695910663442221977)),
|
|
simde_mm256_set_epi64x(INT64_C(-7225316708489093779), INT64_C( 1874203871273378173),
|
|
INT64_C(-3172578264319921326), INT64_C( 5071757813006625580)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( -634520004609695604), INT64_C(-4556943099082170660),
|
|
INT64_C( 407417976594608885), INT64_C(-2432518353344050945)),
|
|
simde_mm256_set_epi64x(INT64_C( 8351025001768468670), INT64_C(-2893015942465040381),
|
|
INT64_C(-7482511571570747740), INT64_C( 2790733591573448110)),
|
|
simde_mm256_set_epi64x(INT64_C(-8985545006378164274), INT64_C(-1663927156617130279),
|
|
INT64_C( 7889929548165356625), INT64_C(-5223251944917499055)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_sub_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_x_mm256_sub_epu32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 107879378), UINT32_C(2256216441), UINT32_C(1547145394), UINT32_C( 23322183),
|
|
UINT32_C( 24183335), UINT32_C(2032217709), UINT32_C( 971024796), UINT32_C(3326705122)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 149466069), UINT32_C(3517994125), UINT32_C(1432270320), UINT32_C(2851287457),
|
|
UINT32_C(1208329282), UINT32_C( 158848810), UINT32_C(3819928804), UINT32_C(3738317239)),
|
|
simde_x_mm256_set_epu32(UINT32_C(4253380605), UINT32_C(3033189612), UINT32_C( 114875074), UINT32_C(1467002022),
|
|
UINT32_C(3110821349), UINT32_C(1873368899), UINT32_C(1446063288), UINT32_C(3883355179)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(2351108717), UINT32_C( 184367791), UINT32_C( 651012821), UINT32_C(1858699737),
|
|
UINT32_C(2120954292), UINT32_C( 432426176), UINT32_C( 314621009), UINT32_C( 683154820)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2061753916), UINT32_C(3341354567), UINT32_C(2475959533), UINT32_C( 982967416),
|
|
UINT32_C(2049417650), UINT32_C(1285751824), UINT32_C(3637636007), UINT32_C(1398995246)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 289354801), UINT32_C(1137980520), UINT32_C(2470020584), UINT32_C( 875732321),
|
|
UINT32_C( 71536642), UINT32_C(3441641648), UINT32_C( 971952298), UINT32_C(3579126870)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1897588552), UINT32_C( 447224664), UINT32_C(2771607020), UINT32_C( 619382757),
|
|
UINT32_C(2584621804), UINT32_C( 967633271), UINT32_C(2311738101), UINT32_C(1795187199)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1007929400), UINT32_C(2616961748), UINT32_C(1589771424), UINT32_C(3081473365),
|
|
UINT32_C(3569555574), UINT32_C(3120660078), UINT32_C( 775299967), UINT32_C( 379946438)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 889659152), UINT32_C(2125230212), UINT32_C(1181835596), UINT32_C(1832876688),
|
|
UINT32_C(3310033526), UINT32_C(2141940489), UINT32_C(1536438134), UINT32_C(1415240761)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1476738727), UINT32_C(1269851975), UINT32_C(2316737502), UINT32_C( 66699996),
|
|
UINT32_C( 467087828), UINT32_C(2161831335), UINT32_C(4149911179), UINT32_C( 504793551)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3396602389), UINT32_C(3482637302), UINT32_C(4215273460), UINT32_C( 993218468),
|
|
UINT32_C(2631972858), UINT32_C(3366478001), UINT32_C(3680212603), UINT32_C(3739565912)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2375103634), UINT32_C(2082181969), UINT32_C(2396431338), UINT32_C(3368448824),
|
|
UINT32_C(2130082266), UINT32_C(3090320630), UINT32_C( 469698576), UINT32_C(1060194935)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 179882245), UINT32_C(4021916078), UINT32_C(3627300617), UINT32_C(3248980610),
|
|
UINT32_C( 191409075), UINT32_C(3646970912), UINT32_C(2035553404), UINT32_C(4075300565)),
|
|
simde_x_mm256_set_epu32(UINT32_C(4018869540), UINT32_C(3247000771), UINT32_C( 419518577), UINT32_C(1741182634),
|
|
UINT32_C( 293418594), UINT32_C(2336988215), UINT32_C(4218997823), UINT32_C( 205082086)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 455980001), UINT32_C( 774915307), UINT32_C(3207782040), UINT32_C(1507797976),
|
|
UINT32_C(4192957777), UINT32_C(1309982697), UINT32_C(2111522877), UINT32_C(3870218479)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 84590544), UINT32_C(4204381436), UINT32_C(3727353694), UINT32_C(2213501554),
|
|
UINT32_C(2836071016), UINT32_C(4047724580), UINT32_C(1001388660), UINT32_C(3282415970)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1074654014), UINT32_C(1012976116), UINT32_C(2090582329), UINT32_C(2908553801),
|
|
UINT32_C(1272437250), UINT32_C(3454899956), UINT32_C(3722866273), UINT32_C(4069029472)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3304903826), UINT32_C(3191405320), UINT32_C(1636771365), UINT32_C(3599915049),
|
|
UINT32_C(1563633766), UINT32_C( 592824624), UINT32_C(1573489683), UINT32_C(3508353794)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(2451663057), UINT32_C( 104156540), UINT32_C( 918040827), UINT32_C( 534540183),
|
|
UINT32_C(3003822364), UINT32_C(4203020917), UINT32_C(1548649531), UINT32_C( 205808915)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3286644093), UINT32_C(3785715782), UINT32_C( 33333951), UINT32_C( 270641278),
|
|
UINT32_C( 533308511), UINT32_C(1335157821), UINT32_C(2324891096), UINT32_C( 26430848)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3459986260), UINT32_C( 613408054), UINT32_C( 884706876), UINT32_C( 263898905),
|
|
UINT32_C(2470513853), UINT32_C(2867863096), UINT32_C(3518725731), UINT32_C( 179378067)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(2743667516), UINT32_C(3635884938), UINT32_C( 257447579), UINT32_C(2134094887),
|
|
UINT32_C( 404535734), UINT32_C(2034221371), UINT32_C(3960317580), UINT32_C( 591850571)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 570641927), UINT32_C(1821664575), UINT32_C( 96915915), UINT32_C( 55727396),
|
|
UINT32_C(4162444437), UINT32_C(1669109680), UINT32_C(1870162202), UINT32_C(3082396888)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2173025589), UINT32_C(1814220363), UINT32_C( 160531664), UINT32_C(2078367491),
|
|
UINT32_C( 537058593), UINT32_C( 365111691), UINT32_C(2090155378), UINT32_C(1804420979)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_x_mm256_sub_epu32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_subs_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 53), INT8_C( 22), INT8_C( -99), INT8_C( -90),
|
|
INT8_C( 42), INT8_C( 84), INT8_C( 24), INT8_C( 60),
|
|
INT8_C(-122), INT8_C( 44), INT8_C( -82), INT8_C( 91),
|
|
INT8_C( -59), INT8_C(-107), INT8_C( -72), INT8_C( -97),
|
|
INT8_C(-114), INT8_C( 65), INT8_C( -70), INT8_C( -44),
|
|
INT8_C( -34), INT8_C( 83), INT8_C( 30), INT8_C( 3),
|
|
INT8_C( 17), INT8_C( 66), INT8_C( 92), INT8_C( 52),
|
|
INT8_C( -56), INT8_C( 94), INT8_C( 119), INT8_C( 94)),
|
|
simde_mm256_set_epi8(INT8_C( 56), INT8_C( -13), INT8_C( -72), INT8_C( 29),
|
|
INT8_C( 36), INT8_C( 53), INT8_C( 55), INT8_C( 96),
|
|
INT8_C( 22), INT8_C( 124), INT8_C( 55), INT8_C( 67),
|
|
INT8_C( 105), INT8_C( -7), INT8_C( 41), INT8_C( -17),
|
|
INT8_C( 28), INT8_C( 17), INT8_C( -15), INT8_C( 70),
|
|
INT8_C( 15), INT8_C( -38), INT8_C( 93), INT8_C( 109),
|
|
INT8_C( 77), INT8_C(-109), INT8_C( 9), INT8_C( 58),
|
|
INT8_C( -56), INT8_C( 8), INT8_C( 92), INT8_C( -88)),
|
|
simde_mm256_set_epi8(INT8_C( -3), INT8_C( 35), INT8_C( -27), INT8_C(-119),
|
|
INT8_C( 6), INT8_C( 31), INT8_C( -31), INT8_C( -36),
|
|
INT8_C(-128), INT8_C( -80), INT8_C(-128), INT8_C( 24),
|
|
INT8_C(-128), INT8_C(-100), INT8_C(-113), INT8_C( -80),
|
|
INT8_C(-128), INT8_C( 48), INT8_C( -55), INT8_C(-114),
|
|
INT8_C( -49), INT8_C( 121), INT8_C( -63), INT8_C(-106),
|
|
INT8_C( -60), INT8_C( 127), INT8_C( 83), INT8_C( -6),
|
|
INT8_C( 0), INT8_C( 86), INT8_C( 27), INT8_C( 127)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -93), INT8_C( -26), INT8_C( 0), INT8_C( 17),
|
|
INT8_C(-120), INT8_C( 61), INT8_C(-102), INT8_C( 103),
|
|
INT8_C( 79), INT8_C( -49), INT8_C( -72), INT8_C( 47),
|
|
INT8_C( 110), INT8_C( -74), INT8_C( -56), INT8_C( 43),
|
|
INT8_C( 93), INT8_C( 101), INT8_C( 5), INT8_C( -56),
|
|
INT8_C( -87), INT8_C( 20), INT8_C(-114), INT8_C(-104),
|
|
INT8_C(-119), INT8_C( 75), INT8_C(-125), INT8_C( -24),
|
|
INT8_C( -47), INT8_C( -37), INT8_C( -74), INT8_C( -79)),
|
|
simde_mm256_set_epi8(INT8_C( 29), INT8_C( 85), INT8_C( 95), INT8_C( -5),
|
|
INT8_C( -3), INT8_C( 113), INT8_C( 45), INT8_C( -94),
|
|
INT8_C( -94), INT8_C( -99), INT8_C( 85), INT8_C( 102),
|
|
INT8_C( 95), INT8_C( 76), INT8_C( -35), INT8_C( -63),
|
|
INT8_C( 20), INT8_C( -12), INT8_C( 14), INT8_C(-108),
|
|
INT8_C( -3), INT8_C( -68), INT8_C( 90), INT8_C( 90),
|
|
INT8_C( 39), INT8_C( 15), INT8_C( 34), INT8_C( -85),
|
|
INT8_C(-115), INT8_C(-113), INT8_C( -50), INT8_C( 41)),
|
|
simde_mm256_set_epi8(INT8_C(-122), INT8_C(-111), INT8_C( -95), INT8_C( 22),
|
|
INT8_C(-117), INT8_C( -52), INT8_C(-128), INT8_C( 127),
|
|
INT8_C( 127), INT8_C( 50), INT8_C(-128), INT8_C( -55),
|
|
INT8_C( 15), INT8_C(-128), INT8_C( -21), INT8_C( 106),
|
|
INT8_C( 73), INT8_C( 113), INT8_C( -9), INT8_C( 52),
|
|
INT8_C( -84), INT8_C( 88), INT8_C(-128), INT8_C(-128),
|
|
INT8_C(-128), INT8_C( 60), INT8_C(-128), INT8_C( 61),
|
|
INT8_C( 68), INT8_C( 76), INT8_C( -24), INT8_C(-120)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-118), INT8_C( 5), INT8_C(-122), INT8_C( -40),
|
|
INT8_C( -95), INT8_C( 64), INT8_C( 56), INT8_C(-112),
|
|
INT8_C( -70), INT8_C( -39), INT8_C( 82), INT8_C( 89),
|
|
INT8_C( -25), INT8_C( -48), INT8_C( 6), INT8_C( 73),
|
|
INT8_C( -25), INT8_C( 89), INT8_C( 45), INT8_C( -40),
|
|
INT8_C( 7), INT8_C( -14), INT8_C( 103), INT8_C( 37),
|
|
INT8_C( -51), INT8_C( 59), INT8_C( -30), INT8_C( 28),
|
|
INT8_C( -3), INT8_C( -99), INT8_C( 87), INT8_C( 38)),
|
|
simde_mm256_set_epi8(INT8_C( -9), INT8_C( 27), INT8_C( -15), INT8_C(-127),
|
|
INT8_C(-108), INT8_C( -58), INT8_C( -97), INT8_C( -56),
|
|
INT8_C( 79), INT8_C( -35), INT8_C( -71), INT8_C( 22),
|
|
INT8_C( -63), INT8_C(-121), INT8_C( -22), INT8_C( 67),
|
|
INT8_C( 88), INT8_C( -40), INT8_C( -33), INT8_C( 36),
|
|
INT8_C( -18), INT8_C( 91), INT8_C( 119), INT8_C( 49),
|
|
INT8_C( 32), INT8_C(-120), INT8_C(-103), INT8_C( -96),
|
|
INT8_C( 75), INT8_C( 92), INT8_C( 46), INT8_C( -24)),
|
|
simde_mm256_set_epi8(INT8_C(-109), INT8_C( -22), INT8_C(-107), INT8_C( 87),
|
|
INT8_C( 13), INT8_C( 122), INT8_C( 127), INT8_C( -56),
|
|
INT8_C(-128), INT8_C( -4), INT8_C( 127), INT8_C( 67),
|
|
INT8_C( 38), INT8_C( 73), INT8_C( 28), INT8_C( 6),
|
|
INT8_C(-113), INT8_C( 127), INT8_C( 78), INT8_C( -76),
|
|
INT8_C( 25), INT8_C(-105), INT8_C( -16), INT8_C( -12),
|
|
INT8_C( -83), INT8_C( 127), INT8_C( 73), INT8_C( 124),
|
|
INT8_C( -78), INT8_C(-128), INT8_C( 41), INT8_C( 62)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 44), INT8_C( 83), INT8_C( -32), INT8_C( 9),
|
|
INT8_C( -69), INT8_C( 91), INT8_C( -61), INT8_C( 48),
|
|
INT8_C( -44), INT8_C( 120), INT8_C( 118), INT8_C( -37),
|
|
INT8_C(-112), INT8_C( -30), INT8_C( 84), INT8_C( 76),
|
|
INT8_C( -78), INT8_C( 115), INT8_C( -63), INT8_C( -12),
|
|
INT8_C( -25), INT8_C( 117), INT8_C( 23), INT8_C( -38),
|
|
INT8_C( -3), INT8_C( 33), INT8_C( 83), INT8_C( -23),
|
|
INT8_C( -34), INT8_C( 37), INT8_C( -85), INT8_C( -55)),
|
|
simde_mm256_set_epi8(INT8_C( 88), INT8_C(-105), INT8_C( -90), INT8_C( 16),
|
|
INT8_C(-116), INT8_C( -66), INT8_C( 122), INT8_C( 120),
|
|
INT8_C( -39), INT8_C( 67), INT8_C( 124), INT8_C( 106),
|
|
INT8_C( -41), INT8_C( 52), INT8_C( -14), INT8_C( -22),
|
|
INT8_C(-117), INT8_C( -91), INT8_C( 105), INT8_C( 6),
|
|
INT8_C(-100), INT8_C( 20), INT8_C( -55), INT8_C( 105),
|
|
INT8_C( -43), INT8_C( 29), INT8_C( 33), INT8_C( -82),
|
|
INT8_C(-126), INT8_C( 41), INT8_C( 41), INT8_C( -12)),
|
|
simde_mm256_set_epi8(INT8_C( -44), INT8_C( 127), INT8_C( 58), INT8_C( -7),
|
|
INT8_C( 47), INT8_C( 127), INT8_C(-128), INT8_C( -72),
|
|
INT8_C( -5), INT8_C( 53), INT8_C( -6), INT8_C(-128),
|
|
INT8_C( -71), INT8_C( -82), INT8_C( 98), INT8_C( 98),
|
|
INT8_C( 39), INT8_C( 127), INT8_C(-128), INT8_C( -18),
|
|
INT8_C( 75), INT8_C( 97), INT8_C( 78), INT8_C(-128),
|
|
INT8_C( 40), INT8_C( 4), INT8_C( 50), INT8_C( 59),
|
|
INT8_C( 92), INT8_C( -4), INT8_C(-126), INT8_C( -43)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 69), INT8_C( -19), INT8_C( -92), INT8_C( -51),
|
|
INT8_C( 104), INT8_C( 20), INT8_C( 21), INT8_C( -35),
|
|
INT8_C( -76), INT8_C( -66), INT8_C( 37), INT8_C( 59),
|
|
INT8_C( 60), INT8_C(-100), INT8_C( 19), INT8_C( 125),
|
|
INT8_C( 63), INT8_C( 96), INT8_C( -20), INT8_C( 53),
|
|
INT8_C( 121), INT8_C( 115), INT8_C( -36), INT8_C( 95),
|
|
INT8_C( 62), INT8_C( 99), INT8_C( -61), INT8_C( -76),
|
|
INT8_C( 55), INT8_C( 5), INT8_C( -93), INT8_C( -19)),
|
|
simde_mm256_set_epi8(INT8_C(-107), INT8_C( 27), INT8_C( 110), INT8_C( -66),
|
|
INT8_C(-108), INT8_C( 103), INT8_C( -63), INT8_C( 96),
|
|
INT8_C( 40), INT8_C( -37), INT8_C( 4), INT8_C( -24),
|
|
INT8_C( -32), INT8_C( 47), INT8_C( 83), INT8_C( -56),
|
|
INT8_C( -5), INT8_C(-125), INT8_C( 8), INT8_C( -20),
|
|
INT8_C( -92), INT8_C( -17), INT8_C( -76), INT8_C(-105),
|
|
INT8_C( -38), INT8_C( 10), INT8_C( 27), INT8_C( -81),
|
|
INT8_C( 92), INT8_C( 92), INT8_C( 46), INT8_C(-100)),
|
|
simde_mm256_set_epi8(INT8_C( 127), INT8_C( -46), INT8_C(-128), INT8_C( 15),
|
|
INT8_C( 127), INT8_C( -83), INT8_C( 84), INT8_C(-128),
|
|
INT8_C(-116), INT8_C( -29), INT8_C( 33), INT8_C( 83),
|
|
INT8_C( 92), INT8_C(-128), INT8_C( -64), INT8_C( 127),
|
|
INT8_C( 68), INT8_C( 127), INT8_C( -28), INT8_C( 73),
|
|
INT8_C( 127), INT8_C( 127), INT8_C( 40), INT8_C( 127),
|
|
INT8_C( 100), INT8_C( 89), INT8_C( -88), INT8_C( 5),
|
|
INT8_C( -37), INT8_C( -87), INT8_C(-128), INT8_C( 81)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -50), INT8_C( 75), INT8_C( -14), INT8_C( 54),
|
|
INT8_C( 43), INT8_C( -80), INT8_C(-125), INT8_C( 103),
|
|
INT8_C( 80), INT8_C( -1), INT8_C( -59), INT8_C( -13),
|
|
INT8_C(-111), INT8_C( 18), INT8_C( -92), INT8_C( 116),
|
|
INT8_C( 12), INT8_C( -97), INT8_C( -84), INT8_C( -83),
|
|
INT8_C( -61), INT8_C( 127), INT8_C( 102), INT8_C(-110),
|
|
INT8_C( 1), INT8_C( 91), INT8_C( -75), INT8_C( -20),
|
|
INT8_C( -58), INT8_C( -80), INT8_C( 101), INT8_C( 97)),
|
|
simde_mm256_set_epi8(INT8_C( 15), INT8_C( -47), INT8_C( 64), INT8_C( 40),
|
|
INT8_C( 22), INT8_C( 0), INT8_C( -93), INT8_C( 62),
|
|
INT8_C( -55), INT8_C( 95), INT8_C( -45), INT8_C( -91),
|
|
INT8_C( 44), INT8_C( 98), INT8_C( -37), INT8_C( -63),
|
|
INT8_C( -64), INT8_C( 91), INT8_C(-118), INT8_C( 36),
|
|
INT8_C(-114), INT8_C( 60), INT8_C( 43), INT8_C( -14),
|
|
INT8_C( -9), INT8_C( -85), INT8_C( -51), INT8_C( -99),
|
|
INT8_C(-120), INT8_C( 73), INT8_C( 109), INT8_C( 94)),
|
|
simde_mm256_set_epi8(INT8_C( -65), INT8_C( 122), INT8_C( -78), INT8_C( 14),
|
|
INT8_C( 21), INT8_C( -80), INT8_C( -32), INT8_C( 41),
|
|
INT8_C( 127), INT8_C( -96), INT8_C( -14), INT8_C( 78),
|
|
INT8_C(-128), INT8_C( -80), INT8_C( -55), INT8_C( 127),
|
|
INT8_C( 76), INT8_C(-128), INT8_C( 34), INT8_C(-119),
|
|
INT8_C( 53), INT8_C( 67), INT8_C( 59), INT8_C( -96),
|
|
INT8_C( 10), INT8_C( 127), INT8_C( -24), INT8_C( 79),
|
|
INT8_C( 62), INT8_C(-128), INT8_C( -8), INT8_C( 3)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -90), INT8_C( -41), INT8_C(-125), INT8_C( 28),
|
|
INT8_C( -59), INT8_C( -49), INT8_C( 55), INT8_C(-108),
|
|
INT8_C( 114), INT8_C(-122), INT8_C( 4), INT8_C(-102),
|
|
INT8_C( 92), INT8_C( -39), INT8_C( -84), INT8_C( 119),
|
|
INT8_C( -87), INT8_C( 8), INT8_C(-125), INT8_C( -67),
|
|
INT8_C( 61), INT8_C( 70), INT8_C( -88), INT8_C( 46),
|
|
INT8_C( -8), INT8_C( -33), INT8_C( 3), INT8_C( -52),
|
|
INT8_C( -90), INT8_C( 122), INT8_C( 12), INT8_C( -37)),
|
|
simde_mm256_set_epi8(INT8_C( 27), INT8_C(-128), INT8_C( -93), INT8_C( -38),
|
|
INT8_C( 107), INT8_C( 58), INT8_C( 66), INT8_C( -13),
|
|
INT8_C( 126), INT8_C( 106), INT8_C( 57), INT8_C( -95),
|
|
INT8_C(-110), INT8_C( 38), INT8_C( -48), INT8_C(-109),
|
|
INT8_C( 83), INT8_C( -82), INT8_C(-119), INT8_C( 15),
|
|
INT8_C( 122), INT8_C( -6), INT8_C( -15), INT8_C( 81),
|
|
INT8_C( -79), INT8_C( -92), INT8_C( 8), INT8_C( 40),
|
|
INT8_C( 33), INT8_C( 96), INT8_C(-114), INT8_C(-116)),
|
|
simde_mm256_set_epi8(INT8_C(-117), INT8_C( 87), INT8_C( -32), INT8_C( 66),
|
|
INT8_C(-128), INT8_C(-107), INT8_C( -11), INT8_C( -95),
|
|
INT8_C( -12), INT8_C(-128), INT8_C( -53), INT8_C( -7),
|
|
INT8_C( 127), INT8_C( -77), INT8_C( -36), INT8_C( 127),
|
|
INT8_C(-128), INT8_C( 90), INT8_C( -6), INT8_C( -82),
|
|
INT8_C( -61), INT8_C( 76), INT8_C( -73), INT8_C( -35),
|
|
INT8_C( 71), INT8_C( 59), INT8_C( -5), INT8_C( -92),
|
|
INT8_C(-123), INT8_C( 26), INT8_C( 126), INT8_C( 79)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -33), INT8_C( 57), INT8_C( 32), INT8_C( 63),
|
|
INT8_C( 13), INT8_C( 3), INT8_C(-124), INT8_C(-110),
|
|
INT8_C(-104), INT8_C( -9), INT8_C( -20), INT8_C( 115),
|
|
INT8_C(-123), INT8_C(-119), INT8_C( -41), INT8_C(-125),
|
|
INT8_C( 125), INT8_C( -55), INT8_C( 104), INT8_C( 103),
|
|
INT8_C( 40), INT8_C( 8), INT8_C(-109), INT8_C( 96),
|
|
INT8_C( 126), INT8_C( 21), INT8_C( -61), INT8_C( 85),
|
|
INT8_C( 120), INT8_C( 127), INT8_C( 54), INT8_C( 72)),
|
|
simde_mm256_set_epi8(INT8_C( 8), INT8_C( -54), INT8_C( -21), INT8_C( 62),
|
|
INT8_C( -44), INT8_C( -59), INT8_C( 7), INT8_C( 68),
|
|
INT8_C( 127), INT8_C( -4), INT8_C( 119), INT8_C( 63),
|
|
INT8_C( -49), INT8_C( 31), INT8_C( 25), INT8_C( -33),
|
|
INT8_C( 45), INT8_C( 7), INT8_C( 0), INT8_C( 88),
|
|
INT8_C( 47), INT8_C( -92), INT8_C( -21), INT8_C( 118),
|
|
INT8_C( -41), INT8_C( 85), INT8_C( 93), INT8_C( 38),
|
|
INT8_C( 60), INT8_C( 59), INT8_C( -96), INT8_C( -40)),
|
|
simde_mm256_set_epi8(INT8_C( -41), INT8_C( 111), INT8_C( 53), INT8_C( 1),
|
|
INT8_C( 57), INT8_C( 62), INT8_C(-128), INT8_C(-128),
|
|
INT8_C(-128), INT8_C( -5), INT8_C(-128), INT8_C( 52),
|
|
INT8_C( -74), INT8_C(-128), INT8_C( -66), INT8_C( -92),
|
|
INT8_C( 80), INT8_C( -62), INT8_C( 104), INT8_C( 15),
|
|
INT8_C( -7), INT8_C( 100), INT8_C( -88), INT8_C( -22),
|
|
INT8_C( 127), INT8_C( -64), INT8_C(-128), INT8_C( 47),
|
|
INT8_C( 60), INT8_C( 68), INT8_C( 127), INT8_C( 112)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_subs_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_subs_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 13590), INT16_C(-25178), INT16_C( 10836), INT16_C( 6204),
|
|
INT16_C(-31188), INT16_C(-20901), INT16_C(-14955), INT16_C(-18273),
|
|
INT16_C(-29119), INT16_C(-17708), INT16_C( -8621), INT16_C( 7683),
|
|
INT16_C( 4418), INT16_C( 23604), INT16_C(-14242), INT16_C( 30558)),
|
|
simde_mm256_set_epi16(INT16_C( 14579), INT16_C(-18403), INT16_C( 9269), INT16_C( 14176),
|
|
INT16_C( 5756), INT16_C( 14147), INT16_C( 27129), INT16_C( 10735),
|
|
INT16_C( 7185), INT16_C( -3770), INT16_C( 4058), INT16_C( 23917),
|
|
INT16_C( 19859), INT16_C( 2362), INT16_C(-14328), INT16_C( 23720)),
|
|
simde_mm256_set_epi16(INT16_C( -989), INT16_C( -6775), INT16_C( 1567), INT16_C( -7972),
|
|
INT16_C(-32768), INT16_C(-32768), INT16_C(-32768), INT16_C(-29008),
|
|
INT16_C(-32768), INT16_C(-13938), INT16_C(-12679), INT16_C(-16234),
|
|
INT16_C(-15441), INT16_C( 21242), INT16_C( 86), INT16_C( 6838)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-23578), INT16_C( 17), INT16_C(-30659), INT16_C(-26009),
|
|
INT16_C( 20431), INT16_C(-18385), INT16_C( 28342), INT16_C(-14293),
|
|
INT16_C( 23909), INT16_C( 1480), INT16_C(-22252), INT16_C(-29032),
|
|
INT16_C(-30389), INT16_C(-31768), INT16_C(-11813), INT16_C(-18767)),
|
|
simde_mm256_set_epi16(INT16_C( 7509), INT16_C( 24571), INT16_C( -655), INT16_C( 11682),
|
|
INT16_C(-23907), INT16_C( 21862), INT16_C( 24396), INT16_C( -8767),
|
|
INT16_C( 5364), INT16_C( 3732), INT16_C( -580), INT16_C( 23130),
|
|
INT16_C( 9999), INT16_C( 8875), INT16_C(-29297), INT16_C(-12759)),
|
|
simde_mm256_set_epi16(INT16_C(-31087), INT16_C(-24554), INT16_C(-30004), INT16_C(-32768),
|
|
INT16_C( 32767), INT16_C(-32768), INT16_C( 3946), INT16_C( -5526),
|
|
INT16_C( 18545), INT16_C( -2252), INT16_C(-21672), INT16_C(-32768),
|
|
INT16_C(-32768), INT16_C(-32768), INT16_C( 17484), INT16_C( -6008)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-30203), INT16_C(-31016), INT16_C(-24256), INT16_C( 14480),
|
|
INT16_C(-17703), INT16_C( 21081), INT16_C( -6192), INT16_C( 1609),
|
|
INT16_C( -6311), INT16_C( 11736), INT16_C( 2034), INT16_C( 26405),
|
|
INT16_C(-12997), INT16_C( -7652), INT16_C( -611), INT16_C( 22310)),
|
|
simde_mm256_set_epi16(INT16_C( -2277), INT16_C( -3711), INT16_C(-27450), INT16_C(-24632),
|
|
INT16_C( 20445), INT16_C(-18154), INT16_C(-15993), INT16_C( -5565),
|
|
INT16_C( 22744), INT16_C( -8412), INT16_C( -4517), INT16_C( 30513),
|
|
INT16_C( 8328), INT16_C(-26208), INT16_C( 19292), INT16_C( 12008)),
|
|
simde_mm256_set_epi16(INT16_C(-27926), INT16_C(-27305), INT16_C( 3194), INT16_C( 32767),
|
|
INT16_C(-32768), INT16_C( 32767), INT16_C( 9801), INT16_C( 7174),
|
|
INT16_C(-29055), INT16_C( 20148), INT16_C( 6551), INT16_C( -4108),
|
|
INT16_C(-21325), INT16_C( 18556), INT16_C(-19903), INT16_C( 10302)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 11347), INT16_C( -8183), INT16_C(-17573), INT16_C(-15568),
|
|
INT16_C(-11144), INT16_C( 30427), INT16_C(-28446), INT16_C( 21580),
|
|
INT16_C(-19853), INT16_C(-15884), INT16_C( -6283), INT16_C( 6106),
|
|
INT16_C( -735), INT16_C( 21481), INT16_C( -8667), INT16_C(-21559)),
|
|
simde_mm256_set_epi16(INT16_C( 22679), INT16_C(-23024), INT16_C(-29506), INT16_C( 31352),
|
|
INT16_C( -9917), INT16_C( 31850), INT16_C(-10444), INT16_C( -3350),
|
|
INT16_C(-29787), INT16_C( 26886), INT16_C(-25580), INT16_C(-13975),
|
|
INT16_C(-10979), INT16_C( 8622), INT16_C(-32215), INT16_C( 10740)),
|
|
simde_mm256_set_epi16(INT16_C(-11332), INT16_C( 14841), INT16_C( 11933), INT16_C(-32768),
|
|
INT16_C( -1227), INT16_C( -1423), INT16_C(-18002), INT16_C( 24930),
|
|
INT16_C( 9934), INT16_C(-32768), INT16_C( 19297), INT16_C( 20081),
|
|
INT16_C( 10244), INT16_C( 12859), INT16_C( 23548), INT16_C(-32299)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 17901), INT16_C(-23347), INT16_C( 26644), INT16_C( 5597),
|
|
INT16_C(-19266), INT16_C( 9531), INT16_C( 15516), INT16_C( 4989),
|
|
INT16_C( 16224), INT16_C( -5067), INT16_C( 31091), INT16_C( -9121),
|
|
INT16_C( 15971), INT16_C(-15436), INT16_C( 14085), INT16_C(-23571)),
|
|
simde_mm256_set_epi16(INT16_C(-27365), INT16_C( 28350), INT16_C(-27545), INT16_C(-16032),
|
|
INT16_C( 10459), INT16_C( 1256), INT16_C( -8145), INT16_C( 21448),
|
|
INT16_C( -1149), INT16_C( 2284), INT16_C(-23313), INT16_C(-19305),
|
|
INT16_C( -9718), INT16_C( 7087), INT16_C( 23644), INT16_C( 11932)),
|
|
simde_mm256_set_epi16(INT16_C( 32767), INT16_C(-32768), INT16_C( 32767), INT16_C( 21629),
|
|
INT16_C(-29725), INT16_C( 8275), INT16_C( 23661), INT16_C(-16459),
|
|
INT16_C( 17373), INT16_C( -7351), INT16_C( 32767), INT16_C( 10184),
|
|
INT16_C( 25689), INT16_C(-22523), INT16_C( -9559), INT16_C(-32768)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-12725), INT16_C( -3530), INT16_C( 11184), INT16_C(-31897),
|
|
INT16_C( 20735), INT16_C(-14861), INT16_C(-28398), INT16_C(-23436),
|
|
INT16_C( 3231), INT16_C(-21331), INT16_C(-15489), INT16_C( 26258),
|
|
INT16_C( 347), INT16_C(-18964), INT16_C(-14672), INT16_C( 25953)),
|
|
simde_mm256_set_epi16(INT16_C( 4049), INT16_C( 16424), INT16_C( 5632), INT16_C(-23746),
|
|
INT16_C(-13985), INT16_C(-11355), INT16_C( 11362), INT16_C( -9279),
|
|
INT16_C(-16293), INT16_C(-30172), INT16_C(-29124), INT16_C( 11250),
|
|
INT16_C( -2133), INT16_C(-12899), INT16_C(-30647), INT16_C( 27998)),
|
|
simde_mm256_set_epi16(INT16_C(-16774), INT16_C(-19954), INT16_C( 5552), INT16_C( -8151),
|
|
INT16_C( 32767), INT16_C( -3506), INT16_C(-32768), INT16_C(-14157),
|
|
INT16_C( 19524), INT16_C( 8841), INT16_C( 13635), INT16_C( 15008),
|
|
INT16_C( 2480), INT16_C( -6065), INT16_C( 15975), INT16_C( -2045)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-22825), INT16_C(-31972), INT16_C(-14897), INT16_C( 14228),
|
|
INT16_C( 29318), INT16_C( 1178), INT16_C( 23769), INT16_C(-21385),
|
|
INT16_C(-22264), INT16_C(-31811), INT16_C( 15686), INT16_C(-22482),
|
|
INT16_C( -1825), INT16_C( 972), INT16_C(-22918), INT16_C( 3291)),
|
|
simde_mm256_set_epi16(INT16_C( 7040), INT16_C(-23590), INT16_C( 27450), INT16_C( 17139),
|
|
INT16_C( 32362), INT16_C( 14753), INT16_C(-28122), INT16_C(-12141),
|
|
INT16_C( 21422), INT16_C(-30449), INT16_C( 31482), INT16_C( -3759),
|
|
INT16_C(-20060), INT16_C( 2088), INT16_C( 8544), INT16_C(-29044)),
|
|
simde_mm256_set_epi16(INT16_C(-29865), INT16_C( -8382), INT16_C(-32768), INT16_C( -2911),
|
|
INT16_C( -3044), INT16_C(-13575), INT16_C( 32767), INT16_C( -9244),
|
|
INT16_C(-32768), INT16_C( -1362), INT16_C(-15796), INT16_C(-18723),
|
|
INT16_C( 18235), INT16_C( -1116), INT16_C(-31462), INT16_C( 32335)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -8391), INT16_C( 8255), INT16_C( 3331), INT16_C(-31598),
|
|
INT16_C(-26377), INT16_C( -5005), INT16_C(-31351), INT16_C(-10365),
|
|
INT16_C( 32201), INT16_C( 26727), INT16_C( 10248), INT16_C(-27808),
|
|
INT16_C( 32277), INT16_C(-15531), INT16_C( 30847), INT16_C( 13896)),
|
|
simde_mm256_set_epi16(INT16_C( 2250), INT16_C( -5314), INT16_C(-11067), INT16_C( 1860),
|
|
INT16_C( 32764), INT16_C( 30527), INT16_C(-12513), INT16_C( 6623),
|
|
INT16_C( 11527), INT16_C( 88), INT16_C( 12196), INT16_C( -5258),
|
|
INT16_C(-10411), INT16_C( 23846), INT16_C( 15419), INT16_C(-24360)),
|
|
simde_mm256_set_epi16(INT16_C(-10641), INT16_C( 13569), INT16_C( 14398), INT16_C(-32768),
|
|
INT16_C(-32768), INT16_C(-32768), INT16_C(-18838), INT16_C(-16988),
|
|
INT16_C( 20674), INT16_C( 26639), INT16_C( -1948), INT16_C(-22550),
|
|
INT16_C( 32767), INT16_C(-32768), INT16_C( 15428), INT16_C( 32767)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_subs_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_subs_epu8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 53), UINT8_C( 22), UINT8_C(157), UINT8_C(166),
|
|
UINT8_C( 42), UINT8_C( 84), UINT8_C( 24), UINT8_C( 60),
|
|
UINT8_C(134), UINT8_C( 44), UINT8_C(174), UINT8_C( 91),
|
|
UINT8_C(197), UINT8_C(149), UINT8_C(184), UINT8_C(159),
|
|
UINT8_C(142), UINT8_C( 65), UINT8_C(186), UINT8_C(212),
|
|
UINT8_C(222), UINT8_C( 83), UINT8_C( 30), UINT8_C( 3),
|
|
UINT8_C( 17), UINT8_C( 66), UINT8_C( 92), UINT8_C( 52),
|
|
UINT8_C(200), UINT8_C( 94), UINT8_C(119), UINT8_C( 94)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 56), UINT8_C(243), UINT8_C(184), UINT8_C( 29),
|
|
UINT8_C( 36), UINT8_C( 53), UINT8_C( 55), UINT8_C( 96),
|
|
UINT8_C( 22), UINT8_C(124), UINT8_C( 55), UINT8_C( 67),
|
|
UINT8_C(105), UINT8_C(249), UINT8_C( 41), UINT8_C(239),
|
|
UINT8_C( 28), UINT8_C( 17), UINT8_C(241), UINT8_C( 70),
|
|
UINT8_C( 15), UINT8_C(218), UINT8_C( 93), UINT8_C(109),
|
|
UINT8_C( 77), UINT8_C(147), UINT8_C( 9), UINT8_C( 58),
|
|
UINT8_C(200), UINT8_C( 8), UINT8_C( 92), UINT8_C(168)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(137),
|
|
UINT8_C( 6), UINT8_C( 31), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(112), UINT8_C( 0), UINT8_C(119), UINT8_C( 24),
|
|
UINT8_C( 92), UINT8_C( 0), UINT8_C(143), UINT8_C( 0),
|
|
UINT8_C(114), UINT8_C( 48), UINT8_C( 0), UINT8_C(142),
|
|
UINT8_C(207), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 83), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 86), UINT8_C( 27), UINT8_C( 0)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(163), UINT8_C(230), UINT8_C( 0), UINT8_C( 17),
|
|
UINT8_C(136), UINT8_C( 61), UINT8_C(154), UINT8_C(103),
|
|
UINT8_C( 79), UINT8_C(207), UINT8_C(184), UINT8_C( 47),
|
|
UINT8_C(110), UINT8_C(182), UINT8_C(200), UINT8_C( 43),
|
|
UINT8_C( 93), UINT8_C(101), UINT8_C( 5), UINT8_C(200),
|
|
UINT8_C(169), UINT8_C( 20), UINT8_C(142), UINT8_C(152),
|
|
UINT8_C(137), UINT8_C( 75), UINT8_C(131), UINT8_C(232),
|
|
UINT8_C(209), UINT8_C(219), UINT8_C(182), UINT8_C(177)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 29), UINT8_C( 85), UINT8_C( 95), UINT8_C(251),
|
|
UINT8_C(253), UINT8_C(113), UINT8_C( 45), UINT8_C(162),
|
|
UINT8_C(162), UINT8_C(157), UINT8_C( 85), UINT8_C(102),
|
|
UINT8_C( 95), UINT8_C( 76), UINT8_C(221), UINT8_C(193),
|
|
UINT8_C( 20), UINT8_C(244), UINT8_C( 14), UINT8_C(148),
|
|
UINT8_C(253), UINT8_C(188), UINT8_C( 90), UINT8_C( 90),
|
|
UINT8_C( 39), UINT8_C( 15), UINT8_C( 34), UINT8_C(171),
|
|
UINT8_C(141), UINT8_C(143), UINT8_C(206), UINT8_C( 41)),
|
|
simde_x_mm256_set_epu8(UINT8_C(134), UINT8_C(145), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(109), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 50), UINT8_C( 99), UINT8_C( 0),
|
|
UINT8_C( 15), UINT8_C(106), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 73), UINT8_C( 0), UINT8_C( 0), UINT8_C( 52),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 52), UINT8_C( 62),
|
|
UINT8_C( 98), UINT8_C( 60), UINT8_C( 97), UINT8_C( 61),
|
|
UINT8_C( 68), UINT8_C( 76), UINT8_C( 0), UINT8_C(136)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(138), UINT8_C( 5), UINT8_C(134), UINT8_C(216),
|
|
UINT8_C(161), UINT8_C( 64), UINT8_C( 56), UINT8_C(144),
|
|
UINT8_C(186), UINT8_C(217), UINT8_C( 82), UINT8_C( 89),
|
|
UINT8_C(231), UINT8_C(208), UINT8_C( 6), UINT8_C( 73),
|
|
UINT8_C(231), UINT8_C( 89), UINT8_C( 45), UINT8_C(216),
|
|
UINT8_C( 7), UINT8_C(242), UINT8_C(103), UINT8_C( 37),
|
|
UINT8_C(205), UINT8_C( 59), UINT8_C(226), UINT8_C( 28),
|
|
UINT8_C(253), UINT8_C(157), UINT8_C( 87), UINT8_C( 38)),
|
|
simde_x_mm256_set_epu8(UINT8_C(247), UINT8_C( 27), UINT8_C(241), UINT8_C(129),
|
|
UINT8_C(148), UINT8_C(198), UINT8_C(159), UINT8_C(200),
|
|
UINT8_C( 79), UINT8_C(221), UINT8_C(185), UINT8_C( 22),
|
|
UINT8_C(193), UINT8_C(135), UINT8_C(234), UINT8_C( 67),
|
|
UINT8_C( 88), UINT8_C(216), UINT8_C(223), UINT8_C( 36),
|
|
UINT8_C(238), UINT8_C( 91), UINT8_C(119), UINT8_C( 49),
|
|
UINT8_C( 32), UINT8_C(136), UINT8_C(153), UINT8_C(160),
|
|
UINT8_C( 75), UINT8_C( 92), UINT8_C( 46), UINT8_C(232)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 87),
|
|
UINT8_C( 13), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(107), UINT8_C( 0), UINT8_C( 0), UINT8_C( 67),
|
|
UINT8_C( 38), UINT8_C( 73), UINT8_C( 0), UINT8_C( 6),
|
|
UINT8_C(143), UINT8_C( 0), UINT8_C( 0), UINT8_C(180),
|
|
UINT8_C( 0), UINT8_C(151), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C(173), UINT8_C( 0), UINT8_C( 73), UINT8_C( 0),
|
|
UINT8_C(178), UINT8_C( 65), UINT8_C( 41), UINT8_C( 0)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 44), UINT8_C( 83), UINT8_C(224), UINT8_C( 9),
|
|
UINT8_C(187), UINT8_C( 91), UINT8_C(195), UINT8_C( 48),
|
|
UINT8_C(212), UINT8_C(120), UINT8_C(118), UINT8_C(219),
|
|
UINT8_C(144), UINT8_C(226), UINT8_C( 84), UINT8_C( 76),
|
|
UINT8_C(178), UINT8_C(115), UINT8_C(193), UINT8_C(244),
|
|
UINT8_C(231), UINT8_C(117), UINT8_C( 23), UINT8_C(218),
|
|
UINT8_C(253), UINT8_C( 33), UINT8_C( 83), UINT8_C(233),
|
|
UINT8_C(222), UINT8_C( 37), UINT8_C(171), UINT8_C(201)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 88), UINT8_C(151), UINT8_C(166), UINT8_C( 16),
|
|
UINT8_C(140), UINT8_C(190), UINT8_C(122), UINT8_C(120),
|
|
UINT8_C(217), UINT8_C( 67), UINT8_C(124), UINT8_C(106),
|
|
UINT8_C(215), UINT8_C( 52), UINT8_C(242), UINT8_C(234),
|
|
UINT8_C(139), UINT8_C(165), UINT8_C(105), UINT8_C( 6),
|
|
UINT8_C(156), UINT8_C( 20), UINT8_C(201), UINT8_C(105),
|
|
UINT8_C(213), UINT8_C( 29), UINT8_C( 33), UINT8_C(174),
|
|
UINT8_C(130), UINT8_C( 41), UINT8_C( 41), UINT8_C(244)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C( 0), UINT8_C( 58), UINT8_C( 0),
|
|
UINT8_C( 47), UINT8_C( 0), UINT8_C( 73), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 53), UINT8_C( 0), UINT8_C(113),
|
|
UINT8_C( 0), UINT8_C(174), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 39), UINT8_C( 0), UINT8_C( 88), UINT8_C(238),
|
|
UINT8_C( 75), UINT8_C( 97), UINT8_C( 0), UINT8_C(113),
|
|
UINT8_C( 40), UINT8_C( 4), UINT8_C( 50), UINT8_C( 59),
|
|
UINT8_C( 92), UINT8_C( 0), UINT8_C(130), UINT8_C( 0)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C( 69), UINT8_C(237), UINT8_C(164), UINT8_C(205),
|
|
UINT8_C(104), UINT8_C( 20), UINT8_C( 21), UINT8_C(221),
|
|
UINT8_C(180), UINT8_C(190), UINT8_C( 37), UINT8_C( 59),
|
|
UINT8_C( 60), UINT8_C(156), UINT8_C( 19), UINT8_C(125),
|
|
UINT8_C( 63), UINT8_C( 96), UINT8_C(236), UINT8_C( 53),
|
|
UINT8_C(121), UINT8_C(115), UINT8_C(220), UINT8_C( 95),
|
|
UINT8_C( 62), UINT8_C( 99), UINT8_C(195), UINT8_C(180),
|
|
UINT8_C( 55), UINT8_C( 5), UINT8_C(163), UINT8_C(237)),
|
|
simde_x_mm256_set_epu8(UINT8_C(149), UINT8_C( 27), UINT8_C(110), UINT8_C(190),
|
|
UINT8_C(148), UINT8_C(103), UINT8_C(193), UINT8_C( 96),
|
|
UINT8_C( 40), UINT8_C(219), UINT8_C( 4), UINT8_C(232),
|
|
UINT8_C(224), UINT8_C( 47), UINT8_C( 83), UINT8_C(200),
|
|
UINT8_C(251), UINT8_C(131), UINT8_C( 8), UINT8_C(236),
|
|
UINT8_C(164), UINT8_C(239), UINT8_C(180), UINT8_C(151),
|
|
UINT8_C(218), UINT8_C( 10), UINT8_C( 27), UINT8_C(175),
|
|
UINT8_C( 92), UINT8_C( 92), UINT8_C( 46), UINT8_C(156)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 0), UINT8_C(210), UINT8_C( 54), UINT8_C( 15),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C(125),
|
|
UINT8_C(140), UINT8_C( 0), UINT8_C( 33), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(109), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(228), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 40), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 89), UINT8_C(168), UINT8_C( 5),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(117), UINT8_C( 81)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(206), UINT8_C( 75), UINT8_C(242), UINT8_C( 54),
|
|
UINT8_C( 43), UINT8_C(176), UINT8_C(131), UINT8_C(103),
|
|
UINT8_C( 80), UINT8_C(255), UINT8_C(197), UINT8_C(243),
|
|
UINT8_C(145), UINT8_C( 18), UINT8_C(164), UINT8_C(116),
|
|
UINT8_C( 12), UINT8_C(159), UINT8_C(172), UINT8_C(173),
|
|
UINT8_C(195), UINT8_C(127), UINT8_C(102), UINT8_C(146),
|
|
UINT8_C( 1), UINT8_C( 91), UINT8_C(181), UINT8_C(236),
|
|
UINT8_C(198), UINT8_C(176), UINT8_C(101), UINT8_C( 97)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 15), UINT8_C(209), UINT8_C( 64), UINT8_C( 40),
|
|
UINT8_C( 22), UINT8_C( 0), UINT8_C(163), UINT8_C( 62),
|
|
UINT8_C(201), UINT8_C( 95), UINT8_C(211), UINT8_C(165),
|
|
UINT8_C( 44), UINT8_C( 98), UINT8_C(219), UINT8_C(193),
|
|
UINT8_C(192), UINT8_C( 91), UINT8_C(138), UINT8_C( 36),
|
|
UINT8_C(142), UINT8_C( 60), UINT8_C( 43), UINT8_C(242),
|
|
UINT8_C(247), UINT8_C(171), UINT8_C(205), UINT8_C(157),
|
|
UINT8_C(136), UINT8_C( 73), UINT8_C(109), UINT8_C( 94)),
|
|
simde_x_mm256_set_epu8(UINT8_C(191), UINT8_C( 0), UINT8_C(178), UINT8_C( 14),
|
|
UINT8_C( 21), UINT8_C(176), UINT8_C( 0), UINT8_C( 41),
|
|
UINT8_C( 0), UINT8_C(160), UINT8_C( 0), UINT8_C( 78),
|
|
UINT8_C(101), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 68), UINT8_C( 34), UINT8_C(137),
|
|
UINT8_C( 53), UINT8_C( 67), UINT8_C( 59), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 79),
|
|
UINT8_C( 62), UINT8_C(103), UINT8_C( 0), UINT8_C( 3)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(166), UINT8_C(215), UINT8_C(131), UINT8_C( 28),
|
|
UINT8_C(197), UINT8_C(207), UINT8_C( 55), UINT8_C(148),
|
|
UINT8_C(114), UINT8_C(134), UINT8_C( 4), UINT8_C(154),
|
|
UINT8_C( 92), UINT8_C(217), UINT8_C(172), UINT8_C(119),
|
|
UINT8_C(169), UINT8_C( 8), UINT8_C(131), UINT8_C(189),
|
|
UINT8_C( 61), UINT8_C( 70), UINT8_C(168), UINT8_C( 46),
|
|
UINT8_C(248), UINT8_C(223), UINT8_C( 3), UINT8_C(204),
|
|
UINT8_C(166), UINT8_C(122), UINT8_C( 12), UINT8_C(219)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 27), UINT8_C(128), UINT8_C(163), UINT8_C(218),
|
|
UINT8_C(107), UINT8_C( 58), UINT8_C( 66), UINT8_C(243),
|
|
UINT8_C(126), UINT8_C(106), UINT8_C( 57), UINT8_C(161),
|
|
UINT8_C(146), UINT8_C( 38), UINT8_C(208), UINT8_C(147),
|
|
UINT8_C( 83), UINT8_C(174), UINT8_C(137), UINT8_C( 15),
|
|
UINT8_C(122), UINT8_C(250), UINT8_C(241), UINT8_C( 81),
|
|
UINT8_C(177), UINT8_C(164), UINT8_C( 8), UINT8_C( 40),
|
|
UINT8_C( 33), UINT8_C( 96), UINT8_C(142), UINT8_C(140)),
|
|
simde_x_mm256_set_epu8(UINT8_C(139), UINT8_C( 87), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 90), UINT8_C(149), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 28), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C(179), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 86), UINT8_C( 0), UINT8_C( 0), UINT8_C(174),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 71), UINT8_C( 59), UINT8_C( 0), UINT8_C(164),
|
|
UINT8_C(133), UINT8_C( 26), UINT8_C( 0), UINT8_C( 79)) },
|
|
{ simde_x_mm256_set_epu8(UINT8_C(223), UINT8_C( 57), UINT8_C( 32), UINT8_C( 63),
|
|
UINT8_C( 13), UINT8_C( 3), UINT8_C(132), UINT8_C(146),
|
|
UINT8_C(152), UINT8_C(247), UINT8_C(236), UINT8_C(115),
|
|
UINT8_C(133), UINT8_C(137), UINT8_C(215), UINT8_C(131),
|
|
UINT8_C(125), UINT8_C(201), UINT8_C(104), UINT8_C(103),
|
|
UINT8_C( 40), UINT8_C( 8), UINT8_C(147), UINT8_C( 96),
|
|
UINT8_C(126), UINT8_C( 21), UINT8_C(195), UINT8_C( 85),
|
|
UINT8_C(120), UINT8_C(127), UINT8_C( 54), UINT8_C( 72)),
|
|
simde_x_mm256_set_epu8(UINT8_C( 8), UINT8_C(202), UINT8_C(235), UINT8_C( 62),
|
|
UINT8_C(212), UINT8_C(197), UINT8_C( 7), UINT8_C( 68),
|
|
UINT8_C(127), UINT8_C(252), UINT8_C(119), UINT8_C( 63),
|
|
UINT8_C(207), UINT8_C( 31), UINT8_C( 25), UINT8_C(223),
|
|
UINT8_C( 45), UINT8_C( 7), UINT8_C( 0), UINT8_C( 88),
|
|
UINT8_C( 47), UINT8_C(164), UINT8_C(235), UINT8_C(118),
|
|
UINT8_C(215), UINT8_C( 85), UINT8_C( 93), UINT8_C( 38),
|
|
UINT8_C( 60), UINT8_C( 59), UINT8_C(160), UINT8_C(216)),
|
|
simde_x_mm256_set_epu8(UINT8_C(215), UINT8_C( 0), UINT8_C( 0), UINT8_C( 1),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(125), UINT8_C( 78),
|
|
UINT8_C( 25), UINT8_C( 0), UINT8_C(117), UINT8_C( 52),
|
|
UINT8_C( 0), UINT8_C(106), UINT8_C(190), UINT8_C( 0),
|
|
UINT8_C( 80), UINT8_C(194), UINT8_C(104), UINT8_C( 15),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C( 0), UINT8_C( 0),
|
|
UINT8_C( 0), UINT8_C( 0), UINT8_C(102), UINT8_C( 47),
|
|
UINT8_C( 60), UINT8_C( 68), UINT8_C( 0), UINT8_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_subs_epu8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_subs_epu16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 13590), UINT16_C( 40358), UINT16_C( 10836), UINT16_C( 6204),
|
|
UINT16_C( 34348), UINT16_C( 44635), UINT16_C( 50581), UINT16_C( 47263),
|
|
UINT16_C( 36417), UINT16_C( 47828), UINT16_C( 56915), UINT16_C( 7683),
|
|
UINT16_C( 4418), UINT16_C( 23604), UINT16_C( 51294), UINT16_C( 30558)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 14579), UINT16_C( 47133), UINT16_C( 9269), UINT16_C( 14176),
|
|
UINT16_C( 5756), UINT16_C( 14147), UINT16_C( 27129), UINT16_C( 10735),
|
|
UINT16_C( 7185), UINT16_C( 61766), UINT16_C( 4058), UINT16_C( 23917),
|
|
UINT16_C( 19859), UINT16_C( 2362), UINT16_C( 51208), UINT16_C( 23720)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 0), UINT16_C( 0), UINT16_C( 1567), UINT16_C( 0),
|
|
UINT16_C( 28592), UINT16_C( 30488), UINT16_C( 23452), UINT16_C( 36528),
|
|
UINT16_C( 29232), UINT16_C( 0), UINT16_C( 52857), UINT16_C( 0),
|
|
UINT16_C( 0), UINT16_C( 21242), UINT16_C( 86), UINT16_C( 6838)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 41958), UINT16_C( 17), UINT16_C( 34877), UINT16_C( 39527),
|
|
UINT16_C( 20431), UINT16_C( 47151), UINT16_C( 28342), UINT16_C( 51243),
|
|
UINT16_C( 23909), UINT16_C( 1480), UINT16_C( 43284), UINT16_C( 36504),
|
|
UINT16_C( 35147), UINT16_C( 33768), UINT16_C( 53723), UINT16_C( 46769)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 7509), UINT16_C( 24571), UINT16_C( 64881), UINT16_C( 11682),
|
|
UINT16_C( 41629), UINT16_C( 21862), UINT16_C( 24396), UINT16_C( 56769),
|
|
UINT16_C( 5364), UINT16_C( 3732), UINT16_C( 64956), UINT16_C( 23130),
|
|
UINT16_C( 9999), UINT16_C( 8875), UINT16_C( 36239), UINT16_C( 52777)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 34449), UINT16_C( 0), UINT16_C( 0), UINT16_C( 27845),
|
|
UINT16_C( 0), UINT16_C( 25289), UINT16_C( 3946), UINT16_C( 0),
|
|
UINT16_C( 18545), UINT16_C( 0), UINT16_C( 0), UINT16_C( 13374),
|
|
UINT16_C( 25148), UINT16_C( 24893), UINT16_C( 17484), UINT16_C( 0)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 35333), UINT16_C( 34520), UINT16_C( 41280), UINT16_C( 14480),
|
|
UINT16_C( 47833), UINT16_C( 21081), UINT16_C( 59344), UINT16_C( 1609),
|
|
UINT16_C( 59225), UINT16_C( 11736), UINT16_C( 2034), UINT16_C( 26405),
|
|
UINT16_C( 52539), UINT16_C( 57884), UINT16_C( 64925), UINT16_C( 22310)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 63259), UINT16_C( 61825), UINT16_C( 38086), UINT16_C( 40904),
|
|
UINT16_C( 20445), UINT16_C( 47382), UINT16_C( 49543), UINT16_C( 59971),
|
|
UINT16_C( 22744), UINT16_C( 57124), UINT16_C( 61019), UINT16_C( 30513),
|
|
UINT16_C( 8328), UINT16_C( 39328), UINT16_C( 19292), UINT16_C( 12008)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 0), UINT16_C( 0), UINT16_C( 3194), UINT16_C( 0),
|
|
UINT16_C( 27388), UINT16_C( 0), UINT16_C( 9801), UINT16_C( 0),
|
|
UINT16_C( 36481), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 44211), UINT16_C( 18556), UINT16_C( 45633), UINT16_C( 10302)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 11347), UINT16_C( 57353), UINT16_C( 47963), UINT16_C( 49968),
|
|
UINT16_C( 54392), UINT16_C( 30427), UINT16_C( 37090), UINT16_C( 21580),
|
|
UINT16_C( 45683), UINT16_C( 49652), UINT16_C( 59253), UINT16_C( 6106),
|
|
UINT16_C( 64801), UINT16_C( 21481), UINT16_C( 56869), UINT16_C( 43977)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 22679), UINT16_C( 42512), UINT16_C( 36030), UINT16_C( 31352),
|
|
UINT16_C( 55619), UINT16_C( 31850), UINT16_C( 55092), UINT16_C( 62186),
|
|
UINT16_C( 35749), UINT16_C( 26886), UINT16_C( 39956), UINT16_C( 51561),
|
|
UINT16_C( 54557), UINT16_C( 8622), UINT16_C( 33321), UINT16_C( 10740)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 0), UINT16_C( 14841), UINT16_C( 11933), UINT16_C( 18616),
|
|
UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 9934), UINT16_C( 22766), UINT16_C( 19297), UINT16_C( 0),
|
|
UINT16_C( 10244), UINT16_C( 12859), UINT16_C( 23548), UINT16_C( 33237)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 17901), UINT16_C( 42189), UINT16_C( 26644), UINT16_C( 5597),
|
|
UINT16_C( 46270), UINT16_C( 9531), UINT16_C( 15516), UINT16_C( 4989),
|
|
UINT16_C( 16224), UINT16_C( 60469), UINT16_C( 31091), UINT16_C( 56415),
|
|
UINT16_C( 15971), UINT16_C( 50100), UINT16_C( 14085), UINT16_C( 41965)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 38171), UINT16_C( 28350), UINT16_C( 37991), UINT16_C( 49504),
|
|
UINT16_C( 10459), UINT16_C( 1256), UINT16_C( 57391), UINT16_C( 21448),
|
|
UINT16_C( 64387), UINT16_C( 2284), UINT16_C( 42223), UINT16_C( 46231),
|
|
UINT16_C( 55818), UINT16_C( 7087), UINT16_C( 23644), UINT16_C( 11932)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 0), UINT16_C( 13839), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 35811), UINT16_C( 8275), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 0), UINT16_C( 58185), UINT16_C( 0), UINT16_C( 10184),
|
|
UINT16_C( 0), UINT16_C( 43013), UINT16_C( 0), UINT16_C( 30033)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 52811), UINT16_C( 62006), UINT16_C( 11184), UINT16_C( 33639),
|
|
UINT16_C( 20735), UINT16_C( 50675), UINT16_C( 37138), UINT16_C( 42100),
|
|
UINT16_C( 3231), UINT16_C( 44205), UINT16_C( 50047), UINT16_C( 26258),
|
|
UINT16_C( 347), UINT16_C( 46572), UINT16_C( 50864), UINT16_C( 25953)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 4049), UINT16_C( 16424), UINT16_C( 5632), UINT16_C( 41790),
|
|
UINT16_C( 51551), UINT16_C( 54181), UINT16_C( 11362), UINT16_C( 56257),
|
|
UINT16_C( 49243), UINT16_C( 35364), UINT16_C( 36412), UINT16_C( 11250),
|
|
UINT16_C( 63403), UINT16_C( 52637), UINT16_C( 34889), UINT16_C( 27998)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 48762), UINT16_C( 45582), UINT16_C( 5552), UINT16_C( 0),
|
|
UINT16_C( 0), UINT16_C( 0), UINT16_C( 25776), UINT16_C( 0),
|
|
UINT16_C( 0), UINT16_C( 8841), UINT16_C( 13635), UINT16_C( 15008),
|
|
UINT16_C( 0), UINT16_C( 0), UINT16_C( 15975), UINT16_C( 0)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 42711), UINT16_C( 33564), UINT16_C( 50639), UINT16_C( 14228),
|
|
UINT16_C( 29318), UINT16_C( 1178), UINT16_C( 23769), UINT16_C( 44151),
|
|
UINT16_C( 43272), UINT16_C( 33725), UINT16_C( 15686), UINT16_C( 43054),
|
|
UINT16_C( 63711), UINT16_C( 972), UINT16_C( 42618), UINT16_C( 3291)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 7040), UINT16_C( 41946), UINT16_C( 27450), UINT16_C( 17139),
|
|
UINT16_C( 32362), UINT16_C( 14753), UINT16_C( 37414), UINT16_C( 53395),
|
|
UINT16_C( 21422), UINT16_C( 35087), UINT16_C( 31482), UINT16_C( 61777),
|
|
UINT16_C( 45476), UINT16_C( 2088), UINT16_C( 8544), UINT16_C( 36492)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 35671), UINT16_C( 0), UINT16_C( 23189), UINT16_C( 0),
|
|
UINT16_C( 0), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 21850), UINT16_C( 0), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 18235), UINT16_C( 0), UINT16_C( 34074), UINT16_C( 0)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 57145), UINT16_C( 8255), UINT16_C( 3331), UINT16_C( 33938),
|
|
UINT16_C( 39159), UINT16_C( 60531), UINT16_C( 34185), UINT16_C( 55171),
|
|
UINT16_C( 32201), UINT16_C( 26727), UINT16_C( 10248), UINT16_C( 37728),
|
|
UINT16_C( 32277), UINT16_C( 50005), UINT16_C( 30847), UINT16_C( 13896)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 2250), UINT16_C( 60222), UINT16_C( 54469), UINT16_C( 1860),
|
|
UINT16_C( 32764), UINT16_C( 30527), UINT16_C( 53023), UINT16_C( 6623),
|
|
UINT16_C( 11527), UINT16_C( 88), UINT16_C( 12196), UINT16_C( 60278),
|
|
UINT16_C( 55125), UINT16_C( 23846), UINT16_C( 15419), UINT16_C( 41176)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 54895), UINT16_C( 0), UINT16_C( 0), UINT16_C( 32078),
|
|
UINT16_C( 6395), UINT16_C( 30004), UINT16_C( 0), UINT16_C( 48548),
|
|
UINT16_C( 20674), UINT16_C( 26639), UINT16_C( 0), UINT16_C( 0),
|
|
UINT16_C( 0), UINT16_C( 26159), UINT16_C( 15428), UINT16_C( 0)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_subs_epu16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpacklo_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C(-101), INT8_C( 92), INT8_C( -29), INT8_C( 114),
|
|
INT8_C( -9), INT8_C( 115), INT8_C( -85), INT8_C( 76),
|
|
INT8_C( 113), INT8_C( 104), INT8_C( 13), INT8_C( 120),
|
|
INT8_C( -16), INT8_C( 113), INT8_C( -42), INT8_C( -27),
|
|
INT8_C( 62), INT8_C(-102), INT8_C(-110), INT8_C( 104),
|
|
INT8_C( -25), INT8_C( -66), INT8_C( 36), INT8_C( -49),
|
|
INT8_C( 43), INT8_C( 7), INT8_C(-118), INT8_C( 87),
|
|
INT8_C(-107), INT8_C(-121), INT8_C(-123), INT8_C( -99)),
|
|
simde_mm256_set_epi8(INT8_C( -70), INT8_C( 56), INT8_C( 114), INT8_C(-120),
|
|
INT8_C( 3), INT8_C( -84), INT8_C( -87), INT8_C(-109),
|
|
INT8_C( 89), INT8_C( 30), INT8_C( 125), INT8_C( 67),
|
|
INT8_C( 97), INT8_C( -34), INT8_C( -11), INT8_C( -10),
|
|
INT8_C( 107), INT8_C( 105), INT8_C( 6), INT8_C( 27),
|
|
INT8_C( -81), INT8_C( 56), INT8_C( 18), INT8_C( -60),
|
|
INT8_C(-101), INT8_C( -87), INT8_C( 94), INT8_C( -75),
|
|
INT8_C( 11), INT8_C( 36), INT8_C( -58), INT8_C( 50)),
|
|
simde_mm256_set_epi8(INT8_C( 89), INT8_C( 113), INT8_C( 30), INT8_C( 104),
|
|
INT8_C( 125), INT8_C( 13), INT8_C( 67), INT8_C( 120),
|
|
INT8_C( 97), INT8_C( -16), INT8_C( -34), INT8_C( 113),
|
|
INT8_C( -11), INT8_C( -42), INT8_C( -10), INT8_C( -27),
|
|
INT8_C(-101), INT8_C( 43), INT8_C( -87), INT8_C( 7),
|
|
INT8_C( 94), INT8_C(-118), INT8_C( -75), INT8_C( 87),
|
|
INT8_C( 11), INT8_C(-107), INT8_C( 36), INT8_C(-121),
|
|
INT8_C( -58), INT8_C(-123), INT8_C( 50), INT8_C( -99)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -67), INT8_C( -9), INT8_C( 17), INT8_C( 1),
|
|
INT8_C( 81), INT8_C( -53), INT8_C( 31), INT8_C( -39),
|
|
INT8_C( 73), INT8_C( 67), INT8_C( -55), INT8_C( 6),
|
|
INT8_C( 10), INT8_C( 40), INT8_C(-106), INT8_C( 72),
|
|
INT8_C( -42), INT8_C( -10), INT8_C( -43), INT8_C( 90),
|
|
INT8_C( -58), INT8_C(-121), INT8_C( 29), INT8_C( -98),
|
|
INT8_C(-102), INT8_C( 94), INT8_C( -84), INT8_C( -30),
|
|
INT8_C( 85), INT8_C( 81), INT8_C( 3), INT8_C( -25)),
|
|
simde_mm256_set_epi8(INT8_C( -61), INT8_C( -12), INT8_C( -31), INT8_C( 32),
|
|
INT8_C(-113), INT8_C( 84), INT8_C(-127), INT8_C( -26),
|
|
INT8_C( 16), INT8_C( -35), INT8_C( 19), INT8_C( 122),
|
|
INT8_C( 69), INT8_C( -65), INT8_C( 100), INT8_C( 2),
|
|
INT8_C( 26), INT8_C( -65), INT8_C( 14), INT8_C( 116),
|
|
INT8_C( 122), INT8_C( 9), INT8_C( 6), INT8_C( -16),
|
|
INT8_C( 63), INT8_C( 30), INT8_C( 83), INT8_C( 98),
|
|
INT8_C( 14), INT8_C( 101), INT8_C( -11), INT8_C( -35)),
|
|
simde_mm256_set_epi8(INT8_C( 16), INT8_C( 73), INT8_C( -35), INT8_C( 67),
|
|
INT8_C( 19), INT8_C( -55), INT8_C( 122), INT8_C( 6),
|
|
INT8_C( 69), INT8_C( 10), INT8_C( -65), INT8_C( 40),
|
|
INT8_C( 100), INT8_C(-106), INT8_C( 2), INT8_C( 72),
|
|
INT8_C( 63), INT8_C(-102), INT8_C( 30), INT8_C( 94),
|
|
INT8_C( 83), INT8_C( -84), INT8_C( 98), INT8_C( -30),
|
|
INT8_C( 14), INT8_C( 85), INT8_C( 101), INT8_C( 81),
|
|
INT8_C( -11), INT8_C( 3), INT8_C( -35), INT8_C( -25)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 79), INT8_C( 15), INT8_C( 49), INT8_C(-100),
|
|
INT8_C( -26), INT8_C( -68), INT8_C( -90), INT8_C( -20),
|
|
INT8_C( -86), INT8_C( 47), INT8_C( -77), INT8_C( -34),
|
|
INT8_C( 8), INT8_C( 109), INT8_C( -5), INT8_C( 7),
|
|
INT8_C( 27), INT8_C( 55), INT8_C( 9), INT8_C( -91),
|
|
INT8_C(-121), INT8_C( -45), INT8_C( 90), INT8_C( 41),
|
|
INT8_C( 35), INT8_C( 41), INT8_C( -27), INT8_C( 76),
|
|
INT8_C( 18), INT8_C( 110), INT8_C( 20), INT8_C( 91)),
|
|
simde_mm256_set_epi8(INT8_C(-107), INT8_C( 5), INT8_C( 63), INT8_C( -15),
|
|
INT8_C( -24), INT8_C( 33), INT8_C( -61), INT8_C( 5),
|
|
INT8_C( -26), INT8_C( 28), INT8_C( 111), INT8_C( -8),
|
|
INT8_C( 5), INT8_C( -1), INT8_C( 57), INT8_C( 116),
|
|
INT8_C( -59), INT8_C( 116), INT8_C( 15), INT8_C(-110),
|
|
INT8_C( -91), INT8_C( -64), INT8_C( 54), INT8_C( 99),
|
|
INT8_C( 58), INT8_C( -68), INT8_C( -48), INT8_C( -80),
|
|
INT8_C( -28), INT8_C( -99), INT8_C( 100), INT8_C( -81)),
|
|
simde_mm256_set_epi8(INT8_C( -26), INT8_C( -86), INT8_C( 28), INT8_C( 47),
|
|
INT8_C( 111), INT8_C( -77), INT8_C( -8), INT8_C( -34),
|
|
INT8_C( 5), INT8_C( 8), INT8_C( -1), INT8_C( 109),
|
|
INT8_C( 57), INT8_C( -5), INT8_C( 116), INT8_C( 7),
|
|
INT8_C( 58), INT8_C( 35), INT8_C( -68), INT8_C( 41),
|
|
INT8_C( -48), INT8_C( -27), INT8_C( -80), INT8_C( 76),
|
|
INT8_C( -28), INT8_C( 18), INT8_C( -99), INT8_C( 110),
|
|
INT8_C( 100), INT8_C( 20), INT8_C( -81), INT8_C( 91)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 111), INT8_C( 64), INT8_C( 83), INT8_C( 89),
|
|
INT8_C( 53), INT8_C( 69), INT8_C( 18), INT8_C(-112),
|
|
INT8_C( -39), INT8_C( 62), INT8_C(-127), INT8_C( 93),
|
|
INT8_C( 40), INT8_C( -88), INT8_C( 34), INT8_C( 56),
|
|
INT8_C( -85), INT8_C( 98), INT8_C( 123), INT8_C( -14),
|
|
INT8_C( -70), INT8_C( -22), INT8_C( 32), INT8_C( 109),
|
|
INT8_C( 94), INT8_C(-121), INT8_C(-110), INT8_C( 114),
|
|
INT8_C( -62), INT8_C( 22), INT8_C( -32), INT8_C( 70)),
|
|
simde_mm256_set_epi8(INT8_C( -35), INT8_C( 57), INT8_C( -30), INT8_C( 91),
|
|
INT8_C( -17), INT8_C(-121), INT8_C(-121), INT8_C( -63),
|
|
INT8_C( 125), INT8_C( 10), INT8_C( -28), INT8_C(-117),
|
|
INT8_C( 12), INT8_C( 112), INT8_C( 23), INT8_C( 38),
|
|
INT8_C( -40), INT8_C( 22), INT8_C(-121), INT8_C(-107),
|
|
INT8_C( 1), INT8_C( 89), INT8_C( 11), INT8_C(-119),
|
|
INT8_C( -63), INT8_C( 67), INT8_C( 93), INT8_C( -28),
|
|
INT8_C( 24), INT8_C( 106), INT8_C(-124), INT8_C( 25)),
|
|
simde_mm256_set_epi8(INT8_C( 125), INT8_C( -39), INT8_C( 10), INT8_C( 62),
|
|
INT8_C( -28), INT8_C(-127), INT8_C(-117), INT8_C( 93),
|
|
INT8_C( 12), INT8_C( 40), INT8_C( 112), INT8_C( -88),
|
|
INT8_C( 23), INT8_C( 34), INT8_C( 38), INT8_C( 56),
|
|
INT8_C( -63), INT8_C( 94), INT8_C( 67), INT8_C(-121),
|
|
INT8_C( 93), INT8_C(-110), INT8_C( -28), INT8_C( 114),
|
|
INT8_C( 24), INT8_C( -62), INT8_C( 106), INT8_C( 22),
|
|
INT8_C(-124), INT8_C( -32), INT8_C( 25), INT8_C( 70)) },
|
|
{ simde_mm256_set_epi8(INT8_C(-124), INT8_C( 32), INT8_C( 75), INT8_C( 56),
|
|
INT8_C( -51), INT8_C( -59), INT8_C( -9), INT8_C( -19),
|
|
INT8_C( 70), INT8_C(-112), INT8_C( -88), INT8_C( -25),
|
|
INT8_C( 65), INT8_C( -16), INT8_C( 87), INT8_C( 72),
|
|
INT8_C( -17), INT8_C( 111), INT8_C(-124), INT8_C( -55),
|
|
INT8_C( 48), INT8_C( 3), INT8_C( -70), INT8_C( 97),
|
|
INT8_C( -90), INT8_C(-126), INT8_C( -20), INT8_C( 124),
|
|
INT8_C( -5), INT8_C( -13), INT8_C( 118), INT8_C( 93)),
|
|
simde_mm256_set_epi8(INT8_C(-114), INT8_C( -2), INT8_C( 68), INT8_C( -83),
|
|
INT8_C( 91), INT8_C( 102), INT8_C( -24), INT8_C( 67),
|
|
INT8_C( -95), INT8_C( 7), INT8_C( 96), INT8_C( 35),
|
|
INT8_C( -10), INT8_C( -45), INT8_C( -47), INT8_C( -75),
|
|
INT8_C( 15), INT8_C( 123), INT8_C( -29), INT8_C(-121),
|
|
INT8_C(-102), INT8_C( 78), INT8_C( 104), INT8_C( 76),
|
|
INT8_C(-103), INT8_C( 86), INT8_C( 88), INT8_C(-113),
|
|
INT8_C( -62), INT8_C( 94), INT8_C( -48), INT8_C(-103)),
|
|
simde_mm256_set_epi8(INT8_C( -95), INT8_C( 70), INT8_C( 7), INT8_C(-112),
|
|
INT8_C( 96), INT8_C( -88), INT8_C( 35), INT8_C( -25),
|
|
INT8_C( -10), INT8_C( 65), INT8_C( -45), INT8_C( -16),
|
|
INT8_C( -47), INT8_C( 87), INT8_C( -75), INT8_C( 72),
|
|
INT8_C(-103), INT8_C( -90), INT8_C( 86), INT8_C(-126),
|
|
INT8_C( 88), INT8_C( -20), INT8_C(-113), INT8_C( 124),
|
|
INT8_C( -62), INT8_C( -5), INT8_C( 94), INT8_C( -13),
|
|
INT8_C( -48), INT8_C( 118), INT8_C(-103), INT8_C( 93)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -90), INT8_C(-125), INT8_C(-122), INT8_C( -6),
|
|
INT8_C( 94), INT8_C( 38), INT8_C( -80), INT8_C( 45),
|
|
INT8_C( 120), INT8_C( 2), INT8_C( 29), INT8_C( -37),
|
|
INT8_C( -49), INT8_C( 112), INT8_C( -83), INT8_C( 43),
|
|
INT8_C( 51), INT8_C( 92), INT8_C( -2), INT8_C( 110),
|
|
INT8_C( -26), INT8_C( -17), INT8_C( -37), INT8_C(-121),
|
|
INT8_C(-105), INT8_C( -8), INT8_C( 57), INT8_C( -68),
|
|
INT8_C( 115), INT8_C( -11), INT8_C( -39), INT8_C( -63)),
|
|
simde_mm256_set_epi8(INT8_C( -64), INT8_C( 39), INT8_C( 25), INT8_C( 3),
|
|
INT8_C( 122), INT8_C( -60), INT8_C( -66), INT8_C( -73),
|
|
INT8_C( 0), INT8_C( 41), INT8_C( 40), INT8_C( 56),
|
|
INT8_C( 75), INT8_C( -32), INT8_C( -94), INT8_C( 17),
|
|
INT8_C( 121), INT8_C(-101), INT8_C( 114), INT8_C( -11),
|
|
INT8_C( 87), INT8_C( -91), INT8_C( -73), INT8_C(-128),
|
|
INT8_C( -38), INT8_C(-107), INT8_C( 46), INT8_C( 109),
|
|
INT8_C( -12), INT8_C(-126), INT8_C( -31), INT8_C( -11)),
|
|
simde_mm256_set_epi8(INT8_C( 0), INT8_C( 120), INT8_C( 41), INT8_C( 2),
|
|
INT8_C( 40), INT8_C( 29), INT8_C( 56), INT8_C( -37),
|
|
INT8_C( 75), INT8_C( -49), INT8_C( -32), INT8_C( 112),
|
|
INT8_C( -94), INT8_C( -83), INT8_C( 17), INT8_C( 43),
|
|
INT8_C( -38), INT8_C(-105), INT8_C(-107), INT8_C( -8),
|
|
INT8_C( 46), INT8_C( 57), INT8_C( 109), INT8_C( -68),
|
|
INT8_C( -12), INT8_C( 115), INT8_C(-126), INT8_C( -11),
|
|
INT8_C( -31), INT8_C( -39), INT8_C( -11), INT8_C( -63)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 63), INT8_C( 108), INT8_C( 117), INT8_C( 111),
|
|
INT8_C(-116), INT8_C(-118), INT8_C( 82), INT8_C(-121),
|
|
INT8_C( 68), INT8_C( -92), INT8_C( -35), INT8_C( 7),
|
|
INT8_C( -96), INT8_C( 9), INT8_C( -94), INT8_C( -59),
|
|
INT8_C( 32), INT8_C( -9), INT8_C( -80), INT8_C(-123),
|
|
INT8_C(-100), INT8_C( 52), INT8_C( 39), INT8_C( -97),
|
|
INT8_C( 73), INT8_C( -67), INT8_C( 65), INT8_C( 4),
|
|
INT8_C( -56), INT8_C( -71), INT8_C( 7), INT8_C( -5)),
|
|
simde_mm256_set_epi8(INT8_C( 102), INT8_C( 68), INT8_C( -62), INT8_C( 99),
|
|
INT8_C(-116), INT8_C( -55), INT8_C( 58), INT8_C( -12),
|
|
INT8_C( 76), INT8_C( 54), INT8_C( 104), INT8_C( 91),
|
|
INT8_C( 97), INT8_C(-106), INT8_C( 52), INT8_C( 126),
|
|
INT8_C( -63), INT8_C(-121), INT8_C( 81), INT8_C( -68),
|
|
INT8_C( 43), INT8_C( 94), INT8_C( -45), INT8_C( -65),
|
|
INT8_C( 106), INT8_C( 44), INT8_C( 113), INT8_C( -16),
|
|
INT8_C( 99), INT8_C( 23), INT8_C( -7), INT8_C( 117)),
|
|
simde_mm256_set_epi8(INT8_C( 76), INT8_C( 68), INT8_C( 54), INT8_C( -92),
|
|
INT8_C( 104), INT8_C( -35), INT8_C( 91), INT8_C( 7),
|
|
INT8_C( 97), INT8_C( -96), INT8_C(-106), INT8_C( 9),
|
|
INT8_C( 52), INT8_C( -94), INT8_C( 126), INT8_C( -59),
|
|
INT8_C( 106), INT8_C( 73), INT8_C( 44), INT8_C( -67),
|
|
INT8_C( 113), INT8_C( 65), INT8_C( -16), INT8_C( 4),
|
|
INT8_C( 99), INT8_C( -56), INT8_C( 23), INT8_C( -71),
|
|
INT8_C( -7), INT8_C( 7), INT8_C( 117), INT8_C( -5)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 104), INT8_C( 34), INT8_C( -70), INT8_C( -26),
|
|
INT8_C( -69), INT8_C( 81), INT8_C( -50), INT8_C( 4),
|
|
INT8_C( -60), INT8_C( -88), INT8_C( -4), INT8_C( -63),
|
|
INT8_C( -86), INT8_C(-128), INT8_C( 17), INT8_C( -71),
|
|
INT8_C( 58), INT8_C( 49), INT8_C( 70), INT8_C( -5),
|
|
INT8_C( -33), INT8_C( -24), INT8_C( -68), INT8_C( 51),
|
|
INT8_C( -53), INT8_C( -74), INT8_C( 121), INT8_C( 64),
|
|
INT8_C( 107), INT8_C( 46), INT8_C( 97), INT8_C( -31)),
|
|
simde_mm256_set_epi8(INT8_C( -50), INT8_C( 41), INT8_C( -4), INT8_C( 50),
|
|
INT8_C( 14), INT8_C( 6), INT8_C( 5), INT8_C( -94),
|
|
INT8_C( 117), INT8_C(-125), INT8_C( -37), INT8_C(-117),
|
|
INT8_C( 55), INT8_C(-105), INT8_C( 11), INT8_C(-118),
|
|
INT8_C( -38), INT8_C( 101), INT8_C( 50), INT8_C( 56),
|
|
INT8_C( -29), INT8_C( -1), INT8_C( 78), INT8_C( 43),
|
|
INT8_C( 76), INT8_C( -69), INT8_C( 38), INT8_C( -37),
|
|
INT8_C( 55), INT8_C( -69), INT8_C( 85), INT8_C( 113)),
|
|
simde_mm256_set_epi8(INT8_C( 117), INT8_C( -60), INT8_C(-125), INT8_C( -88),
|
|
INT8_C( -37), INT8_C( -4), INT8_C(-117), INT8_C( -63),
|
|
INT8_C( 55), INT8_C( -86), INT8_C(-105), INT8_C(-128),
|
|
INT8_C( 11), INT8_C( 17), INT8_C(-118), INT8_C( -71),
|
|
INT8_C( 76), INT8_C( -53), INT8_C( -69), INT8_C( -74),
|
|
INT8_C( 38), INT8_C( 121), INT8_C( -37), INT8_C( 64),
|
|
INT8_C( 55), INT8_C( 107), INT8_C( -69), INT8_C( 46),
|
|
INT8_C( 85), INT8_C( 97), INT8_C( 113), INT8_C( -31)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpacklo_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpacklo_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-30282), INT16_C( 17545), INT16_C( 1397), INT16_C(-23688),
|
|
INT16_C( 7095), INT16_C(-13226), INT16_C( 16225), INT16_C( 24624),
|
|
INT16_C(-19105), INT16_C( 16354), INT16_C(-30269), INT16_C(-10683),
|
|
INT16_C( 8943), INT16_C(-21230), INT16_C(-20477), INT16_C(-15650)),
|
|
simde_mm256_set_epi16(INT16_C(-25398), INT16_C(-19610), INT16_C(-11289), INT16_C( 28083),
|
|
INT16_C(-11420), INT16_C( -1651), INT16_C(-26110), INT16_C( 32276),
|
|
INT16_C( 2653), INT16_C( 16175), INT16_C( 2453), INT16_C(-13949),
|
|
INT16_C( -3232), INT16_C(-27909), INT16_C( 187), INT16_C( 30423)),
|
|
simde_mm256_set_epi16(INT16_C(-11420), INT16_C( 7095), INT16_C( -1651), INT16_C(-13226),
|
|
INT16_C(-26110), INT16_C( 16225), INT16_C( 32276), INT16_C( 24624),
|
|
INT16_C( -3232), INT16_C( 8943), INT16_C(-27909), INT16_C(-21230),
|
|
INT16_C( 187), INT16_C(-20477), INT16_C( 30423), INT16_C(-15650)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 21698), INT16_C(-28557), INT16_C(-10383), INT16_C( 5893),
|
|
INT16_C( 262), INT16_C(-15994), INT16_C( 10150), INT16_C(-16695),
|
|
INT16_C(-27992), INT16_C( 19356), INT16_C(-16467), INT16_C( 25602),
|
|
INT16_C( -8537), INT16_C( 32448), INT16_C( 8648), INT16_C( -2538)),
|
|
simde_mm256_set_epi16(INT16_C(-10809), INT16_C( 31334), INT16_C(-23341), INT16_C(-23517),
|
|
INT16_C( 24971), INT16_C( -2967), INT16_C( 85), INT16_C( -6374),
|
|
INT16_C( 12369), INT16_C( 2809), INT16_C( 24485), INT16_C( 26961),
|
|
INT16_C(-13324), INT16_C( 1302), INT16_C( 20638), INT16_C(-30060)),
|
|
simde_mm256_set_epi16(INT16_C( 24971), INT16_C( 262), INT16_C( -2967), INT16_C(-15994),
|
|
INT16_C( 85), INT16_C( 10150), INT16_C( -6374), INT16_C(-16695),
|
|
INT16_C(-13324), INT16_C( -8537), INT16_C( 1302), INT16_C( 32448),
|
|
INT16_C( 20638), INT16_C( 8648), INT16_C(-30060), INT16_C( -2538)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 29708), INT16_C( 973), INT16_C(-18396), INT16_C( -4069),
|
|
INT16_C( -8794), INT16_C( 11568), INT16_C( 791), INT16_C( 2488),
|
|
INT16_C( -5218), INT16_C(-22271), INT16_C(-28848), INT16_C( 10219),
|
|
INT16_C( 23398), INT16_C( 32588), INT16_C( 20014), INT16_C( 27330)),
|
|
simde_mm256_set_epi16(INT16_C( 2064), INT16_C( 8959), INT16_C( 21574), INT16_C(-11590),
|
|
INT16_C( 29752), INT16_C( -9389), INT16_C(-30933), INT16_C( 2430),
|
|
INT16_C(-26152), INT16_C( 21194), INT16_C(-30448), INT16_C( -9544),
|
|
INT16_C(-11845), INT16_C(-20406), INT16_C( 31145), INT16_C( 11486)),
|
|
simde_mm256_set_epi16(INT16_C( 29752), INT16_C( -8794), INT16_C( -9389), INT16_C( 11568),
|
|
INT16_C(-30933), INT16_C( 791), INT16_C( 2430), INT16_C( 2488),
|
|
INT16_C(-11845), INT16_C( 23398), INT16_C(-20406), INT16_C( 32588),
|
|
INT16_C( 31145), INT16_C( 20014), INT16_C( 11486), INT16_C( 27330)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 6440), INT16_C( 24154), INT16_C( 3465), INT16_C( -9568),
|
|
INT16_C( 32223), INT16_C(-15547), INT16_C(-13940), INT16_C(-23416),
|
|
INT16_C( 1226), INT16_C( 3044), INT16_C(-16083), INT16_C( -2151),
|
|
INT16_C( 18066), INT16_C( 29407), INT16_C( 22180), INT16_C( 8673)),
|
|
simde_mm256_set_epi16(INT16_C( 32190), INT16_C( -2276), INT16_C( 14786), INT16_C( 21157),
|
|
INT16_C(-13808), INT16_C(-14345), INT16_C( -8569), INT16_C( 28230),
|
|
INT16_C( 4254), INT16_C(-24931), INT16_C( 188), INT16_C(-22513),
|
|
INT16_C( 28262), INT16_C(-17377), INT16_C(-27018), INT16_C(-20998)),
|
|
simde_mm256_set_epi16(INT16_C(-13808), INT16_C( 32223), INT16_C(-14345), INT16_C(-15547),
|
|
INT16_C( -8569), INT16_C(-13940), INT16_C( 28230), INT16_C(-23416),
|
|
INT16_C( 28262), INT16_C( 18066), INT16_C(-17377), INT16_C( 29407),
|
|
INT16_C(-27018), INT16_C( 22180), INT16_C(-20998), INT16_C( 8673)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 21433), INT16_C(-32745), INT16_C(-20857), INT16_C( 9689),
|
|
INT16_C(-19620), INT16_C( 27874), INT16_C(-12579), INT16_C(-11273),
|
|
INT16_C( -7990), INT16_C( -5188), INT16_C( -2308), INT16_C(-28807),
|
|
INT16_C( 30803), INT16_C(-31644), INT16_C(-17815), INT16_C( 25631)),
|
|
simde_mm256_set_epi16(INT16_C( -6103), INT16_C( 30452), INT16_C( 26648), INT16_C(-28159),
|
|
INT16_C( 7856), INT16_C(-23604), INT16_C(-21584), INT16_C( 8163),
|
|
INT16_C(-18173), INT16_C( 4449), INT16_C(-19194), INT16_C( 32687),
|
|
INT16_C( 13328), INT16_C( 5053), INT16_C(-14292), INT16_C( 9840)),
|
|
simde_mm256_set_epi16(INT16_C( 7856), INT16_C(-19620), INT16_C(-23604), INT16_C( 27874),
|
|
INT16_C(-21584), INT16_C(-12579), INT16_C( 8163), INT16_C(-11273),
|
|
INT16_C( 13328), INT16_C( 30803), INT16_C( 5053), INT16_C(-31644),
|
|
INT16_C(-14292), INT16_C(-17815), INT16_C( 9840), INT16_C( 25631)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 12319), INT16_C( 2668), INT16_C( 15777), INT16_C(-15674),
|
|
INT16_C(-27625), INT16_C( -9913), INT16_C(-25103), INT16_C( 18516),
|
|
INT16_C( -2788), INT16_C(-28181), INT16_C( 690), INT16_C(-21029),
|
|
INT16_C( -9342), INT16_C( -7022), INT16_C( -3964), INT16_C( 27684)),
|
|
simde_mm256_set_epi16(INT16_C(-23966), INT16_C( 20005), INT16_C(-26957), INT16_C( 9742),
|
|
INT16_C(-30820), INT16_C( 24145), INT16_C( 4042), INT16_C( 6816),
|
|
INT16_C(-17740), INT16_C( 1939), INT16_C( -2041), INT16_C(-32516),
|
|
INT16_C(-25602), INT16_C( 15914), INT16_C( 5185), INT16_C(-12371)),
|
|
simde_mm256_set_epi16(INT16_C(-30820), INT16_C(-27625), INT16_C( 24145), INT16_C( -9913),
|
|
INT16_C( 4042), INT16_C(-25103), INT16_C( 6816), INT16_C( 18516),
|
|
INT16_C(-25602), INT16_C( -9342), INT16_C( 15914), INT16_C( -7022),
|
|
INT16_C( 5185), INT16_C( -3964), INT16_C(-12371), INT16_C( 27684)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -5299), INT16_C( -9685), INT16_C( 9755), INT16_C(-16148),
|
|
INT16_C(-31255), INT16_C( 18778), INT16_C( 18350), INT16_C( 31236),
|
|
INT16_C(-10664), INT16_C( 12773), INT16_C( 30044), INT16_C(-23199),
|
|
INT16_C( 22014), INT16_C( 1980), INT16_C( 29718), INT16_C(-21712)),
|
|
simde_mm256_set_epi16(INT16_C( 26040), INT16_C( 22288), INT16_C( 6550), INT16_C(-26515),
|
|
INT16_C(-19807), INT16_C(-18397), INT16_C(-22874), INT16_C( 407),
|
|
INT16_C(-20286), INT16_C( 30014), INT16_C( 13089), INT16_C( 23053),
|
|
INT16_C(-13726), INT16_C( 7887), INT16_C(-22384), INT16_C(-14795)),
|
|
simde_mm256_set_epi16(INT16_C(-19807), INT16_C(-31255), INT16_C(-18397), INT16_C( 18778),
|
|
INT16_C(-22874), INT16_C( 18350), INT16_C( 407), INT16_C( 31236),
|
|
INT16_C(-13726), INT16_C( 22014), INT16_C( 7887), INT16_C( 1980),
|
|
INT16_C(-22384), INT16_C( 29718), INT16_C(-14795), INT16_C(-21712)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 31115), INT16_C( -4108), INT16_C( -8080), INT16_C( 29018),
|
|
INT16_C(-17821), INT16_C(-27725), INT16_C( 1365), INT16_C( 15677),
|
|
INT16_C( 9784), INT16_C(-29292), INT16_C( 18208), INT16_C(-29194),
|
|
INT16_C( 11347), INT16_C( -8693), INT16_C( -8615), INT16_C( 13549)),
|
|
simde_mm256_set_epi16(INT16_C(-31719), INT16_C( 9678), INT16_C( 3398), INT16_C( 25207),
|
|
INT16_C(-26413), INT16_C( -2632), INT16_C( 30768), INT16_C( 11317),
|
|
INT16_C( 21819), INT16_C( 22008), INT16_C( 24268), INT16_C( 4358),
|
|
INT16_C(-28281), INT16_C( 31671), INT16_C( 9126), INT16_C( -4199)),
|
|
simde_mm256_set_epi16(INT16_C(-26413), INT16_C(-17821), INT16_C( -2632), INT16_C(-27725),
|
|
INT16_C( 30768), INT16_C( 1365), INT16_C( 11317), INT16_C( 15677),
|
|
INT16_C(-28281), INT16_C( 11347), INT16_C( 31671), INT16_C( -8693),
|
|
INT16_C( 9126), INT16_C( -8615), INT16_C( -4199), INT16_C( 13549)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpacklo_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpacklo_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 1634006754), INT32_C( 2027673276), INT32_C(-1004966058), INT32_C( 31035471),
|
|
INT32_C( 582697150), INT32_C( -865564811), INT32_C(-1835008447), INT32_C( 1804896535)),
|
|
simde_mm256_set_epi32(INT32_C( 250556499), INT32_C(-1998071312), INT32_C(-1032788603), INT32_C(-1564323608),
|
|
INT32_C(-2109612931), INT32_C(-1991486451), INT32_C(-1624617327), INT32_C( -572875248)),
|
|
simde_mm256_set_epi32(INT32_C(-1032788603), INT32_C(-1004966058), INT32_C(-1564323608), INT32_C( 31035471),
|
|
INT32_C(-1624617327), INT32_C(-1835008447), INT32_C( -572875248), INT32_C( 1804896535)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 949978713), INT32_C(-1147362485), INT32_C( 854099489), INT32_C( -769233801),
|
|
INT32_C(-2080267368), INT32_C( 2025215151), INT32_C( 1944502882), INT32_C( 1998396566)),
|
|
simde_mm256_set_epi32(INT32_C( 1131236119), INT32_C(-1871822227), INT32_C(-1378954726), INT32_C( -808581099),
|
|
INT32_C( 114286940), INT32_C(-2068340600), INT32_C( 1176100740), INT32_C(-1711799535)),
|
|
simde_mm256_set_epi32(INT32_C(-1378954726), INT32_C( 854099489), INT32_C( -808581099), INT32_C( -769233801),
|
|
INT32_C( 1176100740), INT32_C( 1944502882), INT32_C(-1711799535), INT32_C( 1998396566)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -539215325), INT32_C( 1386192905), INT32_C( 2045489389), INT32_C( -233070788),
|
|
INT32_C(-1110980092), INT32_C(-1773587744), INT32_C(-1877041680), INT32_C( 1118926695)),
|
|
simde_mm256_set_epi32(INT32_C( 1837258736), INT32_C( 777251927), INT32_C( -528822409), INT32_C( 652807806),
|
|
INT32_C( -855377965), INT32_C( 2001307829), INT32_C( 222072460), INT32_C( -954219379)),
|
|
simde_mm256_set_epi32(INT32_C( -528822409), INT32_C( 2045489389), INT32_C( 652807806), INT32_C( -233070788),
|
|
INT32_C( 222072460), INT32_C(-1877041680), INT32_C( -954219379), INT32_C( 1118926695)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1171398216), INT32_C(-1815838821), INT32_C( 612082553), INT32_C( -598227397),
|
|
INT32_C( 1917370778), INT32_C(-1469217853), INT32_C(-1242194963), INT32_C(-1540218008)),
|
|
simde_mm256_set_epi32(INT32_C( 1716361405), INT32_C( 1201391077), INT32_C( -200251042), INT32_C( 92359436),
|
|
INT32_C(-1697948463), INT32_C(-1859110046), INT32_C( 1319052809), INT32_C( -520980879)),
|
|
simde_mm256_set_epi32(INT32_C( -200251042), INT32_C( 612082553), INT32_C( 92359436), INT32_C( -598227397),
|
|
INT32_C( 1319052809), INT32_C(-1242194963), INT32_C( -520980879), INT32_C(-1540218008)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1628276207), INT32_C( -52307206), INT32_C( -204071811), INT32_C( -323316344),
|
|
INT32_C( -993779627), INT32_C( 1107422469), INT32_C(-2067672829), INT32_C(-1768371428)),
|
|
simde_mm256_set_epi32(INT32_C(-1719696812), INT32_C(-1577841127), INT32_C(-1009880980), INT32_C( -766826796),
|
|
INT32_C( 1275907717), INT32_C(-1042662611), INT32_C( -491358494), INT32_C( 421707156)),
|
|
simde_mm256_set_epi32(INT32_C(-1009880980), INT32_C( -204071811), INT32_C( -766826796), INT32_C( -323316344),
|
|
INT32_C( -491358494), INT32_C(-2067672829), INT32_C( 421707156), INT32_C(-1768371428)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1254036215), INT32_C( 377006130), INT32_C( 1193383293), INT32_C(-1422821080),
|
|
INT32_C( -739482809), INT32_C( 2014379887), INT32_C(-1242086604), INT32_C(-1197757953)),
|
|
simde_mm256_set_epi32(INT32_C( 1288082582), INT32_C( 1674663179), INT32_C( -228351353), INT32_C( -941607417),
|
|
INT32_C( 416281156), INT32_C(-1292618170), INT32_C( 1488480694), INT32_C( 327047972)),
|
|
simde_mm256_set_epi32(INT32_C( -228351353), INT32_C( 1193383293), INT32_C( -941607417), INT32_C(-1422821080),
|
|
INT32_C( 1488480694), INT32_C(-1242086604), INT32_C( 327047972), INT32_C(-1197757953)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1508573201), INT32_C( 969937333), INT32_C( 14444014), INT32_C( 108302280),
|
|
INT32_C(-1520907964), INT32_C( -22983897), INT32_C( 1816713030), INT32_C(-1177538461)),
|
|
simde_mm256_set_epi32(INT32_C(-1104336423), INT32_C( 271712214), INT32_C( -354649539), INT32_C( 1013182006),
|
|
INT32_C( 1412833129), INT32_C(-1419706355), INT32_C( 1282557791), INT32_C(-1472463953)),
|
|
simde_mm256_set_epi32(INT32_C( -354649539), INT32_C( 14444014), INT32_C( 1013182006), INT32_C( 108302280),
|
|
INT32_C( 1282557791), INT32_C( 1816713030), INT32_C(-1472463953), INT32_C(-1177538461)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -66937609), INT32_C( -119592026), INT32_C( 1432494483), INT32_C( -124579914),
|
|
INT32_C( -238722129), INT32_C( -220704743), INT32_C( 419566334), INT32_C( 422590012)),
|
|
simde_mm256_set_epi32(INT32_C( -454663334), INT32_C( 1184045083), INT32_C( 1025965918), INT32_C( -854328465),
|
|
INT32_C( -19322018), INT32_C( 1969810936), INT32_C( -266337614), INT32_C( 51340398)),
|
|
simde_mm256_set_epi32(INT32_C( 1025965918), INT32_C( 1432494483), INT32_C( -854328465), INT32_C( -124579914),
|
|
INT32_C( -266337614), INT32_C( 419566334), INT32_C( 51340398), INT32_C( 422590012)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpacklo_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpacklo_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 7018005571900790460), INT64_C(-4316296352669003697),
|
|
INT64_C( 2502665206151808885), INT64_C(-7881301265943852777)),
|
|
simde_mm256_set_epi64x(INT64_C( 1076131971302152688), INT64_C(-4435793270835883800),
|
|
INT64_C(-9060718543560223731), INT64_C(-6977678284257845744)),
|
|
simde_mm256_set_epi64x(INT64_C(-4435793270835883800), INT64_C(-4316296352669003697),
|
|
INT64_C(-6977678284257845744), INT64_C(-7881301265943852777)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 4080127507378774859), INT64_C( 3668329376311045239),
|
|
INT64_C(-8934680310470781777), INT64_C( 8351576287166143638)),
|
|
simde_mm256_set_epi64x(INT64_C( 4858622137582109293), INT64_C(-5922565447348254699),
|
|
INT64_C( 490858671886540936), INT64_C( 5051314217684566801)),
|
|
simde_mm256_set_epi64x(INT64_C(-5922565447348254699), INT64_C( 3668329376311045239),
|
|
INT64_C( 5051314217684566801), INT64_C( 8351576287166143638)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-2315912184990818295), INT64_C( 8785310034131918652),
|
|
INT64_C(-4771623159125691680), INT64_C(-8061832627709970585)),
|
|
simde_mm256_set_epi64x(INT64_C( 7890966186187549783), INT64_C(-2271274951394128258),
|
|
INT64_C(-3673820383392724811), INT64_C( 953793956383016077)),
|
|
simde_mm256_set_epi64x(INT64_C(-2271274951394128258), INT64_C( 8785310034131918652),
|
|
INT64_C( 953793956383016077), INT64_C(-8061832627709970585)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 5031117030791872411), INT64_C( 2628874551283926587),
|
|
INT64_C( 8235044788641825731), INT64_C(-5335186738586180760)),
|
|
simde_mm256_set_epi64x(INT64_C( 7371716103793001957), INT64_C( -860071676287562996),
|
|
INT64_C(-7292633116442608798), INT64_C( 5665288680125920881)),
|
|
simde_mm256_set_epi64x(INT64_C( -860071676287562996), INT64_C( 2628874551283926587),
|
|
INT64_C( 5665288680125920881), INT64_C(-5335186738586180760)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-6993393053677266182), INT64_C( -876481750308842104),
|
|
INT64_C(-4268250996288656123), INT64_C(-8880587176856204516)),
|
|
simde_mm256_set_epi64x(INT64_C(-7386041563858334183), INT64_C(-4337405778424289580),
|
|
INT64_C( 5479981920481327917), INT64_C(-2110368661920105068)),
|
|
simde_mm256_set_epi64x(INT64_C(-4337405778424289580), INT64_C( -876481750308842104),
|
|
INT64_C(-2110368661920105068), INT64_C(-8880587176856204516)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-5386044531047618510), INT64_C( 5125542217899931944),
|
|
INT64_C(-3176054478594834577), INT64_C(-5334721339882493441)),
|
|
simde_mm256_set_epi64x(INT64_C( 5532272565911901451), INT64_C( -980761589778991609),
|
|
INT64_C( 1787913953963423302), INT64_C( 6392975901784431396)),
|
|
simde_mm256_set_epi64x(INT64_C( -980761589778991609), INT64_C( 5125542217899931944),
|
|
INT64_C( 6392975901784431396), INT64_C(-5334721339882493441)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 6479272562886971829), INT64_C( 62036567861268424),
|
|
INT64_C(-6532249961333961945), INT64_C( 7802723053184495715)),
|
|
simde_mm256_set_epi64x(INT64_C(-4743088820294909994), INT64_C(-1523208170533294538),
|
|
INT64_C( 6068072086635610125), INT64_C( 5508543770397506479)),
|
|
simde_mm256_set_epi64x(INT64_C(-1523208170533294538), INT64_C( 62036567861268424),
|
|
INT64_C( 5508543770397506479), INT64_C( 7802723053184495715)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( -287494837352059994), INT64_C( 6152516960355815350),
|
|
INT64_C(-1025303732812230631), INT64_C( 1802023683455202876)),
|
|
simde_mm256_set_epi64x(INT64_C(-1952764149036279781), INT64_C( 4406490068061256559),
|
|
INT64_C( -82987433432912392), INT64_C(-1143911341773331346)),
|
|
simde_mm256_set_epi64x(INT64_C( 4406490068061256559), INT64_C( 6152516960355815350),
|
|
INT64_C(-1143911341773331346), INT64_C( 1802023683455202876)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpacklo_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpackhi_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C( 87), INT8_C( 102), INT8_C( -8), INT8_C( -64),
|
|
INT8_C( 127), INT8_C( 58), INT8_C( 96), INT8_C( 103),
|
|
INT8_C( -98), INT8_C(-118), INT8_C( 55), INT8_C( 100),
|
|
INT8_C( -28), INT8_C( 103), INT8_C( -55), INT8_C( 11),
|
|
INT8_C( 6), INT8_C(-121), INT8_C( -30), INT8_C( -49),
|
|
INT8_C( 125), INT8_C( 108), INT8_C( 76), INT8_C( -98),
|
|
INT8_C( 55), INT8_C( -83), INT8_C( -57), INT8_C( 124),
|
|
INT8_C( 121), INT8_C( 85), INT8_C( 102), INT8_C( 78)),
|
|
simde_mm256_set_epi8(INT8_C( 3), INT8_C( 85), INT8_C( 69), INT8_C( -24),
|
|
INT8_C(-108), INT8_C( 112), INT8_C( 108), INT8_C( -48),
|
|
INT8_C( 87), INT8_C( 127), INT8_C( -59), INT8_C( -27),
|
|
INT8_C( -42), INT8_C( 90), INT8_C(-117), INT8_C( -35),
|
|
INT8_C( 78), INT8_C(-126), INT8_C( 39), INT8_C( 121),
|
|
INT8_C( 106), INT8_C( -53), INT8_C( -82), INT8_C( -49),
|
|
INT8_C( -76), INT8_C( 83), INT8_C( 68), INT8_C( 126),
|
|
INT8_C( -36), INT8_C(-105), INT8_C( 91), INT8_C( -27)),
|
|
simde_mm256_set_epi8(INT8_C( 3), INT8_C( 87), INT8_C( 85), INT8_C( 102),
|
|
INT8_C( 69), INT8_C( -8), INT8_C( -24), INT8_C( -64),
|
|
INT8_C(-108), INT8_C( 127), INT8_C( 112), INT8_C( 58),
|
|
INT8_C( 108), INT8_C( 96), INT8_C( -48), INT8_C( 103),
|
|
INT8_C( 78), INT8_C( 6), INT8_C(-126), INT8_C(-121),
|
|
INT8_C( 39), INT8_C( -30), INT8_C( 121), INT8_C( -49),
|
|
INT8_C( 106), INT8_C( 125), INT8_C( -53), INT8_C( 108),
|
|
INT8_C( -82), INT8_C( 76), INT8_C( -49), INT8_C( -98)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 112), INT8_C( 90), INT8_C( 24), INT8_C( 102),
|
|
INT8_C(-123), INT8_C( 60), INT8_C( -57), INT8_C( 10),
|
|
INT8_C( -8), INT8_C( 91), INT8_C( 56), INT8_C( 10),
|
|
INT8_C(-127), INT8_C( -25), INT8_C( 40), INT8_C(-120),
|
|
INT8_C( 99), INT8_C(-103), INT8_C(-112), INT8_C( -7),
|
|
INT8_C( 115), INT8_C( -59), INT8_C( 49), INT8_C( -54),
|
|
INT8_C( -41), INT8_C( -25), INT8_C( -96), INT8_C( 16),
|
|
INT8_C( -43), INT8_C( -2), INT8_C(-114), INT8_C( 89)),
|
|
simde_mm256_set_epi8(INT8_C( 20), INT8_C( 32), INT8_C( -27), INT8_C( -28),
|
|
INT8_C( 86), INT8_C( -18), INT8_C( 1), INT8_C( -10),
|
|
INT8_C( -40), INT8_C( 83), INT8_C( -44), INT8_C(-102),
|
|
INT8_C( 46), INT8_C( 76), INT8_C( 10), INT8_C( 66),
|
|
INT8_C( -76), INT8_C( 18), INT8_C( 56), INT8_C( 13),
|
|
INT8_C(-103), INT8_C( -2), INT8_C( -25), INT8_C( -5),
|
|
INT8_C( 74), INT8_C( -5), INT8_C( -3), INT8_C(-123),
|
|
INT8_C( -35), INT8_C( -25), INT8_C( 43), INT8_C( 19)),
|
|
simde_mm256_set_epi8(INT8_C( 20), INT8_C( 112), INT8_C( 32), INT8_C( 90),
|
|
INT8_C( -27), INT8_C( 24), INT8_C( -28), INT8_C( 102),
|
|
INT8_C( 86), INT8_C(-123), INT8_C( -18), INT8_C( 60),
|
|
INT8_C( 1), INT8_C( -57), INT8_C( -10), INT8_C( 10),
|
|
INT8_C( -76), INT8_C( 99), INT8_C( 18), INT8_C(-103),
|
|
INT8_C( 56), INT8_C(-112), INT8_C( 13), INT8_C( -7),
|
|
INT8_C(-103), INT8_C( 115), INT8_C( -2), INT8_C( -59),
|
|
INT8_C( -25), INT8_C( 49), INT8_C( -5), INT8_C( -54)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 95), INT8_C( 65), INT8_C( 44), INT8_C(-120),
|
|
INT8_C( 77), INT8_C( 80), INT8_C( 72), INT8_C( -2),
|
|
INT8_C( 107), INT8_C( 115), INT8_C( 120), INT8_C( -13),
|
|
INT8_C( 12), INT8_C( 67), INT8_C( -69), INT8_C( -53),
|
|
INT8_C( -97), INT8_C( -94), INT8_C(-120), INT8_C( 83),
|
|
INT8_C(-103), INT8_C( -32), INT8_C( 93), INT8_C(-100),
|
|
INT8_C( 58), INT8_C( 69), INT8_C(-123), INT8_C(-102),
|
|
INT8_C( 123), INT8_C( -15), INT8_C( -31), INT8_C( -25)),
|
|
simde_mm256_set_epi8(INT8_C( 12), INT8_C( 126), INT8_C( 6), INT8_C( -7),
|
|
INT8_C(-106), INT8_C( 73), INT8_C( 64), INT8_C( 36),
|
|
INT8_C( -83), INT8_C(-127), INT8_C( -5), INT8_C( -91),
|
|
INT8_C( -74), INT8_C( 98), INT8_C( 28), INT8_C(-104),
|
|
INT8_C( 56), INT8_C(-120), INT8_C( -84), INT8_C( 28),
|
|
INT8_C( -96), INT8_C( 47), INT8_C( -85), INT8_C(-104),
|
|
INT8_C( 96), INT8_C( 12), INT8_C( 123), INT8_C(-104),
|
|
INT8_C( 31), INT8_C( 37), INT8_C( -31), INT8_C( -17)),
|
|
simde_mm256_set_epi8(INT8_C( 12), INT8_C( 95), INT8_C( 126), INT8_C( 65),
|
|
INT8_C( 6), INT8_C( 44), INT8_C( -7), INT8_C(-120),
|
|
INT8_C(-106), INT8_C( 77), INT8_C( 73), INT8_C( 80),
|
|
INT8_C( 64), INT8_C( 72), INT8_C( 36), INT8_C( -2),
|
|
INT8_C( 56), INT8_C( -97), INT8_C(-120), INT8_C( -94),
|
|
INT8_C( -84), INT8_C(-120), INT8_C( 28), INT8_C( 83),
|
|
INT8_C( -96), INT8_C(-103), INT8_C( 47), INT8_C( -32),
|
|
INT8_C( -85), INT8_C( 93), INT8_C(-104), INT8_C(-100)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 105), INT8_C( -44), INT8_C( 72), INT8_C( -66),
|
|
INT8_C( 125), INT8_C( -29), INT8_C( 78), INT8_C( -12),
|
|
INT8_C( 124), INT8_C( -33), INT8_C( 94), INT8_C( 61),
|
|
INT8_C( 86), INT8_C( 37), INT8_C( -88), INT8_C( 37),
|
|
INT8_C( -27), INT8_C( -80), INT8_C(-110), INT8_C( -81),
|
|
INT8_C( 40), INT8_C( 113), INT8_C( -26), INT8_C( -57),
|
|
INT8_C( -6), INT8_C( -99), INT8_C( -38), INT8_C( 24),
|
|
INT8_C( 86), INT8_C(-109), INT8_C( 116), INT8_C( 103)),
|
|
simde_mm256_set_epi8(INT8_C( -71), INT8_C( 89), INT8_C( 75), INT8_C( 16),
|
|
INT8_C( -92), INT8_C( 95), INT8_C( -25), INT8_C( 57),
|
|
INT8_C( 114), INT8_C( -21), INT8_C( 26), INT8_C( 67),
|
|
INT8_C( -54), INT8_C( 93), INT8_C( 57), INT8_C( -16),
|
|
INT8_C( -68), INT8_C( -27), INT8_C(-121), INT8_C( -7),
|
|
INT8_C( -78), INT8_C(-108), INT8_C( 94), INT8_C( 56),
|
|
INT8_C( 14), INT8_C( -83), INT8_C(-117), INT8_C( -4),
|
|
INT8_C( 75), INT8_C( -63), INT8_C( 109), INT8_C( 6)),
|
|
simde_mm256_set_epi8(INT8_C( -71), INT8_C( 105), INT8_C( 89), INT8_C( -44),
|
|
INT8_C( 75), INT8_C( 72), INT8_C( 16), INT8_C( -66),
|
|
INT8_C( -92), INT8_C( 125), INT8_C( 95), INT8_C( -29),
|
|
INT8_C( -25), INT8_C( 78), INT8_C( 57), INT8_C( -12),
|
|
INT8_C( -68), INT8_C( -27), INT8_C( -27), INT8_C( -80),
|
|
INT8_C(-121), INT8_C(-110), INT8_C( -7), INT8_C( -81),
|
|
INT8_C( -78), INT8_C( 40), INT8_C(-108), INT8_C( 113),
|
|
INT8_C( 94), INT8_C( -26), INT8_C( 56), INT8_C( -57)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -76), INT8_C( -96), INT8_C( 126), INT8_C( 70),
|
|
INT8_C(-109), INT8_C( 42), INT8_C( -56), INT8_C( -17),
|
|
INT8_C( 90), INT8_C( 30), INT8_C( 106), INT8_C( 47),
|
|
INT8_C( 58), INT8_C( 4), INT8_C( 49), INT8_C( 97),
|
|
INT8_C( -63), INT8_C( -41), INT8_C( 44), INT8_C( -24),
|
|
INT8_C(-126), INT8_C( -36), INT8_C( 48), INT8_C( 88),
|
|
INT8_C(-121), INT8_C(-109), INT8_C( 0), INT8_C( -48),
|
|
INT8_C( -14), INT8_C( 115), INT8_C(-117), INT8_C( -86)),
|
|
simde_mm256_set_epi8(INT8_C(-115), INT8_C( 98), INT8_C( 106), INT8_C( -64),
|
|
INT8_C( 61), INT8_C(-124), INT8_C( -21), INT8_C( 59),
|
|
INT8_C( 18), INT8_C( -3), INT8_C( 78), INT8_C( 77),
|
|
INT8_C( -11), INT8_C( 116), INT8_C( -63), INT8_C( -81),
|
|
INT8_C( -87), INT8_C( 116), INT8_C( 29), INT8_C( 58),
|
|
INT8_C( 66), INT8_C( 4), INT8_C( -71), INT8_C( 14),
|
|
INT8_C( -54), INT8_C( -76), INT8_C( -39), INT8_C( 8),
|
|
INT8_C( 12), INT8_C( -91), INT8_C( -14), INT8_C( -79)),
|
|
simde_mm256_set_epi8(INT8_C(-115), INT8_C( -76), INT8_C( 98), INT8_C( -96),
|
|
INT8_C( 106), INT8_C( 126), INT8_C( -64), INT8_C( 70),
|
|
INT8_C( 61), INT8_C(-109), INT8_C(-124), INT8_C( 42),
|
|
INT8_C( -21), INT8_C( -56), INT8_C( 59), INT8_C( -17),
|
|
INT8_C( -87), INT8_C( -63), INT8_C( 116), INT8_C( -41),
|
|
INT8_C( 29), INT8_C( 44), INT8_C( 58), INT8_C( -24),
|
|
INT8_C( 66), INT8_C(-126), INT8_C( 4), INT8_C( -36),
|
|
INT8_C( -71), INT8_C( 48), INT8_C( 14), INT8_C( 88)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -15), INT8_C( 20), INT8_C( -88), INT8_C( 19),
|
|
INT8_C( 9), INT8_C( 82), INT8_C( -23), INT8_C( 71),
|
|
INT8_C( 11), INT8_C( 4), INT8_C(-108), INT8_C( 0),
|
|
INT8_C( 68), INT8_C( 53), INT8_C( 89), INT8_C( -77),
|
|
INT8_C( -95), INT8_C( -3), INT8_C( 96), INT8_C( -31),
|
|
INT8_C(-103), INT8_C( -16), INT8_C( 103), INT8_C( 19),
|
|
INT8_C( -35), INT8_C( -46), INT8_C( 38), INT8_C(-105),
|
|
INT8_C( 39), INT8_C( 111), INT8_C( 116), INT8_C( -83)),
|
|
simde_mm256_set_epi8(INT8_C(-107), INT8_C( 48), INT8_C( 54), INT8_C( 1),
|
|
INT8_C(-111), INT8_C( 44), INT8_C( 1), INT8_C(-106),
|
|
INT8_C( 15), INT8_C( 70), INT8_C( -56), INT8_C( 61),
|
|
INT8_C(-114), INT8_C( 127), INT8_C( -2), INT8_C(-115),
|
|
INT8_C(-128), INT8_C(-102), INT8_C( -98), INT8_C( -84),
|
|
INT8_C( 41), INT8_C( -64), INT8_C( -50), INT8_C(-121),
|
|
INT8_C( 127), INT8_C( -51), INT8_C( 114), INT8_C( 76),
|
|
INT8_C( 32), INT8_C( -1), INT8_C( 123), INT8_C( 126)),
|
|
simde_mm256_set_epi8(INT8_C(-107), INT8_C( -15), INT8_C( 48), INT8_C( 20),
|
|
INT8_C( 54), INT8_C( -88), INT8_C( 1), INT8_C( 19),
|
|
INT8_C(-111), INT8_C( 9), INT8_C( 44), INT8_C( 82),
|
|
INT8_C( 1), INT8_C( -23), INT8_C(-106), INT8_C( 71),
|
|
INT8_C(-128), INT8_C( -95), INT8_C(-102), INT8_C( -3),
|
|
INT8_C( -98), INT8_C( 96), INT8_C( -84), INT8_C( -31),
|
|
INT8_C( 41), INT8_C(-103), INT8_C( -64), INT8_C( -16),
|
|
INT8_C( -50), INT8_C( 103), INT8_C(-121), INT8_C( 19)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 55), INT8_C(-115), INT8_C( -83), INT8_C( -46),
|
|
INT8_C( -9), INT8_C(-117), INT8_C( -90), INT8_C( 125),
|
|
INT8_C( 101), INT8_C( -65), INT8_C( -92), INT8_C( -40),
|
|
INT8_C(-123), INT8_C(-123), INT8_C( -75), INT8_C( -66),
|
|
INT8_C( -35), INT8_C( 99), INT8_C( 2), INT8_C( -14),
|
|
INT8_C( 112), INT8_C( 43), INT8_C( 61), INT8_C( 117),
|
|
INT8_C( -65), INT8_C( -59), INT8_C( 26), INT8_C( 65),
|
|
INT8_C( 77), INT8_C( -80), INT8_C( -44), INT8_C( -43)),
|
|
simde_mm256_set_epi8(INT8_C(-100), INT8_C( 88), INT8_C( -93), INT8_C( -17),
|
|
INT8_C( -79), INT8_C( 101), INT8_C( -79), INT8_C( -53),
|
|
INT8_C( -78), INT8_C( 41), INT8_C( 93), INT8_C( -10),
|
|
INT8_C( 23), INT8_C( -80), INT8_C( -49), INT8_C(-125),
|
|
INT8_C( 90), INT8_C( 77), INT8_C( -52), INT8_C(-119),
|
|
INT8_C( -58), INT8_C( -1), INT8_C( -56), INT8_C( -10),
|
|
INT8_C(-115), INT8_C(-128), INT8_C( -24), INT8_C( -90),
|
|
INT8_C( -73), INT8_C( 42), INT8_C( 53), INT8_C( 78)),
|
|
simde_mm256_set_epi8(INT8_C(-100), INT8_C( 55), INT8_C( 88), INT8_C(-115),
|
|
INT8_C( -93), INT8_C( -83), INT8_C( -17), INT8_C( -46),
|
|
INT8_C( -79), INT8_C( -9), INT8_C( 101), INT8_C(-117),
|
|
INT8_C( -79), INT8_C( -90), INT8_C( -53), INT8_C( 125),
|
|
INT8_C( 90), INT8_C( -35), INT8_C( 77), INT8_C( 99),
|
|
INT8_C( -52), INT8_C( 2), INT8_C(-119), INT8_C( -14),
|
|
INT8_C( -58), INT8_C( 112), INT8_C( -1), INT8_C( 43),
|
|
INT8_C( -56), INT8_C( 61), INT8_C( -10), INT8_C( 117)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 57), INT8_C( -60), INT8_C( 66), INT8_C( 39),
|
|
INT8_C( 35), INT8_C( 15), INT8_C( 40), INT8_C( 1),
|
|
INT8_C( -19), INT8_C( 90), INT8_C( -43), INT8_C( 35),
|
|
INT8_C( 49), INT8_C(-109), INT8_C( -79), INT8_C( -32),
|
|
INT8_C( -69), INT8_C(-121), INT8_C( 84), INT8_C( -95),
|
|
INT8_C( -83), INT8_C( 120), INT8_C( -35), INT8_C( 86),
|
|
INT8_C( -37), INT8_C(-127), INT8_C( -39), INT8_C( -49),
|
|
INT8_C( -98), INT8_C( 115), INT8_C(-116), INT8_C( -93)),
|
|
simde_mm256_set_epi8(INT8_C( 71), INT8_C( -6), INT8_C( 63), INT8_C( 38),
|
|
INT8_C( 88), INT8_C( -67), INT8_C( 37), INT8_C( -30),
|
|
INT8_C( 75), INT8_C( 31), INT8_C( 90), INT8_C( 41),
|
|
INT8_C(-128), INT8_C( 10), INT8_C( -34), INT8_C( 57),
|
|
INT8_C( -37), INT8_C( 100), INT8_C( 5), INT8_C( -3),
|
|
INT8_C( -26), INT8_C( 30), INT8_C( 58), INT8_C( 60),
|
|
INT8_C( 84), INT8_C( 42), INT8_C(-111), INT8_C(-101),
|
|
INT8_C( 16), INT8_C( -45), INT8_C( -2), INT8_C( 13)),
|
|
simde_mm256_set_epi8(INT8_C( 71), INT8_C( 57), INT8_C( -6), INT8_C( -60),
|
|
INT8_C( 63), INT8_C( 66), INT8_C( 38), INT8_C( 39),
|
|
INT8_C( 88), INT8_C( 35), INT8_C( -67), INT8_C( 15),
|
|
INT8_C( 37), INT8_C( 40), INT8_C( -30), INT8_C( 1),
|
|
INT8_C( -37), INT8_C( -69), INT8_C( 100), INT8_C(-121),
|
|
INT8_C( 5), INT8_C( 84), INT8_C( -3), INT8_C( -95),
|
|
INT8_C( -26), INT8_C( -83), INT8_C( 30), INT8_C( 120),
|
|
INT8_C( 58), INT8_C( -35), INT8_C( 60), INT8_C( 86)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpackhi_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpackhi_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C( 28196), INT16_C(-19354), INT16_C( 9804), INT16_C(-14507),
|
|
INT16_C(-13536), INT16_C( 20917), INT16_C( 967), INT16_C(-20246),
|
|
INT16_C(-10186), INT16_C( -9535), INT16_C(-21783), INT16_C( 1947),
|
|
INT16_C( 2132), INT16_C(-31037), INT16_C( 14740), INT16_C( 1814)),
|
|
simde_mm256_set_epi16(INT16_C( 5018), INT16_C(-30102), INT16_C( 8885), INT16_C( 7092),
|
|
INT16_C(-30176), INT16_C( -3016), INT16_C( 25065), INT16_C( 15182),
|
|
INT16_C( 20584), INT16_C( -3893), INT16_C( 9254), INT16_C( -555),
|
|
INT16_C( -1863), INT16_C(-29928), INT16_C(-30040), INT16_C( 20077)),
|
|
simde_mm256_set_epi16(INT16_C( 5018), INT16_C( 28196), INT16_C(-30102), INT16_C(-19354),
|
|
INT16_C( 8885), INT16_C( 9804), INT16_C( 7092), INT16_C(-14507),
|
|
INT16_C( 20584), INT16_C(-10186), INT16_C( -3893), INT16_C( -9535),
|
|
INT16_C( 9254), INT16_C(-21783), INT16_C( -555), INT16_C( 1947)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 24148), INT16_C(-26844), INT16_C(-25824), INT16_C( 11455),
|
|
INT16_C( -8659), INT16_C( 13962), INT16_C( 642), INT16_C( 30912),
|
|
INT16_C( 23855), INT16_C(-21952), INT16_C( -2538), INT16_C( 20285),
|
|
INT16_C( 13723), INT16_C(-27203), INT16_C( 7085), INT16_C(-26650)),
|
|
simde_mm256_set_epi16(INT16_C( -2663), INT16_C(-15563), INT16_C(-16845), INT16_C(-25964),
|
|
INT16_C(-19994), INT16_C( 11205), INT16_C( -9585), INT16_C( 20135),
|
|
INT16_C(-16938), INT16_C(-17819), INT16_C(-19377), INT16_C(-10418),
|
|
INT16_C( 5652), INT16_C( 345), INT16_C(-24270), INT16_C( -4677)),
|
|
simde_mm256_set_epi16(INT16_C( -2663), INT16_C( 24148), INT16_C(-15563), INT16_C(-26844),
|
|
INT16_C(-16845), INT16_C(-25824), INT16_C(-25964), INT16_C( 11455),
|
|
INT16_C(-16938), INT16_C( 23855), INT16_C(-17819), INT16_C(-21952),
|
|
INT16_C(-19377), INT16_C( -2538), INT16_C(-10418), INT16_C( 20285)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -9935), INT16_C( -5807), INT16_C( -4566), INT16_C( 9296),
|
|
INT16_C( 7157), INT16_C( -7813), INT16_C( 31971), INT16_C( 26020),
|
|
INT16_C(-21643), INT16_C(-19740), INT16_C( 3735), INT16_C(-24663),
|
|
INT16_C( -5558), INT16_C( 18004), INT16_C(-25263), INT16_C(-18828)),
|
|
simde_mm256_set_epi16(INT16_C( -3706), INT16_C(-10360), INT16_C( 12612), INT16_C(-20501),
|
|
INT16_C( 11831), INT16_C(-21556), INT16_C(-18710), INT16_C( 17184),
|
|
INT16_C( 12245), INT16_C(-30371), INT16_C( 2840), INT16_C( 8546),
|
|
INT16_C(-23833), INT16_C( 19149), INT16_C( 688), INT16_C( 6366)),
|
|
simde_mm256_set_epi16(INT16_C( -3706), INT16_C( -9935), INT16_C(-10360), INT16_C( -5807),
|
|
INT16_C( 12612), INT16_C( -4566), INT16_C(-20501), INT16_C( 9296),
|
|
INT16_C( 12245), INT16_C(-21643), INT16_C(-30371), INT16_C(-19740),
|
|
INT16_C( 2840), INT16_C( 3735), INT16_C( 8546), INT16_C(-24663)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 14882), INT16_C(-14375), INT16_C( -5870), INT16_C( -5698),
|
|
INT16_C( 1829), INT16_C( 5020), INT16_C( 8224), INT16_C( -7222),
|
|
INT16_C(-30958), INT16_C(-10885), INT16_C( 13942), INT16_C( 22894),
|
|
INT16_C( 26157), INT16_C(-23632), INT16_C( 26556), INT16_C( -3542)),
|
|
simde_mm256_set_epi16(INT16_C(-10931), INT16_C( 19441), INT16_C( -4465), INT16_C( 4406),
|
|
INT16_C( 16020), INT16_C( 26201), INT16_C( 25476), INT16_C( 21164),
|
|
INT16_C(-22646), INT16_C(-29482), INT16_C( 6258), INT16_C(-24419),
|
|
INT16_C( 18662), INT16_C(-31207), INT16_C( 31969), INT16_C(-18662)),
|
|
simde_mm256_set_epi16(INT16_C(-10931), INT16_C( 14882), INT16_C( 19441), INT16_C(-14375),
|
|
INT16_C( -4465), INT16_C( -5870), INT16_C( 4406), INT16_C( -5698),
|
|
INT16_C(-22646), INT16_C(-30958), INT16_C(-29482), INT16_C(-10885),
|
|
INT16_C( 6258), INT16_C( 13942), INT16_C(-24419), INT16_C( 22894)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 29539), INT16_C( 676), INT16_C( 123), INT16_C(-11161),
|
|
INT16_C(-30201), INT16_C( -2387), INT16_C( 24111), INT16_C( 19679),
|
|
INT16_C( 23083), INT16_C(-21338), INT16_C( -7843), INT16_C( 32608),
|
|
INT16_C(-24773), INT16_C( 13353), INT16_C( 17164), INT16_C( -2488)),
|
|
simde_mm256_set_epi16(INT16_C( -5138), INT16_C( 29730), INT16_C( 16993), INT16_C( 30231),
|
|
INT16_C( -2118), INT16_C( 20012), INT16_C(-32476), INT16_C( 2319),
|
|
INT16_C(-28250), INT16_C(-23799), INT16_C( 9274), INT16_C( 28645),
|
|
INT16_C( 5189), INT16_C( -5020), INT16_C( -4150), INT16_C(-15571)),
|
|
simde_mm256_set_epi16(INT16_C( -5138), INT16_C( 29539), INT16_C( 29730), INT16_C( 676),
|
|
INT16_C( 16993), INT16_C( 123), INT16_C( 30231), INT16_C(-11161),
|
|
INT16_C(-28250), INT16_C( 23083), INT16_C(-23799), INT16_C(-21338),
|
|
INT16_C( 9274), INT16_C( -7843), INT16_C( 28645), INT16_C( 32608)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-27710), INT16_C(-18125), INT16_C( 10296), INT16_C( 21376),
|
|
INT16_C( 23378), INT16_C(-22935), INT16_C(-22914), INT16_C(-31313),
|
|
INT16_C( 22251), INT16_C( 14011), INT16_C( -6668), INT16_C( 16302),
|
|
INT16_C( 11015), INT16_C( -1790), INT16_C(-19054), INT16_C( 25215)),
|
|
simde_mm256_set_epi16(INT16_C( 32531), INT16_C( -2485), INT16_C(-25139), INT16_C( 32419),
|
|
INT16_C( -2942), INT16_C(-32258), INT16_C( -7635), INT16_C( 12558),
|
|
INT16_C( 15559), INT16_C( -1904), INT16_C( 27475), INT16_C(-12566),
|
|
INT16_C(-17567), INT16_C(-27853), INT16_C(-24500), INT16_C( 12726)),
|
|
simde_mm256_set_epi16(INT16_C( 32531), INT16_C(-27710), INT16_C( -2485), INT16_C(-18125),
|
|
INT16_C(-25139), INT16_C( 10296), INT16_C( 32419), INT16_C( 21376),
|
|
INT16_C( 15559), INT16_C( 22251), INT16_C( -1904), INT16_C( 14011),
|
|
INT16_C( 27475), INT16_C( -6668), INT16_C(-12566), INT16_C( 16302)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 4586), INT16_C(-13896), INT16_C( 23081), INT16_C(-20860),
|
|
INT16_C( 27330), INT16_C( 28170), INT16_C( 24215), INT16_C( 4688),
|
|
INT16_C( 19543), INT16_C( 27682), INT16_C(-31899), INT16_C( 32041),
|
|
INT16_C( -8944), INT16_C( 18325), INT16_C(-13926), INT16_C( 24617)),
|
|
simde_mm256_set_epi16(INT16_C(-21223), INT16_C( -4083), INT16_C( 21224), INT16_C(-26984),
|
|
INT16_C( 30248), INT16_C( 30434), INT16_C( 22265), INT16_C( 8187),
|
|
INT16_C( 29805), INT16_C( -7428), INT16_C( 31794), INT16_C( 7354),
|
|
INT16_C(-23403), INT16_C( 17371), INT16_C(-31138), INT16_C( 16031)),
|
|
simde_mm256_set_epi16(INT16_C(-21223), INT16_C( 4586), INT16_C( -4083), INT16_C(-13896),
|
|
INT16_C( 21224), INT16_C( 23081), INT16_C(-26984), INT16_C(-20860),
|
|
INT16_C( 29805), INT16_C( 19543), INT16_C( -7428), INT16_C( 27682),
|
|
INT16_C( 31794), INT16_C(-31899), INT16_C( 7354), INT16_C( 32041)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -9151), INT16_C(-30324), INT16_C( 22631), INT16_C( 344),
|
|
INT16_C( 4713), INT16_C( 10238), INT16_C(-10751), INT16_C(-14572),
|
|
INT16_C( 3790), INT16_C( 8629), INT16_C( 9946), INT16_C( 31127),
|
|
INT16_C( -9819), INT16_C( 4727), INT16_C( 30741), INT16_C(-20627)),
|
|
simde_mm256_set_epi16(INT16_C(-23421), INT16_C( -2678), INT16_C( 28254), INT16_C( -2905),
|
|
INT16_C( 6237), INT16_C( 10685), INT16_C( 27961), INT16_C( 15513),
|
|
INT16_C( 7306), INT16_C(-32072), INT16_C(-26874), INT16_C( 25112),
|
|
INT16_C( -3381), INT16_C(-22461), INT16_C( -7476), INT16_C(-19391)),
|
|
simde_mm256_set_epi16(INT16_C(-23421), INT16_C( -9151), INT16_C( -2678), INT16_C(-30324),
|
|
INT16_C( 28254), INT16_C( 22631), INT16_C( -2905), INT16_C( 344),
|
|
INT16_C( 7306), INT16_C( 3790), INT16_C(-32072), INT16_C( 8629),
|
|
INT16_C(-26874), INT16_C( 9946), INT16_C( 25112), INT16_C( 31127)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpackhi_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpackhi_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C( 1912850859), INT32_C( 967654585), INT32_C( 1199101495), INT32_C( 1020867807),
|
|
INT32_C(-1113017403), INT32_C( 1207205853), INT32_C(-1283015323), INT32_C( -865603422)),
|
|
simde_mm256_set_epi32(INT32_C( 439671122), INT32_C( -834176430), INT32_C( 1316719462), INT32_C( 794894521),
|
|
INT32_C( -364012057), INT32_C(-1283491930), INT32_C( -229222523), INT32_C( -489560867)),
|
|
simde_mm256_set_epi32(INT32_C( 439671122), INT32_C( 1912850859), INT32_C( -834176430), INT32_C( 967654585),
|
|
INT32_C( -364012057), INT32_C(-1113017403), INT32_C(-1283491930), INT32_C( 1207205853)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1043075301), INT32_C(-1205379203), INT32_C( -623218356), INT32_C(-1709643548),
|
|
INT32_C( -53386540), INT32_C( 1999540953), INT32_C( 2146270924), INT32_C( 1577977486)),
|
|
simde_mm256_set_epi32(INT32_C( 1416708497), INT32_C( 1977290590), INT32_C( -799631345), INT32_C( -699557932),
|
|
INT32_C( -779666453), INT32_C(-1556766589), INT32_C( 1459438848), INT32_C( 777616978)),
|
|
simde_mm256_set_epi32(INT32_C( 1416708497), INT32_C(-1043075301), INT32_C( 1977290590), INT32_C(-1205379203),
|
|
INT32_C( -779666453), INT32_C( -53386540), INT32_C(-1556766589), INT32_C( 1999540953)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1262008529), INT32_C( 995722237), INT32_C( 1921619936), INT32_C(-2112826366),
|
|
INT32_C( -393450028), INT32_C( 1344594991), INT32_C( 2093675145), INT32_C( 760241232)),
|
|
simde_mm256_set_epi32(INT32_C( 1015857134), INT32_C( 1981903036), INT32_C( 1927114874), INT32_C( 1164834454),
|
|
INT32_C( -157704373), INT32_C(-1887449946), INT32_C(-1985956729), INT32_C(-2099334634)),
|
|
simde_mm256_set_epi32(INT32_C( 1015857134), INT32_C(-1262008529), INT32_C( 1981903036), INT32_C( 995722237),
|
|
INT32_C( -157704373), INT32_C( -393450028), INT32_C(-1887449946), INT32_C( 1344594991)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 212170692), INT32_C( 815869922), INT32_C( 20080222), INT32_C( -75417640),
|
|
INT32_C( -503678651), INT32_C( -834592925), INT32_C( 1707747009), INT32_C( -254760969)),
|
|
simde_mm256_set_epi32(INT32_C( -574627621), INT32_C( -890978529), INT32_C( 2077265887), INT32_C( 842919754),
|
|
INT32_C( -486905662), INT32_C( 988851226), INT32_C(-1518229684), INT32_C( 1816570667)),
|
|
simde_mm256_set_epi32(INT32_C( -574627621), INT32_C( 212170692), INT32_C( -890978529), INT32_C( 815869922),
|
|
INT32_C( -486905662), INT32_C( -503678651), INT32_C( 988851226), INT32_C( -834592925)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1459349320), INT32_C( -943790006), INT32_C( 424384832), INT32_C( 113065932),
|
|
INT32_C( -80059372), INT32_C( 814075306), INT32_C( 1255708904), INT32_C( 894835823)),
|
|
simde_mm256_set_epi32(INT32_C( 1159658953), INT32_C( 513900351), INT32_C( 1274799760), INT32_C( 661217108),
|
|
INT32_C(-1116902016), INT32_C( 1264134407), INT32_C( 1996134185), INT32_C( -620124201)),
|
|
simde_mm256_set_epi32(INT32_C( 1159658953), INT32_C( 1459349320), INT32_C( 513900351), INT32_C( -943790006),
|
|
INT32_C(-1116902016), INT32_C( -80059372), INT32_C( 1264134407), INT32_C( 814075306)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1669821560), INT32_C( -524933447), INT32_C(-1923407638), INT32_C( 1748809176),
|
|
INT32_C( -67073492), INT32_C(-1589224355), INT32_C(-1890395480), INT32_C( 650020033)),
|
|
simde_mm256_set_epi32(INT32_C( 1449046752), INT32_C( 11693105), INT32_C( 225889559), INT32_C( 1195957602),
|
|
INT32_C( -790861669), INT32_C( 894225381), INT32_C( 1788797029), INT32_C( 1410983650)),
|
|
simde_mm256_set_epi32(INT32_C( 1449046752), INT32_C( 1669821560), INT32_C( 11693105), INT32_C( -524933447),
|
|
INT32_C( -790861669), INT32_C( -67073492), INT32_C( 894225381), INT32_C(-1589224355)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 166836505), INT32_C( 35920603), INT32_C( 209405330), INT32_C(-1870274444),
|
|
INT32_C(-2065187438), INT32_C(-1749203354), INT32_C(-1834771489), INT32_C( 1795755804)),
|
|
simde_mm256_set_epi32(INT32_C( 863607209), INT32_C( 671761907), INT32_C(-1319646828), INT32_C( 236938511),
|
|
INT32_C( 277292323), INT32_C(-1226502074), INT32_C( 1319858080), INT32_C( 1103529470)),
|
|
simde_mm256_set_epi32(INT32_C( 863607209), INT32_C( 166836505), INT32_C( 671761907), INT32_C( 35920603),
|
|
INT32_C( 277292323), INT32_C(-2065187438), INT32_C(-1226502074), INT32_C(-1749203354)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -91786742), INT32_C(-1505313832), INT32_C( 1530067112), INT32_C(-1201437931),
|
|
INT32_C(-1252606163), INT32_C( 1723954910), INT32_C( 348258249), INT32_C( -864462904)),
|
|
simde_mm256_set_epi32(INT32_C( 926816633), INT32_C( -705859720), INT32_C( 1728076763), INT32_C(-1714964607),
|
|
INT32_C( -194394697), INT32_C( -494196608), INT32_C( 1804204829), INT32_C(-1267214668)),
|
|
simde_mm256_set_epi32(INT32_C( 926816633), INT32_C( -91786742), INT32_C( -705859720), INT32_C(-1505313832),
|
|
INT32_C( -194394697), INT32_C(-1252606163), INT32_C( -494196608), INT32_C( 1723954910)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpackhi_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_unpackhi_epi64(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 8215631882498161849), INT64_C( 5150101706630575327),
|
|
INT64_C(-4780373344556646435), INT64_C(-5510508849122512734)),
|
|
simde_mm256_set_epi64x(INT64_C( 1888373093446416978), INT64_C( 5655267028091609273),
|
|
INT64_C(-1563419877153212506), INT64_C( -984503235986201379)),
|
|
simde_mm256_set_epi64x(INT64_C( 1888373093446416978), INT64_C( 8215631882498161849),
|
|
INT64_C(-1563419877153212506), INT64_C(-4780373344556646435)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-4479974301970768003), INT64_C(-2676702454701561628),
|
|
INT64_C( -229293441347054887), INT64_C( 9218163428513678990)),
|
|
simde_mm256_set_epi64x(INT64_C( 6084716664557604702), INT64_C(-3434390472036083756),
|
|
INT64_C(-3348641914685120381), INT64_C( 6268242123449531986)),
|
|
simde_mm256_set_epi64x(INT64_C( 6084716664557604702), INT64_C(-4479974301970768003),
|
|
INT64_C(-3348641914685120381), INT64_C( -229293441347054887)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-5420285358332345347), INT64_C( 8253294782643753986),
|
|
INT64_C(-1689855001525689297), INT64_C( 8992266276983299152)),
|
|
simde_mm256_set_epi64x(INT64_C( 4363073169920192700), INT64_C( 8276895360629995158),
|
|
INT64_C( -677335122063668058), INT64_C(-8529619200130502122)),
|
|
simde_mm256_set_epi64x(INT64_C( 4363073169920192700), INT64_C(-5420285358332345347),
|
|
INT64_C( -677335122063668058), INT64_C(-1689855001525689297)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 911266184125558754), INT64_C( 86243901005969368),
|
|
INT64_C(-2163283330278023325), INT64_C( 7334717557537023991)),
|
|
simde_mm256_set_epi64x(INT64_C(-2468006836169294049), INT64_C( 8921789050604351306),
|
|
INT64_C(-2091243893538378726), INT64_C(-6520746838779843797)),
|
|
simde_mm256_set_epi64x(INT64_C(-2468006836169294049), INT64_C( 911266184125558754),
|
|
INT64_C(-2091243893538378726), INT64_C(-2163283330278023325)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 6267857606191016010), INT64_C( 1822718974471520204),
|
|
INT64_C( -343852383664222806), INT64_C( 5393228676870839407)),
|
|
simde_mm256_set_epi64x(INT64_C( 4980697278162501439), INT64_C( 5475223278809866068),
|
|
INT64_C(-4797057630292334329), INT64_C( 8573331046677456855)),
|
|
simde_mm256_set_epi64x(INT64_C( 4980697278162501439), INT64_C( 6267857606191016010),
|
|
INT64_C(-4797057630292334329), INT64_C( -343852383664222806)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 7171828994125735609), INT64_C(-8260972900337797672),
|
|
INT64_C( -288078451862774691), INT64_C(-8119186762456202047)),
|
|
simde_mm256_set_epi64x(INT64_C( 6223608410226715697), INT64_C( 970188269608820066),
|
|
INT64_C(-3396725003120751643), INT64_C( 7682824740147947234)),
|
|
simde_mm256_set_epi64x(INT64_C( 6223608410226715697), INT64_C( 7171828994125735609),
|
|
INT64_C(-3396725003120751643), INT64_C( -288078451862774691)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 716557332789861083), INT64_C( 899389046382780532),
|
|
INT64_C(-8869912503774263706), INT64_C(-7880283539092467940)),
|
|
simde_mm256_set_epi64x(INT64_C( 3709164719916598771), INT64_C(-5667839968293198577),
|
|
INT64_C( 1190961461785333830), INT64_C( 5668747290064881150)),
|
|
simde_mm256_set_epi64x(INT64_C( 3709164719916598771), INT64_C( 716557332789861083),
|
|
INT64_C( 1190961461785333830), INT64_C(-8869912503774263706)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( -394221052306736168), INT64_C( 6571588209818698517),
|
|
INT64_C(-5379902503129090338), INT64_C( 1495757793447729096)),
|
|
simde_mm256_set_epi64x(INT64_C( 3980647131712941944), INT64_C( 7422033184642545537),
|
|
INT64_C( -834918862330058624), INT64_C( 7749000738868025012)),
|
|
simde_mm256_set_epi64x(INT64_C( 3980647131712941944), INT64_C( -394221052306736168),
|
|
INT64_C( -834918862330058624), INT64_C(-5379902503129090338)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_unpackhi_epi64(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_xor_si256(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi64x(INT64_C( 5259297934522696228), INT64_C( -431388325374833226),
|
|
INT64_C(-9156654280217339654), INT64_C( 3013799969040676174)),
|
|
simde_mm256_set_epi64x(INT64_C(-5610681863545377343), INT64_C( 612481038911101319),
|
|
INT64_C( 6883094940018615339), INT64_C( 5567527613349466758)),
|
|
simde_mm256_set_epi64x(INT64_C( -369826194426859547), INT64_C( -973728768696970191),
|
|
INT64_C(-2348436908296831791), INT64_C( 7246573032282466248)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 3972970387578047990), INT64_C(-3229803026080205617),
|
|
INT64_C(-6416566799554918012), INT64_C( 7243493956554503841)),
|
|
simde_mm256_set_epi64x(INT64_C(-2328069278528400967), INT64_C( -866344990039815627),
|
|
INT64_C( 5191362241164177707), INT64_C( 6965508020004735797)),
|
|
simde_mm256_set_epi64x(INT64_C(-1687764814515086257), INT64_C( 2366483896335154938),
|
|
INT64_C(-1227043938297071441), INT64_C( 300751355152891284)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-2206747055975530789), INT64_C( 4273990306427029435),
|
|
INT64_C(-8066951550635951807), INT64_C(-6928425273442710875)),
|
|
simde_mm256_set_epi64x(INT64_C(-4939687486626430761), INT64_C(-1679871113178117518),
|
|
INT64_C( -257233978894060261), INT64_C( 3512456176079583747)),
|
|
simde_mm256_set_epi64x(INT64_C( 6490456006491962892), INT64_C(-3170633551353754167),
|
|
INT64_C( 7809929228804508762), INT64_C(-5807521855463853914)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-8921324304875098515), INT64_C( 7821700200964206339),
|
|
INT64_C( 2994261353466796408), INT64_C(-3540068018343188204)),
|
|
simde_mm256_set_epi64x(INT64_C( 4294357400656496399), INT64_C( 3626952931332295508),
|
|
INT64_C(-7673859083891959013), INT64_C( 1757595472193292730)),
|
|
simde_mm256_set_epi64x(INT64_C(-4636023147992241822), INT64_C( 6834710091372766295),
|
|
INT64_C(-4896194530503130525), INT64_C(-2973751098574872402)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 6035067220796971838), INT64_C( 776715589999365452),
|
|
INT64_C( 6384421609504908311), INT64_C(-8816267298986390401)),
|
|
simde_mm256_set_epi64x(INT64_C(-5739247744839421985), INT64_C( 4653816358777581262),
|
|
INT64_C( 1021833051660996174), INT64_C(-2812490060666099514)),
|
|
simde_mm256_set_epi64x(INT64_C(-2046106215006112543), INT64_C( 5355589079452705666),
|
|
INT64_C( 6247691286445288025), INT64_C( 6727907985691518137)) },
|
|
{ simde_mm256_set_epi64x(INT64_C( 8351942705843556286), INT64_C(-6873744911563016812),
|
|
INT64_C(-3359807879676804643), INT64_C( 8110291315370526762)),
|
|
simde_mm256_set_epi64x(INT64_C( -126725188666547082), INT64_C( 4977977654704902461),
|
|
INT64_C(-7727661347289141755), INT64_C( 7453179086506187618)),
|
|
simde_mm256_set_epi64x(INT64_C(-8226449520241153080), INT64_C(-1905346832462535511),
|
|
INT64_C( 5016522326789730264), INT64_C( 1721087647877354312)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-3541650301143541882), INT64_C( 2340510988864802758),
|
|
INT64_C(-2484352519219712887), INT64_C(-7823366500674586971)),
|
|
simde_mm256_set_epi64x(INT64_C( 8787496485572343767), INT64_C( 5972980855318355117),
|
|
INT64_C( 1254817555351506981), INT64_C( 3585972827969393388)),
|
|
simde_mm256_set_epi64x(INT64_C(-5248115586102763439), INT64_C( 8259425971222532971),
|
|
INT64_C(-3679494355159515988), INT64_C(-6724368097479220151)) },
|
|
{ simde_mm256_set_epi64x(INT64_C(-8306510049557921760), INT64_C(-3952727854475033325),
|
|
INT64_C(-2945542500559658351), INT64_C( 937552523927336948)),
|
|
simde_mm256_set_epi64x(INT64_C( 4952101385331357252), INT64_C( 3142376059888144776),
|
|
INT64_C(-5526391810306106309), INT64_C( 1965153668529504230)),
|
|
simde_mm256_set_epi64x(INT64_C(-4035158306098612636), INT64_C(-2108000641444326245),
|
|
INT64_C( 7228588967820590762), INT64_C( 1605387943167658002)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_xor_si256(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i64(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_max_epu16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 46627), UINT16_C( 59720), UINT16_C( 61906), UINT16_C( 11658),
|
|
UINT16_C( 20044), UINT16_C( 39774), UINT16_C( 13081), UINT16_C( 26580),
|
|
UINT16_C( 18209), UINT16_C( 20949), UINT16_C( 29177), UINT16_C( 31372),
|
|
UINT16_C( 2292), UINT16_C( 1480), UINT16_C( 23053), UINT16_C( 14592)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 18663), UINT16_C( 17474), UINT16_C( 64035), UINT16_C( 52566),
|
|
UINT16_C( 14212), UINT16_C( 10671), UINT16_C( 65410), UINT16_C( 60796),
|
|
UINT16_C( 54296), UINT16_C( 44956), UINT16_C( 2247), UINT16_C( 1960),
|
|
UINT16_C( 42291), UINT16_C( 26784), UINT16_C( 22137), UINT16_C( 30865)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 46627), UINT16_C( 59720), UINT16_C( 64035), UINT16_C( 52566),
|
|
UINT16_C( 20044), UINT16_C( 39774), UINT16_C( 65410), UINT16_C( 60796),
|
|
UINT16_C( 54296), UINT16_C( 44956), UINT16_C( 29177), UINT16_C( 31372),
|
|
UINT16_C( 42291), UINT16_C( 26784), UINT16_C( 23053), UINT16_C( 30865)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 18263), UINT16_C( 58739), UINT16_C( 63639), UINT16_C( 55084),
|
|
UINT16_C( 26185), UINT16_C( 41545), UINT16_C( 59964), UINT16_C( 12474),
|
|
UINT16_C( 53086), UINT16_C( 18094), UINT16_C( 30753), UINT16_C( 29484),
|
|
UINT16_C( 20722), UINT16_C( 11313), UINT16_C( 13962), UINT16_C( 39972)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 58325), UINT16_C( 58948), UINT16_C( 43545), UINT16_C( 59756),
|
|
UINT16_C( 12295), UINT16_C( 57147), UINT16_C( 58632), UINT16_C( 46109),
|
|
UINT16_C( 49795), UINT16_C( 8909), UINT16_C( 2266), UINT16_C( 36324),
|
|
UINT16_C( 59196), UINT16_C( 64507), UINT16_C( 7734), UINT16_C( 45358)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 58325), UINT16_C( 58948), UINT16_C( 63639), UINT16_C( 59756),
|
|
UINT16_C( 26185), UINT16_C( 57147), UINT16_C( 59964), UINT16_C( 46109),
|
|
UINT16_C( 53086), UINT16_C( 18094), UINT16_C( 30753), UINT16_C( 36324),
|
|
UINT16_C( 59196), UINT16_C( 64507), UINT16_C( 13962), UINT16_C( 45358)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 39984), UINT16_C( 47951), UINT16_C( 65190), UINT16_C( 48692),
|
|
UINT16_C( 48663), UINT16_C( 53744), UINT16_C( 12623), UINT16_C( 35136),
|
|
UINT16_C( 1353), UINT16_C( 21406), UINT16_C( 10132), UINT16_C( 27940),
|
|
UINT16_C( 4906), UINT16_C( 10556), UINT16_C( 20269), UINT16_C( 18864)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 52708), UINT16_C( 50460), UINT16_C( 39275), UINT16_C( 31341),
|
|
UINT16_C( 59248), UINT16_C( 23377), UINT16_C( 29345), UINT16_C( 50829),
|
|
UINT16_C( 4977), UINT16_C( 15093), UINT16_C( 36151), UINT16_C( 58243),
|
|
UINT16_C( 16819), UINT16_C( 62076), UINT16_C( 48614), UINT16_C( 2944)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 52708), UINT16_C( 50460), UINT16_C( 65190), UINT16_C( 48692),
|
|
UINT16_C( 59248), UINT16_C( 53744), UINT16_C( 29345), UINT16_C( 50829),
|
|
UINT16_C( 4977), UINT16_C( 21406), UINT16_C( 36151), UINT16_C( 58243),
|
|
UINT16_C( 16819), UINT16_C( 62076), UINT16_C( 48614), UINT16_C( 18864)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 14954), UINT16_C( 41703), UINT16_C( 49393), UINT16_C( 33328),
|
|
UINT16_C( 13198), UINT16_C( 8963), UINT16_C( 20974), UINT16_C( 46796),
|
|
UINT16_C( 4895), UINT16_C( 2875), UINT16_C( 62027), UINT16_C( 51154),
|
|
UINT16_C( 19247), UINT16_C( 34899), UINT16_C( 65019), UINT16_C( 60032)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 58187), UINT16_C( 7429), UINT16_C( 29396), UINT16_C( 13821),
|
|
UINT16_C( 33371), UINT16_C( 1928), UINT16_C( 49379), UINT16_C( 722),
|
|
UINT16_C( 28382), UINT16_C( 55366), UINT16_C( 43323), UINT16_C( 47667),
|
|
UINT16_C( 5125), UINT16_C( 60684), UINT16_C( 59616), UINT16_C( 50280)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 58187), UINT16_C( 41703), UINT16_C( 49393), UINT16_C( 33328),
|
|
UINT16_C( 33371), UINT16_C( 8963), UINT16_C( 49379), UINT16_C( 46796),
|
|
UINT16_C( 28382), UINT16_C( 55366), UINT16_C( 62027), UINT16_C( 51154),
|
|
UINT16_C( 19247), UINT16_C( 60684), UINT16_C( 65019), UINT16_C( 60032)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 27739), UINT16_C( 29065), UINT16_C( 56947), UINT16_C( 55426),
|
|
UINT16_C( 46492), UINT16_C( 58959), UINT16_C( 17884), UINT16_C( 106),
|
|
UINT16_C( 40322), UINT16_C( 13650), UINT16_C( 50675), UINT16_C( 30885),
|
|
UINT16_C( 7879), UINT16_C( 4114), UINT16_C( 54484), UINT16_C( 15816)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 43597), UINT16_C( 65192), UINT16_C( 43740), UINT16_C( 54700),
|
|
UINT16_C( 31952), UINT16_C( 20957), UINT16_C( 20261), UINT16_C( 50955),
|
|
UINT16_C( 37051), UINT16_C( 36093), UINT16_C( 59438), UINT16_C( 28726),
|
|
UINT16_C( 6886), UINT16_C( 52003), UINT16_C( 19596), UINT16_C( 59577)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 43597), UINT16_C( 65192), UINT16_C( 56947), UINT16_C( 55426),
|
|
UINT16_C( 46492), UINT16_C( 58959), UINT16_C( 20261), UINT16_C( 50955),
|
|
UINT16_C( 40322), UINT16_C( 36093), UINT16_C( 59438), UINT16_C( 30885),
|
|
UINT16_C( 7879), UINT16_C( 52003), UINT16_C( 54484), UINT16_C( 59577)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 57657), UINT16_C( 13117), UINT16_C( 60292), UINT16_C( 65452),
|
|
UINT16_C( 694), UINT16_C( 21975), UINT16_C( 46000), UINT16_C( 22467),
|
|
UINT16_C( 60775), UINT16_C( 6084), UINT16_C( 52920), UINT16_C( 10893),
|
|
UINT16_C( 33722), UINT16_C( 16366), UINT16_C( 746), UINT16_C( 51289)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 18878), UINT16_C( 35582), UINT16_C( 34313), UINT16_C( 41553),
|
|
UINT16_C( 15025), UINT16_C( 13655), UINT16_C( 30842), UINT16_C( 55976),
|
|
UINT16_C( 55306), UINT16_C( 8486), UINT16_C( 20326), UINT16_C( 56205),
|
|
UINT16_C( 9516), UINT16_C( 5604), UINT16_C( 41707), UINT16_C( 23844)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 57657), UINT16_C( 35582), UINT16_C( 60292), UINT16_C( 65452),
|
|
UINT16_C( 15025), UINT16_C( 21975), UINT16_C( 46000), UINT16_C( 55976),
|
|
UINT16_C( 60775), UINT16_C( 8486), UINT16_C( 52920), UINT16_C( 56205),
|
|
UINT16_C( 33722), UINT16_C( 16366), UINT16_C( 41707), UINT16_C( 51289)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 35061), UINT16_C( 31271), UINT16_C( 44458), UINT16_C( 43999),
|
|
UINT16_C( 52764), UINT16_C( 24092), UINT16_C( 55278), UINT16_C( 9729),
|
|
UINT16_C( 30350), UINT16_C( 35228), UINT16_C( 24843), UINT16_C( 46927),
|
|
UINT16_C( 47959), UINT16_C( 8348), UINT16_C( 39137), UINT16_C( 59054)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 18920), UINT16_C( 22899), UINT16_C( 4131), UINT16_C( 54549),
|
|
UINT16_C( 33095), UINT16_C( 25760), UINT16_C( 6465), UINT16_C( 12263),
|
|
UINT16_C( 47803), UINT16_C( 61613), UINT16_C( 51708), UINT16_C( 45746),
|
|
UINT16_C( 59719), UINT16_C( 2919), UINT16_C( 24086), UINT16_C( 5665)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 35061), UINT16_C( 31271), UINT16_C( 44458), UINT16_C( 54549),
|
|
UINT16_C( 52764), UINT16_C( 25760), UINT16_C( 55278), UINT16_C( 12263),
|
|
UINT16_C( 47803), UINT16_C( 61613), UINT16_C( 51708), UINT16_C( 46927),
|
|
UINT16_C( 59719), UINT16_C( 8348), UINT16_C( 39137), UINT16_C( 59054)) },
|
|
{ simde_x_mm256_set_epu16(UINT16_C( 46764), UINT16_C( 51381), UINT16_C( 57954), UINT16_C( 11573),
|
|
UINT16_C( 40336), UINT16_C( 26367), UINT16_C( 17948), UINT16_C( 58963),
|
|
UINT16_C( 63320), UINT16_C( 30133), UINT16_C( 13248), UINT16_C( 4541),
|
|
UINT16_C( 43652), UINT16_C( 3442), UINT16_C( 602), UINT16_C( 59909)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 34844), UINT16_C( 11763), UINT16_C( 21582), UINT16_C( 37103),
|
|
UINT16_C( 62839), UINT16_C( 48595), UINT16_C( 34664), UINT16_C( 65307),
|
|
UINT16_C( 42742), UINT16_C( 1820), UINT16_C( 54309), UINT16_C( 55027),
|
|
UINT16_C( 64764), UINT16_C( 27300), UINT16_C( 20131), UINT16_C( 43537)),
|
|
simde_x_mm256_set_epu16(UINT16_C( 46764), UINT16_C( 51381), UINT16_C( 57954), UINT16_C( 37103),
|
|
UINT16_C( 62839), UINT16_C( 48595), UINT16_C( 34664), UINT16_C( 65307),
|
|
UINT16_C( 63320), UINT16_C( 30133), UINT16_C( 54309), UINT16_C( 55027),
|
|
UINT16_C( 64764), UINT16_C( 27300), UINT16_C( 20131), UINT16_C( 59909)) }
|
|
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_max_epu16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_max_epu32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_x_mm256_set_epu32(UINT32_C(3051572045), UINT32_C(3545123096), UINT32_C( 539532434), UINT32_C(2726067579),
|
|
UINT32_C(3419329411), UINT32_C(3056421163), UINT32_C(2937475413), UINT32_C( 891304178)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3684521838), UINT32_C(3664092042), UINT32_C( 648541541), UINT32_C( 272930365),
|
|
UINT32_C( 675916127), UINT32_C(1720002587), UINT32_C(1082929595), UINT32_C( 984837149)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3684521838), UINT32_C(3664092042), UINT32_C( 648541541), UINT32_C(2726067579),
|
|
UINT32_C(3419329411), UINT32_C(3056421163), UINT32_C(2937475413), UINT32_C( 984837149)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(2114544969), UINT32_C( 863431180), UINT32_C(2929790297), UINT32_C(1508406092),
|
|
UINT32_C(1766188399), UINT32_C(3527468216), UINT32_C(1207097510), UINT32_C(3902158588)),
|
|
simde_x_mm256_set_epu32(UINT32_C(4246012734), UINT32_C(1929345650), UINT32_C(3025365238), UINT32_C(3355971563),
|
|
UINT32_C(3310140776), UINT32_C(2715842442), UINT32_C(2891355465), UINT32_C(4115361740)),
|
|
simde_x_mm256_set_epu32(UINT32_C(4246012734), UINT32_C(1929345650), UINT32_C(3025365238), UINT32_C(3355971563),
|
|
UINT32_C(3310140776), UINT32_C(3527468216), UINT32_C(2891355465), UINT32_C(4115361740)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1001663617), UINT32_C(3733133836), UINT32_C(2215256808), UINT32_C(2636746621),
|
|
UINT32_C(1004506231), UINT32_C(4292057274), UINT32_C(1794485537), UINT32_C(2483395991)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3187837407), UINT32_C( 282146620), UINT32_C(3384289392), UINT32_C(3287894196),
|
|
UINT32_C(1516921107), UINT32_C( 874312086), UINT32_C(1365725481), UINT32_C(2010925515)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3187837407), UINT32_C(3733133836), UINT32_C(3384289392), UINT32_C(3287894196),
|
|
UINT32_C(1516921107), UINT32_C(4292057274), UINT32_C(1794485537), UINT32_C(2483395991)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1825864990), UINT32_C(3651632677), UINT32_C(1848482644), UINT32_C(4217806782),
|
|
UINT32_C(3557654096), UINT32_C( 849332445), UINT32_C( 114697269), UINT32_C( 674786807)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1779504954), UINT32_C(1699927403), UINT32_C(2934040606), UINT32_C(4177282687),
|
|
UINT32_C(3450483742), UINT32_C(3231995683), UINT32_C(2093833738), UINT32_C( 336221368)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1825864990), UINT32_C(3651632677), UINT32_C(2934040606), UINT32_C(4217806782),
|
|
UINT32_C(3557654096), UINT32_C(3231995683), UINT32_C(2093833738), UINT32_C( 674786807)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C( 837260657), UINT32_C(3220613586), UINT32_C(2642631733), UINT32_C(2252900450),
|
|
UINT32_C(3061609531), UINT32_C(2252923032), UINT32_C(1030296341), UINT32_C(2720361240)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 273034038), UINT32_C(2374878315), UINT32_C( 248014486), UINT32_C( 363234795),
|
|
UINT32_C(2126760034), UINT32_C(4029819680), UINT32_C(2144543040), UINT32_C(4227450764)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 837260657), UINT32_C(3220613586), UINT32_C(2642631733), UINT32_C(2252900450),
|
|
UINT32_C(3061609531), UINT32_C(4029819680), UINT32_C(2144543040), UINT32_C(4227450764)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1832345572), UINT32_C(3528531140), UINT32_C(1174695155), UINT32_C( 287919562),
|
|
UINT32_C( 792094828), UINT32_C(2183085761), UINT32_C(4262203031), UINT32_C(3585219150)),
|
|
simde_x_mm256_set_epu32(UINT32_C( 890341915), UINT32_C(2131853812), UINT32_C(2693768197), UINT32_C(1107526035),
|
|
UINT32_C(3439504205), UINT32_C( 751425977), UINT32_C(3946340711), UINT32_C(2999018213)),
|
|
simde_x_mm256_set_epu32(UINT32_C(1832345572), UINT32_C(3528531140), UINT32_C(2693768197), UINT32_C(1107526035),
|
|
UINT32_C(3439504205), UINT32_C(2183085761), UINT32_C(4262203031), UINT32_C(3585219150)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(3937957510), UINT32_C(1450021822), UINT32_C(1539281783), UINT32_C( 551303701),
|
|
UINT32_C(1703578262), UINT32_C(2645712321), UINT32_C(2567475981), UINT32_C(3368049591)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3778291576), UINT32_C(3382324216), UINT32_C(1328766962), UINT32_C(4275285368),
|
|
UINT32_C( 709773804), UINT32_C(1207236213), UINT32_C(1754387913), UINT32_C(3060418664)),
|
|
simde_x_mm256_set_epu32(UINT32_C(3937957510), UINT32_C(3382324216), UINT32_C(1539281783), UINT32_C(4275285368),
|
|
UINT32_C(1703578262), UINT32_C(2645712321), UINT32_C(2567475981), UINT32_C(3368049591)) },
|
|
{ simde_x_mm256_set_epu32(UINT32_C(1036418017), UINT32_C(1863476858), UINT32_C(1083883567), UINT32_C(3943520867),
|
|
UINT32_C( 70129580), UINT32_C(1560905984), UINT32_C(2897296070), UINT32_C(2575520666)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2683682856), UINT32_C( 255193154), UINT32_C( 693351345), UINT32_C(1449340919),
|
|
UINT32_C(2448587623), UINT32_C(2723008994), UINT32_C(2741828276), UINT32_C(3254255853)),
|
|
simde_x_mm256_set_epu32(UINT32_C(2683682856), UINT32_C(1863476858), UINT32_C(1083883567), UINT32_C(3943520867),
|
|
UINT32_C(2448587623), UINT32_C(2723008994), UINT32_C(2897296070), UINT32_C(3254255853)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_max_epu32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_u32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm_blend_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m128i a;
|
|
simde__m128i b;
|
|
simde__m128i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm_set_epi32(INT32_C( -776446699), INT32_C( 1736036449), INT32_C( 1358627972), INT32_C(-1414521748)),
|
|
simde_mm_set_epi32(INT32_C( 703500470), INT32_C(-1252293011), INT32_C(-1142834240), INT32_C( 1567373213)),
|
|
simde_mm_set_epi32(INT32_C( 703500470), INT32_C(-1252293011), INT32_C( 1358627972), INT32_C( 1567373213)) },
|
|
{ simde_mm_set_epi32(INT32_C( 928555701), INT32_C( -221570804), INT32_C( 1766167688), INT32_C( 1538455167)),
|
|
simde_mm_set_epi32(INT32_C(-2064241406), INT32_C(-1114629780), INT32_C( 844778923), INT32_C( 825239814)),
|
|
simde_mm_set_epi32(INT32_C(-2064241406), INT32_C(-1114629780), INT32_C( 1766167688), INT32_C( 825239814)) },
|
|
{ simde_mm_set_epi32(INT32_C( -254776787), INT32_C(-1383921861), INT32_C(-1381573747), INT32_C( 385374117)),
|
|
simde_mm_set_epi32(INT32_C( 783537896), INT32_C( -226088253), INT32_C( 1138968651), INT32_C( 521443914)),
|
|
simde_mm_set_epi32(INT32_C( 783537896), INT32_C( -226088253), INT32_C(-1381573747), INT32_C( 521443914)) },
|
|
{ simde_mm_set_epi32(INT32_C( 484740492), INT32_C(-1346417719), INT32_C( 1029792501), INT32_C( 2033188015)),
|
|
simde_mm_set_epi32(INT32_C( 465252472), INT32_C( -775119562), INT32_C( 1616675771), INT32_C(-1846026054)),
|
|
simde_mm_set_epi32(INT32_C( 465252472), INT32_C( -775119562), INT32_C( 1029792501), INT32_C(-1846026054)) },
|
|
{ simde_mm_set_epi32(INT32_C( 2097910720), INT32_C( 985021972), INT32_C(-1164844515), INT32_C(-1048926956)),
|
|
simde_mm_set_epi32(INT32_C( 1235766570), INT32_C( 1912005813), INT32_C( -678890313), INT32_C( -799232173)),
|
|
simde_mm_set_epi32(INT32_C( 1235766570), INT32_C( 1912005813), INT32_C(-1164844515), INT32_C( -799232173)) },
|
|
{ simde_mm_set_epi32(INT32_C( 107952418), INT32_C(-1186034132), INT32_C(-1490121281), INT32_C(-1988190971)),
|
|
simde_mm_set_epi32(INT32_C( 438665972), INT32_C(-1023182690), INT32_C(-1692406594), INT32_C( 2076129119)),
|
|
simde_mm_set_epi32(INT32_C( 438665972), INT32_C(-1023182690), INT32_C(-1490121281), INT32_C( 2076129119)) },
|
|
{ simde_mm_set_epi32(INT32_C( -296997195), INT32_C( 1989906045), INT32_C( 861414748), INT32_C( 802028810)),
|
|
simde_mm_set_epi32(INT32_C( 2010137226), INT32_C(-1001536035), INT32_C( 526065654), INT32_C( 2146580357)),
|
|
simde_mm_set_epi32(INT32_C( 2010137226), INT32_C(-1001536035), INT32_C( 861414748), INT32_C( 2146580357)) },
|
|
{ simde_mm_set_epi32(INT32_C( 1671679906), INT32_C( 72341521), INT32_C( 697290912), INT32_C( 1581591761)),
|
|
simde_mm_set_epi32(INT32_C( -765500720), INT32_C( 807300453), INT32_C(-1774452228), INT32_C( -386626305)),
|
|
simde_mm_set_epi32(INT32_C( -765500720), INT32_C( 807300453), INT32_C( 697290912), INT32_C( -386626305)) },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m128i r = simde_mm_blend_epi32(test_vec[i].a, test_vec[i].b, 13);
|
|
simde_assert_m128i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_min_epi8(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi8(INT8_C(-113), INT8_C( 124), INT8_C( 15), INT8_C(-126),
|
|
INT8_C( -14), INT8_C( -39), INT8_C( -2), INT8_C( -33),
|
|
INT8_C( 77), INT8_C(-107), INT8_C( -95), INT8_C( -10),
|
|
INT8_C( 24), INT8_C( -89), INT8_C( 80), INT8_C( 69),
|
|
INT8_C( -99), INT8_C( 54), INT8_C( 5), INT8_C( 103),
|
|
INT8_C( 71), INT8_C( 11), INT8_C( -41), INT8_C( 122),
|
|
INT8_C( 57), INT8_C( -91), INT8_C(-106), INT8_C( 27),
|
|
INT8_C( 57), INT8_C( -8), INT8_C( -10), INT8_C( 38)),
|
|
simde_mm256_set_epi8(INT8_C( 58), INT8_C(-107), INT8_C( 43), INT8_C(-106),
|
|
INT8_C(-127), INT8_C( 87), INT8_C( 107), INT8_C( 115),
|
|
INT8_C( 91), INT8_C( 104), INT8_C( -95), INT8_C( -69),
|
|
INT8_C( -37), INT8_C( 126), INT8_C( 40), INT8_C( 53),
|
|
INT8_C(-103), INT8_C( 84), INT8_C( 99), INT8_C( 38),
|
|
INT8_C( 126), INT8_C( -61), INT8_C( 117), INT8_C( 48),
|
|
INT8_C( 65), INT8_C( 73), INT8_C( 55), INT8_C( 73),
|
|
INT8_C( -94), INT8_C( -78), INT8_C( -6), INT8_C( 49)),
|
|
simde_mm256_set_epi8(INT8_C(-113), INT8_C(-107), INT8_C( 15), INT8_C(-126),
|
|
INT8_C(-127), INT8_C( -39), INT8_C( -2), INT8_C( -33),
|
|
INT8_C( 77), INT8_C(-107), INT8_C( -95), INT8_C( -69),
|
|
INT8_C( -37), INT8_C( -89), INT8_C( 40), INT8_C( 53),
|
|
INT8_C(-103), INT8_C( 54), INT8_C( 5), INT8_C( 38),
|
|
INT8_C( 71), INT8_C( -61), INT8_C( -41), INT8_C( 48),
|
|
INT8_C( 57), INT8_C( -91), INT8_C(-106), INT8_C( 27),
|
|
INT8_C( -94), INT8_C( -78), INT8_C( -10), INT8_C( 38)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 53), INT8_C( 21), INT8_C( 98), INT8_C( 120),
|
|
INT8_C(-113), INT8_C( 39), INT8_C( -37), INT8_C( 99),
|
|
INT8_C(-124), INT8_C( -15), INT8_C( -78), INT8_C( 107),
|
|
INT8_C( 24), INT8_C( 124), INT8_C( -54), INT8_C( 81),
|
|
INT8_C( 115), INT8_C( -24), INT8_C( 66), INT8_C( 27),
|
|
INT8_C( 15), INT8_C( 61), INT8_C( 57), INT8_C(-118),
|
|
INT8_C(-113), INT8_C( -12), INT8_C( -8), INT8_C( -69),
|
|
INT8_C( -18), INT8_C( 21), INT8_C( 83), INT8_C( 113)),
|
|
simde_mm256_set_epi8(INT8_C(-103), INT8_C(-115), INT8_C( -82), INT8_C( 99),
|
|
INT8_C( 114), INT8_C( 96), INT8_C( 122), INT8_C(-112),
|
|
INT8_C( 16), INT8_C( 31), INT8_C( 14), INT8_C( -56),
|
|
INT8_C( -48), INT8_C( 2), INT8_C( -47), INT8_C( 23),
|
|
INT8_C( 105), INT8_C( -82), INT8_C( 84), INT8_C( 120),
|
|
INT8_C( 10), INT8_C( 6), INT8_C( -73), INT8_C( -69),
|
|
INT8_C( -15), INT8_C( -30), INT8_C( -84), INT8_C( 4),
|
|
INT8_C( 118), INT8_C( 78), INT8_C(-102), INT8_C(-121)),
|
|
simde_mm256_set_epi8(INT8_C(-103), INT8_C(-115), INT8_C( -82), INT8_C( 99),
|
|
INT8_C(-113), INT8_C( 39), INT8_C( -37), INT8_C(-112),
|
|
INT8_C(-124), INT8_C( -15), INT8_C( -78), INT8_C( -56),
|
|
INT8_C( -48), INT8_C( 2), INT8_C( -54), INT8_C( 23),
|
|
INT8_C( 105), INT8_C( -82), INT8_C( 66), INT8_C( 27),
|
|
INT8_C( 10), INT8_C( 6), INT8_C( -73), INT8_C(-118),
|
|
INT8_C(-113), INT8_C( -30), INT8_C( -84), INT8_C( -69),
|
|
INT8_C( -18), INT8_C( 21), INT8_C(-102), INT8_C(-121)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 99), INT8_C( 36), INT8_C( -33), INT8_C(-101),
|
|
INT8_C(-112), INT8_C(-121), INT8_C( 47), INT8_C( -29),
|
|
INT8_C( 104), INT8_C( 110), INT8_C( -84), INT8_C( 72),
|
|
INT8_C( -54), INT8_C( -40), INT8_C( 19), INT8_C(-103),
|
|
INT8_C( -69), INT8_C( -50), INT8_C( 26), INT8_C( -97),
|
|
INT8_C( -51), INT8_C( -78), INT8_C( 41), INT8_C( -85),
|
|
INT8_C( 36), INT8_C( 76), INT8_C( 111), INT8_C( 49),
|
|
INT8_C( 97), INT8_C( -3), INT8_C( 36), INT8_C( 67)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -8), INT8_C( 56), INT8_C( 7),
|
|
INT8_C( 58), INT8_C(-107), INT8_C( 110), INT8_C( -95),
|
|
INT8_C( 31), INT8_C( -56), INT8_C( 42), INT8_C( 8),
|
|
INT8_C( -46), INT8_C( -16), INT8_C( 21), INT8_C( 126),
|
|
INT8_C( -12), INT8_C( -94), INT8_C( 109), INT8_C( 67),
|
|
INT8_C( 47), INT8_C( 103), INT8_C( 21), INT8_C( 104),
|
|
INT8_C( 99), INT8_C( 106), INT8_C( -91), INT8_C( 87),
|
|
INT8_C( -83), INT8_C( 2), INT8_C( 105), INT8_C(-105)),
|
|
simde_mm256_set_epi8(INT8_C( 66), INT8_C( -8), INT8_C( -33), INT8_C(-101),
|
|
INT8_C(-112), INT8_C(-121), INT8_C( 47), INT8_C( -95),
|
|
INT8_C( 31), INT8_C( -56), INT8_C( -84), INT8_C( 8),
|
|
INT8_C( -54), INT8_C( -40), INT8_C( 19), INT8_C(-103),
|
|
INT8_C( -69), INT8_C( -94), INT8_C( 26), INT8_C( -97),
|
|
INT8_C( -51), INT8_C( -78), INT8_C( 21), INT8_C( -85),
|
|
INT8_C( 36), INT8_C( 76), INT8_C( -91), INT8_C( 49),
|
|
INT8_C( -83), INT8_C( -3), INT8_C( 36), INT8_C(-105)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -79), INT8_C( -25), INT8_C( 15), INT8_C( 2),
|
|
INT8_C( -84), INT8_C( 9), INT8_C( 54), INT8_C( 99),
|
|
INT8_C( -69), INT8_C( 117), INT8_C( -20), INT8_C( 47),
|
|
INT8_C( 21), INT8_C( 44), INT8_C( 113), INT8_C( 59),
|
|
INT8_C( 9), INT8_C( 65), INT8_C( -7), INT8_C( -76),
|
|
INT8_C(-124), INT8_C( -64), INT8_C( 22), INT8_C( -79),
|
|
INT8_C( -58), INT8_C( 29), INT8_C( 40), INT8_C( 64),
|
|
INT8_C( -9), INT8_C(-123), INT8_C( -13), INT8_C( -32)),
|
|
simde_mm256_set_epi8(INT8_C(-114), INT8_C( -7), INT8_C( 9), INT8_C( -63),
|
|
INT8_C( 0), INT8_C( -82), INT8_C( -19), INT8_C( 75),
|
|
INT8_C( 69), INT8_C( 48), INT8_C( 42), INT8_C( -52),
|
|
INT8_C( 119), INT8_C( -20), INT8_C( 26), INT8_C( -57),
|
|
INT8_C( 88), INT8_C( 87), INT8_C( 99), INT8_C(-127),
|
|
INT8_C( 48), INT8_C( 19), INT8_C( 54), INT8_C( -35),
|
|
INT8_C( 5), INT8_C( 23), INT8_C( -21), INT8_C( 88),
|
|
INT8_C( 87), INT8_C(-109), INT8_C( -46), INT8_C(-127)),
|
|
simde_mm256_set_epi8(INT8_C(-114), INT8_C( -25), INT8_C( 9), INT8_C( -63),
|
|
INT8_C( -84), INT8_C( -82), INT8_C( -19), INT8_C( 75),
|
|
INT8_C( -69), INT8_C( 48), INT8_C( -20), INT8_C( -52),
|
|
INT8_C( 21), INT8_C( -20), INT8_C( 26), INT8_C( -57),
|
|
INT8_C( 9), INT8_C( 65), INT8_C( -7), INT8_C(-127),
|
|
INT8_C(-124), INT8_C( -64), INT8_C( 22), INT8_C( -79),
|
|
INT8_C( -58), INT8_C( 23), INT8_C( -21), INT8_C( 64),
|
|
INT8_C( -9), INT8_C(-123), INT8_C( -46), INT8_C(-127)) },
|
|
{ simde_mm256_set_epi8(INT8_C( 40), INT8_C(-101), INT8_C(-116), INT8_C( -63),
|
|
INT8_C( -76), INT8_C( 83), INT8_C( -41), INT8_C( -2),
|
|
INT8_C( 74), INT8_C( 48), INT8_C(-104), INT8_C( -61),
|
|
INT8_C( 95), INT8_C( 50), INT8_C( 86), INT8_C(-110),
|
|
INT8_C( -24), INT8_C( 99), INT8_C( -15), INT8_C( 126),
|
|
INT8_C( -73), INT8_C( -17), INT8_C(-122), INT8_C( -7),
|
|
INT8_C( 95), INT8_C( -91), INT8_C( 66), INT8_C( -2),
|
|
INT8_C( 88), INT8_C( -54), INT8_C( 117), INT8_C( -86)),
|
|
simde_mm256_set_epi8(INT8_C( -45), INT8_C( -41), INT8_C( 87), INT8_C( -75),
|
|
INT8_C( 104), INT8_C( -1), INT8_C( 11), INT8_C( 125),
|
|
INT8_C(-123), INT8_C( 86), INT8_C( 26), INT8_C( 46),
|
|
INT8_C( 6), INT8_C( 54), INT8_C( -77), INT8_C( 63),
|
|
INT8_C( 79), INT8_C(-127), INT8_C(-118), INT8_C( 107),
|
|
INT8_C(-122), INT8_C( -36), INT8_C( -2), INT8_C( -64),
|
|
INT8_C( 65), INT8_C( -89), INT8_C( 86), INT8_C( 99),
|
|
INT8_C( -49), INT8_C( 59), INT8_C( -15), INT8_C( 103)),
|
|
simde_mm256_set_epi8(INT8_C( -45), INT8_C(-101), INT8_C(-116), INT8_C( -75),
|
|
INT8_C( -76), INT8_C( -1), INT8_C( -41), INT8_C( -2),
|
|
INT8_C(-123), INT8_C( 48), INT8_C(-104), INT8_C( -61),
|
|
INT8_C( 6), INT8_C( 50), INT8_C( -77), INT8_C(-110),
|
|
INT8_C( -24), INT8_C(-127), INT8_C(-118), INT8_C( 107),
|
|
INT8_C(-122), INT8_C( -36), INT8_C(-122), INT8_C( -64),
|
|
INT8_C( 65), INT8_C( -91), INT8_C( 66), INT8_C( -2),
|
|
INT8_C( -49), INT8_C( -54), INT8_C( -15), INT8_C( -86)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -6), INT8_C( 22), INT8_C( -98), INT8_C(-111),
|
|
INT8_C( -27), INT8_C( -45), INT8_C( -60), INT8_C( -64),
|
|
INT8_C( -14), INT8_C( -15), INT8_C( -20), INT8_C( 52),
|
|
INT8_C(-110), INT8_C( 52), INT8_C( 120), INT8_C( 119),
|
|
INT8_C( -35), INT8_C( 3), INT8_C( 42), INT8_C( 109),
|
|
INT8_C( 16), INT8_C( -18), INT8_C( -49), INT8_C( 102),
|
|
INT8_C( 87), INT8_C( -69), INT8_C( 10), INT8_C( 0),
|
|
INT8_C( 1), INT8_C( 21), INT8_C( 6), INT8_C( -56)),
|
|
simde_mm256_set_epi8(INT8_C( -60), INT8_C( 58), INT8_C( 68), INT8_C(-110),
|
|
INT8_C( 25), INT8_C( 53), INT8_C(-112), INT8_C( 1),
|
|
INT8_C( 104), INT8_C( 22), INT8_C( -20), INT8_C(-119),
|
|
INT8_C( -66), INT8_C( -43), INT8_C( 109), INT8_C( -61),
|
|
INT8_C( -86), INT8_C( -59), INT8_C( -31), INT8_C( -86),
|
|
INT8_C( -11), INT8_C( 72), INT8_C( 122), INT8_C(-127),
|
|
INT8_C( 21), INT8_C( 32), INT8_C( 109), INT8_C( 110),
|
|
INT8_C( 112), INT8_C( -23), INT8_C( 44), INT8_C( 69)),
|
|
simde_mm256_set_epi8(INT8_C( -60), INT8_C( 22), INT8_C( -98), INT8_C(-111),
|
|
INT8_C( -27), INT8_C( -45), INT8_C(-112), INT8_C( -64),
|
|
INT8_C( -14), INT8_C( -15), INT8_C( -20), INT8_C(-119),
|
|
INT8_C(-110), INT8_C( -43), INT8_C( 109), INT8_C( -61),
|
|
INT8_C( -86), INT8_C( -59), INT8_C( -31), INT8_C( -86),
|
|
INT8_C( -11), INT8_C( -18), INT8_C( -49), INT8_C(-127),
|
|
INT8_C( 21), INT8_C( -69), INT8_C( 10), INT8_C( 0),
|
|
INT8_C( 1), INT8_C( -23), INT8_C( 6), INT8_C( -56)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -81), INT8_C( 40), INT8_C( 34), INT8_C(-101),
|
|
INT8_C( 85), INT8_C( 102), INT8_C( -21), INT8_C( 6),
|
|
INT8_C( 23), INT8_C( -23), INT8_C( -36), INT8_C( 44),
|
|
INT8_C( -12), INT8_C( 110), INT8_C( -68), INT8_C( 47),
|
|
INT8_C( 45), INT8_C( -59), INT8_C(-112), INT8_C( 86),
|
|
INT8_C( -95), INT8_C( -9), INT8_C(-101), INT8_C( 83),
|
|
INT8_C( 37), INT8_C( 85), INT8_C( 31), INT8_C( -4),
|
|
INT8_C( 98), INT8_C( -87), INT8_C( -65), INT8_C( -71)),
|
|
simde_mm256_set_epi8(INT8_C( -58), INT8_C(-110), INT8_C( 4), INT8_C( 10),
|
|
INT8_C( -39), INT8_C( -8), INT8_C( 126), INT8_C( 76),
|
|
INT8_C( 85), INT8_C( -11), INT8_C(-106), INT8_C( 42),
|
|
INT8_C( 125), INT8_C( 46), INT8_C( 63), INT8_C( 35),
|
|
INT8_C( -24), INT8_C( -99), INT8_C( 71), INT8_C(-108),
|
|
INT8_C( 52), INT8_C(-105), INT8_C( -88), INT8_C( -28),
|
|
INT8_C( 12), INT8_C( -41), INT8_C( 81), INT8_C( 38),
|
|
INT8_C( -13), INT8_C( 29), INT8_C( -44), INT8_C( 59)),
|
|
simde_mm256_set_epi8(INT8_C( -81), INT8_C(-110), INT8_C( 4), INT8_C(-101),
|
|
INT8_C( -39), INT8_C( -8), INT8_C( -21), INT8_C( 6),
|
|
INT8_C( 23), INT8_C( -23), INT8_C(-106), INT8_C( 42),
|
|
INT8_C( -12), INT8_C( 46), INT8_C( -68), INT8_C( 35),
|
|
INT8_C( -24), INT8_C( -99), INT8_C(-112), INT8_C(-108),
|
|
INT8_C( -95), INT8_C(-105), INT8_C(-101), INT8_C( -28),
|
|
INT8_C( 12), INT8_C( -41), INT8_C( 31), INT8_C( -4),
|
|
INT8_C( -13), INT8_C( -87), INT8_C( -65), INT8_C( -71)) },
|
|
{ simde_mm256_set_epi8(INT8_C( -36), INT8_C( -94), INT8_C( -61), INT8_C( 117),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( 118), INT8_C( 99),
|
|
INT8_C( -54), INT8_C(-123), INT8_C( 18), INT8_C( 111),
|
|
INT8_C( 8), INT8_C( -59), INT8_C( 107), INT8_C( 77),
|
|
INT8_C( 7), INT8_C( 91), INT8_C( 25), INT8_C( 70),
|
|
INT8_C( 80), INT8_C( 81), INT8_C( 11), INT8_C( 29),
|
|
INT8_C( 109), INT8_C( 125), INT8_C( -51), INT8_C( 58),
|
|
INT8_C( 66), INT8_C( 126), INT8_C(-122), INT8_C( 96)),
|
|
simde_mm256_set_epi8(INT8_C( -91), INT8_C( -28), INT8_C( 59), INT8_C( 45),
|
|
INT8_C( 99), INT8_C( 67), INT8_C( -54), INT8_C( 122),
|
|
INT8_C( -4), INT8_C( -6), INT8_C( -77), INT8_C( 96),
|
|
INT8_C( 16), INT8_C( 37), INT8_C(-127), INT8_C( 76),
|
|
INT8_C( 56), INT8_C( -93), INT8_C( 7), INT8_C( -50),
|
|
INT8_C( 56), INT8_C(-112), INT8_C( 6), INT8_C( -49),
|
|
INT8_C( 107), INT8_C( -15), INT8_C( -42), INT8_C(-121),
|
|
INT8_C( -81), INT8_C( 97), INT8_C( -56), INT8_C( 97)),
|
|
simde_mm256_set_epi8(INT8_C( -91), INT8_C( -94), INT8_C( -61), INT8_C( 45),
|
|
INT8_C( 0), INT8_C( -1), INT8_C( -54), INT8_C( 99),
|
|
INT8_C( -54), INT8_C(-123), INT8_C( -77), INT8_C( 96),
|
|
INT8_C( 8), INT8_C( -59), INT8_C(-127), INT8_C( 76),
|
|
INT8_C( 7), INT8_C( -93), INT8_C( 7), INT8_C( -50),
|
|
INT8_C( 56), INT8_C(-112), INT8_C( 6), INT8_C( -49),
|
|
INT8_C( 107), INT8_C( -15), INT8_C( -51), INT8_C(-121),
|
|
INT8_C( -81), INT8_C( 97), INT8_C(-122), INT8_C( 96)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_min_epi8(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i8(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_min_epi16(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi16(INT16_C(-28804), INT16_C( 3970), INT16_C( -3367), INT16_C( -289),
|
|
INT16_C( 19861), INT16_C(-24074), INT16_C( 6311), INT16_C( 20549),
|
|
INT16_C(-25290), INT16_C( 1383), INT16_C( 18187), INT16_C(-10374),
|
|
INT16_C( 14757), INT16_C(-27109), INT16_C( 14840), INT16_C( -2522)),
|
|
simde_mm256_set_epi16(INT16_C( 14997), INT16_C( 11158), INT16_C(-32425), INT16_C( 27507),
|
|
INT16_C( 23400), INT16_C(-24133), INT16_C( -9346), INT16_C( 10293),
|
|
INT16_C(-26284), INT16_C( 25382), INT16_C( 32451), INT16_C( 30000),
|
|
INT16_C( 16713), INT16_C( 14153), INT16_C(-23886), INT16_C( -1487)),
|
|
simde_mm256_set_epi16(INT16_C(-28804), INT16_C( 3970), INT16_C(-32425), INT16_C( -289),
|
|
INT16_C( 19861), INT16_C(-24133), INT16_C( -9346), INT16_C( 10293),
|
|
INT16_C(-26284), INT16_C( 1383), INT16_C( 18187), INT16_C(-10374),
|
|
INT16_C( 14757), INT16_C(-27109), INT16_C(-23886), INT16_C( -2522)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 13589), INT16_C( 25208), INT16_C(-28889), INT16_C( -9373),
|
|
INT16_C(-31503), INT16_C(-19861), INT16_C( 6268), INT16_C(-13743),
|
|
INT16_C( 29672), INT16_C( 16923), INT16_C( 3901), INT16_C( 14730),
|
|
INT16_C(-28684), INT16_C( -1861), INT16_C( -4587), INT16_C( 21361)),
|
|
simde_mm256_set_epi16(INT16_C(-26227), INT16_C(-20893), INT16_C( 29280), INT16_C( 31376),
|
|
INT16_C( 4127), INT16_C( 3784), INT16_C(-12286), INT16_C(-12009),
|
|
INT16_C( 27054), INT16_C( 21624), INT16_C( 2566), INT16_C(-18501),
|
|
INT16_C( -3614), INT16_C(-21500), INT16_C( 30286), INT16_C(-25977)),
|
|
simde_mm256_set_epi16(INT16_C(-26227), INT16_C(-20893), INT16_C(-28889), INT16_C( -9373),
|
|
INT16_C(-31503), INT16_C(-19861), INT16_C(-12286), INT16_C(-13743),
|
|
INT16_C( 27054), INT16_C( 16923), INT16_C( 2566), INT16_C(-18501),
|
|
INT16_C(-28684), INT16_C(-21500), INT16_C( -4587), INT16_C(-25977)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 25380), INT16_C( -8293), INT16_C(-28537), INT16_C( 12259),
|
|
INT16_C( 26734), INT16_C(-21432), INT16_C(-13608), INT16_C( 5017),
|
|
INT16_C(-17458), INT16_C( 6815), INT16_C(-12878), INT16_C( 10667),
|
|
INT16_C( 9292), INT16_C( 28465), INT16_C( 25085), INT16_C( 9283)),
|
|
simde_mm256_set_epi16(INT16_C( 17144), INT16_C( 14343), INT16_C( 14997), INT16_C( 28321),
|
|
INT16_C( 8136), INT16_C( 10760), INT16_C(-11536), INT16_C( 5502),
|
|
INT16_C( -2910), INT16_C( 27971), INT16_C( 12135), INT16_C( 5480),
|
|
INT16_C( 25450), INT16_C(-23209), INT16_C(-21246), INT16_C( 27031)),
|
|
simde_mm256_set_epi16(INT16_C( 17144), INT16_C( -8293), INT16_C(-28537), INT16_C( 12259),
|
|
INT16_C( 8136), INT16_C(-21432), INT16_C(-13608), INT16_C( 5017),
|
|
INT16_C(-17458), INT16_C( 6815), INT16_C(-12878), INT16_C( 5480),
|
|
INT16_C( 9292), INT16_C(-23209), INT16_C(-21246), INT16_C( 9283)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-19993), INT16_C( 3842), INT16_C(-21495), INT16_C( 13923),
|
|
INT16_C(-17547), INT16_C( -5073), INT16_C( 5420), INT16_C( 28987),
|
|
INT16_C( 2369), INT16_C( -1612), INT16_C(-31552), INT16_C( 5809),
|
|
INT16_C(-14819), INT16_C( 10304), INT16_C( -2171), INT16_C( -3104)),
|
|
simde_mm256_set_epi16(INT16_C(-28935), INT16_C( 2497), INT16_C( 174), INT16_C( -4789),
|
|
INT16_C( 17712), INT16_C( 10956), INT16_C( 30700), INT16_C( 6855),
|
|
INT16_C( 22615), INT16_C( 25473), INT16_C( 12307), INT16_C( 14045),
|
|
INT16_C( 1303), INT16_C( -5288), INT16_C( 22419), INT16_C(-11647)),
|
|
simde_mm256_set_epi16(INT16_C(-28935), INT16_C( 2497), INT16_C(-21495), INT16_C( -4789),
|
|
INT16_C(-17547), INT16_C( -5073), INT16_C( 5420), INT16_C( 6855),
|
|
INT16_C( 2369), INT16_C( -1612), INT16_C(-31552), INT16_C( 5809),
|
|
INT16_C(-14819), INT16_C( -5288), INT16_C( -2171), INT16_C(-11647)) },
|
|
{ simde_mm256_set_epi16(INT16_C( 10395), INT16_C(-29503), INT16_C(-19373), INT16_C(-10242),
|
|
INT16_C( 18992), INT16_C(-26429), INT16_C( 24370), INT16_C( 22162),
|
|
INT16_C( -6045), INT16_C( -3714), INT16_C(-18449), INT16_C(-30983),
|
|
INT16_C( 24485), INT16_C( 17150), INT16_C( 22730), INT16_C( 30122)),
|
|
simde_mm256_set_epi16(INT16_C(-11305), INT16_C( 22453), INT16_C( 26879), INT16_C( 2941),
|
|
INT16_C(-31402), INT16_C( 6702), INT16_C( 1590), INT16_C(-19649),
|
|
INT16_C( 20353), INT16_C(-30101), INT16_C(-31012), INT16_C( -320),
|
|
INT16_C( 16807), INT16_C( 22115), INT16_C(-12485), INT16_C( -3737)),
|
|
simde_mm256_set_epi16(INT16_C(-11305), INT16_C(-29503), INT16_C(-19373), INT16_C(-10242),
|
|
INT16_C(-31402), INT16_C(-26429), INT16_C( 1590), INT16_C(-19649),
|
|
INT16_C( -6045), INT16_C(-30101), INT16_C(-31012), INT16_C(-30983),
|
|
INT16_C( 16807), INT16_C( 17150), INT16_C(-12485), INT16_C( -3737)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -1514), INT16_C(-24943), INT16_C( -6701), INT16_C(-15168),
|
|
INT16_C( -3343), INT16_C( -5068), INT16_C(-28108), INT16_C( 30839),
|
|
INT16_C( -8957), INT16_C( 10861), INT16_C( 4334), INT16_C(-12442),
|
|
INT16_C( 22459), INT16_C( 2560), INT16_C( 277), INT16_C( 1736)),
|
|
simde_mm256_set_epi16(INT16_C(-15302), INT16_C( 17554), INT16_C( 6453), INT16_C(-28671),
|
|
INT16_C( 26646), INT16_C( -4983), INT16_C(-16683), INT16_C( 28099),
|
|
INT16_C(-21819), INT16_C( -7766), INT16_C( -2744), INT16_C( 31361),
|
|
INT16_C( 5408), INT16_C( 28014), INT16_C( 28905), INT16_C( 11333)),
|
|
simde_mm256_set_epi16(INT16_C(-15302), INT16_C(-24943), INT16_C( -6701), INT16_C(-28671),
|
|
INT16_C( -3343), INT16_C( -5068), INT16_C(-28108), INT16_C( 28099),
|
|
INT16_C(-21819), INT16_C( -7766), INT16_C( -2744), INT16_C(-12442),
|
|
INT16_C( 5408), INT16_C( 2560), INT16_C( 277), INT16_C( 1736)) },
|
|
{ simde_mm256_set_epi16(INT16_C(-20696), INT16_C( 8859), INT16_C( 21862), INT16_C( -5370),
|
|
INT16_C( 6121), INT16_C( -9172), INT16_C( -2962), INT16_C(-17361),
|
|
INT16_C( 11717), INT16_C(-28586), INT16_C(-24073), INT16_C(-25773),
|
|
INT16_C( 9557), INT16_C( 8188), INT16_C( 25257), INT16_C(-16455)),
|
|
simde_mm256_set_epi16(INT16_C(-14702), INT16_C( 1034), INT16_C( -9736), INT16_C( 32332),
|
|
INT16_C( 22005), INT16_C(-27094), INT16_C( 32046), INT16_C( 16163),
|
|
INT16_C( -5987), INT16_C( 18324), INT16_C( 13463), INT16_C(-22300),
|
|
INT16_C( 3287), INT16_C( 20774), INT16_C( -3299), INT16_C(-11205)),
|
|
simde_mm256_set_epi16(INT16_C(-20696), INT16_C( 1034), INT16_C( -9736), INT16_C( -5370),
|
|
INT16_C( 6121), INT16_C(-27094), INT16_C( -2962), INT16_C(-17361),
|
|
INT16_C( -5987), INT16_C(-28586), INT16_C(-24073), INT16_C(-25773),
|
|
INT16_C( 3287), INT16_C( 8188), INT16_C( -3299), INT16_C(-16455)) },
|
|
{ simde_mm256_set_epi16(INT16_C( -9054), INT16_C(-15499), INT16_C( 255), INT16_C( 30307),
|
|
INT16_C(-13691), INT16_C( 4719), INT16_C( 2245), INT16_C( 27469),
|
|
INT16_C( 1883), INT16_C( 6470), INT16_C( 20561), INT16_C( 2845),
|
|
INT16_C( 28029), INT16_C(-12998), INT16_C( 17022), INT16_C(-31136)),
|
|
simde_mm256_set_epi16(INT16_C(-23068), INT16_C( 15149), INT16_C( 25411), INT16_C(-13702),
|
|
INT16_C( -774), INT16_C(-19616), INT16_C( 4133), INT16_C(-32436),
|
|
INT16_C( 14499), INT16_C( 1998), INT16_C( 14480), INT16_C( 1743),
|
|
INT16_C( 27633), INT16_C(-10617), INT16_C(-20639), INT16_C(-14239)),
|
|
simde_mm256_set_epi16(INT16_C(-23068), INT16_C(-15499), INT16_C( 255), INT16_C(-13702),
|
|
INT16_C(-13691), INT16_C(-19616), INT16_C( 2245), INT16_C(-32436),
|
|
INT16_C( 1883), INT16_C( 1998), INT16_C( 14480), INT16_C( 1743),
|
|
INT16_C( 27633), INT16_C(-12998), INT16_C(-20639), INT16_C(-31136)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_min_epi16(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i16(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
static int
|
|
test_simde_mm256_min_epi32(SIMDE_MUNIT_TEST_ARGS) {
|
|
const struct {
|
|
simde__m256i a;
|
|
simde__m256i b;
|
|
simde__m256i r;
|
|
} test_vec[8] = {
|
|
{ simde_mm256_set_epi32(INT32_C(-1887694974), INT32_C( -220594465), INT32_C( 1301651958), INT32_C( 413618245),
|
|
INT32_C(-1657404057), INT32_C( 1191958394), INT32_C( 967153179), INT32_C( 972617254)),
|
|
simde_mm256_set_epi32(INT32_C( 982854550), INT32_C(-2124977293), INT32_C( 1533583803), INT32_C( -612489163),
|
|
INT32_C(-1722522842), INT32_C( 2126738736), INT32_C( 1095317321), INT32_C(-1565328847)),
|
|
simde_mm256_set_epi32(INT32_C(-1887694974), INT32_C(-2124977293), INT32_C( 1301651958), INT32_C( -612489163),
|
|
INT32_C(-1722522842), INT32_C( 1191958394), INT32_C( 967153179), INT32_C(-1565328847)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 890593912), INT32_C(-1893213341), INT32_C(-2064534933), INT32_C( 410831441),
|
|
INT32_C( 1944601115), INT32_C( 255670666), INT32_C(-1879770949), INT32_C( -300592271)),
|
|
simde_mm256_set_epi32(INT32_C(-1718768029), INT32_C( 1918925456), INT32_C( 270470856), INT32_C( -805121769),
|
|
INT32_C( 1773032568), INT32_C( 168212411), INT32_C( -236803068), INT32_C( 1984862855)),
|
|
simde_mm256_set_epi32(INT32_C(-1718768029), INT32_C(-1893213341), INT32_C(-2064534933), INT32_C( -805121769),
|
|
INT32_C( 1773032568), INT32_C( 168212411), INT32_C(-1879770949), INT32_C( -300592271)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 1663360923), INT32_C(-1870188573), INT32_C( 1752083528), INT32_C( -891808871),
|
|
INT32_C(-1144120673), INT32_C( -843961941), INT32_C( 608988977), INT32_C( 1643979843)),
|
|
simde_mm256_set_epi32(INT32_C( 1123563527), INT32_C( 982871713), INT32_C( 533211656), INT32_C( -756017794),
|
|
INT32_C( -190681789), INT32_C( 795284840), INT32_C( 1667933527), INT32_C(-1392350825)),
|
|
simde_mm256_set_epi32(INT32_C( 1123563527), INT32_C(-1870188573), INT32_C( 533211656), INT32_C( -891808871),
|
|
INT32_C(-1144120673), INT32_C( -843961941), INT32_C( 608988977), INT32_C(-1392350825)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1310257406), INT32_C(-1408682397), INT32_C(-1149899729), INT32_C( 355234107),
|
|
INT32_C( 155318708), INT32_C(-2067786063), INT32_C( -971167680), INT32_C( -142216224)),
|
|
simde_mm256_set_epi32(INT32_C(-1896281663), INT32_C( 11464011), INT32_C( 1160784588), INT32_C( 2011962055),
|
|
INT32_C( 1482122113), INT32_C( 806565597), INT32_C( 85453656), INT32_C( 1469305473)),
|
|
simde_mm256_set_epi32(INT32_C(-1896281663), INT32_C(-1408682397), INT32_C(-1149899729), INT32_C( 355234107),
|
|
INT32_C( 155318708), INT32_C(-2067786063), INT32_C( -971167680), INT32_C( -142216224)) },
|
|
{ simde_mm256_set_epi32(INT32_C( 681282753), INT32_C(-1269573634), INT32_C( 1244698819), INT32_C( 1597134482),
|
|
INT32_C( -396103298), INT32_C(-1209039111), INT32_C( 1604666110), INT32_C( 1489663402)),
|
|
simde_mm256_set_epi32(INT32_C( -740862027), INT32_C( 1761545085), INT32_C(-2057954770), INT32_C( 104248127),
|
|
INT32_C( 1333889643), INT32_C(-2032337216), INT32_C( 1101485667), INT32_C( -818155161)),
|
|
simde_mm256_set_epi32(INT32_C( -740862027), INT32_C(-1269573634), INT32_C(-2057954770), INT32_C( 104248127),
|
|
INT32_C( -396103298), INT32_C(-2032337216), INT32_C( 1101485667), INT32_C( -818155161)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -99180911), INT32_C( -439106368), INT32_C( -219026380), INT32_C(-1842055049),
|
|
INT32_C( -586995091), INT32_C( 284086118), INT32_C( 1471875584), INT32_C( 18155208)),
|
|
simde_mm256_set_epi32(INT32_C(-1002814318), INT32_C( 422940673), INT32_C( 1746332809), INT32_C(-1093308989),
|
|
INT32_C(-1429872214), INT32_C( -179799423), INT32_C( 354446702), INT32_C( 1894329413)),
|
|
simde_mm256_set_epi32(INT32_C(-1002814318), INT32_C( -439106368), INT32_C( -219026380), INT32_C(-1842055049),
|
|
INT32_C(-1429872214), INT32_C( -179799423), INT32_C( 354446702), INT32_C( 18155208)) },
|
|
{ simde_mm256_set_epi32(INT32_C(-1356324197), INT32_C( 1432808198), INT32_C( 401202220), INT32_C( -194069457),
|
|
INT32_C( 767922262), INT32_C(-1577608365), INT32_C( 626335740), INT32_C( 1655291833)),
|
|
simde_mm256_set_epi32(INT32_C( -963509238), INT32_C( -638026164), INT32_C( 1442158122), INT32_C( 2100182819),
|
|
INT32_C( -392345708), INT32_C( 882354404), INT32_C( 215437606), INT32_C( -216148933)),
|
|
simde_mm256_set_epi32(INT32_C(-1356324197), INT32_C( -638026164), INT32_C( 401202220), INT32_C( -194069457),
|
|
INT32_C( -392345708), INT32_C(-1577608365), INT32_C( 215437606), INT32_C( -216148933)) },
|
|
{ simde_mm256_set_epi32(INT32_C( -593312907), INT32_C( 16741987), INT32_C( -897248657), INT32_C( 147155789),
|
|
INT32_C( 123410758), INT32_C( 1347488541), INT32_C( 1836961082), INT32_C( 1115588192)),
|
|
simde_mm256_set_epi32(INT32_C(-1511769299), INT32_C( 1665387130), INT32_C( -50678944), INT32_C( 270893388),
|
|
INT32_C( 950208462), INT32_C( 948963023), INT32_C( 1811011207), INT32_C(-1352546207)),
|
|
simde_mm256_set_epi32(INT32_C(-1511769299), INT32_C( 16741987), INT32_C( -897248657), INT32_C( 147155789),
|
|
INT32_C( 123410758), INT32_C( 948963023), INT32_C( 1811011207), INT32_C(-1352546207)) }
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
|
|
simde__m256i r = simde_mm256_min_epi32(test_vec[i].a, test_vec[i].b);
|
|
simde_assert_m256i_i32(r, ==, test_vec[i].r);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
SIMDE_TEST_FUNC_LIST_BEGIN
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_abs_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_abs_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_abs_epi32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_add_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_add_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_add_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_add_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_adds_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_adds_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_adds_epu8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_adds_epu16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_alignr_epi8_case0)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_alignr_epi8_case1)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_alignr_epi8_case2)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_alignr_epi8_case3)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_and_si256)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_andnot_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_avg_epu8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_avg_epu16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_blend_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blend_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blend_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_blendv_epi8)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcastb_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastb_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcastw_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastw_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcastd_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastd_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcastq_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastq_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcastss_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastss_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_broadcastsd_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastsd_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_broadcastsi128_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_bslli_epi128)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_bsrli_epi128)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpeq_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpeq_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpeq_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpeq_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpgt_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpgt_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpgt_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cmpgt_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi8_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi8_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi8_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi16_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi16_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepi32_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepu8_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepu8_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepu8_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepu16_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepu16_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtepu32_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extract_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extract_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_extracti128_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hadd_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hadd_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hadds_epi16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hsub_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hsub_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_hsubs_epi16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i32gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i32gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i32gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i32gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i64gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i64gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i64gather_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i64gather_epi32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i32gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i32gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i32gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i32gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i64gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i64gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i64gather_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i64gather_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i32gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i32gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i32gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i32gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i64gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i64gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i64gather_ps)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i64gather_ps)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i32gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i32gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i32gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i32gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_i64gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_i64gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_i64gather_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_i64gather_pd)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_inserti128_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_madd_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maddubs_epi16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_epi64)
|
|
|
|
#if !defined(HEDLEY_MSVC_VERSION)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_epi32_no_illegal_memory_access)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_epi32_no_illegal_memory_access)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskload_epi64_no_illegal_memory_access)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskload_epi64_no_illegal_memory_access)
|
|
#endif
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskstore_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskstore_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskstore_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskstore_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_epu8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_epu16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_max_epu32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_epu8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_epu16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_min_epu32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_movemask_epi8)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mpsadbw_epu8)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mul_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mul_epu32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mulhi_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mulhi_epu16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mulhrs_epi16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mullo_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mullo_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_mullo_epu32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_or_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_packs_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_packs_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_packus_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_packus_epi32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute4x64_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute4x64_pd)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permute2x128_si256)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutevar8x32_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_permutevar8x32_ps)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sad_epu8)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shuffle_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shuffle_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shufflehi_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_shufflelo_epi16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sign_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sign_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sign_epi32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sll_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sll_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sll_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_slli_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_slli_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_slli_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_slli_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_sllv_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sllv_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_sllv_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sllv_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sra_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sra_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srai_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srai_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_srav_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srav_epi32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srl_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srl_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srl_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srli_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srli_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srli_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srli_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_srlv_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srlv_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm_srlv_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_srlv_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_stream_load_si256)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sub_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sub_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sub_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_sub_epi64)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(x_mm256_sub_epu32)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_subs_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_subs_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_subs_epu8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_subs_epu16)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpacklo_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpacklo_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpacklo_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpacklo_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpackhi_epi8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpackhi_epi16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpackhi_epi32)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_unpackhi_epi64)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_xor_si256)
|
|
SIMDE_TEST_FUNC_LIST_END
|
|
|
|
#include <test/x86/test-x86-footer.h>
|