libdpf/thirdparty/simde/test/x86/avx512/dbsad.c

1735 lines
149 KiB
C
Raw Permalink Normal View History

#define SIMDE_TEST_X86_AVX512_INSN dbsad
#include <test/x86/avx512/test-avx512.h>
#include <simde/x86/avx512/setzero.h>
#include <simde/x86/avx512/dbsad.h>
static int
test_simde_mm_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int8_t a[16];
const int8_t b[16];
const int imm8;
const int16_t r[8];
} test_vec[] = {
{ { -INT8_C( 106), -INT8_C( 15), INT8_C( 92), INT8_C( 5), INT8_C( 125), -INT8_C( 30), INT8_C( 104), -INT8_C( 65),
-INT8_C( 70), INT8_C( 78), INT8_C( 11), INT8_MIN, INT8_C( 117), -INT8_C( 68), -INT8_C( 7), -INT8_C( 36) },
{ INT8_C( 1), -INT8_C( 75), -INT8_C( 3), INT8_C( 86), -INT8_C( 97), -INT8_C( 87), -INT8_C( 127), -INT8_C( 113),
-INT8_C( 77), INT8_C( 16), -INT8_C( 15), INT8_C( 31), INT8_C( 121), -INT8_C( 85), INT8_C( 121), INT8_C( 15) },
INT32_C( 156),
{ INT16_C( 451), INT16_C( 165), INT16_C( 305), INT16_C( 281), INT16_C( 251), INT16_C( 251), INT16_C( 331), INT16_C( 289) } },
{ { -INT8_C( 72), INT8_C( 124), -INT8_C( 39), INT8_C( 115), -INT8_C( 53), -INT8_C( 28), -INT8_C( 13), INT8_C( 64),
-INT8_C( 96), -INT8_C( 20), INT8_C( 29), -INT8_C( 95), -INT8_C( 94), INT8_C( 26), -INT8_C( 8), INT8_C( 65) },
{ -INT8_C( 61), INT8_C( 121), -INT8_C( 48), INT8_C( 118), -INT8_C( 119), -INT8_C( 63), -INT8_C( 106), INT8_C( 2),
INT8_C( 108), INT8_C( 15), INT8_C( 17), INT8_C( 9), -INT8_C( 27), INT8_C( 38), INT8_C( 35), -INT8_C( 98) },
INT32_C( 162),
{ INT16_C( 491), INT16_C( 564), INT16_C( 510), INT16_C( 493), INT16_C( 437), INT16_C( 437), INT16_C( 352), INT16_C( 516) } },
{ { -INT8_C( 31), INT8_C( 4), -INT8_C( 82), -INT8_C( 127), -INT8_C( 16), -INT8_C( 53), INT8_C( 35), -INT8_C( 110),
-INT8_C( 27), INT8_C( 27), -INT8_C( 44), -INT8_C( 88), -INT8_C( 108), -INT8_C( 92), INT8_C( 30), INT8_C( 30) },
{ INT8_C( 102), -INT8_C( 76), INT8_C( 32), -INT8_C( 46), -INT8_C( 60), INT8_C( 50), -INT8_C( 37), -INT8_C( 87),
INT8_C( 88), -INT8_C( 2), INT8_C( 71), -INT8_C( 6), -INT8_C( 5), INT8_C( 88), INT8_C( 104), -INT8_C( 36) },
INT32_C( 92),
{ INT16_C( 522), INT16_C( 231), INT16_C( 489), INT16_C( 173), INT16_C( 64), INT16_C( 442), INT16_C( 262), INT16_C( 262) } },
{ { -INT8_C( 31), INT8_MIN, -INT8_C( 33), -INT8_C( 58), -INT8_C( 101), -INT8_C( 77), INT8_C( 110), INT8_C( 48),
INT8_C( 88), -INT8_C( 116), INT8_C( 78), -INT8_C( 66), INT8_C( 65), INT8_C( 110), -INT8_C( 112), INT8_C( 5) },
{ -INT8_C( 96), INT8_C( 108), -INT8_C( 82), -INT8_C( 8), INT8_C( 106), -INT8_C( 10), -INT8_C( 13), INT8_C( 101),
INT8_C( 78), INT8_C( 91), INT8_C( 65), -INT8_C( 85), INT8_C( 113), -INT8_C( 97), -INT8_C( 8), INT8_C( 82) },
INT32_C( 31),
{ INT16_C( 284), INT16_C( 412), INT16_C( 304), INT16_C( 388), INT16_C( 378), INT16_C( 314), INT16_C( 306), INT16_C( 291) } },
{ { -INT8_C( 117), -INT8_C( 122), -INT8_C( 21), -INT8_C( 29), INT8_C( 18), INT8_C( 57), -INT8_C( 95), INT8_C( 83),
-INT8_C( 89), INT8_C( 49), INT8_C( 88), INT8_C( 72), -INT8_C( 99), INT8_C( 7), INT8_C( 64), INT8_C( 8) },
{ -INT8_C( 3), INT8_C( 51), INT8_C( 109), INT8_C( 75), -INT8_C( 114), -INT8_C( 81), -INT8_C( 10), -INT8_C( 1),
INT8_C( 78), -INT8_C( 18), INT8_C( 81), INT8_C( 109), -INT8_C( 58), INT8_C( 105), INT8_C( 40), INT8_C( 81) },
INT32_C( 239),
{ INT16_C( 429), INT16_C( 311), INT16_C( 105), INT16_C( 303), INT16_C( 322), INT16_C( 250), INT16_C( 409), INT16_C( 312) } },
{ { INT8_C( 76), -INT8_C( 43), INT8_C( 85), -INT8_C( 12), INT8_C( 6), -INT8_C( 82), INT8_C( 60), -INT8_C( 92),
-INT8_C( 75), INT8_C( 124), -INT8_C( 84), -INT8_C( 78), -INT8_C( 80), INT8_C( 25), -INT8_C( 3), INT8_C( 62) },
{ -INT8_C( 56), -INT8_C( 12), INT8_C( 62), INT8_C( 22), -INT8_C( 30), -INT8_C( 113), -INT8_C( 124), -INT8_C( 88),
-INT8_C( 7), -INT8_C( 84), -INT8_C( 7), -INT8_C( 24), -INT8_C( 64), INT8_C( 45), -INT8_C( 22), INT8_C( 12) },
INT32_C( 2),
{ INT16_C( 390), INT16_C( 323), INT16_C( 521), INT16_C( 538), INT16_C( 405), INT16_C( 297), INT16_C( 352), INT16_C( 338) } },
{ { -INT8_C( 18), INT8_C( 60), -INT8_C( 83), -INT8_C( 93), -INT8_C( 71), INT8_C( 89), INT8_C( 85), INT8_C( 105),
INT8_C( 114), INT8_C( 82), -INT8_C( 89), INT8_C( 59), INT8_C( 70), -INT8_C( 27), INT8_C( 81), INT8_C( 41) },
{ INT8_C( 117), -INT8_C( 43), -INT8_C( 47), INT8_C( 110), -INT8_C( 126), -INT8_C( 53), INT8_C( 86), INT8_C( 66),
-INT8_C( 8), INT8_C( 65), INT8_C( 78), -INT8_C( 5), -INT8_C( 127), INT8_C( 79), INT8_C( 4), INT8_C( 111) },
INT32_C( 139),
{ INT16_C( 349), INT16_C( 362), INT16_C( 406), INT16_C( 280), INT16_C( 227), INT16_C( 472), INT16_C( 449), INT16_C( 112) } },
{ { INT8_C( 10), INT8_C( 103), -INT8_C( 83), INT8_C( 124), -INT8_C( 71), INT8_C( 85), -INT8_C( 73), INT8_C( 0),
INT8_C( 58), INT8_C( 9), INT8_C( 41), -INT8_C( 81), -INT8_C( 34), -INT8_C( 6), INT8_C( 29), INT8_C( 96) },
{ -INT8_C( 59), INT8_C( 116), -INT8_C( 94), -INT8_C( 66), -INT8_C( 75), -INT8_C( 15), -INT8_C( 71), INT8_C( 54),
INT8_C( 64), -INT8_C( 67), -INT8_C( 91), -INT8_C( 53), INT8_C( 110), -INT8_C( 73), INT8_C( 16), INT8_C( 120) },
INT32_C( 30),
{ INT16_C( 227), INT16_C( 285), INT16_C( 394), INT16_C( 59), INT16_C( 620), INT16_C( 394), INT16_C( 421), INT16_C( 374) } },
};
simde__m128i a, b, r;
a = simde_x_mm_loadu_epi8(test_vec[0].a);
b = simde_x_mm_loadu_epi8(test_vec[0].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 156));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[0].r));
a = simde_x_mm_loadu_epi8(test_vec[1].a);
b = simde_x_mm_loadu_epi8(test_vec[1].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 162));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[1].r));
a = simde_x_mm_loadu_epi8(test_vec[2].a);
b = simde_x_mm_loadu_epi8(test_vec[2].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 92));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[2].r));
a = simde_x_mm_loadu_epi8(test_vec[3].a);
b = simde_x_mm_loadu_epi8(test_vec[3].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 31));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[3].r));
a = simde_x_mm_loadu_epi8(test_vec[4].a);
b = simde_x_mm_loadu_epi8(test_vec[4].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 239));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[4].r));
a = simde_x_mm_loadu_epi8(test_vec[5].a);
b = simde_x_mm_loadu_epi8(test_vec[5].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 2));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[5].r));
a = simde_x_mm_loadu_epi8(test_vec[6].a);
b = simde_x_mm_loadu_epi8(test_vec[6].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 139));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[6].r));
a = simde_x_mm_loadu_epi8(test_vec[7].a);
b = simde_x_mm_loadu_epi8(test_vec[7].b);
r = simde_mm_dbsad_epu8(a, b, INT32_C( 30));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi64(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m128i a = simde_test_x86_random_i8x16();
simde__m128i b = simde_test_x86_random_i8x16();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m128i r;
SIMDE_CONSTIFY_256_(simde_mm_dbsad_epu8, r, simde_mm_setzero_si128(), imm8, a, b);
simde_test_x86_write_i8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm_mask_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int16_t src[8];
const simde__mmask8 k;
const int8_t a[16];
const int8_t b[16];
const int imm8;
const int16_t r[8];
} test_vec[] = {
{ { -INT16_C( 21486), INT16_C( 19927), INT16_C( 181), -INT16_C( 27652), INT16_C( 6907), -INT16_C( 16140), -INT16_C( 26994), INT16_C( 17278) },
UINT8_C(135),
{ INT8_C( 55), INT8_C( 121), -INT8_C( 57), -INT8_C( 12), INT8_C( 30), -INT8_C( 109), INT8_C( 98), -INT8_C( 43),
-INT8_C( 93), -INT8_C( 38), -INT8_C( 13), INT8_C( 96), -INT8_C( 49), -INT8_C( 54), INT8_C( 115), INT8_C( 123) },
{ -INT8_C( 94), -INT8_C( 64), INT8_C( 48), -INT8_C( 94), -INT8_C( 68), -INT8_C( 61), -INT8_C( 99), -INT8_C( 42),
-INT8_C( 73), INT8_C( 94), INT8_C( 100), INT8_C( 78), -INT8_C( 36), -INT8_C( 89), -INT8_C( 43), INT8_C( 20) },
INT32_C( 32),
{ INT16_C( 411), INT16_C( 329), INT16_C( 118), -INT16_C( 27652), INT16_C( 6907), -INT16_C( 16140), -INT16_C( 26994), INT16_C( 321) } },
{ { INT16_C( 27440), -INT16_C( 11501), INT16_C( 1605), INT16_C( 5171), -INT16_C( 22831), INT16_C( 29583), -INT16_C( 16538), INT16_C( 8981) },
UINT8_C(131),
{ -INT8_C( 77), -INT8_C( 7), INT8_C( 58), INT8_C( 17), INT8_C( 94), -INT8_C( 120), -INT8_C( 19), INT8_C( 5),
INT8_C( 94), INT8_C( 1), INT8_C( 38), -INT8_C( 5), INT8_C( 10), INT8_C( 100), INT8_C( 43), INT8_C( 117) },
{ INT8_C( 120), -INT8_C( 2), -INT8_C( 70), INT8_C( 126), INT8_C( 49), -INT8_C( 49), INT8_C( 79), -INT8_C( 40),
INT8_C( 94), -INT8_C( 62), INT8_C( 62), INT8_C( 30), -INT8_C( 40), INT8_C( 97), -INT8_C( 95), -INT8_C( 117) },
INT32_C( 91),
{ INT16_C( 414), INT16_C( 328), INT16_C( 1605), INT16_C( 5171), -INT16_C( 22831), INT16_C( 29583), -INT16_C( 16538), INT16_C( 459) } },
{ { -INT16_C( 30364), -INT16_C( 15682), -INT16_C( 7029), -INT16_C( 27203), -INT16_C( 6071), -INT16_C( 16118), -INT16_C( 15130), INT16_C( 5951) },
UINT8_C(147),
{ -INT8_C( 113), -INT8_C( 17), -INT8_C( 14), INT8_C( 81), INT8_C( 46), INT8_C( 16), INT8_C( 41), -INT8_C( 113),
-INT8_C( 79), -INT8_C( 76), -INT8_C( 22), -INT8_C( 116), INT8_C( 80), -INT8_C( 93), -INT8_C( 16), -INT8_C( 38) },
{ INT8_C( 98), -INT8_C( 78), INT8_C( 101), INT8_C( 70), INT8_C( 111), -INT8_C( 6), -INT8_C( 113), INT8_C( 87),
INT8_C( 4), INT8_C( 80), INT8_C( 61), -INT8_C( 56), -INT8_C( 112), INT8_C( 85), INT8_C( 92), INT8_C( 31) },
INT32_C( 68),
{ INT16_C( 258), INT16_C( 375), -INT16_C( 7029), -INT16_C( 27203), INT16_C( 284), -INT16_C( 16118), -INT16_C( 15130), INT16_C( 147) } },
{ { -INT16_C( 26018), INT16_C( 3842), -INT16_C( 5042), -INT16_C( 24677), -INT16_C( 29552), -INT16_C( 3463), -INT16_C( 8642), -INT16_C( 20936) },
UINT8_C(216),
{ -INT8_C( 56), INT8_C( 5), -INT8_C( 36), INT8_C( 24), INT8_C( 67), -INT8_C( 92), -INT8_C( 88), -INT8_C( 104),
INT8_C( 0), -INT8_C( 57), -INT8_C( 36), INT8_C( 78), INT8_C( 56), INT8_C( 79), -INT8_C( 84), -INT8_C( 46) },
{ INT8_C( 81), -INT8_C( 69), INT8_C( 32), INT8_C( 61), INT8_C( 87), -INT8_C( 65), -INT8_C( 51), -INT8_C( 29),
INT8_C( 56), -INT8_C( 65), INT8_C( 33), INT8_C( 22), -INT8_C( 8), -INT8_C( 49), -INT8_C( 18), -INT8_C( 64) },
INT32_C( 213),
{ -INT16_C( 26018), INT16_C( 3842), -INT16_C( 5042), INT16_C( 313), INT16_C( 259), -INT16_C( 3463), INT16_C( 376), INT16_C( 403) } },
{ { -INT16_C( 32401), INT16_C( 28592), -INT16_C( 29624), -INT16_C( 32578), INT16_C( 27355), INT16_C( 11346), INT16_C( 29478), INT16_C( 32106) },
UINT8_C( 50),
{ INT8_C( 55), INT8_C( 96), INT8_C( 107), -INT8_C( 9), -INT8_C( 127), -INT8_C( 127), -INT8_C( 17), INT8_C( 81),
INT8_C( 112), -INT8_C( 81), INT8_C( 38), INT8_C( 58), -INT8_C( 121), INT8_C( 62), -INT8_C( 87), INT8_C( 8) },
{ -INT8_C( 18), INT8_C( 25), INT8_C( 81), INT8_C( 122), -INT8_C( 41), -INT8_C( 47), INT8_C( 86), INT8_C( 65),
INT8_C( 36), -INT8_C( 126), INT8_C( 103), -INT8_C( 105), -INT8_C( 20), -INT8_C( 28), -INT8_C( 55), INT8_C( 36) },
INT32_C( 68),
{ -INT16_C( 32401), INT16_C( 92), -INT16_C( 29624), -INT16_C( 32578), INT16_C( 383), INT16_C( 422), INT16_C( 29478), INT16_C( 32106) } },
{ { INT16_C( 2742), INT16_C( 9751), INT16_C( 15801), INT16_C( 16480), INT16_C( 2683), INT16_C( 26953), -INT16_C( 26077), -INT16_C( 1309) },
UINT8_C(107),
{ INT8_C( 57), INT8_C( 59), -INT8_C( 113), -INT8_C( 68), -INT8_C( 93), INT8_C( 38), -INT8_C( 88), -INT8_C( 121),
-INT8_C( 16), -INT8_C( 52), -INT8_C( 52), INT8_C( 36), -INT8_C( 25), -INT8_C( 110), -INT8_C( 38), -INT8_C( 15) },
{ -INT8_C( 87), INT8_C( 0), -INT8_C( 86), -INT8_C( 26), INT8_C( 97), -INT8_C( 21), INT8_C( 97), INT8_C( 107),
INT8_C( 52), -INT8_C( 54), -INT8_C( 114), -INT8_C( 50), -INT8_C( 83), -INT8_C( 120), INT8_C( 57), -INT8_C( 25) },
INT32_C( 195),
{ INT16_C( 322), INT16_C( 188), INT16_C( 15801), INT16_C( 402), INT16_C( 2683), INT16_C( 437), INT16_C( 295), -INT16_C( 1309) } },
{ { INT16_C( 19439), -INT16_C( 8210), -INT16_C( 17896), -INT16_C( 252), -INT16_C( 8628), -INT16_C( 2575), -INT16_C( 25633), INT16_C( 16603) },
UINT8_C(134),
{ INT8_C( 60), -INT8_C( 85), -INT8_C( 70), INT8_C( 6), INT8_C( 57), -INT8_C( 120), -INT8_C( 77), -INT8_C( 63),
-INT8_C( 62), -INT8_C( 102), -INT8_C( 124), -INT8_C( 117), INT8_C( 61), -INT8_C( 21), INT8_C( 122), -INT8_C( 119) },
{ -INT8_C( 39), INT8_C( 90), -INT8_C( 95), -INT8_C( 109), INT8_C( 94), -INT8_C( 96), -INT8_C( 33), INT8_C( 60),
-INT8_C( 111), -INT8_C( 44), INT8_C( 27), INT8_C( 45), -INT8_C( 81), INT8_C( 91), -INT8_C( 77), -INT8_C( 21) },
INT32_C( 6),
{ INT16_C( 19439), INT16_C( 525), INT16_C( 239), -INT16_C( 252), -INT16_C( 8628), -INT16_C( 2575), -INT16_C( 25633), INT16_C( 160) } },
{ { -INT16_C( 23306), -INT16_C( 18432), -INT16_C( 31425), INT16_C( 31811), -INT16_C( 16784), INT16_C( 18693), -INT16_C( 23016), INT16_C( 30428) },
UINT8_C( 71),
{ -INT8_C( 69), -INT8_C( 78), -INT8_C( 40), -INT8_C( 113), -INT8_C( 50), INT8_C( 5), INT8_C( 62), INT8_C( 41),
-INT8_C( 71), INT8_C( 41), INT8_C( 48), INT8_C( 39), INT8_C( 26), INT8_C( 111), INT8_C( 29), -INT8_C( 66) },
{ INT8_C( 112), -INT8_C( 42), -INT8_C( 3), -INT8_C( 11), INT8_C( 25), INT8_C( 122), INT8_C( 101), -INT8_C( 41),
INT8_MAX, -INT8_C( 82), -INT8_C( 17), INT8_C( 38), -INT8_C( 118), INT8_C( 101), INT8_C( 109), INT8_C( 69) },
INT32_C( 24),
{ INT16_C( 250), INT16_C( 147), INT16_C( 485), INT16_C( 31811), -INT16_C( 16784), INT16_C( 18693), INT16_C( 286), INT16_C( 30428) } },
};
simde__m128i src, a, b, r;
src = simde_x_mm_loadu_epi16(test_vec[0].src);
a = simde_x_mm_loadu_epi8(test_vec[0].a);
b = simde_x_mm_loadu_epi8(test_vec[0].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[0].k, a, b, INT32_C( 32));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[0].r));
src = simde_x_mm_loadu_epi16(test_vec[1].src);
a = simde_x_mm_loadu_epi8(test_vec[1].a);
b = simde_x_mm_loadu_epi8(test_vec[1].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[1].k, a, b, INT32_C( 91));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[1].r));
src = simde_x_mm_loadu_epi16(test_vec[2].src);
a = simde_x_mm_loadu_epi8(test_vec[2].a);
b = simde_x_mm_loadu_epi8(test_vec[2].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[2].k, a, b, INT32_C( 68));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[2].r));
src = simde_x_mm_loadu_epi16(test_vec[3].src);
a = simde_x_mm_loadu_epi8(test_vec[3].a);
b = simde_x_mm_loadu_epi8(test_vec[3].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[3].k, a, b, INT32_C( 213));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[3].r));
src = simde_x_mm_loadu_epi16(test_vec[4].src);
a = simde_x_mm_loadu_epi8(test_vec[4].a);
b = simde_x_mm_loadu_epi8(test_vec[4].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[4].k, a, b, INT32_C( 68));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[4].r));
src = simde_x_mm_loadu_epi16(test_vec[5].src);
a = simde_x_mm_loadu_epi8(test_vec[5].a);
b = simde_x_mm_loadu_epi8(test_vec[5].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[5].k, a, b, INT32_C( 195));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[5].r));
src = simde_x_mm_loadu_epi16(test_vec[6].src);
a = simde_x_mm_loadu_epi8(test_vec[6].a);
b = simde_x_mm_loadu_epi8(test_vec[6].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[6].k, a, b, INT32_C( 6));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[6].r));
src = simde_x_mm_loadu_epi16(test_vec[7].src);
a = simde_x_mm_loadu_epi8(test_vec[7].a);
b = simde_x_mm_loadu_epi8(test_vec[7].b);
r = simde_mm_mask_dbsad_epu8(src, test_vec[7].k, a, b, INT32_C( 24));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m128i src = simde_test_x86_random_i16x8();
simde__mmask8 k = simde_test_x86_random_mmask8();
simde__m128i a = simde_test_x86_random_i8x16();
simde__m128i b = simde_test_x86_random_i8x16();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m128i r;
SIMDE_CONSTIFY_256_(simde_mm_mask_dbsad_epu8, r, simde_mm_setzero_si128(), imm8, src, k, a, b);
simde_test_x86_write_i16x8(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm_maskz_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const simde__mmask8 k;
const int8_t a[16];
const int8_t b[16];
const int imm8;
const int16_t r[8];
} test_vec[] = {
{ UINT8_C( 75),
{ INT8_C( 18), INT8_C( 15), INT8_C( 4), INT8_C( 59), INT8_C( 63), INT8_C( 43), INT8_C( 85), -INT8_C( 81),
INT8_C( 72), INT8_C( 19), INT8_C( 31), INT8_C( 30), INT8_C( 17), INT8_C( 20), INT8_C( 56), -INT8_C( 117) },
{ INT8_C( 121), INT8_C( 15), INT8_C( 10), INT8_C( 39), -INT8_C( 1), INT8_C( 48), -INT8_C( 79), INT8_C( 100),
-INT8_C( 99), -INT8_C( 10), INT8_C( 124), -INT8_C( 29), -INT8_C( 54), INT8_C( 98), INT8_C( 46), -INT8_C( 36) },
INT32_C( 114),
{ INT16_C( 658), INT16_C( 622), INT16_C( 0), INT16_C( 477), INT16_C( 0), INT16_C( 0), INT16_C( 519), INT16_C( 0) } },
{ UINT8_C( 93),
{ INT8_C( 108), INT8_C( 96), -INT8_C( 91), INT8_MAX, INT8_MAX, -INT8_C( 60), -INT8_C( 112), -INT8_C( 109),
-INT8_C( 4), INT8_C( 27), INT8_C( 12), INT8_C( 11), INT8_C( 38), INT8_C( 51), INT8_C( 10), INT8_C( 86) },
{ -INT8_C( 28), INT8_C( 111), -INT8_C( 12), -INT8_C( 38), -INT8_C( 21), -INT8_C( 41), -INT8_C( 92), INT8_C( 78),
INT8_C( 5), INT8_MIN, -INT8_C( 64), INT8_C( 55), -INT8_C( 105), INT8_C( 113), -INT8_C( 108), INT8_C( 3) },
INT32_C( 210),
{ INT16_C( 234), INT16_C( 0), INT16_C( 326), INT16_C( 234), INT16_C( 424), INT16_C( 0), INT16_C( 321), INT16_C( 0) } },
{ UINT8_C(253),
{ INT8_C( 19), -INT8_C( 27), -INT8_C( 7), INT8_C( 47), -INT8_C( 15), INT8_C( 5), INT8_C( 85), INT8_C( 37),
INT8_C( 15), -INT8_C( 85), INT8_C( 9), INT8_C( 126), -INT8_C( 97), -INT8_C( 28), INT8_C( 106), INT8_C( 118) },
{ -INT8_C( 120), -INT8_C( 72), INT8_C( 123), INT8_C( 9), INT8_C( 120), -INT8_C( 78), -INT8_C( 96), -INT8_C( 23),
INT8_C( 70), -INT8_C( 92), -INT8_C( 69), INT8_MIN, INT8_C( 39), INT8_C( 13), INT8_C( 125), INT8_C( 58) },
INT32_C( 242),
{ INT16_C( 259), INT16_C( 0), INT16_C( 375), INT16_C( 429), INT16_C( 366), INT16_C( 184), INT16_C( 376), INT16_C( 390) } },
{ UINT8_C(124),
{ -INT8_C( 66), INT8_C( 8), -INT8_C( 117), INT8_C( 106), INT8_C( 18), INT8_C( 10), INT8_C( 9), -INT8_C( 10),
INT8_C( 116), INT8_MIN, INT8_C( 126), INT8_C( 44), -INT8_C( 5), -INT8_C( 121), -INT8_C( 92), -INT8_C( 82) },
{ INT8_C( 40), -INT8_C( 115), -INT8_C( 12), -INT8_C( 52), INT8_C( 73), INT8_C( 116), -INT8_C( 13), INT8_C( 86),
-INT8_C( 14), INT8_C( 45), INT8_C( 72), INT8_C( 105), -INT8_C( 105), INT8_C( 43), -INT8_C( 27), INT8_C( 85) },
INT32_C( 52),
{ INT16_C( 0), INT16_C( 0), INT16_C( 614), INT16_C( 359), INT16_C( 264), INT16_C( 219), INT16_C( 229), INT16_C( 0) } },
{ UINT8_C(122),
{ -INT8_C( 55), INT8_C( 60), -INT8_C( 18), INT8_C( 73), -INT8_C( 70), INT8_C( 26), INT8_C( 68), INT8_C( 66),
-INT8_C( 66), -INT8_C( 14), INT8_C( 106), INT8_C( 76), -INT8_C( 25), INT8_C( 54), -INT8_C( 107), INT8_C( 91) },
{ INT8_C( 41), -INT8_C( 21), INT8_C( 77), INT8_C( 86), INT8_C( 51), -INT8_C( 74), -INT8_C( 19), INT8_C( 94),
-INT8_C( 101), INT8_C( 67), -INT8_C( 110), INT8_C( 12), INT8_C( 2), -INT8_C( 40), -INT8_C( 122), -INT8_C( 53) },
INT32_C( 20),
{ INT16_C( 0), INT16_C( 225), INT16_C( 0), INT16_C( 410), INT16_C( 348), INT16_C( 60), INT16_C( 298), INT16_C( 0) } },
{ UINT8_C(143),
{ INT8_C( 89), INT8_C( 17), INT8_C( 78), INT8_C( 75), INT8_C( 123), -INT8_C( 102), INT8_C( 50), -INT8_C( 79),
INT8_C( 47), -INT8_C( 114), -INT8_C( 38), INT8_C( 26), -INT8_C( 37), INT8_C( 48), INT8_C( 77), -INT8_C( 110) },
{ INT8_C( 30), -INT8_C( 85), INT8_C( 45), INT8_C( 97), INT8_C( 62), INT8_C( 57), INT8_C( 99), INT8_C( 22),
-INT8_C( 64), INT8_C( 47), INT8_C( 43), INT8_C( 53), INT8_C( 67), -INT8_C( 6), -INT8_C( 60), -INT8_C( 100) },
INT32_C( 11),
{ INT16_C( 454), INT16_C( 535), INT16_C( 347), INT16_C( 208), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 335) } },
{ UINT8_C(172),
{ INT8_C( 26), INT8_C( 55), -INT8_C( 37), -INT8_C( 88), INT8_C( 17), -INT8_C( 11), -INT8_C( 124), INT8_C( 65),
INT8_C( 66), INT8_C( 22), INT8_C( 95), -INT8_C( 18), INT8_C( 67), -INT8_C( 64), INT8_C( 44), INT8_C( 125) },
{ INT8_C( 36), INT8_C( 66), INT8_C( 61), INT8_C( 83), INT8_C( 109), INT8_C( 114), -INT8_C( 106), INT8_C( 103),
INT8_C( 54), INT8_C( 51), INT8_C( 114), INT8_C( 73), INT8_C( 27), -INT8_C( 8), -INT8_C( 11), INT8_C( 53) },
INT32_C( 47),
{ INT16_C( 0), INT16_C( 0), INT16_C( 708), INT16_C( 550), INT16_C( 0), INT16_C( 331), INT16_C( 0), INT16_C( 248) } },
{ UINT8_C(198),
{ INT8_C( 98), -INT8_C( 126), INT8_C( 9), INT8_C( 120), -INT8_C( 31), -INT8_C( 9), -INT8_C( 69), -INT8_C( 94),
INT8_C( 35), INT8_C( 56), -INT8_C( 58), INT8_C( 101), INT8_C( 117), INT8_C( 25), -INT8_C( 45), -INT8_C( 25) },
{ -INT8_C( 81), INT8_C( 58), INT8_C( 30), -INT8_C( 30), -INT8_C( 83), INT8_C( 103), -INT8_C( 3), -INT8_C( 91),
INT8_C( 92), INT8_C( 51), -INT8_C( 43), INT8_C( 45), INT8_C( 17), INT8_C( 21), -INT8_C( 12), INT8_C( 115) },
INT32_C( 151),
{ INT16_C( 0), INT16_C( 350), INT16_C( 224), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 575), INT16_C( 293) } },
};
simde__m128i a, b, r;
a = simde_x_mm_loadu_epi8(test_vec[0].a);
b = simde_x_mm_loadu_epi8(test_vec[0].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[0].k, a, b, INT32_C( 114));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[0].r));
a = simde_x_mm_loadu_epi8(test_vec[1].a);
b = simde_x_mm_loadu_epi8(test_vec[1].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[1].k, a, b, INT32_C( 210));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[1].r));
a = simde_x_mm_loadu_epi8(test_vec[2].a);
b = simde_x_mm_loadu_epi8(test_vec[2].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[2].k, a, b, INT32_C( 242));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[2].r));
a = simde_x_mm_loadu_epi8(test_vec[3].a);
b = simde_x_mm_loadu_epi8(test_vec[3].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[3].k, a, b, INT32_C( 52));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[3].r));
a = simde_x_mm_loadu_epi8(test_vec[4].a);
b = simde_x_mm_loadu_epi8(test_vec[4].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[4].k, a, b, INT32_C( 20));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[4].r));
a = simde_x_mm_loadu_epi8(test_vec[5].a);
b = simde_x_mm_loadu_epi8(test_vec[5].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[5].k, a, b, INT32_C( 11));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[5].r));
a = simde_x_mm_loadu_epi8(test_vec[6].a);
b = simde_x_mm_loadu_epi8(test_vec[6].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[6].k, a, b, INT32_C( 47));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[6].r));
a = simde_x_mm_loadu_epi8(test_vec[7].a);
b = simde_x_mm_loadu_epi8(test_vec[7].b);
r = simde_mm_maskz_dbsad_epu8(test_vec[7].k, a, b, INT32_C( 151));
simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__mmask8 k = simde_test_x86_random_mmask8();
simde__m128i a = simde_test_x86_random_i8x16();
simde__m128i b = simde_test_x86_random_i8x16();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m128i r;
SIMDE_CONSTIFY_256_(simde_mm_maskz_dbsad_epu8, r, simde_mm_setzero_si128(), imm8, k, a, b);
simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i8x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm256_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int8_t a[32];
const int8_t b[32];
const int imm8;
const int16_t r[16];
} test_vec[] = {
{ { -INT8_C( 41), -INT8_C( 40), INT8_C( 35), INT8_C( 39), INT8_C( 21), INT8_C( 23), -INT8_C( 105), INT8_C( 33),
INT8_C( 59), INT8_C( 107), -INT8_C( 47), -INT8_C( 71), -INT8_C( 27), INT8_C( 87), -INT8_C( 45), INT8_C( 12),
-INT8_C( 93), INT8_C( 39), -INT8_C( 77), -INT8_C( 18), -INT8_C( 47), -INT8_C( 35), INT8_C( 70), INT8_C( 12),
-INT8_C( 82), -INT8_C( 41), -INT8_C( 69), -INT8_C( 92), INT8_C( 90), INT8_C( 15), INT8_C( 68), INT8_C( 49) },
{ -INT8_C( 25), INT8_C( 104), INT8_C( 88), -INT8_C( 3), INT8_MAX, -INT8_C( 17), INT8_C( 30), -INT8_C( 70),
INT8_C( 90), -INT8_C( 17), INT8_C( 115), INT8_C( 63), INT8_C( 71), INT8_C( 70), INT8_C( 76), -INT8_C( 22),
INT8_C( 110), -INT8_C( 1), -INT8_C( 40), INT8_C( 63), -INT8_C( 36), INT8_C( 31), INT8_C( 76), -INT8_C( 118),
-INT8_C( 10), INT8_C( 7), INT8_C( 47), INT8_C( 80), INT8_C( 23), INT8_C( 115), -INT8_C( 127), -INT8_C( 2) },
INT32_C( 219),
{ INT16_C( 526), INT16_C( 535), INT16_C( 533), INT16_C( 450), INT16_C( 380), INT16_C( 394), INT16_C( 496), INT16_C( 264),
INT16_C( 282), INT16_C( 221), INT16_C( 294), INT16_C( 168), INT16_C( 367), INT16_C( 472), INT16_C( 248), INT16_C( 183) } },
{ { -INT8_C( 55), INT8_C( 26), INT8_C( 21), INT8_C( 36), INT8_C( 9), -INT8_C( 119), INT8_C( 99), INT8_C( 80),
-INT8_C( 49), -INT8_C( 81), INT8_C( 59), INT8_C( 61), -INT8_C( 82), INT8_C( 19), INT8_C( 125), -INT8_C( 117),
INT8_C( 50), -INT8_C( 55), INT8_C( 21), INT8_C( 40), -INT8_C( 48), INT8_C( 68), INT8_C( 120), -INT8_C( 25),
-INT8_C( 72), -INT8_C( 6), -INT8_C( 26), -INT8_C( 109), -INT8_C( 44), -INT8_C( 31), -INT8_C( 18), -INT8_C( 99) },
{ -INT8_C( 5), INT8_C( 4), -INT8_C( 63), INT8_C( 5), -INT8_C( 115), INT8_C( 37), INT8_C( 85), INT8_C( 92),
-INT8_C( 44), -INT8_C( 112), -INT8_C( 102), -INT8_C( 125), -INT8_C( 92), INT8_C( 23), INT8_C( 14), -INT8_C( 42),
-INT8_C( 32), INT8_C( 35), -INT8_C( 1), -INT8_C( 80), INT8_C( 104), INT8_C( 119), -INT8_C( 104), INT8_C( 32),
INT8_C( 113), INT8_C( 126), -INT8_C( 77), INT8_C( 69), INT8_C( 95), -INT8_C( 94), -INT8_C( 29), INT8_C( 91) },
INT32_C( 166),
{ INT16_C( 357), INT16_C( 400), INT16_C( 236), INT16_C( 193), INT16_C( 201), INT16_C( 307), INT16_C( 224), INT16_C( 270),
INT16_C( 325), INT16_C( 210), INT16_C( 158), INT16_C( 255), INT16_C( 324), INT16_C( 324), INT16_C( 345), INT16_C( 389) } },
{ { -INT8_C( 55), -INT8_C( 75), -INT8_C( 113), -INT8_C( 98), INT8_C( 70), INT8_C( 41), INT8_C( 33), -INT8_C( 22),
INT8_C( 64), INT8_C( 47), -INT8_C( 64), INT8_C( 32), INT8_C( 82), -INT8_C( 65), -INT8_C( 47), -INT8_C( 70),
INT8_C( 55), INT8_C( 105), -INT8_C( 38), -INT8_C( 88), -INT8_C( 25), -INT8_C( 114), -INT8_C( 18), INT8_C( 70),
INT8_C( 48), -INT8_C( 47), -INT8_C( 95), -INT8_C( 42), INT8_C( 117), INT8_C( 1), INT8_C( 9), INT8_C( 63) },
{ -INT8_C( 73), -INT8_C( 104), -INT8_C( 35), -INT8_C( 3), -INT8_C( 62), -INT8_C( 2), -INT8_C( 25), INT8_C( 2),
INT8_C( 45), -INT8_C( 89), INT8_C( 35), INT8_MAX, INT8_C( 103), -INT8_C( 12), INT8_C( 58), -INT8_C( 98),
INT8_C( 93), INT8_C( 20), INT8_C( 70), INT8_C( 68), -INT8_C( 94), INT8_C( 52), -INT8_C( 118), -INT8_C( 46),
INT8_C( 5), INT8_C( 44), -INT8_C( 88), INT8_C( 123), INT8_C( 45), -INT8_C( 79), -INT8_C( 70), -INT8_C( 28) },
INT32_C( 74),
{ INT16_C( 309), INT16_C( 309), INT16_C( 200), INT16_C( 394), INT16_C( 474), INT16_C( 485), INT16_C( 284), INT16_C( 264),
INT16_C( 206), INT16_C( 332), INT16_C( 341), INT16_C( 537), INT16_C( 471), INT16_C( 312), INT16_C( 278), INT16_C( 328) } },
{ { -INT8_C( 107), -INT8_C( 56), INT8_C( 14), -INT8_C( 62), INT8_C( 112), INT8_C( 49), INT8_C( 65), -INT8_C( 41),
INT8_C( 37), INT8_C( 123), INT8_C( 117), -INT8_C( 126), -INT8_C( 112), -INT8_C( 69), -INT8_C( 58), INT8_C( 50),
-INT8_C( 16), INT8_C( 81), INT8_C( 5), -INT8_C( 11), INT8_C( 125), -INT8_C( 83), INT8_C( 112), -INT8_C( 86),
INT8_C( 95), INT8_C( 42), -INT8_C( 113), -INT8_C( 87), -INT8_C( 63), INT8_C( 112), -INT8_C( 75), INT8_C( 86) },
{ INT8_C( 57), -INT8_C( 61), INT8_C( 24), -INT8_C( 87), -INT8_C( 11), INT8_C( 90), INT8_MIN, INT8_C( 26),
-INT8_C( 43), -INT8_C( 11), -INT8_C( 99), INT8_C( 101), -INT8_C( 80), INT8_C( 99), -INT8_C( 104), -INT8_C( 96),
-INT8_C( 76), -INT8_C( 99), -INT8_C( 106), INT8_C( 49), INT8_C( 74), INT8_C( 6), -INT8_C( 36), -INT8_C( 87),
INT8_C( 49), INT8_C( 107), INT8_C( 82), -INT8_C( 14), -INT8_C( 37), INT8_C( 7), INT8_C( 73), INT8_C( 20) },
INT32_C( 203),
{ INT16_C( 300), INT16_C( 263), INT16_C( 329), INT16_C( 450), INT16_C( 224), INT16_C( 355), INT16_C( 209), INT16_C( 237),
INT16_C( 388), INT16_C( 452), INT16_C( 331), INT16_C( 322), INT16_C( 327), INT16_C( 314), INT16_C( 223), INT16_C( 438) } },
{ { -INT8_C( 69), INT8_C( 61), -INT8_C( 38), -INT8_C( 111), INT8_C( 50), INT8_C( 119), -INT8_C( 10), -INT8_C( 29),
-INT8_C( 37), -INT8_C( 114), -INT8_C( 125), -INT8_C( 113), INT8_C( 43), INT8_C( 25), -INT8_C( 63), INT8_C( 118),
INT8_C( 32), -INT8_C( 99), INT8_C( 31), INT8_C( 81), INT8_C( 8), INT8_C( 114), INT8_C( 67), -INT8_C( 29),
INT8_C( 121), -INT8_C( 116), -INT8_C( 8), INT8_C( 68), -INT8_C( 18), -INT8_C( 75), INT8_C( 4), -INT8_C( 87) },
{ -INT8_C( 13), -INT8_C( 33), INT8_C( 58), INT8_C( 37), INT8_C( 86), INT8_C( 49), INT8_C( 8), INT8_C( 49),
-INT8_C( 65), -INT8_C( 116), -INT8_C( 63), -INT8_C( 21), -INT8_C( 91), -INT8_C( 126), INT8_C( 97), -INT8_C( 59),
INT8_C( 31), INT8_MIN, INT8_C( 22), INT8_C( 39), -INT8_C( 14), INT8_C( 90), INT8_C( 10), INT8_C( 108),
-INT8_C( 26), INT8_C( 2), -INT8_C( 80), -INT8_C( 44), -INT8_C( 72), -INT8_C( 75), INT8_C( 126), -INT8_C( 85) },
INT32_C( 148),
{ INT16_C( 486), INT16_C( 279), INT16_C( 428), INT16_C( 462), INT16_C( 443), INT16_C( 434), INT16_C( 83), INT16_C( 300),
INT16_C( 81), INT16_C( 400), INT16_C( 401), INT16_C( 399), INT16_C( 449), INT16_C( 463), INT16_C( 694), INT16_C( 188) } },
{ { -INT8_C( 23), -INT8_C( 39), INT8_C( 28), -INT8_C( 87), INT8_C( 101), -INT8_C( 35), -INT8_C( 108), INT8_C( 10),
INT8_C( 95), -INT8_C( 11), -INT8_C( 48), INT8_C( 126), INT8_C( 117), -INT8_C( 26), -INT8_C( 91), INT8_C( 104),
INT8_C( 64), -INT8_C( 81), -INT8_C( 44), INT8_C( 39), -INT8_C( 78), -INT8_C( 124), -INT8_C( 5), INT8_C( 106),
INT8_C( 57), INT8_C( 121), INT8_C( 21), -INT8_C( 51), INT8_C( 50), -INT8_C( 27), -INT8_C( 72), INT8_C( 27) },
{ -INT8_C( 66), -INT8_C( 44), -INT8_C( 60), INT8_C( 35), -INT8_C( 79), INT8_C( 88), INT8_C( 46), INT8_C( 16),
INT8_C( 77), -INT8_C( 2), -INT8_C( 114), -INT8_C( 61), -INT8_C( 28), INT8_C( 51), INT8_C( 43), INT8_C( 37),
-INT8_C( 30), -INT8_C( 1), INT8_C( 76), -INT8_C( 108), -INT8_C( 125), INT8_C( 71), -INT8_C( 2), -INT8_C( 67),
-INT8_C( 63), INT8_C( 19), -INT8_C( 118), -INT8_C( 13), -INT8_C( 7), INT8_C( 66), INT8_C( 14), -INT8_C( 73) },
INT32_C( 22),
{ INT16_C( 333), INT16_C( 271), INT16_C( 174), INT16_C( 234), INT16_C( 511), INT16_C( 462), INT16_C( 418), INT16_C( 280),
INT16_C( 563), INT16_C( 205), INT16_C( 306), INT16_C( 394), INT16_C( 373), INT16_C( 336), INT16_C( 514), INT16_C( 262) } },
{ { INT8_C( 43), INT8_C( 9), -INT8_C( 41), INT8_C( 121), INT8_C( 7), INT8_C( 101), INT8_C( 60), -INT8_C( 21),
-INT8_C( 104), INT8_C( 103), INT8_C( 16), INT8_C( 123), INT8_C( 102), INT8_C( 92), INT8_C( 15), -INT8_C( 23),
-INT8_C( 92), INT8_C( 14), -INT8_C( 90), INT8_C( 101), INT8_C( 33), INT8_C( 49), INT8_C( 88), INT8_C( 26),
INT8_C( 115), INT8_C( 102), -INT8_C( 46), -INT8_C( 118), INT8_C( 57), -INT8_C( 83), INT8_C( 81), INT8_C( 101) },
{ -INT8_C( 74), INT8_C( 41), -INT8_C( 34), -INT8_C( 67), -INT8_C( 114), INT8_C( 26), -INT8_C( 88), INT8_C( 39),
-INT8_C( 127), -INT8_C( 71), -INT8_C( 94), -INT8_C( 25), INT8_C( 21), -INT8_C( 79), -INT8_C( 48), -INT8_C( 71),
-INT8_C( 65), INT8_C( 119), INT8_C( 30), -INT8_C( 31), -INT8_C( 88), INT8_C( 118), -INT8_C( 5), INT8_C( 27),
-INT8_C( 35), -INT8_C( 51), -INT8_C( 91), INT8_C( 22), INT8_C( 122), -INT8_C( 9), INT8_C( 123), INT8_C( 48) },
INT32_C( 32),
{ INT16_C( 246), INT16_C( 302), INT16_C( 619), INT16_C( 295), INT16_C( 359), INT16_C( 366), INT16_C( 558), INT16_C( 256),
INT16_C( 392), INT16_C( 210), INT16_C( 375), INT16_C( 369), INT16_C( 370), INT16_C( 394), INT16_C( 387), INT16_C( 162) } },
{ { INT8_C( 115), -INT8_C( 106), -INT8_C( 43), -INT8_C( 12), INT8_C( 79), INT8_C( 119), -INT8_C( 37), INT8_C( 100),
INT8_C( 41), -INT8_C( 84), INT8_C( 30), -INT8_C( 24), INT8_C( 35), INT8_C( 60), -INT8_C( 55), -INT8_C( 53),
-INT8_C( 77), -INT8_C( 59), -INT8_C( 26), -INT8_C( 112), -INT8_C( 110), -INT8_C( 116), -INT8_C( 90), INT8_C( 13),
-INT8_C( 125), INT8_C( 34), INT8_C( 61), -INT8_C( 93), INT8_C( 123), INT8_C( 43), INT8_C( 81), -INT8_C( 17) },
{ -INT8_C( 63), INT8_C( 39), -INT8_C( 29), INT8_C( 16), -INT8_C( 98), -INT8_C( 65), INT8_C( 116), -INT8_C( 57),
INT8_C( 107), -INT8_C( 110), -INT8_C( 80), -INT8_C( 114), -INT8_C( 49), INT8_C( 121), INT8_C( 89), -INT8_C( 126),
INT8_C( 62), INT8_C( 63), INT8_C( 18), -INT8_C( 47), -INT8_C( 53), -INT8_C( 72), -INT8_C( 34), INT8_C( 78),
-INT8_C( 38), INT8_C( 27), -INT8_C( 15), INT8_C( 86), INT8_C( 70), INT8_C( 67), INT8_C( 69), INT8_C( 7) },
INT32_C( 106),
{ INT16_C( 151), INT16_C( 265), INT16_C( 278), INT16_C( 224), INT16_C( 328), INT16_C( 295), INT16_C( 278), INT16_C( 302),
INT16_C( 278), INT16_C( 414), INT16_C( 215), INT16_C( 505), INT16_C( 351), INT16_C( 376), INT16_C( 338), INT16_C( 317) } },
};
simde__m256i a, b, r;
a = simde_x_mm256_loadu_epi8(test_vec[0].a);
b = simde_x_mm256_loadu_epi8(test_vec[0].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 219));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[0].r));
a = simde_x_mm256_loadu_epi8(test_vec[1].a);
b = simde_x_mm256_loadu_epi8(test_vec[1].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 166));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[1].r));
a = simde_x_mm256_loadu_epi8(test_vec[2].a);
b = simde_x_mm256_loadu_epi8(test_vec[2].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 74));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[2].r));
a = simde_x_mm256_loadu_epi8(test_vec[3].a);
b = simde_x_mm256_loadu_epi8(test_vec[3].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 203));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[3].r));
a = simde_x_mm256_loadu_epi8(test_vec[4].a);
b = simde_x_mm256_loadu_epi8(test_vec[4].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 148));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[4].r));
a = simde_x_mm256_loadu_epi8(test_vec[5].a);
b = simde_x_mm256_loadu_epi8(test_vec[5].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 22));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[5].r));
a = simde_x_mm256_loadu_epi8(test_vec[6].a);
b = simde_x_mm256_loadu_epi8(test_vec[6].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 32));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[6].r));
a = simde_x_mm256_loadu_epi8(test_vec[7].a);
b = simde_x_mm256_loadu_epi8(test_vec[7].b);
r = simde_mm256_dbsad_epu8(a, b, INT32_C( 106));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m256i a = simde_test_x86_random_i8x32();
simde__m256i b = simde_test_x86_random_i8x32();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m256i r;
SIMDE_CONSTIFY_256_(simde_mm256_dbsad_epu8, r, simde_mm256_setzero_si256(), imm8, a, b);
simde_test_x86_write_i8x32(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i8x32(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm256_mask_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int16_t src[16];
const simde__mmask16 k;
const int8_t a[32];
const int8_t b[32];
const int imm8;
const int16_t r[16];
} test_vec[] = {
{ { -INT16_C( 19070), -INT16_C( 28589), INT16_C( 1660), INT16_C( 14252), INT16_C( 13131), -INT16_C( 25728), INT16_C( 26178), INT16_C( 4866),
-INT16_C( 19303), -INT16_C( 4014), INT16_C( 18642), -INT16_C( 20994), -INT16_C( 30021), -INT16_C( 13101), INT16_C( 7186), -INT16_C( 27467) },
UINT16_C( 2514),
{ INT8_C( 36), INT8_C( 78), INT8_C( 15), -INT8_C( 48), -INT8_C( 123), INT8_C( 90), INT8_C( 3), INT8_C( 5),
-INT8_C( 10), INT8_C( 69), INT8_C( 108), -INT8_C( 8), INT8_C( 88), INT8_C( 5), -INT8_C( 84), -INT8_C( 86),
-INT8_C( 11), INT8_C( 126), -INT8_C( 14), -INT8_C( 13), INT8_C( 44), -INT8_C( 83), INT8_C( 126), -INT8_C( 1),
INT8_C( 122), -INT8_C( 112), INT8_C( 27), INT8_C( 47), INT8_C( 36), -INT8_C( 19), INT8_C( 56), INT8_C( 72) },
{ INT8_C( 60), INT8_C( 72), INT8_C( 25), -INT8_C( 63), -INT8_C( 94), INT8_C( 28), -INT8_C( 57), -INT8_C( 104),
INT8_C( 98), INT8_C( 51), -INT8_C( 111), -INT8_C( 70), INT8_C( 56), INT8_C( 61), INT8_C( 101), INT8_C( 46),
-INT8_C( 68), INT8_C( 87), INT8_C( 33), -INT8_C( 24), INT8_C( 5), -INT8_C( 97), -INT8_C( 25), INT8_MAX,
INT8_C( 47), INT8_C( 2), -INT8_C( 82), INT8_C( 83), -INT8_C( 16), -INT8_C( 25), -INT8_C( 100), INT8_C( 44) },
INT32_C( 47),
{ -INT16_C( 19070), INT16_C( 231), INT16_C( 1660), INT16_C( 14252), INT16_C( 265), -INT16_C( 25728), INT16_C( 448), INT16_C( 398),
INT16_C( 395), -INT16_C( 4014), INT16_C( 18642), INT16_C( 271), -INT16_C( 30021), -INT16_C( 13101), INT16_C( 7186), -INT16_C( 27467) } },
{ { -INT16_C( 19247), INT16_C( 13162), -INT16_C( 1049), INT16_C( 8430), INT16_C( 21304), -INT16_C( 2994), INT16_C( 28586), -INT16_C( 20516),
-INT16_C( 15601), INT16_C( 15918), -INT16_C( 8762), -INT16_C( 18798), INT16_C( 11972), -INT16_C( 3102), -INT16_C( 12317), -INT16_C( 19260) },
UINT16_C(11908),
{ -INT8_C( 24), INT8_C( 107), INT8_C( 41), -INT8_C( 42), -INT8_C( 117), INT8_C( 98), INT8_C( 41), -INT8_C( 39),
INT8_C( 86), -INT8_C( 45), INT8_C( 73), INT8_C( 51), -INT8_C( 125), INT8_C( 88), -INT8_C( 10), -INT8_C( 79),
-INT8_C( 106), -INT8_C( 68), -INT8_C( 114), INT8_C( 40), INT8_C( 114), INT8_C( 82), INT8_C( 86), INT8_C( 84),
INT8_C( 69), INT8_C( 57), INT8_C( 36), INT8_C( 10), -INT8_C( 18), -INT8_C( 88), INT8_C( 56), -INT8_C( 42) },
{ INT8_C( 19), INT8_C( 98), -INT8_C( 84), -INT8_C( 97), -INT8_C( 60), -INT8_C( 43), INT8_C( 120), INT8_C( 26),
-INT8_C( 88), -INT8_C( 63), INT8_C( 77), INT8_C( 43), INT8_C( 25), INT8_C( 68), -INT8_C( 35), -INT8_C( 80),
INT8_C( 0), INT8_C( 107), -INT8_C( 40), INT8_C( 115), -INT8_C( 66), INT8_C( 47), -INT8_C( 57), INT8_C( 3),
INT8_C( 104), -INT8_C( 21), INT8_C( 13), INT8_C( 86), -INT8_C( 109), INT8_C( 70), INT8_C( 44), -INT8_C( 89) },
INT32_C( 168),
{ -INT16_C( 19247), INT16_C( 13162), INT16_C( 245), INT16_C( 8430), INT16_C( 21304), -INT16_C( 2994), INT16_C( 28586), INT16_C( 321),
-INT16_C( 15601), INT16_C( 162), INT16_C( 304), INT16_C( 243), INT16_C( 11972), INT16_C( 354), -INT16_C( 12317), -INT16_C( 19260) } },
{ { -INT16_C( 16723), INT16_C( 22150), -INT16_C( 11136), -INT16_C( 26239), INT16_C( 24088), INT16_C( 6217), INT16_C( 8906), -INT16_C( 30581),
INT16_C( 21329), -INT16_C( 18037), -INT16_C( 26306), -INT16_C( 11760), INT16_C( 15583), -INT16_C( 30855), -INT16_C( 16619), -INT16_C( 15629) },
UINT16_C(31101),
{ INT8_C( 24), -INT8_C( 3), INT8_C( 77), -INT8_C( 102), -INT8_C( 105), INT8_C( 101), -INT8_C( 8), -INT8_C( 32),
INT8_C( 126), -INT8_C( 62), INT8_C( 2), INT8_C( 9), INT8_C( 74), INT8_C( 83), INT8_C( 92), -INT8_C( 42),
INT8_C( 13), -INT8_C( 101), INT8_C( 111), INT8_C( 29), INT8_C( 109), INT8_C( 78), INT8_C( 89), -INT8_C( 26),
-INT8_C( 43), INT8_C( 110), -INT8_C( 91), -INT8_C( 56), INT8_C( 49), INT8_C( 34), INT8_C( 65), INT8_C( 73) },
{ INT8_C( 32), -INT8_C( 113), -INT8_C( 29), -INT8_C( 73), -INT8_C( 12), -INT8_C( 36), -INT8_C( 105), INT8_C( 114),
-INT8_C( 98), -INT8_C( 102), INT8_C( 124), -INT8_C( 23), -INT8_C( 19), -INT8_C( 40), -INT8_C( 65), -INT8_C( 6),
INT8_C( 115), INT8_C( 46), INT8_C( 23), -INT8_C( 32), INT8_C( 124), INT8_C( 113), -INT8_C( 58), INT8_C( 81),
-INT8_C( 33), INT8_C( 107), INT8_C( 25), INT8_C( 16), -INT8_C( 114), INT8_C( 90), INT8_C( 90), -INT8_C( 82) },
INT32_C( 233),
{ INT16_C( 367), INT16_C( 22150), INT16_C( 173), INT16_C( 288), INT16_C( 418), INT16_C( 557), INT16_C( 347), -INT16_C( 30581),
INT16_C( 292), -INT16_C( 18037), -INT16_C( 26306), INT16_C( 396), INT16_C( 337), INT16_C( 398), INT16_C( 136), -INT16_C( 15629) } },
{ { -INT16_C( 999), -INT16_C( 18352), -INT16_C( 13162), -INT16_C( 31583), INT16_C( 24741), INT16_C( 6270), -INT16_C( 26994), INT16_C( 2809),
-INT16_C( 16633), -INT16_C( 6565), INT16_C( 29739), -INT16_C( 17929), INT16_C( 20942), -INT16_C( 18329), -INT16_C( 13170), -INT16_C( 22378) },
UINT16_C(59080),
{ INT8_C( 96), INT8_C( 95), -INT8_C( 77), INT8_C( 1), -INT8_C( 29), INT8_C( 88), INT8_C( 97), INT8_C( 97),
INT8_C( 112), -INT8_C( 17), -INT8_C( 9), INT8_C( 105), -INT8_C( 7), -INT8_C( 2), INT8_C( 41), INT8_C( 84),
-INT8_C( 27), INT8_C( 84), -INT8_C( 56), -INT8_C( 36), INT8_C( 13), -INT8_C( 106), INT8_C( 45), INT8_C( 116),
INT8_C( 78), -INT8_C( 69), INT8_C( 64), -INT8_C( 28), INT8_C( 99), INT8_C( 8), -INT8_C( 53), -INT8_C( 61) },
{ INT8_C( 103), INT8_C( 126), -INT8_C( 60), INT8_C( 74), -INT8_C( 42), INT8_C( 37), -INT8_C( 84), INT8_C( 70),
INT8_C( 20), -INT8_C( 93), -INT8_C( 80), INT8_C( 13), -INT8_C( 94), -INT8_C( 39), INT8_C( 97), -INT8_C( 121),
INT8_C( 45), INT8_C( 41), INT8_C( 99), INT8_C( 58), -INT8_C( 64), -INT8_C( 112), -INT8_C( 82), INT8_C( 14),
INT8_C( 75), -INT8_C( 18), -INT8_C( 13), -INT8_C( 81), -INT8_C( 10), -INT8_C( 66), INT8_C( 114), INT8_C( 94) },
INT32_C( 60),
{ -INT16_C( 999), -INT16_C( 18352), -INT16_C( 13162), INT16_C( 347), INT16_C( 24741), INT16_C( 6270), INT16_C( 375), INT16_C( 462),
-INT16_C( 16633), INT16_C( 371), INT16_C( 453), -INT16_C( 17929), INT16_C( 20942), INT16_C( 398), INT16_C( 413), INT16_C( 300) } },
{ { INT16_C( 21596), INT16_C( 29016), INT16_C( 2296), -INT16_C( 25986), -INT16_C( 7967), INT16_C( 3617), -INT16_C( 31735), -INT16_C( 14008),
-INT16_C( 2540), INT16_C( 24536), -INT16_C( 13340), -INT16_C( 9458), -INT16_C( 32375), -INT16_C( 15047), -INT16_C( 7752), INT16_C( 5335) },
UINT16_C(12086),
{ -INT8_C( 123), INT8_C( 46), INT8_C( 56), INT8_C( 4), -INT8_C( 56), INT8_C( 25), -INT8_C( 28), -INT8_C( 23),
INT8_C( 40), -INT8_C( 19), INT8_C( 109), INT8_C( 112), -INT8_C( 73), -INT8_C( 127), INT8_C( 103), -INT8_C( 113),
-INT8_C( 32), INT8_C( 75), INT8_C( 90), -INT8_C( 17), INT8_C( 38), -INT8_C( 29), INT8_C( 112), INT8_C( 95),
-INT8_C( 88), INT8_C( 40), INT8_C( 65), INT8_MAX, INT8_C( 60), INT8_C( 119), -INT8_C( 82), -INT8_C( 62) },
{ -INT8_C( 91), -INT8_C( 26), -INT8_C( 58), INT8_C( 109), INT8_C( 0), -INT8_C( 86), INT8_C( 86), INT8_C( 40),
-INT8_C( 105), -INT8_C( 61), -INT8_C( 104), INT8_C( 78), INT8_C( 68), -INT8_C( 1), -INT8_C( 35), INT8_C( 36),
INT8_C( 75), INT8_C( 55), INT8_C( 19), INT8_C( 113), INT8_C( 26), -INT8_C( 125), -INT8_C( 47), -INT8_C( 62),
-INT8_C( 85), INT8_C( 18), INT8_C( 65), -INT8_C( 24), -INT8_C( 119), -INT8_C( 16), -INT8_C( 86), INT8_C( 46) },
INT32_C( 214),
{ INT16_C( 21596), INT16_C( 194), INT16_C( 392), -INT16_C( 25986), INT16_C( 202), INT16_C( 394), -INT16_C( 31735), -INT16_C( 14008),
INT16_C( 142), INT16_C( 571), INT16_C( 154), INT16_C( 528), -INT16_C( 32375), INT16_C( 345), -INT16_C( 7752), INT16_C( 5335) } },
{ { -INT16_C( 3814), -INT16_C( 19970), -INT16_C( 26700), -INT16_C( 2048), -INT16_C( 8810), -INT16_C( 7908), INT16_C( 12309), INT16_C( 12115),
INT16_C( 9395), INT16_C( 24562), INT16_C( 13110), -INT16_C( 16569), -INT16_C( 3805), -INT16_C( 1299), -INT16_C( 30623), INT16_C( 31696) },
UINT16_C(53113),
{ INT8_C( 44), INT8_C( 45), INT8_C( 102), INT8_C( 44), INT8_C( 37), -INT8_C( 4), INT8_C( 10), INT8_C( 65),
-INT8_C( 34), INT8_C( 31), INT8_C( 113), INT8_C( 49), INT8_C( 78), INT8_C( 37), INT8_C( 85), INT8_C( 64),
-INT8_C( 124), -INT8_C( 117), INT8_C( 116), -INT8_C( 53), INT8_C( 74), -INT8_C( 105), -INT8_C( 68), INT8_C( 55),
-INT8_C( 111), INT8_C( 29), -INT8_C( 65), INT8_C( 98), -INT8_C( 104), INT8_C( 56), INT8_C( 49), -INT8_C( 60) },
{ INT8_C( 101), -INT8_C( 105), -INT8_C( 15), -INT8_C( 118), -INT8_C( 109), -INT8_C( 5), -INT8_C( 53), INT8_C( 113),
INT8_C( 26), INT8_C( 61), -INT8_C( 94), INT8_C( 104), INT8_C( 98), -INT8_C( 9), -INT8_C( 87), -INT8_C( 26),
-INT8_C( 126), INT8_C( 29), -INT8_C( 79), -INT8_C( 52), -INT8_C( 76), INT8_C( 109), INT8_C( 3), INT8_C( 70),
-INT8_C( 118), -INT8_C( 62), -INT8_C( 88), INT8_C( 34), -INT8_C( 6), -INT8_C( 39), -INT8_C( 26), INT8_C( 95) },
INT32_C( 112),
{ INT16_C( 396), -INT16_C( 19970), -INT16_C( 26700), INT16_C( 569), INT16_C( 577), INT16_C( 378), INT16_C( 533), INT16_C( 12115),
INT16_C( 174), INT16_C( 302), INT16_C( 240), INT16_C( 432), -INT16_C( 3805), -INT16_C( 1299), INT16_C( 335), INT16_C( 434) } },
{ { -INT16_C( 18990), -INT16_C( 5003), INT16_C( 6130), INT16_C( 21589), -INT16_C( 497), -INT16_C( 28358), -INT16_C( 5349), -INT16_C( 12450),
INT16_C( 24920), -INT16_C( 7659), -INT16_C( 17116), INT16_C( 7684), -INT16_C( 5482), INT16_C( 1662), INT16_C( 26562), -INT16_C( 27638) },
UINT16_C(32540),
{ -INT8_C( 127), INT8_C( 14), -INT8_C( 106), -INT8_C( 42), INT8_C( 98), -INT8_C( 91), -INT8_C( 44), -INT8_C( 100),
INT8_C( 55), -INT8_C( 17), -INT8_C( 121), -INT8_C( 107), -INT8_C( 66), -INT8_C( 33), -INT8_C( 10), -INT8_C( 44),
-INT8_C( 63), INT8_C( 26), -INT8_C( 111), -INT8_C( 59), INT8_C( 57), INT8_C( 40), -INT8_C( 80), -INT8_C( 73),
INT8_C( 46), INT8_C( 114), INT8_C( 30), INT8_C( 56), INT8_C( 6), INT8_C( 59), -INT8_C( 73), -INT8_C( 121) },
{ INT8_C( 73), INT8_C( 78), INT8_C( 93), -INT8_C( 84), -INT8_C( 13), INT8_C( 49), INT8_C( 72), INT8_C( 42),
INT8_C( 32), -INT8_C( 48), -INT8_C( 65), -INT8_C( 33), -INT8_C( 81), -INT8_C( 74), -INT8_C( 77), INT8_C( 113),
-INT8_C( 48), INT8_C( 68), INT8_C( 54), INT8_C( 9), INT8_C( 108), -INT8_C( 26), -INT8_C( 64), -INT8_C( 101),
INT8_C( 88), -INT8_C( 33), -INT8_C( 45), INT8_C( 95), INT8_C( 26), -INT8_C( 117), -INT8_C( 26), INT8_C( 99) },
INT32_C( 217),
{ -INT16_C( 18990), -INT16_C( 5003), INT16_C( 381), INT16_C( 228), INT16_C( 548), -INT16_C( 28358), -INT16_C( 5349), -INT16_C( 12450),
INT16_C( 378), INT16_C( 322), INT16_C( 378), INT16_C( 221), INT16_C( 439), INT16_C( 417), INT16_C( 443), -INT16_C( 27638) } },
{ { INT16_C( 22645), -INT16_C( 26889), -INT16_C( 18904), -INT16_C( 10379), INT16_C( 10348), INT16_C( 15688), INT16_C( 32620), -INT16_C( 9914),
INT16_C( 1893), -INT16_C( 16780), INT16_C( 18406), INT16_C( 29), INT16_C( 978), -INT16_C( 21661), INT16_C( 29511), -INT16_C( 17032) },
UINT16_C(28619),
{ INT8_C( 83), -INT8_C( 13), INT8_C( 37), -INT8_C( 56), -INT8_C( 54), -INT8_C( 110), -INT8_C( 16), INT8_C( 19),
-INT8_C( 49), INT8_C( 92), -INT8_C( 110), INT8_C( 21), INT8_C( 53), -INT8_C( 9), INT8_C( 28), -INT8_C( 87),
-INT8_C( 75), INT8_C( 2), -INT8_C( 15), -INT8_C( 46), INT8_C( 2), -INT8_C( 61), -INT8_C( 42), INT8_C( 102),
INT8_C( 111), INT8_C( 29), -INT8_C( 39), -INT8_C( 25), -INT8_C( 38), -INT8_C( 92), INT8_C( 86), INT8_C( 45) },
{ -INT8_C( 105), INT8_C( 123), -INT8_C( 11), INT8_C( 97), INT8_C( 13), -INT8_C( 27), INT8_C( 116), -INT8_C( 36),
INT8_C( 66), INT8_C( 6), -INT8_C( 14), INT8_C( 119), -INT8_C( 2), INT8_C( 14), INT8_C( 33), -INT8_C( 77),
INT8_C( 17), INT8_C( 18), -INT8_C( 122), INT8_C( 19), -INT8_C( 43), INT8_C( 92), INT8_C( 121), INT8_C( 68),
INT8_C( 121), INT8_C( 82), INT8_C( 43), INT8_C( 84), -INT8_C( 10), -INT8_C( 127), -INT8_C( 127), -INT8_C( 115) },
INT32_C( 253),
{ INT16_C( 183), INT16_C( 510), -INT16_C( 18904), INT16_C( 366), INT16_C( 10348), INT16_C( 15688), INT16_C( 469), INT16_C( 283),
INT16_C( 384), INT16_C( 417), INT16_C( 305), INT16_C( 229), INT16_C( 978), INT16_C( 209), INT16_C( 356), -INT16_C( 17032) } },
};
simde__m256i src, a, b, r;
src = simde_x_mm256_loadu_epi16(test_vec[0].src);
a = simde_x_mm256_loadu_epi8(test_vec[0].a);
b = simde_x_mm256_loadu_epi8(test_vec[0].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[0].k, a, b, INT32_C( 47));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[0].r));
src = simde_x_mm256_loadu_epi16(test_vec[1].src);
a = simde_x_mm256_loadu_epi8(test_vec[1].a);
b = simde_x_mm256_loadu_epi8(test_vec[1].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[1].k, a, b, INT32_C( 168));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[1].r));
src = simde_x_mm256_loadu_epi16(test_vec[2].src);
a = simde_x_mm256_loadu_epi8(test_vec[2].a);
b = simde_x_mm256_loadu_epi8(test_vec[2].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[2].k, a, b, INT32_C( 233));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[2].r));
src = simde_x_mm256_loadu_epi16(test_vec[3].src);
a = simde_x_mm256_loadu_epi8(test_vec[3].a);
b = simde_x_mm256_loadu_epi8(test_vec[3].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[3].k, a, b, INT32_C( 60));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[3].r));
src = simde_x_mm256_loadu_epi16(test_vec[4].src);
a = simde_x_mm256_loadu_epi8(test_vec[4].a);
b = simde_x_mm256_loadu_epi8(test_vec[4].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[4].k, a, b, INT32_C( 214));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[4].r));
src = simde_x_mm256_loadu_epi16(test_vec[5].src);
a = simde_x_mm256_loadu_epi8(test_vec[5].a);
b = simde_x_mm256_loadu_epi8(test_vec[5].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[5].k, a, b, INT32_C( 112));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[5].r));
src = simde_x_mm256_loadu_epi16(test_vec[6].src);
a = simde_x_mm256_loadu_epi8(test_vec[6].a);
b = simde_x_mm256_loadu_epi8(test_vec[6].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[6].k, a, b, INT32_C( 217));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[6].r));
src = simde_x_mm256_loadu_epi16(test_vec[7].src);
a = simde_x_mm256_loadu_epi8(test_vec[7].a);
b = simde_x_mm256_loadu_epi8(test_vec[7].b);
r = simde_mm256_mask_dbsad_epu8(src, test_vec[7].k, a, b, INT32_C( 253));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m256i src = simde_test_x86_random_i16x16();
simde__mmask16 k = simde_test_x86_random_mmask16();
simde__m256i a = simde_test_x86_random_i8x32();
simde__m256i b = simde_test_x86_random_i8x32();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m256i r;
SIMDE_CONSTIFY_256_(simde_mm256_mask_dbsad_epu8, r, simde_mm256_setzero_si256(), imm8, src, k, a, b);
simde_test_x86_write_i16x16(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x32(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm256_maskz_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const simde__mmask16 k;
const int8_t a[32];
const int8_t b[32];
const int imm8;
const int16_t r[16];
} test_vec[] = {
{ UINT16_C( 1344),
{ INT8_C( 45), INT8_C( 84), -INT8_C( 64), -INT8_C( 68), INT8_C( 64), -INT8_C( 34), -INT8_C( 125), INT8_C( 119),
-INT8_C( 95), -INT8_C( 36), INT8_C( 49), -INT8_C( 66), INT8_C( 41), -INT8_C( 78), INT8_C( 35), INT8_C( 68),
-INT8_C( 108), -INT8_C( 38), INT8_C( 18), -INT8_C( 16), -INT8_C( 20), INT8_C( 97), -INT8_C( 112), INT8_C( 67),
INT8_C( 88), INT8_C( 58), INT8_C( 61), INT8_C( 56), -INT8_C( 25), INT8_C( 125), INT8_C( 61), INT8_C( 20) },
{ -INT8_C( 46), -INT8_C( 2), -INT8_C( 48), INT8_C( 18), -INT8_C( 36), INT8_C( 83), -INT8_C( 119), INT8_C( 125),
INT8_C( 48), -INT8_C( 69), INT8_C( 59), INT8_C( 89), INT8_C( 109), INT8_C( 95), -INT8_C( 98), INT8_C( 1),
INT8_C( 57), -INT8_C( 80), -INT8_C( 15), INT8_C( 37), INT8_C( 17), -INT8_C( 127), INT8_C( 104), INT8_C( 105),
-INT8_C( 68), -INT8_C( 90), -INT8_C( 94), -INT8_C( 93), INT8_C( 35), -INT8_C( 33), -INT8_C( 73), -INT8_C( 11) },
INT32_C( 221),
{ INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 250), INT16_C( 0),
INT16_C( 441), INT16_C( 0), INT16_C( 405), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0) } },
{ UINT16_C(37338),
{ INT8_C( 54), INT8_C( 10), INT8_C( 76), INT8_C( 114), INT8_C( 100), -INT8_C( 71), -INT8_C( 47), INT8_C( 2),
-INT8_C( 70), INT8_C( 10), -INT8_C( 78), -INT8_C( 85), INT8_C( 47), -INT8_C( 61), INT8_C( 44), -INT8_C( 104),
INT8_C( 44), -INT8_C( 24), INT8_C( 62), -INT8_C( 50), -INT8_C( 117), INT8_C( 97), -INT8_C( 82), INT8_C( 66),
INT8_C( 87), -INT8_C( 117), -INT8_C( 55), INT8_C( 94), INT8_C( 69), -INT8_C( 92), -INT8_C( 17), INT8_C( 123) },
{ -INT8_C( 82), INT8_C( 59), -INT8_C( 19), INT8_C( 18), -INT8_C( 12), -INT8_C( 66), INT8_C( 20), -INT8_C( 82),
-INT8_C( 56), -INT8_C( 58), INT8_C( 89), -INT8_C( 8), -INT8_C( 119), -INT8_C( 122), -INT8_C( 112), -INT8_C( 74),
INT8_C( 110), -INT8_C( 50), -INT8_C( 124), -INT8_C( 6), INT8_C( 47), INT8_C( 50), INT8_C( 60), -INT8_C( 122),
-INT8_C( 66), INT8_C( 6), -INT8_C( 27), INT8_C( 3), -INT8_C( 86), -INT8_C( 44), INT8_C( 126), INT8_C( 88) },
INT32_C( 16),
{ INT16_C( 0), INT16_C( 350), INT16_C( 0), INT16_C( 478), INT16_C( 399), INT16_C( 0), INT16_C( 271), INT16_C( 248),
INT16_C( 206), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 310), INT16_C( 0), INT16_C( 0), INT16_C( 161) } },
{ UINT16_C(32554),
{ -INT8_C( 77), -INT8_C( 13), INT8_C( 70), INT8_C( 12), -INT8_C( 21), -INT8_C( 49), -INT8_C( 110), INT8_C( 123),
-INT8_C( 123), INT8_C( 1), INT8_C( 73), INT8_C( 10), -INT8_C( 5), INT8_C( 120), INT8_C( 60), INT8_C( 55),
-INT8_C( 1), -INT8_C( 6), INT8_C( 61), -INT8_C( 28), -INT8_C( 3), -INT8_C( 25), -INT8_C( 72), INT8_C( 124),
INT8_C( 64), -INT8_C( 56), -INT8_C( 24), -INT8_C( 85), -INT8_C( 51), INT8_C( 18), INT8_C( 42), INT8_MIN },
{ INT8_C( 5), INT8_C( 112), -INT8_C( 116), -INT8_C( 16), INT8_C( 64), INT8_C( 31), INT8_C( 107), -INT8_C( 59),
INT8_C( 32), -INT8_C( 76), -INT8_C( 49), INT8_C( 27), INT8_C( 45), INT8_C( 12), INT8_C( 82), INT8_C( 44),
INT8_C( 6), -INT8_C( 112), INT8_C( 16), INT8_C( 4), INT8_C( 119), -INT8_C( 56), INT8_MIN, -INT8_C( 73),
-INT8_C( 111), INT8_C( 104), INT8_C( 98), INT8_C( 94), INT8_C( 122), -INT8_C( 115), -INT8_C( 34), INT8_MIN },
INT32_C( 253),
{ INT16_C( 0), INT16_C( 444), INT16_C( 0), INT16_C( 375), INT16_C( 0), INT16_C( 266), INT16_C( 0), INT16_C( 0),
INT16_C( 298), INT16_C( 405), INT16_C( 252), INT16_C( 320), INT16_C( 170), INT16_C( 252), INT16_C( 220), INT16_C( 0) } },
{ UINT16_C(56457),
{ INT8_C( 3), -INT8_C( 87), -INT8_C( 112), -INT8_C( 46), -INT8_C( 60), -INT8_C( 67), -INT8_C( 34), INT8_C( 23),
-INT8_C( 23), -INT8_C( 27), -INT8_C( 89), -INT8_C( 7), -INT8_C( 23), INT8_C( 30), -INT8_C( 62), INT8_C( 105),
-INT8_C( 42), INT8_C( 83), -INT8_C( 47), INT8_C( 56), -INT8_C( 79), INT8_C( 75), -INT8_C( 59), -INT8_C( 113),
-INT8_C( 53), -INT8_C( 61), -INT8_C( 7), INT8_C( 60), INT8_C( 0), -INT8_C( 125), INT8_C( 24), INT8_C( 3) },
{ INT8_C( 44), -INT8_C( 88), -INT8_C( 42), -INT8_C( 15), INT8_C( 102), -INT8_C( 76), INT8_C( 8), INT8_C( 79),
-INT8_C( 103), -INT8_C( 81), INT8_C( 73), -INT8_C( 126), -INT8_C( 51), INT8_C( 11), -INT8_C( 21), -INT8_C( 93),
INT8_C( 94), -INT8_C( 68), -INT8_C( 36), INT8_C( 15), INT8_C( 8), -INT8_C( 95), -INT8_C( 98), -INT8_C( 45),
INT8_C( 100), -INT8_C( 105), INT8_C( 15), INT8_C( 101), INT8_C( 26), INT8_C( 39), INT8_C( 104), INT8_C( 71) },
INT32_C( 208),
{ INT16_C( 143), INT16_C( 0), INT16_C( 0), INT16_C( 435), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 642),
INT16_C( 0), INT16_C( 0), INT16_C( 251), INT16_C( 267), INT16_C( 471), INT16_C( 0), INT16_C( 276), INT16_C( 432) } },
{ UINT16_C(16627),
{ -INT8_C( 123), -INT8_C( 116), -INT8_C( 17), -INT8_C( 50), INT8_C( 15), -INT8_C( 68), -INT8_C( 39), -INT8_C( 6),
INT8_C( 96), INT8_C( 55), -INT8_C( 73), INT8_C( 60), INT8_C( 70), -INT8_C( 65), -INT8_C( 35), -INT8_C( 28),
-INT8_C( 110), INT8_C( 66), INT8_C( 124), -INT8_C( 94), -INT8_C( 89), -INT8_C( 106), -INT8_C( 55), INT8_C( 15),
-INT8_C( 35), -INT8_C( 103), INT8_C( 78), INT8_C( 21), -INT8_C( 49), INT8_C( 65), INT8_C( 85), INT8_C( 85) },
{ -INT8_C( 51), INT8_C( 68), INT8_C( 35), -INT8_C( 36), INT8_C( 1), -INT8_C( 3), -INT8_C( 41), INT8_C( 97),
INT8_C( 52), -INT8_C( 114), -INT8_C( 99), INT8_C( 123), INT8_C( 77), INT8_C( 122), INT8_C( 95), -INT8_C( 33),
-INT8_C( 68), -INT8_C( 37), -INT8_C( 127), INT8_C( 99), INT8_C( 114), INT8_C( 75), INT8_C( 115), INT8_C( 79),
-INT8_C( 28), -INT8_C( 63), INT8_C( 101), -INT8_C( 76), INT8_C( 2), -INT8_C( 70), INT8_C( 9), -INT8_C( 49) },
INT32_C( 255),
{ INT16_C( 235), INT16_C( 201), INT16_C( 0), INT16_C( 0), INT16_C( 337), INT16_C( 123), INT16_C( 307), INT16_C( 499),
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 524), INT16_C( 0) } },
{ UINT16_C(33577),
{ INT8_C( 97), INT8_C( 94), INT8_C( 17), -INT8_C( 2), -INT8_C( 39), INT8_C( 94), INT8_C( 120), INT8_C( 56),
INT8_C( 61), INT8_C( 53), INT8_C( 20), -INT8_C( 65), -INT8_C( 104), -INT8_C( 122), INT8_C( 10), INT8_C( 11),
-INT8_C( 43), -INT8_C( 18), -INT8_C( 52), INT8_C( 58), -INT8_C( 94), -INT8_C( 50), -INT8_C( 11), -INT8_C( 85),
-INT8_C( 98), -INT8_C( 12), -INT8_C( 40), INT8_C( 74), -INT8_C( 12), INT8_C( 1), -INT8_C( 51), INT8_C( 85) },
{ INT8_C( 95), -INT8_C( 34), INT8_C( 83), INT8_C( 56), INT8_C( 60), -INT8_C( 53), INT8_C( 113), INT8_C( 121),
INT8_C( 0), -INT8_C( 123), INT8_C( 56), -INT8_C( 103), INT8_C( 11), INT8_C( 66), -INT8_C( 92), -INT8_C( 32),
INT8_C( 49), INT8_C( 113), INT8_C( 27), -INT8_C( 45), INT8_C( 63), INT8_C( 16), INT8_MAX, -INT8_C( 35),
INT8_C( 4), INT8_C( 87), INT8_C( 39), -INT8_C( 8), INT8_C( 88), -INT8_C( 12), INT8_C( 77), -INT8_C( 72) },
INT32_C( 210),
{ INT16_C( 276), INT16_C( 0), INT16_C( 0), INT16_C( 194), INT16_C( 0), INT16_C( 483), INT16_C( 0), INT16_C( 0),
INT16_C( 715), INT16_C( 378), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 157) } },
{ UINT16_C(24939),
{ -INT8_C( 120), INT8_C( 108), -INT8_C( 26), -INT8_C( 64), INT8_C( 5), -INT8_C( 15), INT8_C( 3), -INT8_C( 87),
-INT8_C( 46), INT8_C( 52), INT8_C( 26), -INT8_C( 19), INT8_C( 7), INT8_C( 90), -INT8_C( 3), -INT8_C( 122),
INT8_C( 55), INT8_C( 1), -INT8_C( 35), INT8_C( 95), -INT8_C( 7), INT8_C( 54), INT8_C( 83), INT8_C( 70),
-INT8_C( 18), INT8_C( 38), -INT8_C( 26), -INT8_C( 34), INT8_C( 52), INT8_C( 81), INT8_C( 64), -INT8_C( 68) },
{ -INT8_C( 67), INT8_C( 38), INT8_C( 125), -INT8_C( 62), INT8_C( 24), INT8_MIN, INT8_C( 108), -INT8_C( 22),
-INT8_C( 76), -INT8_C( 122), -INT8_C( 41), -INT8_C( 69), -INT8_C( 32), -INT8_C( 44), INT8_C( 66), INT8_C( 24),
-INT8_C( 43), INT8_C( 31), INT8_C( 119), -INT8_C( 50), INT8_C( 85), -INT8_C( 54), INT8_C( 20), INT8_C( 67),
-INT8_C( 16), -INT8_C( 6), INT8_C( 34), INT8_C( 37), INT8_C( 75), INT8_C( 98), -INT8_C( 31), INT8_C( 9) },
INT32_C( 136),
{ INT16_C( 230), INT16_C( 163), INT16_C( 0), INT16_C( 427), INT16_C( 0), INT16_C( 470), INT16_C( 295), INT16_C( 0),
INT16_C( 401), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 330), INT16_C( 430), INT16_C( 0) } },
{ UINT16_C(14302),
{ -INT8_C( 118), -INT8_C( 110), -INT8_C( 66), INT8_C( 97), INT8_C( 78), -INT8_C( 98), INT8_C( 53), -INT8_C( 112),
-INT8_C( 74), INT8_C( 10), -INT8_C( 81), INT8_C( 45), -INT8_C( 40), INT8_C( 5), -INT8_C( 8), -INT8_C( 20),
INT8_C( 72), -INT8_C( 24), -INT8_C( 26), INT8_C( 106), INT8_C( 13), INT8_C( 50), -INT8_C( 52), -INT8_C( 17),
INT8_C( 59), INT8_C( 85), INT8_C( 77), INT8_C( 6), -INT8_C( 11), INT8_C( 44), INT8_C( 62), INT8_MIN },
{ -INT8_C( 66), -INT8_C( 4), -INT8_C( 31), INT8_C( 12), -INT8_C( 102), INT8_C( 23), -INT8_C( 100), INT8_C( 81),
INT8_C( 33), INT8_C( 76), INT8_C( 126), -INT8_C( 6), INT8_C( 81), INT8_C( 118), -INT8_C( 26), -INT8_C( 103),
INT8_C( 95), -INT8_C( 51), INT8_C( 4), INT8_C( 108), -INT8_C( 1), -INT8_C( 48), INT8_C( 91), INT8_C( 58),
INT8_C( 37), -INT8_C( 87), INT8_C( 64), INT8_C( 27), -INT8_C( 43), INT8_C( 126), -INT8_C( 101), -INT8_C( 109) },
INT32_C( 122),
{ INT16_C( 0), INT16_C( 206), INT16_C( 228), INT16_C( 338), INT16_C( 372), INT16_C( 0), INT16_C( 469), INT16_C( 517),
INT16_C( 343), INT16_C( 537), INT16_C( 311), INT16_C( 0), INT16_C( 414), INT16_C( 456), INT16_C( 0), INT16_C( 0) } },
};
simde__m256i a, b, r;
a = simde_x_mm256_loadu_epi8(test_vec[0].a);
b = simde_x_mm256_loadu_epi8(test_vec[0].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[0].k, a, b, INT32_C( 221));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[0].r));
a = simde_x_mm256_loadu_epi8(test_vec[1].a);
b = simde_x_mm256_loadu_epi8(test_vec[1].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[1].k, a, b, INT32_C( 16));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[1].r));
a = simde_x_mm256_loadu_epi8(test_vec[2].a);
b = simde_x_mm256_loadu_epi8(test_vec[2].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[2].k, a, b, INT32_C( 253));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[2].r));
a = simde_x_mm256_loadu_epi8(test_vec[3].a);
b = simde_x_mm256_loadu_epi8(test_vec[3].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[3].k, a, b, INT32_C( 208));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[3].r));
a = simde_x_mm256_loadu_epi8(test_vec[4].a);
b = simde_x_mm256_loadu_epi8(test_vec[4].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[4].k, a, b, INT32_C( 255));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[4].r));
a = simde_x_mm256_loadu_epi8(test_vec[5].a);
b = simde_x_mm256_loadu_epi8(test_vec[5].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[5].k, a, b, INT32_C( 210));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[5].r));
a = simde_x_mm256_loadu_epi8(test_vec[6].a);
b = simde_x_mm256_loadu_epi8(test_vec[6].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[6].k, a, b, INT32_C( 136));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[6].r));
a = simde_x_mm256_loadu_epi8(test_vec[7].a);
b = simde_x_mm256_loadu_epi8(test_vec[7].b);
r = simde_mm256_maskz_dbsad_epu8(test_vec[7].k, a, b, INT32_C( 122));
simde_test_x86_assert_equal_i16x16(r, simde_x_mm256_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__mmask16 k = simde_test_x86_random_mmask16();
simde__m256i a = simde_test_x86_random_i8x32();
simde__m256i b = simde_test_x86_random_i8x32();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m256i r;
SIMDE_CONSTIFY_256_(simde_mm256_maskz_dbsad_epu8, r, simde_mm256_setzero_si256(), imm8, k, a, b);
simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i8x32(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x32(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int8_t a[64];
const int8_t b[64];
const int imm8;
const int16_t r[32];
} test_vec[] = {
{ { -INT8_C( 26), -INT8_C( 57), -INT8_C( 18), INT8_C( 50), INT8_C( 86), -INT8_C( 19), -INT8_C( 97), -INT8_C( 10),
INT8_C( 75), -INT8_C( 104), -INT8_C( 5), -INT8_C( 114), INT8_C( 123), INT8_C( 106), -INT8_C( 1), -INT8_C( 49),
INT8_C( 24), INT8_C( 81), INT8_C( 122), -INT8_C( 107), -INT8_C( 11), INT8_C( 36), INT8_C( 92), -INT8_C( 7),
INT8_C( 31), INT8_C( 111), INT8_C( 115), INT8_C( 94), -INT8_C( 4), -INT8_C( 100), INT8_C( 121), -INT8_C( 30),
INT8_C( 99), INT8_C( 103), INT8_C( 21), -INT8_C( 71), INT8_C( 85), -INT8_C( 76), -INT8_C( 80), -INT8_C( 96),
INT8_C( 77), -INT8_C( 85), INT8_C( 46), -INT8_C( 56), INT8_C( 21), INT8_C( 45), -INT8_C( 105), INT8_C( 45),
INT8_C( 126), INT8_C( 17), -INT8_C( 61), INT8_C( 116), INT8_C( 53), INT8_C( 31), INT8_C( 109), INT8_C( 84),
-INT8_C( 114), -INT8_C( 31), -INT8_C( 78), -INT8_C( 118), INT8_C( 125), INT8_C( 43), INT8_C( 109), -INT8_C( 31) },
{ -INT8_C( 109), -INT8_C( 126), -INT8_C( 102), -INT8_C( 24), INT8_C( 54), INT8_C( 74), -INT8_C( 120), -INT8_C( 125),
-INT8_C( 11), -INT8_C( 73), INT8_C( 75), INT8_C( 10), -INT8_C( 28), -INT8_C( 30), INT8_C( 56), INT8_C( 99),
-INT8_C( 13), -INT8_C( 5), -INT8_C( 41), INT8_C( 40), INT8_C( 26), INT8_C( 68), INT8_C( 124), -INT8_C( 88),
INT8_C( 37), INT8_C( 46), INT8_C( 50), -INT8_C( 93), INT8_C( 90), -INT8_C( 97), -INT8_C( 124), -INT8_C( 19),
INT8_C( 33), INT8_C( 30), -INT8_C( 43), INT8_C( 88), INT8_C( 105), INT8_C( 93), -INT8_C( 37), INT8_C( 94),
INT8_C( 20), INT8_C( 39), INT8_C( 105), -INT8_C( 7), INT8_C( 9), -INT8_C( 95), INT8_C( 92), -INT8_C( 3),
-INT8_C( 100), INT8_C( 51), INT8_C( 37), -INT8_C( 74), INT8_C( 119), -INT8_C( 94), INT8_C( 94), -INT8_C( 99),
-INT8_C( 48), -INT8_C( 112), INT8_C( 64), INT8_C( 42), INT8_C( 48), -INT8_C( 60), INT8_C( 23), INT8_C( 81) },
INT32_C( 226),
{ INT16_C( 234), INT16_C( 496), INT16_C( 366), INT16_C( 287), INT16_C( 509), INT16_C( 512), INT16_C( 190), INT16_C( 415),
INT16_C( 134), INT16_C( 188), INT16_C( 475), INT16_C( 482), INT16_C( 205), INT16_C( 128), INT16_C( 307), INT16_C( 287),
INT16_C( 291), INT16_C( 442), INT16_C( 362), INT16_C( 510), INT16_C( 297), INT16_C( 498), INT16_C( 546), INT16_C( 321),
INT16_C( 414), INT16_C( 258), INT16_C( 102), INT16_C( 241), INT16_C( 357), INT16_C( 389), INT16_C( 152), INT16_C( 377) } },
{ { INT8_C( 74), -INT8_C( 123), -INT8_C( 86), INT8_C( 94), -INT8_C( 84), INT8_C( 19), INT8_C( 87), -INT8_C( 75),
-INT8_C( 76), -INT8_C( 77), -INT8_C( 78), INT8_C( 80), -INT8_C( 26), -INT8_C( 40), INT8_C( 6), INT8_C( 94),
INT8_C( 122), INT8_C( 100), -INT8_C( 5), INT8_C( 74), -INT8_C( 12), INT8_C( 59), INT8_C( 117), INT8_C( 36),
-INT8_C( 1), -INT8_C( 116), INT8_C( 118), -INT8_C( 31), INT8_C( 121), INT8_C( 31), INT8_C( 45), -INT8_C( 61),
-INT8_C( 92), -INT8_C( 41), INT8_C( 33), INT8_C( 80), -INT8_C( 22), INT8_C( 121), INT8_C( 6), -INT8_C( 98),
INT8_C( 44), -INT8_C( 72), -INT8_C( 18), INT8_C( 19), -INT8_C( 112), -INT8_C( 12), INT8_C( 113), INT8_C( 10),
INT8_C( 88), INT8_C( 108), INT8_C( 85), INT8_C( 76), -INT8_C( 89), -INT8_C( 54), INT8_C( 113), -INT8_C( 90),
INT8_C( 86), -INT8_C( 25), -INT8_C( 121), -INT8_C( 49), INT8_C( 6), -INT8_C( 76), -INT8_C( 110), -INT8_C( 85) },
{ -INT8_C( 117), -INT8_C( 76), -INT8_C( 5), INT8_C( 117), INT8_C( 45), INT8_C( 1), INT8_C( 19), INT8_C( 89),
-INT8_C( 70), INT8_C( 1), INT8_C( 108), INT8_C( 74), -INT8_C( 11), -INT8_C( 35), INT8_C( 85), INT8_C( 77),
INT8_C( 73), -INT8_C( 86), -INT8_C( 102), -INT8_C( 16), INT8_C( 116), INT8_C( 11), -INT8_C( 106), -INT8_C( 54),
-INT8_C( 14), INT8_C( 30), -INT8_C( 102), -INT8_C( 8), -INT8_C( 46), INT8_C( 44), -INT8_C( 93), INT8_C( 94),
-INT8_C( 32), -INT8_C( 97), -INT8_C( 45), INT8_C( 13), -INT8_C( 96), -INT8_C( 25), INT8_C( 103), INT8_C( 90),
-INT8_C( 24), -INT8_C( 45), -INT8_C( 91), -INT8_C( 34), -INT8_C( 79), -INT8_C( 6), INT8_C( 43), -INT8_C( 6),
-INT8_C( 92), -INT8_C( 59), -INT8_C( 21), INT8_C( 24), -INT8_C( 48), -INT8_C( 127), -INT8_C( 30), -INT8_C( 62),
-INT8_C( 97), INT8_C( 124), -INT8_C( 69), INT8_C( 114), -INT8_C( 87), INT8_C( 94), -INT8_C( 48), -INT8_C( 119) },
INT32_C( 253),
{ INT16_C( 317), INT16_C( 419), INT16_C( 421), INT16_C( 539), INT16_C( 203), INT16_C( 401), INT16_C( 650), INT16_C( 406),
INT16_C( 324), INT16_C( 346), INT16_C( 338), INT16_C( 393), INT16_C( 317), INT16_C( 273), INT16_C( 421), INT16_C( 239),
INT16_C( 100), INT16_C( 333), INT16_C( 425), INT16_C( 559), INT16_C( 625), INT16_C( 517), INT16_C( 411), INT16_C( 343),
INT16_C( 400), INT16_C( 361), INT16_C( 195), INT16_C( 121), INT16_C( 363), INT16_C( 71), INT16_C( 345), INT16_C( 231) } },
{ { -INT8_C( 118), -INT8_C( 2), -INT8_C( 8), INT8_C( 115), -INT8_C( 47), -INT8_C( 99), INT8_C( 81), -INT8_C( 126),
-INT8_C( 105), INT8_C( 124), INT8_C( 125), INT8_C( 59), INT8_C( 66), INT8_C( 104), INT8_C( 83), INT8_C( 18),
-INT8_C( 23), INT8_C( 54), -INT8_C( 43), -INT8_C( 119), -INT8_C( 78), -INT8_C( 112), -INT8_C( 5), INT8_C( 91),
-INT8_C( 18), -INT8_C( 53), -INT8_C( 27), -INT8_C( 20), INT8_C( 110), INT8_C( 124), -INT8_C( 118), -INT8_C( 7),
INT8_C( 122), -INT8_C( 126), INT8_C( 108), INT8_C( 75), INT8_C( 32), -INT8_C( 67), -INT8_C( 50), -INT8_C( 73),
INT8_C( 57), INT8_C( 75), -INT8_C( 13), INT8_C( 123), -INT8_C( 77), INT8_C( 70), -INT8_C( 114), -INT8_C( 100),
INT8_C( 124), INT8_C( 99), INT8_C( 37), INT8_C( 47), -INT8_C( 13), INT8_C( 32), -INT8_C( 118), -INT8_C( 31),
-INT8_C( 21), INT8_C( 111), -INT8_C( 51), INT8_C( 90), -INT8_C( 21), INT8_C( 87), INT8_C( 83), INT8_C( 101) },
{ -INT8_C( 38), -INT8_C( 65), -INT8_C( 79), -INT8_C( 6), INT8_C( 124), INT8_MAX, -INT8_C( 79), -INT8_C( 75),
-INT8_C( 54), -INT8_C( 92), INT8_C( 49), INT8_C( 125), -INT8_C( 21), -INT8_C( 65), INT8_C( 25), INT8_C( 103),
INT8_C( 34), INT8_C( 63), -INT8_C( 106), INT8_C( 21), INT8_C( 95), INT8_C( 33), -INT8_C( 10), INT8_C( 75),
-INT8_C( 112), -INT8_C( 60), -INT8_C( 91), INT8_C( 124), INT8_C( 27), -INT8_C( 8), -INT8_C( 31), -INT8_C( 11),
-INT8_C( 73), -INT8_C( 110), -INT8_C( 17), INT8_C( 51), INT8_C( 17), -INT8_C( 95), -INT8_C( 24), -INT8_C( 37),
INT8_C( 69), INT8_C( 25), INT8_C( 88), INT8_C( 48), -INT8_C( 40), INT8_C( 114), -INT8_C( 104), -INT8_C( 6),
-INT8_C( 79), INT8_C( 46), INT8_C( 15), INT8_C( 16), INT8_C( 79), INT8_C( 6), INT8_C( 91), -INT8_C( 32),
-INT8_C( 54), INT8_C( 0), INT8_C( 92), -INT8_C( 27), -INT8_C( 8), INT8_C( 61), -INT8_C( 37), -INT8_C( 81) },
INT32_C( 208),
{ INT16_C( 349), INT16_C( 235), INT16_C( 323), INT16_C( 259), INT16_C( 204), INT16_C( 309), INT16_C( 513), INT16_C( 361),
INT16_C( 387), INT16_C( 561), INT16_C( 396), INT16_C( 514), INT16_C( 491), INT16_C( 611), INT16_C( 297), INT16_C( 266),
INT16_C( 232), INT16_C( 298), INT16_C( 405), INT16_C( 141), INT16_C( 233), INT16_C( 378), INT16_C( 318), INT16_C( 218),
INT16_C( 159), INT16_C( 313), INT16_C( 462), INT16_C( 674), INT16_C( 509), INT16_C( 426), INT16_C( 486), INT16_C( 312) } },
{ { INT8_C( 107), -INT8_C( 53), -INT8_C( 67), -INT8_C( 79), -INT8_C( 28), INT8_C( 21), -INT8_C( 31), -INT8_C( 67),
-INT8_C( 121), INT8_C( 121), -INT8_C( 73), INT8_C( 56), -INT8_C( 88), -INT8_C( 57), INT8_C( 73), -INT8_C( 9),
-INT8_C( 51), -INT8_C( 92), -INT8_C( 41), -INT8_C( 105), -INT8_C( 91), INT8_C( 51), INT8_C( 124), -INT8_C( 99),
INT8_C( 113), INT8_C( 87), INT8_C( 77), INT8_C( 65), INT8_C( 34), INT8_C( 47), INT8_C( 34), -INT8_C( 115),
-INT8_C( 6), -INT8_C( 33), INT8_C( 62), -INT8_C( 33), -INT8_C( 11), INT8_C( 32), -INT8_C( 100), INT8_C( 124),
-INT8_C( 103), INT8_C( 83), -INT8_C( 75), INT8_C( 65), INT8_C( 26), -INT8_C( 2), INT8_C( 57), -INT8_C( 25),
-INT8_C( 94), INT8_C( 16), INT8_C( 126), INT8_C( 71), INT8_C( 68), -INT8_C( 5), -INT8_C( 27), -INT8_C( 75),
INT8_C( 82), INT8_C( 50), -INT8_C( 10), INT8_C( 116), INT8_C( 97), INT8_C( 24), INT8_C( 2), INT8_C( 92) },
{ -INT8_C( 8), INT8_C( 64), INT8_C( 59), -INT8_C( 19), INT8_C( 96), -INT8_C( 41), INT8_C( 105), -INT8_C( 6),
INT8_C( 42), INT8_C( 30), INT8_C( 59), INT8_C( 69), INT8_C( 28), INT8_C( 116), INT8_C( 44), -INT8_C( 65),
-INT8_C( 123), -INT8_C( 85), INT8_C( 6), -INT8_C( 55), -INT8_C( 90), -INT8_C( 21), INT8_C( 126), -INT8_C( 8),
INT8_C( 29), INT8_C( 116), INT8_C( 109), INT8_MAX, -INT8_C( 116), INT8_C( 111), -INT8_C( 37), -INT8_C( 124),
-INT8_C( 81), INT8_C( 22), INT8_C( 113), INT8_C( 16), -INT8_C( 19), -INT8_C( 37), INT8_C( 10), INT8_C( 23),
-INT8_C( 7), INT8_C( 69), INT8_C( 92), INT8_C( 22), -INT8_C( 70), -INT8_C( 119), -INT8_C( 43), INT8_C( 63),
INT8_C( 52), -INT8_C( 37), INT8_C( 8), -INT8_C( 38), -INT8_C( 57), -INT8_C( 122), -INT8_C( 46), -INT8_C( 28),
-INT8_C( 6), INT8_C( 63), INT8_C( 99), -INT8_C( 122), -INT8_C( 82), INT8_C( 62), INT8_C( 11), INT8_C( 94) },
INT32_C( 84),
{ INT16_C( 470), INT16_C( 316), INT16_C( 540), INT16_C( 178), INT16_C( 405), INT16_C( 203), INT16_C( 169), INT16_C( 469),
INT16_C( 338), INT16_C( 221), INT16_C( 429), INT16_C( 293), INT16_C( 433), INT16_C( 433), INT16_C( 519), INT16_C( 549),
INT16_C( 534), INT16_C( 398), INT16_C( 324), INT16_C( 611), INT16_C( 433), INT16_C( 469), INT16_C( 439), INT16_C( 403),
INT16_C( 578), INT16_C( 285), INT16_C( 170), INT16_C( 326), INT16_C( 349), INT16_C( 313), INT16_C( 556), INT16_C( 556) } },
{ { INT8_C( 87), INT8_C( 120), INT8_C( 89), INT8_C( 81), -INT8_C( 67), -INT8_C( 75), INT8_C( 103), INT8_C( 119),
INT8_C( 62), INT8_C( 60), -INT8_C( 74), INT8_C( 114), INT8_C( 23), -INT8_C( 66), INT8_C( 76), -INT8_C( 34),
INT8_C( 68), INT8_C( 31), -INT8_C( 61), INT8_C( 62), INT8_C( 94), INT8_C( 38), -INT8_C( 59), INT8_C( 13),
INT8_C( 101), -INT8_C( 48), INT8_C( 107), -INT8_C( 71), INT8_C( 76), -INT8_C( 39), -INT8_C( 5), -INT8_C( 92),
INT8_C( 81), INT8_C( 84), -INT8_C( 11), INT8_C( 14), INT8_C( 9), INT8_C( 92), -INT8_C( 122), INT8_C( 72),
-INT8_C( 104), INT8_C( 60), -INT8_C( 70), -INT8_C( 81), -INT8_C( 5), INT8_C( 7), -INT8_C( 114), INT8_C( 63),
INT8_C( 38), INT8_C( 81), INT8_C( 126), -INT8_C( 124), INT8_C( 119), INT8_C( 67), -INT8_C( 111), -INT8_C( 36),
INT8_C( 19), -INT8_C( 4), -INT8_C( 106), INT8_C( 95), -INT8_C( 43), -INT8_C( 111), INT8_C( 3), INT8_C( 38) },
{ -INT8_C( 27), -INT8_C( 8), INT8_C( 53), -INT8_C( 18), INT8_C( 84), -INT8_C( 69), INT8_C( 54), -INT8_C( 20),
-INT8_C( 9), -INT8_C( 15), -INT8_C( 100), -INT8_C( 14), -INT8_C( 8), INT8_C( 42), INT8_C( 50), INT8_C( 30),
INT8_C( 123), -INT8_C( 80), -INT8_C( 94), -INT8_C( 14), -INT8_C( 13), INT8_C( 52), -INT8_C( 49), INT8_C( 6),
INT8_C( 48), INT8_C( 101), INT8_C( 101), INT8_C( 6), -INT8_C( 10), INT8_C( 105), INT8_C( 44), -INT8_C( 37),
INT8_C( 97), INT8_C( 97), -INT8_C( 55), -INT8_C( 74), INT8_C( 28), INT8_C( 0), -INT8_C( 94), INT8_C( 20),
-INT8_C( 15), INT8_C( 62), INT8_C( 6), -INT8_C( 23), INT8_C( 104), INT8_C( 56), INT8_C( 7), -INT8_C( 29),
-INT8_C( 24), -INT8_C( 87), -INT8_C( 42), -INT8_C( 37), -INT8_C( 35), -INT8_C( 91), -INT8_C( 31), INT8_C( 14),
INT8_C( 10), INT8_C( 71), INT8_C( 20), INT8_C( 0), -INT8_C( 80), INT8_C( 64), -INT8_C( 37), INT8_C( 17) },
INT32_C( 162),
{ INT16_C( 509), INT16_C( 491), INT16_C( 349), INT16_C( 312), INT16_C( 520), INT16_C( 468), INT16_C( 375), INT16_C( 507),
INT16_C( 240), INT16_C( 353), INT16_C( 276), INT16_C( 343), INT16_C( 345), INT16_C( 345), INT16_C( 502), INT16_C( 452),
INT16_C( 640), INT16_C( 192), INT16_C( 206), INT16_C( 395), INT16_C( 329), INT16_C( 257), INT16_C( 571), INT16_C( 389),
INT16_C( 276), INT16_C( 320), INT16_C( 304), INT16_C( 314), INT16_C( 415), INT16_C( 519), INT16_C( 378), INT16_C( 434) } },
{ { -INT8_C( 92), INT8_C( 106), -INT8_C( 46), -INT8_C( 107), -INT8_C( 88), -INT8_C( 39), INT8_C( 126), INT8_C( 17),
INT8_C( 17), -INT8_C( 123), -INT8_C( 12), -INT8_C( 6), INT8_C( 47), -INT8_C( 54), -INT8_C( 43), INT8_C( 12),
INT8_C( 111), -INT8_C( 73), INT8_C( 26), INT8_C( 121), -INT8_C( 2), INT8_C( 46), INT8_C( 121), -INT8_C( 82),
INT8_C( 111), INT8_C( 84), -INT8_C( 65), INT8_C( 17), -INT8_C( 7), -INT8_C( 121), -INT8_C( 49), -INT8_C( 99),
-INT8_C( 15), -INT8_C( 94), INT8_C( 51), -INT8_C( 103), INT8_C( 123), -INT8_C( 79), -INT8_C( 86), -INT8_C( 116),
INT8_C( 55), -INT8_C( 97), -INT8_C( 122), INT8_C( 102), INT8_C( 105), INT8_C( 92), INT8_C( 114), -INT8_C( 39),
INT8_C( 19), -INT8_C( 115), INT8_C( 82), INT8_C( 17), -INT8_C( 69), -INT8_C( 52), -INT8_C( 65), INT8_C( 42),
INT8_C( 32), INT8_C( 126), INT8_C( 59), INT8_C( 25), INT8_C( 5), INT8_C( 11), -INT8_C( 73), -INT8_C( 10) },
{ -INT8_C( 83), -INT8_C( 22), -INT8_C( 112), INT8_C( 40), -INT8_C( 101), INT8_C( 58), -INT8_C( 76), -INT8_C( 46),
-INT8_C( 39), INT8_C( 59), INT8_C( 56), INT8_C( 67), -INT8_C( 105), -INT8_C( 85), INT8_C( 28), -INT8_C( 86),
INT8_C( 56), INT8_C( 110), -INT8_C( 69), -INT8_C( 13), INT8_C( 58), INT8_C( 122), INT8_C( 30), INT8_C( 91),
-INT8_C( 8), INT8_C( 89), INT8_C( 116), -INT8_C( 2), INT8_C( 100), INT8_C( 43), -INT8_C( 12), INT8_C( 17),
INT8_C( 21), -INT8_C( 124), INT8_C( 57), -INT8_C( 79), -INT8_C( 65), -INT8_C( 18), -INT8_C( 125), -INT8_C( 104),
INT8_C( 41), -INT8_C( 68), -INT8_C( 37), -INT8_C( 64), INT8_C( 103), -INT8_C( 9), INT8_C( 106), -INT8_C( 97),
INT8_C( 102), INT8_C( 37), -INT8_C( 110), -INT8_C( 96), -INT8_C( 97), -INT8_C( 80), -INT8_C( 5), -INT8_C( 105),
INT8_C( 10), INT8_C( 112), -INT8_C( 107), INT8_C( 110), -INT8_C( 101), -INT8_C( 118), INT8_MIN, -INT8_C( 79) },
INT32_C( 14),
{ INT16_C( 336), INT16_C( 300), INT16_C( 441), INT16_C( 223), INT16_C( 567), INT16_C( 509), INT16_C( 521), INT16_C( 189),
INT16_C( 454), INT16_C( 338), INT16_C( 498), INT16_C( 202), INT16_C( 311), INT16_C( 195), INT16_C( 368), INT16_C( 212),
INT16_C( 433), INT16_C( 301), INT16_C( 285), INT16_C( 254), INT16_C( 213), INT16_C( 303), INT16_C( 311), INT16_C( 321),
INT16_C( 198), INT16_C( 267), INT16_C( 264), INT16_C( 265), INT16_C( 381), INT16_C( 203), INT16_C( 580), INT16_C( 492) } },
{ { -INT8_C( 89), -INT8_C( 27), INT8_C( 102), -INT8_C( 48), -INT8_C( 95), INT8_C( 65), -INT8_C( 112), INT8_C( 8),
INT8_C( 57), -INT8_C( 6), -INT8_C( 89), -INT8_C( 97), INT8_C( 31), INT8_C( 58), INT8_C( 63), -INT8_C( 66),
-INT8_C( 22), INT8_C( 59), INT8_C( 86), -INT8_C( 12), -INT8_C( 85), -INT8_C( 21), INT8_C( 99), INT8_C( 70),
INT8_C( 117), -INT8_C( 29), -INT8_C( 9), -INT8_C( 124), -INT8_C( 100), INT8_C( 89), INT8_C( 81), INT8_C( 68),
INT8_C( 63), -INT8_C( 73), INT8_C( 20), -INT8_C( 32), -INT8_C( 7), -INT8_C( 91), -INT8_C( 23), INT8_C( 50),
-INT8_C( 97), -INT8_C( 112), -INT8_C( 47), -INT8_C( 65), -INT8_C( 54), INT8_C( 16), INT8_C( 125), -INT8_C( 75),
INT8_C( 75), -INT8_C( 45), -INT8_C( 87), -INT8_C( 10), -INT8_C( 65), INT8_C( 12), INT8_C( 61), INT8_C( 52),
-INT8_C( 17), INT8_C( 52), -INT8_C( 72), -INT8_C( 116), -INT8_C( 114), INT8_C( 10), -INT8_C( 48), -INT8_C( 51) },
{ -INT8_C( 63), -INT8_C( 28), -INT8_C( 83), -INT8_C( 70), -INT8_C( 119), -INT8_C( 106), -INT8_C( 20), INT8_C( 41),
INT8_C( 39), -INT8_C( 67), -INT8_C( 24), -INT8_C( 15), -INT8_C( 50), INT8_C( 101), -INT8_C( 90), INT8_C( 25),
INT8_C( 57), INT8_C( 80), INT8_C( 16), -INT8_C( 8), INT8_C( 92), INT8_C( 77), INT8_C( 44), INT8_C( 76),
-INT8_C( 127), -INT8_C( 27), -INT8_C( 40), INT8_C( 15), -INT8_C( 17), -INT8_C( 88), -INT8_C( 36), -INT8_C( 80),
-INT8_C( 116), -INT8_C( 118), INT8_C( 107), INT8_C( 22), INT8_C( 32), INT8_C( 87), INT8_C( 63), INT8_C( 71),
INT8_C( 21), INT8_C( 39), INT8_C( 57), -INT8_C( 29), -INT8_C( 116), -INT8_C( 33), -INT8_C( 4), -INT8_C( 59),
INT8_C( 47), INT8_C( 12), -INT8_C( 67), -INT8_C( 116), INT8_C( 89), -INT8_C( 22), -INT8_C( 40), -INT8_C( 37),
-INT8_C( 49), -INT8_C( 80), -INT8_C( 22), -INT8_C( 66), INT8_C( 88), -INT8_C( 57), INT8_C( 110), -INT8_C( 28) },
INT32_C( 81),
{ INT16_C( 410), INT16_C( 100), INT16_C( 368), INT16_C( 497), INT16_C( 367), INT16_C( 255), INT16_C( 336), INT16_C( 222),
INT16_C( 370), INT16_C( 369), INT16_C( 338), INT16_C( 346), INT16_C( 434), INT16_C( 434), INT16_C( 145), INT16_C( 111),
INT16_C( 323), INT16_C( 279), INT16_C( 461), INT16_C( 355), INT16_C( 450), INT16_C( 450), INT16_C( 381), INT16_C( 303),
INT16_C( 111), INT16_C( 413), INT16_C( 286), INT16_C( 249), INT16_C( 443), INT16_C( 255), INT16_C( 431), INT16_C( 193) } },
{ { INT8_C( 49), INT8_C( 57), -INT8_C( 71), INT8_C( 70), INT8_C( 96), -INT8_C( 14), INT8_C( 41), -INT8_C( 19),
-INT8_C( 47), INT8_C( 37), -INT8_C( 78), INT8_C( 1), INT8_C( 50), INT8_C( 112), -INT8_C( 115), -INT8_C( 117),
INT8_C( 90), INT8_C( 101), INT8_C( 102), INT8_C( 41), INT8_C( 21), INT8_C( 81), -INT8_C( 25), INT8_C( 109),
INT8_C( 24), INT8_C( 85), INT8_C( 81), INT8_C( 105), INT8_C( 47), INT8_C( 76), -INT8_C( 38), INT8_C( 96),
-INT8_C( 123), -INT8_C( 109), -INT8_C( 90), -INT8_C( 26), -INT8_C( 123), -INT8_C( 49), -INT8_C( 45), INT8_C( 87),
-INT8_C( 12), -INT8_C( 123), INT8_C( 88), INT8_C( 38), -INT8_C( 11), -INT8_C( 27), -INT8_C( 78), INT8_C( 79),
INT8_C( 74), INT8_C( 24), INT8_C( 120), INT8_C( 95), INT8_C( 105), INT8_C( 95), -INT8_C( 52), -INT8_C( 127),
-INT8_C( 75), INT8_C( 29), -INT8_C( 22), -INT8_C( 28), INT8_C( 105), -INT8_C( 59), INT8_C( 68), -INT8_C( 17) },
{ INT8_C( 88), -INT8_C( 22), -INT8_C( 43), -INT8_C( 34), -INT8_C( 71), -INT8_C( 88), INT8_C( 53), -INT8_C( 83),
INT8_C( 45), -INT8_C( 115), -INT8_C( 44), INT8_C( 35), INT8_C( 114), -INT8_C( 122), INT8_C( 114), -INT8_C( 68),
-INT8_C( 98), -INT8_C( 21), INT8_C( 27), INT8_C( 8), INT8_C( 74), -INT8_C( 25), -INT8_C( 119), -INT8_C( 1),
INT8_C( 4), INT8_C( 116), -INT8_C( 29), INT8_C( 110), INT8_C( 57), INT8_C( 39), INT8_C( 93), -INT8_C( 111),
INT8_C( 17), INT8_C( 50), INT8_C( 111), -INT8_C( 54), -INT8_C( 38), -INT8_C( 92), INT8_C( 120), INT8_C( 7),
INT8_C( 49), INT8_C( 76), INT8_C( 42), -INT8_C( 93), -INT8_C( 46), -INT8_C( 99), INT8_C( 95), INT8_C( 112),
-INT8_C( 120), INT8_C( 122), INT8_C( 120), -INT8_C( 46), INT8_C( 97), INT8_C( 2), -INT8_C( 46), INT8_C( 102),
INT8_C( 118), -INT8_C( 75), -INT8_C( 44), -INT8_C( 81), -INT8_C( 35), INT8_C( 49), INT8_C( 64), -INT8_C( 18) },
INT32_C( 99),
{ INT16_C( 331), INT16_C( 163), INT16_C( 122), INT16_C( 463), INT16_C( 336), INT16_C( 570), INT16_C( 312), INT16_C( 201),
INT16_C( 208), INT16_C( 219), INT16_C( 335), INT16_C( 287), INT16_C( 202), INT16_C( 294), INT16_C( 493), INT16_C( 119),
INT16_C( 276), INT16_C( 343), INT16_C( 364), INT16_C( 396), INT16_C( 423), INT16_C( 514), INT16_C( 394), INT16_C( 148),
INT16_C( 371), INT16_C( 224), INT16_C( 259), INT16_C( 265), INT16_C( 290), INT16_C( 373), INT16_C( 395), INT16_C( 265) } },
};
simde__m512i a, b, r;
a = simde_mm512_loadu_epi8(test_vec[0].a);
b = simde_mm512_loadu_epi8(test_vec[0].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 226));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[0].r));
a = simde_mm512_loadu_epi8(test_vec[1].a);
b = simde_mm512_loadu_epi8(test_vec[1].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 253));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[1].r));
a = simde_mm512_loadu_epi8(test_vec[2].a);
b = simde_mm512_loadu_epi8(test_vec[2].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 208));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[2].r));
a = simde_mm512_loadu_epi8(test_vec[3].a);
b = simde_mm512_loadu_epi8(test_vec[3].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 84));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[3].r));
a = simde_mm512_loadu_epi8(test_vec[4].a);
b = simde_mm512_loadu_epi8(test_vec[4].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 162));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[4].r));
a = simde_mm512_loadu_epi8(test_vec[5].a);
b = simde_mm512_loadu_epi8(test_vec[5].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 14));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[5].r));
a = simde_mm512_loadu_epi8(test_vec[6].a);
b = simde_mm512_loadu_epi8(test_vec[6].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 81));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[6].r));
a = simde_mm512_loadu_epi8(test_vec[7].a);
b = simde_mm512_loadu_epi8(test_vec[7].b);
r = simde_mm512_dbsad_epu8(a, b, INT32_C( 99));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m512i a = simde_test_x86_random_i8x64();
simde__m512i b = simde_test_x86_random_i8x64();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m512i r;
SIMDE_CONSTIFY_256_(simde_mm512_dbsad_epu8, r, simde_mm512_setzero_si512(), imm8, a, b);
simde_test_x86_write_i8x64(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i8x64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_mask_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const int16_t src[32];
const simde__mmask32 k;
const int8_t a[64];
const int8_t b[64];
const int imm8;
const int16_t r[32];
} test_vec[] = {
{ { INT16_C( 12628), -INT16_C( 31164), INT16_C( 28541), INT16_C( 20265), -INT16_C( 30452), -INT16_C( 27457), INT16_C( 14339), INT16_C( 25958),
INT16_C( 14394), -INT16_C( 20277), -INT16_C( 24594), -INT16_C( 13473), -INT16_C( 24624), INT16_C( 13241), INT16_C( 29263), -INT16_C( 23440),
-INT16_C( 19293), INT16_C( 8234), INT16_C( 21283), INT16_C( 12143), INT16_C( 12252), -INT16_C( 7997), INT16_C( 10855), -INT16_C( 24251),
INT16_C( 4194), INT16_C( 20561), -INT16_C( 20305), INT16_C( 32539), -INT16_C( 10929), -INT16_C( 24654), INT16_C( 8775), -INT16_C( 5309) },
UINT32_C(4195053014),
{ -INT8_C( 64), INT8_C( 123), INT8_C( 41), -INT8_C( 99), -INT8_C( 86), -INT8_C( 19), INT8_C( 125), INT8_C( 17),
INT8_C( 23), -INT8_C( 62), -INT8_C( 78), INT8_C( 121), -INT8_C( 46), INT8_C( 3), -INT8_C( 54), -INT8_C( 127),
-INT8_C( 77), -INT8_C( 27), INT8_C( 0), INT8_C( 2), -INT8_C( 70), -INT8_C( 78), -INT8_C( 95), INT8_C( 2),
-INT8_C( 44), -INT8_C( 28), -INT8_C( 19), -INT8_C( 86), INT8_C( 81), -INT8_C( 8), -INT8_C( 92), INT8_C( 18),
INT8_C( 115), -INT8_C( 50), -INT8_C( 81), INT8_C( 29), -INT8_C( 69), INT8_C( 44), INT8_C( 46), -INT8_C( 46),
-INT8_C( 18), -INT8_C( 32), INT8_C( 75), -INT8_C( 64), -INT8_C( 29), INT8_C( 21), INT8_C( 65), -INT8_C( 106),
-INT8_C( 5), INT8_C( 65), -INT8_C( 103), -INT8_C( 75), -INT8_C( 13), INT8_C( 58), -INT8_C( 73), -INT8_C( 57),
INT8_C( 31), -INT8_C( 92), INT8_C( 113), INT8_C( 112), -INT8_C( 99), INT8_C( 22), -INT8_C( 126), INT8_C( 16) },
{ -INT8_C( 28), INT8_C( 49), INT8_C( 46), -INT8_C( 97), INT8_C( 93), INT8_C( 92), INT8_C( 113), INT8_C( 75),
INT8_C( 61), -INT8_C( 68), INT8_C( 11), INT8_C( 32), -INT8_C( 46), INT8_C( 76), -INT8_C( 73), -INT8_C( 51),
-INT8_C( 115), INT8_C( 80), -INT8_C( 126), INT8_MIN, -INT8_C( 118), INT8_C( 58), INT8_C( 71), -INT8_C( 87),
-INT8_C( 34), -INT8_C( 71), INT8_C( 26), INT8_C( 123), -INT8_C( 49), -INT8_C( 100), -INT8_C( 116), -INT8_C( 77),
-INT8_C( 50), -INT8_C( 70), INT8_C( 82), INT8_C( 43), INT8_C( 22), -INT8_C( 61), INT8_C( 119), INT8_C( 83),
INT8_MAX, -INT8_C( 126), INT8_C( 116), INT8_C( 81), -INT8_C( 49), INT8_C( 43), INT8_C( 30), INT8_C( 92),
INT8_C( 123), -INT8_C( 95), -INT8_C( 35), INT8_C( 5), -INT8_C( 37), INT8_C( 36), -INT8_C( 81), -INT8_C( 71),
-INT8_C( 35), -INT8_C( 55), INT8_C( 53), -INT8_C( 84), INT8_C( 101), -INT8_C( 63), INT8_C( 95), INT8_C( 51) },
INT32_C( 123),
{ INT16_C( 12628), INT16_C( 436), INT16_C( 280), INT16_C( 20265), INT16_C( 394), -INT16_C( 27457), INT16_C( 375), INT16_C( 221),
INT16_C( 418), -INT16_C( 20277), INT16_C( 291), INT16_C( 99), -INT16_C( 24624), INT16_C( 234), INT16_C( 194), -INT16_C( 23440),
INT16_C( 463), INT16_C( 429), INT16_C( 21283), INT16_C( 356), INT16_C( 12252), -INT16_C( 7997), INT16_C( 10855), -INT16_C( 24251),
INT16_C( 4194), INT16_C( 230), -INT16_C( 20305), INT16_C( 519), INT16_C( 178), INT16_C( 400), INT16_C( 200), INT16_C( 556) } },
{ { -INT16_C( 10636), -INT16_C( 2843), INT16_C( 22872), INT16_C( 10053), INT16_C( 25732), -INT16_C( 124), INT16_C( 24837), -INT16_C( 8188),
-INT16_C( 19579), INT16_C( 25497), -INT16_C( 12676), -INT16_C( 7665), INT16_C( 28559), INT16_C( 2581), INT16_C( 29728), -INT16_C( 27236),
-INT16_C( 32438), -INT16_C( 23671), -INT16_C( 12582), INT16_C( 24266), INT16_C( 20018), INT16_C( 14173), INT16_C( 25007), INT16_C( 13591),
-INT16_C( 20203), -INT16_C( 28264), -INT16_C( 22657), INT16_C( 3955), -INT16_C( 30442), INT16_C( 14105), -INT16_C( 18947), INT16_C( 18636) },
UINT32_C( 283858230),
{ INT8_C( 35), -INT8_C( 75), INT8_C( 110), INT8_C( 86), INT8_C( 4), -INT8_C( 53), -INT8_C( 115), -INT8_C( 77),
INT8_C( 45), -INT8_C( 91), -INT8_C( 24), INT8_C( 66), INT8_C( 86), INT8_MIN, -INT8_C( 45), -INT8_C( 43),
INT8_C( 40), INT8_C( 71), -INT8_C( 28), INT8_C( 62), -INT8_C( 48), -INT8_C( 2), INT8_C( 117), -INT8_C( 51),
-INT8_C( 77), INT8_C( 65), INT8_C( 21), -INT8_C( 22), -INT8_C( 106), INT8_C( 0), -INT8_C( 6), -INT8_C( 70),
-INT8_C( 74), INT8_C( 105), INT8_C( 16), -INT8_C( 70), INT8_C( 52), -INT8_C( 99), INT8_C( 109), INT8_C( 97),
INT8_C( 66), INT8_C( 86), -INT8_C( 93), -INT8_C( 104), -INT8_C( 42), INT8_C( 119), INT8_C( 110), -INT8_C( 2),
-INT8_C( 66), INT8_C( 82), INT8_C( 61), -INT8_C( 114), INT8_C( 80), -INT8_C( 78), INT8_C( 91), INT8_C( 4),
-INT8_C( 12), INT8_C( 113), -INT8_C( 18), -INT8_C( 118), INT8_C( 113), -INT8_C( 24), INT8_C( 68), INT8_C( 39) },
{ INT8_C( 81), INT8_C( 84), -INT8_C( 31), -INT8_C( 122), -INT8_C( 14), INT8_C( 79), -INT8_C( 25), INT8_C( 52),
-INT8_C( 91), -INT8_C( 117), -INT8_C( 51), INT8_C( 123), INT8_C( 2), INT8_C( 59), INT8_C( 122), -INT8_C( 64),
-INT8_C( 115), -INT8_C( 73), INT8_C( 78), -INT8_C( 34), INT8_C( 105), -INT8_C( 87), -INT8_C( 30), INT8_C( 93),
INT8_C( 26), -INT8_C( 48), -INT8_C( 24), -INT8_C( 116), -INT8_C( 72), INT8_C( 44), -INT8_C( 77), INT8_C( 10),
-INT8_C( 127), -INT8_C( 107), -INT8_C( 112), INT8_C( 115), -INT8_C( 28), INT8_C( 119), -INT8_C( 89), -INT8_C( 119),
INT8_C( 2), INT8_C( 116), INT8_C( 4), INT8_C( 4), -INT8_C( 81), INT8_C( 126), -INT8_C( 60), INT8_C( 61),
INT8_C( 53), INT8_C( 18), INT8_C( 27), -INT8_C( 97), -INT8_C( 68), -INT8_C( 3), -INT8_C( 4), -INT8_C( 42),
-INT8_C( 51), -INT8_C( 28), INT8_C( 98), -INT8_C( 123), INT8_C( 17), INT8_C( 22), -INT8_C( 113), -INT8_C( 110) },
INT32_C( 171),
{ -INT16_C( 10636), INT16_C( 244), INT16_C( 193), INT16_C( 10053), INT16_C( 230), INT16_C( 342), INT16_C( 24837), -INT16_C( 8188),
INT16_C( 272), INT16_C( 25497), INT16_C( 367), -INT16_C( 7665), INT16_C( 601), INT16_C( 2581), INT16_C( 468), -INT16_C( 27236),
INT16_C( 333), INT16_C( 376), -INT16_C( 12582), INT16_C( 264), INT16_C( 20018), INT16_C( 441), INT16_C( 571), INT16_C( 583),
-INT16_C( 20203), -INT16_C( 28264), -INT16_C( 22657), INT16_C( 3955), INT16_C( 299), INT16_C( 14105), -INT16_C( 18947), INT16_C( 18636) } },
{ { -INT16_C( 21353), -INT16_C( 26344), INT16_C( 7201), -INT16_C( 12130), INT16_C( 25243), -INT16_C( 12275), INT16_C( 10357), INT16_C( 12655),
INT16_C( 27685), -INT16_C( 3577), INT16_C( 27216), INT16_C( 24952), INT16_C( 1920), INT16_C( 11251), -INT16_C( 2009), -INT16_C( 16710),
-INT16_C( 11611), -INT16_C( 14761), -INT16_C( 2578), -INT16_C( 30314), -INT16_C( 23464), -INT16_C( 12966), -INT16_C( 13876), -INT16_C( 3330),
INT16_C( 1333), -INT16_C( 31004), INT16_C( 23663), -INT16_C( 4121), -INT16_C( 9372), -INT16_C( 29926), -INT16_C( 11053), INT16_C( 30793) },
UINT32_C(2503909542),
{ -INT8_C( 106), -INT8_C( 43), INT8_C( 30), -INT8_C( 18), INT8_C( 121), INT8_C( 120), -INT8_C( 69), INT8_C( 69),
INT8_C( 66), -INT8_C( 71), INT8_C( 55), INT8_C( 119), -INT8_C( 66), INT8_C( 28), -INT8_C( 3), INT8_C( 46),
INT8_C( 120), -INT8_C( 27), INT8_C( 29), -INT8_C( 36), -INT8_C( 64), INT8_C( 56), INT8_C( 103), -INT8_C( 109),
INT8_C( 12), -INT8_C( 80), INT8_C( 12), -INT8_C( 77), INT8_C( 81), INT8_C( 74), INT8_C( 72), -INT8_C( 25),
INT8_C( 31), INT8_C( 102), -INT8_C( 43), -INT8_C( 104), -INT8_C( 33), -INT8_C( 112), -INT8_C( 34), INT8_C( 33),
INT8_C( 73), INT8_C( 21), -INT8_C( 104), INT8_C( 7), INT8_C( 49), -INT8_C( 106), INT8_C( 53), -INT8_C( 86),
INT8_C( 123), INT8_C( 83), -INT8_C( 122), INT8_C( 59), -INT8_C( 117), -INT8_C( 18), -INT8_C( 50), -INT8_C( 105),
-INT8_C( 98), -INT8_C( 38), INT8_C( 74), -INT8_C( 17), INT8_C( 37), -INT8_C( 110), -INT8_C( 42), INT8_C( 68) },
{ -INT8_C( 7), -INT8_C( 85), -INT8_C( 35), -INT8_C( 40), INT8_C( 59), -INT8_C( 69), -INT8_C( 7), -INT8_C( 124),
-INT8_C( 48), -INT8_C( 111), -INT8_C( 116), INT8_C( 2), INT8_C( 39), -INT8_C( 63), -INT8_C( 84), -INT8_C( 94),
INT8_C( 20), INT8_C( 50), -INT8_C( 35), -INT8_C( 97), INT8_C( 32), -INT8_C( 84), INT8_C( 55), -INT8_C( 65),
-INT8_C( 122), -INT8_C( 127), -INT8_C( 82), -INT8_C( 85), INT8_C( 20), -INT8_C( 123), -INT8_C( 16), INT8_C( 13),
INT8_C( 48), -INT8_C( 51), -INT8_C( 27), INT8_C( 108), -INT8_C( 120), -INT8_C( 34), -INT8_C( 16), INT8_C( 88),
INT8_C( 111), INT8_C( 124), INT8_C( 90), -INT8_C( 105), INT8_C( 62), INT8_C( 6), INT8_C( 57), INT8_C( 82),
INT8_C( 57), INT8_C( 23), -INT8_C( 14), INT8_C( 89), -INT8_C( 61), INT8_C( 41), INT8_C( 24), INT8_C( 73),
-INT8_C( 86), -INT8_C( 57), -INT8_C( 11), -INT8_C( 66), INT8_C( 76), -INT8_C( 27), -INT8_C( 53), INT8_C( 124) },
INT32_C( 178),
{ -INT16_C( 21353), INT16_C( 117), INT16_C( 301), -INT16_C( 12130), INT16_C( 25243), INT16_C( 336), INT16_C( 10357), INT16_C( 410),
INT16_C( 27685), -INT16_C( 3577), INT16_C( 27216), INT16_C( 24952), INT16_C( 1920), INT16_C( 231), -INT16_C( 2009), INT16_C( 242),
-INT16_C( 11611), INT16_C( 271), INT16_C( 486), INT16_C( 381), INT16_C( 196), INT16_C( 277), -INT16_C( 13876), -INT16_C( 3330),
INT16_C( 405), -INT16_C( 31004), INT16_C( 431), -INT16_C( 4121), INT16_C( 337), -INT16_C( 29926), -INT16_C( 11053), INT16_C( 303) } },
{ { -INT16_C( 9842), -INT16_C( 366), -INT16_C( 4779), -INT16_C( 27755), -INT16_C( 12557), INT16_C( 11494), -INT16_C( 10011), -INT16_C( 22394),
-INT16_C( 25087), -INT16_C( 21518), -INT16_C( 6299), -INT16_C( 20118), INT16_C( 13772), INT16_C( 32302), INT16_C( 5862), INT16_C( 29880),
INT16_C( 19183), INT16_C( 17778), INT16_C( 1847), INT16_C( 11224), -INT16_C( 16682), -INT16_C( 17577), -INT16_C( 8810), -INT16_C( 26780),
INT16_C( 22140), -INT16_C( 7869), -INT16_C( 21187), INT16_C( 2451), -INT16_C( 15902), -INT16_C( 14201), INT16_C( 16343), -INT16_C( 14531) },
UINT32_C(3238834057),
{ -INT8_C( 73), -INT8_C( 28), -INT8_C( 20), -INT8_C( 115), -INT8_C( 93), INT8_C( 67), INT8_C( 72), INT8_C( 57),
INT8_C( 33), -INT8_C( 84), -INT8_C( 47), -INT8_C( 99), INT8_C( 2), INT8_C( 20), INT8_C( 126), INT8_C( 63),
-INT8_C( 63), INT8_C( 17), INT8_C( 72), -INT8_C( 93), -INT8_C( 46), -INT8_C( 49), INT8_C( 108), -INT8_C( 86),
INT8_C( 14), -INT8_C( 87), INT8_C( 113), -INT8_C( 104), INT8_C( 88), INT8_C( 125), INT8_C( 89), INT8_C( 15),
INT8_C( 97), INT8_C( 69), -INT8_C( 100), INT8_C( 4), -INT8_C( 120), -INT8_C( 27), INT8_C( 62), -INT8_C( 87),
-INT8_C( 111), INT8_C( 15), INT8_C( 70), -INT8_C( 108), INT8_C( 35), -INT8_C( 59), -INT8_C( 45), -INT8_C( 28),
-INT8_C( 42), INT8_C( 28), -INT8_C( 121), -INT8_C( 87), -INT8_C( 21), -INT8_C( 13), INT8_C( 83), -INT8_C( 6),
-INT8_C( 100), -INT8_C( 60), -INT8_C( 110), -INT8_C( 11), INT8_C( 65), -INT8_C( 21), INT8_C( 4), -INT8_C( 94) },
{ INT8_C( 48), -INT8_C( 95), -INT8_C( 89), -INT8_C( 72), -INT8_C( 122), -INT8_C( 27), INT8_C( 98), INT8_C( 23),
-INT8_C( 12), -INT8_C( 88), -INT8_C( 85), INT8_C( 23), INT8_C( 109), INT8_MAX, -INT8_C( 5), INT8_C( 68),
-INT8_C( 101), -INT8_C( 126), -INT8_C( 19), -INT8_C( 122), INT8_C( 118), INT8_C( 64), INT8_MIN, INT8_C( 18),
INT8_C( 4), INT8_C( 18), INT8_C( 7), INT8_C( 69), -INT8_C( 3), INT8_C( 12), -INT8_C( 25), INT8_C( 45),
-INT8_C( 83), -INT8_C( 114), -INT8_C( 26), INT8_C( 51), INT8_C( 115), INT8_C( 72), INT8_C( 74), INT8_C( 103),
-INT8_C( 16), -INT8_C( 10), INT8_C( 126), INT8_C( 94), INT8_C( 117), INT8_C( 121), -INT8_C( 94), INT8_C( 16),
-INT8_C( 4), -INT8_C( 113), -INT8_C( 106), INT8_C( 114), -INT8_C( 49), INT8_C( 23), -INT8_C( 124), -INT8_C( 45),
INT8_C( 41), -INT8_C( 116), INT8_C( 24), INT8_C( 39), -INT8_C( 104), -INT8_C( 1), INT8_C( 84), INT8_C( 69) },
INT32_C( 142),
{ INT16_C( 304), -INT16_C( 366), -INT16_C( 4779), INT16_C( 431), -INT16_C( 12557), INT16_C( 11494), -INT16_C( 10011), INT16_C( 556),
INT16_C( 349), INT16_C( 278), INT16_C( 644), INT16_C( 344), INT16_C( 13772), INT16_C( 353), INT16_C( 5862), INT16_C( 246),
INT16_C( 19183), INT16_C( 17778), INT16_C( 248), INT16_C( 220), -INT16_C( 16682), -INT16_C( 17577), -INT16_C( 8810), -INT16_C( 26780),
INT16_C( 526), -INT16_C( 7869), -INT16_C( 21187), INT16_C( 2451), -INT16_C( 15902), -INT16_C( 14201), INT16_C( 265), INT16_C( 517) } },
{ { -INT16_C( 15742), INT16_C( 29545), -INT16_C( 6216), INT16_C( 11729), INT16_C( 29537), INT16_C( 23869), -INT16_C( 11262), -INT16_C( 11825),
INT16_C( 21483), INT16_C( 5284), -INT16_C( 17185), INT16_C( 30523), -INT16_C( 28485), INT16_C( 18876), INT16_C( 13514), INT16_C( 19787),
-INT16_C( 19209), -INT16_C( 20544), -INT16_C( 28261), -INT16_C( 803), INT16_C( 6660), INT16_C( 1625), INT16_C( 10478), -INT16_C( 9769),
INT16_C( 31612), INT16_C( 23534), INT16_C( 10551), -INT16_C( 3373), -INT16_C( 28743), -INT16_C( 31684), -INT16_C( 30780), -INT16_C( 17455) },
UINT32_C(3597308219),
{ INT8_C( 34), INT8_C( 71), -INT8_C( 45), INT8_C( 38), INT8_C( 98), INT8_C( 44), INT8_C( 44), INT8_C( 80),
INT8_C( 85), INT8_C( 3), INT8_C( 42), -INT8_C( 47), INT8_C( 126), INT8_C( 24), INT8_C( 44), -INT8_C( 75),
INT8_C( 65), -INT8_C( 1), -INT8_C( 89), -INT8_C( 5), -INT8_C( 113), -INT8_C( 29), INT8_MAX, INT8_C( 83),
INT8_C( 106), INT8_C( 80), INT8_C( 14), -INT8_C( 91), -INT8_C( 31), INT8_C( 120), INT8_C( 124), INT8_C( 3),
-INT8_C( 64), INT8_C( 79), INT8_C( 41), INT8_C( 34), INT8_C( 123), INT8_C( 85), INT8_C( 114), -INT8_C( 48),
INT8_C( 88), -INT8_C( 100), -INT8_C( 95), -INT8_C( 42), -INT8_C( 76), -INT8_C( 50), -INT8_C( 117), -INT8_C( 10),
-INT8_C( 51), INT8_C( 50), -INT8_C( 15), INT8_C( 92), INT8_C( 22), INT8_C( 112), -INT8_C( 81), INT8_MIN,
-INT8_C( 64), -INT8_C( 67), INT8_C( 38), -INT8_C( 95), INT8_C( 54), -INT8_C( 94), -INT8_C( 92), -INT8_C( 10) },
{ -INT8_C( 15), -INT8_C( 51), INT8_C( 24), INT8_C( 108), INT8_C( 34), -INT8_C( 118), INT8_C( 61), INT8_C( 122),
INT8_C( 39), -INT8_C( 34), INT8_C( 80), -INT8_C( 37), -INT8_C( 84), -INT8_C( 37), -INT8_C( 47), INT8_C( 122),
INT8_C( 13), -INT8_C( 62), -INT8_C( 42), INT8_C( 35), INT8_C( 50), -INT8_C( 122), -INT8_C( 92), -INT8_C( 14),
INT8_C( 67), -INT8_C( 54), -INT8_C( 109), INT8_C( 121), INT8_C( 108), INT8_C( 55), INT8_C( 111), INT8_C( 93),
INT8_C( 4), -INT8_C( 121), -INT8_C( 55), INT8_C( 38), INT8_C( 18), INT8_C( 6), -INT8_C( 96), INT8_C( 57),
-INT8_C( 27), -INT8_C( 16), INT8_C( 20), -INT8_C( 111), -INT8_C( 53), -INT8_C( 26), INT8_C( 11), -INT8_C( 39),
-INT8_C( 88), -INT8_C( 30), -INT8_C( 4), -INT8_C( 37), INT8_C( 104), -INT8_C( 96), -INT8_C( 51), -INT8_C( 85),
INT8_C( 106), INT8_C( 97), INT8_C( 37), -INT8_C( 42), -INT8_C( 104), -INT8_C( 108), INT8_C( 51), -INT8_C( 99) },
INT32_C( 28),
{ INT16_C( 598), INT16_C( 455), -INT16_C( 6216), INT16_C( 442), INT16_C( 292), INT16_C( 223), -INT16_C( 11262), -INT16_C( 11825),
INT16_C( 376), INT16_C( 5284), -INT16_C( 17185), INT16_C( 30523), INT16_C( 337), INT16_C( 18876), INT16_C( 13514), INT16_C( 405),
-INT16_C( 19209), INT16_C( 351), -INT16_C( 28261), INT16_C( 516), INT16_C( 6660), INT16_C( 400), INT16_C( 415), -INT16_C( 9769),
INT16_C( 31612), INT16_C( 305), INT16_C( 380), -INT16_C( 3373), INT16_C( 294), -INT16_C( 31684), INT16_C( 184), INT16_C( 191) } },
{ { INT16_C( 25603), -INT16_C( 6041), INT16_C( 31572), INT16_C( 8314), -INT16_C( 31391), INT16_C( 2809), -INT16_C( 2713), -INT16_C( 12315),
-INT16_C( 19818), INT16_C( 123), -INT16_C( 24557), -INT16_C( 21289), INT16_C( 2612), INT16_C( 20553), INT16_C( 3079), INT16_C( 2942),
-INT16_C( 6800), -INT16_C( 14861), INT16_C( 28001), -INT16_C( 15643), -INT16_C( 8461), INT16_C( 23244), -INT16_C( 20013), INT16_C( 26922),
-INT16_C( 23196), INT16_C( 30570), INT16_C( 16709), INT16_C( 31011), INT16_C( 27723), INT16_C( 21450), INT16_C( 18553), -INT16_C( 5794) },
UINT32_C(2410565934),
{ -INT8_C( 65), -INT8_C( 109), INT8_C( 81), -INT8_C( 78), INT8_C( 113), INT8_C( 30), INT8_C( 12), INT8_C( 69),
-INT8_C( 49), INT8_C( 54), -INT8_C( 82), INT8_C( 51), -INT8_C( 37), INT8_C( 24), -INT8_C( 85), INT8_C( 32),
INT8_C( 89), -INT8_C( 50), -INT8_C( 102), -INT8_C( 91), INT8_C( 59), INT8_C( 100), -INT8_C( 8), -INT8_C( 76),
-INT8_C( 84), INT8_C( 86), -INT8_C( 99), -INT8_C( 38), -INT8_C( 89), INT8_C( 76), INT8_C( 105), INT8_C( 102),
-INT8_C( 33), -INT8_C( 69), INT8_C( 24), INT8_C( 81), -INT8_C( 39), INT8_C( 37), -INT8_C( 106), -INT8_C( 88),
INT8_C( 91), INT8_C( 68), -INT8_C( 36), INT8_C( 55), INT8_C( 93), -INT8_C( 121), INT8_C( 87), -INT8_C( 74),
INT8_C( 85), -INT8_C( 15), INT8_C( 91), -INT8_C( 112), INT8_C( 85), INT8_C( 83), INT8_C( 68), INT8_C( 2),
-INT8_C( 87), -INT8_C( 30), -INT8_C( 36), INT8_C( 81), INT8_C( 46), INT8_C( 70), -INT8_C( 73), INT8_C( 13) },
{ INT8_C( 1), -INT8_C( 48), INT8_C( 94), -INT8_C( 38), -INT8_C( 11), -INT8_C( 12), -INT8_C( 126), INT8_C( 80),
INT8_C( 57), INT8_C( 94), -INT8_C( 121), -INT8_C( 106), -INT8_C( 27), -INT8_C( 33), INT8_C( 76), INT8_C( 59),
-INT8_C( 48), -INT8_C( 88), -INT8_C( 53), INT8_C( 38), -INT8_C( 5), INT8_C( 16), INT8_C( 40), -INT8_C( 91),
-INT8_C( 14), INT8_C( 4), -INT8_C( 10), INT8_C( 32), INT8_C( 74), -INT8_C( 83), INT8_C( 45), INT8_C( 75),
INT8_C( 125), -INT8_C( 116), INT8_C( 37), INT8_C( 114), INT8_MIN, -INT8_C( 88), -INT8_C( 61), -INT8_C( 71),
INT8_C( 6), INT8_C( 74), INT8_C( 79), -INT8_C( 20), INT8_C( 41), -INT8_C( 100), INT8_C( 39), -INT8_C( 6),
INT8_C( 68), -INT8_C( 14), INT8_C( 32), INT8_C( 63), INT8_C( 2), INT8_C( 72), -INT8_C( 28), -INT8_C( 12),
INT8_C( 76), -INT8_C( 38), INT8_C( 20), -INT8_C( 105), -INT8_C( 120), INT8_C( 66), -INT8_C( 30), INT8_C( 5) },
INT32_C( 206),
{ INT16_C( 25603), INT16_C( 229), INT16_C( 513), INT16_C( 454), -INT16_C( 31391), INT16_C( 263), -INT16_C( 2713), -INT16_C( 12315),
INT16_C( 580), INT16_C( 123), -INT16_C( 24557), -INT16_C( 21289), INT16_C( 344), INT16_C( 20553), INT16_C( 176), INT16_C( 2942),
-INT16_C( 6800), INT16_C( 509), INT16_C( 458), INT16_C( 158), -INT16_C( 8461), INT16_C( 200), -INT16_C( 20013), INT16_C( 327),
INT16_C( 110), INT16_C( 422), INT16_C( 265), INT16_C( 345), INT16_C( 27723), INT16_C( 21450), INT16_C( 18553), INT16_C( 413) } },
{ { INT16_C( 15280), -INT16_C( 18936), INT16_C( 22405), -INT16_C( 20574), -INT16_C( 13837), INT16_C( 14249), -INT16_C( 13892), -INT16_C( 16777),
INT16_C( 23313), INT16_C( 23987), -INT16_C( 14538), -INT16_C( 16652), -INT16_C( 10487), -INT16_C( 10301), INT16_C( 15327), -INT16_C( 28890),
INT16_C( 11894), -INT16_C( 955), -INT16_C( 6011), INT16_C( 31147), INT16_C( 21681), INT16_C( 28080), INT16_C( 10013), INT16_C( 11820),
-INT16_C( 8317), -INT16_C( 18037), -INT16_C( 32602), -INT16_C( 20361), INT16_C( 14935), INT16_C( 13959), -INT16_C( 21130), -INT16_C( 4923) },
UINT32_C(1642597083),
{ -INT8_C( 14), -INT8_C( 109), -INT8_C( 38), -INT8_C( 92), -INT8_C( 25), -INT8_C( 118), INT8_C( 17), INT8_C( 4),
-INT8_C( 78), INT8_C( 61), INT8_C( 50), INT8_C( 53), INT8_C( 28), -INT8_C( 66), -INT8_C( 18), -INT8_C( 61),
INT8_C( 62), INT8_C( 101), INT8_C( 115), -INT8_C( 107), -INT8_C( 97), -INT8_C( 6), -INT8_C( 53), INT8_C( 21),
-INT8_C( 88), -INT8_C( 112), INT8_C( 2), -INT8_C( 125), -INT8_C( 102), -INT8_C( 22), -INT8_C( 28), -INT8_C( 115),
INT8_C( 126), -INT8_C( 66), INT8_C( 49), INT8_C( 101), INT8_C( 73), INT8_C( 66), INT8_C( 106), -INT8_C( 5),
INT8_MIN, -INT8_C( 100), INT8_C( 48), -INT8_C( 100), INT8_C( 90), INT8_C( 30), INT8_C( 95), -INT8_C( 104),
-INT8_C( 125), -INT8_C( 46), INT8_C( 45), INT8_C( 34), -INT8_C( 51), -INT8_C( 8), INT8_C( 56), INT8_C( 117),
-INT8_C( 120), INT8_C( 58), -INT8_C( 8), INT8_C( 35), INT8_C( 36), -INT8_C( 35), -INT8_C( 80), -INT8_C( 94) },
{ -INT8_C( 101), -INT8_C( 31), INT8_C( 8), -INT8_C( 28), INT8_C( 35), INT8_C( 114), -INT8_C( 33), -INT8_C( 93),
INT8_C( 14), INT8_C( 15), INT8_C( 64), INT8_C( 105), INT8_C( 45), -INT8_C( 97), INT8_C( 1), -INT8_C( 80),
INT8_C( 114), INT8_C( 47), -INT8_C( 45), INT8_C( 63), INT8_C( 39), INT8_C( 11), -INT8_C( 76), -INT8_C( 80),
INT8_C( 69), -INT8_C( 84), -INT8_C( 45), INT8_C( 105), -INT8_C( 119), -INT8_C( 125), INT8_C( 12), INT8_C( 37),
INT8_C( 100), INT8_C( 20), INT8_C( 9), -INT8_C( 121), -INT8_C( 122), -INT8_C( 23), INT8_C( 43), -INT8_C( 108),
-INT8_C( 8), INT8_C( 107), -INT8_C( 3), INT8_C( 38), INT8_C( 10), -INT8_C( 1), -INT8_C( 42), INT8_C( 124),
INT8_C( 46), -INT8_C( 87), -INT8_C( 69), INT8_C( 85), -INT8_C( 76), INT8_C( 111), INT8_C( 5), -INT8_C( 7),
INT8_C( 28), -INT8_C( 40), INT8_C( 99), -INT8_C( 91), INT8_C( 91), INT8_C( 111), -INT8_C( 54), -INT8_C( 65) },
INT32_C( 131),
{ INT16_C( 438), INT16_C( 280), INT16_C( 22405), INT16_C( 284), INT16_C( 404), INT16_C( 14249), INT16_C( 462), INT16_C( 730),
INT16_C( 23313), INT16_C( 271), -INT16_C( 14538), INT16_C( 604), -INT16_C( 10487), -INT16_C( 10301), INT16_C( 15327), -INT16_C( 28890),
INT16_C( 11894), -INT16_C( 955), -INT16_C( 6011), INT16_C( 413), INT16_C( 21681), INT16_C( 434), INT16_C( 384), INT16_C( 376),
INT16_C( 453), -INT16_C( 18037), -INT16_C( 32602), -INT16_C( 20361), INT16_C( 14935), INT16_C( 332), INT16_C( 489), -INT16_C( 4923) } },
{ { INT16_C( 29373), -INT16_C( 19043), -INT16_C( 25635), -INT16_C( 6181), -INT16_C( 19814), -INT16_C( 14236), INT16_C( 8027), INT16_C( 4125),
INT16_C( 9103), -INT16_C( 21751), INT16_C( 27899), INT16_C( 22352), INT16_C( 7131), INT16_C( 24086), INT16_C( 24047), -INT16_C( 21401),
INT16_C( 1487), -INT16_C( 21407), INT16_C( 15776), INT16_C( 14996), -INT16_C( 1809), INT16_C( 18946), INT16_C( 7959), -INT16_C( 22950),
INT16_C( 25666), INT16_C( 15953), -INT16_C( 23856), -INT16_C( 21355), -INT16_C( 21571), -INT16_C( 21494), INT16_C( 29193), -INT16_C( 10152) },
UINT32_C( 394639735),
{ -INT8_C( 10), INT8_C( 25), INT8_C( 81), -INT8_C( 27), INT8_C( 17), INT8_C( 83), INT8_C( 48), INT8_C( 40),
INT8_C( 114), -INT8_C( 118), -INT8_C( 49), -INT8_C( 75), -INT8_C( 18), INT8_C( 32), -INT8_C( 13), -INT8_C( 65),
-INT8_C( 62), -INT8_C( 120), INT8_C( 107), INT8_MAX, INT8_C( 51), INT8_C( 117), INT8_C( 43), INT8_C( 60),
-INT8_C( 25), -INT8_C( 125), INT8_C( 21), INT8_C( 94), INT8_C( 61), -INT8_C( 102), INT8_C( 117), INT8_C( 51),
-INT8_C( 77), -INT8_C( 58), INT8_C( 25), -INT8_C( 60), INT8_C( 25), INT8_C( 73), -INT8_C( 20), -INT8_C( 116),
-INT8_C( 45), -INT8_C( 69), INT8_C( 65), -INT8_C( 62), -INT8_C( 36), INT8_C( 52), -INT8_C( 127), -INT8_C( 98),
-INT8_C( 68), -INT8_C( 20), INT8_C( 30), -INT8_C( 17), INT8_C( 97), INT8_C( 73), INT8_C( 44), INT8_C( 73),
-INT8_C( 51), INT8_C( 65), -INT8_C( 89), INT8_C( 10), -INT8_C( 37), INT8_C( 29), INT8_C( 61), -INT8_C( 114) },
{ -INT8_C( 29), INT8_C( 86), INT8_C( 82), -INT8_C( 3), -INT8_C( 97), INT8_C( 62), -INT8_C( 119), INT8_C( 115),
-INT8_C( 6), -INT8_C( 54), INT8_C( 53), -INT8_C( 42), -INT8_C( 2), -INT8_C( 74), INT8_C( 116), -INT8_C( 70),
-INT8_C( 94), -INT8_C( 110), -INT8_C( 87), INT8_C( 3), -INT8_C( 36), -INT8_C( 43), INT8_C( 76), -INT8_C( 87),
INT8_C( 22), -INT8_C( 12), -INT8_C( 77), -INT8_C( 15), INT8_C( 17), -INT8_C( 16), INT8_MAX, -INT8_C( 12),
INT8_C( 71), -INT8_C( 47), -INT8_C( 15), -INT8_C( 26), INT8_C( 16), INT8_C( 122), INT8_C( 89), INT8_C( 10),
INT8_C( 68), -INT8_C( 114), -INT8_C( 32), INT8_C( 66), INT8_C( 68), INT8_C( 84), -INT8_C( 4), -INT8_C( 26),
-INT8_C( 25), -INT8_C( 90), -INT8_C( 22), -INT8_C( 61), INT8_C( 123), INT8_C( 54), INT8_C( 108), -INT8_C( 110),
INT8_C( 42), INT8_C( 31), -INT8_C( 125), INT8_C( 59), INT8_C( 15), INT8_C( 3), INT8_C( 48), INT8_C( 86) },
INT32_C( 212),
{ INT16_C( 105), INT16_C( 459), INT16_C( 368), -INT16_C( 6181), INT16_C( 257), INT16_C( 218), INT16_C( 204), INT16_C( 4125),
INT16_C( 228), -INT16_C( 21751), INT16_C( 27899), INT16_C( 337), INT16_C( 223), INT16_C( 298), INT16_C( 24047), INT16_C( 444),
INT16_C( 369), -INT16_C( 21407), INT16_C( 611), INT16_C( 14996), -INT16_C( 1809), INT16_C( 18946), INT16_C( 7959), INT16_C( 365),
INT16_C( 361), INT16_C( 305), INT16_C( 357), -INT16_C( 21355), INT16_C( 288), -INT16_C( 21494), INT16_C( 29193), -INT16_C( 10152) } },
};
simde__m512i src, a, b, r;
src = simde_mm512_loadu_epi16(test_vec[0].src);
a = simde_mm512_loadu_epi8(test_vec[0].a);
b = simde_mm512_loadu_epi8(test_vec[0].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[0].k, a, b, INT32_C( 123));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[0].r));
src = simde_mm512_loadu_epi16(test_vec[1].src);
a = simde_mm512_loadu_epi8(test_vec[1].a);
b = simde_mm512_loadu_epi8(test_vec[1].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[1].k, a, b, INT32_C( 171));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[1].r));
src = simde_mm512_loadu_epi16(test_vec[2].src);
a = simde_mm512_loadu_epi8(test_vec[2].a);
b = simde_mm512_loadu_epi8(test_vec[2].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[2].k, a, b, INT32_C( 178));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[2].r));
src = simde_mm512_loadu_epi16(test_vec[3].src);
a = simde_mm512_loadu_epi8(test_vec[3].a);
b = simde_mm512_loadu_epi8(test_vec[3].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[3].k, a, b, INT32_C( 142));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[3].r));
src = simde_mm512_loadu_epi16(test_vec[4].src);
a = simde_mm512_loadu_epi8(test_vec[4].a);
b = simde_mm512_loadu_epi8(test_vec[4].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[4].k, a, b, INT32_C( 28));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[4].r));
src = simde_mm512_loadu_epi16(test_vec[5].src);
a = simde_mm512_loadu_epi8(test_vec[5].a);
b = simde_mm512_loadu_epi8(test_vec[5].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[5].k, a, b, INT32_C( 206));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[5].r));
src = simde_mm512_loadu_epi16(test_vec[6].src);
a = simde_mm512_loadu_epi8(test_vec[6].a);
b = simde_mm512_loadu_epi8(test_vec[6].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[6].k, a, b, INT32_C( 131));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[6].r));
src = simde_mm512_loadu_epi16(test_vec[7].src);
a = simde_mm512_loadu_epi8(test_vec[7].a);
b = simde_mm512_loadu_epi8(test_vec[7].b);
r = simde_mm512_mask_dbsad_epu8(src, test_vec[7].k, a, b, INT32_C( 212));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__m512i src = simde_test_x86_random_i16x32();
simde__mmask32 k = simde_test_x86_random_mmask32();
simde__m512i a = simde_test_x86_random_i8x64();
simde__m512i b = simde_test_x86_random_i8x64();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m512i r;
SIMDE_CONSTIFY_256_(simde_mm512_mask_dbsad_epu8, r, simde_mm512_setzero_si512(), imm8, src, k, a, b);
simde_test_x86_write_i16x32(2, src, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x64(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_mm512_maskz_dbsad_epu8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
const simde__mmask32 k;
const int8_t a[64];
const int8_t b[64];
const int imm8;
const int16_t r[32];
} test_vec[] = {
{ UINT32_C(3773732508),
{ INT8_C( 37), -INT8_C( 50), INT8_C( 35), INT8_C( 105), INT8_C( 35), INT8_C( 31), INT8_C( 80), INT8_C( 10),
-INT8_C( 59), INT8_C( 58), -INT8_C( 51), INT8_C( 65), INT8_C( 112), INT8_C( 57), -INT8_C( 45), -INT8_C( 101),
INT8_C( 88), INT8_C( 86), -INT8_C( 42), INT8_C( 103), INT8_C( 89), INT8_C( 6), -INT8_C( 66), INT8_C( 46),
INT8_C( 40), -INT8_C( 5), INT8_C( 18), -INT8_C( 60), -INT8_C( 111), INT8_C( 1), -INT8_C( 92), -INT8_C( 74),
-INT8_C( 49), -INT8_C( 57), INT8_C( 32), -INT8_C( 14), -INT8_C( 25), INT8_C( 112), -INT8_C( 4), -INT8_C( 84),
-INT8_C( 86), -INT8_C( 55), -INT8_C( 19), INT8_C( 26), INT8_C( 2), -INT8_C( 64), -INT8_C( 75), INT8_C( 90),
INT8_C( 23), -INT8_C( 116), -INT8_C( 62), INT8_C( 112), -INT8_C( 110), INT8_MIN, -INT8_C( 98), -INT8_C( 70),
INT8_C( 123), -INT8_C( 79), INT8_C( 126), INT8_C( 12), -INT8_C( 78), INT8_C( 35), -INT8_C( 61), -INT8_C( 127) },
{ -INT8_C( 22), -INT8_C( 29), INT8_C( 116), -INT8_C( 47), INT8_C( 83), INT8_C( 112), INT8_C( 126), -INT8_C( 3),
INT8_C( 58), INT8_C( 107), INT8_C( 23), INT8_C( 60), INT8_C( 44), -INT8_C( 51), -INT8_C( 105), INT8_C( 67),
INT8_C( 89), INT8_C( 89), -INT8_C( 77), -INT8_C( 21), -INT8_C( 39), INT8_C( 82), -INT8_C( 90), INT8_C( 84),
INT8_C( 3), INT8_C( 36), INT8_C( 96), -INT8_C( 75), INT8_C( 71), INT8_C( 35), INT8_C( 54), INT8_C( 50),
INT8_C( 6), -INT8_C( 86), INT8_C( 3), INT8_C( 89), INT8_C( 27), -INT8_C( 127), INT8_C( 86), INT8_C( 85),
-INT8_C( 19), INT8_C( 110), -INT8_C( 111), INT8_C( 25), INT8_C( 59), INT8_C( 40), INT8_C( 92), -INT8_C( 108),
-INT8_C( 127), INT8_C( 15), INT8_MAX, INT8_C( 90), INT8_C( 97), INT8_C( 37), -INT8_C( 82), INT8_C( 100),
INT8_C( 74), INT8_C( 15), INT8_C( 25), -INT8_C( 111), INT8_C( 50), INT8_C( 80), -INT8_C( 61), INT8_C( 57) },
INT32_C( 250),
{ INT16_C( 0), INT16_C( 0), INT16_C( 160), INT16_C( 92), INT16_C( 356), INT16_C( 0), INT16_C( 0), INT16_C( 68),
INT16_C( 0), INT16_C( 195), INT16_C( 379), INT16_C( 0), INT16_C( 429), INT16_C( 0), INT16_C( 0), INT16_C( 422),
INT16_C( 0), INT16_C( 163), INT16_C( 250), INT16_C( 500), INT16_C( 0), INT16_C( 361), INT16_C( 306), INT16_C( 422),
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 168), INT16_C( 233), INT16_C( 317) } },
{ UINT32_C( 896198984),
{ INT8_C( 87), -INT8_C( 4), INT8_C( 78), -INT8_C( 110), INT8_C( 36), -INT8_C( 86), INT8_C( 38), -INT8_C( 90),
-INT8_C( 70), -INT8_C( 91), INT8_C( 0), INT8_C( 27), -INT8_C( 53), -INT8_C( 81), INT8_MIN, INT8_C( 21),
-INT8_C( 66), -INT8_C( 103), -INT8_C( 90), -INT8_C( 16), -INT8_C( 23), INT8_C( 106), INT8_C( 41), -INT8_C( 28),
INT8_C( 49), -INT8_C( 68), -INT8_C( 7), INT8_C( 121), -INT8_C( 91), INT8_C( 100), -INT8_C( 81), -INT8_C( 4),
INT8_C( 96), -INT8_C( 3), -INT8_C( 114), -INT8_C( 124), -INT8_C( 88), -INT8_C( 76), INT8_C( 42), INT8_C( 98),
INT8_C( 89), INT8_C( 43), INT8_C( 125), INT8_C( 36), -INT8_C( 38), -INT8_C( 3), INT8_C( 57), -INT8_C( 104),
-INT8_C( 105), -INT8_C( 32), -INT8_C( 120), INT8_MIN, INT8_C( 74), -INT8_C( 78), INT8_C( 100), INT8_C( 123),
INT8_C( 110), INT8_C( 94), -INT8_C( 12), INT8_C( 19), -INT8_C( 62), -INT8_C( 93), INT8_C( 15), INT8_C( 34) },
{ -INT8_C( 95), -INT8_C( 99), -INT8_C( 90), INT8_C( 73), INT8_C( 81), -INT8_C( 47), -INT8_C( 85), -INT8_C( 86),
-INT8_C( 4), INT8_C( 40), -INT8_C( 49), -INT8_C( 42), INT8_C( 38), INT8_C( 8), INT8_C( 110), -INT8_C( 67),
-INT8_C( 24), -INT8_C( 10), INT8_C( 61), INT8_C( 50), -INT8_C( 88), -INT8_C( 94), -INT8_C( 83), INT8_C( 22),
INT8_C( 0), -INT8_C( 94), INT8_C( 41), -INT8_C( 62), INT8_C( 69), INT8_C( 56), -INT8_C( 28), -INT8_C( 26),
-INT8_C( 43), -INT8_C( 118), INT8_C( 47), INT8_C( 38), INT8_C( 91), -INT8_C( 38), -INT8_C( 47), INT8_C( 87),
INT8_C( 3), -INT8_C( 96), INT8_C( 45), INT8_C( 41), -INT8_C( 88), -INT8_C( 101), -INT8_C( 26), -INT8_C( 111),
-INT8_C( 110), INT8_C( 35), -INT8_C( 61), INT8_C( 58), -INT8_C( 59), INT8_C( 113), INT8_C( 81), -INT8_C( 59),
INT8_C( 19), INT8_C( 122), -INT8_C( 121), INT8_C( 88), -INT8_C( 77), INT8_C( 107), INT8_C( 63), -INT8_C( 120) },
INT32_C( 246),
{ INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 443), INT16_C( 0), INT16_C( 0), INT16_C( 210), INT16_C( 0),
INT16_C( 370), INT16_C( 0), INT16_C( 0), INT16_C( 277), INT16_C( 0), INT16_C( 118), INT16_C( 495), INT16_C( 239),
INT16_C( 0), INT16_C( 414), INT16_C( 0), INT16_C( 503), INT16_C( 0), INT16_C( 405), INT16_C( 234), INT16_C( 0),
INT16_C( 275), INT16_C( 0), INT16_C( 258), INT16_C( 0), INT16_C( 380), INT16_C( 302), INT16_C( 0), INT16_C( 0) } },
{ UINT32_C(1286176841),
{ INT8_C( 32), -INT8_C( 42), INT8_C( 117), -INT8_C( 56), INT8_C( 114), INT8_C( 91), INT8_C( 89), INT8_C( 4),
INT8_C( 126), INT8_C( 29), INT8_C( 62), INT8_C( 68), -INT8_C( 114), -INT8_C( 113), INT8_C( 9), -INT8_C( 95),
INT8_C( 10), -INT8_C( 111), -INT8_C( 7), -INT8_C( 67), -INT8_C( 4), INT8_C( 56), INT8_C( 69), -INT8_C( 14),
-INT8_C( 89), -INT8_C( 12), INT8_C( 68), -INT8_C( 16), INT8_C( 116), -INT8_C( 19), INT8_C( 60), -INT8_C( 108),
-INT8_C( 61), -INT8_C( 79), INT8_C( 93), INT8_C( 53), INT8_C( 12), -INT8_C( 74), INT8_C( 57), -INT8_C( 118),
-INT8_C( 45), INT8_C( 120), -INT8_C( 50), INT8_C( 97), INT8_C( 7), -INT8_C( 40), INT8_C( 2), INT8_C( 17),
INT8_C( 105), -INT8_C( 4), -INT8_C( 50), INT8_C( 101), INT8_C( 52), INT8_C( 20), INT8_C( 88), -INT8_C( 37),
INT8_C( 8), -INT8_C( 100), -INT8_C( 53), INT8_C( 125), -INT8_C( 119), INT8_C( 7), INT8_C( 17), INT8_C( 76) },
{ -INT8_C( 72), INT8_C( 110), -INT8_C( 126), -INT8_C( 60), INT8_C( 37), -INT8_C( 69), INT8_C( 79), -INT8_C( 8),
INT8_C( 51), INT8_C( 29), INT8_C( 90), INT8_C( 59), -INT8_C( 11), INT8_C( 92), INT8_C( 76), INT8_C( 94),
INT8_C( 88), INT8_C( 27), -INT8_C( 60), -INT8_C( 115), INT8_C( 47), INT8_C( 28), INT8_C( 104), INT8_C( 55),
-INT8_C( 72), INT8_C( 52), -INT8_C( 76), INT8_C( 65), INT8_C( 59), -INT8_C( 58), -INT8_C( 115), -INT8_C( 12),
INT8_C( 52), INT8_C( 15), -INT8_C( 72), INT8_C( 89), -INT8_C( 53), INT8_C( 7), INT8_C( 82), -INT8_C( 2),
INT8_C( 37), -INT8_C( 84), INT8_C( 57), INT8_C( 26), INT8_C( 8), -INT8_C( 122), INT8_C( 121), INT8_C( 97),
-INT8_C( 95), INT8_C( 61), -INT8_C( 18), -INT8_C( 48), INT8_C( 89), INT8_C( 86), INT8_C( 7), INT8_C( 17),
-INT8_C( 118), -INT8_C( 68), INT8_C( 82), -INT8_C( 58), -INT8_C( 126), -INT8_C( 33), -INT8_C( 70), -INT8_C( 74) },
INT32_C( 239),
{ INT16_C( 482), INT16_C( 0), INT16_C( 0), INT16_C( 249), INT16_C( 0), INT16_C( 0), INT16_C( 441), 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( 374),
INT16_C( 302), INT16_C( 0), INT16_C( 0), INT16_C( 353), INT16_C( 0), INT16_C( 371), INT16_C( 0), INT16_C( 463),
INT16_C( 0), INT16_C( 0), INT16_C( 342), INT16_C( 408), INT16_C( 0), INT16_C( 0), INT16_C( 506), INT16_C( 0) } },
{ UINT32_C(2679661178),
{ INT8_C( 14), -INT8_C( 14), -INT8_C( 71), INT8_C( 22), INT8_C( 120), INT8_C( 50), INT8_C( 119), INT8_C( 25),
INT8_C( 111), INT8_C( 101), -INT8_C( 23), -INT8_C( 56), -INT8_C( 68), -INT8_C( 16), -INT8_C( 39), INT8_C( 70),
-INT8_C( 84), INT8_C( 43), INT8_C( 12), INT8_C( 46), INT8_C( 11), -INT8_C( 58), -INT8_C( 27), -INT8_C( 6),
INT8_C( 57), -INT8_C( 11), -INT8_C( 76), -INT8_C( 77), INT8_C( 87), INT8_C( 108), INT8_C( 82), INT8_C( 101),
INT8_C( 94), INT8_C( 11), INT8_C( 123), -INT8_C( 42), INT8_C( 62), -INT8_C( 13), -INT8_C( 17), -INT8_C( 83),
INT8_C( 88), -INT8_C( 40), INT8_C( 118), INT8_C( 20), -INT8_C( 55), INT8_C( 79), INT8_C( 91), INT8_C( 117),
INT8_C( 123), INT8_C( 103), -INT8_C( 92), -INT8_C( 122), INT8_C( 46), -INT8_C( 119), INT8_MIN, INT8_C( 103),
INT8_C( 126), INT8_C( 52), INT8_C( 26), -INT8_C( 43), -INT8_C( 96), INT8_C( 108), INT8_C( 58), -INT8_C( 1) },
{ INT8_C( 119), -INT8_C( 75), -INT8_C( 43), -INT8_C( 75), -INT8_C( 88), -INT8_C( 59), INT8_C( 99), INT8_C( 1),
-INT8_C( 99), -INT8_C( 39), INT8_C( 21), INT8_C( 102), INT8_C( 40), INT8_C( 112), -INT8_C( 36), -INT8_C( 93),
-INT8_C( 40), INT8_MIN, INT8_C( 41), INT8_C( 6), INT8_C( 9), -INT8_C( 87), INT8_C( 109), -INT8_C( 121),
-INT8_C( 35), -INT8_C( 121), INT8_C( 92), INT8_C( 126), -INT8_C( 13), -INT8_C( 106), INT8_C( 125), INT8_C( 106),
INT8_C( 75), INT8_C( 82), INT8_C( 32), -INT8_C( 12), INT8_C( 23), -INT8_C( 125), -INT8_C( 11), -INT8_C( 75),
INT8_C( 92), INT8_C( 10), INT8_C( 27), -INT8_C( 124), INT8_C( 123), -INT8_C( 9), INT8_C( 40), INT8_C( 83),
INT8_C( 119), INT8_C( 81), INT8_C( 89), INT8_MIN, -INT8_C( 5), -INT8_C( 58), INT8_C( 7), -INT8_C( 40),
INT8_C( 77), INT8_C( 99), INT8_C( 86), INT8_C( 64), -INT8_C( 7), -INT8_C( 45), -INT8_C( 86), INT8_C( 69) },
INT32_C( 38),
{ INT16_C( 0), INT16_C( 653), INT16_C( 0), INT16_C( 288), INT16_C( 472), INT16_C( 398), INT16_C( 514), INT16_C( 0),
INT16_C( 0), INT16_C( 237), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 322), INT16_C( 184), INT16_C( 0),
INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 470), INT16_C( 413), INT16_C( 336), INT16_C( 0), INT16_C( 167),
INT16_C( 198), INT16_C( 258), INT16_C( 331), INT16_C( 298), INT16_C( 305), INT16_C( 0), INT16_C( 0), INT16_C( 296) } },
{ UINT32_C(2851221069),
{ INT8_C( 56), INT8_C( 14), INT8_C( 46), -INT8_C( 77), INT8_C( 5), INT8_C( 86), INT8_C( 6), INT8_C( 125),
-INT8_C( 89), INT8_C( 95), -INT8_C( 3), -INT8_C( 94), INT8_C( 37), INT8_C( 5), INT8_C( 123), INT8_C( 114),
INT8_C( 104), -INT8_C( 47), -INT8_C( 78), INT8_C( 98), -INT8_C( 91), INT8_C( 93), -INT8_C( 89), -INT8_C( 53),
INT8_C( 39), -INT8_C( 32), INT8_C( 8), INT8_C( 117), INT8_C( 14), -INT8_C( 5), INT8_C( 30), INT8_C( 70),
INT8_C( 9), INT8_C( 76), -INT8_C( 6), INT8_C( 14), -INT8_C( 94), INT8_C( 0), -INT8_C( 117), INT8_C( 74),
INT8_C( 96), -INT8_C( 119), -INT8_C( 20), -INT8_C( 123), -INT8_C( 114), INT8_C( 103), -INT8_C( 8), -INT8_C( 10),
INT8_C( 57), -INT8_C( 86), INT8_C( 88), -INT8_C( 34), INT8_C( 7), -INT8_C( 1), -INT8_C( 87), INT8_C( 47),
-INT8_C( 33), -INT8_C( 79), -INT8_C( 92), -INT8_C( 19), -INT8_C( 84), -INT8_C( 62), INT8_C( 52), -INT8_C( 75) },
{ INT8_C( 15), INT8_C( 46), -INT8_C( 60), -INT8_C( 79), INT8_C( 46), INT8_C( 79), -INT8_C( 5), -INT8_C( 114),
-INT8_C( 40), -INT8_C( 24), INT8_C( 20), INT8_C( 102), INT8_C( 79), INT8_C( 12), INT8_C( 93), -INT8_C( 120),
-INT8_C( 74), -INT8_C( 75), INT8_C( 102), -INT8_C( 66), -INT8_C( 75), INT8_C( 15), -INT8_C( 19), -INT8_C( 108),
-INT8_C( 63), -INT8_C( 111), -INT8_C( 126), INT8_C( 109), INT8_C( 83), -INT8_C( 74), INT8_C( 35), INT8_C( 98),
-INT8_C( 28), -INT8_C( 25), INT8_C( 20), INT8_C( 18), INT8_C( 54), INT8_C( 15), -INT8_C( 95), INT8_C( 15),
-INT8_C( 9), -INT8_C( 75), INT8_C( 117), INT8_C( 71), -INT8_C( 63), -INT8_C( 46), -INT8_C( 49), INT8_C( 119),
-INT8_C( 120), INT8_C( 54), INT8_C( 53), INT8_C( 61), INT8_C( 69), INT8_C( 34), -INT8_C( 47), INT8_C( 6),
-INT8_C( 77), INT8_C( 83), INT8_C( 116), INT8_C( 7), INT8_C( 9), -INT8_C( 105), INT8_C( 105), -INT8_C( 19) },
INT32_C( 126),
{ INT16_C( 481), INT16_C( 0), INT16_C( 217), INT16_C( 142), INT16_C( 0), INT16_C( 0), INT16_C( 299), INT16_C( 0),
INT16_C( 0), INT16_C( 204), INT16_C( 156), INT16_C( 249), INT16_C( 0), INT16_C( 486), INT16_C( 0), INT16_C( 0),
INT16_C( 0), INT16_C( 571), INT16_C( 0), INT16_C( 0), INT16_C( 213), INT16_C( 380), INT16_C( 506), INT16_C( 390),
INT16_C( 452), INT16_C( 0), INT16_C( 0), INT16_C( 322), INT16_C( 0), INT16_C( 385), INT16_C( 0), INT16_C( 236) } },
{ UINT32_C(2227413389),
{ INT8_C( 86), INT8_C( 57), -INT8_C( 53), INT8_C( 23), INT8_C( 11), -INT8_C( 101), -INT8_C( 114), -INT8_C( 109),
-INT8_C( 47), -INT8_C( 60), -INT8_C( 48), INT8_C( 22), -INT8_C( 26), -INT8_C( 94), INT8_C( 29), -INT8_C( 102),
-INT8_C( 11), -INT8_C( 111), -INT8_C( 95), -INT8_C( 1), INT8_C( 40), INT8_C( 10), -INT8_C( 20), -INT8_C( 90),
-INT8_C( 120), -INT8_C( 20), INT8_C( 90), INT8_C( 21), -INT8_C( 115), INT8_C( 30), -INT8_C( 103), -INT8_C( 29),
INT8_C( 87), INT8_C( 101), -INT8_C( 6), INT8_C( 98), INT8_C( 0), -INT8_C( 119), -INT8_C( 10), -INT8_C( 47),
INT8_C( 77), -INT8_C( 58), -INT8_C( 25), INT8_C( 51), INT8_C( 104), INT8_C( 4), -INT8_C( 51), INT8_C( 94),
-INT8_C( 107), INT8_C( 110), INT8_C( 93), -INT8_C( 67), INT8_C( 121), INT8_C( 73), INT8_C( 99), INT8_C( 1),
INT8_C( 54), -INT8_C( 66), INT8_C( 22), -INT8_C( 61), -INT8_C( 36), -INT8_C( 81), -INT8_C( 89), INT8_C( 51) },
{ INT8_C( 20), -INT8_C( 95), -INT8_C( 107), INT8_C( 20), INT8_C( 42), -INT8_C( 117), -INT8_C( 27), INT8_C( 119),
INT8_C( 82), -INT8_C( 51), -INT8_C( 85), -INT8_C( 70), -INT8_C( 47), INT8_C( 120), INT8_C( 24), INT8_C( 103),
-INT8_C( 25), INT8_C( 117), INT8_C( 36), INT8_C( 96), -INT8_C( 65), -INT8_C( 120), INT8_C( 97), -INT8_C( 11),
INT8_C( 70), INT8_C( 119), -INT8_C( 72), INT8_C( 34), INT8_C( 38), INT8_C( 95), INT8_C( 85), INT8_C( 59),
INT8_C( 1), -INT8_C( 22), INT8_C( 79), INT8_C( 43), INT8_C( 118), INT8_C( 53), -INT8_C( 93), -INT8_C( 56),
INT8_C( 2), INT8_C( 78), -INT8_C( 126), -INT8_C( 45), -INT8_C( 58), -INT8_C( 101), INT8_C( 58), -INT8_C( 83),
INT8_C( 16), INT8_C( 95), INT8_C( 13), -INT8_C( 49), -INT8_C( 25), INT8_C( 110), -INT8_C( 60), INT8_C( 45),
-INT8_C( 27), INT8_C( 125), INT8_C( 79), INT8_C( 12), -INT8_C( 36), -INT8_C( 92), INT8_C( 71), -INT8_C( 35) },
INT32_C( 142),
{ INT16_C( 347), INT16_C( 0), INT16_C( 285), INT16_C( 374), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 483),
INT16_C( 445), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 274), INT16_C( 0), INT16_C( 162),
INT16_C( 341), INT16_C( 177), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 283), INT16_C( 226),
INT16_C( 0), INT16_C( 0), INT16_C( 387), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 137) } },
{ UINT32_C(3452742859),
{ -INT8_C( 6), INT8_C( 79), -INT8_C( 95), -INT8_C( 64), -INT8_C( 22), -INT8_C( 37), INT8_C( 110), -INT8_C( 6),
INT8_C( 58), INT8_C( 123), -INT8_C( 54), INT8_C( 33), -INT8_C( 22), -INT8_C( 114), INT8_C( 78), -INT8_C( 49),
INT8_C( 11), -INT8_C( 99), -INT8_C( 37), -INT8_C( 24), INT8_C( 65), INT8_C( 34), -INT8_C( 59), -INT8_C( 48),
-INT8_C( 71), -INT8_C( 50), -INT8_C( 44), -INT8_C( 124), INT8_C( 122), -INT8_C( 95), INT8_C( 82), INT8_C( 116),
-INT8_C( 16), -INT8_C( 13), INT8_C( 53), -INT8_C( 38), -INT8_C( 50), -INT8_C( 93), -INT8_C( 44), INT8_C( 9),
INT8_C( 30), -INT8_C( 98), INT8_C( 42), INT8_C( 8), INT8_C( 45), INT8_C( 121), -INT8_C( 40), INT8_C( 56),
INT8_C( 22), -INT8_C( 77), INT8_C( 32), INT8_C( 88), -INT8_C( 42), -INT8_C( 26), INT8_C( 40), -INT8_C( 113),
-INT8_C( 76), -INT8_C( 4), INT8_C( 19), INT8_C( 47), -INT8_C( 99), INT8_C( 101), -INT8_C( 93), -INT8_C( 115) },
{ INT8_C( 88), -INT8_C( 40), INT8_C( 103), INT8_C( 39), INT8_C( 123), INT8_C( 60), INT8_C( 48), -INT8_C( 102),
-INT8_C( 38), INT8_C( 90), -INT8_C( 94), INT8_C( 7), -INT8_C( 45), INT8_C( 122), INT8_C( 64), -INT8_C( 22),
INT8_C( 46), INT8_C( 96), INT8_C( 66), INT8_C( 4), INT8_C( 70), INT8_C( 106), -INT8_C( 109), -INT8_C( 5),
INT8_C( 102), -INT8_C( 90), INT8_C( 42), INT8_C( 4), INT8_C( 12), -INT8_C( 51), -INT8_C( 111), INT8_C( 100),
-INT8_C( 90), -INT8_C( 7), -INT8_C( 117), INT8_C( 33), INT8_C( 53), -INT8_C( 69), -INT8_C( 69), INT8_C( 15),
INT8_C( 22), INT8_C( 94), INT8_C( 23), -INT8_C( 23), -INT8_C( 40), INT8_C( 87), -INT8_C( 45), INT8_C( 6),
-INT8_C( 73), INT8_C( 21), INT8_C( 10), -INT8_C( 2), INT8_MAX, -INT8_C( 99), -INT8_C( 7), -INT8_C( 26),
INT8_C( 68), INT8_C( 35), -INT8_C( 22), INT8_C( 80), -INT8_C( 16), INT8_C( 123), -INT8_C( 76), -INT8_C( 106) },
INT32_C( 116),
{ INT16_C( 510), INT16_C( 249), INT16_C( 0), INT16_C( 543), INT16_C( 0), INT16_C( 0), INT16_C( 454), INT16_C( 196),
INT16_C( 0), INT16_C( 0), INT16_C( 260), INT16_C( 249), INT16_C( 0), INT16_C( 255), INT16_C( 0), INT16_C( 168),
INT16_C( 0), INT16_C( 0), INT16_C( 534), INT16_C( 486), INT16_C( 0), INT16_C( 0), INT16_C( 575), INT16_C( 267),
INT16_C( 507), INT16_C( 0), INT16_C( 329), INT16_C( 366), INT16_C( 0), INT16_C( 0), INT16_C( 124), INT16_C( 147) } },
{ UINT32_C( 297366523),
{ -INT8_C( 47), -INT8_C( 48), -INT8_C( 5), -INT8_C( 86), INT8_C( 39), -INT8_C( 50), -INT8_C( 80), -INT8_C( 34),
-INT8_C( 28), -INT8_C( 69), -INT8_C( 36), INT8_C( 99), INT8_C( 88), -INT8_C( 43), INT8_C( 73), -INT8_C( 100),
-INT8_C( 8), INT8_C( 51), -INT8_C( 20), -INT8_C( 23), -INT8_C( 81), -INT8_C( 95), INT8_MAX, INT8_C( 35),
-INT8_C( 31), INT8_C( 55), -INT8_C( 51), -INT8_C( 36), -INT8_C( 85), -INT8_C( 122), -INT8_C( 18), INT8_C( 124),
INT8_C( 86), -INT8_C( 23), INT8_C( 38), INT8_C( 125), -INT8_C( 73), -INT8_C( 41), INT8_C( 91), -INT8_C( 101),
-INT8_C( 110), INT8_C( 56), -INT8_C( 1), -INT8_C( 22), INT8_C( 13), INT8_C( 72), -INT8_C( 121), INT8_C( 6),
INT8_C( 124), INT8_C( 115), -INT8_C( 17), INT8_C( 43), INT8_C( 20), INT8_C( 110), INT8_C( 78), -INT8_C( 11),
-INT8_C( 90), INT8_C( 27), -INT8_C( 46), INT8_C( 81), -INT8_C( 95), -INT8_C( 64), -INT8_C( 51), -INT8_C( 9) },
{ -INT8_C( 87), -INT8_C( 12), INT8_C( 116), INT8_C( 96), -INT8_C( 53), -INT8_C( 48), -INT8_C( 4), INT8_C( 93),
INT8_C( 8), -INT8_C( 5), INT8_C( 71), INT8_C( 21), INT8_C( 67), -INT8_C( 50), INT8_C( 27), -INT8_C( 65),
INT8_C( 66), INT8_C( 10), -INT8_C( 22), INT8_C( 86), INT8_C( 121), INT8_C( 57), INT8_C( 76), INT8_C( 31),
INT8_C( 84), INT8_C( 30), INT8_C( 112), -INT8_C( 10), -INT8_C( 34), INT8_C( 61), -INT8_C( 19), -INT8_C( 121),
INT8_C( 49), INT8_C( 98), -INT8_C( 25), -INT8_C( 4), INT8_C( 50), -INT8_C( 29), INT8_C( 89), INT8_C( 58),
-INT8_C( 34), -INT8_C( 95), INT8_C( 79), INT8_C( 34), INT8_C( 111), INT8_C( 107), -INT8_C( 31), -INT8_C( 79),
INT8_C( 117), -INT8_C( 52), INT8_C( 8), -INT8_C( 18), INT8_C( 5), INT8_C( 84), INT8_C( 13), INT8_C( 89),
INT8_C( 114), INT8_C( 125), INT8_C( 79), INT8_C( 80), -INT8_C( 69), INT8_C( 61), -INT8_C( 41), -INT8_C( 20) },
INT32_C( 159),
{ INT16_C( 389), INT16_C( 347), INT16_C( 0), INT16_C( 516), INT16_C( 84), INT16_C( 303), INT16_C( 444), INT16_C( 473),
INT16_C( 135), INT16_C( 485), INT16_C( 0), INT16_C( 0), INT16_C( 424), INT16_C( 499), INT16_C( 446), INT16_C( 0),
INT16_C( 390), INT16_C( 0), INT16_C( 0), INT16_C( 196), INT16_C( 609), INT16_C( 323), INT16_C( 0), INT16_C( 294),
INT16_C( 334), INT16_C( 0), INT16_C( 0), INT16_C( 0), INT16_C( 423), INT16_C( 0), INT16_C( 0), INT16_C( 0) } },
};
simde__m512i a, b, r;
a = simde_mm512_loadu_epi8(test_vec[0].a);
b = simde_mm512_loadu_epi8(test_vec[0].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[0].k, a, b, INT32_C( 250));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[0].r));
a = simde_mm512_loadu_epi8(test_vec[1].a);
b = simde_mm512_loadu_epi8(test_vec[1].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[1].k, a, b, INT32_C( 246));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[1].r));
a = simde_mm512_loadu_epi8(test_vec[2].a);
b = simde_mm512_loadu_epi8(test_vec[2].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[2].k, a, b, INT32_C( 239));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[2].r));
a = simde_mm512_loadu_epi8(test_vec[3].a);
b = simde_mm512_loadu_epi8(test_vec[3].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[3].k, a, b, INT32_C( 38));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[3].r));
a = simde_mm512_loadu_epi8(test_vec[4].a);
b = simde_mm512_loadu_epi8(test_vec[4].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[4].k, a, b, INT32_C( 126));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[4].r));
a = simde_mm512_loadu_epi8(test_vec[5].a);
b = simde_mm512_loadu_epi8(test_vec[5].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[5].k, a, b, INT32_C( 142));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[5].r));
a = simde_mm512_loadu_epi8(test_vec[6].a);
b = simde_mm512_loadu_epi8(test_vec[6].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[6].k, a, b, INT32_C( 116));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[6].r));
a = simde_mm512_loadu_epi8(test_vec[7].a);
b = simde_mm512_loadu_epi8(test_vec[7].b);
r = simde_mm512_maskz_dbsad_epu8(test_vec[7].k, a, b, INT32_C( 159));
simde_test_x86_assert_equal_i16x32(r, simde_mm512_loadu_epi16(test_vec[7].r));
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde__mmask32 k = simde_test_x86_random_mmask32();
simde__m512i a = simde_test_x86_random_i8x64();
simde__m512i b = simde_test_x86_random_i8x64();
int imm8 = simde_test_codegen_random_i32() & 255;
simde__m512i r;
SIMDE_CONSTIFY_256_(simde_mm512_maskz_dbsad_epu8, r, simde_mm512_setzero_si512(), imm8, k, a, b);
simde_test_x86_write_mmask32(2, k, SIMDE_TEST_VEC_POS_FIRST);
simde_test_x86_write_i8x64(2, a, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i8x64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_codegen_write_i32(2, imm8, SIMDE_TEST_VEC_POS_MIDDLE);
simde_test_x86_write_i16x32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(mm_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_dbsad_epu8)
SIMDE_TEST_FUNC_LIST_END
#include <test/x86/avx512/test-avx512-footer.h>