Googletest 1.18 asks for CMake 3.13 or newer, so configuring the tests no longer warns that CMake compatibility below 3.10 is deprecated. Co-authored-by: Cursor <cursoragent@cursor.com>
1967 lines
118 KiB
C
1967 lines
118 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_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
struct {
|
|
simde_float16_t a[4];
|
|
simde_float16_t b[4];
|
|
simde_float16_t r[2][4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT16_VALUE( 66.320), SIMDE_FLOAT16_VALUE( 36.495), SIMDE_FLOAT16_VALUE( - 89.790), SIMDE_FLOAT16_VALUE( 71.726) },
|
|
{ SIMDE_FLOAT16_VALUE( 5.106), SIMDE_FLOAT16_VALUE( 19.453), SIMDE_FLOAT16_VALUE( 93.337), SIMDE_FLOAT16_VALUE( 76.081) },
|
|
{ { SIMDE_FLOAT16_VALUE( 66.320), SIMDE_FLOAT16_VALUE( 5.106), SIMDE_FLOAT16_VALUE( - 89.790), SIMDE_FLOAT16_VALUE( 93.337) },
|
|
{ SIMDE_FLOAT16_VALUE( 36.495), SIMDE_FLOAT16_VALUE( 19.453), SIMDE_FLOAT16_VALUE( 71.726), SIMDE_FLOAT16_VALUE( 76.081) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 70.663), SIMDE_FLOAT16_VALUE( - 22.827), SIMDE_FLOAT16_VALUE( - 46.632), SIMDE_FLOAT16_VALUE( 86.654) },
|
|
{ SIMDE_FLOAT16_VALUE( 82.387), SIMDE_FLOAT16_VALUE( 11.566), SIMDE_FLOAT16_VALUE( - 69.654), SIMDE_FLOAT16_VALUE( 8.208) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 70.663), SIMDE_FLOAT16_VALUE( 82.387), SIMDE_FLOAT16_VALUE( - 46.632), SIMDE_FLOAT16_VALUE( - 69.654) },
|
|
{ SIMDE_FLOAT16_VALUE( - 22.827), SIMDE_FLOAT16_VALUE( 11.566), SIMDE_FLOAT16_VALUE( 86.654), SIMDE_FLOAT16_VALUE( 8.208) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 96.352), SIMDE_FLOAT16_VALUE( 29.146), SIMDE_FLOAT16_VALUE( 85.005), SIMDE_FLOAT16_VALUE( - 71.890) },
|
|
{ SIMDE_FLOAT16_VALUE( - 52.922), SIMDE_FLOAT16_VALUE( 46.133), SIMDE_FLOAT16_VALUE( - 81.316), SIMDE_FLOAT16_VALUE( - 14.760) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 96.352), SIMDE_FLOAT16_VALUE( - 52.922), SIMDE_FLOAT16_VALUE( 85.005), SIMDE_FLOAT16_VALUE( - 81.316) },
|
|
{ SIMDE_FLOAT16_VALUE( 29.146), SIMDE_FLOAT16_VALUE( 46.133), SIMDE_FLOAT16_VALUE( - 71.890), SIMDE_FLOAT16_VALUE( - 14.760) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( 43.402), SIMDE_FLOAT16_VALUE( 54.648), SIMDE_FLOAT16_VALUE( 97.496), SIMDE_FLOAT16_VALUE( 14.606) },
|
|
{ SIMDE_FLOAT16_VALUE( 22.113), SIMDE_FLOAT16_VALUE( - 11.759), SIMDE_FLOAT16_VALUE( 36.678), SIMDE_FLOAT16_VALUE( - 73.712) },
|
|
{ { SIMDE_FLOAT16_VALUE( 43.402), SIMDE_FLOAT16_VALUE( 22.113), SIMDE_FLOAT16_VALUE( 97.496), SIMDE_FLOAT16_VALUE( 36.678) },
|
|
{ SIMDE_FLOAT16_VALUE( 54.648), SIMDE_FLOAT16_VALUE( - 11.759), SIMDE_FLOAT16_VALUE( 14.606), SIMDE_FLOAT16_VALUE( - 73.712) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 68.260), SIMDE_FLOAT16_VALUE( 59.137), SIMDE_FLOAT16_VALUE( 29.196), SIMDE_FLOAT16_VALUE( - 69.831) },
|
|
{ SIMDE_FLOAT16_VALUE( 54.264), SIMDE_FLOAT16_VALUE( 8.480), SIMDE_FLOAT16_VALUE( - 72.393), SIMDE_FLOAT16_VALUE( 63.870) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 68.260), SIMDE_FLOAT16_VALUE( 54.264), SIMDE_FLOAT16_VALUE( 29.196), SIMDE_FLOAT16_VALUE( - 72.393) },
|
|
{ SIMDE_FLOAT16_VALUE( 59.137), SIMDE_FLOAT16_VALUE( 8.480), SIMDE_FLOAT16_VALUE( - 69.831), SIMDE_FLOAT16_VALUE( 63.870) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( 59.923), SIMDE_FLOAT16_VALUE( 35.065), SIMDE_FLOAT16_VALUE( 6.417), SIMDE_FLOAT16_VALUE( - 85.371) },
|
|
{ SIMDE_FLOAT16_VALUE( 19.002), SIMDE_FLOAT16_VALUE( 90.454), SIMDE_FLOAT16_VALUE( 57.432), SIMDE_FLOAT16_VALUE( 80.462) },
|
|
{ { SIMDE_FLOAT16_VALUE( 59.923), SIMDE_FLOAT16_VALUE( 19.002), SIMDE_FLOAT16_VALUE( 6.417), SIMDE_FLOAT16_VALUE( 57.432) },
|
|
{ SIMDE_FLOAT16_VALUE( 35.065), SIMDE_FLOAT16_VALUE( 90.454), SIMDE_FLOAT16_VALUE( - 85.371), SIMDE_FLOAT16_VALUE( 80.462) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 33.733), SIMDE_FLOAT16_VALUE( - 87.485), SIMDE_FLOAT16_VALUE( - 77.296), SIMDE_FLOAT16_VALUE( - 17.408) },
|
|
{ SIMDE_FLOAT16_VALUE( 97.524), SIMDE_FLOAT16_VALUE( 69.470), SIMDE_FLOAT16_VALUE( 73.726), SIMDE_FLOAT16_VALUE( 84.744) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 33.733), SIMDE_FLOAT16_VALUE( 97.524), SIMDE_FLOAT16_VALUE( - 77.296), SIMDE_FLOAT16_VALUE( 73.726) },
|
|
{ SIMDE_FLOAT16_VALUE( - 87.485), SIMDE_FLOAT16_VALUE( 69.470), SIMDE_FLOAT16_VALUE( - 17.408), SIMDE_FLOAT16_VALUE( 84.744) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 55.591), SIMDE_FLOAT16_VALUE( 61.251), SIMDE_FLOAT16_VALUE( - 65.213), SIMDE_FLOAT16_VALUE( - 77.400) },
|
|
{ SIMDE_FLOAT16_VALUE( 25.667), SIMDE_FLOAT16_VALUE( 90.005), SIMDE_FLOAT16_VALUE( - 46.475), SIMDE_FLOAT16_VALUE( 28.899) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 55.591), SIMDE_FLOAT16_VALUE( 25.667), SIMDE_FLOAT16_VALUE( - 65.213), SIMDE_FLOAT16_VALUE( - 46.475) },
|
|
{ SIMDE_FLOAT16_VALUE( 61.251), SIMDE_FLOAT16_VALUE( 90.005), SIMDE_FLOAT16_VALUE( - 77.400), SIMDE_FLOAT16_VALUE( 28.899) } } },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde_float16x4_t a = simde_vld1_f16(test_vec[i].a);
|
|
simde_float16x4_t b = simde_vld1_f16(test_vec[i].b);
|
|
simde_float16x4x2_t r = simde_vtrn_f16(a, b);
|
|
|
|
simde_test_arm_neon_assert_equal_f16x4(r.val[0], simde_vld1_f16(test_vec[i].r[0]), 1);
|
|
simde_test_arm_neon_assert_equal_f16x4(r.val[1], simde_vld1_f16(test_vec[i].r[1]), 1);
|
|
}
|
|
|
|
return 0;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_float16x4_t a = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
|
|
simde_float16x4_t b = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
|
|
simde_float16x2_t r[2] = simde_vtrn_f16(a, b);
|
|
|
|
simde_test_arm_neon_write_f16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_f16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_f16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_float32x2_t a = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
|
|
simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
|
|
simde_float32x2_t r[2] = simde_vtrn_f32(a, b);
|
|
|
|
simde_test_arm_neon_write_f32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_f32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_f32x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_int8x8_t a = simde_test_arm_neon_random_i8x8();
|
|
simde_int8x8_t b = simde_test_arm_neon_random_i8x8();
|
|
simde_int8x2_t r[2] = simde_vtrn_s8(a, b);
|
|
|
|
simde_test_arm_neon_write_i8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_i8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_i8x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_int16x4_t a = simde_test_arm_neon_random_i16x4();
|
|
simde_int16x4_t b = simde_test_arm_neon_random_i16x4();
|
|
simde_int16x2_t r[2] = simde_vtrn_s16(a, b);
|
|
|
|
simde_test_arm_neon_write_i16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_i16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_i16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_int32x2_t a = simde_test_arm_neon_random_i32x2();
|
|
simde_int32x2_t b = simde_test_arm_neon_random_i32x2();
|
|
simde_int32x2_t r[2] = simde_vtrn_s32(a, b);
|
|
|
|
simde_test_arm_neon_write_i32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_i32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_i32x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_uint8x8_t a = simde_test_arm_neon_random_u8x8();
|
|
simde_uint8x8_t b = simde_test_arm_neon_random_u8x8();
|
|
simde_uint8x2_t r[2] = simde_vtrn_u8(a, b);
|
|
|
|
simde_test_arm_neon_write_u8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_u8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_u8x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_uint16x4_t a = simde_test_arm_neon_random_u16x4();
|
|
simde_uint16x4_t b = simde_test_arm_neon_random_u16x4();
|
|
simde_uint16x2_t r[2] = simde_vtrn_u16(a, b);
|
|
|
|
simde_test_arm_neon_write_u16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_u16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_u16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_uint32x2_t a = simde_test_arm_neon_random_u32x2();
|
|
simde_uint32x2_t b = simde_test_arm_neon_random_u32x2();
|
|
simde_uint32x2_t r[2] = simde_vtrn_u32(a, b);
|
|
|
|
simde_test_arm_neon_write_u32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_u32x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_u32x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
struct {
|
|
simde_float16_t a[8];
|
|
simde_float16_t b[8];
|
|
simde_float16_t r[2][8];
|
|
} test_vec[] = {
|
|
{ { SIMDE_FLOAT16_VALUE( 72.402), SIMDE_FLOAT16_VALUE( - 27.275), SIMDE_FLOAT16_VALUE( - 87.963), SIMDE_FLOAT16_VALUE( - 3.927),
|
|
SIMDE_FLOAT16_VALUE( 27.751), SIMDE_FLOAT16_VALUE( - 91.569), SIMDE_FLOAT16_VALUE( - 72.494), SIMDE_FLOAT16_VALUE( - 63.937) },
|
|
{ SIMDE_FLOAT16_VALUE( 31.848), SIMDE_FLOAT16_VALUE( 16.416), SIMDE_FLOAT16_VALUE( - 23.281), SIMDE_FLOAT16_VALUE( 29.168),
|
|
SIMDE_FLOAT16_VALUE( - 37.304), SIMDE_FLOAT16_VALUE( - 59.759), SIMDE_FLOAT16_VALUE( 51.039), SIMDE_FLOAT16_VALUE( 87.698) },
|
|
{ { SIMDE_FLOAT16_VALUE( 72.402), SIMDE_FLOAT16_VALUE( 31.848), SIMDE_FLOAT16_VALUE( - 87.963), SIMDE_FLOAT16_VALUE( - 23.281),
|
|
SIMDE_FLOAT16_VALUE( 27.751), SIMDE_FLOAT16_VALUE( - 37.304), SIMDE_FLOAT16_VALUE( - 72.494), SIMDE_FLOAT16_VALUE( 51.039) },
|
|
{ SIMDE_FLOAT16_VALUE( - 27.275), SIMDE_FLOAT16_VALUE( 16.416), SIMDE_FLOAT16_VALUE( - 3.927), SIMDE_FLOAT16_VALUE( 29.168),
|
|
SIMDE_FLOAT16_VALUE( - 91.569), SIMDE_FLOAT16_VALUE( - 59.759), SIMDE_FLOAT16_VALUE( - 63.937), SIMDE_FLOAT16_VALUE( 87.698) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( 88.336), SIMDE_FLOAT16_VALUE( - 46.110), SIMDE_FLOAT16_VALUE( 53.634), SIMDE_FLOAT16_VALUE( 1.307),
|
|
SIMDE_FLOAT16_VALUE( 41.335), SIMDE_FLOAT16_VALUE( - 93.616), SIMDE_FLOAT16_VALUE( 39.662), SIMDE_FLOAT16_VALUE( 95.339) },
|
|
{ SIMDE_FLOAT16_VALUE( 66.944), SIMDE_FLOAT16_VALUE( 3.046), SIMDE_FLOAT16_VALUE( 64.921), SIMDE_FLOAT16_VALUE( 14.665),
|
|
SIMDE_FLOAT16_VALUE( 44.219), SIMDE_FLOAT16_VALUE( - 22.965), SIMDE_FLOAT16_VALUE( - 95.371), SIMDE_FLOAT16_VALUE( 40.338) },
|
|
{ { SIMDE_FLOAT16_VALUE( 88.336), SIMDE_FLOAT16_VALUE( 66.944), SIMDE_FLOAT16_VALUE( 53.634), SIMDE_FLOAT16_VALUE( 64.921),
|
|
SIMDE_FLOAT16_VALUE( 41.335), SIMDE_FLOAT16_VALUE( 44.219), SIMDE_FLOAT16_VALUE( 39.662), SIMDE_FLOAT16_VALUE( - 95.371) },
|
|
{ SIMDE_FLOAT16_VALUE( - 46.110), SIMDE_FLOAT16_VALUE( 3.046), SIMDE_FLOAT16_VALUE( 1.307), SIMDE_FLOAT16_VALUE( 14.665),
|
|
SIMDE_FLOAT16_VALUE( - 93.616), SIMDE_FLOAT16_VALUE( - 22.965), SIMDE_FLOAT16_VALUE( 95.339), SIMDE_FLOAT16_VALUE( 40.338) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 73.328), SIMDE_FLOAT16_VALUE( 78.977), SIMDE_FLOAT16_VALUE( 37.493), SIMDE_FLOAT16_VALUE( - 93.150),
|
|
SIMDE_FLOAT16_VALUE( 57.450), SIMDE_FLOAT16_VALUE( 94.268), SIMDE_FLOAT16_VALUE( - 95.908), SIMDE_FLOAT16_VALUE( 22.514) },
|
|
{ SIMDE_FLOAT16_VALUE( - 79.810), SIMDE_FLOAT16_VALUE( - 64.617), SIMDE_FLOAT16_VALUE( 26.363), SIMDE_FLOAT16_VALUE( - 66.259),
|
|
SIMDE_FLOAT16_VALUE( - 22.866), SIMDE_FLOAT16_VALUE( - 77.509), SIMDE_FLOAT16_VALUE( - 94.614), SIMDE_FLOAT16_VALUE( 39.092) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 73.328), SIMDE_FLOAT16_VALUE( - 79.810), SIMDE_FLOAT16_VALUE( 37.493), SIMDE_FLOAT16_VALUE( 26.363),
|
|
SIMDE_FLOAT16_VALUE( 57.450), SIMDE_FLOAT16_VALUE( - 22.866), SIMDE_FLOAT16_VALUE( - 95.908), SIMDE_FLOAT16_VALUE( - 94.614) },
|
|
{ SIMDE_FLOAT16_VALUE( 78.977), SIMDE_FLOAT16_VALUE( - 64.617), SIMDE_FLOAT16_VALUE( - 93.150), SIMDE_FLOAT16_VALUE( - 66.259),
|
|
SIMDE_FLOAT16_VALUE( 94.268), SIMDE_FLOAT16_VALUE( - 77.509), SIMDE_FLOAT16_VALUE( 22.514), SIMDE_FLOAT16_VALUE( 39.092) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 16.026), SIMDE_FLOAT16_VALUE( - 71.194), SIMDE_FLOAT16_VALUE( - 85.000), SIMDE_FLOAT16_VALUE( 93.544),
|
|
SIMDE_FLOAT16_VALUE( 88.015), SIMDE_FLOAT16_VALUE( - 93.133), SIMDE_FLOAT16_VALUE( - 50.972), SIMDE_FLOAT16_VALUE( - 13.782) },
|
|
{ SIMDE_FLOAT16_VALUE( 53.753), SIMDE_FLOAT16_VALUE( - 85.486), SIMDE_FLOAT16_VALUE( - 7.617), SIMDE_FLOAT16_VALUE( - 78.630),
|
|
SIMDE_FLOAT16_VALUE( 90.258), SIMDE_FLOAT16_VALUE( - 49.347), SIMDE_FLOAT16_VALUE( - 53.331), SIMDE_FLOAT16_VALUE( - 75.926) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 16.026), SIMDE_FLOAT16_VALUE( 53.753), SIMDE_FLOAT16_VALUE( - 85.000), SIMDE_FLOAT16_VALUE( - 7.617),
|
|
SIMDE_FLOAT16_VALUE( 88.015), SIMDE_FLOAT16_VALUE( 90.258), SIMDE_FLOAT16_VALUE( - 50.972), SIMDE_FLOAT16_VALUE( - 53.331) },
|
|
{ SIMDE_FLOAT16_VALUE( - 71.194), SIMDE_FLOAT16_VALUE( - 85.486), SIMDE_FLOAT16_VALUE( 93.544), SIMDE_FLOAT16_VALUE( - 78.630),
|
|
SIMDE_FLOAT16_VALUE( - 93.133), SIMDE_FLOAT16_VALUE( - 49.347), SIMDE_FLOAT16_VALUE( - 13.782), SIMDE_FLOAT16_VALUE( - 75.926) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 35.438), SIMDE_FLOAT16_VALUE( 55.067), SIMDE_FLOAT16_VALUE( 44.514), SIMDE_FLOAT16_VALUE( 13.056),
|
|
SIMDE_FLOAT16_VALUE( - 7.241), SIMDE_FLOAT16_VALUE( 30.924), SIMDE_FLOAT16_VALUE( 96.856), SIMDE_FLOAT16_VALUE( 46.739) },
|
|
{ SIMDE_FLOAT16_VALUE( 2.315), SIMDE_FLOAT16_VALUE( - 96.213), SIMDE_FLOAT16_VALUE( 97.921), SIMDE_FLOAT16_VALUE( - 14.954),
|
|
SIMDE_FLOAT16_VALUE( - 37.120), SIMDE_FLOAT16_VALUE( - 36.198), SIMDE_FLOAT16_VALUE( - 5.285), SIMDE_FLOAT16_VALUE( - 47.281) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 35.438), SIMDE_FLOAT16_VALUE( 2.315), SIMDE_FLOAT16_VALUE( 44.514), SIMDE_FLOAT16_VALUE( 97.921),
|
|
SIMDE_FLOAT16_VALUE( - 7.241), SIMDE_FLOAT16_VALUE( - 37.120), SIMDE_FLOAT16_VALUE( 96.856), SIMDE_FLOAT16_VALUE( - 5.285) },
|
|
{ SIMDE_FLOAT16_VALUE( 55.067), SIMDE_FLOAT16_VALUE( - 96.213), SIMDE_FLOAT16_VALUE( 13.056), SIMDE_FLOAT16_VALUE( - 14.954),
|
|
SIMDE_FLOAT16_VALUE( 30.924), SIMDE_FLOAT16_VALUE( - 36.198), SIMDE_FLOAT16_VALUE( 46.739), SIMDE_FLOAT16_VALUE( - 47.281) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 31.935), SIMDE_FLOAT16_VALUE( - 35.016), SIMDE_FLOAT16_VALUE( 62.766), SIMDE_FLOAT16_VALUE( - 76.317),
|
|
SIMDE_FLOAT16_VALUE( - 36.406), SIMDE_FLOAT16_VALUE( 52.789), SIMDE_FLOAT16_VALUE( 25.725), SIMDE_FLOAT16_VALUE( - 45.278) },
|
|
{ SIMDE_FLOAT16_VALUE( - 31.370), SIMDE_FLOAT16_VALUE( - 54.045), SIMDE_FLOAT16_VALUE( 10.498), SIMDE_FLOAT16_VALUE( - 13.009),
|
|
SIMDE_FLOAT16_VALUE( - 6.750), SIMDE_FLOAT16_VALUE( 32.058), SIMDE_FLOAT16_VALUE( 40.207), SIMDE_FLOAT16_VALUE( 43.579) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 31.935), SIMDE_FLOAT16_VALUE( - 31.370), SIMDE_FLOAT16_VALUE( 62.766), SIMDE_FLOAT16_VALUE( 10.498),
|
|
SIMDE_FLOAT16_VALUE( - 36.406), SIMDE_FLOAT16_VALUE( - 6.750), SIMDE_FLOAT16_VALUE( 25.725), SIMDE_FLOAT16_VALUE( 40.207) },
|
|
{ SIMDE_FLOAT16_VALUE( - 35.016), SIMDE_FLOAT16_VALUE( - 54.045), SIMDE_FLOAT16_VALUE( - 76.317), SIMDE_FLOAT16_VALUE( - 13.009),
|
|
SIMDE_FLOAT16_VALUE( 52.789), SIMDE_FLOAT16_VALUE( 32.058), SIMDE_FLOAT16_VALUE( - 45.278), SIMDE_FLOAT16_VALUE( 43.579) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 40.893), SIMDE_FLOAT16_VALUE( - 77.395), SIMDE_FLOAT16_VALUE( 91.385), SIMDE_FLOAT16_VALUE( - 33.021),
|
|
SIMDE_FLOAT16_VALUE( 87.997), SIMDE_FLOAT16_VALUE( 48.892), SIMDE_FLOAT16_VALUE( - 22.163), SIMDE_FLOAT16_VALUE( - 82.676) },
|
|
{ SIMDE_FLOAT16_VALUE( 34.999), SIMDE_FLOAT16_VALUE( 34.155), SIMDE_FLOAT16_VALUE( - 52.404), SIMDE_FLOAT16_VALUE( - 53.410),
|
|
SIMDE_FLOAT16_VALUE( - 96.720), SIMDE_FLOAT16_VALUE( - 99.174), SIMDE_FLOAT16_VALUE( 31.360), SIMDE_FLOAT16_VALUE( 73.126) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 40.893), SIMDE_FLOAT16_VALUE( 34.999), SIMDE_FLOAT16_VALUE( 91.385), SIMDE_FLOAT16_VALUE( - 52.404),
|
|
SIMDE_FLOAT16_VALUE( 87.997), SIMDE_FLOAT16_VALUE( - 96.720), SIMDE_FLOAT16_VALUE( - 22.163), SIMDE_FLOAT16_VALUE( 31.360) },
|
|
{ SIMDE_FLOAT16_VALUE( - 77.395), SIMDE_FLOAT16_VALUE( 34.155), SIMDE_FLOAT16_VALUE( - 33.021), SIMDE_FLOAT16_VALUE( - 53.410),
|
|
SIMDE_FLOAT16_VALUE( 48.892), SIMDE_FLOAT16_VALUE( - 99.174), SIMDE_FLOAT16_VALUE( - 82.676), SIMDE_FLOAT16_VALUE( 73.126) } } },
|
|
{ { SIMDE_FLOAT16_VALUE( - 85.597), SIMDE_FLOAT16_VALUE( 2.289), SIMDE_FLOAT16_VALUE( 38.799), SIMDE_FLOAT16_VALUE( 7.382),
|
|
SIMDE_FLOAT16_VALUE( - 8.076), SIMDE_FLOAT16_VALUE( - 66.132), SIMDE_FLOAT16_VALUE( 4.632), SIMDE_FLOAT16_VALUE( 35.004) },
|
|
{ SIMDE_FLOAT16_VALUE( 64.622), SIMDE_FLOAT16_VALUE( 7.608), SIMDE_FLOAT16_VALUE( 81.664), SIMDE_FLOAT16_VALUE( - 22.375),
|
|
SIMDE_FLOAT16_VALUE( - 85.186), SIMDE_FLOAT16_VALUE( - 85.063), SIMDE_FLOAT16_VALUE( 48.648), SIMDE_FLOAT16_VALUE( 0.615) },
|
|
{ { SIMDE_FLOAT16_VALUE( - 85.597), SIMDE_FLOAT16_VALUE( 64.622), SIMDE_FLOAT16_VALUE( 38.799), SIMDE_FLOAT16_VALUE( 81.664),
|
|
SIMDE_FLOAT16_VALUE( - 8.076), SIMDE_FLOAT16_VALUE( - 85.186), SIMDE_FLOAT16_VALUE( 4.632), SIMDE_FLOAT16_VALUE( 48.648) },
|
|
{ SIMDE_FLOAT16_VALUE( 2.289), SIMDE_FLOAT16_VALUE( 7.608), SIMDE_FLOAT16_VALUE( 7.382), SIMDE_FLOAT16_VALUE( - 22.375),
|
|
SIMDE_FLOAT16_VALUE( - 66.132), SIMDE_FLOAT16_VALUE( - 85.063), SIMDE_FLOAT16_VALUE( 35.004), SIMDE_FLOAT16_VALUE( 0.615) } } },
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde_float16x8_t a = simde_vld1q_f16(test_vec[i].a);
|
|
simde_float16x8_t b = simde_vld1q_f16(test_vec[i].b);
|
|
simde_float16x8x2_t r = simde_vtrnq_f16(a, b);
|
|
simde_test_arm_neon_assert_equal_f16x8(r.val[0], simde_vld1q_f16(test_vec[i].r[0]), 1);
|
|
simde_test_arm_neon_assert_equal_f16x8(r.val[1], simde_vld1q_f16(test_vec[i].r[1]), 1);
|
|
}
|
|
|
|
return 0;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_float16x8_t a = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
|
|
simde_float16x8_t b = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
|
|
simde_float16x2_t r[2] = simde_vtrnq_f16(a, b);
|
|
|
|
simde_test_arm_neon_write_f16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_f16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_f16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_float32x4_t a = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
|
|
simde_float32x4_t b = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
|
|
simde_float32x2_t r[2] = simde_vtrnq_f32(a, b);
|
|
|
|
simde_test_arm_neon_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_f32x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_int8x16_t a = simde_test_arm_neon_random_i8x16();
|
|
simde_int8x16_t b = simde_test_arm_neon_random_i8x16();
|
|
simde_int8x2_t r[2] = simde_vtrnq_s8(a, b);
|
|
|
|
simde_test_arm_neon_write_i8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_i8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_i8x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_int16x8_t a = simde_test_arm_neon_random_i16x8();
|
|
simde_int16x8_t b = simde_test_arm_neon_random_i16x8();
|
|
simde_int16x2_t r[2] = simde_vtrnq_s16(a, b);
|
|
|
|
simde_test_arm_neon_write_i16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_i16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_i16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_int32x4_t a = simde_test_arm_neon_random_i32x4();
|
|
simde_int32x4_t b = simde_test_arm_neon_random_i32x4();
|
|
simde_int32x2_t r[2] = simde_vtrnq_s32(a, b);
|
|
|
|
simde_test_arm_neon_write_i32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_i32x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_uint8x16_t a = simde_test_arm_neon_random_u8x16();
|
|
simde_uint8x16_t b = simde_test_arm_neon_random_u8x16();
|
|
simde_uint8x2_t r[2] = simde_vtrnq_u8(a, b);
|
|
|
|
simde_test_arm_neon_write_u8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_u8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_u8x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_uint16x8_t a = simde_test_arm_neon_random_u16x8();
|
|
simde_uint16x8_t b = simde_test_arm_neon_random_u16x8();
|
|
simde_uint16x2_t r[2] = simde_vtrnq_u16(a, b);
|
|
|
|
simde_test_arm_neon_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_u16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_u16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
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;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_uint32x4_t a = simde_test_arm_neon_random_u32x4();
|
|
simde_uint32x4_t b = simde_test_arm_neon_random_u32x4();
|
|
simde_uint32x2_t r[2] = simde_vtrnq_u32(a, b);
|
|
|
|
simde_test_arm_neon_write_u32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_u32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_u32x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_p8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
struct {
|
|
simde_poly8_t a[8];
|
|
simde_poly8_t b[8];
|
|
simde_poly8_t r[2][8];
|
|
} test_vec[] = {
|
|
{ { SIMDE_POLY8_C(156), SIMDE_POLY8_C(211), SIMDE_POLY8_C(239), SIMDE_POLY8_C(201), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(216), SIMDE_POLY8_C(173) },
|
|
{ SIMDE_POLY8_C(147), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(140), SIMDE_POLY8_C(167), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 31) },
|
|
{
|
|
{ SIMDE_POLY8_C(156), SIMDE_POLY8_C(147), SIMDE_POLY8_C(239), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(251), SIMDE_POLY8_C(167), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 36) },
|
|
{ SIMDE_POLY8_C(211), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(201), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(115), SIMDE_POLY8_C(173), SIMDE_POLY8_C( 31) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 4), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 52) },
|
|
{ SIMDE_POLY8_C( 61), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(179), SIMDE_POLY8_C(216), SIMDE_POLY8_C(212) },
|
|
{
|
|
{ SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(166), SIMDE_POLY8_C(216) },
|
|
{ SIMDE_POLY8_C( 85), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 4), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(212) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(134), SIMDE_POLY8_C(199), SIMDE_POLY8_C(157), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 46), SIMDE_POLY8_C(158) },
|
|
{ SIMDE_POLY8_C(139), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(249) },
|
|
{
|
|
{ SIMDE_POLY8_C(134), SIMDE_POLY8_C(139), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 81) },
|
|
{ SIMDE_POLY8_C(199), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 79), SIMDE_POLY8_C(158), SIMDE_POLY8_C(249) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(164), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(167), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(203), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 75) },
|
|
{ SIMDE_POLY8_C( 56), SIMDE_POLY8_C(236), SIMDE_POLY8_C(117), SIMDE_POLY8_C(112), SIMDE_POLY8_C(159), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 37) },
|
|
{
|
|
{ SIMDE_POLY8_C(164), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 13), SIMDE_POLY8_C(159), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 69) },
|
|
{ SIMDE_POLY8_C( 9), SIMDE_POLY8_C(236), SIMDE_POLY8_C(167), SIMDE_POLY8_C(112), SIMDE_POLY8_C(203), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 37) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C( 21), SIMDE_POLY8_C(226), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(213), SIMDE_POLY8_C(191), SIMDE_POLY8_C(227) },
|
|
{ SIMDE_POLY8_C( 37), SIMDE_POLY8_C(234), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(232), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(103), SIMDE_POLY8_C(225), SIMDE_POLY8_C(221) },
|
|
{
|
|
{ SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(191), SIMDE_POLY8_C(225) },
|
|
{ SIMDE_POLY8_C(226), SIMDE_POLY8_C(234), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(232), SIMDE_POLY8_C(213), SIMDE_POLY8_C(103), SIMDE_POLY8_C(227), SIMDE_POLY8_C(221) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(113), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(132), SIMDE_POLY8_C(126), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(201), SIMDE_POLY8_C( 10) },
|
|
{ SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(122), SIMDE_POLY8_C(235), SIMDE_POLY8_C(140), SIMDE_POLY8_C(191), SIMDE_POLY8_C( 16), SIMDE_POLY8_C(161) },
|
|
{
|
|
{ SIMDE_POLY8_C(113), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(132), SIMDE_POLY8_C(122), SIMDE_POLY8_C(210), SIMDE_POLY8_C(140), SIMDE_POLY8_C(201), SIMDE_POLY8_C( 16) },
|
|
{ SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(126), SIMDE_POLY8_C(235), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(191), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(161) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(162), SIMDE_POLY8_C(183), SIMDE_POLY8_C(194), SIMDE_POLY8_C(250), SIMDE_POLY8_C(140), SIMDE_POLY8_C(129), SIMDE_POLY8_C(222), SIMDE_POLY8_C(177) },
|
|
{ SIMDE_POLY8_C(107), SIMDE_POLY8_C(244), SIMDE_POLY8_C(153), SIMDE_POLY8_C(164), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(123), SIMDE_POLY8_C(129), SIMDE_POLY8_C(204) },
|
|
{
|
|
{ SIMDE_POLY8_C(162), SIMDE_POLY8_C(107), SIMDE_POLY8_C(194), SIMDE_POLY8_C(153), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(222), SIMDE_POLY8_C(129) },
|
|
{ SIMDE_POLY8_C(183), SIMDE_POLY8_C(244), SIMDE_POLY8_C(250), SIMDE_POLY8_C(164), SIMDE_POLY8_C(129), SIMDE_POLY8_C(123), SIMDE_POLY8_C(177), SIMDE_POLY8_C(204) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(129), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(175) },
|
|
{ SIMDE_POLY8_C( 83), SIMDE_POLY8_C(216), SIMDE_POLY8_C(154), SIMDE_POLY8_C(224), SIMDE_POLY8_C(151), SIMDE_POLY8_C(171), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 57) },
|
|
{
|
|
{ SIMDE_POLY8_C(129), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 75), SIMDE_POLY8_C(154), SIMDE_POLY8_C(100), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(129) },
|
|
{ SIMDE_POLY8_C( 5), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(171), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 57) },
|
|
},
|
|
},
|
|
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde_poly8x8_t a = simde_vld1_p8(test_vec[i].a);
|
|
simde_poly8x8_t b = simde_vld1_p8(test_vec[i].b);
|
|
simde_poly8x8x2_t r = simde_vtrn_p8(a, b);
|
|
|
|
simde_test_arm_neon_assert_equal_p8x8(r.val[0], simde_vld1_p8(test_vec[i].r[0]));
|
|
simde_test_arm_neon_assert_equal_p8x8(r.val[1], simde_vld1_p8(test_vec[i].r[1]));
|
|
}
|
|
|
|
return 0;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_poly8x8_t a = simde_test_arm_neon_random_p8x8();
|
|
simde_poly8x8_t b = simde_test_arm_neon_random_p8x8();
|
|
simde_poly8x2_t r[2] = simde_vtrn_p8(a, b);
|
|
|
|
simde_test_arm_neon_write_p8x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_p8x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_p8x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrn_p16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
struct {
|
|
simde_poly16_t a[4];
|
|
simde_poly16_t b[4];
|
|
simde_poly16_t r[2][4];
|
|
} test_vec[] = {
|
|
{ { SIMDE_POLY16_C(39077), SIMDE_POLY16_C(38350), SIMDE_POLY16_C( 1512), SIMDE_POLY16_C(63202) },
|
|
{ SIMDE_POLY16_C(45315), SIMDE_POLY16_C( 4567), SIMDE_POLY16_C(18974), SIMDE_POLY16_C(10275) },
|
|
{
|
|
{ SIMDE_POLY16_C(39077), SIMDE_POLY16_C(45315), SIMDE_POLY16_C( 1512), SIMDE_POLY16_C(18974) },
|
|
{ SIMDE_POLY16_C(38350), SIMDE_POLY16_C( 4567), SIMDE_POLY16_C(63202), SIMDE_POLY16_C(10275) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(14563), SIMDE_POLY16_C(36858), SIMDE_POLY16_C(33303), SIMDE_POLY16_C(63726) },
|
|
{ SIMDE_POLY16_C(24487), SIMDE_POLY16_C(30580), SIMDE_POLY16_C(30894), SIMDE_POLY16_C(21608) },
|
|
{
|
|
{ SIMDE_POLY16_C(14563), SIMDE_POLY16_C(24487), SIMDE_POLY16_C(33303), SIMDE_POLY16_C(30894) },
|
|
{ SIMDE_POLY16_C(36858), SIMDE_POLY16_C(30580), SIMDE_POLY16_C(63726), SIMDE_POLY16_C(21608) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(13841), SIMDE_POLY16_C(63977), SIMDE_POLY16_C(52284), SIMDE_POLY16_C(16367) },
|
|
{ SIMDE_POLY16_C(50813), SIMDE_POLY16_C(39761), SIMDE_POLY16_C(29712), SIMDE_POLY16_C(62660) },
|
|
{
|
|
{ SIMDE_POLY16_C(13841), SIMDE_POLY16_C(50813), SIMDE_POLY16_C(52284), SIMDE_POLY16_C(29712) },
|
|
{ SIMDE_POLY16_C(63977), SIMDE_POLY16_C(39761), SIMDE_POLY16_C(16367), SIMDE_POLY16_C(62660) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(48812), SIMDE_POLY16_C(50051), SIMDE_POLY16_C(28993), SIMDE_POLY16_C(59580) },
|
|
{ SIMDE_POLY16_C(12497), SIMDE_POLY16_C(32608), SIMDE_POLY16_C(51369), SIMDE_POLY16_C(47827) },
|
|
{
|
|
{ SIMDE_POLY16_C(48812), SIMDE_POLY16_C(12497), SIMDE_POLY16_C(28993), SIMDE_POLY16_C(51369) },
|
|
{ SIMDE_POLY16_C(50051), SIMDE_POLY16_C(32608), SIMDE_POLY16_C(59580), SIMDE_POLY16_C(47827) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(48639), SIMDE_POLY16_C(15283), SIMDE_POLY16_C(41609), SIMDE_POLY16_C( 1658) },
|
|
{ SIMDE_POLY16_C(52073), SIMDE_POLY16_C(31138), SIMDE_POLY16_C(26175), SIMDE_POLY16_C(60269) },
|
|
{
|
|
{ SIMDE_POLY16_C(48639), SIMDE_POLY16_C(52073), SIMDE_POLY16_C(41609), SIMDE_POLY16_C(26175) },
|
|
{ SIMDE_POLY16_C(15283), SIMDE_POLY16_C(31138), SIMDE_POLY16_C( 1658), SIMDE_POLY16_C(60269) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(61732), SIMDE_POLY16_C(26031), SIMDE_POLY16_C(27490), SIMDE_POLY16_C(13134) },
|
|
{ SIMDE_POLY16_C(44699), SIMDE_POLY16_C(17587), SIMDE_POLY16_C(34422), SIMDE_POLY16_C(30206) },
|
|
{
|
|
{ SIMDE_POLY16_C(61732), SIMDE_POLY16_C(44699), SIMDE_POLY16_C(27490), SIMDE_POLY16_C(34422) },
|
|
{ SIMDE_POLY16_C(26031), SIMDE_POLY16_C(17587), SIMDE_POLY16_C(13134), SIMDE_POLY16_C(30206) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(45379), SIMDE_POLY16_C(52400), SIMDE_POLY16_C(11092), SIMDE_POLY16_C(48595) },
|
|
{ SIMDE_POLY16_C(30198), SIMDE_POLY16_C(13878), SIMDE_POLY16_C(42203), SIMDE_POLY16_C(65313) },
|
|
{
|
|
{ SIMDE_POLY16_C(45379), SIMDE_POLY16_C(30198), SIMDE_POLY16_C(11092), SIMDE_POLY16_C(42203) },
|
|
{ SIMDE_POLY16_C(52400), SIMDE_POLY16_C(13878), SIMDE_POLY16_C(48595), SIMDE_POLY16_C(65313) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(53397), SIMDE_POLY16_C(63333), SIMDE_POLY16_C(45883), SIMDE_POLY16_C(55083) },
|
|
{ SIMDE_POLY16_C(56929), SIMDE_POLY16_C(55067), SIMDE_POLY16_C( 6756), SIMDE_POLY16_C(43085) },
|
|
{
|
|
{ SIMDE_POLY16_C(53397), SIMDE_POLY16_C(56929), SIMDE_POLY16_C(45883), SIMDE_POLY16_C( 6756) },
|
|
{ SIMDE_POLY16_C(63333), SIMDE_POLY16_C(55067), SIMDE_POLY16_C(55083), SIMDE_POLY16_C(43085) },
|
|
},
|
|
},
|
|
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde_poly16x4_t a = simde_vld1_p16(test_vec[i].a);
|
|
simde_poly16x4_t b = simde_vld1_p16(test_vec[i].b);
|
|
simde_poly16x4x2_t r = simde_vtrn_p16(a, b);
|
|
simde_test_arm_neon_assert_equal_p16x4(r.val[0], simde_vld1_p16(test_vec[i].r[0]));
|
|
simde_test_arm_neon_assert_equal_p16x4(r.val[1], simde_vld1_p16(test_vec[i].r[1]));
|
|
}
|
|
|
|
return 0;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_poly16x4_t a = simde_test_arm_neon_random_p16x4();
|
|
simde_poly16x4_t b = simde_test_arm_neon_random_p16x4();
|
|
simde_poly16x2_t r[2] = simde_vtrn_p16(a, b);
|
|
|
|
simde_test_arm_neon_write_p16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_p16x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_p16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_p8 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
struct {
|
|
simde_poly8_t a[16];
|
|
simde_poly8_t b[16];
|
|
simde_poly8_t r[2][16];
|
|
} test_vec[] = {
|
|
{ { SIMDE_POLY8_C(125), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 21),
|
|
SIMDE_POLY8_C(251), SIMDE_POLY8_C(161), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(143), SIMDE_POLY8_C(153), SIMDE_POLY8_C(129) },
|
|
{ SIMDE_POLY8_C( 6), SIMDE_POLY8_C(209), SIMDE_POLY8_C(203), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(213), SIMDE_POLY8_C(182),
|
|
SIMDE_POLY8_C( 61), SIMDE_POLY8_C(132), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(188), SIMDE_POLY8_C(204), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 57) },
|
|
{
|
|
{ SIMDE_POLY8_C(125), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(219), SIMDE_POLY8_C(203), SIMDE_POLY8_C(184), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(213),
|
|
SIMDE_POLY8_C(251), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(188), SIMDE_POLY8_C(153), SIMDE_POLY8_C(218) },
|
|
{ SIMDE_POLY8_C( 52), SIMDE_POLY8_C(209), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(182),
|
|
SIMDE_POLY8_C(161), SIMDE_POLY8_C(132), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(143), SIMDE_POLY8_C(204), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 57) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C( 0), SIMDE_POLY8_C(182), SIMDE_POLY8_C(106), SIMDE_POLY8_C(185), SIMDE_POLY8_C(252), SIMDE_POLY8_C(188), SIMDE_POLY8_C(206), SIMDE_POLY8_C(247),
|
|
SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 97), SIMDE_POLY8_C(189), SIMDE_POLY8_C(185), SIMDE_POLY8_C(226), SIMDE_POLY8_C(196) },
|
|
{ SIMDE_POLY8_C(138), SIMDE_POLY8_C(173), SIMDE_POLY8_C(239), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(196), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 75),
|
|
SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(107), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(204) },
|
|
{
|
|
{ SIMDE_POLY8_C( 0), SIMDE_POLY8_C(138), SIMDE_POLY8_C(106), SIMDE_POLY8_C(239), SIMDE_POLY8_C(252), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(206), SIMDE_POLY8_C(216),
|
|
SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(107), SIMDE_POLY8_C(189), SIMDE_POLY8_C(204), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 62) },
|
|
{ SIMDE_POLY8_C(182), SIMDE_POLY8_C(173), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(188), SIMDE_POLY8_C(196), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 75),
|
|
SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 69), SIMDE_POLY8_C(196), SIMDE_POLY8_C(204) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(251), SIMDE_POLY8_C(169), SIMDE_POLY8_C(133), SIMDE_POLY8_C(248), SIMDE_POLY8_C(101), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(239), SIMDE_POLY8_C(194),
|
|
SIMDE_POLY8_C(130), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(200), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 82) },
|
|
{ SIMDE_POLY8_C(179), SIMDE_POLY8_C(243), SIMDE_POLY8_C(116), SIMDE_POLY8_C(193), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 0),
|
|
SIMDE_POLY8_C( 76), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(228), SIMDE_POLY8_C(184) },
|
|
{
|
|
{ SIMDE_POLY8_C(251), SIMDE_POLY8_C(179), SIMDE_POLY8_C(133), SIMDE_POLY8_C(116), SIMDE_POLY8_C(101), SIMDE_POLY8_C(183), SIMDE_POLY8_C(239), SIMDE_POLY8_C( 12),
|
|
SIMDE_POLY8_C(130), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(200), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(228) },
|
|
{ SIMDE_POLY8_C(169), SIMDE_POLY8_C(243), SIMDE_POLY8_C(248), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 0),
|
|
SIMDE_POLY8_C( 15), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(184) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(236), SIMDE_POLY8_C(106), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(189), SIMDE_POLY8_C(160), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 63),
|
|
SIMDE_POLY8_C(175), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(127), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(130), SIMDE_POLY8_C(202), SIMDE_POLY8_C(240) },
|
|
{ SIMDE_POLY8_C(117), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(177), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(138), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(214),
|
|
SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(238), SIMDE_POLY8_C(242), SIMDE_POLY8_C(117), SIMDE_POLY8_C(211), SIMDE_POLY8_C(170), SIMDE_POLY8_C( 98) },
|
|
{
|
|
{ SIMDE_POLY8_C(236), SIMDE_POLY8_C(117), SIMDE_POLY8_C(176), SIMDE_POLY8_C(177), SIMDE_POLY8_C(189), SIMDE_POLY8_C(138), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 45),
|
|
SIMDE_POLY8_C(175), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(127), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(117), SIMDE_POLY8_C(202), SIMDE_POLY8_C(170) },
|
|
{ SIMDE_POLY8_C(106), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(160), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(214),
|
|
SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(120), SIMDE_POLY8_C(242), SIMDE_POLY8_C(130), SIMDE_POLY8_C(211), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 98) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(179), SIMDE_POLY8_C(250), SIMDE_POLY8_C(251), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(170),
|
|
SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(237), SIMDE_POLY8_C( 44), SIMDE_POLY8_C(177) },
|
|
{ SIMDE_POLY8_C( 43), SIMDE_POLY8_C(221), SIMDE_POLY8_C(222), SIMDE_POLY8_C(182), SIMDE_POLY8_C(154), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(140), SIMDE_POLY8_C(207),
|
|
SIMDE_POLY8_C( 61), SIMDE_POLY8_C(123), SIMDE_POLY8_C(193), SIMDE_POLY8_C(178), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(139) },
|
|
{
|
|
{ SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(179), SIMDE_POLY8_C(222), SIMDE_POLY8_C(251), SIMDE_POLY8_C(154), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(140),
|
|
SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 59), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 20) },
|
|
{ SIMDE_POLY8_C( 91), SIMDE_POLY8_C(221), SIMDE_POLY8_C(250), SIMDE_POLY8_C(182), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(170), SIMDE_POLY8_C(207),
|
|
SIMDE_POLY8_C(185), SIMDE_POLY8_C(123), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(178), SIMDE_POLY8_C(237), SIMDE_POLY8_C(108), SIMDE_POLY8_C(177), SIMDE_POLY8_C(139) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(199), SIMDE_POLY8_C(200), SIMDE_POLY8_C(133), SIMDE_POLY8_C(194), SIMDE_POLY8_C(143), SIMDE_POLY8_C(191), SIMDE_POLY8_C(108), SIMDE_POLY8_C(142),
|
|
SIMDE_POLY8_C(120), SIMDE_POLY8_C(143), SIMDE_POLY8_C(202), SIMDE_POLY8_C(180), SIMDE_POLY8_C(124), SIMDE_POLY8_C(246), SIMDE_POLY8_C(101), SIMDE_POLY8_C(167) },
|
|
{ SIMDE_POLY8_C(211), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(110), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(234), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(139),
|
|
SIMDE_POLY8_C(101), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(179), SIMDE_POLY8_C(107), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 50) },
|
|
{
|
|
{ SIMDE_POLY8_C(199), SIMDE_POLY8_C(211), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 93), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 61),
|
|
SIMDE_POLY8_C(120), SIMDE_POLY8_C(101), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(124), SIMDE_POLY8_C(107), SIMDE_POLY8_C(101), SIMDE_POLY8_C( 62) },
|
|
{ SIMDE_POLY8_C(200), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(194), SIMDE_POLY8_C(110), SIMDE_POLY8_C(191), SIMDE_POLY8_C(234), SIMDE_POLY8_C(142), SIMDE_POLY8_C(139),
|
|
SIMDE_POLY8_C(143), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(180), SIMDE_POLY8_C(179), SIMDE_POLY8_C(246), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(167), SIMDE_POLY8_C( 50) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C( 26), SIMDE_POLY8_C(195), SIMDE_POLY8_C(244), SIMDE_POLY8_C(169), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 96), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(251),
|
|
SIMDE_POLY8_C(239), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(175), SIMDE_POLY8_C(107), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(204) },
|
|
{ SIMDE_POLY8_C( 87), SIMDE_POLY8_C(112), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(191),
|
|
SIMDE_POLY8_C(119), SIMDE_POLY8_C(110), SIMDE_POLY8_C(114), SIMDE_POLY8_C(226), SIMDE_POLY8_C(192), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(218) },
|
|
{
|
|
{ SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(244), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 48),
|
|
SIMDE_POLY8_C(239), SIMDE_POLY8_C(119), SIMDE_POLY8_C(175), SIMDE_POLY8_C(114), SIMDE_POLY8_C(249), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 20) },
|
|
{ SIMDE_POLY8_C(195), SIMDE_POLY8_C(112), SIMDE_POLY8_C(169), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 96), SIMDE_POLY8_C(120), SIMDE_POLY8_C(251), SIMDE_POLY8_C(191),
|
|
SIMDE_POLY8_C( 2), SIMDE_POLY8_C(110), SIMDE_POLY8_C(107), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(176), SIMDE_POLY8_C(204), SIMDE_POLY8_C(218) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY8_C(116), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(131), SIMDE_POLY8_C(247), SIMDE_POLY8_C(104), SIMDE_POLY8_C(187), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 88),
|
|
SIMDE_POLY8_C(190), SIMDE_POLY8_C(162), SIMDE_POLY8_C(195), SIMDE_POLY8_C(183), SIMDE_POLY8_C(182), SIMDE_POLY8_C(214), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 14) },
|
|
{ SIMDE_POLY8_C( 71), SIMDE_POLY8_C(190), SIMDE_POLY8_C(179), SIMDE_POLY8_C(161), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(228), SIMDE_POLY8_C( 97), SIMDE_POLY8_C(173),
|
|
SIMDE_POLY8_C( 82), SIMDE_POLY8_C(211), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(132), SIMDE_POLY8_C(163), SIMDE_POLY8_C(236), SIMDE_POLY8_C(248) },
|
|
{
|
|
{ SIMDE_POLY8_C(116), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(131), SIMDE_POLY8_C(179), SIMDE_POLY8_C(104), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 97),
|
|
SIMDE_POLY8_C(190), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(195), SIMDE_POLY8_C(143), SIMDE_POLY8_C(182), SIMDE_POLY8_C(132), SIMDE_POLY8_C(131), SIMDE_POLY8_C(236) },
|
|
{ SIMDE_POLY8_C( 8), SIMDE_POLY8_C(190), SIMDE_POLY8_C(247), SIMDE_POLY8_C(161), SIMDE_POLY8_C(187), SIMDE_POLY8_C(228), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(173),
|
|
SIMDE_POLY8_C(162), SIMDE_POLY8_C(211), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(214), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(248) },
|
|
},
|
|
},
|
|
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde_poly8x16_t a = simde_vld1q_p8(test_vec[i].a);
|
|
simde_poly8x16_t b = simde_vld1q_p8(test_vec[i].b);
|
|
simde_poly8x16x2_t r = simde_vtrnq_p8(a, b);
|
|
|
|
simde_test_arm_neon_assert_equal_p8x16(r.val[0], simde_vld1q_p8(test_vec[i].r[0]));
|
|
simde_test_arm_neon_assert_equal_p8x16(r.val[1], simde_vld1q_p8(test_vec[i].r[1]));
|
|
}
|
|
|
|
return 0;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_poly8x16_t a = simde_test_arm_neon_random_p8x16();
|
|
simde_poly8x16_t b = simde_test_arm_neon_random_p8x16();
|
|
simde_poly8x2_t r[2] = simde_vtrnq_p8(a, b);
|
|
|
|
simde_test_arm_neon_write_p8x16(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_p8x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_p8x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
static int
|
|
test_simde_vtrnq_p16 (SIMDE_MUNIT_TEST_ARGS) {
|
|
#if 1
|
|
struct {
|
|
simde_poly16_t a[8];
|
|
simde_poly16_t b[8];
|
|
simde_poly16_t r[2][8];
|
|
} test_vec[] = {
|
|
{ { SIMDE_POLY16_C(60557), SIMDE_POLY16_C( 2003), SIMDE_POLY16_C(18326), SIMDE_POLY16_C(50944), SIMDE_POLY16_C(20033), SIMDE_POLY16_C(41177), SIMDE_POLY16_C(55949), SIMDE_POLY16_C(55500) },
|
|
{ SIMDE_POLY16_C(24134), SIMDE_POLY16_C(17611), SIMDE_POLY16_C(40546), SIMDE_POLY16_C(12683), SIMDE_POLY16_C(16844), SIMDE_POLY16_C(15740), SIMDE_POLY16_C(47346), SIMDE_POLY16_C(32687) },
|
|
{
|
|
{ SIMDE_POLY16_C(60557), SIMDE_POLY16_C(24134), SIMDE_POLY16_C(18326), SIMDE_POLY16_C(40546), SIMDE_POLY16_C(20033), SIMDE_POLY16_C(16844), SIMDE_POLY16_C(55949), SIMDE_POLY16_C(47346) },
|
|
{ SIMDE_POLY16_C( 2003), SIMDE_POLY16_C(17611), SIMDE_POLY16_C(50944), SIMDE_POLY16_C(12683), SIMDE_POLY16_C(41177), SIMDE_POLY16_C(15740), SIMDE_POLY16_C(55500), SIMDE_POLY16_C(32687) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(33444), SIMDE_POLY16_C(14982), SIMDE_POLY16_C(34505), SIMDE_POLY16_C( 2818), SIMDE_POLY16_C(56277), SIMDE_POLY16_C(25259), SIMDE_POLY16_C(30645), SIMDE_POLY16_C(64314) },
|
|
{ SIMDE_POLY16_C( 1493), SIMDE_POLY16_C(14399), SIMDE_POLY16_C(52132), SIMDE_POLY16_C(28777), SIMDE_POLY16_C(58636), SIMDE_POLY16_C(65453), SIMDE_POLY16_C(23709), SIMDE_POLY16_C(16766) },
|
|
{
|
|
{ SIMDE_POLY16_C(33444), SIMDE_POLY16_C( 1493), SIMDE_POLY16_C(34505), SIMDE_POLY16_C(52132), SIMDE_POLY16_C(56277), SIMDE_POLY16_C(58636), SIMDE_POLY16_C(30645), SIMDE_POLY16_C(23709) },
|
|
{ SIMDE_POLY16_C(14982), SIMDE_POLY16_C(14399), SIMDE_POLY16_C( 2818), SIMDE_POLY16_C(28777), SIMDE_POLY16_C(25259), SIMDE_POLY16_C(65453), SIMDE_POLY16_C(64314), SIMDE_POLY16_C(16766) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C( 1502), SIMDE_POLY16_C(43132), SIMDE_POLY16_C(32395), SIMDE_POLY16_C(24755), SIMDE_POLY16_C(24153), SIMDE_POLY16_C( 3779), SIMDE_POLY16_C(64981), SIMDE_POLY16_C(43786) },
|
|
{ SIMDE_POLY16_C(18691), SIMDE_POLY16_C(42979), SIMDE_POLY16_C(19476), SIMDE_POLY16_C( 8471), SIMDE_POLY16_C(50225), SIMDE_POLY16_C(53024), SIMDE_POLY16_C(40480), SIMDE_POLY16_C(65040) },
|
|
{
|
|
{ SIMDE_POLY16_C( 1502), SIMDE_POLY16_C(18691), SIMDE_POLY16_C(32395), SIMDE_POLY16_C(19476), SIMDE_POLY16_C(24153), SIMDE_POLY16_C(50225), SIMDE_POLY16_C(64981), SIMDE_POLY16_C(40480) },
|
|
{ SIMDE_POLY16_C(43132), SIMDE_POLY16_C(42979), SIMDE_POLY16_C(24755), SIMDE_POLY16_C( 8471), SIMDE_POLY16_C( 3779), SIMDE_POLY16_C(53024), SIMDE_POLY16_C(43786), SIMDE_POLY16_C(65040) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(36003), SIMDE_POLY16_C(12198), SIMDE_POLY16_C(22794), SIMDE_POLY16_C(25487), SIMDE_POLY16_C(21175), SIMDE_POLY16_C(36210), SIMDE_POLY16_C(31824), SIMDE_POLY16_C(21304) },
|
|
{ SIMDE_POLY16_C( 7109), SIMDE_POLY16_C(56058), SIMDE_POLY16_C( 4455), SIMDE_POLY16_C(39163), SIMDE_POLY16_C( 7125), SIMDE_POLY16_C(62823), SIMDE_POLY16_C(30905), SIMDE_POLY16_C(24051) },
|
|
{
|
|
{ SIMDE_POLY16_C(36003), SIMDE_POLY16_C( 7109), SIMDE_POLY16_C(22794), SIMDE_POLY16_C( 4455), SIMDE_POLY16_C(21175), SIMDE_POLY16_C( 7125), SIMDE_POLY16_C(31824), SIMDE_POLY16_C(30905) },
|
|
{ SIMDE_POLY16_C(12198), SIMDE_POLY16_C(56058), SIMDE_POLY16_C(25487), SIMDE_POLY16_C(39163), SIMDE_POLY16_C(36210), SIMDE_POLY16_C(62823), SIMDE_POLY16_C(21304), SIMDE_POLY16_C(24051) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(39428), SIMDE_POLY16_C( 3980), SIMDE_POLY16_C( 7155), SIMDE_POLY16_C(43890), SIMDE_POLY16_C(58478), SIMDE_POLY16_C(48696), SIMDE_POLY16_C(28768), SIMDE_POLY16_C( 9745) },
|
|
{ SIMDE_POLY16_C( 2955), SIMDE_POLY16_C(61952), SIMDE_POLY16_C(64284), SIMDE_POLY16_C(61834), SIMDE_POLY16_C(61974), SIMDE_POLY16_C(53222), SIMDE_POLY16_C(55658), SIMDE_POLY16_C(28204) },
|
|
{
|
|
{ SIMDE_POLY16_C(39428), SIMDE_POLY16_C( 2955), SIMDE_POLY16_C( 7155), SIMDE_POLY16_C(64284), SIMDE_POLY16_C(58478), SIMDE_POLY16_C(61974), SIMDE_POLY16_C(28768), SIMDE_POLY16_C(55658) },
|
|
{ SIMDE_POLY16_C( 3980), SIMDE_POLY16_C(61952), SIMDE_POLY16_C(43890), SIMDE_POLY16_C(61834), SIMDE_POLY16_C(48696), SIMDE_POLY16_C(53222), SIMDE_POLY16_C( 9745), SIMDE_POLY16_C(28204) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(47219), SIMDE_POLY16_C(26493), SIMDE_POLY16_C(61652), SIMDE_POLY16_C(16914), SIMDE_POLY16_C(19156), SIMDE_POLY16_C(13568), SIMDE_POLY16_C( 4538), SIMDE_POLY16_C(17755) },
|
|
{ SIMDE_POLY16_C(23324), SIMDE_POLY16_C(14391), SIMDE_POLY16_C(49494), SIMDE_POLY16_C(27689), SIMDE_POLY16_C( 4019), SIMDE_POLY16_C( 7483), SIMDE_POLY16_C(26856), SIMDE_POLY16_C(23692) },
|
|
{
|
|
{ SIMDE_POLY16_C(47219), SIMDE_POLY16_C(23324), SIMDE_POLY16_C(61652), SIMDE_POLY16_C(49494), SIMDE_POLY16_C(19156), SIMDE_POLY16_C( 4019), SIMDE_POLY16_C( 4538), SIMDE_POLY16_C(26856) },
|
|
{ SIMDE_POLY16_C(26493), SIMDE_POLY16_C(14391), SIMDE_POLY16_C(16914), SIMDE_POLY16_C(27689), SIMDE_POLY16_C(13568), SIMDE_POLY16_C( 7483), SIMDE_POLY16_C(17755), SIMDE_POLY16_C(23692) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C( 2336), SIMDE_POLY16_C(62659), SIMDE_POLY16_C(54777), SIMDE_POLY16_C(52790), SIMDE_POLY16_C(13855), SIMDE_POLY16_C(55555), SIMDE_POLY16_C(24135), SIMDE_POLY16_C(25374) },
|
|
{ SIMDE_POLY16_C(21945), SIMDE_POLY16_C( 3995), SIMDE_POLY16_C(50198), SIMDE_POLY16_C(51835), SIMDE_POLY16_C(46803), SIMDE_POLY16_C(48359), SIMDE_POLY16_C(29470), SIMDE_POLY16_C(16152) },
|
|
{
|
|
{ SIMDE_POLY16_C( 2336), SIMDE_POLY16_C(21945), SIMDE_POLY16_C(54777), SIMDE_POLY16_C(50198), SIMDE_POLY16_C(13855), SIMDE_POLY16_C(46803), SIMDE_POLY16_C(24135), SIMDE_POLY16_C(29470) },
|
|
{ SIMDE_POLY16_C(62659), SIMDE_POLY16_C( 3995), SIMDE_POLY16_C(52790), SIMDE_POLY16_C(51835), SIMDE_POLY16_C(55555), SIMDE_POLY16_C(48359), SIMDE_POLY16_C(25374), SIMDE_POLY16_C(16152) },
|
|
},
|
|
},
|
|
{ { SIMDE_POLY16_C(56189), SIMDE_POLY16_C(30259), SIMDE_POLY16_C(27312), SIMDE_POLY16_C(53060), SIMDE_POLY16_C(18336), SIMDE_POLY16_C(59560), SIMDE_POLY16_C(50853), SIMDE_POLY16_C(24139) },
|
|
{ SIMDE_POLY16_C(59163), SIMDE_POLY16_C(12653), SIMDE_POLY16_C(59563), SIMDE_POLY16_C(32763), SIMDE_POLY16_C(58271), SIMDE_POLY16_C(48443), SIMDE_POLY16_C(21334), SIMDE_POLY16_C(54268) },
|
|
{
|
|
{ SIMDE_POLY16_C(56189), SIMDE_POLY16_C(59163), SIMDE_POLY16_C(27312), SIMDE_POLY16_C(59563), SIMDE_POLY16_C(18336), SIMDE_POLY16_C(58271), SIMDE_POLY16_C(50853), SIMDE_POLY16_C(21334) },
|
|
{ SIMDE_POLY16_C(30259), SIMDE_POLY16_C(12653), SIMDE_POLY16_C(53060), SIMDE_POLY16_C(32763), SIMDE_POLY16_C(59560), SIMDE_POLY16_C(48443), SIMDE_POLY16_C(24139), SIMDE_POLY16_C(54268) },
|
|
},
|
|
},
|
|
|
|
};
|
|
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
|
simde_poly16x8_t a = simde_vld1q_p16(test_vec[i].a);
|
|
simde_poly16x8_t b = simde_vld1q_p16(test_vec[i].b);
|
|
simde_poly16x8x2_t r = simde_vtrnq_p16(a, b);
|
|
simde_test_arm_neon_assert_equal_p16x8(r.val[0], simde_vld1q_p16(test_vec[i].r[0]));
|
|
simde_test_arm_neon_assert_equal_p16x8(r.val[1], simde_vld1q_p16(test_vec[i].r[1]));
|
|
}
|
|
|
|
return 0;
|
|
|
|
#else
|
|
fputc('\n', stdout);
|
|
for (int i = 0 ; i < 8 ; i++) {
|
|
simde_poly16x8_t a = simde_test_arm_neon_random_p16x8();
|
|
simde_poly16x8_t b = simde_test_arm_neon_random_p16x8();
|
|
simde_poly16x2_t r[2] = simde_vtrnq_p16(a, b);
|
|
|
|
simde_test_arm_neon_write_p16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
|
simde_test_arm_neon_write_p16x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
|
simde_test_arm_neon_write_p16x2(2, r[2], SIMDE_TEST_VEC_POS_LAST);
|
|
}
|
|
return 1;
|
|
#endif
|
|
}
|
|
|
|
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
|
|
|
|
SIMDE_TEST_FUNC_LIST_BEGIN
|
|
#if !defined(SIMDE_BUG_INTEL_857088)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_f16)
|
|
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_f16)
|
|
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)
|
|
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_p8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn_p16)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_p8)
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vtrnq_p16)
|
|
#endif /* !defined(SIMDE_BUG_INTEL_857088) */
|
|
SIMDE_TEST_FUNC_LIST_END
|
|
|
|
#include <test/arm/neon/test-neon-footer.h>
|