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

@ -3,8 +3,58 @@
#include "test-neon.h"
#include "../../../simde/arm/neon/uzp2.h"
static int
test_simde_vuzp2_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( -49.28), SIMDE_FLOAT16_VALUE( -109.00), SIMDE_FLOAT16_VALUE( -626.50), SIMDE_FLOAT16_VALUE( -567.00) },
{ SIMDE_FLOAT16_VALUE( -178.88), SIMDE_FLOAT16_VALUE( 10.22), SIMDE_FLOAT16_VALUE( 976.50), SIMDE_FLOAT16_VALUE( -31.19) },
{ SIMDE_FLOAT16_VALUE( -109.00), SIMDE_FLOAT16_VALUE( -567.00), SIMDE_FLOAT16_VALUE( 10.22), SIMDE_FLOAT16_VALUE( -31.19) } },
{ { SIMDE_FLOAT16_VALUE( -226.00), SIMDE_FLOAT16_VALUE( -520.50), SIMDE_FLOAT16_VALUE( -252.38), SIMDE_FLOAT16_VALUE( -407.50) },
{ SIMDE_FLOAT16_VALUE( 89.44), SIMDE_FLOAT16_VALUE( -200.50), SIMDE_FLOAT16_VALUE( -439.75), SIMDE_FLOAT16_VALUE( -450.75) },
{ SIMDE_FLOAT16_VALUE( -520.50), SIMDE_FLOAT16_VALUE( -407.50), SIMDE_FLOAT16_VALUE( -200.50), SIMDE_FLOAT16_VALUE( -450.75) } },
{ { SIMDE_FLOAT16_VALUE( -833.00), SIMDE_FLOAT16_VALUE( -714.00), SIMDE_FLOAT16_VALUE( 428.50), SIMDE_FLOAT16_VALUE( 871.50) },
{ SIMDE_FLOAT16_VALUE( -157.12), SIMDE_FLOAT16_VALUE( 972.50), SIMDE_FLOAT16_VALUE( 298.75), SIMDE_FLOAT16_VALUE( -919.50) },
{ SIMDE_FLOAT16_VALUE( -714.00), SIMDE_FLOAT16_VALUE( 871.50), SIMDE_FLOAT16_VALUE( 972.50), SIMDE_FLOAT16_VALUE( -919.50) } },
{ { SIMDE_FLOAT16_VALUE( 488.00), SIMDE_FLOAT16_VALUE( 112.56), SIMDE_FLOAT16_VALUE( 58.66), SIMDE_FLOAT16_VALUE( 879.50) },
{ SIMDE_FLOAT16_VALUE( 129.00), SIMDE_FLOAT16_VALUE( -858.50), SIMDE_FLOAT16_VALUE( -133.88), SIMDE_FLOAT16_VALUE( -920.50) },
{ SIMDE_FLOAT16_VALUE( 112.56), SIMDE_FLOAT16_VALUE( 879.50), SIMDE_FLOAT16_VALUE( -858.50), SIMDE_FLOAT16_VALUE( -920.50) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4_t a, b, r;
a = simde_vld1_f16(test_vec[i].a);
b = simde_vld1_f16(test_vec[i].b);
r = simde_vuzp2_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_vuzp2_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_vuzp2_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float32 a[2];
simde_float32 b[2];
@ -47,10 +97,25 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[8];
int8_t b[8];
@ -91,10 +156,25 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[4];
int16_t b[4];
@ -135,10 +215,25 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[2];
int32_t b[2];
@ -179,10 +274,25 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[8];
uint8_t b[8];
@ -223,10 +333,25 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[4];
uint16_t b[4];
@ -266,10 +391,25 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[2];
uint32_t b[2];
@ -309,10 +449,107 @@ test_simde_vuzp2_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_vuzp2_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_vuzp2q_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( 90.452), SIMDE_FLOAT16_VALUE( 17.701), SIMDE_FLOAT16_VALUE( - 49.009), SIMDE_FLOAT16_VALUE( - 88.786),
SIMDE_FLOAT16_VALUE( - 29.009), SIMDE_FLOAT16_VALUE( - 37.203), SIMDE_FLOAT16_VALUE( - 58.225), SIMDE_FLOAT16_VALUE( 98.368) },
{ SIMDE_FLOAT16_VALUE( 19.440), SIMDE_FLOAT16_VALUE( - 1.659), SIMDE_FLOAT16_VALUE( 42.542), SIMDE_FLOAT16_VALUE( - 99.688),
SIMDE_FLOAT16_VALUE( - 88.443), SIMDE_FLOAT16_VALUE( 34.706), SIMDE_FLOAT16_VALUE( - 85.533), SIMDE_FLOAT16_VALUE( - 56.781) },
{ SIMDE_FLOAT16_VALUE( 17.701), SIMDE_FLOAT16_VALUE( - 88.786), SIMDE_FLOAT16_VALUE( - 37.203), SIMDE_FLOAT16_VALUE( 98.368),
SIMDE_FLOAT16_VALUE( - 1.659), SIMDE_FLOAT16_VALUE( - 99.688), SIMDE_FLOAT16_VALUE( 34.706), SIMDE_FLOAT16_VALUE( - 56.781) } },
{ { SIMDE_FLOAT16_VALUE( 33.998), SIMDE_FLOAT16_VALUE( 9.488), SIMDE_FLOAT16_VALUE( - 57.721), SIMDE_FLOAT16_VALUE( - 25.485),
SIMDE_FLOAT16_VALUE( - 94.073), SIMDE_FLOAT16_VALUE( - 82.899), SIMDE_FLOAT16_VALUE( 44.365), SIMDE_FLOAT16_VALUE( - 99.238) },
{ SIMDE_FLOAT16_VALUE( 9.551), SIMDE_FLOAT16_VALUE( 89.969), SIMDE_FLOAT16_VALUE( - 86.075), SIMDE_FLOAT16_VALUE( - 77.835),
SIMDE_FLOAT16_VALUE( 0.704), SIMDE_FLOAT16_VALUE( - 29.406), SIMDE_FLOAT16_VALUE( 20.191), SIMDE_FLOAT16_VALUE( - 38.311) },
{ SIMDE_FLOAT16_VALUE( 9.488), SIMDE_FLOAT16_VALUE( - 25.485), SIMDE_FLOAT16_VALUE( - 82.899), SIMDE_FLOAT16_VALUE( - 99.238),
SIMDE_FLOAT16_VALUE( 89.969), SIMDE_FLOAT16_VALUE( - 77.835), SIMDE_FLOAT16_VALUE( - 29.406), SIMDE_FLOAT16_VALUE( - 38.311) } },
{ { SIMDE_FLOAT16_VALUE( 77.669), SIMDE_FLOAT16_VALUE( 71.372), SIMDE_FLOAT16_VALUE( 54.402), SIMDE_FLOAT16_VALUE( 77.171),
SIMDE_FLOAT16_VALUE( 37.815), SIMDE_FLOAT16_VALUE( 41.042), SIMDE_FLOAT16_VALUE( - 13.386), SIMDE_FLOAT16_VALUE( 20.748) },
{ SIMDE_FLOAT16_VALUE( - 98.103), SIMDE_FLOAT16_VALUE( - 63.759), SIMDE_FLOAT16_VALUE( - 16.397), SIMDE_FLOAT16_VALUE( - 83.256),
SIMDE_FLOAT16_VALUE( - 23.909), SIMDE_FLOAT16_VALUE( - 69.358), SIMDE_FLOAT16_VALUE( 53.308), SIMDE_FLOAT16_VALUE( 92.091) },
{ SIMDE_FLOAT16_VALUE( 71.372), SIMDE_FLOAT16_VALUE( 77.171), SIMDE_FLOAT16_VALUE( 41.042), SIMDE_FLOAT16_VALUE( 20.748),
SIMDE_FLOAT16_VALUE( - 63.759), SIMDE_FLOAT16_VALUE( - 83.256), SIMDE_FLOAT16_VALUE( - 69.358), SIMDE_FLOAT16_VALUE( 92.091) } },
{ { SIMDE_FLOAT16_VALUE( 0.764), SIMDE_FLOAT16_VALUE( - 93.449), SIMDE_FLOAT16_VALUE( 78.083), SIMDE_FLOAT16_VALUE( 10.810),
SIMDE_FLOAT16_VALUE( 94.958), SIMDE_FLOAT16_VALUE( 38.118), SIMDE_FLOAT16_VALUE( 48.405), SIMDE_FLOAT16_VALUE( 98.273) },
{ SIMDE_FLOAT16_VALUE( - 11.121), SIMDE_FLOAT16_VALUE( - 18.789), SIMDE_FLOAT16_VALUE( - 60.496), SIMDE_FLOAT16_VALUE( - 49.152),
SIMDE_FLOAT16_VALUE( - 38.385), SIMDE_FLOAT16_VALUE( - 40.755), SIMDE_FLOAT16_VALUE( 93.481), SIMDE_FLOAT16_VALUE( 93.409) },
{ SIMDE_FLOAT16_VALUE( - 93.449), SIMDE_FLOAT16_VALUE( 10.810), SIMDE_FLOAT16_VALUE( 38.118), SIMDE_FLOAT16_VALUE( 98.273),
SIMDE_FLOAT16_VALUE( - 18.789), SIMDE_FLOAT16_VALUE( - 49.152), SIMDE_FLOAT16_VALUE( - 40.755), SIMDE_FLOAT16_VALUE( 93.409) } },
{ { SIMDE_FLOAT16_VALUE( 60.980), SIMDE_FLOAT16_VALUE( 44.087), SIMDE_FLOAT16_VALUE( 4.420), SIMDE_FLOAT16_VALUE( - 86.379),
SIMDE_FLOAT16_VALUE( - 21.956), SIMDE_FLOAT16_VALUE( 66.211), SIMDE_FLOAT16_VALUE( 40.919), SIMDE_FLOAT16_VALUE( 44.341) },
{ SIMDE_FLOAT16_VALUE( - 6.654), SIMDE_FLOAT16_VALUE( 74.703), SIMDE_FLOAT16_VALUE( 90.296), SIMDE_FLOAT16_VALUE( - 32.224),
SIMDE_FLOAT16_VALUE( - 62.184), SIMDE_FLOAT16_VALUE( 60.075), SIMDE_FLOAT16_VALUE( 54.181), SIMDE_FLOAT16_VALUE( - 32.279) },
{ SIMDE_FLOAT16_VALUE( 44.087), SIMDE_FLOAT16_VALUE( - 86.379), SIMDE_FLOAT16_VALUE( 66.211), SIMDE_FLOAT16_VALUE( 44.341),
SIMDE_FLOAT16_VALUE( 74.703), SIMDE_FLOAT16_VALUE( - 32.224), SIMDE_FLOAT16_VALUE( 60.075), SIMDE_FLOAT16_VALUE( - 32.279) } },
{ { SIMDE_FLOAT16_VALUE( - 18.086), SIMDE_FLOAT16_VALUE( - 93.397), SIMDE_FLOAT16_VALUE( 80.704), SIMDE_FLOAT16_VALUE( - 25.237),
SIMDE_FLOAT16_VALUE( 67.082), SIMDE_FLOAT16_VALUE( 45.500), SIMDE_FLOAT16_VALUE( - 42.821), SIMDE_FLOAT16_VALUE( 30.047) },
{ SIMDE_FLOAT16_VALUE( 33.473), SIMDE_FLOAT16_VALUE( - 16.060), SIMDE_FLOAT16_VALUE( 82.753), SIMDE_FLOAT16_VALUE( - 97.939),
SIMDE_FLOAT16_VALUE( 55.855), SIMDE_FLOAT16_VALUE( 32.741), SIMDE_FLOAT16_VALUE( 82.947), SIMDE_FLOAT16_VALUE( - 16.162) },
{ SIMDE_FLOAT16_VALUE( - 93.397), SIMDE_FLOAT16_VALUE( - 25.237), SIMDE_FLOAT16_VALUE( 45.500), SIMDE_FLOAT16_VALUE( 30.047),
SIMDE_FLOAT16_VALUE( - 16.060), SIMDE_FLOAT16_VALUE( - 97.939), SIMDE_FLOAT16_VALUE( 32.741), SIMDE_FLOAT16_VALUE( - 16.162) } },
{ { SIMDE_FLOAT16_VALUE( 39.481), SIMDE_FLOAT16_VALUE( - 43.751), SIMDE_FLOAT16_VALUE( 46.517), SIMDE_FLOAT16_VALUE( 73.973),
SIMDE_FLOAT16_VALUE( - 63.824), SIMDE_FLOAT16_VALUE( - 81.545), SIMDE_FLOAT16_VALUE( 80.086), SIMDE_FLOAT16_VALUE( 5.275) },
{ SIMDE_FLOAT16_VALUE( 47.213), SIMDE_FLOAT16_VALUE( 95.067), SIMDE_FLOAT16_VALUE( - 53.211), SIMDE_FLOAT16_VALUE( 47.692),
SIMDE_FLOAT16_VALUE( 71.401), SIMDE_FLOAT16_VALUE( - 54.682), SIMDE_FLOAT16_VALUE( 74.308), SIMDE_FLOAT16_VALUE( - 33.162) },
{ SIMDE_FLOAT16_VALUE( - 43.751), SIMDE_FLOAT16_VALUE( 73.973), SIMDE_FLOAT16_VALUE( - 81.545), SIMDE_FLOAT16_VALUE( 5.275),
SIMDE_FLOAT16_VALUE( 95.067), SIMDE_FLOAT16_VALUE( 47.692), SIMDE_FLOAT16_VALUE( - 54.682), SIMDE_FLOAT16_VALUE( - 33.162) } },
{ { SIMDE_FLOAT16_VALUE( 93.150), SIMDE_FLOAT16_VALUE( - 92.626), SIMDE_FLOAT16_VALUE( 71.362), SIMDE_FLOAT16_VALUE( - 72.353),
SIMDE_FLOAT16_VALUE( 24.600), SIMDE_FLOAT16_VALUE( - 79.615), SIMDE_FLOAT16_VALUE( - 49.427), SIMDE_FLOAT16_VALUE( - 48.559) },
{ SIMDE_FLOAT16_VALUE( - 35.290), SIMDE_FLOAT16_VALUE( - 24.706), SIMDE_FLOAT16_VALUE( 98.487), SIMDE_FLOAT16_VALUE( 58.278),
SIMDE_FLOAT16_VALUE( - 53.949), SIMDE_FLOAT16_VALUE( - 40.152), SIMDE_FLOAT16_VALUE( 29.818), SIMDE_FLOAT16_VALUE( 53.465) },
{ SIMDE_FLOAT16_VALUE( - 92.626), SIMDE_FLOAT16_VALUE( - 72.353), SIMDE_FLOAT16_VALUE( - 79.615), SIMDE_FLOAT16_VALUE( - 48.559),
SIMDE_FLOAT16_VALUE( - 24.706), SIMDE_FLOAT16_VALUE( 58.278), SIMDE_FLOAT16_VALUE( - 40.152), SIMDE_FLOAT16_VALUE( 53.465) } },
};
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_vuzp2q_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_vuzp2q_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_vuzp2q_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float32 a[4];
simde_float32 b[4];
@ -352,10 +589,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float64 a[2];
simde_float64 b[2];
@ -396,10 +648,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[16];
int8_t b[16];
@ -464,10 +731,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[8];
int16_t b[8];
@ -508,10 +790,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[4];
int32_t b[4];
@ -551,10 +848,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a[2];
int64_t b[2];
@ -594,10 +906,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[16];
uint8_t b[16];
@ -662,10 +989,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[8];
uint16_t b[8];
@ -705,10 +1047,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[4];
uint32_t b[4];
@ -749,10 +1106,25 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2q_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a[2];
uint64_t b[2];
@ -792,9 +1164,340 @@ test_simde_vuzp2q_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_vuzp2q_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_vuzp2_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( 32), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 94), SIMDE_POLY8_C(134), SIMDE_POLY8_C(188), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 50) },
{ SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(113), SIMDE_POLY8_C(241), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 84) },
{ SIMDE_POLY8_C(115), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(241), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 84) } },
{ { SIMDE_POLY8_C( 24), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(106), SIMDE_POLY8_C(201), SIMDE_POLY8_C( 70), SIMDE_POLY8_C(150), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(152) },
{ SIMDE_POLY8_C(111), SIMDE_POLY8_C(245), SIMDE_POLY8_C(121), SIMDE_POLY8_C(191), SIMDE_POLY8_C(114), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(146) },
{ SIMDE_POLY8_C( 59), SIMDE_POLY8_C(201), SIMDE_POLY8_C(150), SIMDE_POLY8_C(152), SIMDE_POLY8_C(245), SIMDE_POLY8_C(191), SIMDE_POLY8_C(111), SIMDE_POLY8_C(146) } },
{ { SIMDE_POLY8_C(226), SIMDE_POLY8_C(105), SIMDE_POLY8_C( 24), SIMDE_POLY8_C(158), SIMDE_POLY8_C(110), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(208), SIMDE_POLY8_C(194) },
{ SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 46), SIMDE_POLY8_C(162), SIMDE_POLY8_C(108) },
{ SIMDE_POLY8_C(105), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 46), SIMDE_POLY8_C(108) } },
{ { SIMDE_POLY8_C(105), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(176), SIMDE_POLY8_C(162), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 17) },
{ SIMDE_POLY8_C(128), SIMDE_POLY8_C(193), SIMDE_POLY8_C(209), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 48), SIMDE_POLY8_C(220), SIMDE_POLY8_C(132), SIMDE_POLY8_C( 18) },
{ SIMDE_POLY8_C( 12), SIMDE_POLY8_C(176), SIMDE_POLY8_C(139), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(193), SIMDE_POLY8_C(242), SIMDE_POLY8_C(220), SIMDE_POLY8_C( 18) } },
{ { SIMDE_POLY8_C( 69), SIMDE_POLY8_C(156), SIMDE_POLY8_C(176), SIMDE_POLY8_C(180), SIMDE_POLY8_C(209), SIMDE_POLY8_C(129), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 32) },
{ SIMDE_POLY8_C(195), SIMDE_POLY8_C( 42), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(131), SIMDE_POLY8_C(194) },
{ SIMDE_POLY8_C(156), SIMDE_POLY8_C(180), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(194) } },
{ { SIMDE_POLY8_C( 30), SIMDE_POLY8_C(184), SIMDE_POLY8_C(114), SIMDE_POLY8_C(192), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(186), SIMDE_POLY8_C(210), SIMDE_POLY8_C(195) },
{ SIMDE_POLY8_C(124), SIMDE_POLY8_C(163), SIMDE_POLY8_C(182), SIMDE_POLY8_C(172), SIMDE_POLY8_C(127), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(191), SIMDE_POLY8_C(196) },
{ SIMDE_POLY8_C(184), SIMDE_POLY8_C(192), SIMDE_POLY8_C(186), SIMDE_POLY8_C(195), SIMDE_POLY8_C(163), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 58), SIMDE_POLY8_C(196) } },
{ { SIMDE_POLY8_C(215), SIMDE_POLY8_C(111), SIMDE_POLY8_C(120), SIMDE_POLY8_C(168), SIMDE_POLY8_C(240), SIMDE_POLY8_C(239), SIMDE_POLY8_C(200), SIMDE_POLY8_C(179) },
{ SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(202), SIMDE_POLY8_C(114), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(103) },
{ SIMDE_POLY8_C(111), SIMDE_POLY8_C(168), SIMDE_POLY8_C(239), SIMDE_POLY8_C(179), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(114), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(103) } },
{ { SIMDE_POLY8_C( 5), SIMDE_POLY8_C(167), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(222) },
{ SIMDE_POLY8_C(156), SIMDE_POLY8_C(194), SIMDE_POLY8_C(138), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(252), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(224), SIMDE_POLY8_C(211) },
{ SIMDE_POLY8_C(167), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(249), SIMDE_POLY8_C(222), SIMDE_POLY8_C(194), SIMDE_POLY8_C( 27), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(211) } },
};
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_vuzp2_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_vuzp2_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_vuzp2_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( 5562), SIMDE_POLY16_C(29929), SIMDE_POLY16_C(59535), SIMDE_POLY16_C( 4681) },
{ SIMDE_POLY16_C( 4562), SIMDE_POLY16_C(56009), SIMDE_POLY16_C(26174), SIMDE_POLY16_C(13284) },
{ SIMDE_POLY16_C(29929), SIMDE_POLY16_C( 4681), SIMDE_POLY16_C(56009), SIMDE_POLY16_C(13284) } },
{ { SIMDE_POLY16_C( 5231), SIMDE_POLY16_C( 5283), SIMDE_POLY16_C(50924), SIMDE_POLY16_C(52138) },
{ SIMDE_POLY16_C(51348), SIMDE_POLY16_C(34623), SIMDE_POLY16_C(61476), SIMDE_POLY16_C(57252) },
{ SIMDE_POLY16_C( 5283), SIMDE_POLY16_C(52138), SIMDE_POLY16_C(34623), SIMDE_POLY16_C(57252) } },
{ { SIMDE_POLY16_C(36102), SIMDE_POLY16_C(38227), SIMDE_POLY16_C(40053), SIMDE_POLY16_C(18343) },
{ SIMDE_POLY16_C(28845), SIMDE_POLY16_C(60193), SIMDE_POLY16_C( 1494), SIMDE_POLY16_C(17950) },
{ SIMDE_POLY16_C(38227), SIMDE_POLY16_C(18343), SIMDE_POLY16_C(60193), SIMDE_POLY16_C(17950) } },
{ { SIMDE_POLY16_C(49434), SIMDE_POLY16_C( 1626), SIMDE_POLY16_C( 1159), SIMDE_POLY16_C( 7122) },
{ SIMDE_POLY16_C( 4556), SIMDE_POLY16_C(61603), SIMDE_POLY16_C(18177), SIMDE_POLY16_C( 1999) },
{ SIMDE_POLY16_C( 1626), SIMDE_POLY16_C( 7122), SIMDE_POLY16_C(61603), SIMDE_POLY16_C( 1999) } },
{ { SIMDE_POLY16_C( 8916), SIMDE_POLY16_C(18844), SIMDE_POLY16_C(17342), SIMDE_POLY16_C(27536) },
{ SIMDE_POLY16_C(45748), SIMDE_POLY16_C(35414), SIMDE_POLY16_C(29879), SIMDE_POLY16_C(53712) },
{ SIMDE_POLY16_C(18844), SIMDE_POLY16_C(27536), SIMDE_POLY16_C(35414), SIMDE_POLY16_C(53712) } },
{ { SIMDE_POLY16_C(10805), SIMDE_POLY16_C(48344), SIMDE_POLY16_C(43566), SIMDE_POLY16_C(64216) },
{ SIMDE_POLY16_C(31675), SIMDE_POLY16_C(48363), SIMDE_POLY16_C(47810), SIMDE_POLY16_C(38596) },
{ SIMDE_POLY16_C(48344), SIMDE_POLY16_C(64216), SIMDE_POLY16_C(48363), SIMDE_POLY16_C(38596) } },
{ { SIMDE_POLY16_C(24797), SIMDE_POLY16_C(39903), SIMDE_POLY16_C(28580), SIMDE_POLY16_C(22535) },
{ SIMDE_POLY16_C(23841), SIMDE_POLY16_C(55778), SIMDE_POLY16_C(46034), SIMDE_POLY16_C( 1962) },
{ SIMDE_POLY16_C(39903), SIMDE_POLY16_C(22535), SIMDE_POLY16_C(55778), SIMDE_POLY16_C( 1962) } },
{ { SIMDE_POLY16_C(33501), SIMDE_POLY16_C( 3268), SIMDE_POLY16_C(39980), SIMDE_POLY16_C(59142) },
{ SIMDE_POLY16_C(61719), SIMDE_POLY16_C(55716), SIMDE_POLY16_C(26796), SIMDE_POLY16_C(35183) },
{ SIMDE_POLY16_C( 3268), SIMDE_POLY16_C(59142), SIMDE_POLY16_C(55716), SIMDE_POLY16_C(35183) } },
};
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_vuzp2_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_vuzp2_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_vuzp2q_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(222), SIMDE_POLY8_C(236), SIMDE_POLY8_C(203), SIMDE_POLY8_C(186), SIMDE_POLY8_C(216), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(216),
SIMDE_POLY8_C(199), SIMDE_POLY8_C(141), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(129), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(113), SIMDE_POLY8_C(215), SIMDE_POLY8_C( 37) },
{ SIMDE_POLY8_C(103), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 35), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(244), SIMDE_POLY8_C(217),
SIMDE_POLY8_C( 30), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(106), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 90), SIMDE_POLY8_C(182), SIMDE_POLY8_C(233), SIMDE_POLY8_C( 56) },
{ SIMDE_POLY8_C(236), SIMDE_POLY8_C(186), SIMDE_POLY8_C(218), SIMDE_POLY8_C(216), SIMDE_POLY8_C(141), SIMDE_POLY8_C(129), SIMDE_POLY8_C(113), SIMDE_POLY8_C( 37),
SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 35), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(217), SIMDE_POLY8_C( 82), SIMDE_POLY8_C(233), SIMDE_POLY8_C(182), SIMDE_POLY8_C( 56) } },
{ { SIMDE_POLY8_C(162), SIMDE_POLY8_C(180), SIMDE_POLY8_C(242), SIMDE_POLY8_C(122), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 86),
SIMDE_POLY8_C(215), SIMDE_POLY8_C(170), SIMDE_POLY8_C(215), SIMDE_POLY8_C(226), SIMDE_POLY8_C( 27), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(131) },
{ SIMDE_POLY8_C( 6), SIMDE_POLY8_C(229), SIMDE_POLY8_C(166), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 20), SIMDE_POLY8_C(155), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 50),
SIMDE_POLY8_C(237), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(127), SIMDE_POLY8_C(154) },
{ SIMDE_POLY8_C(180), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(170), SIMDE_POLY8_C(226), SIMDE_POLY8_C(175), SIMDE_POLY8_C(131),
SIMDE_POLY8_C(229), SIMDE_POLY8_C(254), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(154) } },
{ { SIMDE_POLY8_C(185), SIMDE_POLY8_C(113), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(187), SIMDE_POLY8_C(104), SIMDE_POLY8_C(159), SIMDE_POLY8_C(146),
SIMDE_POLY8_C( 18), SIMDE_POLY8_C(118), SIMDE_POLY8_C(116), SIMDE_POLY8_C( 45), SIMDE_POLY8_C( 37), SIMDE_POLY8_C(124), SIMDE_POLY8_C(176), SIMDE_POLY8_C( 44) },
{ SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 42), SIMDE_POLY8_C(117), SIMDE_POLY8_C(242), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(168), SIMDE_POLY8_C(223),
SIMDE_POLY8_C( 69), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(201), SIMDE_POLY8_C(166), SIMDE_POLY8_C(216), SIMDE_POLY8_C(130) },
{ SIMDE_POLY8_C(113), SIMDE_POLY8_C( 72), SIMDE_POLY8_C(104), SIMDE_POLY8_C(146), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(124), SIMDE_POLY8_C( 44),
SIMDE_POLY8_C( 87), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 2), SIMDE_POLY8_C(223), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 61), SIMDE_POLY8_C(166), SIMDE_POLY8_C(130) } },
{ { SIMDE_POLY8_C( 24), SIMDE_POLY8_C(237), SIMDE_POLY8_C(203), SIMDE_POLY8_C(211), SIMDE_POLY8_C( 85), SIMDE_POLY8_C(106), SIMDE_POLY8_C(102), SIMDE_POLY8_C(103),
SIMDE_POLY8_C(224), SIMDE_POLY8_C(218), SIMDE_POLY8_C(148), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(183) },
{ SIMDE_POLY8_C(156), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(142), SIMDE_POLY8_C( 95), SIMDE_POLY8_C(213), SIMDE_POLY8_C(109), SIMDE_POLY8_C(164),
SIMDE_POLY8_C(153), SIMDE_POLY8_C(148), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(185), SIMDE_POLY8_C(228), SIMDE_POLY8_C( 83) },
{ SIMDE_POLY8_C(237), SIMDE_POLY8_C(211), SIMDE_POLY8_C(106), SIMDE_POLY8_C(103), SIMDE_POLY8_C(218), SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 69), SIMDE_POLY8_C(183),
SIMDE_POLY8_C( 92), SIMDE_POLY8_C(142), SIMDE_POLY8_C(213), SIMDE_POLY8_C(164), SIMDE_POLY8_C(148), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 83) } },
{ { SIMDE_POLY8_C(166), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 38), SIMDE_POLY8_C(251), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(140), SIMDE_POLY8_C( 98), SIMDE_POLY8_C(250),
SIMDE_POLY8_C(103), SIMDE_POLY8_C(247), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(117), SIMDE_POLY8_C(216) },
{ SIMDE_POLY8_C(142), SIMDE_POLY8_C(162), SIMDE_POLY8_C(102), SIMDE_POLY8_C(237), SIMDE_POLY8_C(119), SIMDE_POLY8_C(211), SIMDE_POLY8_C(145), SIMDE_POLY8_C( 16),
SIMDE_POLY8_C(104), SIMDE_POLY8_C(115), SIMDE_POLY8_C(114), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(246), SIMDE_POLY8_C(211) },
{ SIMDE_POLY8_C(175), SIMDE_POLY8_C(251), SIMDE_POLY8_C(140), SIMDE_POLY8_C(250), SIMDE_POLY8_C(247), SIMDE_POLY8_C(189), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(216),
SIMDE_POLY8_C(162), SIMDE_POLY8_C(237), SIMDE_POLY8_C(211), SIMDE_POLY8_C( 16), SIMDE_POLY8_C(115), SIMDE_POLY8_C(163), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(211) } },
{ { SIMDE_POLY8_C( 6), SIMDE_POLY8_C( 28), SIMDE_POLY8_C(206), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(169), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 16),
SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(205), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(218) },
{ SIMDE_POLY8_C(228), SIMDE_POLY8_C(162), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 91), SIMDE_POLY8_C(117), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(107), SIMDE_POLY8_C(221),
SIMDE_POLY8_C(204), SIMDE_POLY8_C(221), SIMDE_POLY8_C(128), SIMDE_POLY8_C(248), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(118), SIMDE_POLY8_C(203), SIMDE_POLY8_C( 58) },
{ SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 16), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 66), SIMDE_POLY8_C(218),
SIMDE_POLY8_C(162), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(221), SIMDE_POLY8_C(221), SIMDE_POLY8_C(248), SIMDE_POLY8_C(118), SIMDE_POLY8_C( 58) } },
{ { SIMDE_POLY8_C(147), SIMDE_POLY8_C(154), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(203), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(243),
SIMDE_POLY8_C(140), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(216), SIMDE_POLY8_C( 92), SIMDE_POLY8_C(147), SIMDE_POLY8_C(178), SIMDE_POLY8_C( 64) },
{ SIMDE_POLY8_C( 53), SIMDE_POLY8_C(121), SIMDE_POLY8_C(156), SIMDE_POLY8_C(170), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(136), SIMDE_POLY8_C(158),
SIMDE_POLY8_C(229), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(127), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 18) },
{ SIMDE_POLY8_C(154), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(115), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 25), SIMDE_POLY8_C(216), SIMDE_POLY8_C(147), SIMDE_POLY8_C( 64),
SIMDE_POLY8_C(121), SIMDE_POLY8_C(170), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 18) } },
{ { SIMDE_POLY8_C(252), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(199), SIMDE_POLY8_C( 31), SIMDE_POLY8_C(154), SIMDE_POLY8_C(186), SIMDE_POLY8_C(172),
SIMDE_POLY8_C(179), SIMDE_POLY8_C( 17), SIMDE_POLY8_C(132), SIMDE_POLY8_C( 15), SIMDE_POLY8_C(164), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(217) },
{ SIMDE_POLY8_C(175), SIMDE_POLY8_C(236), SIMDE_POLY8_C(132), SIMDE_POLY8_C(130), SIMDE_POLY8_C(243), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(216),
SIMDE_POLY8_C( 20), SIMDE_POLY8_C(183), SIMDE_POLY8_C(241), SIMDE_POLY8_C(147), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(165), SIMDE_POLY8_C( 22) },
{ SIMDE_POLY8_C(172), SIMDE_POLY8_C(199), SIMDE_POLY8_C(154), SIMDE_POLY8_C(172), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(217),
SIMDE_POLY8_C(236), SIMDE_POLY8_C(130), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(216), SIMDE_POLY8_C(183), SIMDE_POLY8_C(147), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 22) } },
};
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_vuzp2q_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_vuzp2q_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_vuzp2q_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(37226), SIMDE_POLY16_C(57568), SIMDE_POLY16_C(51742), SIMDE_POLY16_C(48634), SIMDE_POLY16_C(62066), SIMDE_POLY16_C( 8229), SIMDE_POLY16_C(12583), SIMDE_POLY16_C(19540) },
{ SIMDE_POLY16_C(48673), SIMDE_POLY16_C(18245), SIMDE_POLY16_C(29777), SIMDE_POLY16_C(48054), SIMDE_POLY16_C(41040), SIMDE_POLY16_C(22301), SIMDE_POLY16_C(43109), SIMDE_POLY16_C(53223) },
{ SIMDE_POLY16_C(57568), SIMDE_POLY16_C(48634), SIMDE_POLY16_C( 8229), SIMDE_POLY16_C(19540), SIMDE_POLY16_C(18245), SIMDE_POLY16_C(48054), SIMDE_POLY16_C(22301), SIMDE_POLY16_C(53223) } },
{ { SIMDE_POLY16_C(51001), SIMDE_POLY16_C(22448), SIMDE_POLY16_C(43665), SIMDE_POLY16_C( 1044), SIMDE_POLY16_C(14748), SIMDE_POLY16_C(49956), SIMDE_POLY16_C(31082), SIMDE_POLY16_C(35599) },
{ SIMDE_POLY16_C(21559), SIMDE_POLY16_C(35283), SIMDE_POLY16_C(35273), SIMDE_POLY16_C( 6468), SIMDE_POLY16_C(25129), SIMDE_POLY16_C(36465), SIMDE_POLY16_C(22538), SIMDE_POLY16_C(17246) },
{ SIMDE_POLY16_C(22448), SIMDE_POLY16_C( 1044), SIMDE_POLY16_C(49956), SIMDE_POLY16_C(35599), SIMDE_POLY16_C(35283), SIMDE_POLY16_C( 6468), SIMDE_POLY16_C(36465), SIMDE_POLY16_C(17246) } },
{ { SIMDE_POLY16_C( 3615), SIMDE_POLY16_C(45466), SIMDE_POLY16_C(44728), SIMDE_POLY16_C(21941), SIMDE_POLY16_C(55783), SIMDE_POLY16_C(21016), SIMDE_POLY16_C(10322), SIMDE_POLY16_C(35549) },
{ SIMDE_POLY16_C(45180), SIMDE_POLY16_C(17683), SIMDE_POLY16_C(22329), SIMDE_POLY16_C(25183), SIMDE_POLY16_C(53433), SIMDE_POLY16_C(50161), SIMDE_POLY16_C(20264), SIMDE_POLY16_C(18182) },
{ SIMDE_POLY16_C(45466), SIMDE_POLY16_C(21941), SIMDE_POLY16_C(21016), SIMDE_POLY16_C(35549), SIMDE_POLY16_C(17683), SIMDE_POLY16_C(25183), SIMDE_POLY16_C(50161), SIMDE_POLY16_C(18182) } },
{ { SIMDE_POLY16_C(41053), SIMDE_POLY16_C( 5624), SIMDE_POLY16_C(44366), SIMDE_POLY16_C(13930), SIMDE_POLY16_C(33671), SIMDE_POLY16_C(55688), SIMDE_POLY16_C(26027), SIMDE_POLY16_C(10083) },
{ SIMDE_POLY16_C(30230), SIMDE_POLY16_C(20333), SIMDE_POLY16_C(52430), SIMDE_POLY16_C(34738), SIMDE_POLY16_C(41884), SIMDE_POLY16_C(50251), SIMDE_POLY16_C(20978), SIMDE_POLY16_C(20235) },
{ SIMDE_POLY16_C( 5624), SIMDE_POLY16_C(13930), SIMDE_POLY16_C(55688), SIMDE_POLY16_C(10083), SIMDE_POLY16_C(20333), SIMDE_POLY16_C(34738), SIMDE_POLY16_C(50251), SIMDE_POLY16_C(20235) } },
{ { SIMDE_POLY16_C( 1266), SIMDE_POLY16_C(16484), SIMDE_POLY16_C(53169), SIMDE_POLY16_C(14454), SIMDE_POLY16_C(65106), SIMDE_POLY16_C(64786), SIMDE_POLY16_C(30052), SIMDE_POLY16_C(31268) },
{ SIMDE_POLY16_C(37356), SIMDE_POLY16_C(47817), SIMDE_POLY16_C(31581), SIMDE_POLY16_C(63809), SIMDE_POLY16_C(35870), SIMDE_POLY16_C( 4285), SIMDE_POLY16_C(51678), SIMDE_POLY16_C(53343) },
{ SIMDE_POLY16_C(16484), SIMDE_POLY16_C(14454), SIMDE_POLY16_C(64786), SIMDE_POLY16_C(31268), SIMDE_POLY16_C(47817), SIMDE_POLY16_C(63809), SIMDE_POLY16_C( 4285), SIMDE_POLY16_C(53343) } },
{ { SIMDE_POLY16_C(50381), SIMDE_POLY16_C(32272), SIMDE_POLY16_C(34707), SIMDE_POLY16_C(58807), SIMDE_POLY16_C(51589), SIMDE_POLY16_C(59874), SIMDE_POLY16_C( 1598), SIMDE_POLY16_C(10851) },
{ SIMDE_POLY16_C(11672), SIMDE_POLY16_C(62948), SIMDE_POLY16_C( 9896), SIMDE_POLY16_C(51183), SIMDE_POLY16_C(44210), SIMDE_POLY16_C(37079), SIMDE_POLY16_C(14197), SIMDE_POLY16_C(16992) },
{ SIMDE_POLY16_C(32272), SIMDE_POLY16_C(58807), SIMDE_POLY16_C(59874), SIMDE_POLY16_C(10851), SIMDE_POLY16_C(62948), SIMDE_POLY16_C(51183), SIMDE_POLY16_C(37079), SIMDE_POLY16_C(16992) } },
{ { SIMDE_POLY16_C(29179), SIMDE_POLY16_C(36545), SIMDE_POLY16_C(30968), SIMDE_POLY16_C(32115), SIMDE_POLY16_C(21825), SIMDE_POLY16_C(32615), SIMDE_POLY16_C(51803), SIMDE_POLY16_C(62378) },
{ SIMDE_POLY16_C(36599), SIMDE_POLY16_C(41193), SIMDE_POLY16_C(55476), SIMDE_POLY16_C(26471), SIMDE_POLY16_C(16004), SIMDE_POLY16_C(64247), SIMDE_POLY16_C(22645), SIMDE_POLY16_C(28732) },
{ SIMDE_POLY16_C(36545), SIMDE_POLY16_C(32115), SIMDE_POLY16_C(32615), SIMDE_POLY16_C(62378), SIMDE_POLY16_C(41193), SIMDE_POLY16_C(26471), SIMDE_POLY16_C(64247), SIMDE_POLY16_C(28732) } },
{ { SIMDE_POLY16_C(64969), SIMDE_POLY16_C(49662), SIMDE_POLY16_C(29045), SIMDE_POLY16_C(46654), SIMDE_POLY16_C(42438), SIMDE_POLY16_C( 8758), SIMDE_POLY16_C(57456), SIMDE_POLY16_C(26389) },
{ SIMDE_POLY16_C(65134), SIMDE_POLY16_C( 8967), SIMDE_POLY16_C(28374), SIMDE_POLY16_C(23434), SIMDE_POLY16_C(33197), SIMDE_POLY16_C( 8789), SIMDE_POLY16_C(37337), SIMDE_POLY16_C(41619) },
{ SIMDE_POLY16_C(49662), SIMDE_POLY16_C(46654), SIMDE_POLY16_C( 8758), SIMDE_POLY16_C(26389), SIMDE_POLY16_C( 8967), SIMDE_POLY16_C(23434), SIMDE_POLY16_C( 8789), SIMDE_POLY16_C(41619) } },
};
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_vuzp2q_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_vuzp2q_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_vuzp2q_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(10128971028910510737), SIMDE_POLY64_C(17729527479315999417) },
{ SIMDE_POLY64_C( 3335331942345100554), SIMDE_POLY64_C(11269845798600382417) },
{ SIMDE_POLY64_C(17729527479315999417), SIMDE_POLY64_C(11269845798600382417) } },
{ { SIMDE_POLY64_C(16475121993802503579), SIMDE_POLY64_C(14326970468804119694) },
{ SIMDE_POLY64_C(11373276584639549932), SIMDE_POLY64_C(18139705864536774166) },
{ SIMDE_POLY64_C(14326970468804119694), SIMDE_POLY64_C(18139705864536774166) } },
{ { SIMDE_POLY64_C( 9372473455084277507), SIMDE_POLY64_C( 3532002181234206082) },
{ SIMDE_POLY64_C(14910203097960200578), SIMDE_POLY64_C(16492371921639289732) },
{ SIMDE_POLY64_C( 3532002181234206082), SIMDE_POLY64_C(16492371921639289732) } },
{ { SIMDE_POLY64_C( 3220394418092766011), SIMDE_POLY64_C(14069084986605703112) },
{ SIMDE_POLY64_C( 5381235056558806823), SIMDE_POLY64_C( 9544269215124331695) },
{ SIMDE_POLY64_C(14069084986605703112), SIMDE_POLY64_C( 9544269215124331695) } },
{ { SIMDE_POLY64_C( 8203135926171567617), SIMDE_POLY64_C(15454311783178649971) },
{ SIMDE_POLY64_C( 3883619683466119637), SIMDE_POLY64_C( 2579500605500691200) },
{ SIMDE_POLY64_C(15454311783178649971), SIMDE_POLY64_C( 2579500605500691200) } },
{ { SIMDE_POLY64_C( 6330836097350664128), SIMDE_POLY64_C(17108193226076674790) },
{ SIMDE_POLY64_C( 9640075422859797005), SIMDE_POLY64_C( 9927792619412164225) },
{ SIMDE_POLY64_C(17108193226076674790), SIMDE_POLY64_C( 9927792619412164225) } },
{ { SIMDE_POLY64_C( 2401771254059341082), SIMDE_POLY64_C(17306527302493298728) },
{ SIMDE_POLY64_C(11839765661985519172), SIMDE_POLY64_C(15144777308092964314) },
{ SIMDE_POLY64_C(17306527302493298728), SIMDE_POLY64_C(15144777308092964314) } },
{ { SIMDE_POLY64_C( 1656802321261076643), SIMDE_POLY64_C( 2042527392187463044) },
{ SIMDE_POLY64_C( 144455106247973689), SIMDE_POLY64_C(18076835750634408275) },
{ SIMDE_POLY64_C( 2042527392187463044), SIMDE_POLY64_C(18076835750634408275) } },
};
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_vuzp2q_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_vuzp2q_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(vuzp2_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_s16)
@ -803,6 +1506,7 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_s8)
@ -813,6 +1517,12 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vuzp2q_p64)
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"