libdpf/thirdparty/simde/test/arm/neon/trn.c
Ryan Henry e4e666f459 Initial import of libdpf.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 14:08:32 -06:00

1181 lines
66 KiB
C

#define SIMDE_TEST_ARM_NEON_INSN trn
#include <test/arm/neon/test-neon.h>
#include <simde/arm/neon/trn.h>
#if !defined(SIMDE_BUG_INTEL_857088)
static int
test_simde_vtrn_f32 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float32 a[2];
simde_float32 b[2];
simde_float32 r[2][2];
} test_vec[] = {
{ { SIMDE_FLOAT32_C( 394.91), SIMDE_FLOAT32_C( 715.66) },
{ SIMDE_FLOAT32_C( -854.42), SIMDE_FLOAT32_C( 359.77) },
{
{ SIMDE_FLOAT32_C( 394.91), SIMDE_FLOAT32_C( -854.42) },
{ SIMDE_FLOAT32_C( 715.66), SIMDE_FLOAT32_C( 359.77) },
},
},
{ { SIMDE_FLOAT32_C( -579.97), SIMDE_FLOAT32_C( -698.40) },
{ SIMDE_FLOAT32_C( 147.69), SIMDE_FLOAT32_C( 533.92) },
{
{ SIMDE_FLOAT32_C( -579.97), SIMDE_FLOAT32_C( 147.69) },
{ SIMDE_FLOAT32_C( -698.40), SIMDE_FLOAT32_C( 533.92) },
},
},
{ { SIMDE_FLOAT32_C( -647.47), SIMDE_FLOAT32_C( 944.41) },
{ SIMDE_FLOAT32_C( -570.83), SIMDE_FLOAT32_C( -698.09) },
{
{ SIMDE_FLOAT32_C( -647.47), SIMDE_FLOAT32_C( -570.83) },
{ SIMDE_FLOAT32_C( 944.41), SIMDE_FLOAT32_C( -698.09) },
},
},
{ { SIMDE_FLOAT32_C( -636.98), SIMDE_FLOAT32_C( 269.75) },
{ SIMDE_FLOAT32_C( 457.30), SIMDE_FLOAT32_C( -517.32) },
{
{ SIMDE_FLOAT32_C( -636.98), SIMDE_FLOAT32_C( 457.30) },
{ SIMDE_FLOAT32_C( 269.75), SIMDE_FLOAT32_C( -517.32) },
},
},
{ { SIMDE_FLOAT32_C( 625.59), SIMDE_FLOAT32_C( 316.45) },
{ SIMDE_FLOAT32_C( -969.65), SIMDE_FLOAT32_C( 377.99) },
{
{ SIMDE_FLOAT32_C( 625.59), SIMDE_FLOAT32_C( -969.65) },
{ SIMDE_FLOAT32_C( 316.45), SIMDE_FLOAT32_C( 377.99) },
},
},
{ { SIMDE_FLOAT32_C( 858.52), SIMDE_FLOAT32_C( -465.14) },
{ SIMDE_FLOAT32_C( 468.83), SIMDE_FLOAT32_C( -15.96) },
{
{ SIMDE_FLOAT32_C( 858.52), SIMDE_FLOAT32_C( 468.83) },
{ SIMDE_FLOAT32_C( -465.14), SIMDE_FLOAT32_C( -15.96) },
},
},
{ { SIMDE_FLOAT32_C( -52.83), SIMDE_FLOAT32_C( 881.31) },
{ SIMDE_FLOAT32_C( -110.73), SIMDE_FLOAT32_C( 761.20) },
{
{ SIMDE_FLOAT32_C( -52.83), SIMDE_FLOAT32_C( -110.73) },
{ SIMDE_FLOAT32_C( 881.31), SIMDE_FLOAT32_C( 761.20) },
},
},
{ { SIMDE_FLOAT32_C( -940.87), SIMDE_FLOAT32_C( 486.49) },
{ SIMDE_FLOAT32_C( 618.70), SIMDE_FLOAT32_C( 454.05) },
{
{ SIMDE_FLOAT32_C( -940.87), SIMDE_FLOAT32_C( 618.70) },
{ SIMDE_FLOAT32_C( 486.49), SIMDE_FLOAT32_C( 454.05) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x2_t a = simde_vld1_f32(test_vec[i].a);
simde_float32x2_t b = simde_vld1_f32(test_vec[i].b);
simde_float32x2x2_t r = simde_vtrn_f32(a, b);
simde_test_arm_neon_assert_equal_f32x2(r.val[0], simde_vld1_f32(test_vec[i].r[0]), 1);
simde_test_arm_neon_assert_equal_f32x2(r.val[1], simde_vld1_f32(test_vec[i].r[1]), 1);
}
return 0;
}
static int
test_simde_vtrn_s8 (SIMDE_MUNIT_TEST_ARGS) {
struct {
int8_t a[8];
int8_t b[8];
int8_t r[2][8];
} test_vec[] = {
{ { -INT8_C( 66), INT8_C( 38), -INT8_C( 90), INT8_C( 86), INT8_C( 96), INT8_C( 65), INT8_C( 68), -INT8_C( 61) },
{ INT8_C( 123), INT8_C( 78), -INT8_C( 60), INT8_C( 111), INT8_C( 17), INT8_C( 8), INT8_C( 37), INT8_C( 95) },
{
{ -INT8_C( 66), INT8_C( 123), -INT8_C( 90), -INT8_C( 60), INT8_C( 96), INT8_C( 17), INT8_C( 68), INT8_C( 37) },
{ INT8_C( 38), INT8_C( 78), INT8_C( 86), INT8_C( 111), INT8_C( 65), INT8_C( 8), -INT8_C( 61), INT8_C( 95) },
},
},
{ { -INT8_C( 36), INT8_C( 105), INT8_C( 18), INT8_C( 56), -INT8_C( 95), INT8_C( 16), -INT8_C( 54), INT8_C( 86) },
{ -INT8_C( 27), -INT8_C( 28), -INT8_C( 104), -INT8_C( 70), -INT8_C( 36), INT8_C( 120), -INT8_C( 63), -INT8_C( 102) },
{
{ -INT8_C( 36), -INT8_C( 27), INT8_C( 18), -INT8_C( 104), -INT8_C( 95), -INT8_C( 36), -INT8_C( 54), -INT8_C( 63) },
{ INT8_C( 105), -INT8_C( 28), INT8_C( 56), -INT8_C( 70), INT8_C( 16), INT8_C( 120), INT8_C( 86), -INT8_C( 102) },
},
},
{ { -INT8_C( 98), INT8_C( 103), -INT8_C( 16), -INT8_C( 1), -INT8_C( 88), INT8_C( 52), -INT8_C( 62), INT8_C( 35) },
{ -INT8_C( 126), -INT8_C( 121), -INT8_C( 109), -INT8_C( 108), -INT8_C( 113), -INT8_C( 72), -INT8_C( 13), INT8_C( 107) },
{
{ -INT8_C( 98), -INT8_C( 126), -INT8_C( 16), -INT8_C( 109), -INT8_C( 88), -INT8_C( 113), -INT8_C( 62), -INT8_C( 13) },
{ INT8_C( 103), -INT8_C( 121), -INT8_C( 1), -INT8_C( 108), INT8_C( 52), -INT8_C( 72), INT8_C( 35), INT8_C( 107) },
},
},
{ { INT8_C( 33), INT8_C( 5), -INT8_C( 93), -INT8_C( 62), INT8_C( 21), INT8_C( 110), INT8_C( 24), -INT8_C( 5) },
{ INT8_C( 82), -INT8_C( 80), -INT8_C( 75), INT8_C( 46), INT8_C( 40), INT8_C( 118), -INT8_C( 56), -INT8_C( 57) },
{
{ INT8_C( 33), INT8_C( 82), -INT8_C( 93), -INT8_C( 75), INT8_C( 21), INT8_C( 40), INT8_C( 24), -INT8_C( 56) },
{ INT8_C( 5), -INT8_C( 80), -INT8_C( 62), INT8_C( 46), INT8_C( 110), INT8_C( 118), -INT8_C( 5), -INT8_C( 57) },
},
},
{ { -INT8_C( 35), -INT8_C( 72), -INT8_C( 58), -INT8_C( 123), -INT8_C( 19), -INT8_C( 120), -INT8_C( 87), INT8_C( 111) },
{ INT8_C( 15), INT8_C( 60), INT8_C( 3), -INT8_C( 98), -INT8_C( 12), -INT8_C( 10), INT8_C( 9), INT8_C( 21) },
{
{ -INT8_C( 35), INT8_C( 15), -INT8_C( 58), INT8_C( 3), -INT8_C( 19), -INT8_C( 12), -INT8_C( 87), INT8_C( 9) },
{ -INT8_C( 72), INT8_C( 60), -INT8_C( 123), -INT8_C( 98), -INT8_C( 120), -INT8_C( 10), INT8_C( 111), INT8_C( 21) },
},
},
{ { -INT8_C( 5), -INT8_C( 83), -INT8_C( 41), INT8_C( 17), INT8_C( 27), -INT8_C( 17), INT8_C( 12), INT8_C( 109) },
{ -INT8_C( 97), -INT8_C( 63), -INT8_C( 101), -INT8_C( 56), INT8_C( 55), INT8_C( 99), -INT8_C( 113), INT8_C( 20) },
{
{ -INT8_C( 5), -INT8_C( 97), -INT8_C( 41), -INT8_C( 101), INT8_C( 27), INT8_C( 55), INT8_C( 12), -INT8_C( 113) },
{ -INT8_C( 83), -INT8_C( 63), INT8_C( 17), -INT8_C( 56), -INT8_C( 17), INT8_C( 99), INT8_C( 109), INT8_C( 20) },
},
},
{ { INT8_C( 27), INT8_C( 85), -INT8_C( 103), INT8_C( 8), -INT8_C( 35), INT8_C( 66), INT8_C( 120), -INT8_C( 19) },
{ INT8_C( 126), INT8_C( 123), -INT8_C( 117), INT8_C( 114), INT8_C( 114), -INT8_C( 107), -INT8_C( 121), INT8_C( 109) },
{
{ INT8_C( 27), INT8_C( 126), -INT8_C( 103), -INT8_C( 117), -INT8_C( 35), INT8_C( 114), INT8_C( 120), -INT8_C( 121) },
{ INT8_C( 85), INT8_C( 123), INT8_C( 8), INT8_C( 114), INT8_C( 66), -INT8_C( 107), -INT8_C( 19), INT8_C( 109) },
},
},
{ { INT8_C( 66), INT8_C( 94), INT8_C( 126), INT8_C( 93), INT8_C( 77), -INT8_C( 118), -INT8_C( 54), -INT8_C( 19) },
{ INT8_C( 75), INT8_C( 101), -INT8_C( 75), -INT8_C( 126), -INT8_C( 56), INT8_C( 68), -INT8_C( 106), -INT8_C( 29) },
{
{ INT8_C( 66), INT8_C( 75), INT8_C( 126), -INT8_C( 75), INT8_C( 77), -INT8_C( 56), -INT8_C( 54), -INT8_C( 106) },
{ INT8_C( 94), INT8_C( 101), INT8_C( 93), -INT8_C( 126), -INT8_C( 118), INT8_C( 68), -INT8_C( 19), -INT8_C( 29) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x8_t a = simde_vld1_s8(test_vec[i].a);
simde_int8x8_t b = simde_vld1_s8(test_vec[i].b);
simde_int8x8x2_t r = simde_vtrn_s8(a, b);
simde_test_arm_neon_assert_equal_i8x8(r.val[0], simde_vld1_s8(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_i8x8(r.val[1], simde_vld1_s8(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrn_s16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
int16_t a[4];
int16_t b[4];
int16_t r[2][4];
} test_vec[] = {
{ { INT16_C( 29957), -INT16_C( 14479), -INT16_C( 14585), INT16_C( 20407) },
{ -INT16_C( 13813), -INT16_C( 5946), -INT16_C( 9907), INT16_C( 28653) },
{
{ INT16_C( 29957), -INT16_C( 13813), -INT16_C( 14585), -INT16_C( 9907) },
{ -INT16_C( 14479), -INT16_C( 5946), INT16_C( 20407), INT16_C( 28653) },
},
},
{ { -INT16_C( 5745), INT16_C( 30710), INT16_C( 14724), -INT16_C( 32756) },
{ INT16_C( 19325), -INT16_C( 32716), -INT16_C( 11477), INT16_C( 12334) },
{
{ -INT16_C( 5745), INT16_C( 19325), INT16_C( 14724), -INT16_C( 11477) },
{ INT16_C( 30710), -INT16_C( 32716), -INT16_C( 32756), INT16_C( 12334) },
},
},
{ { -INT16_C( 24760), INT16_C( 20728), -INT16_C( 20633), INT16_C( 29343) },
{ INT16_C( 25978), -INT16_C( 14502), INT16_C( 18494), -INT16_C( 12746) },
{
{ -INT16_C( 24760), INT16_C( 25978), -INT16_C( 20633), INT16_C( 18494) },
{ INT16_C( 20728), -INT16_C( 14502), INT16_C( 29343), -INT16_C( 12746) },
},
},
{ { INT16_C( 11313), -INT16_C( 18875), INT16_C( 21093), -INT16_C( 7626) },
{ INT16_C( 27293), -INT16_C( 14238), -INT16_C( 28355), -INT16_C( 30983) },
{
{ INT16_C( 11313), INT16_C( 27293), INT16_C( 21093), -INT16_C( 28355) },
{ -INT16_C( 18875), -INT16_C( 14238), -INT16_C( 7626), -INT16_C( 30983) },
},
},
{ { -INT16_C( 3792), -INT16_C( 26666), INT16_C( 30112), INT16_C( 6666) },
{ INT16_C( 25818), INT16_C( 6625), INT16_C( 6060), -INT16_C( 8473) },
{
{ -INT16_C( 3792), INT16_C( 25818), INT16_C( 30112), INT16_C( 6060) },
{ -INT16_C( 26666), INT16_C( 6625), INT16_C( 6666), -INT16_C( 8473) },
},
},
{ { INT16_C( 11331), -INT16_C( 22380), -INT16_C( 13698), INT16_C( 7051) },
{ -INT16_C( 4811), INT16_C( 29412), -INT16_C( 8834), -INT16_C( 20488) },
{
{ INT16_C( 11331), -INT16_C( 4811), -INT16_C( 13698), -INT16_C( 8834) },
{ -INT16_C( 22380), INT16_C( 29412), INT16_C( 7051), -INT16_C( 20488) },
},
},
{ { -INT16_C( 12594), INT16_C( 28230), INT16_C( 20547), INT16_C( 7817) },
{ INT16_C( 27317), INT16_C( 24887), INT16_C( 7810), -INT16_C( 15041) },
{
{ -INT16_C( 12594), INT16_C( 27317), INT16_C( 20547), INT16_C( 7810) },
{ INT16_C( 28230), INT16_C( 24887), INT16_C( 7817), -INT16_C( 15041) },
},
},
{ { -INT16_C( 11446), -INT16_C( 13970), -INT16_C( 1634), -INT16_C( 11292) },
{ -INT16_C( 14106), INT16_C( 25925), INT16_C( 16037), INT16_C( 29460) },
{
{ -INT16_C( 11446), -INT16_C( 14106), -INT16_C( 1634), INT16_C( 16037) },
{ -INT16_C( 13970), INT16_C( 25925), -INT16_C( 11292), INT16_C( 29460) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x4_t a = simde_vld1_s16(test_vec[i].a);
simde_int16x4_t b = simde_vld1_s16(test_vec[i].b);
simde_int16x4x2_t r = simde_vtrn_s16(a, b);
simde_test_arm_neon_assert_equal_i16x4(r.val[0], simde_vld1_s16(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_i16x4(r.val[1], simde_vld1_s16(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrn_s32 (SIMDE_MUNIT_TEST_ARGS) {
struct {
int32_t a[2];
int32_t b[2];
int32_t r[2][2];
} test_vec[] = {
{ { INT32_C( 2034330713), -INT32_C( 659240214) },
{ -INT32_C( 236237116), INT32_C( 331646780) },
{
{ INT32_C( 2034330713), -INT32_C( 236237116) },
{ -INT32_C( 659240214), INT32_C( 331646780) },
},
},
{ { -INT32_C( 1506908108), INT32_C( 1079419151) },
{ -INT32_C( 1477742611), INT32_C( 506021572) },
{
{ -INT32_C( 1506908108), -INT32_C( 1477742611) },
{ INT32_C( 1079419151), INT32_C( 506021572) },
},
},
{ { -INT32_C( 1667798350), -INT32_C( 126596300) },
{ -INT32_C( 689348711), INT32_C( 468299494) },
{
{ -INT32_C( 1667798350), -INT32_C( 689348711) },
{ -INT32_C( 126596300), INT32_C( 468299494) },
},
},
{ { INT32_C( 633411606), -INT32_C( 1503323975) },
{ INT32_C( 1280135559), INT32_C( 1231713943) },
{
{ INT32_C( 633411606), INT32_C( 1280135559) },
{ -INT32_C( 1503323975), INT32_C( 1231713943) },
},
},
{ { INT32_C( 367329760), -INT32_C( 452110004) },
{ -INT32_C( 1615071303), -INT32_C( 1145395803) },
{
{ INT32_C( 367329760), -INT32_C( 1615071303) },
{ -INT32_C( 452110004), -INT32_C( 1145395803) },
},
},
{ { INT32_C( 1994423485), INT32_C( 454837908) },
{ INT32_C( 778529175), -INT32_C( 1082666529) },
{
{ INT32_C( 1994423485), INT32_C( 778529175) },
{ INT32_C( 454837908), -INT32_C( 1082666529) },
},
},
{ { INT32_C( 517233874), INT32_C( 1845813941) },
{ INT32_C( 2114895833), INT32_C( 557434980) },
{
{ INT32_C( 517233874), INT32_C( 2114895833) },
{ INT32_C( 1845813941), INT32_C( 557434980) },
},
},
{ { -INT32_C( 661186236), -INT32_C( 151735457) },
{ -INT32_C( 81503460), -INT32_C( 4482259) },
{
{ -INT32_C( 661186236), -INT32_C( 81503460) },
{ -INT32_C( 151735457), -INT32_C( 4482259) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x2_t a = simde_vld1_s32(test_vec[i].a);
simde_int32x2_t b = simde_vld1_s32(test_vec[i].b);
simde_int32x2x2_t r = simde_vtrn_s32(a, b);
simde_test_arm_neon_assert_equal_i32x2(r.val[0], simde_vld1_s32(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_i32x2(r.val[1], simde_vld1_s32(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrn_u8 (SIMDE_MUNIT_TEST_ARGS) {
struct {
uint8_t a[8];
uint8_t b[8];
uint8_t r[2][8];
} test_vec[] = {
{ { UINT8_C(156), UINT8_C(211), UINT8_C(239), UINT8_C(201), UINT8_C(251), UINT8_C( 68), UINT8_C(216), UINT8_C(173) },
{ UINT8_C(147), UINT8_C( 21), UINT8_C( 33), UINT8_C(140), UINT8_C(167), UINT8_C(115), UINT8_C( 36), UINT8_C( 31) },
{
{ UINT8_C(156), UINT8_C(147), UINT8_C(239), UINT8_C( 33), UINT8_C(251), UINT8_C(167), UINT8_C(216), UINT8_C( 36) },
{ UINT8_C(211), UINT8_C( 21), UINT8_C(201), UINT8_C(140), UINT8_C( 68), UINT8_C(115), UINT8_C(173), UINT8_C( 31) },
},
},
{ { UINT8_C( 53), UINT8_C( 85), UINT8_C(184), UINT8_C( 44), UINT8_C( 3), UINT8_C( 4), UINT8_C(166), UINT8_C( 52) },
{ UINT8_C( 61), UINT8_C(108), UINT8_C( 17), UINT8_C( 42), UINT8_C( 56), UINT8_C(179), UINT8_C(216), UINT8_C(212) },
{
{ UINT8_C( 53), UINT8_C( 61), UINT8_C(184), UINT8_C( 17), UINT8_C( 3), UINT8_C( 56), UINT8_C(166), UINT8_C(216) },
{ UINT8_C( 85), UINT8_C(108), UINT8_C( 44), UINT8_C( 42), UINT8_C( 4), UINT8_C(179), UINT8_C( 52), UINT8_C(212) },
},
},
{ { UINT8_C(134), UINT8_C(199), UINT8_C(157), UINT8_C(129), UINT8_C( 11), UINT8_C(118), UINT8_C( 46), UINT8_C(158) },
{ UINT8_C(139), UINT8_C( 80), UINT8_C( 43), UINT8_C( 50), UINT8_C(195), UINT8_C( 79), UINT8_C( 81), UINT8_C(249) },
{
{ UINT8_C(134), UINT8_C(139), UINT8_C(157), UINT8_C( 43), UINT8_C( 11), UINT8_C(195), UINT8_C( 46), UINT8_C( 81) },
{ UINT8_C(199), UINT8_C( 80), UINT8_C(129), UINT8_C( 50), UINT8_C(118), UINT8_C( 79), UINT8_C(158), UINT8_C(249) },
},
},
{ { UINT8_C(164), UINT8_C( 9), UINT8_C( 37), UINT8_C(167), UINT8_C( 13), UINT8_C(203), UINT8_C(219), UINT8_C( 75) },
{ UINT8_C( 56), UINT8_C(236), UINT8_C(117), UINT8_C(112), UINT8_C(159), UINT8_C( 77), UINT8_C( 69), UINT8_C( 37) },
{
{ UINT8_C(164), UINT8_C( 56), UINT8_C( 37), UINT8_C(117), UINT8_C( 13), UINT8_C(159), UINT8_C(219), UINT8_C( 69) },
{ UINT8_C( 9), UINT8_C(236), UINT8_C(167), UINT8_C(112), UINT8_C(203), UINT8_C( 77), UINT8_C( 75), UINT8_C( 37) },
},
},
{ { UINT8_C( 21), UINT8_C(226), UINT8_C(166), UINT8_C( 32), UINT8_C( 88), UINT8_C(213), UINT8_C(191), UINT8_C(227) },
{ UINT8_C( 37), UINT8_C(234), UINT8_C( 22), UINT8_C(232), UINT8_C( 57), UINT8_C(103), UINT8_C(225), UINT8_C(221) },
{
{ UINT8_C( 21), UINT8_C( 37), UINT8_C(166), UINT8_C( 22), UINT8_C( 88), UINT8_C( 57), UINT8_C(191), UINT8_C(225) },
{ UINT8_C(226), UINT8_C(234), UINT8_C( 32), UINT8_C(232), UINT8_C(213), UINT8_C(103), UINT8_C(227), UINT8_C(221) },
},
},
{ { UINT8_C(113), UINT8_C( 6), UINT8_C(132), UINT8_C(126), UINT8_C(210), UINT8_C( 95), UINT8_C(201), UINT8_C( 10) },
{ UINT8_C( 75), UINT8_C( 63), UINT8_C(122), UINT8_C(235), UINT8_C(140), UINT8_C(191), UINT8_C( 16), UINT8_C(161) },
{
{ UINT8_C(113), UINT8_C( 75), UINT8_C(132), UINT8_C(122), UINT8_C(210), UINT8_C(140), UINT8_C(201), UINT8_C( 16) },
{ UINT8_C( 6), UINT8_C( 63), UINT8_C(126), UINT8_C(235), UINT8_C( 95), UINT8_C(191), UINT8_C( 10), UINT8_C(161) },
},
},
{ { UINT8_C(162), UINT8_C(183), UINT8_C(194), UINT8_C(250), UINT8_C(140), UINT8_C(129), UINT8_C(222), UINT8_C(177) },
{ UINT8_C(107), UINT8_C(244), UINT8_C(153), UINT8_C(164), UINT8_C( 91), UINT8_C(123), UINT8_C(129), UINT8_C(204) },
{
{ UINT8_C(162), UINT8_C(107), UINT8_C(194), UINT8_C(153), UINT8_C(140), UINT8_C( 91), UINT8_C(222), UINT8_C(129) },
{ UINT8_C(183), UINT8_C(244), UINT8_C(250), UINT8_C(164), UINT8_C(129), UINT8_C(123), UINT8_C(177), UINT8_C(204) },
},
},
{ { UINT8_C(129), UINT8_C( 5), UINT8_C( 75), UINT8_C( 83), UINT8_C(100), UINT8_C( 20), UINT8_C( 93), UINT8_C(175) },
{ UINT8_C( 83), UINT8_C(216), UINT8_C(154), UINT8_C(224), UINT8_C(151), UINT8_C(171), UINT8_C(129), UINT8_C( 57) },
{
{ UINT8_C(129), UINT8_C( 83), UINT8_C( 75), UINT8_C(154), UINT8_C(100), UINT8_C(151), UINT8_C( 93), UINT8_C(129) },
{ UINT8_C( 5), UINT8_C(216), UINT8_C( 83), UINT8_C(224), UINT8_C( 20), UINT8_C(171), UINT8_C(175), UINT8_C( 57) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
simde_uint8x8_t b = simde_vld1_u8(test_vec[i].b);
simde_uint8x8x2_t r = simde_vtrn_u8(a, b);
simde_test_arm_neon_assert_equal_u8x8(r.val[0], simde_vld1_u8(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_u8x8(r.val[1], simde_vld1_u8(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrn_u16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
uint16_t a[4];
uint16_t b[4];
uint16_t r[2][4];
} test_vec[] = {
{ { UINT16_C(39077), UINT16_C(38350), UINT16_C( 1512), UINT16_C(63202) },
{ UINT16_C(45315), UINT16_C( 4567), UINT16_C(18974), UINT16_C(10275) },
{
{ UINT16_C(39077), UINT16_C(45315), UINT16_C( 1512), UINT16_C(18974) },
{ UINT16_C(38350), UINT16_C( 4567), UINT16_C(63202), UINT16_C(10275) },
},
},
{ { UINT16_C(14563), UINT16_C(36858), UINT16_C(33303), UINT16_C(63726) },
{ UINT16_C(24487), UINT16_C(30580), UINT16_C(30894), UINT16_C(21608) },
{
{ UINT16_C(14563), UINT16_C(24487), UINT16_C(33303), UINT16_C(30894) },
{ UINT16_C(36858), UINT16_C(30580), UINT16_C(63726), UINT16_C(21608) },
},
},
{ { UINT16_C(13841), UINT16_C(63977), UINT16_C(52284), UINT16_C(16367) },
{ UINT16_C(50813), UINT16_C(39761), UINT16_C(29712), UINT16_C(62660) },
{
{ UINT16_C(13841), UINT16_C(50813), UINT16_C(52284), UINT16_C(29712) },
{ UINT16_C(63977), UINT16_C(39761), UINT16_C(16367), UINT16_C(62660) },
},
},
{ { UINT16_C(48812), UINT16_C(50051), UINT16_C(28993), UINT16_C(59580) },
{ UINT16_C(12497), UINT16_C(32608), UINT16_C(51369), UINT16_C(47827) },
{
{ UINT16_C(48812), UINT16_C(12497), UINT16_C(28993), UINT16_C(51369) },
{ UINT16_C(50051), UINT16_C(32608), UINT16_C(59580), UINT16_C(47827) },
},
},
{ { UINT16_C(48639), UINT16_C(15283), UINT16_C(41609), UINT16_C( 1658) },
{ UINT16_C(52073), UINT16_C(31138), UINT16_C(26175), UINT16_C(60269) },
{
{ UINT16_C(48639), UINT16_C(52073), UINT16_C(41609), UINT16_C(26175) },
{ UINT16_C(15283), UINT16_C(31138), UINT16_C( 1658), UINT16_C(60269) },
},
},
{ { UINT16_C(61732), UINT16_C(26031), UINT16_C(27490), UINT16_C(13134) },
{ UINT16_C(44699), UINT16_C(17587), UINT16_C(34422), UINT16_C(30206) },
{
{ UINT16_C(61732), UINT16_C(44699), UINT16_C(27490), UINT16_C(34422) },
{ UINT16_C(26031), UINT16_C(17587), UINT16_C(13134), UINT16_C(30206) },
},
},
{ { UINT16_C(45379), UINT16_C(52400), UINT16_C(11092), UINT16_C(48595) },
{ UINT16_C(30198), UINT16_C(13878), UINT16_C(42203), UINT16_C(65313) },
{
{ UINT16_C(45379), UINT16_C(30198), UINT16_C(11092), UINT16_C(42203) },
{ UINT16_C(52400), UINT16_C(13878), UINT16_C(48595), UINT16_C(65313) },
},
},
{ { UINT16_C(53397), UINT16_C(63333), UINT16_C(45883), UINT16_C(55083) },
{ UINT16_C(56929), UINT16_C(55067), UINT16_C( 6756), UINT16_C(43085) },
{
{ UINT16_C(53397), UINT16_C(56929), UINT16_C(45883), UINT16_C( 6756) },
{ UINT16_C(63333), UINT16_C(55067), UINT16_C(55083), UINT16_C(43085) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
simde_uint16x4_t b = simde_vld1_u16(test_vec[i].b);
simde_uint16x4x2_t r = simde_vtrn_u16(a, b);
simde_test_arm_neon_assert_equal_u16x4(r.val[0], simde_vld1_u16(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_u16x4(r.val[1], simde_vld1_u16(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrn_u32 (SIMDE_MUNIT_TEST_ARGS) {
struct {
uint32_t a[2];
uint32_t b[2];
uint32_t r[2][2];
} test_vec[] = {
{ { UINT32_C(4008918152), UINT32_C(1302258451) },
{ UINT32_C( 362140121), UINT32_C(3609334470) },
{
{ UINT32_C(4008918152), UINT32_C( 362140121) },
{ UINT32_C(1302258451), UINT32_C(3609334470) },
},
},
{ { UINT32_C(2784007120), UINT32_C( 955628426) },
{ UINT32_C(1766220593), UINT32_C(4102521708) },
{
{ UINT32_C(2784007120), UINT32_C(1766220593) },
{ UINT32_C( 955628426), UINT32_C(4102521708) },
},
},
{ { UINT32_C(3538057919), UINT32_C( 924877150) },
{ UINT32_C( 407745874), UINT32_C(2565828552) },
{
{ UINT32_C(3538057919), UINT32_C( 407745874) },
{ UINT32_C( 924877150), UINT32_C(2565828552) },
},
},
{ { UINT32_C(2369707779), UINT32_C(3435541403) },
{ UINT32_C( 37031062), UINT32_C(1324792975) },
{
{ UINT32_C(2369707779), UINT32_C( 37031062) },
{ UINT32_C(3435541403), UINT32_C(1324792975) },
},
},
{ { UINT32_C(2502023479), UINT32_C(2899067226) },
{ UINT32_C(3200588278), UINT32_C(2354558089) },
{
{ UINT32_C(2502023479), UINT32_C(3200588278) },
{ UINT32_C(2899067226), UINT32_C(2354558089) },
},
},
{ { UINT32_C( 790205844), UINT32_C(1610342344) },
{ UINT32_C(2069967084), UINT32_C( 600463596) },
{
{ UINT32_C( 790205844), UINT32_C(2069967084) },
{ UINT32_C(1610342344), UINT32_C( 600463596) },
},
},
{ { UINT32_C(2344151857), UINT32_C( 574063916) },
{ UINT32_C( 669121694), UINT32_C(1169373361) },
{
{ UINT32_C(2344151857), UINT32_C( 669121694) },
{ UINT32_C( 574063916), UINT32_C(1169373361) },
},
},
{ { UINT32_C(2507460045), UINT32_C(2566156204) },
{ UINT32_C(2333365919), UINT32_C(3752844974) },
{
{ UINT32_C(2507460045), UINT32_C(2333365919) },
{ UINT32_C(2566156204), UINT32_C(3752844974) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
simde_uint32x2_t b = simde_vld1_u32(test_vec[i].b);
simde_uint32x2x2_t r = simde_vtrn_u32(a, b);
simde_test_arm_neon_assert_equal_u32x2(r.val[0], simde_vld1_u32(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_u32x2(r.val[1], simde_vld1_u32(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrnq_f32 (SIMDE_MUNIT_TEST_ARGS) {
struct {
simde_float32 a[4];
simde_float32 b[4];
simde_float32 r[2][4];
} test_vec[] = {
{ { SIMDE_FLOAT32_C( -21.16), SIMDE_FLOAT32_C( -415.28), SIMDE_FLOAT32_C( 122.64), SIMDE_FLOAT32_C( -871.38) },
{ SIMDE_FLOAT32_C( 823.55), SIMDE_FLOAT32_C( 479.12), SIMDE_FLOAT32_C( -299.37), SIMDE_FLOAT32_C( -925.94) },
{
{ SIMDE_FLOAT32_C( -21.16), SIMDE_FLOAT32_C( 823.55), SIMDE_FLOAT32_C( 122.64), SIMDE_FLOAT32_C( -299.37) },
{ SIMDE_FLOAT32_C( -415.28), SIMDE_FLOAT32_C( 479.12), SIMDE_FLOAT32_C( -871.38), SIMDE_FLOAT32_C( -925.94) },
},
},
{ { SIMDE_FLOAT32_C( -127.06), SIMDE_FLOAT32_C( -474.56), SIMDE_FLOAT32_C( -700.09), SIMDE_FLOAT32_C( 980.65) },
{ SIMDE_FLOAT32_C( -759.85), SIMDE_FLOAT32_C( 613.71), SIMDE_FLOAT32_C( 336.49), SIMDE_FLOAT32_C( 564.00) },
{
{ SIMDE_FLOAT32_C( -127.06), SIMDE_FLOAT32_C( -759.85), SIMDE_FLOAT32_C( -700.09), SIMDE_FLOAT32_C( 336.49) },
{ SIMDE_FLOAT32_C( -474.56), SIMDE_FLOAT32_C( 613.71), SIMDE_FLOAT32_C( 980.65), SIMDE_FLOAT32_C( 564.00) },
},
},
{ { SIMDE_FLOAT32_C( -466.35), SIMDE_FLOAT32_C( 378.63), SIMDE_FLOAT32_C( -371.33), SIMDE_FLOAT32_C( 706.88) },
{ SIMDE_FLOAT32_C( -64.44), SIMDE_FLOAT32_C( 420.87), SIMDE_FLOAT32_C( -117.58), SIMDE_FLOAT32_C( 403.73) },
{
{ SIMDE_FLOAT32_C( -466.35), SIMDE_FLOAT32_C( -64.44), SIMDE_FLOAT32_C( -371.33), SIMDE_FLOAT32_C( -117.58) },
{ SIMDE_FLOAT32_C( 378.63), SIMDE_FLOAT32_C( 420.87), SIMDE_FLOAT32_C( 706.88), SIMDE_FLOAT32_C( 403.73) },
},
},
{ { SIMDE_FLOAT32_C( 250.86), SIMDE_FLOAT32_C( 812.70), SIMDE_FLOAT32_C( 383.33), SIMDE_FLOAT32_C( 70.53) },
{ SIMDE_FLOAT32_C( -526.93), SIMDE_FLOAT32_C( -755.27), SIMDE_FLOAT32_C( -138.40), SIMDE_FLOAT32_C( 451.91) },
{
{ SIMDE_FLOAT32_C( 250.86), SIMDE_FLOAT32_C( -526.93), SIMDE_FLOAT32_C( 383.33), SIMDE_FLOAT32_C( -138.40) },
{ SIMDE_FLOAT32_C( 812.70), SIMDE_FLOAT32_C( -755.27), SIMDE_FLOAT32_C( 70.53), SIMDE_FLOAT32_C( 451.91) },
},
},
{ { SIMDE_FLOAT32_C( -170.55), SIMDE_FLOAT32_C( 984.25), SIMDE_FLOAT32_C( 580.53), SIMDE_FLOAT32_C( -347.00) },
{ SIMDE_FLOAT32_C( 463.36), SIMDE_FLOAT32_C( -718.84), SIMDE_FLOAT32_C( -272.94), SIMDE_FLOAT32_C( -663.70) },
{
{ SIMDE_FLOAT32_C( -170.55), SIMDE_FLOAT32_C( 463.36), SIMDE_FLOAT32_C( 580.53), SIMDE_FLOAT32_C( -272.94) },
{ SIMDE_FLOAT32_C( 984.25), SIMDE_FLOAT32_C( -718.84), SIMDE_FLOAT32_C( -347.00), SIMDE_FLOAT32_C( -663.70) },
},
},
{ { SIMDE_FLOAT32_C( -193.40), SIMDE_FLOAT32_C( 26.97), SIMDE_FLOAT32_C( -683.05), SIMDE_FLOAT32_C( 46.75) },
{ SIMDE_FLOAT32_C( -359.31), SIMDE_FLOAT32_C( 653.44), SIMDE_FLOAT32_C( -389.25), SIMDE_FLOAT32_C( 174.33) },
{
{ SIMDE_FLOAT32_C( -193.40), SIMDE_FLOAT32_C( -359.31), SIMDE_FLOAT32_C( -683.05), SIMDE_FLOAT32_C( -389.25) },
{ SIMDE_FLOAT32_C( 26.97), SIMDE_FLOAT32_C( 653.44), SIMDE_FLOAT32_C( 46.75), SIMDE_FLOAT32_C( 174.33) },
},
},
{ { SIMDE_FLOAT32_C( 32.08), SIMDE_FLOAT32_C( 239.42), SIMDE_FLOAT32_C( -118.78), SIMDE_FLOAT32_C( 967.64) },
{ SIMDE_FLOAT32_C( -339.71), SIMDE_FLOAT32_C( 763.63), SIMDE_FLOAT32_C( 371.37), SIMDE_FLOAT32_C( 911.15) },
{
{ SIMDE_FLOAT32_C( 32.08), SIMDE_FLOAT32_C( -339.71), SIMDE_FLOAT32_C( -118.78), SIMDE_FLOAT32_C( 371.37) },
{ SIMDE_FLOAT32_C( 239.42), SIMDE_FLOAT32_C( 763.63), SIMDE_FLOAT32_C( 967.64), SIMDE_FLOAT32_C( 911.15) },
},
},
{ { SIMDE_FLOAT32_C( 576.34), SIMDE_FLOAT32_C( -245.30), SIMDE_FLOAT32_C( -18.32), SIMDE_FLOAT32_C( -950.59) },
{ SIMDE_FLOAT32_C( -0.57), SIMDE_FLOAT32_C( 843.29), SIMDE_FLOAT32_C( 501.32), SIMDE_FLOAT32_C( 828.88) },
{
{ SIMDE_FLOAT32_C( 576.34), SIMDE_FLOAT32_C( -0.57), SIMDE_FLOAT32_C( -18.32), SIMDE_FLOAT32_C( 501.32) },
{ SIMDE_FLOAT32_C( -245.30), SIMDE_FLOAT32_C( 843.29), SIMDE_FLOAT32_C( -950.59), SIMDE_FLOAT32_C( 828.88) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a);
simde_float32x4_t b = simde_vld1q_f32(test_vec[i].b);
simde_float32x4x2_t r = simde_vtrnq_f32(a, b);
simde_test_arm_neon_assert_equal_f32x4(r.val[0], simde_vld1q_f32(test_vec[i].r[0]), 1);
simde_test_arm_neon_assert_equal_f32x4(r.val[1], simde_vld1q_f32(test_vec[i].r[1]), 1);
}
return 0;
}
static int
test_simde_vtrnq_s8 (SIMDE_MUNIT_TEST_ARGS) {
struct {
int8_t a[16];
int8_t b[16];
int8_t r[2][16];
} test_vec[] = {
{ { -INT8_C( 33), -INT8_C( 2), INT8_C( 49), INT8_C( 24), INT8_C( 54), INT8_C( 26), INT8_C( 79), -INT8_C( 31),
INT8_C( 21), -INT8_C( 121), INT8_C( 14), -INT8_C( 47), INT8_C( 102), -INT8_C( 38), INT8_C( 73), INT8_C( 24) },
{ -INT8_C( 8), INT8_C( 7), INT8_C( 22), -INT8_C( 62), INT8_C( 52), -INT8_C( 22), -INT8_C( 122), INT8_C( 110),
INT8_C( 20), -INT8_C( 71), INT8_C( 94), -INT8_C( 2), -INT8_C( 12), -INT8_C( 71), -INT8_C( 73), -INT8_C( 44) },
{
{ -INT8_C( 33), -INT8_C( 8), INT8_C( 49), INT8_C( 22), INT8_C( 54), INT8_C( 52), INT8_C( 79), -INT8_C( 122),
INT8_C( 21), INT8_C( 20), INT8_C( 14), INT8_C( 94), INT8_C( 102), -INT8_C( 12), INT8_C( 73), -INT8_C( 73) },
{ -INT8_C( 2), INT8_C( 7), INT8_C( 24), -INT8_C( 62), INT8_C( 26), -INT8_C( 22), -INT8_C( 31), INT8_C( 110),
-INT8_C( 121), -INT8_C( 71), -INT8_C( 47), -INT8_C( 2), -INT8_C( 38), -INT8_C( 71), INT8_C( 24), -INT8_C( 44) },
},
},
{ { -INT8_C( 73), -INT8_C( 24), -INT8_C( 20), -INT8_C( 19), INT8_C( 2), INT8_C( 59), -INT8_C( 49), INT8_C( 23),
-INT8_C( 62), -INT8_C( 35), -INT8_C( 23), INT8_C( 40), -INT8_C( 73), INT8_C( 50), INT8_C( 64), -INT8_C( 81) },
{ INT8_C( 58), INT8_C( 86), INT8_C( 114), INT8_C( 110), INT8_C( 64), -INT8_C( 8), -INT8_C( 36), INT8_C( 85),
-INT8_C( 79), INT8_C( 58), INT8_C( 83), -INT8_C( 90), -INT8_C( 13), INT8_C( 10), INT8_C( 122), -INT8_C( 85) },
{
{ -INT8_C( 73), INT8_C( 58), -INT8_C( 20), INT8_C( 114), INT8_C( 2), INT8_C( 64), -INT8_C( 49), -INT8_C( 36),
-INT8_C( 62), -INT8_C( 79), -INT8_C( 23), INT8_C( 83), -INT8_C( 73), -INT8_C( 13), INT8_C( 64), INT8_C( 122) },
{ -INT8_C( 24), INT8_C( 86), -INT8_C( 19), INT8_C( 110), INT8_C( 59), -INT8_C( 8), INT8_C( 23), INT8_C( 85),
-INT8_C( 35), INT8_C( 58), INT8_C( 40), -INT8_C( 90), INT8_C( 50), INT8_C( 10), -INT8_C( 81), -INT8_C( 85) },
},
},
{ { -INT8_C( 14), INT8_C( 102), -INT8_C( 104), -INT8_C( 11), -INT8_C( 95), INT8_C( 103), INT8_C( 12), INT8_C( 99),
INT8_C( 68), -INT8_C( 11), -INT8_C( 117), -INT8_C( 5), INT8_C( 40), -INT8_C( 52), -INT8_C( 85), INT8_C( 98) },
{ INT8_C( 34), INT8_C( 29), -INT8_C( 48), INT8_C( 99), INT8_C( 21), -INT8_C( 84), -INT8_C( 72), -INT8_C( 58),
-INT8_C( 25), INT8_C( 11), INT8_C( 108), -INT8_C( 38), INT8_C( 22), -INT8_C( 26), -INT8_C( 123), INT8_C( 8) },
{
{ -INT8_C( 14), INT8_C( 34), -INT8_C( 104), -INT8_C( 48), -INT8_C( 95), INT8_C( 21), INT8_C( 12), -INT8_C( 72),
INT8_C( 68), -INT8_C( 25), -INT8_C( 117), INT8_C( 108), INT8_C( 40), INT8_C( 22), -INT8_C( 85), -INT8_C( 123) },
{ INT8_C( 102), INT8_C( 29), -INT8_C( 11), INT8_C( 99), INT8_C( 103), -INT8_C( 84), INT8_C( 99), -INT8_C( 58),
-INT8_C( 11), INT8_C( 11), -INT8_C( 5), -INT8_C( 38), -INT8_C( 52), -INT8_C( 26), INT8_C( 98), INT8_C( 8) },
},
},
{ { INT8_C( 76), INT8_C( 30), -INT8_C( 3), -INT8_C( 19), -INT8_C( 123), INT8_C( 10), INT8_C( 80), -INT8_C( 54),
-INT8_C( 1), -INT8_C( 36), -INT8_C( 59), INT8_C( 39), -INT8_C( 88), INT8_C( 112), -INT8_C( 119), -INT8_C( 54) },
{ -INT8_C( 115), INT8_C( 89), INT8_C( 45), -INT8_C( 94), INT8_C( 6), -INT8_C( 27), INT8_C( 105), -INT8_C( 19),
-INT8_C( 15), -INT8_C( 43), -INT8_C( 57), INT8_C( 7), -INT8_C( 68), INT8_C( 77), INT8_C( 15), INT8_C( 8) },
{
{ INT8_C( 76), -INT8_C( 115), -INT8_C( 3), INT8_C( 45), -INT8_C( 123), INT8_C( 6), INT8_C( 80), INT8_C( 105),
-INT8_C( 1), -INT8_C( 15), -INT8_C( 59), -INT8_C( 57), -INT8_C( 88), -INT8_C( 68), -INT8_C( 119), INT8_C( 15) },
{ INT8_C( 30), INT8_C( 89), -INT8_C( 19), -INT8_C( 94), INT8_C( 10), -INT8_C( 27), -INT8_C( 54), -INT8_C( 19),
-INT8_C( 36), -INT8_C( 43), INT8_C( 39), INT8_C( 7), INT8_C( 112), INT8_C( 77), -INT8_C( 54), INT8_C( 8) },
},
},
{ { INT8_C( 107), INT8_C( 13), -INT8_C( 10), -INT8_C( 16), INT8_C( 23), INT8_C( 70), -INT8_C( 70), INT8_C( 22),
INT8_C( 34), INT8_MIN, INT8_C( 62), -INT8_C( 54), -INT8_C( 16), -INT8_C( 57), -INT8_C( 107), INT8_C( 126) },
{ INT8_C( 33), -INT8_C( 62), INT8_C( 32), INT8_C( 39), -INT8_C( 88), -INT8_C( 119), INT8_C( 20), -INT8_C( 103),
INT8_C( 95), -INT8_C( 37), -INT8_C( 96), INT8_C( 27), INT8_C( 40), -INT8_C( 81), INT8_C( 35), -INT8_C( 109) },
{
{ INT8_C( 107), INT8_C( 33), -INT8_C( 10), INT8_C( 32), INT8_C( 23), -INT8_C( 88), -INT8_C( 70), INT8_C( 20),
INT8_C( 34), INT8_C( 95), INT8_C( 62), -INT8_C( 96), -INT8_C( 16), INT8_C( 40), -INT8_C( 107), INT8_C( 35) },
{ INT8_C( 13), -INT8_C( 62), -INT8_C( 16), INT8_C( 39), INT8_C( 70), -INT8_C( 119), INT8_C( 22), -INT8_C( 103),
INT8_MIN, -INT8_C( 37), -INT8_C( 54), INT8_C( 27), -INT8_C( 57), -INT8_C( 81), INT8_C( 126), -INT8_C( 109) },
},
},
{ { -INT8_C( 68), INT8_C( 25), -INT8_C( 124), -INT8_C( 45), INT8_C( 96), INT8_C( 62), -INT8_C( 22), -INT8_C( 126),
-INT8_C( 66), INT8_C( 40), INT8_C( 77), -INT8_C( 81), -INT8_C( 17), -INT8_C( 30), INT8_C( 45), INT8_C( 16) },
{ -INT8_C( 92), INT8_C( 77), INT8_C( 55), INT8_C( 76), -INT8_C( 41), INT8_C( 75), -INT8_C( 27), INT8_C( 54),
INT8_C( 39), -INT8_C( 123), INT8_C( 81), INT8_C( 79), INT8_C( 53), INT8_C( 116), -INT8_C( 29), -INT8_C( 15) },
{
{ -INT8_C( 68), -INT8_C( 92), -INT8_C( 124), INT8_C( 55), INT8_C( 96), -INT8_C( 41), -INT8_C( 22), -INT8_C( 27),
-INT8_C( 66), INT8_C( 39), INT8_C( 77), INT8_C( 81), -INT8_C( 17), INT8_C( 53), INT8_C( 45), -INT8_C( 29) },
{ INT8_C( 25), INT8_C( 77), -INT8_C( 45), INT8_C( 76), INT8_C( 62), INT8_C( 75), -INT8_C( 126), INT8_C( 54),
INT8_C( 40), -INT8_C( 123), -INT8_C( 81), INT8_C( 79), -INT8_C( 30), INT8_C( 116), INT8_C( 16), -INT8_C( 15) },
},
},
{ { -INT8_C( 114), INT8_C( 103), -INT8_C( 59), -INT8_C( 18), -INT8_C( 91), -INT8_C( 81), INT8_C( 112), INT8_C( 100),
-INT8_C( 41), -INT8_C( 67), INT8_C( 19), -INT8_C( 58), -INT8_C( 97), INT8_C( 64), -INT8_C( 41), INT8_C( 68) },
{ -INT8_C( 115), INT8_C( 14), -INT8_C( 112), INT8_C( 100), INT8_C( 90), INT8_C( 118), -INT8_C( 102), -INT8_C( 127),
-INT8_C( 5), -INT8_C( 21), -INT8_C( 48), INT8_C( 48), INT8_C( 96), -INT8_C( 77), INT8_C( 34), -INT8_C( 18) },
{
{ -INT8_C( 114), -INT8_C( 115), -INT8_C( 59), -INT8_C( 112), -INT8_C( 91), INT8_C( 90), INT8_C( 112), -INT8_C( 102),
-INT8_C( 41), -INT8_C( 5), INT8_C( 19), -INT8_C( 48), -INT8_C( 97), INT8_C( 96), -INT8_C( 41), INT8_C( 34) },
{ INT8_C( 103), INT8_C( 14), -INT8_C( 18), INT8_C( 100), -INT8_C( 81), INT8_C( 118), INT8_C( 100), -INT8_C( 127),
-INT8_C( 67), -INT8_C( 21), -INT8_C( 58), INT8_C( 48), INT8_C( 64), -INT8_C( 77), INT8_C( 68), -INT8_C( 18) },
},
},
{ { INT8_C( 26), -INT8_C( 25), -INT8_C( 36), -INT8_C( 64), -INT8_C( 106), INT8_C( 76), INT8_C( 36), INT8_C( 109),
INT8_C( 10), INT8_C( 55), INT8_C( 51), -INT8_C( 87), INT8_C( 119), INT8_C( 10), -INT8_C( 19), INT8_C( 4) },
{ INT8_C( 25), INT8_C( 126), INT8_C( 105), INT8_C( 115), -INT8_C( 12), INT8_C( 3), -INT8_C( 12), -INT8_C( 17),
-INT8_C( 17), -INT8_C( 60), INT8_C( 32), INT8_C( 79), INT8_C( 120), INT8_C( 66), INT8_C( 61), -INT8_C( 110) },
{
{ INT8_C( 26), INT8_C( 25), -INT8_C( 36), INT8_C( 105), -INT8_C( 106), -INT8_C( 12), INT8_C( 36), -INT8_C( 12),
INT8_C( 10), -INT8_C( 17), INT8_C( 51), INT8_C( 32), INT8_C( 119), INT8_C( 120), -INT8_C( 19), INT8_C( 61) },
{ -INT8_C( 25), INT8_C( 126), -INT8_C( 64), INT8_C( 115), INT8_C( 76), INT8_C( 3), INT8_C( 109), -INT8_C( 17),
INT8_C( 55), -INT8_C( 60), -INT8_C( 87), INT8_C( 79), INT8_C( 10), INT8_C( 66), INT8_C( 4), -INT8_C( 110) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a);
simde_int8x16_t b = simde_vld1q_s8(test_vec[i].b);
simde_int8x16x2_t r = simde_vtrnq_s8(a, b);
simde_test_arm_neon_assert_equal_i8x16(r.val[0], simde_vld1q_s8(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_i8x16(r.val[1], simde_vld1q_s8(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrnq_s16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
int16_t a[8];
int16_t b[8];
int16_t r[2][8];
} test_vec[] = {
{ { INT16_C( 10915), -INT16_C( 16438), INT16_C( 7957), -INT16_C( 18291), -INT16_C( 19156), INT16_C( 21219), -INT16_C( 21359), INT16_C( 13451) },
{ -INT16_C( 24388), INT16_C( 21235), INT16_C( 19711), -INT16_C( 13138), INT16_C( 19613), INT16_C( 3470), INT16_C( 9286), -INT16_C( 5705) },
{
{ INT16_C( 10915), -INT16_C( 24388), INT16_C( 7957), INT16_C( 19711), -INT16_C( 19156), INT16_C( 19613), -INT16_C( 21359), INT16_C( 9286) },
{ -INT16_C( 16438), INT16_C( 21235), -INT16_C( 18291), -INT16_C( 13138), INT16_C( 21219), INT16_C( 3470), INT16_C( 13451), -INT16_C( 5705) },
},
},
{ { -INT16_C( 32434), INT16_C( 25769), INT16_C( 13984), -INT16_C( 13284), -INT16_C( 20), INT16_C( 32031), -INT16_C( 21844), INT16_C( 26801) },
{ -INT16_C( 23222), INT16_C( 19130), INT16_C( 27121), -INT16_C( 29162), -INT16_C( 23115), -INT16_C( 1125), INT16_C( 21193), INT16_C( 6117) },
{
{ -INT16_C( 32434), -INT16_C( 23222), INT16_C( 13984), INT16_C( 27121), -INT16_C( 20), -INT16_C( 23115), -INT16_C( 21844), INT16_C( 21193) },
{ INT16_C( 25769), INT16_C( 19130), -INT16_C( 13284), -INT16_C( 29162), INT16_C( 32031), -INT16_C( 1125), INT16_C( 26801), INT16_C( 6117) },
},
},
{ { -INT16_C( 28972), INT16_C( 29819), -INT16_C( 26428), -INT16_C( 20415), INT16_C( 24727), INT16_C( 17198), -INT16_C( 8438), INT16_C( 21676) },
{ INT16_C( 26244), INT16_C( 30110), -INT16_C( 18993), -INT16_C( 31741), -INT16_C( 24998), INT16_C( 9088), INT16_C( 26097), -INT16_C( 15046) },
{
{ -INT16_C( 28972), INT16_C( 26244), -INT16_C( 26428), -INT16_C( 18993), INT16_C( 24727), -INT16_C( 24998), -INT16_C( 8438), INT16_C( 26097) },
{ INT16_C( 29819), INT16_C( 30110), -INT16_C( 20415), -INT16_C( 31741), INT16_C( 17198), INT16_C( 9088), INT16_C( 21676), -INT16_C( 15046) },
},
},
{ { -INT16_C( 18701), -INT16_C( 18631), INT16_C( 31310), -INT16_C( 6808), -INT16_C( 26918), -INT16_C( 7127), -INT16_C( 10891), -INT16_C( 1479) },
{ -INT16_C( 10437), INT16_C( 2927), INT16_C( 29580), -INT16_C( 6513), INT16_C( 3857), INT16_C( 521), INT16_C( 17524), INT16_C( 26567) },
{
{ -INT16_C( 18701), -INT16_C( 10437), INT16_C( 31310), INT16_C( 29580), -INT16_C( 26918), INT16_C( 3857), -INT16_C( 10891), INT16_C( 17524) },
{ -INT16_C( 18631), INT16_C( 2927), -INT16_C( 6808), -INT16_C( 6513), -INT16_C( 7127), INT16_C( 521), -INT16_C( 1479), INT16_C( 26567) },
},
},
{ { INT16_C( 506), INT16_C( 18463), -INT16_C( 30853), INT16_C( 22061), INT16_C( 22045), -INT16_C( 28102), INT16_C( 29483), INT16_C( 26508) },
{ -INT16_C( 949), -INT16_C( 10382), INT16_C( 367), -INT16_C( 32578), -INT16_C( 14575), -INT16_C( 31357), INT16_C( 18955), INT16_C( 1517) },
{
{ INT16_C( 506), -INT16_C( 949), -INT16_C( 30853), INT16_C( 367), INT16_C( 22045), -INT16_C( 14575), INT16_C( 29483), INT16_C( 18955) },
{ INT16_C( 18463), -INT16_C( 10382), INT16_C( 22061), -INT16_C( 32578), -INT16_C( 28102), -INT16_C( 31357), INT16_C( 26508), INT16_C( 1517) },
},
},
{ { INT16_C( 3147), -INT16_C( 14515), INT16_C( 31635), -INT16_C( 20451), INT16_C( 22481), -INT16_C( 702), -INT16_C( 12341), INT16_C( 5732) },
{ -INT16_C( 10549), INT16_C( 15085), -INT16_C( 21545), -INT16_C( 5958), INT16_C( 15731), INT16_C( 32366), INT16_C( 23432), -INT16_C( 11388) },
{
{ INT16_C( 3147), -INT16_C( 10549), INT16_C( 31635), -INT16_C( 21545), INT16_C( 22481), INT16_C( 15731), -INT16_C( 12341), INT16_C( 23432) },
{ -INT16_C( 14515), INT16_C( 15085), -INT16_C( 20451), -INT16_C( 5958), -INT16_C( 702), INT16_C( 32366), INT16_C( 5732), -INT16_C( 11388) },
},
},
{ { -INT16_C( 11929), -INT16_C( 1382), -INT16_C( 18612), INT16_C( 7850), -INT16_C( 5105), -INT16_C( 9701), INT16_C( 32699), -INT16_C( 30992) },
{ -INT16_C( 8875), INT16_C( 11456), INT16_C( 31625), -INT16_C( 1003), -INT16_C( 31816), INT16_C( 16506), -INT16_C( 290), INT16_C( 17684) },
{
{ -INT16_C( 11929), -INT16_C( 8875), -INT16_C( 18612), INT16_C( 31625), -INT16_C( 5105), -INT16_C( 31816), INT16_C( 32699), -INT16_C( 290) },
{ -INT16_C( 1382), INT16_C( 11456), INT16_C( 7850), -INT16_C( 1003), -INT16_C( 9701), INT16_C( 16506), -INT16_C( 30992), INT16_C( 17684) },
},
},
{ { -INT16_C( 20784), INT16_C( 7231), -INT16_C( 5786), INT16_C( 30010), INT16_C( 21973), -INT16_C( 28337), INT16_C( 16340), INT16_C( 10519) },
{ -INT16_C( 10212), -INT16_C( 23210), INT16_C( 27475), INT16_C( 2977), INT16_C( 7406), -INT16_C( 13236), INT16_C( 24602), -INT16_C( 5615) },
{
{ -INT16_C( 20784), -INT16_C( 10212), -INT16_C( 5786), INT16_C( 27475), INT16_C( 21973), INT16_C( 7406), INT16_C( 16340), INT16_C( 24602) },
{ INT16_C( 7231), -INT16_C( 23210), INT16_C( 30010), INT16_C( 2977), -INT16_C( 28337), -INT16_C( 13236), INT16_C( 10519), -INT16_C( 5615) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a);
simde_int16x8_t b = simde_vld1q_s16(test_vec[i].b);
simde_int16x8x2_t r = simde_vtrnq_s16(a, b);
simde_test_arm_neon_assert_equal_i16x8(r.val[0], simde_vld1q_s16(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_i16x8(r.val[1], simde_vld1q_s16(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrnq_s32 (SIMDE_MUNIT_TEST_ARGS) {
struct {
int32_t a[4];
int32_t b[4];
int32_t r[2][4];
} test_vec[] = {
{ { INT32_C( 1703801270), -INT32_C( 232086468), INT32_C( 5800579), -INT32_C( 1062703425) },
{ -INT32_C( 1987166982), INT32_C( 1610152052), INT32_C( 676881874), INT32_C( 1462420385) },
{
{ INT32_C( 1703801270), -INT32_C( 1987166982), INT32_C( 5800579), INT32_C( 676881874) },
{ -INT32_C( 232086468), INT32_C( 1610152052), -INT32_C( 1062703425), INT32_C( 1462420385) },
},
},
{ { -INT32_C( 239290187), -INT32_C( 538712484), INT32_C( 685784169), -INT32_C( 1528198998) },
{ INT32_C( 942503876), INT32_C( 1100490351), INT32_C( 745205899), INT32_C( 1753519283) },
{
{ -INT32_C( 239290187), INT32_C( 942503876), INT32_C( 685784169), INT32_C( 745205899) },
{ -INT32_C( 538712484), INT32_C( 1100490351), -INT32_C( 1528198998), INT32_C( 1753519283) },
},
},
{ { -INT32_C( 1453768628), -INT32_C( 1870119641), INT32_C( 599287929), -INT32_C( 1261985296) },
{ -INT32_C( 1997671400), -INT32_C( 1513519846), INT32_C( 684864373), INT32_C( 345069256) },
{
{ -INT32_C( 1453768628), -INT32_C( 1997671400), INT32_C( 599287929), INT32_C( 684864373) },
{ -INT32_C( 1870119641), -INT32_C( 1513519846), -INT32_C( 1261985296), INT32_C( 345069256) },
},
},
{ { -INT32_C( 1111627114), -INT32_C( 1605548505), -INT32_C( 1614608722), -INT32_C( 1068266841) },
{ -INT32_C( 1723318145), INT32_C( 977211845), INT32_C( 224596293), -INT32_C( 48106393) },
{
{ -INT32_C( 1111627114), -INT32_C( 1723318145), -INT32_C( 1614608722), INT32_C( 224596293) },
{ -INT32_C( 1605548505), INT32_C( 977211845), -INT32_C( 1068266841), -INT32_C( 48106393) },
},
},
{ { INT32_C( 112975838), -INT32_C( 744093659), -INT32_C( 1234015730), INT32_C( 1937164020) },
{ -INT32_C( 871514618), INT32_C( 335957199), -INT32_C( 1004443299), INT32_C( 1019298653) },
{
{ INT32_C( 112975838), -INT32_C( 871514618), -INT32_C( 1234015730), -INT32_C( 1004443299) },
{ -INT32_C( 744093659), INT32_C( 335957199), INT32_C( 1937164020), INT32_C( 1019298653) },
},
},
{ { INT32_C( 1195539490), -INT32_C( 1826953083), INT32_C( 1196002642), INT32_C( 1505410899) },
{ INT32_C( 1294321533), INT32_C( 1885416467), -INT32_C( 214662251), -INT32_C( 399509818) },
{
{ INT32_C( 1195539490), INT32_C( 1294321533), INT32_C( 1196002642), -INT32_C( 214662251) },
{ -INT32_C( 1826953083), INT32_C( 1885416467), INT32_C( 1505410899), -INT32_C( 399509818) },
},
},
{ { -INT32_C( 147885710), -INT32_C( 1400157863), INT32_C( 703845590), INT32_C( 293842324) },
{ -INT32_C( 2007062411), INT32_C( 1794752724), INT32_C( 157101379), -INT32_C( 1762554845) },
{
{ -INT32_C( 147885710), -INT32_C( 2007062411), INT32_C( 703845590), INT32_C( 157101379) },
{ -INT32_C( 1400157863), INT32_C( 1794752724), INT32_C( 293842324), -INT32_C( 1762554845) },
},
},
{ { INT32_C( 1452089597), INT32_C( 1073879145), -INT32_C( 2123762195), INT32_C( 412282019) },
{ INT32_C( 1772155285), -INT32_C( 187459151), -INT32_C( 352505657), -INT32_C( 1182732612) },
{
{ INT32_C( 1452089597), INT32_C( 1772155285), -INT32_C( 2123762195), -INT32_C( 352505657) },
{ INT32_C( 1073879145), -INT32_C( 187459151), INT32_C( 412282019), -INT32_C( 1182732612) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a);
simde_int32x4_t b = simde_vld1q_s32(test_vec[i].b);
simde_int32x4x2_t r = simde_vtrnq_s32(a, b);
simde_test_arm_neon_assert_equal_i32x4(r.val[0], simde_vld1q_s32(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_i32x4(r.val[1], simde_vld1q_s32(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrnq_u8 (SIMDE_MUNIT_TEST_ARGS) {
struct {
uint8_t a[16];
uint8_t b[16];
uint8_t r[2][16];
} test_vec[] = {
{ { UINT8_C(125), UINT8_C( 52), UINT8_C(219), UINT8_C( 49), UINT8_C(184), UINT8_C( 70), UINT8_C( 81), UINT8_C( 21),
UINT8_C(251), UINT8_C(161), UINT8_C( 96), UINT8_C( 40), UINT8_C( 3), UINT8_C(143), UINT8_C(153), UINT8_C(129) },
{ UINT8_C( 6), UINT8_C(209), UINT8_C(203), UINT8_C( 43), UINT8_C(151), UINT8_C( 96), UINT8_C(213), UINT8_C(182),
UINT8_C( 61), UINT8_C(132), UINT8_C( 40), UINT8_C( 31), UINT8_C(188), UINT8_C(204), UINT8_C(218), UINT8_C( 57) },
{
{ UINT8_C(125), UINT8_C( 6), UINT8_C(219), UINT8_C(203), UINT8_C(184), UINT8_C(151), UINT8_C( 81), UINT8_C(213),
UINT8_C(251), UINT8_C( 61), UINT8_C( 96), UINT8_C( 40), UINT8_C( 3), UINT8_C(188), UINT8_C(153), UINT8_C(218) },
{ UINT8_C( 52), UINT8_C(209), UINT8_C( 49), UINT8_C( 43), UINT8_C( 70), UINT8_C( 96), UINT8_C( 21), UINT8_C(182),
UINT8_C(161), UINT8_C(132), UINT8_C( 40), UINT8_C( 31), UINT8_C(143), UINT8_C(204), UINT8_C(129), UINT8_C( 57) },
},
},
{ { UINT8_C( 0), UINT8_C(182), UINT8_C(106), UINT8_C(185), UINT8_C(252), UINT8_C(188), UINT8_C(206), UINT8_C(247),
UINT8_C( 93), UINT8_C( 46), UINT8_C( 32), UINT8_C( 97), UINT8_C(189), UINT8_C(185), UINT8_C(226), UINT8_C(196) },
{ UINT8_C(138), UINT8_C(173), UINT8_C(239), UINT8_C( 33), UINT8_C( 14), UINT8_C(196), UINT8_C(216), UINT8_C( 75),
UINT8_C( 72), UINT8_C( 0), UINT8_C(107), UINT8_C( 5), UINT8_C(204), UINT8_C( 69), UINT8_C( 62), UINT8_C(204) },
{
{ UINT8_C( 0), UINT8_C(138), UINT8_C(106), UINT8_C(239), UINT8_C(252), UINT8_C( 14), UINT8_C(206), UINT8_C(216),
UINT8_C( 93), UINT8_C( 72), UINT8_C( 32), UINT8_C(107), UINT8_C(189), UINT8_C(204), UINT8_C(226), UINT8_C( 62) },
{ UINT8_C(182), UINT8_C(173), UINT8_C(185), UINT8_C( 33), UINT8_C(188), UINT8_C(196), UINT8_C(247), UINT8_C( 75),
UINT8_C( 46), UINT8_C( 0), UINT8_C( 97), UINT8_C( 5), UINT8_C(185), UINT8_C( 69), UINT8_C(196), UINT8_C(204) },
},
},
{ { UINT8_C(251), UINT8_C(169), UINT8_C(133), UINT8_C(248), UINT8_C(101), UINT8_C( 83), UINT8_C(239), UINT8_C(194),
UINT8_C(130), UINT8_C( 15), UINT8_C( 35), UINT8_C( 63), UINT8_C(200), UINT8_C( 5), UINT8_C( 3), UINT8_C( 82) },
{ UINT8_C(179), UINT8_C(243), UINT8_C(116), UINT8_C(193), UINT8_C(183), UINT8_C( 76), UINT8_C( 12), UINT8_C( 0),
UINT8_C( 76), UINT8_C(119), UINT8_C( 5), UINT8_C( 24), UINT8_C(189), UINT8_C( 67), UINT8_C(228), UINT8_C(184) },
{
{ UINT8_C(251), UINT8_C(179), UINT8_C(133), UINT8_C(116), UINT8_C(101), UINT8_C(183), UINT8_C(239), UINT8_C( 12),
UINT8_C(130), UINT8_C( 76), UINT8_C( 35), UINT8_C( 5), UINT8_C(200), UINT8_C(189), UINT8_C( 3), UINT8_C(228) },
{ UINT8_C(169), UINT8_C(243), UINT8_C(248), UINT8_C(193), UINT8_C( 83), UINT8_C( 76), UINT8_C(194), UINT8_C( 0),
UINT8_C( 15), UINT8_C(119), UINT8_C( 63), UINT8_C( 24), UINT8_C( 5), UINT8_C( 67), UINT8_C( 82), UINT8_C(184) },
},
},
{ { UINT8_C(236), UINT8_C(106), UINT8_C(176), UINT8_C( 81), UINT8_C(189), UINT8_C(160), UINT8_C( 20), UINT8_C( 63),
UINT8_C(175), UINT8_C( 55), UINT8_C(127), UINT8_C(120), UINT8_C( 61), UINT8_C(130), UINT8_C(202), UINT8_C(240) },
{ UINT8_C(117), UINT8_C( 62), UINT8_C(177), UINT8_C( 45), UINT8_C(138), UINT8_C(189), UINT8_C( 45), UINT8_C(214),
UINT8_C( 53), UINT8_C( 50), UINT8_C(238), UINT8_C(242), UINT8_C(117), UINT8_C(211), UINT8_C(170), UINT8_C( 98) },
{
{ UINT8_C(236), UINT8_C(117), UINT8_C(176), UINT8_C(177), UINT8_C(189), UINT8_C(138), UINT8_C( 20), UINT8_C( 45),
UINT8_C(175), UINT8_C( 53), UINT8_C(127), UINT8_C(238), UINT8_C( 61), UINT8_C(117), UINT8_C(202), UINT8_C(170) },
{ UINT8_C(106), UINT8_C( 62), UINT8_C( 81), UINT8_C( 45), UINT8_C(160), UINT8_C(189), UINT8_C( 63), UINT8_C(214),
UINT8_C( 55), UINT8_C( 50), UINT8_C(120), UINT8_C(242), UINT8_C(130), UINT8_C(211), UINT8_C(240), UINT8_C( 98) },
},
},
{ { UINT8_C( 61), UINT8_C( 91), UINT8_C(179), UINT8_C(250), UINT8_C(251), UINT8_C(199), UINT8_C( 58), UINT8_C(170),
UINT8_MAX, UINT8_C(185), UINT8_C( 34), UINT8_C( 60), UINT8_C( 59), UINT8_C(237), UINT8_C( 44), UINT8_C(177) },
{ UINT8_C( 43), UINT8_C(221), UINT8_C(222), UINT8_C(182), UINT8_C(154), UINT8_C( 11), UINT8_C(140), UINT8_C(207),
UINT8_C( 61), UINT8_C(123), UINT8_C(193), UINT8_C(178), UINT8_C( 78), UINT8_C(108), UINT8_C( 20), UINT8_C(139) },
{
{ UINT8_C( 61), UINT8_C( 43), UINT8_C(179), UINT8_C(222), UINT8_C(251), UINT8_C(154), UINT8_C( 58), UINT8_C(140),
UINT8_MAX, UINT8_C( 61), UINT8_C( 34), UINT8_C(193), UINT8_C( 59), UINT8_C( 78), UINT8_C( 44), UINT8_C( 20) },
{ UINT8_C( 91), UINT8_C(221), UINT8_C(250), UINT8_C(182), UINT8_C(199), UINT8_C( 11), UINT8_C(170), UINT8_C(207),
UINT8_C(185), UINT8_C(123), UINT8_C( 60), UINT8_C(178), UINT8_C(237), UINT8_C(108), UINT8_C(177), UINT8_C(139) },
},
},
{ { UINT8_C(199), UINT8_C(200), UINT8_C(133), UINT8_C(194), UINT8_C(143), UINT8_C(191), UINT8_C(108), UINT8_C(142),
UINT8_C(120), UINT8_C(143), UINT8_C(202), UINT8_C(180), UINT8_C(124), UINT8_C(246), UINT8_C(101), UINT8_C(167) },
{ UINT8_C(211), UINT8_C( 67), UINT8_C( 93), UINT8_C(110), UINT8_C( 78), UINT8_C(234), UINT8_C( 61), UINT8_C(139),
UINT8_C(101), UINT8_MAX, UINT8_C( 61), UINT8_C(179), UINT8_C(107), UINT8_C( 82), UINT8_C( 62), UINT8_C( 50) },
{
{ UINT8_C(199), UINT8_C(211), UINT8_C(133), UINT8_C( 93), UINT8_C(143), UINT8_C( 78), UINT8_C(108), UINT8_C( 61),
UINT8_C(120), UINT8_C(101), UINT8_C(202), UINT8_C( 61), UINT8_C(124), UINT8_C(107), UINT8_C(101), UINT8_C( 62) },
{ UINT8_C(200), UINT8_C( 67), UINT8_C(194), UINT8_C(110), UINT8_C(191), UINT8_C(234), UINT8_C(142), UINT8_C(139),
UINT8_C(143), UINT8_MAX, UINT8_C(180), UINT8_C(179), UINT8_C(246), UINT8_C( 82), UINT8_C(167), UINT8_C( 50) },
},
},
{ { UINT8_C( 26), UINT8_C(195), UINT8_C(244), UINT8_C(169), UINT8_C(131), UINT8_C( 96), UINT8_C( 56), UINT8_C(251),
UINT8_C(239), UINT8_C( 2), UINT8_C(175), UINT8_C(107), UINT8_C(249), UINT8_C( 20), UINT8_C( 19), UINT8_C(204) },
{ UINT8_C( 87), UINT8_C(112), UINT8_C( 58), UINT8_C(165), UINT8_C( 90), UINT8_C(120), UINT8_C( 48), UINT8_C(191),
UINT8_C(119), UINT8_C(110), UINT8_C(114), UINT8_C(226), UINT8_C(192), UINT8_C(176), UINT8_C( 20), UINT8_C(218) },
{
{ UINT8_C( 26), UINT8_C( 87), UINT8_C(244), UINT8_C( 58), UINT8_C(131), UINT8_C( 90), UINT8_C( 56), UINT8_C( 48),
UINT8_C(239), UINT8_C(119), UINT8_C(175), UINT8_C(114), UINT8_C(249), UINT8_C(192), UINT8_C( 19), UINT8_C( 20) },
{ UINT8_C(195), UINT8_C(112), UINT8_C(169), UINT8_C(165), UINT8_C( 96), UINT8_C(120), UINT8_C(251), UINT8_C(191),
UINT8_C( 2), UINT8_C(110), UINT8_C(107), UINT8_C(226), UINT8_C( 20), UINT8_C(176), UINT8_C(204), UINT8_C(218) },
},
},
{ { UINT8_C(116), UINT8_C( 8), UINT8_C(131), UINT8_C(247), UINT8_C(104), UINT8_C(187), UINT8_C(242), UINT8_C( 88),
UINT8_C(190), UINT8_C(162), UINT8_C(195), UINT8_C(183), UINT8_C(182), UINT8_C(214), UINT8_C(131), UINT8_C( 14) },
{ UINT8_C( 71), UINT8_C(190), UINT8_C(179), UINT8_C(161), UINT8_C( 54), UINT8_C(228), UINT8_C( 97), UINT8_C(173),
UINT8_C( 82), UINT8_C(211), UINT8_C(143), UINT8_C( 18), UINT8_C(132), UINT8_C(163), UINT8_C(236), UINT8_C(248) },
{
{ UINT8_C(116), UINT8_C( 71), UINT8_C(131), UINT8_C(179), UINT8_C(104), UINT8_C( 54), UINT8_C(242), UINT8_C( 97),
UINT8_C(190), UINT8_C( 82), UINT8_C(195), UINT8_C(143), UINT8_C(182), UINT8_C(132), UINT8_C(131), UINT8_C(236) },
{ UINT8_C( 8), UINT8_C(190), UINT8_C(247), UINT8_C(161), UINT8_C(187), UINT8_C(228), UINT8_C( 88), UINT8_C(173),
UINT8_C(162), UINT8_C(211), UINT8_C(183), UINT8_C( 18), UINT8_C(214), UINT8_C(163), UINT8_C( 14), UINT8_C(248) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
simde_uint8x16_t b = simde_vld1q_u8(test_vec[i].b);
simde_uint8x16x2_t r = simde_vtrnq_u8(a, b);
simde_test_arm_neon_assert_equal_u8x16(r.val[0], simde_vld1q_u8(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_u8x16(r.val[1], simde_vld1q_u8(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrnq_u16 (SIMDE_MUNIT_TEST_ARGS) {
struct {
uint16_t a[8];
uint16_t b[8];
uint16_t r[2][8];
} test_vec[] = {
{ { UINT16_C(60557), UINT16_C( 2003), UINT16_C(18326), UINT16_C(50944), UINT16_C(20033), UINT16_C(41177), UINT16_C(55949), UINT16_C(55500) },
{ UINT16_C(24134), UINT16_C(17611), UINT16_C(40546), UINT16_C(12683), UINT16_C(16844), UINT16_C(15740), UINT16_C(47346), UINT16_C(32687) },
{
{ UINT16_C(60557), UINT16_C(24134), UINT16_C(18326), UINT16_C(40546), UINT16_C(20033), UINT16_C(16844), UINT16_C(55949), UINT16_C(47346) },
{ UINT16_C( 2003), UINT16_C(17611), UINT16_C(50944), UINT16_C(12683), UINT16_C(41177), UINT16_C(15740), UINT16_C(55500), UINT16_C(32687) },
},
},
{ { UINT16_C(33444), UINT16_C(14982), UINT16_C(34505), UINT16_C( 2818), UINT16_C(56277), UINT16_C(25259), UINT16_C(30645), UINT16_C(64314) },
{ UINT16_C( 1493), UINT16_C(14399), UINT16_C(52132), UINT16_C(28777), UINT16_C(58636), UINT16_C(65453), UINT16_C(23709), UINT16_C(16766) },
{
{ UINT16_C(33444), UINT16_C( 1493), UINT16_C(34505), UINT16_C(52132), UINT16_C(56277), UINT16_C(58636), UINT16_C(30645), UINT16_C(23709) },
{ UINT16_C(14982), UINT16_C(14399), UINT16_C( 2818), UINT16_C(28777), UINT16_C(25259), UINT16_C(65453), UINT16_C(64314), UINT16_C(16766) },
},
},
{ { UINT16_C( 1502), UINT16_C(43132), UINT16_C(32395), UINT16_C(24755), UINT16_C(24153), UINT16_C( 3779), UINT16_C(64981), UINT16_C(43786) },
{ UINT16_C(18691), UINT16_C(42979), UINT16_C(19476), UINT16_C( 8471), UINT16_C(50225), UINT16_C(53024), UINT16_C(40480), UINT16_C(65040) },
{
{ UINT16_C( 1502), UINT16_C(18691), UINT16_C(32395), UINT16_C(19476), UINT16_C(24153), UINT16_C(50225), UINT16_C(64981), UINT16_C(40480) },
{ UINT16_C(43132), UINT16_C(42979), UINT16_C(24755), UINT16_C( 8471), UINT16_C( 3779), UINT16_C(53024), UINT16_C(43786), UINT16_C(65040) },
},
},
{ { UINT16_C(36003), UINT16_C(12198), UINT16_C(22794), UINT16_C(25487), UINT16_C(21175), UINT16_C(36210), UINT16_C(31824), UINT16_C(21304) },
{ UINT16_C( 7109), UINT16_C(56058), UINT16_C( 4455), UINT16_C(39163), UINT16_C( 7125), UINT16_C(62823), UINT16_C(30905), UINT16_C(24051) },
{
{ UINT16_C(36003), UINT16_C( 7109), UINT16_C(22794), UINT16_C( 4455), UINT16_C(21175), UINT16_C( 7125), UINT16_C(31824), UINT16_C(30905) },
{ UINT16_C(12198), UINT16_C(56058), UINT16_C(25487), UINT16_C(39163), UINT16_C(36210), UINT16_C(62823), UINT16_C(21304), UINT16_C(24051) },
},
},
{ { UINT16_C(39428), UINT16_C( 3980), UINT16_C( 7155), UINT16_C(43890), UINT16_C(58478), UINT16_C(48696), UINT16_C(28768), UINT16_C( 9745) },
{ UINT16_C( 2955), UINT16_C(61952), UINT16_C(64284), UINT16_C(61834), UINT16_C(61974), UINT16_C(53222), UINT16_C(55658), UINT16_C(28204) },
{
{ UINT16_C(39428), UINT16_C( 2955), UINT16_C( 7155), UINT16_C(64284), UINT16_C(58478), UINT16_C(61974), UINT16_C(28768), UINT16_C(55658) },
{ UINT16_C( 3980), UINT16_C(61952), UINT16_C(43890), UINT16_C(61834), UINT16_C(48696), UINT16_C(53222), UINT16_C( 9745), UINT16_C(28204) },
},
},
{ { UINT16_C(47219), UINT16_C(26493), UINT16_C(61652), UINT16_C(16914), UINT16_C(19156), UINT16_C(13568), UINT16_C( 4538), UINT16_C(17755) },
{ UINT16_C(23324), UINT16_C(14391), UINT16_C(49494), UINT16_C(27689), UINT16_C( 4019), UINT16_C( 7483), UINT16_C(26856), UINT16_C(23692) },
{
{ UINT16_C(47219), UINT16_C(23324), UINT16_C(61652), UINT16_C(49494), UINT16_C(19156), UINT16_C( 4019), UINT16_C( 4538), UINT16_C(26856) },
{ UINT16_C(26493), UINT16_C(14391), UINT16_C(16914), UINT16_C(27689), UINT16_C(13568), UINT16_C( 7483), UINT16_C(17755), UINT16_C(23692) },
},
},
{ { UINT16_C( 2336), UINT16_C(62659), UINT16_C(54777), UINT16_C(52790), UINT16_C(13855), UINT16_C(55555), UINT16_C(24135), UINT16_C(25374) },
{ UINT16_C(21945), UINT16_C( 3995), UINT16_C(50198), UINT16_C(51835), UINT16_C(46803), UINT16_C(48359), UINT16_C(29470), UINT16_C(16152) },
{
{ UINT16_C( 2336), UINT16_C(21945), UINT16_C(54777), UINT16_C(50198), UINT16_C(13855), UINT16_C(46803), UINT16_C(24135), UINT16_C(29470) },
{ UINT16_C(62659), UINT16_C( 3995), UINT16_C(52790), UINT16_C(51835), UINT16_C(55555), UINT16_C(48359), UINT16_C(25374), UINT16_C(16152) },
},
},
{ { UINT16_C(56189), UINT16_C(30259), UINT16_C(27312), UINT16_C(53060), UINT16_C(18336), UINT16_C(59560), UINT16_C(50853), UINT16_C(24139) },
{ UINT16_C(59163), UINT16_C(12653), UINT16_C(59563), UINT16_C(32763), UINT16_C(58271), UINT16_C(48443), UINT16_C(21334), UINT16_C(54268) },
{
{ UINT16_C(56189), UINT16_C(59163), UINT16_C(27312), UINT16_C(59563), UINT16_C(18336), UINT16_C(58271), UINT16_C(50853), UINT16_C(21334) },
{ UINT16_C(30259), UINT16_C(12653), UINT16_C(53060), UINT16_C(32763), UINT16_C(59560), UINT16_C(48443), UINT16_C(24139), UINT16_C(54268) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
simde_uint16x8_t b = simde_vld1q_u16(test_vec[i].b);
simde_uint16x8x2_t r = simde_vtrnq_u16(a, b);
simde_test_arm_neon_assert_equal_u16x8(r.val[0], simde_vld1q_u16(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_u16x8(r.val[1], simde_vld1q_u16(test_vec[i].r[1]));
}
return 0;
}
static int
test_simde_vtrnq_u32 (SIMDE_MUNIT_TEST_ARGS) {
struct {
uint32_t a[4];
uint32_t b[4];
uint32_t r[2][4];
} test_vec[] = {
{ { UINT32_C(1309098840), UINT32_C( 298067663), UINT32_C( 699572772), UINT32_C( 489541366) },
{ UINT32_C(2219089279), UINT32_C(2283573183), UINT32_C(1328363319), UINT32_C( 765180373) },
{
{ UINT32_C(1309098840), UINT32_C(2219089279), UINT32_C( 699572772), UINT32_C(1328363319) },
{ UINT32_C( 298067663), UINT32_C(2283573183), UINT32_C( 489541366), UINT32_C( 765180373) },
},
},
{ { UINT32_C(3430654716), UINT32_C(3973922760), UINT32_C(3608514529), UINT32_C(3723838301) },
{ UINT32_C(2673949152), UINT32_C( 2588105), UINT32_C(2303743156), UINT32_C( 179759885) },
{
{ UINT32_C(3430654716), UINT32_C(2673949152), UINT32_C(3608514529), UINT32_C(2303743156) },
{ UINT32_C(3973922760), UINT32_C( 2588105), UINT32_C(3723838301), UINT32_C( 179759885) },
},
},
{ { UINT32_C(1456877965), UINT32_C(1380103024), UINT32_C(2670286914), UINT32_C(2071731867) },
{ UINT32_C( 555408728), UINT32_C( 237060698), UINT32_C(2761388438), UINT32_C(3937291612) },
{
{ UINT32_C(1456877965), UINT32_C( 555408728), UINT32_C(2670286914), UINT32_C(2761388438) },
{ UINT32_C(1380103024), UINT32_C( 237060698), UINT32_C(2071731867), UINT32_C(3937291612) },
},
},
{ { UINT32_C(4013982846), UINT32_C(2034336311), UINT32_C(1964534490), UINT32_C(3790640521) },
{ UINT32_C(3439463282), UINT32_C(3822789453), UINT32_C(4052186005), UINT32_C(1071330752) },
{
{ UINT32_C(4013982846), UINT32_C(3439463282), UINT32_C(1964534490), UINT32_C(4052186005) },
{ UINT32_C(2034336311), UINT32_C(3822789453), UINT32_C(3790640521), UINT32_C(1071330752) },
},
},
{ { UINT32_C(4029553593), UINT32_C(2020175774), UINT32_C(1659798233), UINT32_C(2302926359) },
{ UINT32_C( 911623657), UINT32_C(4263129705), UINT32_C(1710203301), UINT32_C(2426719191) },
{
{ UINT32_C(4029553593), UINT32_C( 911623657), UINT32_C(1659798233), UINT32_C(1710203301) },
{ UINT32_C(2020175774), UINT32_C(4263129705), UINT32_C(2302926359), UINT32_C(2426719191) },
},
},
{ { UINT32_C(2223100646), UINT32_C( 469625409), UINT32_C(2206067564), UINT32_C(3004023241) },
{ UINT32_C(1877566214), UINT32_C( 980222869), UINT32_C(2090884517), UINT32_C( 235684904) },
{
{ UINT32_C(2223100646), UINT32_C(1877566214), UINT32_C(2206067564), UINT32_C(2090884517) },
{ UINT32_C( 469625409), UINT32_C( 980222869), UINT32_C(3004023241), UINT32_C( 235684904) },
},
},
{ { UINT32_C(1486064919), UINT32_C(3832778872), UINT32_C(1147728251), UINT32_C(3103225266) },
{ UINT32_C(1848173016), UINT32_C(2309527012), UINT32_C( 436553970), UINT32_C(2754155149) },
{
{ UINT32_C(1486064919), UINT32_C(1848173016), UINT32_C(1147728251), UINT32_C( 436553970) },
{ UINT32_C(3832778872), UINT32_C(2309527012), UINT32_C(3103225266), UINT32_C(2754155149) },
},
},
{ { UINT32_C( 402439327), UINT32_C(3355209804), UINT32_C( 319513697), UINT32_C(2982872025) },
{ UINT32_C(3357537252), UINT32_C(2069022857), UINT32_C(2643875600), UINT32_C( 155303785) },
{
{ UINT32_C( 402439327), UINT32_C(3357537252), UINT32_C( 319513697), UINT32_C(2643875600) },
{ UINT32_C(3355209804), UINT32_C(2069022857), UINT32_C(2982872025), UINT32_C( 155303785) },
},
},
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);
simde_uint32x4x2_t r = simde_vtrnq_u32(a, b);
simde_test_arm_neon_assert_equal_u32x4(r.val[0], simde_vld1q_u32(test_vec[i].r[0]));
simde_test_arm_neon_assert_equal_u32x4(r.val[1], simde_vld1q_u32(test_vec[i].r[1]));
}
return 0;
}
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_BEGIN
#if !defined(SIMDE_BUG_INTEL_857088)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_u32)
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
SIMDE_TEST_FUNC_LIST_END
#include <test/arm/neon/test-neon-footer.h>