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:
Ryan Henry 2026-09-24 14:30:19 -06:00
parent e4e666f459
commit 3f10e05176
912 changed files with 224964 additions and 11502 deletions

View file

@ -5,8 +5,77 @@
#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];
@ -81,10 +150,25 @@ test_simde_vtrn_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[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];
@ -159,10 +243,25 @@ test_simde_vtrn_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_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];
@ -237,10 +336,25 @@ test_simde_vtrn_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_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];
@ -315,10 +429,25 @@ test_simde_vtrn_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[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];
@ -393,10 +522,25 @@ test_simde_vtrn_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_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];
@ -470,10 +614,25 @@ test_simde_vtrn_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_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];
@ -547,10 +706,124 @@ test_simde_vtrn_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[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];
@ -624,10 +897,25 @@ test_simde_vtrnq_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_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];
@ -734,10 +1022,25 @@ test_simde_vtrnq_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_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];
@ -812,10 +1115,25 @@ test_simde_vtrnq_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_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];
@ -889,10 +1207,25 @@ test_simde_vtrnq_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_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];
@ -999,10 +1332,25 @@ test_simde_vtrnq_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_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];
@ -1076,10 +1424,25 @@ test_simde_vtrnq_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_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];
@ -1154,12 +1517,429 @@ test_simde_vtrnq_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_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)
@ -1168,6 +1948,7 @@ 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)
@ -1175,6 +1956,11 @@ 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