Update googletest to 1.18.0 and SIMDe to 0.8.2.
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>
This commit is contained in:
parent
e4e666f459
commit
3f10e05176
912 changed files with 224964 additions and 11502 deletions
720
thirdparty/simde/test/arm/neon/trn2.c
vendored
720
thirdparty/simde/test/arm/neon/trn2.c
vendored
|
|
@ -3,8 +3,68 @@
|
|||
#include <test/arm/neon/test-neon.h>
|
||||
#include <simde/arm/neon/trn2.h>
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_float16_t a[4];
|
||||
simde_float16_t b[4];
|
||||
simde_float16_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE( 56.300), SIMDE_FLOAT16_VALUE( - 9.279), SIMDE_FLOAT16_VALUE( - 19.078), SIMDE_FLOAT16_VALUE( 91.073) },
|
||||
{ SIMDE_FLOAT16_VALUE( 85.295), SIMDE_FLOAT16_VALUE( 3.112), SIMDE_FLOAT16_VALUE( - 91.891), SIMDE_FLOAT16_VALUE( 4.800) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 9.279), SIMDE_FLOAT16_VALUE( 3.112), SIMDE_FLOAT16_VALUE( 91.073), SIMDE_FLOAT16_VALUE( 4.800) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 74.709), SIMDE_FLOAT16_VALUE( - 26.125), SIMDE_FLOAT16_VALUE( - 27.765), SIMDE_FLOAT16_VALUE( - 99.458) },
|
||||
{ SIMDE_FLOAT16_VALUE( 89.694), SIMDE_FLOAT16_VALUE( - 71.014), SIMDE_FLOAT16_VALUE( 48.493), SIMDE_FLOAT16_VALUE( 30.421) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 26.125), SIMDE_FLOAT16_VALUE( - 71.014), SIMDE_FLOAT16_VALUE( - 99.458), SIMDE_FLOAT16_VALUE( 30.421) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 73.102), SIMDE_FLOAT16_VALUE( 41.016), SIMDE_FLOAT16_VALUE( - 35.965), SIMDE_FLOAT16_VALUE( - 89.249) },
|
||||
{ SIMDE_FLOAT16_VALUE( 85.101), SIMDE_FLOAT16_VALUE( 59.074), SIMDE_FLOAT16_VALUE( 55.450), SIMDE_FLOAT16_VALUE( - 85.858) },
|
||||
{ SIMDE_FLOAT16_VALUE( 41.016), SIMDE_FLOAT16_VALUE( 59.074), SIMDE_FLOAT16_VALUE( - 89.249), SIMDE_FLOAT16_VALUE( - 85.858) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 74.180), SIMDE_FLOAT16_VALUE( 76.843), SIMDE_FLOAT16_VALUE( - 60.751), SIMDE_FLOAT16_VALUE( - 41.114) },
|
||||
{ SIMDE_FLOAT16_VALUE( 10.403), SIMDE_FLOAT16_VALUE( 54.517), SIMDE_FLOAT16_VALUE( - 73.384), SIMDE_FLOAT16_VALUE( 65.706) },
|
||||
{ SIMDE_FLOAT16_VALUE( 76.843), SIMDE_FLOAT16_VALUE( 54.517), SIMDE_FLOAT16_VALUE( - 41.114), SIMDE_FLOAT16_VALUE( 65.706) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( - 73.108), SIMDE_FLOAT16_VALUE( - 71.731), SIMDE_FLOAT16_VALUE( - 42.349), SIMDE_FLOAT16_VALUE( - 33.103) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 37.091), SIMDE_FLOAT16_VALUE( - 4.379), SIMDE_FLOAT16_VALUE( - 56.871), SIMDE_FLOAT16_VALUE( - 36.204) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 71.731), SIMDE_FLOAT16_VALUE( - 4.379), SIMDE_FLOAT16_VALUE( - 33.103), SIMDE_FLOAT16_VALUE( - 36.204) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( - 12.826), SIMDE_FLOAT16_VALUE( 44.335), SIMDE_FLOAT16_VALUE( - 3.623), SIMDE_FLOAT16_VALUE( - 89.419) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 91.221), SIMDE_FLOAT16_VALUE( - 5.349), SIMDE_FLOAT16_VALUE( - 8.450), SIMDE_FLOAT16_VALUE( 34.071) },
|
||||
{ SIMDE_FLOAT16_VALUE( 44.335), SIMDE_FLOAT16_VALUE( - 5.349), SIMDE_FLOAT16_VALUE( - 89.419), SIMDE_FLOAT16_VALUE( 34.071) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 14.291), SIMDE_FLOAT16_VALUE( - 9.864), SIMDE_FLOAT16_VALUE( 72.841), SIMDE_FLOAT16_VALUE( - 90.631) },
|
||||
{ SIMDE_FLOAT16_VALUE( 40.737), SIMDE_FLOAT16_VALUE( - 40.555), SIMDE_FLOAT16_VALUE( - 53.928), SIMDE_FLOAT16_VALUE( 45.466) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 9.864), SIMDE_FLOAT16_VALUE( - 40.555), SIMDE_FLOAT16_VALUE( - 90.631), SIMDE_FLOAT16_VALUE( 45.466) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 77.115), SIMDE_FLOAT16_VALUE( 37.620), SIMDE_FLOAT16_VALUE( 28.892), SIMDE_FLOAT16_VALUE( - 64.989) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 18.627), SIMDE_FLOAT16_VALUE( - 85.234), SIMDE_FLOAT16_VALUE( 78.130), SIMDE_FLOAT16_VALUE( - 13.349) },
|
||||
{ SIMDE_FLOAT16_VALUE( 37.620), SIMDE_FLOAT16_VALUE( - 85.234), SIMDE_FLOAT16_VALUE( - 64.989), SIMDE_FLOAT16_VALUE( - 13.349) } },
|
||||
};
|
||||
|
||||
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_float16x4_t r = simde_vtrn2_f16(a, b);
|
||||
|
||||
simde_test_arm_neon_assert_equal_f16x4(r, simde_vld1_f16(test_vec[i].r), 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_float16x4_t r = simde_vtrn2_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_f16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_float32 a[2];
|
||||
simde_float32 b[2];
|
||||
|
|
@ -45,10 +105,25 @@ test_simde_vtrn2_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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 = simde_vtrn2_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, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int8_t a[8];
|
||||
int8_t b[8];
|
||||
|
|
@ -89,10 +164,25 @@ test_simde_vtrn2_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_int8x8_t r = simde_vtrn2_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_i8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int16_t a[4];
|
||||
int16_t b[4];
|
||||
|
|
@ -133,10 +223,25 @@ test_simde_vtrn2_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_int16x4_t r = simde_vtrn2_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_i16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int32_t a[2];
|
||||
int32_t b[2];
|
||||
|
|
@ -177,10 +282,25 @@ test_simde_vtrn2_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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 = simde_vtrn2_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, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint8_t a[8];
|
||||
uint8_t b[8];
|
||||
|
|
@ -221,10 +341,25 @@ test_simde_vtrn2_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_uint8x8_t r = simde_vtrn2_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_u8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint16_t a[4];
|
||||
uint16_t b[4];
|
||||
|
|
@ -264,10 +399,25 @@ test_simde_vtrn2_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_uint16x4_t r = simde_vtrn2_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_u16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint32_t a[2];
|
||||
uint32_t b[2];
|
||||
|
|
@ -307,10 +457,107 @@ test_simde_vtrn2_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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 = simde_vtrn2_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, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_float16_t a[8];
|
||||
simde_float16_t b[8];
|
||||
simde_float16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE( 72.335), SIMDE_FLOAT16_VALUE( 7.554), SIMDE_FLOAT16_VALUE( - 33.008), SIMDE_FLOAT16_VALUE( 90.304),
|
||||
SIMDE_FLOAT16_VALUE( - 99.993), SIMDE_FLOAT16_VALUE( - 50.693), SIMDE_FLOAT16_VALUE( - 79.762), SIMDE_FLOAT16_VALUE( 7.872) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 8.557), SIMDE_FLOAT16_VALUE( 96.325), SIMDE_FLOAT16_VALUE( - 89.713), SIMDE_FLOAT16_VALUE( 36.819),
|
||||
SIMDE_FLOAT16_VALUE( 5.553), SIMDE_FLOAT16_VALUE( 14.489), SIMDE_FLOAT16_VALUE( 5.427), SIMDE_FLOAT16_VALUE( 32.305) },
|
||||
{ SIMDE_FLOAT16_VALUE( 7.554), SIMDE_FLOAT16_VALUE( 96.325), SIMDE_FLOAT16_VALUE( 90.304), SIMDE_FLOAT16_VALUE( 36.819),
|
||||
SIMDE_FLOAT16_VALUE( - 50.693), SIMDE_FLOAT16_VALUE( 14.489), SIMDE_FLOAT16_VALUE( 7.872), SIMDE_FLOAT16_VALUE( 32.305) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 74.913), SIMDE_FLOAT16_VALUE( - 11.970), SIMDE_FLOAT16_VALUE( - 42.824), SIMDE_FLOAT16_VALUE( - 82.513),
|
||||
SIMDE_FLOAT16_VALUE( - 55.926), SIMDE_FLOAT16_VALUE( 86.502), SIMDE_FLOAT16_VALUE( - 85.855), SIMDE_FLOAT16_VALUE( 25.208) },
|
||||
{ SIMDE_FLOAT16_VALUE( 6.209), SIMDE_FLOAT16_VALUE( 90.752), SIMDE_FLOAT16_VALUE( - 82.451), SIMDE_FLOAT16_VALUE( - 91.435),
|
||||
SIMDE_FLOAT16_VALUE( 66.777), SIMDE_FLOAT16_VALUE( - 74.104), SIMDE_FLOAT16_VALUE( - 66.222), SIMDE_FLOAT16_VALUE( - 49.415) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 11.970), SIMDE_FLOAT16_VALUE( 90.752), SIMDE_FLOAT16_VALUE( - 82.513), SIMDE_FLOAT16_VALUE( - 91.435),
|
||||
SIMDE_FLOAT16_VALUE( 86.502), SIMDE_FLOAT16_VALUE( - 74.104), SIMDE_FLOAT16_VALUE( 25.208), SIMDE_FLOAT16_VALUE( - 49.415) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( - 63.196), SIMDE_FLOAT16_VALUE( - 52.466), SIMDE_FLOAT16_VALUE( - 73.706), SIMDE_FLOAT16_VALUE( 40.555),
|
||||
SIMDE_FLOAT16_VALUE( - 76.544), SIMDE_FLOAT16_VALUE( 87.237), SIMDE_FLOAT16_VALUE( 84.511), SIMDE_FLOAT16_VALUE( - 75.225) },
|
||||
{ SIMDE_FLOAT16_VALUE( 44.539), SIMDE_FLOAT16_VALUE( 21.319), SIMDE_FLOAT16_VALUE( 66.231), SIMDE_FLOAT16_VALUE( - 19.440),
|
||||
SIMDE_FLOAT16_VALUE( 72.319), SIMDE_FLOAT16_VALUE( - 77.793), SIMDE_FLOAT16_VALUE( 71.130), SIMDE_FLOAT16_VALUE( 32.971) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 52.466), SIMDE_FLOAT16_VALUE( 21.319), SIMDE_FLOAT16_VALUE( 40.555), SIMDE_FLOAT16_VALUE( - 19.440),
|
||||
SIMDE_FLOAT16_VALUE( 87.237), SIMDE_FLOAT16_VALUE( - 77.793), SIMDE_FLOAT16_VALUE( - 75.225), SIMDE_FLOAT16_VALUE( 32.971) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( - 44.126), SIMDE_FLOAT16_VALUE( 81.561), SIMDE_FLOAT16_VALUE( - 38.052), SIMDE_FLOAT16_VALUE( 19.498),
|
||||
SIMDE_FLOAT16_VALUE( - 93.987), SIMDE_FLOAT16_VALUE( 83.750), SIMDE_FLOAT16_VALUE( - 87.122), SIMDE_FLOAT16_VALUE( 72.370) },
|
||||
{ SIMDE_FLOAT16_VALUE( 57.508), SIMDE_FLOAT16_VALUE( - 39.509), SIMDE_FLOAT16_VALUE( - 62.778), SIMDE_FLOAT16_VALUE( 95.740),
|
||||
SIMDE_FLOAT16_VALUE( - 53.685), SIMDE_FLOAT16_VALUE( 86.996), SIMDE_FLOAT16_VALUE( - 59.984), SIMDE_FLOAT16_VALUE( 75.447) },
|
||||
{ SIMDE_FLOAT16_VALUE( 81.561), SIMDE_FLOAT16_VALUE( - 39.509), SIMDE_FLOAT16_VALUE( 19.498), SIMDE_FLOAT16_VALUE( 95.740),
|
||||
SIMDE_FLOAT16_VALUE( 83.750), SIMDE_FLOAT16_VALUE( 86.996), SIMDE_FLOAT16_VALUE( 72.370), SIMDE_FLOAT16_VALUE( 75.447) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 84.124), SIMDE_FLOAT16_VALUE( 57.505), SIMDE_FLOAT16_VALUE( - 95.462), SIMDE_FLOAT16_VALUE( 81.748),
|
||||
SIMDE_FLOAT16_VALUE( 24.643), SIMDE_FLOAT16_VALUE( 70.285), SIMDE_FLOAT16_VALUE( - 69.576), SIMDE_FLOAT16_VALUE( 73.340) },
|
||||
{ SIMDE_FLOAT16_VALUE( 17.355), SIMDE_FLOAT16_VALUE( 5.498), SIMDE_FLOAT16_VALUE( 29.349), SIMDE_FLOAT16_VALUE( 93.614),
|
||||
SIMDE_FLOAT16_VALUE( 78.556), SIMDE_FLOAT16_VALUE( - 70.390), SIMDE_FLOAT16_VALUE( 53.898), SIMDE_FLOAT16_VALUE( 55.877) },
|
||||
{ SIMDE_FLOAT16_VALUE( 57.505), SIMDE_FLOAT16_VALUE( 5.498), SIMDE_FLOAT16_VALUE( 81.748), SIMDE_FLOAT16_VALUE( 93.614),
|
||||
SIMDE_FLOAT16_VALUE( 70.285), SIMDE_FLOAT16_VALUE( - 70.390), SIMDE_FLOAT16_VALUE( 73.340), SIMDE_FLOAT16_VALUE( 55.877) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( - 9.431), SIMDE_FLOAT16_VALUE( - 67.084), SIMDE_FLOAT16_VALUE( 3.039), SIMDE_FLOAT16_VALUE( - 23.339),
|
||||
SIMDE_FLOAT16_VALUE( - 70.932), SIMDE_FLOAT16_VALUE( - 71.857), SIMDE_FLOAT16_VALUE( 23.002), SIMDE_FLOAT16_VALUE( - 46.362) },
|
||||
{ SIMDE_FLOAT16_VALUE( 43.482), SIMDE_FLOAT16_VALUE( 21.428), SIMDE_FLOAT16_VALUE( - 1.230), SIMDE_FLOAT16_VALUE( - 40.972),
|
||||
SIMDE_FLOAT16_VALUE( - 47.974), SIMDE_FLOAT16_VALUE( 73.628), SIMDE_FLOAT16_VALUE( - 29.720), SIMDE_FLOAT16_VALUE( - 90.383) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 67.084), SIMDE_FLOAT16_VALUE( 21.428), SIMDE_FLOAT16_VALUE( - 23.339), SIMDE_FLOAT16_VALUE( - 40.972),
|
||||
SIMDE_FLOAT16_VALUE( - 71.857), SIMDE_FLOAT16_VALUE( 73.628), SIMDE_FLOAT16_VALUE( - 46.362), SIMDE_FLOAT16_VALUE( - 90.383) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 95.642), SIMDE_FLOAT16_VALUE( - 87.854), SIMDE_FLOAT16_VALUE( - 44.833), SIMDE_FLOAT16_VALUE( 50.993),
|
||||
SIMDE_FLOAT16_VALUE( - 1.937), SIMDE_FLOAT16_VALUE( 79.506), SIMDE_FLOAT16_VALUE( 71.543), SIMDE_FLOAT16_VALUE( 92.534) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 89.081), SIMDE_FLOAT16_VALUE( - 58.662), SIMDE_FLOAT16_VALUE( - 70.366), SIMDE_FLOAT16_VALUE( - 82.181),
|
||||
SIMDE_FLOAT16_VALUE( - 14.473), SIMDE_FLOAT16_VALUE( 16.003), SIMDE_FLOAT16_VALUE( - 24.386), SIMDE_FLOAT16_VALUE( 17.897) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 87.854), SIMDE_FLOAT16_VALUE( - 58.662), SIMDE_FLOAT16_VALUE( 50.993), SIMDE_FLOAT16_VALUE( - 82.181),
|
||||
SIMDE_FLOAT16_VALUE( 79.506), SIMDE_FLOAT16_VALUE( 16.003), SIMDE_FLOAT16_VALUE( 92.534), SIMDE_FLOAT16_VALUE( 17.897) } },
|
||||
{ { SIMDE_FLOAT16_VALUE( 7.217), SIMDE_FLOAT16_VALUE( - 3.575), SIMDE_FLOAT16_VALUE( - 54.338), SIMDE_FLOAT16_VALUE( - 88.934),
|
||||
SIMDE_FLOAT16_VALUE( - 45.428), SIMDE_FLOAT16_VALUE( - 96.685), SIMDE_FLOAT16_VALUE( - 19.259), SIMDE_FLOAT16_VALUE( - 78.009) },
|
||||
{ SIMDE_FLOAT16_VALUE( 59.084), SIMDE_FLOAT16_VALUE( - 63.373), SIMDE_FLOAT16_VALUE( - 74.830), SIMDE_FLOAT16_VALUE( 65.237),
|
||||
SIMDE_FLOAT16_VALUE( 6.826), SIMDE_FLOAT16_VALUE( 80.287), SIMDE_FLOAT16_VALUE( - 55.550), SIMDE_FLOAT16_VALUE( - 99.593) },
|
||||
{ SIMDE_FLOAT16_VALUE( - 3.575), SIMDE_FLOAT16_VALUE( - 63.373), SIMDE_FLOAT16_VALUE( - 88.934), SIMDE_FLOAT16_VALUE( 65.237),
|
||||
SIMDE_FLOAT16_VALUE( - 96.685), SIMDE_FLOAT16_VALUE( 80.287), SIMDE_FLOAT16_VALUE( - 78.009), SIMDE_FLOAT16_VALUE( - 99.593) } },
|
||||
};
|
||||
|
||||
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_float16x8_t r = simde_vtrn2q_f16(a, b);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r, simde_vld1q_f16(test_vec[i].r), 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_float16x8_t r = simde_vtrn2q_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_f16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_float32 a[4];
|
||||
simde_float32 b[4];
|
||||
|
|
@ -350,10 +597,25 @@ test_simde_vtrn2q_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_float32x4_t r = simde_vtrn2q_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_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_float64 a[2];
|
||||
simde_float64 b[2];
|
||||
|
|
@ -394,10 +656,25 @@ test_simde_vtrn2q_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_float64x2_t a = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
||||
simde_float64x2_t b = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
|
||||
simde_float64x2_t r = simde_vtrn2q_f64(a, b);
|
||||
|
||||
simde_test_arm_neon_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int8_t a[16];
|
||||
int8_t b[16];
|
||||
|
|
@ -462,10 +739,25 @@ test_simde_vtrn2q_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_int8x16_t r = simde_vtrn2q_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_i8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int16_t a[8];
|
||||
int16_t b[8];
|
||||
|
|
@ -506,10 +798,25 @@ test_simde_vtrn2q_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_int16x8_t r = simde_vtrn2q_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_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int32_t a[4];
|
||||
int32_t b[4];
|
||||
|
|
@ -549,10 +856,25 @@ test_simde_vtrn2q_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_int32x4_t r = simde_vtrn2q_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_i32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_s64 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
int64_t a[2];
|
||||
int64_t b[2];
|
||||
|
|
@ -592,10 +914,25 @@ test_simde_vtrn2q_s64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_int64x2_t a = simde_test_arm_neon_random_i64x2();
|
||||
simde_int64x2_t b = simde_test_arm_neon_random_i64x2();
|
||||
simde_int64x2_t r = simde_vtrn2q_s64(a, b);
|
||||
|
||||
simde_test_arm_neon_write_i64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_i64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_i64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint8_t a[16];
|
||||
uint8_t b[16];
|
||||
|
|
@ -660,10 +997,25 @@ test_simde_vtrn2q_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_uint8x16_t r = simde_vtrn2q_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_u8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint16_t a[8];
|
||||
uint16_t b[8];
|
||||
|
|
@ -703,10 +1055,25 @@ test_simde_vtrn2q_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_uint16x8_t r = simde_vtrn2q_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_u16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint32_t a[4];
|
||||
uint32_t b[4];
|
||||
|
|
@ -747,10 +1114,25 @@ test_simde_vtrn2q_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
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_uint32x4_t r = simde_vtrn2q_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_u32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_u64 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
uint64_t a[2];
|
||||
uint64_t b[2];
|
||||
|
|
@ -790,9 +1172,340 @@ test_simde_vtrn2q_u64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_uint64x2_t a = simde_test_arm_neon_random_u64x2();
|
||||
simde_uint64x2_t b = simde_test_arm_neon_random_u64x2();
|
||||
simde_uint64x2_t r = simde_vtrn2q_u64(a, b);
|
||||
|
||||
simde_test_arm_neon_write_u64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_u64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_u64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_p8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_poly8_t a[8];
|
||||
simde_poly8_t b[8];
|
||||
simde_poly8_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY8_C( 15), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(225) },
|
||||
{ SIMDE_POLY8_C( 12), SIMDE_POLY8_C(184), SIMDE_POLY8_C(182), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 1), SIMDE_POLY8_C(177), SIMDE_POLY8_C( 19), SIMDE_POLY8_C(121) },
|
||||
{ SIMDE_POLY8_C(216), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(163), SIMDE_POLY8_C(248), SIMDE_POLY8_C(177), SIMDE_POLY8_C(225), SIMDE_POLY8_C(121) } },
|
||||
{ { SIMDE_POLY8_C( 68), SIMDE_POLY8_C(225), SIMDE_POLY8_C(135), SIMDE_POLY8_C(204), SIMDE_POLY8_C(162), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(186), SIMDE_POLY8_C(237) },
|
||||
{ SIMDE_POLY8_C( 95), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(205), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(220) },
|
||||
{ SIMDE_POLY8_C(225), SIMDE_POLY8_C(179), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(237), SIMDE_POLY8_C(220) } },
|
||||
{ { SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(243), SIMDE_POLY8_C(112), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 66) },
|
||||
{ SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(229), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(185), SIMDE_POLY8_C(248), SIMDE_POLY8_C(128), SIMDE_POLY8_C(253) },
|
||||
{ SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(112), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(253) } },
|
||||
{ { SIMDE_POLY8_C(218), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(201), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(131), SIMDE_POLY8_C(105), SIMDE_POLY8_C(178) },
|
||||
{ SIMDE_POLY8_C( 55), SIMDE_POLY8_C(116), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 4), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 8) },
|
||||
{ SIMDE_POLY8_C( 7), SIMDE_POLY8_C(116), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 4), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(178), SIMDE_POLY8_C( 8) } },
|
||||
{ { SIMDE_POLY8_C(132), SIMDE_POLY8_C(211), SIMDE_POLY8_C(120), SIMDE_POLY8_C(187), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(201), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 37) },
|
||||
{ SIMDE_POLY8_C(208), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(137), SIMDE_POLY8_C(219), SIMDE_POLY8_C(171), SIMDE_POLY8_C(134), SIMDE_POLY8_C(181) },
|
||||
{ SIMDE_POLY8_C(211), SIMDE_POLY8_C(227), SIMDE_POLY8_C(187), SIMDE_POLY8_C(137), SIMDE_POLY8_C(201), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(181) } },
|
||||
{ { SIMDE_POLY8_C(179), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(211), SIMDE_POLY8_C(155), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 10) },
|
||||
{ SIMDE_POLY8_C( 15), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(238), SIMDE_POLY8_C(233), SIMDE_POLY8_C(139) },
|
||||
{ SIMDE_POLY8_C( 79), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(225), SIMDE_POLY8_C(155), SIMDE_POLY8_C(238), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(139) } },
|
||||
{ { SIMDE_POLY8_C(194), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(251) },
|
||||
{ SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(132), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(183), SIMDE_POLY8_C(145) },
|
||||
{ SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(251), SIMDE_POLY8_C(145) } },
|
||||
{ { SIMDE_POLY8_C( 90), SIMDE_POLY8_C(233), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(133), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(148) },
|
||||
{ SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 69), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(162), SIMDE_POLY8_C(246) },
|
||||
{ SIMDE_POLY8_C(233), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(148), SIMDE_POLY8_C(246) } },
|
||||
};
|
||||
|
||||
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_poly8x8_t r = simde_vtrn2_p8(a, b);
|
||||
|
||||
simde_test_arm_neon_assert_equal_p8x8(r, simde_vld1_p8(test_vec[i].r));
|
||||
}
|
||||
|
||||
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_poly8x8_t r = simde_vtrn2_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_p8x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2_p16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_poly16_t a[4];
|
||||
simde_poly16_t b[4];
|
||||
simde_poly16_t r[4];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY16_C( 5340), SIMDE_POLY16_C(40669), SIMDE_POLY16_C(17077), SIMDE_POLY16_C(60369) },
|
||||
{ SIMDE_POLY16_C( 8272), SIMDE_POLY16_C(45663), SIMDE_POLY16_C( 988), SIMDE_POLY16_C(27971) },
|
||||
{ SIMDE_POLY16_C(40669), SIMDE_POLY16_C(45663), SIMDE_POLY16_C(60369), SIMDE_POLY16_C(27971) } },
|
||||
{ { SIMDE_POLY16_C(17106), SIMDE_POLY16_C( 4797), SIMDE_POLY16_C( 3841), SIMDE_POLY16_C(52059) },
|
||||
{ SIMDE_POLY16_C(56359), SIMDE_POLY16_C(46318), SIMDE_POLY16_C(18079), SIMDE_POLY16_C(31782) },
|
||||
{ SIMDE_POLY16_C( 4797), SIMDE_POLY16_C(46318), SIMDE_POLY16_C(52059), SIMDE_POLY16_C(31782) } },
|
||||
{ { SIMDE_POLY16_C( 859), SIMDE_POLY16_C( 4122), SIMDE_POLY16_C(60229), SIMDE_POLY16_C(38651) },
|
||||
{ SIMDE_POLY16_C(23051), SIMDE_POLY16_C(59464), SIMDE_POLY16_C(35678), SIMDE_POLY16_C(12373) },
|
||||
{ SIMDE_POLY16_C( 4122), SIMDE_POLY16_C(59464), SIMDE_POLY16_C(38651), SIMDE_POLY16_C(12373) } },
|
||||
{ { SIMDE_POLY16_C( 5069), SIMDE_POLY16_C(53058), SIMDE_POLY16_C(40482), SIMDE_POLY16_C(18842) },
|
||||
{ SIMDE_POLY16_C(35194), SIMDE_POLY16_C( 6909), SIMDE_POLY16_C( 9167), SIMDE_POLY16_C(10902) },
|
||||
{ SIMDE_POLY16_C(53058), SIMDE_POLY16_C( 6909), SIMDE_POLY16_C(18842), SIMDE_POLY16_C(10902) } },
|
||||
{ { SIMDE_POLY16_C(45094), SIMDE_POLY16_C(27450), SIMDE_POLY16_C(13980), SIMDE_POLY16_C(42753) },
|
||||
{ SIMDE_POLY16_C(18832), SIMDE_POLY16_C(61071), SIMDE_POLY16_C(58836), SIMDE_POLY16_C(41503) },
|
||||
{ SIMDE_POLY16_C(27450), SIMDE_POLY16_C(61071), SIMDE_POLY16_C(42753), SIMDE_POLY16_C(41503) } },
|
||||
{ { SIMDE_POLY16_C(25080), SIMDE_POLY16_C( 6769), SIMDE_POLY16_C( 3071), SIMDE_POLY16_C(31331) },
|
||||
{ SIMDE_POLY16_C(24724), SIMDE_POLY16_C(25748), SIMDE_POLY16_C(10883), SIMDE_POLY16_C(43406) },
|
||||
{ SIMDE_POLY16_C( 6769), SIMDE_POLY16_C(25748), SIMDE_POLY16_C(31331), SIMDE_POLY16_C(43406) } },
|
||||
{ { SIMDE_POLY16_C(51674), SIMDE_POLY16_C(30228), SIMDE_POLY16_C( 5887), SIMDE_POLY16_C(36638) },
|
||||
{ SIMDE_POLY16_C(44383), SIMDE_POLY16_C(13438), SIMDE_POLY16_C(40338), SIMDE_POLY16_C(35542) },
|
||||
{ SIMDE_POLY16_C(30228), SIMDE_POLY16_C(13438), SIMDE_POLY16_C(36638), SIMDE_POLY16_C(35542) } },
|
||||
{ { SIMDE_POLY16_C(18430), SIMDE_POLY16_C(65188), SIMDE_POLY16_C( 1874), SIMDE_POLY16_C(59256) },
|
||||
{ SIMDE_POLY16_C( 3175), SIMDE_POLY16_C(59979), SIMDE_POLY16_C(55606), SIMDE_POLY16_C( 4243) },
|
||||
{ SIMDE_POLY16_C(65188), SIMDE_POLY16_C(59979), SIMDE_POLY16_C(59256), SIMDE_POLY16_C( 4243) } },
|
||||
};
|
||||
|
||||
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_poly16x4_t r = simde_vtrn2_p16(a, b);
|
||||
simde_test_arm_neon_assert_equal_p16x4(r, simde_vld1_p16(test_vec[i].r));
|
||||
}
|
||||
|
||||
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_poly16x4_t r = simde_vtrn2_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_p16x4(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_p8 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_poly8_t a[16];
|
||||
simde_poly8_t b[16];
|
||||
simde_poly8_t r[16];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY8_C( 20), SIMDE_POLY8_C(238), SIMDE_POLY8_C(252), SIMDE_POLY8_C(213), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(233), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 19),
|
||||
SIMDE_POLY8_C(139), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(180), SIMDE_POLY8_C(215), SIMDE_POLY8_C(124), SIMDE_POLY8_C(191) },
|
||||
{ SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(234), SIMDE_POLY8_C(232), SIMDE_POLY8_C(111), SIMDE_POLY8_C(230), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 66),
|
||||
SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(221), SIMDE_POLY8_C(221), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(155) },
|
||||
{ SIMDE_POLY8_C(238), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(213), SIMDE_POLY8_C(232), SIMDE_POLY8_C(233), SIMDE_POLY8_C(230), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 66),
|
||||
SIMDE_POLY8_C(224), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(221), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(191), SIMDE_POLY8_C(155) } },
|
||||
{ { SIMDE_POLY8_C(247), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(112), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(202),
|
||||
SIMDE_POLY8_C( 41), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(221), SIMDE_POLY8_C(130), SIMDE_POLY8_C(132), SIMDE_POLY8_C(156), SIMDE_POLY8_C(137) },
|
||||
{ SIMDE_POLY8_C(137), SIMDE_POLY8_C(135), SIMDE_POLY8_C(113), SIMDE_POLY8_C(249), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(191),
|
||||
SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(157), SIMDE_POLY8_C(152), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(246), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 24) },
|
||||
{ SIMDE_POLY8_C( 85), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(202), SIMDE_POLY8_C(191),
|
||||
SIMDE_POLY8_C(171), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(221), SIMDE_POLY8_C(152), SIMDE_POLY8_C(132), SIMDE_POLY8_C(246), SIMDE_POLY8_C(137), SIMDE_POLY8_C( 24) } },
|
||||
{ { SIMDE_POLY8_C( 75), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(138), SIMDE_POLY8_C(236), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 22),
|
||||
SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(243), SIMDE_POLY8_C(202), SIMDE_POLY8_C(223), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(105) },
|
||||
{ SIMDE_POLY8_C( 23), SIMDE_POLY8_C(197), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(132), SIMDE_POLY8_C(211), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(228),
|
||||
SIMDE_POLY8_C(182), SIMDE_POLY8_C(224), SIMDE_POLY8_C(124), SIMDE_POLY8_C(216), SIMDE_POLY8_C(214), SIMDE_POLY8_C(175), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 34) },
|
||||
{ SIMDE_POLY8_C(163), SIMDE_POLY8_C(197), SIMDE_POLY8_C(138), SIMDE_POLY8_C(132), SIMDE_POLY8_C(157), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(228),
|
||||
SIMDE_POLY8_C( 91), SIMDE_POLY8_C(224), SIMDE_POLY8_C(202), SIMDE_POLY8_C(216), SIMDE_POLY8_C(144), SIMDE_POLY8_C(175), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 34) } },
|
||||
{ { SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 40),
|
||||
SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(217), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(164), SIMDE_POLY8_C(240) },
|
||||
{ SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(116), SIMDE_POLY8_C(223), SIMDE_POLY8_C(163), SIMDE_POLY8_C(183), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 90),
|
||||
SIMDE_POLY8_C(152), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(110), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 67) },
|
||||
{ SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(223), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 90),
|
||||
SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(110), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(240), SIMDE_POLY8_C( 67) } },
|
||||
{ { SIMDE_POLY8_C(100), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(216), SIMDE_POLY8_C(108), SIMDE_POLY8_C(152),
|
||||
SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(211), SIMDE_POLY8_C(250), SIMDE_POLY8_C(165), SIMDE_POLY8_C(119), SIMDE_POLY8_C(234), SIMDE_POLY8_C(177) },
|
||||
{ SIMDE_POLY8_C(125), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(122), SIMDE_POLY8_C(173),
|
||||
SIMDE_POLY8_C(149), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(133), SIMDE_POLY8_C(207), SIMDE_POLY8_C(172), SIMDE_POLY8_C(200), SIMDE_POLY8_C( 51) },
|
||||
{ SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(152), SIMDE_POLY8_C(173),
|
||||
SIMDE_POLY8_C( 94), SIMDE_POLY8_C(172), SIMDE_POLY8_C(250), SIMDE_POLY8_C(133), SIMDE_POLY8_C(119), SIMDE_POLY8_C(172), SIMDE_POLY8_C(177), SIMDE_POLY8_C( 51) } },
|
||||
{ { SIMDE_POLY8_C(233), SIMDE_POLY8_C( 74), SIMDE_POLY8_C(119), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(227), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 67),
|
||||
SIMDE_POLY8_C( 66), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(231), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 39), SIMDE_POLY8_C(152), SIMDE_POLY8_C(132) },
|
||||
{ SIMDE_POLY8_C(133), SIMDE_POLY8_C( 40), SIMDE_POLY8_C(165), SIMDE_POLY8_C(155), SIMDE_POLY8_C(125), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 18),
|
||||
SIMDE_POLY8_C(204), SIMDE_POLY8_C(100), SIMDE_POLY8_C(151), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(206), SIMDE_POLY8_C(250) },
|
||||
{ SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(155), SIMDE_POLY8_C(227), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 18),
|
||||
SIMDE_POLY8_C(144), SIMDE_POLY8_C(100), SIMDE_POLY8_C(231), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(132), SIMDE_POLY8_C(250) } },
|
||||
{ { SIMDE_POLY8_C(169), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(107),
|
||||
SIMDE_POLY8_C(109), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(117), SIMDE_POLY8_C(116), SIMDE_POLY8_C(234), SIMDE_POLY8_C(249), SIMDE_POLY8_C(250) },
|
||||
{ SIMDE_POLY8_C( 19), SIMDE_POLY8_C(158), SIMDE_POLY8_C(149), SIMDE_POLY8_C(144), SIMDE_POLY8_C(190), SIMDE_POLY8_C(221), SIMDE_POLY8_C(162), SIMDE_POLY8_C(138),
|
||||
SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(152), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 65) },
|
||||
{ SIMDE_POLY8_C( 70), SIMDE_POLY8_C(158), SIMDE_POLY8_C(204), SIMDE_POLY8_C(144), SIMDE_POLY8_C(221), SIMDE_POLY8_C(221), SIMDE_POLY8_C(107), SIMDE_POLY8_C(138),
|
||||
SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 83), SIMDE_POLY8_C(234), SIMDE_POLY8_C(243), SIMDE_POLY8_C(250), SIMDE_POLY8_C( 65) } },
|
||||
{ { SIMDE_POLY8_C( 57), SIMDE_POLY8_C(108), SIMDE_POLY8_C( 13), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 29), SIMDE_POLY8_C(206), SIMDE_POLY8_C(183),
|
||||
SIMDE_POLY8_C(106), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 44), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 11), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 30) },
|
||||
{ SIMDE_POLY8_C(196), SIMDE_POLY8_C(109), SIMDE_POLY8_C(174), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(141),
|
||||
SIMDE_POLY8_C(137), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 99), SIMDE_POLY8_C( 94) },
|
||||
{ SIMDE_POLY8_C(108), SIMDE_POLY8_C(109), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 29), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(183), SIMDE_POLY8_C(141),
|
||||
SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 49), SIMDE_POLY8_C(222), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 94) } },
|
||||
};
|
||||
|
||||
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_poly8x16_t r = simde_vtrn2q_p8(a, b);
|
||||
|
||||
simde_test_arm_neon_assert_equal_p8x16(r, simde_vld1q_p8(test_vec[i].r));
|
||||
}
|
||||
|
||||
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_poly8x16_t r = simde_vtrn2q_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_p8x16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_p16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_poly16_t a[8];
|
||||
simde_poly16_t b[8];
|
||||
simde_poly16_t r[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY16_C( 871), SIMDE_POLY16_C(60974), SIMDE_POLY16_C(46339), SIMDE_POLY16_C(41413), SIMDE_POLY16_C(48049), SIMDE_POLY16_C(26805), SIMDE_POLY16_C( 6238), SIMDE_POLY16_C(17076) },
|
||||
{ SIMDE_POLY16_C(16789), SIMDE_POLY16_C(31129), SIMDE_POLY16_C(27483), SIMDE_POLY16_C(21460), SIMDE_POLY16_C(34444), SIMDE_POLY16_C(40210), SIMDE_POLY16_C(60228), SIMDE_POLY16_C(43796) },
|
||||
{ SIMDE_POLY16_C(60974), SIMDE_POLY16_C(31129), SIMDE_POLY16_C(41413), SIMDE_POLY16_C(21460), SIMDE_POLY16_C(26805), SIMDE_POLY16_C(40210), SIMDE_POLY16_C(17076), SIMDE_POLY16_C(43796) } },
|
||||
{ { SIMDE_POLY16_C(17391), SIMDE_POLY16_C(62105), SIMDE_POLY16_C(24568), SIMDE_POLY16_C(43411), SIMDE_POLY16_C(18714), SIMDE_POLY16_C(30993), SIMDE_POLY16_C(50529), SIMDE_POLY16_C(63163) },
|
||||
{ SIMDE_POLY16_C(21510), SIMDE_POLY16_C(24944), SIMDE_POLY16_C(17600), SIMDE_POLY16_C(19636), SIMDE_POLY16_C(50890), SIMDE_POLY16_C( 3817), SIMDE_POLY16_C(64945), SIMDE_POLY16_C(41145) },
|
||||
{ SIMDE_POLY16_C(62105), SIMDE_POLY16_C(24944), SIMDE_POLY16_C(43411), SIMDE_POLY16_C(19636), SIMDE_POLY16_C(30993), SIMDE_POLY16_C( 3817), SIMDE_POLY16_C(63163), SIMDE_POLY16_C(41145) } },
|
||||
{ { SIMDE_POLY16_C(21312), SIMDE_POLY16_C(14483), SIMDE_POLY16_C( 9906), SIMDE_POLY16_C(52449), SIMDE_POLY16_C(62063), SIMDE_POLY16_C(53317), SIMDE_POLY16_C( 439), SIMDE_POLY16_C(48583) },
|
||||
{ SIMDE_POLY16_C(14165), SIMDE_POLY16_C( 5406), SIMDE_POLY16_C(53883), SIMDE_POLY16_C(17761), SIMDE_POLY16_C(19096), SIMDE_POLY16_C(19028), SIMDE_POLY16_C( 3400), SIMDE_POLY16_C(35050) },
|
||||
{ SIMDE_POLY16_C(14483), SIMDE_POLY16_C( 5406), SIMDE_POLY16_C(52449), SIMDE_POLY16_C(17761), SIMDE_POLY16_C(53317), SIMDE_POLY16_C(19028), SIMDE_POLY16_C(48583), SIMDE_POLY16_C(35050) } },
|
||||
{ { SIMDE_POLY16_C(32096), SIMDE_POLY16_C( 4801), SIMDE_POLY16_C(41636), SIMDE_POLY16_C( 5087), SIMDE_POLY16_C( 9365), SIMDE_POLY16_C(19684), SIMDE_POLY16_C(43813), SIMDE_POLY16_C(31498) },
|
||||
{ SIMDE_POLY16_C(10466), SIMDE_POLY16_C(23952), SIMDE_POLY16_C(62203), SIMDE_POLY16_C(37794), SIMDE_POLY16_C(63036), SIMDE_POLY16_C(34013), SIMDE_POLY16_C(51204), SIMDE_POLY16_C(25613) },
|
||||
{ SIMDE_POLY16_C( 4801), SIMDE_POLY16_C(23952), SIMDE_POLY16_C( 5087), SIMDE_POLY16_C(37794), SIMDE_POLY16_C(19684), SIMDE_POLY16_C(34013), SIMDE_POLY16_C(31498), SIMDE_POLY16_C(25613) } },
|
||||
{ { SIMDE_POLY16_C(52805), SIMDE_POLY16_C(59767), SIMDE_POLY16_C(22128), SIMDE_POLY16_C( 1533), SIMDE_POLY16_C(57722), SIMDE_POLY16_C(41042), SIMDE_POLY16_C(23692), SIMDE_POLY16_C(28187) },
|
||||
{ SIMDE_POLY16_C(43908), SIMDE_POLY16_C(32715), SIMDE_POLY16_C(28061), SIMDE_POLY16_C(55827), SIMDE_POLY16_C(61540), SIMDE_POLY16_C(26718), SIMDE_POLY16_C(27576), SIMDE_POLY16_C(65228) },
|
||||
{ SIMDE_POLY16_C(59767), SIMDE_POLY16_C(32715), SIMDE_POLY16_C( 1533), SIMDE_POLY16_C(55827), SIMDE_POLY16_C(41042), SIMDE_POLY16_C(26718), SIMDE_POLY16_C(28187), SIMDE_POLY16_C(65228) } },
|
||||
{ { SIMDE_POLY16_C(17209), SIMDE_POLY16_C(43751), SIMDE_POLY16_C(58521), SIMDE_POLY16_C( 5295), SIMDE_POLY16_C( 453), SIMDE_POLY16_C(20916), SIMDE_POLY16_C(53085), SIMDE_POLY16_C(58047) },
|
||||
{ SIMDE_POLY16_C(35450), SIMDE_POLY16_C( 6241), SIMDE_POLY16_C(29944), SIMDE_POLY16_C(23794), SIMDE_POLY16_C(20581), SIMDE_POLY16_C( 7620), SIMDE_POLY16_C(37052), SIMDE_POLY16_C(62747) },
|
||||
{ SIMDE_POLY16_C(43751), SIMDE_POLY16_C( 6241), SIMDE_POLY16_C( 5295), SIMDE_POLY16_C(23794), SIMDE_POLY16_C(20916), SIMDE_POLY16_C( 7620), SIMDE_POLY16_C(58047), SIMDE_POLY16_C(62747) } },
|
||||
{ { SIMDE_POLY16_C( 980), SIMDE_POLY16_C(28063), SIMDE_POLY16_C(20455), SIMDE_POLY16_C(44417), SIMDE_POLY16_C(13648), SIMDE_POLY16_C(44798), SIMDE_POLY16_C(48644), SIMDE_POLY16_C(32656) },
|
||||
{ SIMDE_POLY16_C(61768), SIMDE_POLY16_C(16535), SIMDE_POLY16_C(35174), SIMDE_POLY16_C(52124), SIMDE_POLY16_C(24793), SIMDE_POLY16_C(38376), SIMDE_POLY16_C( 1265), SIMDE_POLY16_C(50571) },
|
||||
{ SIMDE_POLY16_C(28063), SIMDE_POLY16_C(16535), SIMDE_POLY16_C(44417), SIMDE_POLY16_C(52124), SIMDE_POLY16_C(44798), SIMDE_POLY16_C(38376), SIMDE_POLY16_C(32656), SIMDE_POLY16_C(50571) } },
|
||||
{ { SIMDE_POLY16_C(10759), SIMDE_POLY16_C(60978), SIMDE_POLY16_C(46201), SIMDE_POLY16_C(51867), SIMDE_POLY16_C(39657), SIMDE_POLY16_C(61048), SIMDE_POLY16_C( 2136), SIMDE_POLY16_C(41069) },
|
||||
{ SIMDE_POLY16_C( 1273), SIMDE_POLY16_C(24545), SIMDE_POLY16_C(32141), SIMDE_POLY16_C(26154), SIMDE_POLY16_C( 5086), SIMDE_POLY16_C(53244), SIMDE_POLY16_C(34583), SIMDE_POLY16_C( 7828) },
|
||||
{ SIMDE_POLY16_C(60978), SIMDE_POLY16_C(24545), SIMDE_POLY16_C(51867), SIMDE_POLY16_C(26154), SIMDE_POLY16_C(61048), SIMDE_POLY16_C(53244), SIMDE_POLY16_C(41069), SIMDE_POLY16_C( 7828) } },
|
||||
};
|
||||
|
||||
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_poly16x8_t r = simde_vtrn2q_p16(a, b);
|
||||
simde_test_arm_neon_assert_equal_p16x8(r, simde_vld1q_p16(test_vec[i].r));
|
||||
}
|
||||
|
||||
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_poly16x8_t r = simde_vtrn2q_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_p16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vtrn2q_p64 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
struct {
|
||||
simde_poly64_t a[2];
|
||||
simde_poly64_t b[2];
|
||||
simde_poly64_t r[2];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_POLY64_C( 6945319424494524748), SIMDE_POLY64_C(16610643692567852571) },
|
||||
{ SIMDE_POLY64_C( 6955632144508350698), SIMDE_POLY64_C( 8616304367102141145) },
|
||||
{ SIMDE_POLY64_C(16610643692567852571), SIMDE_POLY64_C( 8616304367102141145) } },
|
||||
{ { SIMDE_POLY64_C( 483247366258044957), SIMDE_POLY64_C(10529975198939663308) },
|
||||
{ SIMDE_POLY64_C( 1036481247570548332), SIMDE_POLY64_C( 9734062660554794868) },
|
||||
{ SIMDE_POLY64_C(10529975198939663308), SIMDE_POLY64_C( 9734062660554794868) } },
|
||||
{ { SIMDE_POLY64_C( 3276246002131765894), SIMDE_POLY64_C( 6310820620303658843) },
|
||||
{ SIMDE_POLY64_C( 2711935197491257183), SIMDE_POLY64_C( 4743376430044571105) },
|
||||
{ SIMDE_POLY64_C( 6310820620303658843), SIMDE_POLY64_C( 4743376430044571105) } },
|
||||
{ { SIMDE_POLY64_C(11165594730051579749), SIMDE_POLY64_C( 4925304002160909336) },
|
||||
{ SIMDE_POLY64_C( 5649618867251098256), SIMDE_POLY64_C( 7843984154933472479) },
|
||||
{ SIMDE_POLY64_C( 4925304002160909336), SIMDE_POLY64_C( 7843984154933472479) } },
|
||||
{ { SIMDE_POLY64_C(14913150880268389661), SIMDE_POLY64_C( 6101299713457361539) },
|
||||
{ SIMDE_POLY64_C(16112188414821303774), SIMDE_POLY64_C(13807286187674121257) },
|
||||
{ SIMDE_POLY64_C( 6101299713457361539), SIMDE_POLY64_C(13807286187674121257) } },
|
||||
{ { SIMDE_POLY64_C( 8820038150351737058), SIMDE_POLY64_C( 4808593589038889379) },
|
||||
{ SIMDE_POLY64_C( 8715071445204291859), SIMDE_POLY64_C(11798381818995567451) },
|
||||
{ SIMDE_POLY64_C( 4808593589038889379), SIMDE_POLY64_C(11798381818995567451) } },
|
||||
{ { SIMDE_POLY64_C(10053903435184264981), SIMDE_POLY64_C( 757640439803308252) },
|
||||
{ SIMDE_POLY64_C(10647933628473741822), SIMDE_POLY64_C(14474090585097530747) },
|
||||
{ SIMDE_POLY64_C( 757640439803308252), SIMDE_POLY64_C(14474090585097530747) } },
|
||||
{ { SIMDE_POLY64_C(11139191600147929635), SIMDE_POLY64_C( 3874607743106779588) },
|
||||
{ SIMDE_POLY64_C( 7870963881294881648), SIMDE_POLY64_C( 4192999787675110324) },
|
||||
{ SIMDE_POLY64_C( 3874607743106779588), SIMDE_POLY64_C( 4192999787675110324) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_poly64x2_t a = simde_vld1q_p64(test_vec[i].a);
|
||||
simde_poly64x2_t b = simde_vld1q_p64(test_vec[i].b);
|
||||
simde_poly64x2_t r = simde_vtrn2q_p64(a, b);
|
||||
simde_test_arm_neon_assert_equal_p64x2(r, simde_vld1q_p64(test_vec[i].r));
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
#else
|
||||
fputc('\n', stdout);
|
||||
for (int i = 0 ; i < 8 ; i++) {
|
||||
simde_poly64x2_t a = simde_test_arm_neon_random_p64x2();
|
||||
simde_poly64x2_t b = simde_test_arm_neon_random_p64x2();
|
||||
simde_poly64x2_t r = simde_vtrn2q_p64(a, b);
|
||||
|
||||
simde_test_arm_neon_write_p64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||||
simde_test_arm_neon_write_p64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||||
simde_test_arm_neon_write_p64x2(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||||
}
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_BEGIN
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_s8)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_s16)
|
||||
|
|
@ -801,6 +1514,7 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_u8)
|
|||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_u16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_u32)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_f64)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_s8)
|
||||
|
|
@ -811,6 +1525,12 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_u8)
|
|||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_u16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_u32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_u64)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_p8)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2_p16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_p8)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_p16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vtrn2q_p64)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
||||
#include <test/arm/neon/test-neon-footer.h>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue