#define SIMDE_TEST_ARM_NEON_INSN zip1
#include <test/arm/neon/test-neon.h>
#include <simde/arm/neon/zip1.h>
static int
test_simde_vzip1_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(8.60), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(5.60), SIMDE_FLOAT16_VALUE(5.30) },
{ SIMDE_FLOAT16_VALUE(6.70), SIMDE_FLOAT16_VALUE(-8.40), SIMDE_FLOAT16_VALUE(-9.00), SIMDE_FLOAT16_VALUE(9.10) },
{ SIMDE_FLOAT16_VALUE(8.60), SIMDE_FLOAT16_VALUE(6.70), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(-8.40) } },
{ { SIMDE_FLOAT16_VALUE(8.50), SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(-5.40) },
{ SIMDE_FLOAT16_VALUE(-6.10), SIMDE_FLOAT16_VALUE(-6.70), SIMDE_FLOAT16_VALUE(-6.00), SIMDE_FLOAT16_VALUE(7.10) },
{ SIMDE_FLOAT16_VALUE(8.50), SIMDE_FLOAT16_VALUE(-6.10), SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(-6.70) } },
{ { SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(8.30), SIMDE_FLOAT16_VALUE(-7.80) },
{ SIMDE_FLOAT16_VALUE(-0.10), SIMDE_FLOAT16_VALUE(-1.00), SIMDE_FLOAT16_VALUE(6.50), SIMDE_FLOAT16_VALUE(-2.70) },
{ SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-0.10), SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(-1.00) } },
{ { SIMDE_FLOAT16_VALUE(8.40), SIMDE_FLOAT16_VALUE(-1.90), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(2.40) },
{ SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-2.90), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(0.30) },
{ SIMDE_FLOAT16_VALUE(8.40), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-1.90), SIMDE_FLOAT16_VALUE(-2.90) } },
{ { SIMDE_FLOAT16_VALUE(-5.70), SIMDE_FLOAT16_VALUE(-7.00), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(-3.20) },
{ SIMDE_FLOAT16_VALUE(5.80), SIMDE_FLOAT16_VALUE(-5.60), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(-0.40) },
{ SIMDE_FLOAT16_VALUE(-5.70), SIMDE_FLOAT16_VALUE(5.80), SIMDE_FLOAT16_VALUE(-7.00), SIMDE_FLOAT16_VALUE(-5.60) } },
{ { SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(2.00), SIMDE_FLOAT16_VALUE(9.90), SIMDE_FLOAT16_VALUE(3.10) },
{ SIMDE_FLOAT16_VALUE(-5.80), SIMDE_FLOAT16_VALUE(1.10), SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(7.40) },
{ SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(-5.80), SIMDE_FLOAT16_VALUE(2.00), SIMDE_FLOAT16_VALUE(1.10) } },
{ { SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-1.60), SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(-9.10) },
{ SIMDE_FLOAT16_VALUE(-7.20), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(2.70) },
{ SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-7.20), SIMDE_FLOAT16_VALUE(-1.60), SIMDE_FLOAT16_VALUE(-2.60) } },
{ { SIMDE_FLOAT16_VALUE(5.80), SIMDE_FLOAT16_VALUE(7.10), SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(3.30) },
{ SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(-4.30) },
{ SIMDE_FLOAT16_VALUE(5.80), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(7.10), SIMDE_FLOAT16_VALUE(1.20) } },
{ { SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(-8.10), SIMDE_FLOAT16_VALUE(-9.90) },
{ SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(8.40), SIMDE_FLOAT16_VALUE(-6.70), SIMDE_FLOAT16_VALUE(-8.70) },
{ SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(8.40) } },
{ { SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(9.90), SIMDE_FLOAT16_VALUE(9.70), SIMDE_FLOAT16_VALUE(-6.20) },
{ SIMDE_FLOAT16_VALUE(-5.60), SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(9.70), SIMDE_FLOAT16_VALUE(4.20) },
{ SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(-5.60), SIMDE_FLOAT16_VALUE(9.90), SIMDE_FLOAT16_VALUE(9.30) } }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4_t a = simde_vld1_f16(test_vec[i].a);
simde_float16x4_t b = simde_vld1_f16(test_vec[i].b);
simde_float16x4_t r = simde_vzip1_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_vzip1_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_vzip1_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float32 a[2];
simde_float32 b[2];
simde_float32 r[2];
} test_vec[] = {
{ { SIMDE_FLOAT32_C( -594.82), SIMDE_FLOAT32_C( -36.31) },
{ SIMDE_FLOAT32_C( -44.16), SIMDE_FLOAT32_C( -416.70) },
{ SIMDE_FLOAT32_C( -594.82), SIMDE_FLOAT32_C( -44.16) } },
{ { SIMDE_FLOAT32_C( -546.79), SIMDE_FLOAT32_C( 545.60) },
{ SIMDE_FLOAT32_C( -407.46), SIMDE_FLOAT32_C( 803.36) },
{ SIMDE_FLOAT32_C( -546.79), SIMDE_FLOAT32_C( -407.46) } },
{ { SIMDE_FLOAT32_C( -396.25), SIMDE_FLOAT32_C( -289.22) },
{ SIMDE_FLOAT32_C( 158.83), SIMDE_FLOAT32_C( 797.31) },
{ SIMDE_FLOAT32_C( -396.25), SIMDE_FLOAT32_C( 158.83) } },
{ { SIMDE_FLOAT32_C( 984.23), SIMDE_FLOAT32_C( -68.91) },
{ SIMDE_FLOAT32_C( 830.88), SIMDE_FLOAT32_C( -995.28) },
{ SIMDE_FLOAT32_C( 984.23), SIMDE_FLOAT32_C( 830.88) } },
{ { SIMDE_FLOAT32_C( -188.76), SIMDE_FLOAT32_C( 262.91) },
{ SIMDE_FLOAT32_C( 778.87), SIMDE_FLOAT32_C( -450.18) },
{ SIMDE_FLOAT32_C( -188.76), SIMDE_FLOAT32_C( 778.87) } },
{ { SIMDE_FLOAT32_C( 915.01), SIMDE_FLOAT32_C( 593.75) },
{ SIMDE_FLOAT32_C( 831.12), SIMDE_FLOAT32_C( -136.74) },
{ SIMDE_FLOAT32_C( 915.01), SIMDE_FLOAT32_C( 831.12) } },
{ { SIMDE_FLOAT32_C( 353.93), SIMDE_FLOAT32_C( 120.70) },
{ SIMDE_FLOAT32_C( -711.16), SIMDE_FLOAT32_C( -974.32) },
{ SIMDE_FLOAT32_C( 353.93), SIMDE_FLOAT32_C( -711.16) } },
{ { SIMDE_FLOAT32_C( -502.47), SIMDE_FLOAT32_C( 570.22) },
{ SIMDE_FLOAT32_C( 392.65), SIMDE_FLOAT32_C( -97.29) },
{ SIMDE_FLOAT32_C( -502.47), SIMDE_FLOAT32_C( 392.65) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x2_t a = simde_vld1_f32(test_vec[i].a);
simde_float32x2_t b = simde_vld1_f32(test_vec[i].b);
simde_float32x2_t r = simde_vzip1_f32(a, b);
simde_test_arm_neon_assert_equal_f32x2(r, simde_vld1_f32(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float32x2_t a = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
simde_float32x2_t b = simde_test_arm_neon_random_f32x2(-1000.0f, 1000.0f);
simde_float32x2_t r = simde_vzip1_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_vzip1_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[8];
int8_t b[8];
int8_t r[8];
} test_vec[] = {
{ { INT8_C( 75), INT8_C( 64), INT8_C( 23), -INT8_C( 70), -INT8_C( 20), -INT8_C( 62), -INT8_C( 104), INT8_C( 0) },
{ INT8_C( 77), -INT8_C( 69), -INT8_C( 118), INT8_C( 40), -INT8_C( 21), INT8_C( 81), INT8_C( 79), -INT8_C( 43) },
{ INT8_C( 75), INT8_C( 77), INT8_C( 64), -INT8_C( 69), INT8_C( 23), -INT8_C( 118), -INT8_C( 70), INT8_C( 40) } },
{ { -INT8_C( 10), INT8_C( 47), -INT8_C( 91), -INT8_C( 90), INT8_C( 57), -INT8_C( 23), -INT8_C( 71), -INT8_C( 7) },
{ -INT8_C( 83), INT8_C( 112), INT8_C( 83), -INT8_C( 15), INT8_C( 26), -INT8_C( 11), -INT8_C( 125), INT8_C( 101) },
{ -INT8_C( 10), -INT8_C( 83), INT8_C( 47), INT8_C( 112), -INT8_C( 91), INT8_C( 83), -INT8_C( 90), -INT8_C( 15) } },
{ { INT8_C( 53), -INT8_C( 102), INT8_C( 32), INT8_C( 33), INT8_C( 93), -INT8_C( 72), INT8_C( 33), -INT8_C( 86) },
{ INT8_C( 115), -INT8_C( 84), -INT8_C( 46), INT8_C( 95), -INT8_C( 3), INT8_C( 33), INT8_C( 52), -INT8_C( 13) },
{ INT8_C( 53), INT8_C( 115), -INT8_C( 102), -INT8_C( 84), INT8_C( 32), -INT8_C( 46), INT8_C( 33), INT8_C( 95) } },
{ { INT8_C( 81), -INT8_C( 39), -INT8_C( 103), -INT8_C( 118), -INT8_C( 62), INT8_C( 82), -INT8_C( 125), INT8_C( 111) },
{ -INT8_C( 61), -INT8_C( 42), INT8_C( 97), -INT8_C( 35), -INT8_C( 53), -INT8_C( 28), INT8_C( 67), INT8_C( 1) },
{ INT8_C( 81), -INT8_C( 61), -INT8_C( 39), -INT8_C( 42), -INT8_C( 103), INT8_C( 97), -INT8_C( 118), -INT8_C( 35) } },
{ { INT8_MAX, INT8_C( 99), INT8_C( 34), -INT8_C( 36), INT8_C( 27), INT8_C( 68), -INT8_C( 122), -INT8_C( 114) },
{ -INT8_C( 16), INT8_C( 88), -INT8_C( 19), -INT8_C( 19), INT8_C( 122), INT8_C( 33), -INT8_C( 31), -INT8_C( 53) },
{ INT8_MAX, -INT8_C( 16), INT8_C( 99), INT8_C( 88), INT8_C( 34), -INT8_C( 19), -INT8_C( 36), -INT8_C( 19) } },
{ { -INT8_C( 5), INT8_C( 122), INT8_C( 85), -INT8_C( 67), -INT8_C( 51), -INT8_C( 40), INT8_C( 45), -INT8_C( 112) },
{ -INT8_C( 82), -INT8_C( 114), INT8_C( 109), INT8_C( 121), INT8_C( 114), -INT8_C( 80), INT8_C( 122), -INT8_C( 15) },
{ -INT8_C( 5), -INT8_C( 82), INT8_C( 122), -INT8_C( 114), INT8_C( 85), INT8_C( 109), -INT8_C( 67), INT8_C( 121) } },
{ { INT8_C( 19), -INT8_C( 99), -INT8_C( 51), INT8_C( 46), -INT8_C( 31), INT8_C( 83), -INT8_C( 67), -INT8_C( 47) },
{ -INT8_C( 84), -INT8_C( 86), -INT8_C( 66), INT8_C( 38), -INT8_C( 52), -INT8_C( 97), -INT8_C( 15), -INT8_C( 57) },
{ INT8_C( 19), -INT8_C( 84), -INT8_C( 99), -INT8_C( 86), -INT8_C( 51), -INT8_C( 66), INT8_C( 46), INT8_C( 38) } },
{ { INT8_C( 26), INT8_C( 70), -INT8_C( 124), -INT8_C( 25), INT8_C( 30), -INT8_C( 79), INT8_C( 119), -INT8_C( 52) },
{ INT8_C( 63), -INT8_C( 28), INT8_C( 69), -INT8_C( 78), -INT8_C( 107), -INT8_C( 64), -INT8_C( 93), -INT8_C( 88) },
{ INT8_C( 26), INT8_C( 63), INT8_C( 70), -INT8_C( 28), -INT8_C( 124), INT8_C( 69), -INT8_C( 25), -INT8_C( 78) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x8_t a = simde_vld1_s8(test_vec[i].a);
simde_int8x8_t b = simde_vld1_s8(test_vec[i].b);
simde_int8x8_t r = simde_vzip1_s8(a, b);
simde_test_arm_neon_assert_equal_i8x8(r, simde_vld1_s8(test_vec[i].r));
}
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_vzip1_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_vzip1_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[4];
int16_t b[4];
int16_t r[4];
} test_vec[] = {
{ { INT16_C( 6394), -INT16_C( 7304), INT16_C( 4761), -INT16_C( 23200) },
{ INT16_C( 27245), INT16_C( 9875), -INT16_C( 24091), -INT16_C( 25797) },
{ INT16_C( 6394), INT16_C( 27245), -INT16_C( 7304), INT16_C( 9875) } },
{ { -INT16_C( 916), -INT16_C( 24207), -INT16_C( 2865), -INT16_C( 14036) },
{ -INT16_C( 31945), INT16_C( 23444), -INT16_C( 22348), -INT16_C( 20771) },
{ -INT16_C( 916), -INT16_C( 31945), -INT16_C( 24207), INT16_C( 23444) } },
{ { INT16_C( 21953), INT16_C( 23185), -INT16_C( 3736), -INT16_C( 10753) },
{ -INT16_C( 27812), INT16_C( 16891), INT16_C( 14132), -INT16_C( 24355) },
{ INT16_C( 21953), -INT16_C( 27812), INT16_C( 23185), INT16_C( 16891) } },
{ { INT16_C( 20019), INT16_C( 834), INT16_C( 28226), INT16_C( 31436) },
{ INT16_C( 24817), -INT16_C( 23083), -INT16_C( 19959), -INT16_C( 13741) },
{ INT16_C( 20019), INT16_C( 24817), INT16_C( 834), -INT16_C( 23083) } },
{ { -INT16_C( 6905), INT16_C( 28452), INT16_C( 9174), INT16_C( 12868) },
{ INT16_C( 16566), -INT16_C( 5260), INT16_C( 20855), -INT16_C( 21877) },
{ -INT16_C( 6905), INT16_C( 16566), INT16_C( 28452), -INT16_C( 5260) } },
{ { -INT16_C( 12897), -INT16_C( 7763), INT16_C( 31036), INT16_C( 11611) },
{ INT16_C( 12506), -INT16_C( 7213), INT16_C( 9954), -INT16_C( 5459) },
{ -INT16_C( 12897), INT16_C( 12506), -INT16_C( 7763), -INT16_C( 7213) } },
{ { -INT16_C( 12021), -INT16_C( 7591), -INT16_C( 24844), -INT16_C( 21740) },
{ -INT16_C( 30498), INT16_C( 21910), INT16_C( 8665), INT16_C( 30975) },
{ -INT16_C( 12021), -INT16_C( 30498), -INT16_C( 7591), INT16_C( 21910) } },
{ { -INT16_C( 21009), INT16_C( 11098), -INT16_C( 19162), INT16_C( 88) },
{ INT16_C( 11238), -INT16_C( 14109), -INT16_C( 28590), INT16_C( 23986) },
{ -INT16_C( 21009), INT16_C( 11238), INT16_C( 11098), -INT16_C( 14109) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x4_t a = simde_vld1_s16(test_vec[i].a);
simde_int16x4_t b = simde_vld1_s16(test_vec[i].b);
simde_int16x4_t r = simde_vzip1_s16(a, b);
simde_test_arm_neon_assert_equal_i16x4(r, simde_vld1_s16(test_vec[i].r));
}
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_vzip1_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_vzip1_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[2];
int32_t b[2];
int32_t r[2];
} test_vec[] = {
{ { INT32_C( 1426738482), INT32_C( 30050468) },
{ -INT32_C( 404588153), -INT32_C( 112205881) },
{ INT32_C( 1426738482), -INT32_C( 404588153) } },
{ { -INT32_C( 1485126862), -INT32_C( 789445372) },
{ -INT32_C( 141244937), INT32_C( 1236357399) },
{ -INT32_C( 1485126862), -INT32_C( 141244937) } },
{ { INT32_C( 1117699230), -INT32_C( 884774844) },
{ -INT32_C( 1447942686), INT32_C( 916586756) },
{ INT32_C( 1117699230), -INT32_C( 1447942686) } },
{ { -INT32_C( 908255803), INT32_C( 429510690) },
{ -INT32_C( 1408225899), INT32_C( 485868158) },
{ -INT32_C( 908255803), -INT32_C( 1408225899) } },
{ { -INT32_C( 1033988994), -INT32_C( 561143300) },
{ -INT32_C( 897105978), INT32_C( 83962432) },
{ -INT32_C( 1033988994), -INT32_C( 897105978) } },
{ { INT32_C( 1775164999), INT32_C( 1132685230) },
{ INT32_C( 317690772), -INT32_C( 751901355) },
{ INT32_C( 1775164999), INT32_C( 317690772) } },
{ { INT32_C( 1972735097), -INT32_C( 212590035) },
{ -INT32_C( 1564550303), INT32_C( 1286061829) },
{ INT32_C( 1972735097), -INT32_C( 1564550303) } },
{ { INT32_C( 1287026333), INT32_C( 1921989085) },
{ INT32_C( 579108812), -INT32_C( 571100316) },
{ INT32_C( 1287026333), INT32_C( 579108812) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x2_t a = simde_vld1_s32(test_vec[i].a);
simde_int32x2_t b = simde_vld1_s32(test_vec[i].b);
simde_int32x2_t r = simde_vzip1_s32(a, b);
simde_test_arm_neon_assert_equal_i32x2(r, simde_vld1_s32(test_vec[i].r));
}
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_vzip1_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_vzip1_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[8];
uint8_t b[8];
uint8_t r[8];
} test_vec[] = {
{ { UINT8_C(207), UINT8_C(175), UINT8_C( 76), UINT8_C(120), UINT8_C(200), UINT8_C(106), UINT8_C(207), UINT8_C(167) },
{ UINT8_C( 5), UINT8_C( 22), UINT8_C(155), UINT8_C( 62), UINT8_C(249), UINT8_C(184), UINT8_C(197), UINT8_C(224) },
{ UINT8_C(207), UINT8_C( 5), UINT8_C(175), UINT8_C( 22), UINT8_C( 76), UINT8_C(155), UINT8_C(120), UINT8_C( 62) } },
{ { UINT8_C( 52), UINT8_C( 5), UINT8_C( 80), UINT8_C( 18), UINT8_C(180), UINT8_C( 4), UINT8_C( 6), UINT8_C(243) },
{ UINT8_C(213), UINT8_C( 60), UINT8_C(131), UINT8_C( 8), UINT8_C(202), UINT8_C( 69), UINT8_C( 73), UINT8_C(154) },
{ UINT8_C( 52), UINT8_C(213), UINT8_C( 5), UINT8_C( 60), UINT8_C( 80), UINT8_C(131), UINT8_C( 18), UINT8_C( 8) } },
{ { UINT8_C(244), UINT8_C(149), UINT8_C( 18), UINT8_C(188), UINT8_C( 0), UINT8_C(225), UINT8_C(100), UINT8_C( 5) },
{ UINT8_C(248), UINT8_MAX, UINT8_C( 68), UINT8_C(241), UINT8_C(183), UINT8_C( 9), UINT8_C(209), UINT8_C(235) },
{ UINT8_C(244), UINT8_C(248), UINT8_C(149), UINT8_MAX, UINT8_C( 18), UINT8_C( 68), UINT8_C(188), UINT8_C(241) } },
{ { UINT8_C( 14), UINT8_C( 33), UINT8_C(254), UINT8_C(195), UINT8_C( 37), UINT8_C( 4), UINT8_C(182), UINT8_C(250) },
{ UINT8_C( 65), UINT8_C( 57), UINT8_C( 3), UINT8_C( 11), UINT8_C(126), UINT8_C( 76), UINT8_C(165), UINT8_C(114) },
{ UINT8_C( 14), UINT8_C( 65), UINT8_C( 33), UINT8_C( 57), UINT8_C(254), UINT8_C( 3), UINT8_C(195), UINT8_C( 11) } },
{ { UINT8_C(225), UINT8_C(184), UINT8_C( 47), UINT8_C(225), UINT8_C(153), UINT8_C(147), UINT8_C(231), UINT8_C(145) },
{ UINT8_C(146), UINT8_C( 43), UINT8_C(131), UINT8_C( 73), UINT8_C( 52), UINT8_C( 84), UINT8_C( 52), UINT8_C( 67) },
{ UINT8_C(225), UINT8_C(146), UINT8_C(184), UINT8_C( 43), UINT8_C( 47), UINT8_C(131), UINT8_C(225), UINT8_C( 73) } },
{ { UINT8_C(118), UINT8_C( 50), UINT8_C( 6), UINT8_C(155), UINT8_C( 55), UINT8_C(188), UINT8_C(150), UINT8_C(120) },
{ UINT8_C(245), UINT8_C(153), UINT8_C(131), UINT8_C(116), UINT8_C(229), UINT8_C( 41), UINT8_C(230), UINT8_C(198) },
{ UINT8_C(118), UINT8_C(245), UINT8_C( 50), UINT8_C(153), UINT8_C( 6), UINT8_C(131), UINT8_C(155), UINT8_C(116) } },
{ { UINT8_C(225), UINT8_C( 21), UINT8_C(168), UINT8_C(122), UINT8_C(168), UINT8_C(143), UINT8_C( 12), UINT8_C( 58) },
{ UINT8_C(186), UINT8_C(143), UINT8_C(131), UINT8_C(238), UINT8_C(227), UINT8_C(184), UINT8_C( 49), UINT8_C( 89) },
{ UINT8_C(225), UINT8_C(186), UINT8_C( 21), UINT8_C(143), UINT8_C(168), UINT8_C(131), UINT8_C(122), UINT8_C(238) } },
{ { UINT8_C(234), UINT8_C( 55), UINT8_C(245), UINT8_C( 33), UINT8_C(243), UINT8_C(139), UINT8_C(153), UINT8_C(233) },
{ UINT8_C( 36), UINT8_C( 29), UINT8_C( 93), UINT8_C( 9), UINT8_C( 70), UINT8_C( 67), UINT8_C(207), UINT8_C( 39) },
{ UINT8_C(234), UINT8_C( 36), UINT8_C( 55), UINT8_C( 29), UINT8_C(245), UINT8_C( 93), UINT8_C( 33), UINT8_C( 9) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x8_t a = simde_vld1_u8(test_vec[i].a);
simde_uint8x8_t b = simde_vld1_u8(test_vec[i].b);
simde_uint8x8_t r = simde_vzip1_u8(a, b);
simde_test_arm_neon_assert_equal_u8x8(r, simde_vld1_u8(test_vec[i].r));
}
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_vzip1_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_vzip1_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[4];
uint16_t b[4];
uint16_t r[4];
} test_vec[] = {
{ { UINT16_C(54503), UINT16_C(20876), UINT16_C(27990), UINT16_C( 1388) },
{ UINT16_C( 5134), UINT16_C(61930), UINT16_C(11315), UINT16_C(24246) },
{ UINT16_C(54503), UINT16_C( 5134), UINT16_C(20876), UINT16_C(61930) } },
{ { UINT16_C(54834), UINT16_C(28009), UINT16_C( 5311), UINT16_C(11808) },
{ UINT16_C(44084), UINT16_C(65289), UINT16_C( 886), UINT16_C(24131) },
{ UINT16_C(54834), UINT16_C(44084), UINT16_C(28009), UINT16_C(65289) } },
{ { UINT16_C(53207), UINT16_C(11951), UINT16_C( 6972), UINT16_C(18995) },
{ UINT16_C( 7471), UINT16_C(25147), UINT16_C(61770), UINT16_C(31937) },
{ UINT16_C(53207), UINT16_C( 7471), UINT16_C(11951), UINT16_C(25147) } },
{ { UINT16_C(10951), UINT16_C(34537), UINT16_C( 2622), UINT16_C(29364) },
{ UINT16_C(48822), UINT16_C(11377), UINT16_C(46273), UINT16_C(39050) },
{ UINT16_C(10951), UINT16_C(48822), UINT16_C(34537), UINT16_C(11377) } },
{ { UINT16_C(14723), UINT16_C(49094), UINT16_C(63828), UINT16_C(33545) },
{ UINT16_C(17431), UINT16_C(25062), UINT16_C(42805), UINT16_C(64989) },
{ UINT16_C(14723), UINT16_C(17431), UINT16_C(49094), UINT16_C(25062) } },
{ { UINT16_C(51153), UINT16_C( 3971), UINT16_C(14545), UINT16_C(34689) },
{ UINT16_C(62198), UINT16_C(47027), UINT16_C(16039), UINT16_C(10831) },
{ UINT16_C(51153), UINT16_C(62198), UINT16_C( 3971), UINT16_C(47027) } },
{ { UINT16_C( 5751), UINT16_C(52458), UINT16_C(62223), UINT16_C( 9807) },
{ UINT16_C(13624), UINT16_C(28039), UINT16_C(26076), UINT16_C(44394) },
{ UINT16_C( 5751), UINT16_C(13624), UINT16_C(52458), UINT16_C(28039) } },
{ { UINT16_C(60972), UINT16_C(64956), UINT16_C(15654), UINT16_C( 7300) },
{ UINT16_C(14128), UINT16_C(55251), UINT16_C( 8821), UINT16_C(60673) },
{ UINT16_C(60972), UINT16_C(14128), UINT16_C(64956), UINT16_C(55251) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x4_t a = simde_vld1_u16(test_vec[i].a);
simde_uint16x4_t b = simde_vld1_u16(test_vec[i].b);
simde_uint16x4_t r = simde_vzip1_u16(a, b);
simde_test_arm_neon_assert_equal_u16x4(r, simde_vld1_u16(test_vec[i].r));
}
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_vzip1_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_vzip1_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[2];
uint32_t b[2];
uint32_t r[2];
} test_vec[] = {
{ { UINT32_C( 509442038), UINT32_C(1705505599) },
{ UINT32_C(1361533953), UINT32_C(2713165570) },
{ UINT32_C( 509442038), UINT32_C(1361533953) } },
{ { UINT32_C(1841080646), UINT32_C(1488848664) },
{ UINT32_C(1673216874), UINT32_C(1840895607) },
{ UINT32_C(1841080646), UINT32_C(1673216874) } },
{ { UINT32_C(2357990989), UINT32_C( 183644937) },
{ UINT32_C(2455443855), UINT32_C(4281537464) },
{ UINT32_C(2357990989), UINT32_C(2455443855) } },
{ { UINT32_C(3563909052), UINT32_C(1630350070) },
{ UINT32_C(3854887021), UINT32_C( 206732735) },
{ UINT32_C(3563909052), UINT32_C(3854887021) } },
{ { UINT32_C(2627329683), UINT32_C(2712046353) },
{ UINT32_C(1563624100), UINT32_C(3512493589) },
{ UINT32_C(2627329683), UINT32_C(1563624100) } },
{ { UINT32_C(1269221461), UINT32_C(1621939186) },
{ UINT32_C(2051371195), UINT32_C(2156369901) },
{ UINT32_C(1269221461), UINT32_C(2051371195) } },
{ { UINT32_C(2266767478), UINT32_C(1328071595) },
{ UINT32_C(3668728773), UINT32_C( 380307649) },
{ UINT32_C(2266767478), UINT32_C(3668728773) } },
{ { UINT32_C(3278000592), UINT32_C(3760393764) },
{ UINT32_C(1817864319), UINT32_C(1978524159) },
{ UINT32_C(3278000592), UINT32_C(1817864319) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x2_t a = simde_vld1_u32(test_vec[i].a);
simde_uint32x2_t b = simde_vld1_u32(test_vec[i].b);
simde_uint32x2_t r = simde_vzip1_u32(a, b);
simde_test_arm_neon_assert_equal_u32x2(r, simde_vld1_u32(test_vec[i].r));
}
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_vzip1_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_vzip1q_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(-3.60), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(9.50), SIMDE_FLOAT16_VALUE(3.20), SIMDE_FLOAT16_VALUE(-6.00), SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(0.20) },
{ SIMDE_FLOAT16_VALUE(7.00), SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(7.00), SIMDE_FLOAT16_VALUE(5.70), SIMDE_FLOAT16_VALUE(9.60), SIMDE_FLOAT16_VALUE(3.50), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(-5.30) },
{ SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(7.00), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(-9.90), SIMDE_FLOAT16_VALUE(7.00), SIMDE_FLOAT16_VALUE(9.50), SIMDE_FLOAT16_VALUE(5.70) } },
{ { SIMDE_FLOAT16_VALUE(-5.80), SIMDE_FLOAT16_VALUE(7.70), SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(-7.70), SIMDE_FLOAT16_VALUE(2.00), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(-7.10) },
{ SIMDE_FLOAT16_VALUE(8.70), SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(3.00), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(7.90), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(-8.70) },
{ SIMDE_FLOAT16_VALUE(-5.80), SIMDE_FLOAT16_VALUE(8.70), SIMDE_FLOAT16_VALUE(7.70), SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(3.00), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(-4.20) } },
{ { SIMDE_FLOAT16_VALUE(-6.90), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(-7.00), SIMDE_FLOAT16_VALUE(-3.80), SIMDE_FLOAT16_VALUE(-1.10), SIMDE_FLOAT16_VALUE(8.50), SIMDE_FLOAT16_VALUE(-4.70) },
{ SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(9.50), SIMDE_FLOAT16_VALUE(-3.20), SIMDE_FLOAT16_VALUE(9.80), SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(-7.70), SIMDE_FLOAT16_VALUE(7.40) },
{ SIMDE_FLOAT16_VALUE(-6.90), SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(9.50), SIMDE_FLOAT16_VALUE(-7.00), SIMDE_FLOAT16_VALUE(-3.20) } },
{ { SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(3.40), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(4.30), SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(-8.20), SIMDE_FLOAT16_VALUE(-4.30) },
{ SIMDE_FLOAT16_VALUE(7.00), SIMDE_FLOAT16_VALUE(2.90), SIMDE_FLOAT16_VALUE(-1.10), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(-8.60), SIMDE_FLOAT16_VALUE(-9.60), SIMDE_FLOAT16_VALUE(-4.20) },
{ SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(7.00), SIMDE_FLOAT16_VALUE(3.40), SIMDE_FLOAT16_VALUE(2.90), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(-1.10), SIMDE_FLOAT16_VALUE(4.30), SIMDE_FLOAT16_VALUE(1.50) } },
{ { SIMDE_FLOAT16_VALUE(-6.20), SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(5.80), SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(-0.60), SIMDE_FLOAT16_VALUE(9.70) },
{ SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(-1.90), SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(-0.60), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(-7.30), SIMDE_FLOAT16_VALUE(2.40), SIMDE_FLOAT16_VALUE(-2.70) },
{ SIMDE_FLOAT16_VALUE(-6.20), SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(-1.90), SIMDE_FLOAT16_VALUE(-9.70), SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(8.00), SIMDE_FLOAT16_VALUE(-0.60) } },
{ { SIMDE_FLOAT16_VALUE(8.50), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(-2.30), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(-4.10), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(-7.60) },
{ SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(-9.20), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(6.00), SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(0.00), SIMDE_FLOAT16_VALUE(7.40) },
{ SIMDE_FLOAT16_VALUE(8.50), SIMDE_FLOAT16_VALUE(5.20), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(-9.20), SIMDE_FLOAT16_VALUE(5.50), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(-2.30), SIMDE_FLOAT16_VALUE(-3.70) } },
{ { SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(9.90), SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(9.70), SIMDE_FLOAT16_VALUE(1.10) },
{ SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(-7.90), SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(6.20), SIMDE_FLOAT16_VALUE(2.00), SIMDE_FLOAT16_VALUE(2.70) },
{ SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(-8.00), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(-7.90), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(-2.70) } },
{ { SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(4.90), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(7.90), SIMDE_FLOAT16_VALUE(5.00), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(9.10) },
{ SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(7.10), SIMDE_FLOAT16_VALUE(3.50), SIMDE_FLOAT16_VALUE(-6.20), SIMDE_FLOAT16_VALUE(-6.80), SIMDE_FLOAT16_VALUE(-0.40), SIMDE_FLOAT16_VALUE(3.70) },
{ SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(4.90), SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(-8.30), SIMDE_FLOAT16_VALUE(7.10), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(3.50) } },
{ { SIMDE_FLOAT16_VALUE(-9.80), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(-10.00), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(9.80), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-3.50) },
{ SIMDE_FLOAT16_VALUE(-8.50), SIMDE_FLOAT16_VALUE(1.70), SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(8.10), SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(9.10), SIMDE_FLOAT16_VALUE(-7.70) },
{ SIMDE_FLOAT16_VALUE(-9.80), SIMDE_FLOAT16_VALUE(-8.50), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(1.70), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(6.60), SIMDE_FLOAT16_VALUE(-10.00), SIMDE_FLOAT16_VALUE(-2.60) } },
{ { SIMDE_FLOAT16_VALUE(4.10), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(-4.10), SIMDE_FLOAT16_VALUE(6.30), SIMDE_FLOAT16_VALUE(8.80), SIMDE_FLOAT16_VALUE(-9.20), SIMDE_FLOAT16_VALUE(-0.40), SIMDE_FLOAT16_VALUE(6.10) },
{ SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(-5.20), SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(2.20), SIMDE_FLOAT16_VALUE(-8.80), SIMDE_FLOAT16_VALUE(7.70) },
{ SIMDE_FLOAT16_VALUE(4.10), SIMDE_FLOAT16_VALUE(9.30), SIMDE_FLOAT16_VALUE(6.10), SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(-4.10), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(6.30), SIMDE_FLOAT16_VALUE(-5.20) } }
};
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_vzip1q_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_vzip1q_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_vzip1q_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float32 a[4];
simde_float32 b[4];
simde_float32 r[4];
} test_vec[] = {
{ { SIMDE_FLOAT32_C( 269.04), SIMDE_FLOAT32_C( 671.35), SIMDE_FLOAT32_C( 766.94), SIMDE_FLOAT32_C( -408.87) },
{ SIMDE_FLOAT32_C( -755.43), SIMDE_FLOAT32_C( -620.83), SIMDE_FLOAT32_C( -105.18), SIMDE_FLOAT32_C( 580.87) },
{ SIMDE_FLOAT32_C( 269.04), SIMDE_FLOAT32_C( -755.43), SIMDE_FLOAT32_C( 671.35), SIMDE_FLOAT32_C( -620.83) } },
{ { SIMDE_FLOAT32_C( -7.35), SIMDE_FLOAT32_C( -641.39), SIMDE_FLOAT32_C( -306.86), SIMDE_FLOAT32_C( -476.86) },
{ SIMDE_FLOAT32_C( 983.02), SIMDE_FLOAT32_C( 145.77), SIMDE_FLOAT32_C( -393.28), SIMDE_FLOAT32_C( -514.11) },
{ SIMDE_FLOAT32_C( -7.35), SIMDE_FLOAT32_C( 983.02), SIMDE_FLOAT32_C( -641.39), SIMDE_FLOAT32_C( 145.77) } },
{ { SIMDE_FLOAT32_C( 201.77), SIMDE_FLOAT32_C( 778.35), SIMDE_FLOAT32_C( 479.04), SIMDE_FLOAT32_C( -404.39) },
{ SIMDE_FLOAT32_C( 748.07), SIMDE_FLOAT32_C( -591.33), SIMDE_FLOAT32_C( 845.51), SIMDE_FLOAT32_C( -130.39) },
{ SIMDE_FLOAT32_C( 201.77), SIMDE_FLOAT32_C( 748.07), SIMDE_FLOAT32_C( 778.35), SIMDE_FLOAT32_C( -591.33) } },
{ { SIMDE_FLOAT32_C( 187.46), SIMDE_FLOAT32_C( 563.12), SIMDE_FLOAT32_C( -567.04), SIMDE_FLOAT32_C( 46.32) },
{ SIMDE_FLOAT32_C( 549.79), SIMDE_FLOAT32_C( -703.64), SIMDE_FLOAT32_C( 919.82), SIMDE_FLOAT32_C( -181.17) },
{ SIMDE_FLOAT32_C( 187.46), SIMDE_FLOAT32_C( 549.79), SIMDE_FLOAT32_C( 563.12), SIMDE_FLOAT32_C( -703.64) } },
{ { SIMDE_FLOAT32_C( 967.71), SIMDE_FLOAT32_C( 686.76), SIMDE_FLOAT32_C( 409.96), SIMDE_FLOAT32_C( -787.73) },
{ SIMDE_FLOAT32_C( -934.07), SIMDE_FLOAT32_C( -695.22), SIMDE_FLOAT32_C( 793.14), SIMDE_FLOAT32_C( 58.59) },
{ SIMDE_FLOAT32_C( 967.71), SIMDE_FLOAT32_C( -934.07), SIMDE_FLOAT32_C( 686.76), SIMDE_FLOAT32_C( -695.22) } },
{ { SIMDE_FLOAT32_C( -336.61), SIMDE_FLOAT32_C( -513.72), SIMDE_FLOAT32_C( 581.73), SIMDE_FLOAT32_C( -353.60) },
{ SIMDE_FLOAT32_C( 632.05), SIMDE_FLOAT32_C( -811.55), SIMDE_FLOAT32_C( 132.29), SIMDE_FLOAT32_C( -166.18) },
{ SIMDE_FLOAT32_C( -336.61), SIMDE_FLOAT32_C( 632.05), SIMDE_FLOAT32_C( -513.72), SIMDE_FLOAT32_C( -811.55) } },
{ { SIMDE_FLOAT32_C( 966.80), SIMDE_FLOAT32_C( -388.67), SIMDE_FLOAT32_C( 429.43), SIMDE_FLOAT32_C( 714.87) },
{ SIMDE_FLOAT32_C( 20.00), SIMDE_FLOAT32_C( 274.94), SIMDE_FLOAT32_C( -415.52), SIMDE_FLOAT32_C( -792.53) },
{ SIMDE_FLOAT32_C( 966.80), SIMDE_FLOAT32_C( 20.00), SIMDE_FLOAT32_C( -388.67), SIMDE_FLOAT32_C( 274.94) } },
{ { SIMDE_FLOAT32_C( -161.95), SIMDE_FLOAT32_C( 17.44), SIMDE_FLOAT32_C( 253.79), SIMDE_FLOAT32_C( -612.15) },
{ SIMDE_FLOAT32_C( 313.79), SIMDE_FLOAT32_C( 173.61), SIMDE_FLOAT32_C( 206.68), SIMDE_FLOAT32_C( 281.50) },
{ SIMDE_FLOAT32_C( -161.95), SIMDE_FLOAT32_C( 313.79), SIMDE_FLOAT32_C( 17.44), SIMDE_FLOAT32_C( 173.61) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x4_t a = simde_vld1q_f32(test_vec[i].a);
simde_float32x4_t b = simde_vld1q_f32(test_vec[i].b);
simde_float32x4_t r = simde_vzip1q_f32(a, b);
simde_test_arm_neon_assert_equal_f32x4(r, simde_vld1q_f32(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float32x4_t a = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
simde_float32x4_t b = simde_test_arm_neon_random_f32x4(-1000.0f, 1000.0f);
simde_float32x4_t r = simde_vzip1q_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_vzip1q_s8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int8_t a[16];
int8_t b[16];
int8_t r[16];
} test_vec[] = {
{ { -INT8_C( 70), -INT8_C( 22), -INT8_C( 88), INT8_C( 42), -INT8_C( 9), -INT8_C( 4), -INT8_C( 126), INT8_C( 11),
-INT8_C( 37), -INT8_C( 127), INT8_C( 7), -INT8_C( 109), INT8_C( 119), -INT8_C( 90), -INT8_C( 99), INT8_C( 0) },
{ -INT8_C( 41), INT8_C( 47), INT8_C( 38), INT8_C( 5), INT8_C( 103), -INT8_C( 61), -INT8_C( 45), -INT8_C( 22),
INT8_C( 43), -INT8_C( 92), INT8_C( 19), INT8_C( 114), INT8_C( 110), -INT8_C( 85), INT8_C( 62), INT8_C( 41) },
{ -INT8_C( 70), -INT8_C( 41), -INT8_C( 22), INT8_C( 47), -INT8_C( 88), INT8_C( 38), INT8_C( 42), INT8_C( 5),
-INT8_C( 9), INT8_C( 103), -INT8_C( 4), -INT8_C( 61), -INT8_C( 126), -INT8_C( 45), INT8_C( 11), -INT8_C( 22) } },
{ { -INT8_C( 107), -INT8_C( 26), INT8_C( 83), -INT8_C( 116), -INT8_C( 30), -INT8_C( 43), -INT8_C( 104), -INT8_C( 66),
INT8_C( 87), -INT8_C( 97), INT8_C( 81), -INT8_C( 50), INT8_C( 69), -INT8_C( 18), -INT8_C( 50), INT8_C( 28) },
{ INT8_C( 30), -INT8_C( 11), INT8_C( 34), -INT8_C( 123), -INT8_C( 72), -INT8_C( 11), INT8_C( 111), -INT8_C( 29),
-INT8_C( 103), -INT8_C( 125), INT8_C( 85), INT8_C( 7), INT8_C( 46), -INT8_C( 108), INT8_C( 48), -INT8_C( 61) },
{ -INT8_C( 107), INT8_C( 30), -INT8_C( 26), -INT8_C( 11), INT8_C( 83), INT8_C( 34), -INT8_C( 116), -INT8_C( 123),
-INT8_C( 30), -INT8_C( 72), -INT8_C( 43), -INT8_C( 11), -INT8_C( 104), INT8_C( 111), -INT8_C( 66), -INT8_C( 29) } },
{ { INT8_C( 122), -INT8_C( 124), INT8_C( 79), INT8_C( 93), INT8_C( 89), -INT8_C( 25), INT8_C( 27), -INT8_C( 80),
-INT8_C( 122), INT8_C( 108), INT8_C( 126), -INT8_C( 53), INT8_C( 90), INT8_C( 77), -INT8_C( 24), INT8_C( 120) },
{ INT8_C( 66), INT8_C( 10), -INT8_C( 2), -INT8_C( 6), -INT8_C( 1), INT8_C( 109), -INT8_C( 35), -INT8_C( 104),
-INT8_C( 16), INT8_C( 51), -INT8_C( 97), INT8_C( 30), -INT8_C( 57), -INT8_C( 48), -INT8_C( 31), INT8_C( 65) },
{ INT8_C( 122), INT8_C( 66), -INT8_C( 124), INT8_C( 10), INT8_C( 79), -INT8_C( 2), INT8_C( 93), -INT8_C( 6),
INT8_C( 89), -INT8_C( 1), -INT8_C( 25), INT8_C( 109), INT8_C( 27), -INT8_C( 35), -INT8_C( 80), -INT8_C( 104) } },
{ { INT8_C( 84), INT8_C( 49), -INT8_C( 98), -INT8_C( 83), INT8_C( 24), -INT8_C( 71), INT8_C( 94), -INT8_C( 97),
INT8_C( 37), -INT8_C( 36), INT8_C( 106), INT8_MIN, INT8_C( 41), INT8_C( 82), -INT8_C( 8), INT8_C( 107) },
{ INT8_C( 92), -INT8_C( 10), INT8_C( 101), INT8_C( 91), INT8_C( 100), INT8_C( 67), -INT8_C( 13), INT8_C( 84),
INT8_C( 118), -INT8_C( 109), INT8_C( 115), INT8_C( 61), INT8_C( 99), INT8_C( 84), INT8_C( 126), -INT8_C( 73) },
{ INT8_C( 84), INT8_C( 92), INT8_C( 49), -INT8_C( 10), -INT8_C( 98), INT8_C( 101), -INT8_C( 83), INT8_C( 91),
INT8_C( 24), INT8_C( 100), -INT8_C( 71), INT8_C( 67), INT8_C( 94), -INT8_C( 13), -INT8_C( 97), INT8_C( 84) } },
{ { -INT8_C( 123), INT8_C( 29), INT8_C( 100), -INT8_C( 98), -INT8_C( 42), -INT8_C( 62), INT8_C( 61), -INT8_C( 4),
-INT8_C( 97), -INT8_C( 89), INT8_C( 124), -INT8_C( 56), -INT8_C( 6), INT8_C( 116), INT8_C( 52), INT8_C( 86) },
{ INT8_C( 107), -INT8_C( 103), -INT8_C( 78), -INT8_C( 49), -INT8_C( 36), -INT8_C( 91), INT8_C( 35), INT8_C( 82),
INT8_C( 56), -INT8_C( 106), -INT8_C( 113), -INT8_C( 101), -INT8_C( 21), INT8_C( 14), INT8_C( 82), INT8_C( 112) },
{ -INT8_C( 123), INT8_C( 107), INT8_C( 29), -INT8_C( 103), INT8_C( 100), -INT8_C( 78), -INT8_C( 98), -INT8_C( 49),
-INT8_C( 42), -INT8_C( 36), -INT8_C( 62), -INT8_C( 91), INT8_C( 61), INT8_C( 35), -INT8_C( 4), INT8_C( 82) } },
{ { INT8_C( 43), -INT8_C( 73), INT8_C( 14), INT8_C( 1), INT8_C( 121), INT8_C( 75), -INT8_C( 3), INT8_C( 24),
-INT8_C( 13), INT8_C( 121), -INT8_C( 31), -INT8_C( 19), -INT8_C( 18), INT8_C( 21), INT8_C( 67), INT8_C( 89) },
{ -INT8_C( 82), -INT8_C( 11), INT8_C( 40), -INT8_C( 117), -INT8_C( 101), INT8_C( 75), -INT8_C( 35), -INT8_C( 45),
-INT8_C( 30), INT8_C( 109), INT8_C( 111), -INT8_C( 51), INT8_C( 123), -INT8_C( 63), INT8_C( 61), -INT8_C( 90) },
{ INT8_C( 43), -INT8_C( 82), -INT8_C( 73), -INT8_C( 11), INT8_C( 14), INT8_C( 40), INT8_C( 1), -INT8_C( 117),
INT8_C( 121), -INT8_C( 101), INT8_C( 75), INT8_C( 75), -INT8_C( 3), -INT8_C( 35), INT8_C( 24), -INT8_C( 45) } },
{ { INT8_C( 120), INT8_C( 76), -INT8_C( 89), -INT8_C( 14), -INT8_C( 105), -INT8_C( 91), INT8_C( 10), -INT8_C( 118),
INT8_C( 30), -INT8_C( 21), INT8_C( 119), INT8_C( 12), INT8_C( 0), -INT8_C( 69), INT8_C( 101), -INT8_C( 81) },
{ -INT8_C( 80), -INT8_C( 115), INT8_C( 58), INT8_C( 75), -INT8_C( 39), INT8_C( 23), INT8_C( 31), -INT8_C( 69),
-INT8_C( 124), -INT8_C( 114), -INT8_C( 120), -INT8_C( 1), INT8_C( 79), -INT8_C( 59), -INT8_C( 91), -INT8_C( 56) },
{ INT8_C( 120), -INT8_C( 80), INT8_C( 76), -INT8_C( 115), -INT8_C( 89), INT8_C( 58), -INT8_C( 14), INT8_C( 75),
-INT8_C( 105), -INT8_C( 39), -INT8_C( 91), INT8_C( 23), INT8_C( 10), INT8_C( 31), -INT8_C( 118), -INT8_C( 69) } },
{ { INT8_C( 17), INT8_C( 77), -INT8_C( 70), -INT8_C( 87), -INT8_C( 14), -INT8_C( 60), INT8_C( 51), INT8_C( 16),
-INT8_C( 80), -INT8_C( 85), INT8_C( 29), -INT8_C( 80), INT8_C( 102), -INT8_C( 126), INT8_C( 95), INT8_C( 22) },
{ INT8_C( 16), -INT8_C( 103), INT8_C( 98), -INT8_C( 23), -INT8_C( 79), -INT8_C( 127), -INT8_C( 92), INT8_C( 53),
INT8_C( 15), INT8_C( 44), INT8_C( 53), INT8_C( 94), -INT8_C( 15), -INT8_C( 38), INT8_C( 38), INT8_C( 3) },
{ INT8_C( 17), INT8_C( 16), INT8_C( 77), -INT8_C( 103), -INT8_C( 70), INT8_C( 98), -INT8_C( 87), -INT8_C( 23),
-INT8_C( 14), -INT8_C( 79), -INT8_C( 60), -INT8_C( 127), INT8_C( 51), -INT8_C( 92), INT8_C( 16), INT8_C( 53) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int8x16_t a = simde_vld1q_s8(test_vec[i].a);
simde_int8x16_t b = simde_vld1q_s8(test_vec[i].b);
simde_int8x16_t r = simde_vzip1q_s8(a, b);
simde_test_arm_neon_assert_equal_i8x16(r, simde_vld1q_s8(test_vec[i].r));
}
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_vzip1q_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_vzip1q_s16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int16_t a[8];
int16_t b[8];
int16_t r[8];
} test_vec[] = {
{ { INT16_C( 28283), -INT16_C( 8974), -INT16_C( 22113), INT16_C( 11484), -INT16_C( 30181), -INT16_C( 20779), -INT16_C( 25603), INT16_C( 17370) },
{ INT16_C( 31538), -INT16_C( 31974), INT16_C( 9962), -INT16_C( 13557), INT16_C( 1664), INT16_C( 31891), -INT16_C( 5649), INT16_C( 27379) },
{ INT16_C( 28283), INT16_C( 31538), -INT16_C( 8974), -INT16_C( 31974), -INT16_C( 22113), INT16_C( 9962), INT16_C( 11484), -INT16_C( 13557) } },
{ { -INT16_C( 6568), -INT16_C( 2234), INT16_C( 8847), -INT16_C( 21981), -INT16_C( 1620), -INT16_C( 21927), INT16_C( 13204), -INT16_C( 14611) },
{ INT16_C( 1966), -INT16_C( 26551), INT16_C( 21806), -INT16_C( 20893), -INT16_C( 2213), INT16_C( 18986), INT16_C( 7904), INT16_C( 14516) },
{ -INT16_C( 6568), INT16_C( 1966), -INT16_C( 2234), -INT16_C( 26551), INT16_C( 8847), INT16_C( 21806), -INT16_C( 21981), -INT16_C( 20893) } },
{ { -INT16_C( 1276), -INT16_C( 27857), INT16_C( 21277), -INT16_C( 13762), -INT16_C( 26804), -INT16_C( 8076), INT16_C( 25034), INT16_C( 30886) },
{ -INT16_C( 3992), -INT16_C( 27119), INT16_C( 29765), -INT16_C( 24507), INT16_C( 28523), INT16_C( 19690), -INT16_C( 24947), -INT16_C( 28284) },
{ -INT16_C( 1276), -INT16_C( 3992), -INT16_C( 27857), -INT16_C( 27119), INT16_C( 21277), INT16_C( 29765), -INT16_C( 13762), -INT16_C( 24507) } },
{ { -INT16_C( 19303), -INT16_C( 18651), INT16_C( 25351), INT16_C( 21377), -INT16_C( 2566), -INT16_C( 15309), -INT16_C( 9898), -INT16_C( 16836) },
{ INT16_C( 19913), INT16_C( 3669), -INT16_C( 25918), INT16_C( 11694), -INT16_C( 26615), -INT16_C( 26759), -INT16_C( 457), -INT16_C( 12248) },
{ -INT16_C( 19303), INT16_C( 19913), -INT16_C( 18651), INT16_C( 3669), INT16_C( 25351), -INT16_C( 25918), INT16_C( 21377), INT16_C( 11694) } },
{ { INT16_C( 19890), -INT16_C( 18041), INT16_C( 2224), -INT16_C( 22004), INT16_C( 16381), INT16_C( 21358), -INT16_C( 21736), -INT16_C( 7662) },
{ INT16_C( 26616), -INT16_C( 17680), -INT16_C( 24831), INT16_C( 2792), INT16_C( 24887), INT16_C( 28321), -INT16_C( 13729), INT16_C( 4415) },
{ INT16_C( 19890), INT16_C( 26616), -INT16_C( 18041), -INT16_C( 17680), INT16_C( 2224), -INT16_C( 24831), -INT16_C( 22004), INT16_C( 2792) } },
{ { -INT16_C( 14825), -INT16_C( 14134), -INT16_C( 10545), -INT16_C( 13198), -INT16_C( 7915), INT16_C( 11808), INT16_C( 12940), -INT16_C( 31728) },
{ INT16_C( 153), -INT16_C( 26049), INT16_C( 10143), -INT16_C( 10332), INT16_C( 18056), -INT16_C( 6075), -INT16_C( 31728), INT16_C( 10233) },
{ -INT16_C( 14825), INT16_C( 153), -INT16_C( 14134), -INT16_C( 26049), -INT16_C( 10545), INT16_C( 10143), -INT16_C( 13198), -INT16_C( 10332) } },
{ { -INT16_C( 15285), INT16_C( 6895), INT16_C( 25242), -INT16_C( 20250), INT16_C( 1603), -INT16_C( 12322), -INT16_C( 4552), -INT16_C( 11949) },
{ -INT16_C( 27922), -INT16_C( 29077), INT16_C( 4281), INT16_C( 16997), -INT16_C( 21930), INT16_C( 26154), INT16_C( 9007), INT16_C( 31373) },
{ -INT16_C( 15285), -INT16_C( 27922), INT16_C( 6895), -INT16_C( 29077), INT16_C( 25242), INT16_C( 4281), -INT16_C( 20250), INT16_C( 16997) } },
{ { INT16_C( 32231), -INT16_C( 32108), INT16_C( 31455), INT16_C( 8754), INT16_C( 4225), -INT16_C( 17935), INT16_C( 17662), -INT16_C( 4981) },
{ -INT16_C( 2345), -INT16_C( 28550), -INT16_C( 8442), INT16_C( 23762), -INT16_C( 886), -INT16_C( 17982), INT16_C( 20512), INT16_C( 1843) },
{ INT16_C( 32231), -INT16_C( 2345), -INT16_C( 32108), -INT16_C( 28550), INT16_C( 31455), -INT16_C( 8442), INT16_C( 8754), INT16_C( 23762) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int16x8_t a = simde_vld1q_s16(test_vec[i].a);
simde_int16x8_t b = simde_vld1q_s16(test_vec[i].b);
simde_int16x8_t r = simde_vzip1q_s16(a, b);
simde_test_arm_neon_assert_equal_i16x8(r, simde_vld1q_s16(test_vec[i].r));
}
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_vzip1q_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_vzip1q_s32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int32_t a[4];
int32_t b[4];
int32_t r[4];
} test_vec[] = {
{ { -INT32_C( 1675320975), -INT32_C( 1896477137), INT32_C( 1084998411), -INT32_C( 1861441150) },
{ -INT32_C( 22335743), -INT32_C( 1566060132), INT32_C( 509923909), INT32_C( 28916624) },
{ -INT32_C( 1675320975), -INT32_C( 22335743), -INT32_C( 1896477137), -INT32_C( 1566060132) } },
{ { INT32_C( 211672541), -INT32_C( 157641493), -INT32_C( 650689193), -INT32_C( 261471250) },
{ INT32_C( 267261299), INT32_C( 733058534), -INT32_C( 146205337), INT32_C( 788005457) },
{ INT32_C( 211672541), INT32_C( 267261299), -INT32_C( 157641493), INT32_C( 733058534) } },
{ { -INT32_C( 902130209), -INT32_C( 2134780631), INT32_C( 156956698), -INT32_C( 1359363013) },
{ -INT32_C( 1061230630), -INT32_C( 471044228), -INT32_C( 690342523), INT32_C( 386191928) },
{ -INT32_C( 902130209), -INT32_C( 1061230630), -INT32_C( 2134780631), -INT32_C( 471044228) } },
{ { -INT32_C( 1847443865), INT32_C( 772907795), -INT32_C( 701011045), INT32_C( 176500784) },
{ -INT32_C( 1815461097), INT32_C( 930526898), INT32_C( 604852460), -INT32_C( 1992617694) },
{ -INT32_C( 1847443865), -INT32_C( 1815461097), INT32_C( 772907795), INT32_C( 930526898) } },
{ { INT32_C( 1662655824), INT32_C( 1536240832), -INT32_C( 952973161), INT32_C( 265402360) },
{ -INT32_C( 1398629126), INT32_C( 1055135826), -INT32_C( 1973227160), INT32_C( 1393860099) },
{ INT32_C( 1662655824), -INT32_C( 1398629126), INT32_C( 1536240832), INT32_C( 1055135826) } },
{ { INT32_C( 2092314299), -INT32_C( 220772262), INT32_C( 163121424), -INT32_C( 1172796480) },
{ INT32_C( 2036841255), INT32_C( 1018710995), INT32_C( 1069947452), INT32_C( 1955781304) },
{ INT32_C( 2092314299), INT32_C( 2036841255), -INT32_C( 220772262), INT32_C( 1018710995) } },
{ { INT32_C( 1676691721), -INT32_C( 1588213871), -INT32_C( 1851125807), -INT32_C( 1051933798) },
{ INT32_C( 1362801534), INT32_C( 982381310), -INT32_C( 981838835), INT32_C( 926485550) },
{ INT32_C( 1676691721), INT32_C( 1362801534), -INT32_C( 1588213871), INT32_C( 982381310) } },
{ { -INT32_C( 426038955), -INT32_C( 1031212815), -INT32_C( 1722600705), INT32_C( 1935319029) },
{ INT32_C( 1355126098), -INT32_C( 1802808697), -INT32_C( 715520602), INT32_C( 1728877329) },
{ -INT32_C( 426038955), INT32_C( 1355126098), -INT32_C( 1031212815), -INT32_C( 1802808697) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int32x4_t a = simde_vld1q_s32(test_vec[i].a);
simde_int32x4_t b = simde_vld1q_s32(test_vec[i].b);
simde_int32x4_t r = simde_vzip1q_s32(a, b);
simde_test_arm_neon_assert_equal_i32x4(r, simde_vld1q_s32(test_vec[i].r));
}
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_vzip1q_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_vzip1q_s64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
int64_t a[2];
int64_t b[2];
int64_t r[2];
} test_vec[] = {
{ { -INT64_C( 448570424052926050), -INT64_C( 8985443691791153961) },
{ -INT64_C( 8040865633061995433), -INT64_C( 4704410991765481408) },
{ -INT64_C( 448570424052926050), -INT64_C( 8040865633061995433) } },
{ { INT64_C( 9032521722090244812), INT64_C( 9119651969885461627) },
{ -INT64_C( 7142984589955546880), -INT64_C( 6918627632000909283) },
{ INT64_C( 9032521722090244812), -INT64_C( 7142984589955546880) } },
{ { -INT64_C( 7096168734649275294), INT64_C( 4600489963625823284) },
{ -INT64_C( 7461780158734764678), INT64_C( 5701787941971809454) },
{ -INT64_C( 7096168734649275294), -INT64_C( 7461780158734764678) } },
{ { -INT64_C( 6071453218912133123), INT64_C( 1952555225160509337) },
{ -INT64_C( 4438750342192912813), INT64_C( 753337045300230969) },
{ -INT64_C( 6071453218912133123), -INT64_C( 4438750342192912813) } },
{ { INT64_C( 4802781869398215811), -INT64_C( 2446524920958899121) },
{ -INT64_C( 7228257185826013479), -INT64_C( 2637643357437693106) },
{ INT64_C( 4802781869398215811), -INT64_C( 7228257185826013479) } },
{ { -INT64_C( 4040717907954069503), INT64_C( 1338347791406597929) },
{ -INT64_C( 6935349563607728190), -INT64_C( 5127804786686918237) },
{ -INT64_C( 4040717907954069503), -INT64_C( 6935349563607728190) } },
{ { INT64_C( 5849981475946147056), INT64_C( 7900044558967629654) },
{ -INT64_C( 736248026253581609), INT64_C( 1315550417814340307) },
{ INT64_C( 5849981475946147056), -INT64_C( 736248026253581609) } },
{ { INT64_C( 5326820422534734962), INT64_C( 7037572101881524881) },
{ INT64_C( 7017823791531768860), -INT64_C( 8266027145664703468) },
{ INT64_C( 5326820422534734962), INT64_C( 7017823791531768860) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_int64x2_t a = simde_vld1q_s64(test_vec[i].a);
simde_int64x2_t b = simde_vld1q_s64(test_vec[i].b);
simde_int64x2_t r = simde_vzip1q_s64(a, b);
simde_test_arm_neon_assert_equal_i64x2(r, simde_vld1q_s64(test_vec[i].r));
}
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_vzip1q_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_vzip1q_u8 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint8_t a[16];
uint8_t b[16];
uint8_t r[16];
} test_vec[] = {
{ { UINT8_C(100), UINT8_C(203), UINT8_C(215), UINT8_C(200), UINT8_C(136), UINT8_C(145), UINT8_C(227), UINT8_C(166),
UINT8_C( 22), UINT8_C(195), UINT8_C(118), UINT8_C(159), UINT8_C(105), UINT8_C(241), UINT8_C(107), UINT8_C(158) },
{ UINT8_C( 53), UINT8_C( 73), UINT8_C(155), UINT8_C(249), UINT8_C(100), UINT8_C( 88), UINT8_C(190), UINT8_C( 51),
UINT8_C( 43), UINT8_C(242), UINT8_C(209), UINT8_C( 1), UINT8_C(234), UINT8_C(166), UINT8_C( 44), UINT8_C( 78) },
{ UINT8_C(100), UINT8_C( 53), UINT8_C(203), UINT8_C( 73), UINT8_C(215), UINT8_C(155), UINT8_C(200), UINT8_C(249),
UINT8_C(136), UINT8_C(100), UINT8_C(145), UINT8_C( 88), UINT8_C(227), UINT8_C(190), UINT8_C(166), UINT8_C( 51) } },
{ { UINT8_C(113), UINT8_C( 4), UINT8_C( 22), UINT8_C(250), UINT8_C(149), UINT8_C(249), UINT8_C(160), UINT8_C(171),
UINT8_C(188), UINT8_C( 22), UINT8_C( 75), UINT8_C( 38), UINT8_C( 7), UINT8_C(182), UINT8_C(196), UINT8_C( 60) },
{ UINT8_MAX, UINT8_C( 95), UINT8_C( 54), UINT8_C( 99), UINT8_C(184), UINT8_C(244), UINT8_C(151), UINT8_C(227),
UINT8_C(230), UINT8_C(104), UINT8_C(229), UINT8_C(208), UINT8_C( 14), UINT8_C( 17), UINT8_C( 30), UINT8_C(128) },
{ UINT8_C(113), UINT8_MAX, UINT8_C( 4), UINT8_C( 95), UINT8_C( 22), UINT8_C( 54), UINT8_C(250), UINT8_C( 99),
UINT8_C(149), UINT8_C(184), UINT8_C(249), UINT8_C(244), UINT8_C(160), UINT8_C(151), UINT8_C(171), UINT8_C(227) } },
{ { UINT8_C( 21), UINT8_C( 53), UINT8_C(122), UINT8_C(171), UINT8_C( 46), UINT8_C( 26), UINT8_C( 86), UINT8_C(235),
UINT8_C( 48), UINT8_C(161), UINT8_C( 17), UINT8_C( 56), UINT8_C( 87), UINT8_C(213), UINT8_C(116), UINT8_C( 86) },
{ UINT8_C( 53), UINT8_C(170), UINT8_C(186), UINT8_C(237), UINT8_C(158), UINT8_C( 81), UINT8_C(208), UINT8_C(132),
UINT8_C(185), UINT8_C(181), UINT8_C( 84), UINT8_C(199), UINT8_C(199), UINT8_C(115), UINT8_C( 71), UINT8_C(220) },
{ UINT8_C( 21), UINT8_C( 53), UINT8_C( 53), UINT8_C(170), UINT8_C(122), UINT8_C(186), UINT8_C(171), UINT8_C(237),
UINT8_C( 46), UINT8_C(158), UINT8_C( 26), UINT8_C( 81), UINT8_C( 86), UINT8_C(208), UINT8_C(235), UINT8_C(132) } },
{ { UINT8_C(168), UINT8_C(193), UINT8_C(135), UINT8_C(214), UINT8_C(219), UINT8_C(222), UINT8_C(193), UINT8_C( 12),
UINT8_C(127), UINT8_C(210), UINT8_C( 68), UINT8_C(215), UINT8_C(168), UINT8_C(184), UINT8_C( 45), UINT8_C(221) },
{ UINT8_C( 99), UINT8_C(231), UINT8_C(202), UINT8_C( 1), UINT8_C( 56), UINT8_C(154), UINT8_C(134), UINT8_C(241),
UINT8_C( 80), UINT8_C(218), UINT8_C(185), UINT8_C( 23), UINT8_C( 77), UINT8_C( 0), UINT8_C(243), UINT8_C(245) },
{ UINT8_C(168), UINT8_C( 99), UINT8_C(193), UINT8_C(231), UINT8_C(135), UINT8_C(202), UINT8_C(214), UINT8_C( 1),
UINT8_C(219), UINT8_C( 56), UINT8_C(222), UINT8_C(154), UINT8_C(193), UINT8_C(134), UINT8_C( 12), UINT8_C(241) } },
{ { UINT8_C(194), UINT8_C(123), UINT8_C(204), UINT8_C(157), UINT8_C( 89), UINT8_C(141), UINT8_C(169), UINT8_C(216),
UINT8_C( 96), UINT8_C(237), UINT8_C(175), UINT8_C( 8), UINT8_C(166), UINT8_C(221), UINT8_C(229), UINT8_C( 9) },
{ UINT8_C(196), UINT8_C(175), UINT8_C( 10), UINT8_C(253), UINT8_C( 73), UINT8_C(144), UINT8_C(238), UINT8_C(153),
UINT8_C(107), UINT8_C(167), UINT8_C(176), UINT8_C(184), UINT8_C(168), UINT8_C(164), UINT8_C(174), UINT8_C(106) },
{ UINT8_C(194), UINT8_C(196), UINT8_C(123), UINT8_C(175), UINT8_C(204), UINT8_C( 10), UINT8_C(157), UINT8_C(253),
UINT8_C( 89), UINT8_C( 73), UINT8_C(141), UINT8_C(144), UINT8_C(169), UINT8_C(238), UINT8_C(216), UINT8_C(153) } },
{ { UINT8_C( 31), UINT8_C(122), UINT8_C( 7), UINT8_C(120), UINT8_C( 7), UINT8_C(177), UINT8_C( 80), UINT8_C(103),
UINT8_C(158), UINT8_C( 0), UINT8_C(111), UINT8_C( 68), UINT8_C(221), UINT8_C( 84), UINT8_C( 77), UINT8_C(161) },
{ UINT8_C( 3), UINT8_C( 88), UINT8_C(158), UINT8_C( 77), UINT8_C(232), UINT8_C(141), UINT8_C(230), UINT8_C( 83),
UINT8_C( 52), UINT8_C(151), UINT8_C( 12), UINT8_C(220), UINT8_C( 59), UINT8_C(186), UINT8_C( 70), UINT8_C( 90) },
{ UINT8_C( 31), UINT8_C( 3), UINT8_C(122), UINT8_C( 88), UINT8_C( 7), UINT8_C(158), UINT8_C(120), UINT8_C( 77),
UINT8_C( 7), UINT8_C(232), UINT8_C(177), UINT8_C(141), UINT8_C( 80), UINT8_C(230), UINT8_C(103), UINT8_C( 83) } },
{ { UINT8_C( 52), UINT8_C( 78), UINT8_C(210), UINT8_C( 59), UINT8_MAX, UINT8_C( 34), UINT8_C(163), UINT8_C(157),
UINT8_C( 34), UINT8_C( 18), UINT8_C(226), UINT8_MAX, UINT8_C(103), UINT8_C( 47), UINT8_C(161), UINT8_C(106) },
{ UINT8_C(135), UINT8_C( 63), UINT8_C(183), UINT8_C(112), UINT8_C(204), UINT8_C(158), UINT8_C(195), UINT8_C( 1),
UINT8_C( 53), UINT8_C(207), UINT8_C(221), UINT8_C(112), UINT8_C(137), UINT8_C( 36), UINT8_C(202), UINT8_C(189) },
{ UINT8_C( 52), UINT8_C(135), UINT8_C( 78), UINT8_C( 63), UINT8_C(210), UINT8_C(183), UINT8_C( 59), UINT8_C(112),
UINT8_MAX, UINT8_C(204), UINT8_C( 34), UINT8_C(158), UINT8_C(163), UINT8_C(195), UINT8_C(157), UINT8_C( 1) } },
{ { UINT8_C(114), UINT8_C(156), UINT8_C(249), UINT8_C(113), UINT8_C(190), UINT8_C(156), UINT8_C( 14), UINT8_C(225),
UINT8_C(174), UINT8_C(240), UINT8_C(224), UINT8_C( 21), UINT8_C( 32), UINT8_C(129), UINT8_C(128), UINT8_C(167) },
{ UINT8_C(193), UINT8_C( 55), UINT8_C( 23), UINT8_C(141), UINT8_C(213), UINT8_C(219), UINT8_C(142), UINT8_C( 10),
UINT8_C(170), UINT8_C(108), UINT8_C(122), UINT8_C( 52), UINT8_C(144), UINT8_C( 68), UINT8_C(241), UINT8_C( 2) },
{ UINT8_C(114), UINT8_C(193), UINT8_C(156), UINT8_C( 55), UINT8_C(249), UINT8_C( 23), UINT8_C(113), UINT8_C(141),
UINT8_C(190), UINT8_C(213), UINT8_C(156), UINT8_C(219), UINT8_C( 14), UINT8_C(142), UINT8_C(225), UINT8_C( 10) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint8x16_t a = simde_vld1q_u8(test_vec[i].a);
simde_uint8x16_t b = simde_vld1q_u8(test_vec[i].b);
simde_uint8x16_t r = simde_vzip1q_u8(a, b);
simde_test_arm_neon_assert_equal_u8x16(r, simde_vld1q_u8(test_vec[i].r));
}
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_vzip1q_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_vzip1q_u16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint16_t a[8];
uint16_t b[8];
uint16_t r[8];
} test_vec[] = {
{ { UINT16_C(30177), UINT16_C(25079), UINT16_C(19204), UINT16_C( 1663), UINT16_C(38129), UINT16_C(42655), UINT16_C( 5776), UINT16_C( 1946) },
{ UINT16_C( 7669), UINT16_C(25887), UINT16_C(18190), UINT16_C(29117), UINT16_C(38689), UINT16_C(11637), UINT16_C(17900), UINT16_C(52555) },
{ UINT16_C(30177), UINT16_C( 7669), UINT16_C(25079), UINT16_C(25887), UINT16_C(19204), UINT16_C(18190), UINT16_C( 1663), UINT16_C(29117) } },
{ { UINT16_C(17082), UINT16_C(48686), UINT16_C(44686), UINT16_C(32709), UINT16_C(25666), UINT16_C(53797), UINT16_C(49275), UINT16_C(28889) },
{ UINT16_C(63709), UINT16_C(60374), UINT16_C(37696), UINT16_C(24924), UINT16_C(53802), UINT16_C( 6030), UINT16_C(55575), UINT16_C(53732) },
{ UINT16_C(17082), UINT16_C(63709), UINT16_C(48686), UINT16_C(60374), UINT16_C(44686), UINT16_C(37696), UINT16_C(32709), UINT16_C(24924) } },
{ { UINT16_C( 4892), UINT16_C(43663), UINT16_C(21697), UINT16_C( 809), UINT16_C(20409), UINT16_C(13526), UINT16_C(44815), UINT16_C(60580) },
{ UINT16_C(31400), UINT16_C(59607), UINT16_C(13325), UINT16_C(14409), UINT16_C(55302), UINT16_C( 7503), UINT16_C(13233), UINT16_C(52718) },
{ UINT16_C( 4892), UINT16_C(31400), UINT16_C(43663), UINT16_C(59607), UINT16_C(21697), UINT16_C(13325), UINT16_C( 809), UINT16_C(14409) } },
{ { UINT16_C(32070), UINT16_C( 1911), UINT16_C(41426), UINT16_C(35595), UINT16_C(57840), UINT16_C(65471), UINT16_C(25488), UINT16_C(14571) },
{ UINT16_C(49886), UINT16_C(60192), UINT16_C(27382), UINT16_C(64547), UINT16_C(29250), UINT16_C(62233), UINT16_C( 1958), UINT16_C(60609) },
{ UINT16_C(32070), UINT16_C(49886), UINT16_C( 1911), UINT16_C(60192), UINT16_C(41426), UINT16_C(27382), UINT16_C(35595), UINT16_C(64547) } },
{ { UINT16_C(14469), UINT16_C(22516), UINT16_C(65497), UINT16_C(51682), UINT16_C(41440), UINT16_C(28872), UINT16_C(45828), UINT16_C(58025) },
{ UINT16_C(51574), UINT16_C(27854), UINT16_C(61747), UINT16_C(30057), UINT16_C(33380), UINT16_C( 2665), UINT16_C(10890), UINT16_C( 4086) },
{ UINT16_C(14469), UINT16_C(51574), UINT16_C(22516), UINT16_C(27854), UINT16_C(65497), UINT16_C(61747), UINT16_C(51682), UINT16_C(30057) } },
{ { UINT16_C(60002), UINT16_C(15462), UINT16_C(18665), UINT16_C(51461), UINT16_C(52969), UINT16_C(60730), UINT16_C(58241), UINT16_C(63440) },
{ UINT16_C(40620), UINT16_C(57444), UINT16_C(52623), UINT16_C(62293), UINT16_C(48719), UINT16_C(55805), UINT16_C(62696), UINT16_C(19432) },
{ UINT16_C(60002), UINT16_C(40620), UINT16_C(15462), UINT16_C(57444), UINT16_C(18665), UINT16_C(52623), UINT16_C(51461), UINT16_C(62293) } },
{ { UINT16_C(20190), UINT16_C(51335), UINT16_C(35990), UINT16_C(32657), UINT16_C(52058), UINT16_C(56429), UINT16_C(15790), UINT16_C(23507) },
{ UINT16_C(14299), UINT16_C(27195), UINT16_C(36868), UINT16_C(21598), UINT16_C(23375), UINT16_C(14125), UINT16_C( 5711), UINT16_C(11906) },
{ UINT16_C(20190), UINT16_C(14299), UINT16_C(51335), UINT16_C(27195), UINT16_C(35990), UINT16_C(36868), UINT16_C(32657), UINT16_C(21598) } },
{ { UINT16_C( 2404), UINT16_C(64502), UINT16_C(34710), UINT16_C(61562), UINT16_C(59219), UINT16_C( 460), UINT16_C(40996), UINT16_C(65372) },
{ UINT16_C(38871), UINT16_C(56426), UINT16_C(51240), UINT16_C(30512), UINT16_C(23843), UINT16_C(29614), UINT16_C(12659), UINT16_C(55457) },
{ UINT16_C( 2404), UINT16_C(38871), UINT16_C(64502), UINT16_C(56426), UINT16_C(34710), UINT16_C(51240), UINT16_C(61562), UINT16_C(30512) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint16x8_t a = simde_vld1q_u16(test_vec[i].a);
simde_uint16x8_t b = simde_vld1q_u16(test_vec[i].b);
simde_uint16x8_t r = simde_vzip1q_u16(a, b);
simde_test_arm_neon_assert_equal_u16x8(r, simde_vld1q_u16(test_vec[i].r));
}
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_vzip1q_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_vzip1q_u32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint32_t a[4];
uint32_t b[4];
uint32_t r[4];
} test_vec[] = {
{ { UINT32_C(2065304680), UINT32_C( 4706323), UINT32_C( 57610732), UINT32_C(1886136178) },
{ UINT32_C(1747746222), UINT32_C(2734993287), UINT32_C(2980376650), UINT32_C(4253478037) },
{ UINT32_C(2065304680), UINT32_C(1747746222), UINT32_C( 4706323), UINT32_C(2734993287) } },
{ { UINT32_C( 192454904), UINT32_C(1561116784), UINT32_C(1130396625), UINT32_C(1370737826) },
{ UINT32_C(3501842249), UINT32_C(3648306575), UINT32_C(1116412077), UINT32_C(4231991556) },
{ UINT32_C( 192454904), UINT32_C(3501842249), UINT32_C(1561116784), UINT32_C(3648306575) } },
{ { UINT32_C( 570996914), UINT32_C(1233065080), UINT32_C( 848158607), UINT32_C(4119019692) },
{ UINT32_C(2949004320), UINT32_C(2793945849), UINT32_C(1458049874), UINT32_C(3612485413) },
{ UINT32_C( 570996914), UINT32_C(2949004320), UINT32_C(1233065080), UINT32_C(2793945849) } },
{ { UINT32_C(1475959519), UINT32_C(4271995246), UINT32_C( 70266456), UINT32_C(2398794606) },
{ UINT32_C(3896361199), UINT32_C(1284425466), UINT32_C(4272060121), UINT32_C(2111173789) },
{ UINT32_C(1475959519), UINT32_C(3896361199), UINT32_C(4271995246), UINT32_C(1284425466) } },
{ { UINT32_C(3184840527), UINT32_C(2696639816), UINT32_C( 312863651), UINT32_C(2376114078) },
{ UINT32_C(1500896863), UINT32_C(2107966372), UINT32_C( 394020729), UINT32_C(2324975931) },
{ UINT32_C(3184840527), UINT32_C(1500896863), UINT32_C(2696639816), UINT32_C(2107966372) } },
{ { UINT32_C(1749575712), UINT32_C(2164851678), UINT32_C(2375266031), UINT32_C(2887464013) },
{ UINT32_C(3053817874), UINT32_C( 221489812), UINT32_C( 740601841), UINT32_C( 565688321) },
{ UINT32_C(1749575712), UINT32_C(3053817874), UINT32_C(2164851678), UINT32_C( 221489812) } },
{ { UINT32_C(4287299361), UINT32_C(4051735298), UINT32_C(2390692929), UINT32_C(1513790024) },
{ UINT32_C(3188735786), UINT32_C(3670819817), UINT32_C(4094095603), UINT32_C(3390422441) },
{ UINT32_C(4287299361), UINT32_C(3188735786), UINT32_C(4051735298), UINT32_C(3670819817) } },
{ { UINT32_C(3217661884), UINT32_C(1940932914), UINT32_C(2768318301), UINT32_C(4110367689) },
{ UINT32_C(1672613754), UINT32_C(1178435155), UINT32_C( 406471791), UINT32_C(3202502401) },
{ UINT32_C(3217661884), UINT32_C(1672613754), UINT32_C(1940932914), UINT32_C(1178435155) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint32x4_t a = simde_vld1q_u32(test_vec[i].a);
simde_uint32x4_t b = simde_vld1q_u32(test_vec[i].b);
simde_uint32x4_t r = simde_vzip1q_u32(a, b);
simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r));
}
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_vzip1q_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_vzip1q_u64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
uint64_t a[2];
uint64_t b[2];
uint64_t r[2];
} test_vec[] = {
{ { UINT64_C( 7183801971137112578), UINT64_C(16626255232757114459) },
{ UINT64_C( 8131359811310929053), UINT64_C(16147889417916265065) },
{ UINT64_C( 7183801971137112578), UINT64_C( 8131359811310929053) } },
{ { UINT64_C(15057051385318308029), UINT64_C( 6700214673640614922) },
{ UINT64_C(15803371279345651253), UINT64_C( 1282336582655705100) },
{ UINT64_C(15057051385318308029), UINT64_C(15803371279345651253) } },
{ { UINT64_C(17115254058352082495), UINT64_C(16221964400771381764) },
{ UINT64_C( 529755678047281420), UINT64_C( 1077977485933676945) },
{ UINT64_C(17115254058352082495), UINT64_C( 529755678047281420) } },
{ { UINT64_C( 3750451961221322812), UINT64_C( 1841996491325378050) },
{ UINT64_C(17526587403435266359), UINT64_C( 2871552645751319803) },
{ UINT64_C( 3750451961221322812), UINT64_C(17526587403435266359) } },
{ { UINT64_C(16702253309784136805), UINT64_C( 1190680762967769696) },
{ UINT64_C( 921966960516931190), UINT64_C(15400815873310041001) },
{ UINT64_C(16702253309784136805), UINT64_C( 921966960516931190) } },
{ { UINT64_C(12905124458874470477), UINT64_C( 5395495782249967352) },
{ UINT64_C( 5251459535740216260), UINT64_C(13102825539333044113) },
{ UINT64_C(12905124458874470477), UINT64_C( 5251459535740216260) } },
{ { UINT64_C( 8114641523400131223), UINT64_C( 2795083225679051949) },
{ UINT64_C( 7794846792540745028), UINT64_C( 3868666430013376659) },
{ UINT64_C( 8114641523400131223), UINT64_C( 7794846792540745028) } },
{ { UINT64_C( 4786688231835932293), UINT64_C( 1369531685565345400) },
{ UINT64_C( 7692467946781080698), UINT64_C(17869743954202013226) },
{ UINT64_C( 4786688231835932293), UINT64_C( 7692467946781080698) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_uint64x2_t a = simde_vld1q_u64(test_vec[i].a);
simde_uint64x2_t b = simde_vld1q_u64(test_vec[i].b);
simde_uint64x2_t r = simde_vzip1q_u64(a, b);
simde_test_arm_neon_assert_equal_u64x2(r, simde_vld1q_u64(test_vec[i].r));
}
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_vzip1q_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_vzip1_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(207), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(120), SIMDE_POLY8_C(200), SIMDE_POLY8_C(106), SIMDE_POLY8_C(207), SIMDE_POLY8_C(167) },
{ SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 62), SIMDE_POLY8_C(249), SIMDE_POLY8_C(184), SIMDE_POLY8_C(197), SIMDE_POLY8_C(224) },
{ SIMDE_POLY8_C(207), SIMDE_POLY8_C( 5), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(155), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 62) } },
{ { SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(180), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(243) },
{ SIMDE_POLY8_C(213), SIMDE_POLY8_C( 60), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(154) },
{ SIMDE_POLY8_C( 52), SIMDE_POLY8_C(213), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 8) } },
{ { SIMDE_POLY8_C(244), SIMDE_POLY8_C(149), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(188), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(225), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 5) },
{ SIMDE_POLY8_C(248), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(241), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 9), SIMDE_POLY8_C(209), SIMDE_POLY8_C(235) },
{ SIMDE_POLY8_C(244), SIMDE_POLY8_C(248), SIMDE_POLY8_C(149), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(188), SIMDE_POLY8_C(241) } },
{ { SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(254), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 4), SIMDE_POLY8_C(182), SIMDE_POLY8_C(250) },
{ SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 11), SIMDE_POLY8_C(126), SIMDE_POLY8_C( 76), SIMDE_POLY8_C(165), SIMDE_POLY8_C(114) },
{ SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 57), SIMDE_POLY8_C(254), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 11) } },
{ { SIMDE_POLY8_C(225), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(225), SIMDE_POLY8_C(153), SIMDE_POLY8_C(147), SIMDE_POLY8_C(231), SIMDE_POLY8_C(145) },
{ SIMDE_POLY8_C(146), SIMDE_POLY8_C( 43), SIMDE_POLY8_C(131), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 67) },
{ SIMDE_POLY8_C(225), SIMDE_POLY8_C(146), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(131), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 73) } },
{ { SIMDE_POLY8_C(118), SIMDE_POLY8_C( 50), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(155), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(188), SIMDE_POLY8_C(150), SIMDE_POLY8_C(120) },
{ SIMDE_POLY8_C(245), SIMDE_POLY8_C(153), SIMDE_POLY8_C(131), SIMDE_POLY8_C(116), SIMDE_POLY8_C(229), SIMDE_POLY8_C( 41), SIMDE_POLY8_C(230), SIMDE_POLY8_C(198) },
{ SIMDE_POLY8_C(118), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 50), SIMDE_POLY8_C(153), SIMDE_POLY8_C( 6), SIMDE_POLY8_C(131), SIMDE_POLY8_C(155), SIMDE_POLY8_C(116) } },
{ { SIMDE_POLY8_C(225), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(168), SIMDE_POLY8_C(122), SIMDE_POLY8_C(168), SIMDE_POLY8_C(143), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 58) },
{ SIMDE_POLY8_C(186), SIMDE_POLY8_C(143), SIMDE_POLY8_C(131), SIMDE_POLY8_C(238), SIMDE_POLY8_C(227), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 89) },
{ SIMDE_POLY8_C(225), SIMDE_POLY8_C(186), SIMDE_POLY8_C( 21), SIMDE_POLY8_C(143), SIMDE_POLY8_C(168), SIMDE_POLY8_C(131), SIMDE_POLY8_C(122), SIMDE_POLY8_C(238) } },
{ { SIMDE_POLY8_C(234), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 33), SIMDE_POLY8_C(243), SIMDE_POLY8_C(139), SIMDE_POLY8_C(153), SIMDE_POLY8_C(233) },
{ SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 29), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 67), SIMDE_POLY8_C(207), SIMDE_POLY8_C( 39) },
{ SIMDE_POLY8_C(234), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 29), SIMDE_POLY8_C(245), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 9) } },
};
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_vzip1_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_vzip1_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_vzip1_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(54503), SIMDE_POLY16_C(20876), SIMDE_POLY16_C(27990), SIMDE_POLY16_C( 1388) },
{ SIMDE_POLY16_C( 5134), SIMDE_POLY16_C(61930), SIMDE_POLY16_C(11315), SIMDE_POLY16_C(24246) },
{ SIMDE_POLY16_C(54503), SIMDE_POLY16_C( 5134), SIMDE_POLY16_C(20876), SIMDE_POLY16_C(61930) } },
{ { SIMDE_POLY16_C(54834), SIMDE_POLY16_C(28009), SIMDE_POLY16_C( 5311), SIMDE_POLY16_C(11808) },
{ SIMDE_POLY16_C(44084), SIMDE_POLY16_C(65289), SIMDE_POLY16_C( 886), SIMDE_POLY16_C(24131) },
{ SIMDE_POLY16_C(54834), SIMDE_POLY16_C(44084), SIMDE_POLY16_C(28009), SIMDE_POLY16_C(65289) } },
{ { SIMDE_POLY16_C(53207), SIMDE_POLY16_C(11951), SIMDE_POLY16_C( 6972), SIMDE_POLY16_C(18995) },
{ SIMDE_POLY16_C( 7471), SIMDE_POLY16_C(25147), SIMDE_POLY16_C(61770), SIMDE_POLY16_C(31937) },
{ SIMDE_POLY16_C(53207), SIMDE_POLY16_C( 7471), SIMDE_POLY16_C(11951), SIMDE_POLY16_C(25147) } },
{ { SIMDE_POLY16_C(10951), SIMDE_POLY16_C(34537), SIMDE_POLY16_C( 2622), SIMDE_POLY16_C(29364) },
{ SIMDE_POLY16_C(48822), SIMDE_POLY16_C(11377), SIMDE_POLY16_C(46273), SIMDE_POLY16_C(39050) },
{ SIMDE_POLY16_C(10951), SIMDE_POLY16_C(48822), SIMDE_POLY16_C(34537), SIMDE_POLY16_C(11377) } },
{ { SIMDE_POLY16_C(14723), SIMDE_POLY16_C(49094), SIMDE_POLY16_C(63828), SIMDE_POLY16_C(33545) },
{ SIMDE_POLY16_C(17431), SIMDE_POLY16_C(25062), SIMDE_POLY16_C(42805), SIMDE_POLY16_C(64989) },
{ SIMDE_POLY16_C(14723), SIMDE_POLY16_C(17431), SIMDE_POLY16_C(49094), SIMDE_POLY16_C(25062) } },
{ { SIMDE_POLY16_C(51153), SIMDE_POLY16_C( 3971), SIMDE_POLY16_C(14545), SIMDE_POLY16_C(34689) },
{ SIMDE_POLY16_C(62198), SIMDE_POLY16_C(47027), SIMDE_POLY16_C(16039), SIMDE_POLY16_C(10831) },
{ SIMDE_POLY16_C(51153), SIMDE_POLY16_C(62198), SIMDE_POLY16_C( 3971), SIMDE_POLY16_C(47027) } },
{ { SIMDE_POLY16_C( 5751), SIMDE_POLY16_C(52458), SIMDE_POLY16_C(62223), SIMDE_POLY16_C( 9807) },
{ SIMDE_POLY16_C(13624), SIMDE_POLY16_C(28039), SIMDE_POLY16_C(26076), SIMDE_POLY16_C(44394) },
{ SIMDE_POLY16_C( 5751), SIMDE_POLY16_C(13624), SIMDE_POLY16_C(52458), SIMDE_POLY16_C(28039) } },
{ { SIMDE_POLY16_C(60972), SIMDE_POLY16_C(64956), SIMDE_POLY16_C(15654), SIMDE_POLY16_C( 7300) },
{ SIMDE_POLY16_C(14128), SIMDE_POLY16_C(55251), SIMDE_POLY16_C( 8821), SIMDE_POLY16_C(60673) },
{ SIMDE_POLY16_C(60972), SIMDE_POLY16_C(14128), SIMDE_POLY16_C(64956), SIMDE_POLY16_C(55251) } },
};
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_vzip1_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_vzip1_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_vzip1q_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(100), SIMDE_POLY8_C(203), SIMDE_POLY8_C(215), SIMDE_POLY8_C(200), SIMDE_POLY8_C(136), SIMDE_POLY8_C(145), SIMDE_POLY8_C(227), SIMDE_POLY8_C(166),
SIMDE_POLY8_C( 22), SIMDE_POLY8_C(195), SIMDE_POLY8_C(118), SIMDE_POLY8_C(159), SIMDE_POLY8_C(105), SIMDE_POLY8_C(241), SIMDE_POLY8_C(107), SIMDE_POLY8_C(158) },
{ SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(155), SIMDE_POLY8_C(249), SIMDE_POLY8_C(100), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(190), SIMDE_POLY8_C( 51),
SIMDE_POLY8_C( 43), SIMDE_POLY8_C(242), SIMDE_POLY8_C(209), SIMDE_POLY8_C( 1), SIMDE_POLY8_C(234), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 78) },
{ SIMDE_POLY8_C(100), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(203), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(215), SIMDE_POLY8_C(155), SIMDE_POLY8_C(200), SIMDE_POLY8_C(249),
SIMDE_POLY8_C(136), SIMDE_POLY8_C(100), SIMDE_POLY8_C(145), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(227), SIMDE_POLY8_C(190), SIMDE_POLY8_C(166), SIMDE_POLY8_C( 51) } },
{ { SIMDE_POLY8_C(113), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 22), SIMDE_POLY8_C(250), SIMDE_POLY8_C(149), SIMDE_POLY8_C(249), SIMDE_POLY8_C(160), SIMDE_POLY8_C(171),
SIMDE_POLY8_C(188), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(182), SIMDE_POLY8_C(196), SIMDE_POLY8_C( 60) },
{ SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(184), SIMDE_POLY8_C(244), SIMDE_POLY8_C(151), SIMDE_POLY8_C(227),
SIMDE_POLY8_C(230), SIMDE_POLY8_C(104), SIMDE_POLY8_C(229), SIMDE_POLY8_C(208), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 30), SIMDE_POLY8_C(128) },
{ SIMDE_POLY8_C(113), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 4), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 54), SIMDE_POLY8_C(250), SIMDE_POLY8_C( 99),
SIMDE_POLY8_C(149), SIMDE_POLY8_C(184), SIMDE_POLY8_C(249), SIMDE_POLY8_C(244), SIMDE_POLY8_C(160), SIMDE_POLY8_C(151), SIMDE_POLY8_C(171), SIMDE_POLY8_C(227) } },
{ { SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(122), SIMDE_POLY8_C(171), SIMDE_POLY8_C( 46), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(235),
SIMDE_POLY8_C( 48), SIMDE_POLY8_C(161), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 87), SIMDE_POLY8_C(213), SIMDE_POLY8_C(116), SIMDE_POLY8_C( 86) },
{ SIMDE_POLY8_C( 53), SIMDE_POLY8_C(170), SIMDE_POLY8_C(186), SIMDE_POLY8_C(237), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 81), SIMDE_POLY8_C(208), SIMDE_POLY8_C(132),
SIMDE_POLY8_C(185), SIMDE_POLY8_C(181), SIMDE_POLY8_C( 84), SIMDE_POLY8_C(199), SIMDE_POLY8_C(199), SIMDE_POLY8_C(115), SIMDE_POLY8_C( 71), SIMDE_POLY8_C(220) },
{ SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 53), SIMDE_POLY8_C(170), SIMDE_POLY8_C(122), SIMDE_POLY8_C(186), SIMDE_POLY8_C(171), SIMDE_POLY8_C(237),
SIMDE_POLY8_C( 46), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 86), SIMDE_POLY8_C(208), SIMDE_POLY8_C(235), SIMDE_POLY8_C(132) } },
{ { SIMDE_POLY8_C(168), SIMDE_POLY8_C(193), SIMDE_POLY8_C(135), SIMDE_POLY8_C(214), SIMDE_POLY8_C(219), SIMDE_POLY8_C(222), SIMDE_POLY8_C(193), SIMDE_POLY8_C( 12),
SIMDE_POLY8_C(127), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(215), SIMDE_POLY8_C(168), SIMDE_POLY8_C(184), SIMDE_POLY8_C( 45), SIMDE_POLY8_C(221) },
{ SIMDE_POLY8_C( 99), SIMDE_POLY8_C(231), SIMDE_POLY8_C(202), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(154), SIMDE_POLY8_C(134), SIMDE_POLY8_C(241),
SIMDE_POLY8_C( 80), SIMDE_POLY8_C(218), SIMDE_POLY8_C(185), SIMDE_POLY8_C( 23), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(243), SIMDE_POLY8_C(245) },
{ SIMDE_POLY8_C(168), SIMDE_POLY8_C( 99), SIMDE_POLY8_C(193), SIMDE_POLY8_C(231), SIMDE_POLY8_C(135), SIMDE_POLY8_C(202), SIMDE_POLY8_C(214), SIMDE_POLY8_C( 1),
SIMDE_POLY8_C(219), SIMDE_POLY8_C( 56), SIMDE_POLY8_C(222), SIMDE_POLY8_C(154), SIMDE_POLY8_C(193), SIMDE_POLY8_C(134), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(241) } },
{ { SIMDE_POLY8_C(194), SIMDE_POLY8_C(123), SIMDE_POLY8_C(204), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 89), SIMDE_POLY8_C(141), SIMDE_POLY8_C(169), SIMDE_POLY8_C(216),
SIMDE_POLY8_C( 96), SIMDE_POLY8_C(237), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 8), SIMDE_POLY8_C(166), SIMDE_POLY8_C(221), SIMDE_POLY8_C(229), SIMDE_POLY8_C( 9) },
{ SIMDE_POLY8_C(196), SIMDE_POLY8_C(175), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(253), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(144), SIMDE_POLY8_C(238), SIMDE_POLY8_C(153),
SIMDE_POLY8_C(107), SIMDE_POLY8_C(167), SIMDE_POLY8_C(176), SIMDE_POLY8_C(184), SIMDE_POLY8_C(168), SIMDE_POLY8_C(164), SIMDE_POLY8_C(174), SIMDE_POLY8_C(106) },
{ SIMDE_POLY8_C(194), SIMDE_POLY8_C(196), SIMDE_POLY8_C(123), SIMDE_POLY8_C(175), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 10), SIMDE_POLY8_C(157), SIMDE_POLY8_C(253),
SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 73), SIMDE_POLY8_C(141), SIMDE_POLY8_C(144), SIMDE_POLY8_C(169), SIMDE_POLY8_C(238), SIMDE_POLY8_C(216), SIMDE_POLY8_C(153) } },
{ { SIMDE_POLY8_C( 31), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(177), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(103),
SIMDE_POLY8_C(158), SIMDE_POLY8_C( 0), SIMDE_POLY8_C(111), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(221), SIMDE_POLY8_C( 84), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(161) },
{ SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 88), SIMDE_POLY8_C(158), SIMDE_POLY8_C( 77), SIMDE_POLY8_C(232), SIMDE_POLY8_C(141), SIMDE_POLY8_C(230), SIMDE_POLY8_C( 83),
SIMDE_POLY8_C( 52), SIMDE_POLY8_C(151), SIMDE_POLY8_C( 12), SIMDE_POLY8_C(220), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(186), SIMDE_POLY8_C( 70), SIMDE_POLY8_C( 90) },
{ SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 3), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 7), SIMDE_POLY8_C(158), SIMDE_POLY8_C(120), SIMDE_POLY8_C( 77),
SIMDE_POLY8_C( 7), SIMDE_POLY8_C(232), SIMDE_POLY8_C(177), SIMDE_POLY8_C(141), SIMDE_POLY8_C( 80), SIMDE_POLY8_C(230), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 83) } },
{ { SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 78), SIMDE_POLY8_C(210), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(163), SIMDE_POLY8_C(157),
SIMDE_POLY8_C( 34), SIMDE_POLY8_C( 18), SIMDE_POLY8_C(226), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(103), SIMDE_POLY8_C( 47), SIMDE_POLY8_C(161), SIMDE_POLY8_C(106) },
{ SIMDE_POLY8_C(135), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(183), SIMDE_POLY8_C(112), SIMDE_POLY8_C(204), SIMDE_POLY8_C(158), SIMDE_POLY8_C(195), SIMDE_POLY8_C( 1),
SIMDE_POLY8_C( 53), SIMDE_POLY8_C(207), SIMDE_POLY8_C(221), SIMDE_POLY8_C(112), SIMDE_POLY8_C(137), SIMDE_POLY8_C( 36), SIMDE_POLY8_C(202), SIMDE_POLY8_C(189) },
{ SIMDE_POLY8_C( 52), SIMDE_POLY8_C(135), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 63), SIMDE_POLY8_C(210), SIMDE_POLY8_C(183), SIMDE_POLY8_C( 59), SIMDE_POLY8_C(112),
SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C(204), SIMDE_POLY8_C( 34), SIMDE_POLY8_C(158), SIMDE_POLY8_C(163), SIMDE_POLY8_C(195), SIMDE_POLY8_C(157), SIMDE_POLY8_C( 1) } },
{ { SIMDE_POLY8_C(114), SIMDE_POLY8_C(156), SIMDE_POLY8_C(249), SIMDE_POLY8_C(113), SIMDE_POLY8_C(190), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(225),
SIMDE_POLY8_C(174), SIMDE_POLY8_C(240), SIMDE_POLY8_C(224), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 32), SIMDE_POLY8_C(129), SIMDE_POLY8_C(128), SIMDE_POLY8_C(167) },
{ SIMDE_POLY8_C(193), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(141), SIMDE_POLY8_C(213), SIMDE_POLY8_C(219), SIMDE_POLY8_C(142), SIMDE_POLY8_C( 10),
SIMDE_POLY8_C(170), SIMDE_POLY8_C(108), SIMDE_POLY8_C(122), SIMDE_POLY8_C( 52), SIMDE_POLY8_C(144), SIMDE_POLY8_C( 68), SIMDE_POLY8_C(241), SIMDE_POLY8_C( 2) },
{ SIMDE_POLY8_C(114), SIMDE_POLY8_C(193), SIMDE_POLY8_C(156), SIMDE_POLY8_C( 55), SIMDE_POLY8_C(249), SIMDE_POLY8_C( 23), SIMDE_POLY8_C(113), SIMDE_POLY8_C(141),
SIMDE_POLY8_C(190), SIMDE_POLY8_C(213), SIMDE_POLY8_C(156), SIMDE_POLY8_C(219), SIMDE_POLY8_C( 14), SIMDE_POLY8_C(142), SIMDE_POLY8_C(225), SIMDE_POLY8_C( 10) } },
};
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_vzip1q_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_vzip1q_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_vzip1q_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(30177), SIMDE_POLY16_C(25079), SIMDE_POLY16_C(19204), SIMDE_POLY16_C( 1663), SIMDE_POLY16_C(38129), SIMDE_POLY16_C(42655), SIMDE_POLY16_C( 5776), SIMDE_POLY16_C( 1946) },
{ SIMDE_POLY16_C( 7669), SIMDE_POLY16_C(25887), SIMDE_POLY16_C(18190), SIMDE_POLY16_C(29117), SIMDE_POLY16_C(38689), SIMDE_POLY16_C(11637), SIMDE_POLY16_C(17900), SIMDE_POLY16_C(52555) },
{ SIMDE_POLY16_C(30177), SIMDE_POLY16_C( 7669), SIMDE_POLY16_C(25079), SIMDE_POLY16_C(25887), SIMDE_POLY16_C(19204), SIMDE_POLY16_C(18190), SIMDE_POLY16_C( 1663), SIMDE_POLY16_C(29117) } },
{ { SIMDE_POLY16_C(17082), SIMDE_POLY16_C(48686), SIMDE_POLY16_C(44686), SIMDE_POLY16_C(32709), SIMDE_POLY16_C(25666), SIMDE_POLY16_C(53797), SIMDE_POLY16_C(49275), SIMDE_POLY16_C(28889) },
{ SIMDE_POLY16_C(63709), SIMDE_POLY16_C(60374), SIMDE_POLY16_C(37696), SIMDE_POLY16_C(24924), SIMDE_POLY16_C(53802), SIMDE_POLY16_C( 6030), SIMDE_POLY16_C(55575), SIMDE_POLY16_C(53732) },
{ SIMDE_POLY16_C(17082), SIMDE_POLY16_C(63709), SIMDE_POLY16_C(48686), SIMDE_POLY16_C(60374), SIMDE_POLY16_C(44686), SIMDE_POLY16_C(37696), SIMDE_POLY16_C(32709), SIMDE_POLY16_C(24924) } },
{ { SIMDE_POLY16_C( 4892), SIMDE_POLY16_C(43663), SIMDE_POLY16_C(21697), SIMDE_POLY16_C( 809), SIMDE_POLY16_C(20409), SIMDE_POLY16_C(13526), SIMDE_POLY16_C(44815), SIMDE_POLY16_C(60580) },
{ SIMDE_POLY16_C(31400), SIMDE_POLY16_C(59607), SIMDE_POLY16_C(13325), SIMDE_POLY16_C(14409), SIMDE_POLY16_C(55302), SIMDE_POLY16_C( 7503), SIMDE_POLY16_C(13233), SIMDE_POLY16_C(52718) },
{ SIMDE_POLY16_C( 4892), SIMDE_POLY16_C(31400), SIMDE_POLY16_C(43663), SIMDE_POLY16_C(59607), SIMDE_POLY16_C(21697), SIMDE_POLY16_C(13325), SIMDE_POLY16_C( 809), SIMDE_POLY16_C(14409) } },
{ { SIMDE_POLY16_C(32070), SIMDE_POLY16_C( 1911), SIMDE_POLY16_C(41426), SIMDE_POLY16_C(35595), SIMDE_POLY16_C(57840), SIMDE_POLY16_C(65471), SIMDE_POLY16_C(25488), SIMDE_POLY16_C(14571) },
{ SIMDE_POLY16_C(49886), SIMDE_POLY16_C(60192), SIMDE_POLY16_C(27382), SIMDE_POLY16_C(64547), SIMDE_POLY16_C(29250), SIMDE_POLY16_C(62233), SIMDE_POLY16_C( 1958), SIMDE_POLY16_C(60609) },
{ SIMDE_POLY16_C(32070), SIMDE_POLY16_C(49886), SIMDE_POLY16_C( 1911), SIMDE_POLY16_C(60192), SIMDE_POLY16_C(41426), SIMDE_POLY16_C(27382), SIMDE_POLY16_C(35595), SIMDE_POLY16_C(64547) } },
{ { SIMDE_POLY16_C(14469), SIMDE_POLY16_C(22516), SIMDE_POLY16_C(65497), SIMDE_POLY16_C(51682), SIMDE_POLY16_C(41440), SIMDE_POLY16_C(28872), SIMDE_POLY16_C(45828), SIMDE_POLY16_C(58025) },
{ SIMDE_POLY16_C(51574), SIMDE_POLY16_C(27854), SIMDE_POLY16_C(61747), SIMDE_POLY16_C(30057), SIMDE_POLY16_C(33380), SIMDE_POLY16_C( 2665), SIMDE_POLY16_C(10890), SIMDE_POLY16_C( 4086) },
{ SIMDE_POLY16_C(14469), SIMDE_POLY16_C(51574), SIMDE_POLY16_C(22516), SIMDE_POLY16_C(27854), SIMDE_POLY16_C(65497), SIMDE_POLY16_C(61747), SIMDE_POLY16_C(51682), SIMDE_POLY16_C(30057) } },
{ { SIMDE_POLY16_C(60002), SIMDE_POLY16_C(15462), SIMDE_POLY16_C(18665), SIMDE_POLY16_C(51461), SIMDE_POLY16_C(52969), SIMDE_POLY16_C(60730), SIMDE_POLY16_C(58241), SIMDE_POLY16_C(63440) },
{ SIMDE_POLY16_C(40620), SIMDE_POLY16_C(57444), SIMDE_POLY16_C(52623), SIMDE_POLY16_C(62293), SIMDE_POLY16_C(48719), SIMDE_POLY16_C(55805), SIMDE_POLY16_C(62696), SIMDE_POLY16_C(19432) },
{ SIMDE_POLY16_C(60002), SIMDE_POLY16_C(40620), SIMDE_POLY16_C(15462), SIMDE_POLY16_C(57444), SIMDE_POLY16_C(18665), SIMDE_POLY16_C(52623), SIMDE_POLY16_C(51461), SIMDE_POLY16_C(62293) } },
{ { SIMDE_POLY16_C(20190), SIMDE_POLY16_C(51335), SIMDE_POLY16_C(35990), SIMDE_POLY16_C(32657), SIMDE_POLY16_C(52058), SIMDE_POLY16_C(56429), SIMDE_POLY16_C(15790), SIMDE_POLY16_C(23507) },
{ SIMDE_POLY16_C(14299), SIMDE_POLY16_C(27195), SIMDE_POLY16_C(36868), SIMDE_POLY16_C(21598), SIMDE_POLY16_C(23375), SIMDE_POLY16_C(14125), SIMDE_POLY16_C( 5711), SIMDE_POLY16_C(11906) },
{ SIMDE_POLY16_C(20190), SIMDE_POLY16_C(14299), SIMDE_POLY16_C(51335), SIMDE_POLY16_C(27195), SIMDE_POLY16_C(35990), SIMDE_POLY16_C(36868), SIMDE_POLY16_C(32657), SIMDE_POLY16_C(21598) } },
{ { SIMDE_POLY16_C( 2404), SIMDE_POLY16_C(64502), SIMDE_POLY16_C(34710), SIMDE_POLY16_C(61562), SIMDE_POLY16_C(59219), SIMDE_POLY16_C( 460), SIMDE_POLY16_C(40996), SIMDE_POLY16_C(65372) },
{ SIMDE_POLY16_C(38871), SIMDE_POLY16_C(56426), SIMDE_POLY16_C(51240), SIMDE_POLY16_C(30512), SIMDE_POLY16_C(23843), SIMDE_POLY16_C(29614), SIMDE_POLY16_C(12659), SIMDE_POLY16_C(55457) },
{ SIMDE_POLY16_C( 2404), SIMDE_POLY16_C(38871), SIMDE_POLY16_C(64502), SIMDE_POLY16_C(56426), SIMDE_POLY16_C(34710), SIMDE_POLY16_C(51240), SIMDE_POLY16_C(61562), SIMDE_POLY16_C(30512) } },
};
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_vzip1q_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_vzip1q_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_vzip1q_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( 7183801971137112578), SIMDE_POLY64_C(16626255232757114459) },
{ SIMDE_POLY64_C( 8131359811310929053), SIMDE_POLY64_C(16147889417916265065) },
{ SIMDE_POLY64_C( 7183801971137112578), SIMDE_POLY64_C( 8131359811310929053) } },
{ { SIMDE_POLY64_C(15057051385318308029), SIMDE_POLY64_C( 6700214673640614922) },
{ SIMDE_POLY64_C(15803371279345651253), SIMDE_POLY64_C( 1282336582655705100) },
{ SIMDE_POLY64_C(15057051385318308029), SIMDE_POLY64_C(15803371279345651253) } },
{ { SIMDE_POLY64_C(17115254058352082495), SIMDE_POLY64_C(16221964400771381764) },
{ SIMDE_POLY64_C( 529755678047281420), SIMDE_POLY64_C( 1077977485933676945) },
{ SIMDE_POLY64_C(17115254058352082495), SIMDE_POLY64_C( 529755678047281420) } },
{ { SIMDE_POLY64_C( 3750451961221322812), SIMDE_POLY64_C( 1841996491325378050) },
{ SIMDE_POLY64_C(17526587403435266359), SIMDE_POLY64_C( 2871552645751319803) },
{ SIMDE_POLY64_C( 3750451961221322812), SIMDE_POLY64_C(17526587403435266359) } },
{ { SIMDE_POLY64_C(16702253309784136805), SIMDE_POLY64_C( 1190680762967769696) },
{ SIMDE_POLY64_C( 921966960516931190), SIMDE_POLY64_C(15400815873310041001) },
{ SIMDE_POLY64_C(16702253309784136805), SIMDE_POLY64_C( 921966960516931190) } },
{ { SIMDE_POLY64_C(12905124458874470477), SIMDE_POLY64_C( 5395495782249967352) },
{ SIMDE_POLY64_C( 5251459535740216260), SIMDE_POLY64_C(13102825539333044113) },
{ SIMDE_POLY64_C(12905124458874470477), SIMDE_POLY64_C( 5251459535740216260) } },
{ { SIMDE_POLY64_C( 8114641523400131223), SIMDE_POLY64_C( 2795083225679051949) },
{ SIMDE_POLY64_C( 7794846792540745028), SIMDE_POLY64_C( 3868666430013376659) },
{ SIMDE_POLY64_C( 8114641523400131223), SIMDE_POLY64_C( 7794846792540745028) } },
{ { SIMDE_POLY64_C( 4786688231835932293), SIMDE_POLY64_C( 1369531685565345400) },
{ SIMDE_POLY64_C( 7692467946781080698), SIMDE_POLY64_C(17869743954202013226) },
{ SIMDE_POLY64_C( 4786688231835932293), SIMDE_POLY64_C( 7692467946781080698) } },
};
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_vzip1q_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_vzip1q_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(vzip1_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_s8)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_s16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_s32)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_s64)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_u8)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_u16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_u32)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_u64)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_p8)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_p16)
SIMDE_TEST_FUNC_LIST_ENTRY(vzip1q_p64)
SIMDE_TEST_FUNC_LIST_END
#include <test/arm/neon/test-neon-footer.h>