1272 lines
76 KiB
C
1272 lines
76 KiB
C
|
|
#define SIMDE_TEST_ARM_NEON_INSN add
|
||
|
|
|
||
|
|
#include "test-neon.h"
|
||
|
|
#include "../../../simde/arm/neon/add.h"
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddh_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
#if 1
|
||
|
|
struct {
|
||
|
|
simde_float16 a;
|
||
|
|
simde_float16 b;
|
||
|
|
simde_float16 r;
|
||
|
|
} test_vec[] = {
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 167.25),
|
||
|
|
SIMDE_FLOAT16_VALUE( -952.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -785.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -942.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( 623.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( -319.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -1.52),
|
||
|
|
SIMDE_FLOAT16_VALUE( -118.88),
|
||
|
|
SIMDE_FLOAT16_VALUE( -120.38) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -734.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -63.38),
|
||
|
|
SIMDE_FLOAT16_VALUE( -797.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -352.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( 409.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( 57.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 191.75),
|
||
|
|
SIMDE_FLOAT16_VALUE( -388.75),
|
||
|
|
SIMDE_FLOAT16_VALUE( -197.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 835.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( -550.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( 285.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -529.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -873.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( -1402.00) }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_float16 r = simde_vaddh_f16(test_vec[i].a, test_vec[i].b);
|
||
|
|
|
||
|
|
simde_assert_equal_f16(r, test_vec[i].r, 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
#else
|
||
|
|
fputc('\n', stdout);
|
||
|
|
for (int i = 0 ; i < 8 ; i++) {
|
||
|
|
simde_float16 a = simde_test_codegen_random_f16(-1000.0f, 1000.0f);
|
||
|
|
simde_float16 b = simde_test_codegen_random_f16(-1000.0f, 1000.0f);
|
||
|
|
simde_float16 r = simde_vaddh_f16(a, b);
|
||
|
|
|
||
|
|
simde_test_codegen_write_f16(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||
|
|
simde_test_codegen_write_f16(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||
|
|
simde_test_codegen_write_f16(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||
|
|
}
|
||
|
|
return 1;
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddd_s64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
#if 1
|
||
|
|
static const struct {
|
||
|
|
int64_t a;
|
||
|
|
int64_t b;
|
||
|
|
int64_t r;
|
||
|
|
} test_vec[] = {
|
||
|
|
{ -INT64_C( 5376176558586261779),
|
||
|
|
-INT64_C( 8975014256303024679),
|
||
|
|
INT64_C( 4095553258820265158) },
|
||
|
|
{ INT64_C( 4193233660194686354),
|
||
|
|
INT64_C( 8392010986138408549),
|
||
|
|
-INT64_C( 5861499427376456713) },
|
||
|
|
{ -INT64_C( 498686658264423049),
|
||
|
|
-INT64_C( 235223563850804956),
|
||
|
|
-INT64_C( 733910222115228005) },
|
||
|
|
{ -INT64_C( 7287872900825752874),
|
||
|
|
-INT64_C( 5631607047233613604),
|
||
|
|
INT64_C( 5527264125650185138) },
|
||
|
|
{ INT64_C( 4017813484947424424),
|
||
|
|
-INT64_C( 3919207051327069898),
|
||
|
|
INT64_C( 98606433620354526) },
|
||
|
|
{ -INT64_C( 3110218261649903353),
|
||
|
|
INT64_C( 1009950248106779417),
|
||
|
|
-INT64_C( 2100268013543123936) },
|
||
|
|
{ INT64_C( 8007005661493138900),
|
||
|
|
-INT64_C( 4253741394523353286),
|
||
|
|
INT64_C( 3753264266969785614) },
|
||
|
|
{ -INT64_C( 4311396562388294819),
|
||
|
|
INT64_C( 5057573658044097211),
|
||
|
|
INT64_C( 746177095655802392) }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
int64_t r = simde_vaddd_s64(test_vec[i].a, test_vec[i].b);
|
||
|
|
|
||
|
|
simde_assert_equal_i64(r, test_vec[i].r);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
#else
|
||
|
|
fputc('\n', stdout);
|
||
|
|
for (int i = 0 ; i < 8 ; i++) {
|
||
|
|
int64_t a = simde_test_codegen_random_i64();
|
||
|
|
int64_t b = simde_test_codegen_random_i64();
|
||
|
|
int64_t r = simde_vaddd_s64(a, b);
|
||
|
|
|
||
|
|
simde_test_codegen_write_i64(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||
|
|
simde_test_codegen_write_i64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||
|
|
simde_test_codegen_write_i64(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||
|
|
}
|
||
|
|
return 1;
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddd_u64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
#if 1
|
||
|
|
static const struct {
|
||
|
|
uint64_t a;
|
||
|
|
uint64_t b;
|
||
|
|
uint64_t r;
|
||
|
|
} test_vec[] = {
|
||
|
|
{ UINT64_C(15770000197539399473),
|
||
|
|
UINT64_C(17536172067039799771),
|
||
|
|
UINT64_C(14859428190869647628) },
|
||
|
|
{ UINT64_C(17353057886393621858),
|
||
|
|
UINT64_C( 3930588065693821396),
|
||
|
|
UINT64_C( 2836901878377891638) },
|
||
|
|
{ UINT64_C(16195923950262401352),
|
||
|
|
UINT64_C( 3237477675399957348),
|
||
|
|
UINT64_C( 986657551952807084) },
|
||
|
|
{ UINT64_C( 8959642801591104818),
|
||
|
|
UINT64_C(17451817626807527669),
|
||
|
|
UINT64_C( 7964716354689080871) },
|
||
|
|
{ UINT64_C(12821359242969338377),
|
||
|
|
UINT64_C( 7809127654626125417),
|
||
|
|
UINT64_C( 2183742823885912178) },
|
||
|
|
{ UINT64_C(11092975718023534798),
|
||
|
|
UINT64_C( 1022251167223362963),
|
||
|
|
UINT64_C(12115226885246897761) },
|
||
|
|
{ UINT64_C( 1266930590655711894),
|
||
|
|
UINT64_C(12040272284058140784),
|
||
|
|
UINT64_C(13307202874713852678) },
|
||
|
|
{ UINT64_C(12139750857182669372),
|
||
|
|
UINT64_C( 7482753672160808133),
|
||
|
|
UINT64_C( 1175760455633925889) }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
uint64_t r = simde_vaddd_u64(test_vec[i].a, test_vec[i].b);
|
||
|
|
|
||
|
|
simde_assert_equal_u64(r, test_vec[i].r);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
#else
|
||
|
|
fputc('\n', stdout);
|
||
|
|
for (int i = 0 ; i < 8 ; i++) {
|
||
|
|
uint64_t a = simde_test_codegen_random_u64();
|
||
|
|
uint64_t b = simde_test_codegen_random_u64();
|
||
|
|
uint64_t r = simde_vaddd_u64(a, b);
|
||
|
|
|
||
|
|
simde_test_codegen_write_u64(2, a, SIMDE_TEST_VEC_POS_FIRST);
|
||
|
|
simde_test_codegen_write_u64(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
|
||
|
|
simde_test_codegen_write_u64(2, r, SIMDE_TEST_VEC_POS_LAST);
|
||
|
|
}
|
||
|
|
return 1;
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
#if 1
|
||
|
|
struct {
|
||
|
|
simde_float16 a[4];
|
||
|
|
simde_float16 b[4];
|
||
|
|
simde_float16 r[4];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -49.28), SIMDE_FLOAT16_VALUE( -109.00), SIMDE_FLOAT16_VALUE( -626.50), SIMDE_FLOAT16_VALUE( -567.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -178.88), SIMDE_FLOAT16_VALUE( 10.22), SIMDE_FLOAT16_VALUE( 976.50), SIMDE_FLOAT16_VALUE( -31.19) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -228.12), SIMDE_FLOAT16_VALUE( -98.75), SIMDE_FLOAT16_VALUE( 350.00), SIMDE_FLOAT16_VALUE( -598.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -226.00), SIMDE_FLOAT16_VALUE( -520.50), SIMDE_FLOAT16_VALUE( -252.38), SIMDE_FLOAT16_VALUE( -407.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 89.44), SIMDE_FLOAT16_VALUE( -200.50), SIMDE_FLOAT16_VALUE( -439.75), SIMDE_FLOAT16_VALUE( -450.75) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -136.50), SIMDE_FLOAT16_VALUE( -721.00), SIMDE_FLOAT16_VALUE( -692.00), SIMDE_FLOAT16_VALUE( -858.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -833.00), SIMDE_FLOAT16_VALUE( -714.00), SIMDE_FLOAT16_VALUE( 428.50), SIMDE_FLOAT16_VALUE( 871.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -157.12), SIMDE_FLOAT16_VALUE( 972.50), SIMDE_FLOAT16_VALUE( 298.75), SIMDE_FLOAT16_VALUE( -919.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -990.00), SIMDE_FLOAT16_VALUE( 258.50), SIMDE_FLOAT16_VALUE( 727.00), SIMDE_FLOAT16_VALUE( -48.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 488.00), SIMDE_FLOAT16_VALUE( 112.56), SIMDE_FLOAT16_VALUE( 58.66), SIMDE_FLOAT16_VALUE( 879.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 129.00), SIMDE_FLOAT16_VALUE( -858.50), SIMDE_FLOAT16_VALUE( -133.88), SIMDE_FLOAT16_VALUE( -920.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 617.00), SIMDE_FLOAT16_VALUE( -746.00), SIMDE_FLOAT16_VALUE( -75.25), SIMDE_FLOAT16_VALUE( -41.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 32.59), SIMDE_FLOAT16_VALUE( 239.50), SIMDE_FLOAT16_VALUE( -487.50), SIMDE_FLOAT16_VALUE( 853.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -750.50), SIMDE_FLOAT16_VALUE( -510.75), SIMDE_FLOAT16_VALUE( -177.50), SIMDE_FLOAT16_VALUE( 23.77) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -718.00), SIMDE_FLOAT16_VALUE( -271.25), SIMDE_FLOAT16_VALUE( -665.00), SIMDE_FLOAT16_VALUE( 877.50) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -31.45), SIMDE_FLOAT16_VALUE( 570.00), SIMDE_FLOAT16_VALUE( 616.00), SIMDE_FLOAT16_VALUE( -942.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -630.50), SIMDE_FLOAT16_VALUE( -823.50), SIMDE_FLOAT16_VALUE( -392.75), SIMDE_FLOAT16_VALUE( -463.25) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -662.00), SIMDE_FLOAT16_VALUE( -253.50), SIMDE_FLOAT16_VALUE( 223.25), SIMDE_FLOAT16_VALUE( -1405.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -537.50), SIMDE_FLOAT16_VALUE( -964.50), SIMDE_FLOAT16_VALUE( -592.00), SIMDE_FLOAT16_VALUE( 305.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -992.00), SIMDE_FLOAT16_VALUE( 707.00), SIMDE_FLOAT16_VALUE( 386.00), SIMDE_FLOAT16_VALUE( 496.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -1530.00), SIMDE_FLOAT16_VALUE( -257.50), SIMDE_FLOAT16_VALUE( -206.00), SIMDE_FLOAT16_VALUE( 801.50) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -180.50), SIMDE_FLOAT16_VALUE( -555.50), SIMDE_FLOAT16_VALUE( 375.50), SIMDE_FLOAT16_VALUE( 948.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -413.75), SIMDE_FLOAT16_VALUE( -758.50), SIMDE_FLOAT16_VALUE( -972.00), SIMDE_FLOAT16_VALUE( 619.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -594.00), SIMDE_FLOAT16_VALUE( -1314.00), SIMDE_FLOAT16_VALUE( -596.50), SIMDE_FLOAT16_VALUE( 1568.00) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_float16x4_t a, b, r;
|
||
|
|
|
||
|
|
a = simde_vld1_f16(test_vec[i].a);
|
||
|
|
b = simde_vld1_f16(test_vec[i].b);
|
||
|
|
r = simde_vadd_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(-1000.0f, 1000.0f);
|
||
|
|
simde_float16x4_t b = simde_test_arm_neon_random_f16x4(-1000.0f, 1000.0f);
|
||
|
|
simde_float16x4_t r = simde_vadd_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_vadd_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
simde_float32 a[2];
|
||
|
|
simde_float32 b[2];
|
||
|
|
simde_float32 r[2];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { SIMDE_FLOAT32_C( -645.65), SIMDE_FLOAT32_C( 153.94) },
|
||
|
|
{ SIMDE_FLOAT32_C( 112.49), SIMDE_FLOAT32_C( -617.76) },
|
||
|
|
{ SIMDE_FLOAT32_C( -533.16), SIMDE_FLOAT32_C( -463.81) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( -544.46), SIMDE_FLOAT32_C( -10.20) },
|
||
|
|
{ SIMDE_FLOAT32_C( -53.36), SIMDE_FLOAT32_C( -475.60) },
|
||
|
|
{ SIMDE_FLOAT32_C( -597.83), SIMDE_FLOAT32_C( -485.80) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 567.70), SIMDE_FLOAT32_C( 173.84) },
|
||
|
|
{ SIMDE_FLOAT32_C( 812.81), SIMDE_FLOAT32_C( 166.74) },
|
||
|
|
{ SIMDE_FLOAT32_C( 1380.51), SIMDE_FLOAT32_C( 340.59) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( -854.69), SIMDE_FLOAT32_C( -924.50) },
|
||
|
|
{ SIMDE_FLOAT32_C( -17.33), SIMDE_FLOAT32_C( -405.57) },
|
||
|
|
{ SIMDE_FLOAT32_C( -872.02), SIMDE_FLOAT32_C( -1330.07) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 507.20), SIMDE_FLOAT32_C( -886.90) },
|
||
|
|
{ SIMDE_FLOAT32_C( 991.64), SIMDE_FLOAT32_C( 755.28) },
|
||
|
|
{ SIMDE_FLOAT32_C( 1498.84), SIMDE_FLOAT32_C( -131.62) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( -419.88), SIMDE_FLOAT32_C( 108.98) },
|
||
|
|
{ SIMDE_FLOAT32_C( 853.76), SIMDE_FLOAT32_C( 233.89) },
|
||
|
|
{ SIMDE_FLOAT32_C( 433.88), SIMDE_FLOAT32_C( 342.87) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( -196.90), SIMDE_FLOAT32_C( 244.58) },
|
||
|
|
{ SIMDE_FLOAT32_C( 298.75), SIMDE_FLOAT32_C( 867.12) },
|
||
|
|
{ SIMDE_FLOAT32_C( 101.85), SIMDE_FLOAT32_C( 1111.70) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 32.51), SIMDE_FLOAT32_C( -749.49) },
|
||
|
|
{ SIMDE_FLOAT32_C( -783.09), SIMDE_FLOAT32_C( 386.86) },
|
||
|
|
{ SIMDE_FLOAT32_C( -750.58), SIMDE_FLOAT32_C( -362.63) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_float32x2_t a, b, r;
|
||
|
|
|
||
|
|
a = simde_vld1_f32(test_vec[i].a);
|
||
|
|
b = simde_vld1_f32(test_vec[i].b);
|
||
|
|
r = simde_vadd_f32(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_f32x2(r, simde_vld1_f32(test_vec[i].r), 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
simde_float64 a[1];
|
||
|
|
simde_float64 b[1];
|
||
|
|
simde_float64 r[1];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { SIMDE_FLOAT64_C( 404.45) },
|
||
|
|
{ SIMDE_FLOAT64_C( 329.40) },
|
||
|
|
{ SIMDE_FLOAT64_C( 733.85) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 769.10) },
|
||
|
|
{ SIMDE_FLOAT64_C( 859.99) },
|
||
|
|
{ SIMDE_FLOAT64_C( 1629.09) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( -680.80) },
|
||
|
|
{ SIMDE_FLOAT64_C( -284.26) },
|
||
|
|
{ SIMDE_FLOAT64_C( -965.06) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( -615.61) },
|
||
|
|
{ SIMDE_FLOAT64_C( 886.90) },
|
||
|
|
{ SIMDE_FLOAT64_C( 271.29) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 889.58) },
|
||
|
|
{ SIMDE_FLOAT64_C( -802.80) },
|
||
|
|
{ SIMDE_FLOAT64_C( 86.78) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 53.64) },
|
||
|
|
{ SIMDE_FLOAT64_C( -965.11) },
|
||
|
|
{ SIMDE_FLOAT64_C( -911.46) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( -727.30) },
|
||
|
|
{ SIMDE_FLOAT64_C( -963.68) },
|
||
|
|
{ SIMDE_FLOAT64_C( -1690.98) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( -370.68) },
|
||
|
|
{ SIMDE_FLOAT64_C( 779.90) },
|
||
|
|
{ SIMDE_FLOAT64_C( 409.22) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_float64x1_t a = simde_vld1_f64(test_vec[i].a);
|
||
|
|
simde_float64x1_t b = simde_vld1_f64(test_vec[i].b);
|
||
|
|
simde_float64x1_t r = simde_vadd_f64(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_f64x1(r, simde_vld1_f64(test_vec[i].r), 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int8_t a[8];
|
||
|
|
int8_t b[8];
|
||
|
|
int8_t r[8];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { -INT8_C( 51), INT8_C( 8), -INT8_C( 16), -INT8_C( 79), -INT8_C( 121), -INT8_C( 101), -INT8_C( 47), INT8_C( 115) },
|
||
|
|
{ -INT8_C( 103), INT8_C( 43), -INT8_C( 76), -INT8_C( 98), -INT8_C( 75), INT8_C( 79), -INT8_C( 61), INT8_C( 120) },
|
||
|
|
{ INT8_C( 102), INT8_C( 51), -INT8_C( 92), INT8_C( 79), INT8_C( 60), -INT8_C( 22), -INT8_C( 108), -INT8_C( 21) } },
|
||
|
|
{ { INT8_C( 28), -INT8_C( 124), -INT8_C( 17), -INT8_C( 117), -INT8_C( 124), -INT8_C( 22), INT8_C( 125), INT8_C( 109) },
|
||
|
|
{ INT8_C( 14), -INT8_C( 125), INT8_C( 88), INT8_C( 115), -INT8_C( 23), INT8_C( 119), -INT8_C( 31), -INT8_C( 73) },
|
||
|
|
{ INT8_C( 42), INT8_C( 7), INT8_C( 71), -INT8_C( 2), INT8_C( 109), INT8_C( 97), INT8_C( 94), INT8_C( 36) } },
|
||
|
|
{ { INT8_MAX, -INT8_C( 47), INT8_C( 104), INT8_C( 6), INT8_C( 109), INT8_C( 57), INT8_C( 121), INT8_C( 6) },
|
||
|
|
{ INT8_C( 100), INT8_C( 45), -INT8_C( 92), INT8_C( 25), INT8_C( 125), INT8_C( 104), -INT8_C( 111), -INT8_C( 103) },
|
||
|
|
{ -INT8_C( 29), -INT8_C( 2), INT8_C( 12), INT8_C( 31), -INT8_C( 22), -INT8_C( 95), INT8_C( 10), -INT8_C( 97) } },
|
||
|
|
{ { -INT8_C( 20), INT8_MIN, INT8_C( 37), INT8_C( 112), INT8_C( 106), -INT8_C( 94), -INT8_C( 35), INT8_C( 120) },
|
||
|
|
{ INT8_C( 37), INT8_C( 54), -INT8_C( 20), INT8_C( 14), -INT8_C( 83), -INT8_C( 51), -INT8_C( 59), INT8_C( 44) },
|
||
|
|
{ INT8_C( 17), -INT8_C( 74), INT8_C( 17), INT8_C( 126), INT8_C( 23), INT8_C( 111), -INT8_C( 94), -INT8_C( 92) } },
|
||
|
|
{ { -INT8_C( 98), INT8_C( 45), INT8_C( 51), INT8_C( 11), INT8_C( 102), -INT8_C( 84), INT8_C( 17), -INT8_C( 53) },
|
||
|
|
{ -INT8_C( 38), -INT8_C( 74), -INT8_C( 28), INT8_C( 87), INT8_C( 30), INT8_C( 118), -INT8_C( 16), INT8_C( 10) },
|
||
|
|
{ INT8_C( 120), -INT8_C( 29), INT8_C( 23), INT8_C( 98), -INT8_C( 124), INT8_C( 34), INT8_C( 1), -INT8_C( 43) } },
|
||
|
|
{ { -INT8_C( 10), INT8_C( 21), INT8_C( 122), INT8_C( 97), -INT8_C( 73), INT8_C( 88), -INT8_C( 39), -INT8_C( 36) },
|
||
|
|
{ -INT8_C( 114), -INT8_C( 59), -INT8_C( 21), INT8_C( 59), -INT8_C( 110), -INT8_C( 80), INT8_C( 103), INT8_C( 49) },
|
||
|
|
{ -INT8_C( 124), -INT8_C( 38), INT8_C( 101), -INT8_C( 100), INT8_C( 73), INT8_C( 8), INT8_C( 64), INT8_C( 13) } },
|
||
|
|
{ { -INT8_C( 34), -INT8_C( 102), INT8_C( 60), INT8_C( 68), INT8_C( 71), INT8_C( 78), INT8_C( 15), INT8_C( 33) },
|
||
|
|
{ INT8_C( 4), -INT8_C( 12), INT8_C( 120), INT8_C( 34), INT8_C( 106), INT8_C( 104), INT8_C( 44), INT8_C( 96) },
|
||
|
|
{ -INT8_C( 30), -INT8_C( 114), -INT8_C( 76), INT8_C( 102), -INT8_C( 79), -INT8_C( 74), INT8_C( 59), -INT8_C( 127) } },
|
||
|
|
{ { INT8_C( 126), -INT8_C( 90), -INT8_C( 63), INT8_C( 53), -INT8_C( 2), -INT8_C( 101), INT8_C( 18), -INT8_C( 116) },
|
||
|
|
{ INT8_C( 96), -INT8_C( 3), -INT8_C( 57), -INT8_C( 13), -INT8_C( 83), INT8_C( 47), INT8_C( 36), -INT8_C( 117) },
|
||
|
|
{ -INT8_C( 34), -INT8_C( 93), -INT8_C( 120), INT8_C( 40), -INT8_C( 85), -INT8_C( 54), INT8_C( 54), INT8_C( 23) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vadd_s8(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_i8x8(r, simde_vld1_s8(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int16_t a[4];
|
||
|
|
int16_t b[4];
|
||
|
|
int16_t r[4];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { INT16_C( 24777), INT16_C( 4304), -INT16_C( 8274), -INT16_C( 19919) },
|
||
|
|
{ -INT16_C( 22061), INT16_C( 15828), INT16_C( 18), -INT16_C( 28514) },
|
||
|
|
{ INT16_C( 2716), INT16_C( 20132), -INT16_C( 8256), INT16_C( 17103) } },
|
||
|
|
{ { INT16_C( 24487), -INT16_C( 23099), -INT16_C( 10246), INT16_C( 23346) },
|
||
|
|
{ -INT16_C( 1580), -INT16_C( 32178), INT16_C( 29224), -INT16_C( 3571) },
|
||
|
|
{ INT16_C( 22907), INT16_C( 10259), INT16_C( 18978), INT16_C( 19775) } },
|
||
|
|
{ { -INT16_C( 8750), -INT16_C( 32510), INT16_C( 13501), -INT16_C( 28621) },
|
||
|
|
{ INT16_C( 2269), -INT16_C( 4146), INT16_C( 27656), -INT16_C( 20609) },
|
||
|
|
{ -INT16_C( 6481), INT16_C( 28880), -INT16_C( 24379), INT16_C( 16306) } },
|
||
|
|
{ { INT16_C( 17867), -INT16_C( 14763), -INT16_C( 30948), -INT16_C( 3807) },
|
||
|
|
{ INT16_C( 28544), -INT16_C( 22157), -INT16_C( 32543), -INT16_C( 19557) },
|
||
|
|
{ -INT16_C( 19125), INT16_C( 28616), INT16_C( 2045), -INT16_C( 23364) } },
|
||
|
|
{ { -INT16_C( 25250), INT16_C( 6964), INT16_C( 26833), -INT16_C( 20565) },
|
||
|
|
{ INT16_C( 31088), INT16_C( 30878), INT16_C( 7909), -INT16_C( 20184) },
|
||
|
|
{ INT16_C( 5838), -INT16_C( 27694), -INT16_C( 30794), INT16_C( 24787) } },
|
||
|
|
{ { INT16_C( 32099), INT16_C( 32631), -INT16_C( 26620), -INT16_C( 31632) },
|
||
|
|
{ -INT16_C( 7417), -INT16_C( 6099), -INT16_C( 14236), -INT16_C( 15717) },
|
||
|
|
{ INT16_C( 24682), INT16_C( 26532), INT16_C( 24680), INT16_C( 18187) } },
|
||
|
|
{ { -INT16_C( 12186), INT16_C( 14301), -INT16_C( 30664), -INT16_C( 22298) },
|
||
|
|
{ -INT16_C( 31486), -INT16_C( 6368), INT16_C( 18595), INT16_C( 1688) },
|
||
|
|
{ INT16_C( 21864), INT16_C( 7933), -INT16_C( 12069), -INT16_C( 20610) } },
|
||
|
|
{ { INT16_C( 4037), -INT16_C( 13947), -INT16_C( 2393), -INT16_C( 20914) },
|
||
|
|
{ INT16_C( 31705), INT16_C( 15766), INT16_C( 12868), -INT16_C( 21761) },
|
||
|
|
{ -INT16_C( 29794), INT16_C( 1819), INT16_C( 10475), INT16_C( 22861) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vadd_s16(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_i16x4(r, simde_vld1_s16(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int32_t a[2];
|
||
|
|
int32_t b[2];
|
||
|
|
int32_t r[2];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { INT32_C( 987880450), INT32_C( 1742915685) },
|
||
|
|
{ -INT32_C( 263323059), INT32_C( 284616523) },
|
||
|
|
{ INT32_C( 724557391), INT32_C( 2027532208) } },
|
||
|
|
{ { -INT32_C( 1629848586), INT32_C( 1263282289) },
|
||
|
|
{ -INT32_C( 410459229), INT32_C( 395413525) },
|
||
|
|
{ -INT32_C( 2040307815), INT32_C( 1658695814) } },
|
||
|
|
{ { -INT32_C( 917408924), -INT32_C( 2010107077) },
|
||
|
|
{ -INT32_C( 2139586763), INT32_C( 1553034854) },
|
||
|
|
{ INT32_C( 1237971609), -INT32_C( 457072223) } },
|
||
|
|
{ { INT32_C( 1543138281), INT32_C( 916866963) },
|
||
|
|
{ INT32_C( 1058942506), INT32_C( 458665910) },
|
||
|
|
{ -INT32_C( 1692886509), INT32_C( 1375532873) } },
|
||
|
|
{ { INT32_C( 1575266082), INT32_C( 266671578) },
|
||
|
|
{ -INT32_C( 91202156), -INT32_C( 1252646453) },
|
||
|
|
{ INT32_C( 1484063926), -INT32_C( 985974875) } },
|
||
|
|
{ { INT32_C( 521163148), -INT32_C( 1034570088) },
|
||
|
|
{ -INT32_C( 1694403612), INT32_C( 1169577763) },
|
||
|
|
{ -INT32_C( 1173240464), INT32_C( 135007675) } },
|
||
|
|
{ { -INT32_C( 660366594), INT32_C( 1139247279) },
|
||
|
|
{ -INT32_C( 1321371674), INT32_C( 610702488) },
|
||
|
|
{ -INT32_C( 1981738268), INT32_C( 1749949767) } },
|
||
|
|
{ { INT32_C( 2101573349), INT32_C( 289380652) },
|
||
|
|
{ INT32_C( 799817740), -INT32_C( 1787469161) },
|
||
|
|
{ -INT32_C( 1393576207), -INT32_C( 1498088509) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vadd_s32(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_i32x2(r, simde_vld1_s32(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_s64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int64_t a[1];
|
||
|
|
int64_t b[1];
|
||
|
|
int64_t r[1];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { -INT64_C( 8723660904129029892) },
|
||
|
|
{ -INT64_C( 6446446838156874292) },
|
||
|
|
{ INT64_C( 3276636331423647432) } },
|
||
|
|
{ { INT64_C( 8237754855438142485) },
|
||
|
|
{ INT64_C( 6759364693269282466) },
|
||
|
|
{ -INT64_C( 3449624525002126665) } },
|
||
|
|
{ { INT64_C( 6581439727009348398) },
|
||
|
|
{ INT64_C( 4723230566403575077) },
|
||
|
|
{ -INT64_C( 7142073780296628141) } },
|
||
|
|
{ { -INT64_C( 5481490900376703211) },
|
||
|
|
{ -INT64_C( 3201572641363423533) },
|
||
|
|
{ -INT64_C( 8683063541740126744) } },
|
||
|
|
{ { -INT64_C( 5124823067756684555) },
|
||
|
|
{ -INT64_C( 3892366966611835) },
|
||
|
|
{ -INT64_C( 5128715434723296390) } },
|
||
|
|
{ { INT64_C( 2134538319889593818) },
|
||
|
|
{ INT64_C( 4354666682578472181) },
|
||
|
|
{ INT64_C( 6489205002468065999) } },
|
||
|
|
{ { -INT64_C( 8158375143962242948) },
|
||
|
|
{ INT64_C( 7722040105862391106) },
|
||
|
|
{ -INT64_C( 436335038099851842) } },
|
||
|
|
{ { INT64_C( 76268774866003111) },
|
||
|
|
{ -INT64_C( 4682326055126867838) },
|
||
|
|
{ -INT64_C( 4606057280260864727) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_int64x1_t a = simde_vld1_s64(test_vec[i].a);
|
||
|
|
simde_int64x1_t b = simde_vld1_s64(test_vec[i].b);
|
||
|
|
simde_int64x1_t r = simde_vadd_s64(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_i64x1(r, simde_vld1_s64(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint8_t a[16];
|
||
|
|
uint8_t b[16];
|
||
|
|
uint8_t r[16];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT8_C(145), UINT8_C(172), UINT8_C(192), UINT8_C(101), UINT8_C(103), UINT8_C( 94), UINT8_C(186), UINT8_C(229) },
|
||
|
|
{ UINT8_C(202), UINT8_C( 17), UINT8_C(115), UINT8_C( 16), UINT8_C(110), UINT8_C( 20), UINT8_C(220), UINT8_C(201) },
|
||
|
|
{ UINT8_C( 91), UINT8_C(189), UINT8_C( 51), UINT8_C(117), UINT8_C(213), UINT8_C(114), UINT8_C(150), UINT8_C(174) } },
|
||
|
|
{ { UINT8_C(228), UINT8_C(100), UINT8_C(144), UINT8_C(122), UINT8_C( 55), UINT8_C(227), UINT8_C(226), UINT8_C(153) },
|
||
|
|
{ UINT8_C( 24), UINT8_C(198), UINT8_C(165), UINT8_C( 23), UINT8_C(173), UINT8_C( 87), UINT8_C( 39), UINT8_C( 62) },
|
||
|
|
{ UINT8_C(252), UINT8_C( 42), UINT8_C( 53), UINT8_C(145), UINT8_C(228), UINT8_C( 58), UINT8_C( 9), UINT8_C(215) } },
|
||
|
|
{ { UINT8_C( 3), UINT8_C(231), UINT8_C(163), UINT8_C(106), UINT8_C( 69), UINT8_C( 93), UINT8_C( 80), UINT8_C( 15) },
|
||
|
|
{ UINT8_C(110), UINT8_C(195), UINT8_C( 31), UINT8_C(221), UINT8_C(216), UINT8_C(251), UINT8_C(166), UINT8_C(188) },
|
||
|
|
{ UINT8_C(113), UINT8_C(170), UINT8_C(194), UINT8_C( 71), UINT8_C( 29), UINT8_C( 88), UINT8_C(246), UINT8_C(203) } },
|
||
|
|
{ { UINT8_C( 96), UINT8_C( 55), UINT8_C( 55), UINT8_C(151), UINT8_C( 26), UINT8_C( 25), UINT8_C( 48), UINT8_C( 50) },
|
||
|
|
{ UINT8_C(223), UINT8_C(213), UINT8_C( 74), UINT8_C(140), UINT8_C( 45), UINT8_C(113), UINT8_C(202), UINT8_C( 48) },
|
||
|
|
{ UINT8_C( 63), UINT8_C( 12), UINT8_C(129), UINT8_C( 35), UINT8_C( 71), UINT8_C(138), UINT8_C(250), UINT8_C( 98) } },
|
||
|
|
{ { UINT8_C( 88), UINT8_C(109), UINT8_C(155), UINT8_C(157), UINT8_C(202), UINT8_C(235), UINT8_C(172), UINT8_C( 56) },
|
||
|
|
{ UINT8_C(174), UINT8_C(203), UINT8_C( 21), UINT8_C(134), UINT8_C(198), UINT8_C(188), UINT8_C( 67), UINT8_C( 38) },
|
||
|
|
{ UINT8_C( 6), UINT8_C( 56), UINT8_C(176), UINT8_C( 35), UINT8_C(144), UINT8_C(167), UINT8_C(239), UINT8_C( 94) } },
|
||
|
|
{ { UINT8_C(243), UINT8_C(122), UINT8_C(189), UINT8_C( 13), UINT8_C(147), UINT8_C(238), UINT8_C( 64), UINT8_C(114) },
|
||
|
|
{ UINT8_C(195), UINT8_C(138), UINT8_C(254), UINT8_C(240), UINT8_C(251), UINT8_C(200), UINT8_C( 33), UINT8_C( 83) },
|
||
|
|
{ UINT8_C(182), UINT8_C( 4), UINT8_C(187), UINT8_C(253), UINT8_C(142), UINT8_C(182), UINT8_C( 97), UINT8_C(197) } },
|
||
|
|
{ { UINT8_C( 53), UINT8_C(188), UINT8_C(240), UINT8_MAX, UINT8_C(167), UINT8_C(156), UINT8_C( 55), UINT8_C( 85) },
|
||
|
|
{ UINT8_C(103), UINT8_C( 77), UINT8_C(220), UINT8_C( 45), UINT8_C( 9), UINT8_C( 31), UINT8_C( 84), UINT8_C(252) },
|
||
|
|
{ UINT8_C(156), UINT8_C( 9), UINT8_C(204), UINT8_C( 44), UINT8_C(176), UINT8_C(187), UINT8_C(139), UINT8_C( 81) } },
|
||
|
|
{ { UINT8_C(153), UINT8_C( 17), UINT8_C( 9), UINT8_C( 44), UINT8_MAX, UINT8_C( 73), UINT8_C(158), UINT8_C(195) },
|
||
|
|
{ UINT8_C(211), UINT8_C(156), UINT8_C(179), UINT8_C(206), UINT8_C(100), UINT8_C(212), UINT8_C( 33), UINT8_C(153) },
|
||
|
|
{ UINT8_C(108), UINT8_C(173), UINT8_C(188), UINT8_C(250), UINT8_C( 99), UINT8_C( 29), UINT8_C(191), UINT8_C( 92) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vadd_u8(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_u8x8(r, simde_vld1_u8(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint16_t a[4];
|
||
|
|
uint16_t b[4];
|
||
|
|
uint16_t r[4];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT16_C( 4496), UINT16_C(14232), UINT16_C(53165), UINT16_C( 5261) },
|
||
|
|
{ UINT16_C(26908), UINT16_C( 9538), UINT16_C(38536), UINT16_C( 8481) },
|
||
|
|
{ UINT16_C(31404), UINT16_C(23770), UINT16_C(26165), UINT16_C(13742) } },
|
||
|
|
{ { UINT16_C(11175), UINT16_C(42829), UINT16_C(60276), UINT16_C(18538) },
|
||
|
|
{ UINT16_C( 7559), UINT16_C(60182), UINT16_C(14578), UINT16_C(33412) },
|
||
|
|
{ UINT16_C(18734), UINT16_C(37475), UINT16_C( 9318), UINT16_C(51950) } },
|
||
|
|
{ { UINT16_C( 7241), UINT16_C(63418), UINT16_C(18411), UINT16_C( 2059) },
|
||
|
|
{ UINT16_C(19888), UINT16_C(14381), UINT16_C(20451), UINT16_C(35673) },
|
||
|
|
{ UINT16_C(27129), UINT16_C(12263), UINT16_C(38862), UINT16_C(37732) } },
|
||
|
|
{ { UINT16_C(42618), UINT16_C(60978), UINT16_C(40081), UINT16_C( 6198) },
|
||
|
|
{ UINT16_C(19897), UINT16_C(43779), UINT16_C(34693), UINT16_C(52782) },
|
||
|
|
{ UINT16_C(62515), UINT16_C(39221), UINT16_C( 9238), UINT16_C(58980) } },
|
||
|
|
{ { UINT16_C(59555), UINT16_C(36549), UINT16_C(53551), UINT16_C(57238) },
|
||
|
|
{ UINT16_C(50206), UINT16_C( 535), UINT16_C(28691), UINT16_C(36237) },
|
||
|
|
{ UINT16_C(44225), UINT16_C(37084), UINT16_C(16706), UINT16_C(27939) } },
|
||
|
|
{ { UINT16_C(48918), UINT16_C(42875), UINT16_C(45659), UINT16_C( 5311) },
|
||
|
|
{ UINT16_C(49919), UINT16_C(33984), UINT16_C(61001), UINT16_C(60498) },
|
||
|
|
{ UINT16_C(33301), UINT16_C(11323), UINT16_C(41124), UINT16_C( 273) } },
|
||
|
|
{ { UINT16_C( 6358), UINT16_C( 1402), UINT16_C( 4585), UINT16_C( 2020) },
|
||
|
|
{ UINT16_C(64469), UINT16_C(59401), UINT16_C(38507), UINT16_C(33141) },
|
||
|
|
{ UINT16_C( 5291), UINT16_C(60803), UINT16_C(43092), UINT16_C(35161) } },
|
||
|
|
{ { UINT16_C(61525), UINT16_C(45096), UINT16_C(59298), UINT16_C(41413) },
|
||
|
|
{ UINT16_C(34217), UINT16_C(61989), UINT16_C(30835), UINT16_C(18910) },
|
||
|
|
{ UINT16_C(30206), UINT16_C(41549), UINT16_C(24597), UINT16_C(60323) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vadd_u16(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_u16x4(r, simde_vld1_u16(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint32_t a[2];
|
||
|
|
uint32_t b[2];
|
||
|
|
uint32_t r[2];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT32_C(2035177616), UINT32_C(1048588905) },
|
||
|
|
{ UINT32_C(2552662573), UINT32_C(1981389600) },
|
||
|
|
{ UINT32_C( 292872893), UINT32_C(3029978505) } },
|
||
|
|
{ { UINT32_C( 774259084), UINT32_C(3520129832) },
|
||
|
|
{ UINT32_C(3821270384), UINT32_C(4247560557) },
|
||
|
|
{ UINT32_C( 300562172), UINT32_C(3472723093) } },
|
||
|
|
{ { UINT32_C(1668709113), UINT32_C(3651270572) },
|
||
|
|
{ UINT32_C(2708588673), UINT32_C(4011297379) },
|
||
|
|
{ UINT32_C( 82330490), UINT32_C(3367600655) } },
|
||
|
|
{ { UINT32_C(4078845643), UINT32_C(2596597289) },
|
||
|
|
{ UINT32_C(1367181283), UINT32_C( 575580712) },
|
||
|
|
{ UINT32_C(1151059630), UINT32_C(3172178001) } },
|
||
|
|
{ { UINT32_C(3515204900), UINT32_C(1034561212) },
|
||
|
|
{ UINT32_C(1390288110), UINT32_C(1916925606) },
|
||
|
|
{ UINT32_C( 610525714), UINT32_C(2951486818) } },
|
||
|
|
{ { UINT32_C(1566924596), UINT32_C( 838281805) },
|
||
|
|
{ UINT32_C(3665982897), UINT32_C(1140641823) },
|
||
|
|
{ UINT32_C( 937940197), UINT32_C(1978923628) } },
|
||
|
|
{ { UINT32_C(1360298389), UINT32_C(2525937575) },
|
||
|
|
{ UINT32_C(2179493339), UINT32_C(2549295459) },
|
||
|
|
{ UINT32_C(3539791728), UINT32_C( 780265738) } },
|
||
|
|
{ { UINT32_C(3606337929), UINT32_C( 872934531) },
|
||
|
|
{ UINT32_C(2148436321), UINT32_C(4022536794) },
|
||
|
|
{ UINT32_C(1459806954), UINT32_C( 600504029) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vadd_u32(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_u32x2(r, simde_vld1_u32(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vadd_u64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint64_t a[1];
|
||
|
|
uint64_t b[1];
|
||
|
|
uint64_t r[1];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT64_C( 8271370438949591179) },
|
||
|
|
{ UINT64_C( 7149156384669675836) },
|
||
|
|
{ UINT64_C(15420526823619267015) } },
|
||
|
|
{ { UINT64_C( 8716507174114306880) },
|
||
|
|
{ UINT64_C(11246819847481853643) },
|
||
|
|
{ UINT64_C( 1516582947886608907) } },
|
||
|
|
{ { UINT64_C( 7033664003445314963) },
|
||
|
|
{ UINT64_C(13224599815624691785) },
|
||
|
|
{ UINT64_C( 1811519745360455132) } },
|
||
|
|
{ { UINT64_C(14839766502604456290) },
|
||
|
|
{ UINT64_C( 4045366772834167159) },
|
||
|
|
{ UINT64_C( 438389201729071833) } },
|
||
|
|
{ { UINT64_C(15340385730390389596) },
|
||
|
|
{ UINT64_C( 9132594273923359887) },
|
||
|
|
{ UINT64_C( 6026235930604197867) } },
|
||
|
|
{ { UINT64_C( 2310322047046596415) },
|
||
|
|
{ UINT64_C( 7327580934766068434) },
|
||
|
|
{ UINT64_C( 9637902981812664849) } },
|
||
|
|
{ { UINT64_C(11681996663360525247) },
|
||
|
|
{ UINT64_C(15296307448611608238) },
|
||
|
|
{ UINT64_C( 8531560038262581869) } },
|
||
|
|
{ { UINT64_C(18043431286987964317) },
|
||
|
|
{ UINT64_C(11211186651486359335) },
|
||
|
|
{ UINT64_C(10807873864764772036) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_uint64x1_t a = simde_vld1_u64(test_vec[i].a);
|
||
|
|
simde_uint64x1_t b = simde_vld1_u64(test_vec[i].b);
|
||
|
|
simde_uint64x1_t r = simde_vadd_u64(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_u64x1(r, simde_vld1_u64(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
#if 1
|
||
|
|
struct {
|
||
|
|
simde_float16 a[8];
|
||
|
|
simde_float16 b[8];
|
||
|
|
simde_float16 r[8];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 441.00), SIMDE_FLOAT16_VALUE( 861.50), SIMDE_FLOAT16_VALUE( 98.06), SIMDE_FLOAT16_VALUE( 896.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -918.50), SIMDE_FLOAT16_VALUE( -717.00), SIMDE_FLOAT16_VALUE( -823.00), SIMDE_FLOAT16_VALUE( -581.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 684.00), SIMDE_FLOAT16_VALUE( 563.00), SIMDE_FLOAT16_VALUE( 15.31), SIMDE_FLOAT16_VALUE( -786.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( 891.00), SIMDE_FLOAT16_VALUE( 859.50), SIMDE_FLOAT16_VALUE( 387.25), SIMDE_FLOAT16_VALUE( 969.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 1125.00), SIMDE_FLOAT16_VALUE( 1424.00), SIMDE_FLOAT16_VALUE( 113.38), SIMDE_FLOAT16_VALUE( 109.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( -27.50), SIMDE_FLOAT16_VALUE( 142.50), SIMDE_FLOAT16_VALUE( -435.75), SIMDE_FLOAT16_VALUE( 388.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -6.45), SIMDE_FLOAT16_VALUE( 29.20), SIMDE_FLOAT16_VALUE( -856.00), SIMDE_FLOAT16_VALUE( 267.25),
|
||
|
|
SIMDE_FLOAT16_VALUE( -302.00), SIMDE_FLOAT16_VALUE( 526.50), SIMDE_FLOAT16_VALUE( 713.00), SIMDE_FLOAT16_VALUE( -14.83) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -848.00), SIMDE_FLOAT16_VALUE( 815.50), SIMDE_FLOAT16_VALUE( -672.50), SIMDE_FLOAT16_VALUE( 274.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( 933.00), SIMDE_FLOAT16_VALUE( -952.50), SIMDE_FLOAT16_VALUE( 426.00), SIMDE_FLOAT16_VALUE( 373.75) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -854.50), SIMDE_FLOAT16_VALUE( 844.50), SIMDE_FLOAT16_VALUE( -1528.00), SIMDE_FLOAT16_VALUE( 542.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( 631.00), SIMDE_FLOAT16_VALUE( -426.00), SIMDE_FLOAT16_VALUE( 1139.00), SIMDE_FLOAT16_VALUE( 359.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 909.00), SIMDE_FLOAT16_VALUE( -475.75), SIMDE_FLOAT16_VALUE( 269.75), SIMDE_FLOAT16_VALUE( 991.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -192.62), SIMDE_FLOAT16_VALUE( 446.50), SIMDE_FLOAT16_VALUE( -590.00), SIMDE_FLOAT16_VALUE( -508.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 9.56), SIMDE_FLOAT16_VALUE( 425.25), SIMDE_FLOAT16_VALUE( -294.75), SIMDE_FLOAT16_VALUE( -99.19),
|
||
|
|
SIMDE_FLOAT16_VALUE( 284.50), SIMDE_FLOAT16_VALUE( -907.50), SIMDE_FLOAT16_VALUE( -130.00), SIMDE_FLOAT16_VALUE( -722.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 918.50), SIMDE_FLOAT16_VALUE( -50.50), SIMDE_FLOAT16_VALUE( -25.00), SIMDE_FLOAT16_VALUE( 892.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( 91.88), SIMDE_FLOAT16_VALUE( -461.00), SIMDE_FLOAT16_VALUE( -720.00), SIMDE_FLOAT16_VALUE( -1230.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 121.69), SIMDE_FLOAT16_VALUE( 14.28), SIMDE_FLOAT16_VALUE( 545.00), SIMDE_FLOAT16_VALUE( 819.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( -459.00), SIMDE_FLOAT16_VALUE( 258.50), SIMDE_FLOAT16_VALUE( -195.12), SIMDE_FLOAT16_VALUE( -307.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 73.81), SIMDE_FLOAT16_VALUE( 132.25), SIMDE_FLOAT16_VALUE( 967.50), SIMDE_FLOAT16_VALUE( 6.60),
|
||
|
|
SIMDE_FLOAT16_VALUE( 179.88), SIMDE_FLOAT16_VALUE( 393.50), SIMDE_FLOAT16_VALUE( -619.50), SIMDE_FLOAT16_VALUE( 89.12) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 195.50), SIMDE_FLOAT16_VALUE( 146.50), SIMDE_FLOAT16_VALUE( 1512.00), SIMDE_FLOAT16_VALUE( 826.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -279.00), SIMDE_FLOAT16_VALUE( 652.00), SIMDE_FLOAT16_VALUE( -814.50), SIMDE_FLOAT16_VALUE( -217.88) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 918.00), SIMDE_FLOAT16_VALUE( 650.00), SIMDE_FLOAT16_VALUE( 80.00), SIMDE_FLOAT16_VALUE( -275.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( 96.56), SIMDE_FLOAT16_VALUE( 489.75), SIMDE_FLOAT16_VALUE( 216.50), SIMDE_FLOAT16_VALUE( -894.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -85.06), SIMDE_FLOAT16_VALUE( 921.50), SIMDE_FLOAT16_VALUE( 6.98), SIMDE_FLOAT16_VALUE( -800.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( -986.00), SIMDE_FLOAT16_VALUE( 877.00), SIMDE_FLOAT16_VALUE( -522.50), SIMDE_FLOAT16_VALUE( 135.75) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 833.00), SIMDE_FLOAT16_VALUE( 1572.00), SIMDE_FLOAT16_VALUE( 87.00), SIMDE_FLOAT16_VALUE( -1076.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -889.50), SIMDE_FLOAT16_VALUE( 1367.00), SIMDE_FLOAT16_VALUE( -306.00), SIMDE_FLOAT16_VALUE( -758.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( -108.69), SIMDE_FLOAT16_VALUE( -977.50), SIMDE_FLOAT16_VALUE( -44.56), SIMDE_FLOAT16_VALUE( 432.25),
|
||
|
|
SIMDE_FLOAT16_VALUE( 281.00), SIMDE_FLOAT16_VALUE( 760.00), SIMDE_FLOAT16_VALUE( -874.50), SIMDE_FLOAT16_VALUE( -645.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -107.50), SIMDE_FLOAT16_VALUE( -907.00), SIMDE_FLOAT16_VALUE( 361.50), SIMDE_FLOAT16_VALUE( -927.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( 486.50), SIMDE_FLOAT16_VALUE( 742.00), SIMDE_FLOAT16_VALUE( 161.50), SIMDE_FLOAT16_VALUE( 404.25) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -216.25), SIMDE_FLOAT16_VALUE( -1884.00), SIMDE_FLOAT16_VALUE( 317.00), SIMDE_FLOAT16_VALUE( -495.25),
|
||
|
|
SIMDE_FLOAT16_VALUE( 767.50), SIMDE_FLOAT16_VALUE( 1502.00), SIMDE_FLOAT16_VALUE( -713.00), SIMDE_FLOAT16_VALUE( -240.75) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 392.00), SIMDE_FLOAT16_VALUE( -758.50), SIMDE_FLOAT16_VALUE( -870.50), SIMDE_FLOAT16_VALUE( -511.25),
|
||
|
|
SIMDE_FLOAT16_VALUE( 731.50), SIMDE_FLOAT16_VALUE( 345.75), SIMDE_FLOAT16_VALUE( -405.25), SIMDE_FLOAT16_VALUE( -353.75) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 267.50), SIMDE_FLOAT16_VALUE( 602.00), SIMDE_FLOAT16_VALUE( -154.25), SIMDE_FLOAT16_VALUE( 281.75),
|
||
|
|
SIMDE_FLOAT16_VALUE( 478.75), SIMDE_FLOAT16_VALUE( 323.25), SIMDE_FLOAT16_VALUE( -582.50), SIMDE_FLOAT16_VALUE( -630.00) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( 659.50), SIMDE_FLOAT16_VALUE( -156.50), SIMDE_FLOAT16_VALUE( -1025.00), SIMDE_FLOAT16_VALUE( -229.50),
|
||
|
|
SIMDE_FLOAT16_VALUE( 1210.00), SIMDE_FLOAT16_VALUE( 669.00), SIMDE_FLOAT16_VALUE( -988.00), SIMDE_FLOAT16_VALUE( -984.00) } },
|
||
|
|
{ { SIMDE_FLOAT16_VALUE( 345.75), SIMDE_FLOAT16_VALUE( 372.75), SIMDE_FLOAT16_VALUE( 802.50), SIMDE_FLOAT16_VALUE( -373.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( 133.12), SIMDE_FLOAT16_VALUE( 928.00), SIMDE_FLOAT16_VALUE( -18.17), SIMDE_FLOAT16_VALUE( -974.50) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -979.50), SIMDE_FLOAT16_VALUE( -656.50), SIMDE_FLOAT16_VALUE( -902.00), SIMDE_FLOAT16_VALUE( 507.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -914.50), SIMDE_FLOAT16_VALUE( 259.50), SIMDE_FLOAT16_VALUE( -88.69), SIMDE_FLOAT16_VALUE( 477.25) },
|
||
|
|
{ SIMDE_FLOAT16_VALUE( -634.00), SIMDE_FLOAT16_VALUE( -283.75), SIMDE_FLOAT16_VALUE( -99.50), SIMDE_FLOAT16_VALUE( 134.00),
|
||
|
|
SIMDE_FLOAT16_VALUE( -781.50), SIMDE_FLOAT16_VALUE( 1188.00), SIMDE_FLOAT16_VALUE( -106.88), SIMDE_FLOAT16_VALUE( -497.25) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_float16x8_t a, b, r;
|
||
|
|
|
||
|
|
a = simde_vld1q_f16(test_vec[i].a);
|
||
|
|
b = simde_vld1q_f16(test_vec[i].b);
|
||
|
|
r = simde_vaddq_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(-1000.0f, 1000.0f);
|
||
|
|
simde_float16x8_t b = simde_test_arm_neon_random_f16x8(-1000.0f, 1000.0f);
|
||
|
|
simde_float16x8_t r = simde_vaddq_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_vaddq_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
simde_float32 a[4];
|
||
|
|
simde_float32 b[4];
|
||
|
|
simde_float32 r[4];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { SIMDE_FLOAT32_C( -476.88), SIMDE_FLOAT32_C( -38.10), SIMDE_FLOAT32_C( 469.39), SIMDE_FLOAT32_C( -664.80) },
|
||
|
|
{ SIMDE_FLOAT32_C( 181.43), SIMDE_FLOAT32_C( -154.03), SIMDE_FLOAT32_C( -345.56), SIMDE_FLOAT32_C( -102.63) },
|
||
|
|
{ SIMDE_FLOAT32_C( -295.46), SIMDE_FLOAT32_C( -192.12), SIMDE_FLOAT32_C( 123.83), SIMDE_FLOAT32_C( -767.44) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( -103.40), SIMDE_FLOAT32_C( 661.42), SIMDE_FLOAT32_C( -336.65), SIMDE_FLOAT32_C( 536.30) },
|
||
|
|
{ SIMDE_FLOAT32_C( 318.30), SIMDE_FLOAT32_C( -387.41), SIMDE_FLOAT32_C( 435.33), SIMDE_FLOAT32_C( -961.83) },
|
||
|
|
{ SIMDE_FLOAT32_C( 214.90), SIMDE_FLOAT32_C( 274.01), SIMDE_FLOAT32_C( 98.69), SIMDE_FLOAT32_C( -425.53) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 203.44), SIMDE_FLOAT32_C( -916.52), SIMDE_FLOAT32_C( -867.20), SIMDE_FLOAT32_C( 66.23) },
|
||
|
|
{ SIMDE_FLOAT32_C( -667.27), SIMDE_FLOAT32_C( -968.66), SIMDE_FLOAT32_C( 101.74), SIMDE_FLOAT32_C( 202.05) },
|
||
|
|
{ SIMDE_FLOAT32_C( -463.83), SIMDE_FLOAT32_C( -1885.18), SIMDE_FLOAT32_C( -765.47), SIMDE_FLOAT32_C( 268.28) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( -612.77), SIMDE_FLOAT32_C( -920.83), SIMDE_FLOAT32_C( 82.14), SIMDE_FLOAT32_C( -930.15) },
|
||
|
|
{ SIMDE_FLOAT32_C( -763.40), SIMDE_FLOAT32_C( -818.04), SIMDE_FLOAT32_C( -97.96), SIMDE_FLOAT32_C( -240.29) },
|
||
|
|
{ SIMDE_FLOAT32_C( -1376.18), SIMDE_FLOAT32_C( -1738.88), SIMDE_FLOAT32_C( -15.82), SIMDE_FLOAT32_C( -1170.43) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 143.86), SIMDE_FLOAT32_C( -628.57), SIMDE_FLOAT32_C( 94.91), SIMDE_FLOAT32_C( -674.71) },
|
||
|
|
{ SIMDE_FLOAT32_C( 217.40), SIMDE_FLOAT32_C( 749.35), SIMDE_FLOAT32_C( 222.65), SIMDE_FLOAT32_C( -886.00) },
|
||
|
|
{ SIMDE_FLOAT32_C( 361.26), SIMDE_FLOAT32_C( 120.77), SIMDE_FLOAT32_C( 317.56), SIMDE_FLOAT32_C( -1560.71) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 410.77), SIMDE_FLOAT32_C( 886.01), SIMDE_FLOAT32_C( 650.30), SIMDE_FLOAT32_C( -270.93) },
|
||
|
|
{ SIMDE_FLOAT32_C( -501.41), SIMDE_FLOAT32_C( 85.64), SIMDE_FLOAT32_C( -232.77), SIMDE_FLOAT32_C( 702.03) },
|
||
|
|
{ SIMDE_FLOAT32_C( -90.64), SIMDE_FLOAT32_C( 971.64), SIMDE_FLOAT32_C( 417.54), SIMDE_FLOAT32_C( 431.10) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 169.12), SIMDE_FLOAT32_C( -99.97), SIMDE_FLOAT32_C( -231.73), SIMDE_FLOAT32_C( 501.86) },
|
||
|
|
{ SIMDE_FLOAT32_C( -68.63), SIMDE_FLOAT32_C( 870.00), SIMDE_FLOAT32_C( -296.10), SIMDE_FLOAT32_C( 318.59) },
|
||
|
|
{ SIMDE_FLOAT32_C( 100.49), SIMDE_FLOAT32_C( 770.03), SIMDE_FLOAT32_C( -527.83), SIMDE_FLOAT32_C( 820.45) } },
|
||
|
|
{ { SIMDE_FLOAT32_C( 949.17), SIMDE_FLOAT32_C( 786.05), SIMDE_FLOAT32_C( 388.45), SIMDE_FLOAT32_C( -814.23) },
|
||
|
|
{ SIMDE_FLOAT32_C( 968.00), SIMDE_FLOAT32_C( -709.52), SIMDE_FLOAT32_C( -54.52), SIMDE_FLOAT32_C( 111.86) },
|
||
|
|
{ SIMDE_FLOAT32_C( 1917.17), SIMDE_FLOAT32_C( 76.53), SIMDE_FLOAT32_C( 333.93), SIMDE_FLOAT32_C( -702.37) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_f32(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_f32x4(r, simde_vld1q_f32(test_vec[i].r), 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
simde_float64 a[2];
|
||
|
|
simde_float64 b[2];
|
||
|
|
simde_float64 r[2];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { SIMDE_FLOAT64_C( -338.09), SIMDE_FLOAT64_C( -959.61) },
|
||
|
|
{ SIMDE_FLOAT64_C( 437.15), SIMDE_FLOAT64_C( 879.31) },
|
||
|
|
{ SIMDE_FLOAT64_C( 99.06), SIMDE_FLOAT64_C( -80.30) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 789.73), SIMDE_FLOAT64_C( -340.20) },
|
||
|
|
{ SIMDE_FLOAT64_C( 993.31), SIMDE_FLOAT64_C( 200.50) },
|
||
|
|
{ SIMDE_FLOAT64_C( 1783.05), SIMDE_FLOAT64_C( -139.70) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( -454.19), SIMDE_FLOAT64_C( 643.62) },
|
||
|
|
{ SIMDE_FLOAT64_C( 929.57), SIMDE_FLOAT64_C( 44.40) },
|
||
|
|
{ SIMDE_FLOAT64_C( 475.38), SIMDE_FLOAT64_C( 688.02) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( -270.75), SIMDE_FLOAT64_C( -303.20) },
|
||
|
|
{ SIMDE_FLOAT64_C( -253.57), SIMDE_FLOAT64_C( 898.38) },
|
||
|
|
{ SIMDE_FLOAT64_C( -524.31), SIMDE_FLOAT64_C( 595.18) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 596.83), SIMDE_FLOAT64_C( 514.70) },
|
||
|
|
{ SIMDE_FLOAT64_C( 400.23), SIMDE_FLOAT64_C( -471.80) },
|
||
|
|
{ SIMDE_FLOAT64_C( 997.06), SIMDE_FLOAT64_C( 42.90) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 384.71), SIMDE_FLOAT64_C( -895.87) },
|
||
|
|
{ SIMDE_FLOAT64_C( 846.79), SIMDE_FLOAT64_C( 333.88) },
|
||
|
|
{ SIMDE_FLOAT64_C( 1231.50), SIMDE_FLOAT64_C( -561.99) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 890.18), SIMDE_FLOAT64_C( 235.24) },
|
||
|
|
{ SIMDE_FLOAT64_C( 519.64), SIMDE_FLOAT64_C( 858.18) },
|
||
|
|
{ SIMDE_FLOAT64_C( 1409.82), SIMDE_FLOAT64_C( 1093.42) } },
|
||
|
|
{ { SIMDE_FLOAT64_C( 525.73), SIMDE_FLOAT64_C( -534.88) },
|
||
|
|
{ SIMDE_FLOAT64_C( -29.96), SIMDE_FLOAT64_C( -812.36) },
|
||
|
|
{ SIMDE_FLOAT64_C( 495.77), SIMDE_FLOAT64_C( -1347.24) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||
|
|
simde_float64x2_t a = simde_vld1q_f64(test_vec[i].a);
|
||
|
|
simde_float64x2_t b = simde_vld1q_f64(test_vec[i].b);
|
||
|
|
simde_float64x2_t r = simde_vaddq_f64(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_f64x2(r, simde_vld1q_f64(test_vec[i].r), 1);
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_s8 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int8_t a[16];
|
||
|
|
int8_t b[16];
|
||
|
|
int8_t r[16];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { INT8_C( 111), -INT8_C( 97), -INT8_C( 90), INT8_C( 69), INT8_C( 113), INT8_C( 56), -INT8_C( 115), INT8_C( 112),
|
||
|
|
INT8_C( 53), -INT8_C( 107), -INT8_C( 44), INT8_C( 82), -INT8_C( 51), -INT8_C( 96), -INT8_C( 21), -INT8_C( 97) },
|
||
|
|
{ -INT8_C( 99), INT8_C( 22), INT8_C( 102), INT8_MIN, INT8_C( 111), INT8_C( 102), INT8_C( 52), -INT8_C( 31),
|
||
|
|
INT8_C( 89), INT8_C( 28), -INT8_C( 108), -INT8_C( 49), INT8_C( 112), -INT8_C( 116), INT8_C( 125), -INT8_C( 33) },
|
||
|
|
{ INT8_C( 12), -INT8_C( 75), INT8_C( 12), -INT8_C( 59), -INT8_C( 32), -INT8_C( 98), -INT8_C( 63), INT8_C( 81),
|
||
|
|
-INT8_C( 114), -INT8_C( 79), INT8_C( 104), INT8_C( 33), INT8_C( 61), INT8_C( 44), INT8_C( 104), INT8_C( 126) } },
|
||
|
|
{ { INT8_C( 43), INT8_C( 35), INT8_C( 36), -INT8_C( 100), INT8_C( 92), -INT8_C( 78), INT8_C( 12), -INT8_C( 111),
|
||
|
|
INT8_C( 71), -INT8_C( 32), -INT8_C( 28), INT8_C( 20), -INT8_C( 127), -INT8_C( 49), -INT8_C( 77), INT8_C( 30) },
|
||
|
|
{ -INT8_C( 26), INT8_C( 25), -INT8_C( 97), INT8_C( 85), INT8_MIN, -INT8_C( 45), INT8_C( 54), -INT8_C( 39),
|
||
|
|
-INT8_C( 17), -INT8_C( 54), -INT8_C( 88), INT8_C( 95), INT8_C( 86), INT8_C( 37), INT8_C( 63), -INT8_C( 126) },
|
||
|
|
{ INT8_C( 17), INT8_C( 60), -INT8_C( 61), -INT8_C( 15), -INT8_C( 36), -INT8_C( 123), INT8_C( 66), INT8_C( 106),
|
||
|
|
INT8_C( 54), -INT8_C( 86), -INT8_C( 116), INT8_C( 115), -INT8_C( 41), -INT8_C( 12), -INT8_C( 14), -INT8_C( 96) } },
|
||
|
|
{ { INT8_C( 73), INT8_C( 99), INT8_C( 30), -INT8_C( 91), INT8_C( 21), INT8_C( 43), INT8_C( 54), INT8_C( 92),
|
||
|
|
INT8_C( 11), INT8_C( 26), INT8_C( 112), -INT8_C( 116), -INT8_C( 22), INT8_C( 35), -INT8_C( 85), -INT8_C( 48) },
|
||
|
|
{ INT8_C( 61), INT8_C( 74), INT8_C( 37), -INT8_C( 67), INT8_C( 29), INT8_C( 91), -INT8_C( 106), INT8_C( 12),
|
||
|
|
INT8_C( 37), INT8_C( 62), INT8_C( 108), INT8_C( 124), INT8_C( 99), -INT8_C( 85), -INT8_C( 2), -INT8_C( 84) },
|
||
|
|
{ -INT8_C( 122), -INT8_C( 83), INT8_C( 67), INT8_C( 98), INT8_C( 50), -INT8_C( 122), -INT8_C( 52), INT8_C( 104),
|
||
|
|
INT8_C( 48), INT8_C( 88), -INT8_C( 36), INT8_C( 8), INT8_C( 77), -INT8_C( 50), -INT8_C( 87), INT8_C( 124) } },
|
||
|
|
{ { INT8_C( 14), INT8_C( 28), INT8_C( 81), INT8_C( 36), INT8_C( 71), -INT8_C( 120), INT8_MIN, INT8_C( 83),
|
||
|
|
-INT8_C( 94), -INT8_C( 15), -INT8_C( 33), -INT8_C( 116), INT8_C( 20), -INT8_C( 118), INT8_C( 92), INT8_C( 81) },
|
||
|
|
{ -INT8_C( 44), -INT8_C( 127), INT8_C( 14), -INT8_C( 15), -INT8_C( 36), -INT8_C( 92), -INT8_C( 2), INT8_C( 2),
|
||
|
|
-INT8_C( 30), INT8_C( 106), INT8_C( 126), INT8_C( 70), INT8_C( 21), INT8_C( 124), -INT8_C( 14), INT8_C( 35) },
|
||
|
|
{ -INT8_C( 30), -INT8_C( 99), INT8_C( 95), INT8_C( 21), INT8_C( 35), INT8_C( 44), INT8_C( 126), INT8_C( 85),
|
||
|
|
-INT8_C( 124), INT8_C( 91), INT8_C( 93), -INT8_C( 46), INT8_C( 41), INT8_C( 6), INT8_C( 78), INT8_C( 116) } },
|
||
|
|
{ { -INT8_C( 104), INT8_C( 68), INT8_C( 71), -INT8_C( 32), -INT8_C( 52), -INT8_C( 56), INT8_C( 51), INT8_C( 110),
|
||
|
|
-INT8_C( 71), INT8_C( 18), -INT8_C( 5), -INT8_C( 51), -INT8_C( 99), INT8_C( 87), INT8_C( 31), INT8_C( 113) },
|
||
|
|
{ -INT8_C( 39), INT8_C( 45), INT8_C( 99), -INT8_C( 75), -INT8_C( 46), INT8_C( 97), -INT8_C( 73), -INT8_C( 76),
|
||
|
|
-INT8_C( 53), INT8_C( 53), -INT8_C( 6), -INT8_C( 32), -INT8_C( 79), -INT8_C( 19), INT8_C( 3), INT8_C( 74) },
|
||
|
|
{ INT8_C( 113), INT8_C( 113), -INT8_C( 86), -INT8_C( 107), -INT8_C( 98), INT8_C( 41), -INT8_C( 22), INT8_C( 34),
|
||
|
|
-INT8_C( 124), INT8_C( 71), -INT8_C( 11), -INT8_C( 83), INT8_C( 78), INT8_C( 68), INT8_C( 34), -INT8_C( 69) } },
|
||
|
|
{ { INT8_C( 49), INT8_C( 75), INT8_C( 42), -INT8_C( 3), INT8_C( 19), INT8_C( 93), INT8_C( 107), -INT8_C( 52),
|
||
|
|
INT8_C( 111), INT8_C( 102), -INT8_C( 103), INT8_C( 12), -INT8_C( 66), -INT8_C( 72), INT8_C( 126), -INT8_C( 105) },
|
||
|
|
{ -INT8_C( 26), -INT8_C( 31), INT8_C( 76), -INT8_C( 72), INT8_C( 66), INT8_C( 4), INT8_C( 108), INT8_C( 13),
|
||
|
|
INT8_C( 57), INT8_C( 103), -INT8_C( 19), -INT8_C( 21), INT8_C( 84), -INT8_C( 16), INT8_C( 53), -INT8_C( 123) },
|
||
|
|
{ INT8_C( 23), INT8_C( 44), INT8_C( 118), -INT8_C( 75), INT8_C( 85), INT8_C( 97), -INT8_C( 41), -INT8_C( 39),
|
||
|
|
-INT8_C( 88), -INT8_C( 51), -INT8_C( 122), -INT8_C( 9), INT8_C( 18), -INT8_C( 88), -INT8_C( 77), INT8_C( 28) } },
|
||
|
|
{ { INT8_C( 59), INT8_C( 95), -INT8_C( 126), INT8_C( 78), -INT8_C( 68), -INT8_C( 19), INT8_C( 26), INT8_C( 43),
|
||
|
|
INT8_C( 84), -INT8_C( 76), INT8_C( 56), INT8_C( 18), INT8_C( 108), -INT8_C( 74), -INT8_C( 87), INT8_C( 82) },
|
||
|
|
{ -INT8_C( 105), -INT8_C( 11), INT8_C( 10), -INT8_C( 39), -INT8_C( 7), INT8_C( 119), -INT8_C( 26), INT8_C( 51),
|
||
|
|
-INT8_C( 34), -INT8_C( 45), INT8_C( 30), INT8_C( 50), -INT8_C( 61), INT8_C( 83), -INT8_C( 73), -INT8_C( 1) },
|
||
|
|
{ -INT8_C( 46), INT8_C( 84), -INT8_C( 116), INT8_C( 39), -INT8_C( 75), INT8_C( 100), INT8_C( 0), INT8_C( 94),
|
||
|
|
INT8_C( 50), -INT8_C( 121), INT8_C( 86), INT8_C( 68), INT8_C( 47), INT8_C( 9), INT8_C( 96), INT8_C( 81) } },
|
||
|
|
{ { -INT8_C( 78), INT8_C( 57), INT8_C( 77), INT8_C( 110), INT8_C( 38), INT8_C( 104), -INT8_C( 103), INT8_C( 122),
|
||
|
|
INT8_C( 28), -INT8_C( 47), -INT8_C( 116), -INT8_C( 120), -INT8_C( 121), INT8_C( 53), -INT8_C( 37), INT8_C( 30) },
|
||
|
|
{ INT8_C( 43), -INT8_C( 27), -INT8_C( 9), INT8_C( 36), INT8_C( 92), -INT8_C( 35), INT8_C( 87), INT8_C( 58),
|
||
|
|
-INT8_C( 80), INT8_C( 117), INT8_C( 108), INT8_C( 116), -INT8_C( 56), INT8_C( 35), INT8_C( 115), INT8_C( 122) },
|
||
|
|
{ -INT8_C( 35), INT8_C( 30), INT8_C( 68), -INT8_C( 110), -INT8_C( 126), INT8_C( 69), -INT8_C( 16), -INT8_C( 76),
|
||
|
|
-INT8_C( 52), INT8_C( 70), -INT8_C( 8), -INT8_C( 4), INT8_C( 79), INT8_C( 88), INT8_C( 78), -INT8_C( 104) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_s8(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_i8x16(r, simde_vld1q_s8(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_s16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int16_t a[8];
|
||
|
|
int16_t b[8];
|
||
|
|
int16_t r[8];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { -INT16_C( 9359), INT16_C( 19853), -INT16_C( 5258), INT16_C( 25982), INT16_C( 13488), -INT16_C( 9621), -INT16_C( 8264), -INT16_C( 14382) },
|
||
|
|
{ -INT16_C( 29038), INT16_C( 16526), -INT16_C( 8207), -INT16_C( 10419), -INT16_C( 27770), INT16_C( 8648), -INT16_C( 9930), -INT16_C( 22287) },
|
||
|
|
{ INT16_C( 27139), -INT16_C( 29157), -INT16_C( 13465), INT16_C( 15563), -INT16_C( 14282), -INT16_C( 973), -INT16_C( 18194), INT16_C( 28867) } },
|
||
|
|
{ { INT16_C( 32436), INT16_C( 10997), INT16_C( 29545), INT16_C( 6799), -INT16_C( 1112), INT16_C( 24820), -INT16_C( 14630), INT16_C( 27688) },
|
||
|
|
{ -INT16_C( 18860), INT16_C( 17836), -INT16_C( 1643), INT16_C( 6940), -INT16_C( 7028), -INT16_C( 15556), INT16_C( 11710), INT16_C( 29291) },
|
||
|
|
{ INT16_C( 13576), INT16_C( 28833), INT16_C( 27902), INT16_C( 13739), -INT16_C( 8140), INT16_C( 9264), -INT16_C( 2920), -INT16_C( 8557) } },
|
||
|
|
{ { INT16_C( 24747), INT16_C( 5533), INT16_C( 11476), INT16_C( 31791), INT16_C( 8999), INT16_C( 476), INT16_C( 1257), INT16_C( 15981) },
|
||
|
|
{ INT16_C( 6587), INT16_C( 20611), -INT16_C( 24557), -INT16_C( 24724), -INT16_C( 22396), INT16_C( 16994), -INT16_C( 12842), -INT16_C( 32331) },
|
||
|
|
{ INT16_C( 31334), INT16_C( 26144), -INT16_C( 13081), INT16_C( 7067), -INT16_C( 13397), INT16_C( 17470), -INT16_C( 11585), -INT16_C( 16350) } },
|
||
|
|
{ { INT16_C( 21038), INT16_C( 662), -INT16_C( 14978), -INT16_C( 22914), INT16_C( 23272), -INT16_C( 11609), INT16_C( 5471), INT16_C( 6672) },
|
||
|
|
{ -INT16_C( 27858), INT16_C( 16746), -INT16_C( 10701), -INT16_C( 18207), INT16_C( 17279), INT16_C( 22010), -INT16_C( 20719), INT16_C( 16342) },
|
||
|
|
{ -INT16_C( 6820), INT16_C( 17408), -INT16_C( 25679), INT16_C( 24415), -INT16_C( 24985), INT16_C( 10401), -INT16_C( 15248), INT16_C( 23014) } },
|
||
|
|
{ { INT16_C( 27905), -INT16_C( 32703), -INT16_C( 16590), INT16_C( 6950), -INT16_C( 13031), INT16_C( 30957), -INT16_C( 542), INT16_C( 4498) },
|
||
|
|
{ -INT16_C( 624), -INT16_C( 15278), INT16_C( 13267), INT16_C( 21116), INT16_C( 30327), -INT16_C( 30553), INT16_C( 32294), INT16_C( 10183) },
|
||
|
|
{ INT16_C( 27281), INT16_C( 17555), -INT16_C( 3323), INT16_C( 28066), INT16_C( 17296), INT16_C( 404), INT16_C( 31752), INT16_C( 14681) } },
|
||
|
|
{ { INT16_C( 2283), INT16_C( 7591), -INT16_C( 12857), -INT16_C( 8136), INT16_C( 9627), INT16_C( 32089), -INT16_C( 5342), -INT16_C( 19570) },
|
||
|
|
{ -INT16_C( 7704), -INT16_C( 17289), -INT16_C( 3308), -INT16_C( 29938), -INT16_C( 18839), -INT16_C( 28909), -INT16_C( 9676), INT16_C( 8119) },
|
||
|
|
{ -INT16_C( 5421), -INT16_C( 9698), -INT16_C( 16165), INT16_C( 27462), -INT16_C( 9212), INT16_C( 3180), -INT16_C( 15018), -INT16_C( 11451) } },
|
||
|
|
{ { INT16_C( 24290), -INT16_C( 22212), INT16_C( 29996), -INT16_C( 14454), -INT16_C( 7270), -INT16_C( 17084), -INT16_C( 11314), -INT16_C( 18576) },
|
||
|
|
{ -INT16_C( 6220), -INT16_C( 14221), -INT16_C( 32294), INT16_C( 17236), INT16_C( 26423), INT16_C( 27603), -INT16_C( 30142), INT16_C( 9354) },
|
||
|
|
{ INT16_C( 18070), INT16_C( 29103), -INT16_C( 2298), INT16_C( 2782), INT16_C( 19153), INT16_C( 10519), INT16_C( 24080), -INT16_C( 9222) } },
|
||
|
|
{ { -INT16_C( 14360), INT16_C( 5326), INT16_C( 22588), -INT16_C( 10533), INT16_C( 8251), INT16_C( 2451), INT16_C( 1011), -INT16_C( 22592) },
|
||
|
|
{ INT16_C( 13290), -INT16_C( 15249), -INT16_C( 15435), -INT16_C( 5112), -INT16_C( 9429), INT16_C( 27992), -INT16_C( 7579), INT16_C( 19857) },
|
||
|
|
{ -INT16_C( 1070), -INT16_C( 9923), INT16_C( 7153), -INT16_C( 15645), -INT16_C( 1178), INT16_C( 30443), -INT16_C( 6568), -INT16_C( 2735) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_s16(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_i16x8(r, simde_vld1q_s16(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_s32 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int32_t a[4];
|
||
|
|
int32_t b[4];
|
||
|
|
int32_t r[4];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { -INT32_C( 446537815), -INT32_C( 222544457), INT32_C( 1358712669), INT32_C( 1039645779) },
|
||
|
|
{ -INT32_C( 1526568976), INT32_C( 1435568682), INT32_C( 1254287845), INT32_C( 1972851916) },
|
||
|
|
{ -INT32_C( 1973106791), INT32_C( 1213024225), -INT32_C( 1681966782), -INT32_C( 1282469601) } },
|
||
|
|
{ { INT32_C( 1801189811), -INT32_C( 1805838537), -INT32_C( 1176151706), INT32_C( 116907030) },
|
||
|
|
{ INT32_C( 1856764227), -INT32_C( 389858301), -INT32_C( 231569882), -INT32_C( 1922577958) },
|
||
|
|
{ -INT32_C( 637013258), INT32_C( 2099270458), -INT32_C( 1407721588), -INT32_C( 1805670928) } },
|
||
|
|
{ { -INT32_C( 84360509), INT32_C( 1083070169), -INT32_C( 973507665), -INT32_C( 1815351216) },
|
||
|
|
{ -INT32_C( 335448343), -INT32_C( 640367181), INT32_C( 634062411), -INT32_C( 1817038128) },
|
||
|
|
{ -INT32_C( 419808852), INT32_C( 442702988), -INT32_C( 339445254), INT32_C( 662577952) } },
|
||
|
|
{ { -INT32_C( 829576203), -INT32_C( 1341252863), -INT32_C( 545912689), -INT32_C( 495828488) },
|
||
|
|
{ INT32_C( 1808692408), -INT32_C( 2075876551), INT32_C( 2041122729), INT32_C( 906779457) },
|
||
|
|
{ INT32_C( 979116205), INT32_C( 877837882), INT32_C( 1495210040), INT32_C( 410950969) } },
|
||
|
|
{ { INT32_C( 117807366), INT32_C( 1152914357), INT32_C( 337849883), INT32_C( 670471535) },
|
||
|
|
{ INT32_C( 1116914697), INT32_C( 298243687), INT32_C( 663384037), -INT32_C( 782395445) },
|
||
|
|
{ INT32_C( 1234722063), INT32_C( 1451158044), INT32_C( 1001233920), -INT32_C( 111923910) } },
|
||
|
|
{ { -INT32_C( 438738384), -INT32_C( 1859546762), INT32_C( 782585023), -INT32_C( 346645534) },
|
||
|
|
{ -INT32_C( 953227168), -INT32_C( 1529285441), INT32_C( 801858404), INT32_C( 704653818) },
|
||
|
|
{ -INT32_C( 1391965552), INT32_C( 906135093), INT32_C( 1584443427), INT32_C( 358008284) } },
|
||
|
|
{ { INT32_C( 17881483), INT32_C( 697514346), INT32_C( 1750612102), INT32_C( 877899476) },
|
||
|
|
{ INT32_C( 1442546070), -INT32_C( 621095818), INT32_C( 822723895), INT32_C( 2052786670) },
|
||
|
|
{ INT32_C( 1460427553), INT32_C( 76418528), -INT32_C( 1721631299), -INT32_C( 1364281150) } },
|
||
|
|
{ { INT32_C( 1299934179), INT32_C( 729222821), INT32_C( 462671687), INT32_C( 324003453) },
|
||
|
|
{ -INT32_C( 563525016), INT32_C( 1438147358), INT32_C( 394707240), -INT32_C( 1382948150) },
|
||
|
|
{ INT32_C( 736409163), -INT32_C( 2127597117), INT32_C( 857378927), -INT32_C( 1058944697) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_s32(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_i32x4(r, simde_vld1q_s32(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_s64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
int64_t a[2];
|
||
|
|
int64_t b[2];
|
||
|
|
int64_t r[2];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { INT64_C( 7069932454407769165), -INT64_C( 13004371797364671) },
|
||
|
|
{ -INT64_C( 4140332404967654890), INT64_C( 4669791854137250134) },
|
||
|
|
{ INT64_C( 2929600049440114275), INT64_C( 4656787482339885463) } },
|
||
|
|
{ { INT64_C( 9004754196787087738), INT64_C( 6311525774842819585) },
|
||
|
|
{ INT64_C( 6893064936395404358), INT64_C( 8024092871902594599) },
|
||
|
|
{ -INT64_C( 2548924940527059520), -INT64_C( 4111125426964137432) } },
|
||
|
|
{ { -INT64_C( 2319920201253745130), INT64_C( 6415393146933806960) },
|
||
|
|
{ -INT64_C( 3248530561039559550), -INT64_C( 3544254053793109396) },
|
||
|
|
{ -INT64_C( 5568450762293304680), INT64_C( 2871139093140697564) } },
|
||
|
|
{ { INT64_C( 4725381914672747733), -INT64_C( 7178462820614140940) },
|
||
|
|
{ -INT64_C( 1222143994085532274), INT64_C( 1441468807256274812) },
|
||
|
|
{ INT64_C( 3503237920587215459), -INT64_C( 5736994013357866128) } },
|
||
|
|
{ { INT64_C( 145904156942017013), -INT64_C( 9215373147744044954) },
|
||
|
|
{ -INT64_C( 3352152200456879353), -INT64_C( 2302176223951467846) },
|
||
|
|
{ -INT64_C( 3206248043514862340), INT64_C( 6929194702014038816) } },
|
||
|
|
{ { -INT64_C( 7550095452228168409), -INT64_C( 5469846406055902556) },
|
||
|
|
{ INT64_C( 5664886855523291254), -INT64_C( 3436716378960715133) },
|
||
|
|
{ -INT64_C( 1885208596704877155), -INT64_C( 8906562785016617689) } },
|
||
|
|
{ { INT64_C( 4967820718097494825), -INT64_C( 5629233198243575680) },
|
||
|
|
{ INT64_C( 6531657446270508995), INT64_C( 7725668155930504637) },
|
||
|
|
{ -INT64_C( 6947265909341547796), INT64_C( 2096434957686928957) } },
|
||
|
|
{ { -INT64_C( 293377758463705846), INT64_C( 9127117198251772094) },
|
||
|
|
{ INT64_C( 25185705384028199), INT64_C( 4761604672234922343) },
|
||
|
|
{ -INT64_C( 268192053079677647), -INT64_C( 4558022203222857179) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_s64(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_i64x2(r, simde_vld1q_s64(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_u8 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint8_t a[16];
|
||
|
|
uint8_t b[16];
|
||
|
|
uint8_t r[16];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT8_C(219), UINT8_C(217), UINT8_C(235), UINT8_C( 86), UINT8_C(143), UINT8_C(217), UINT8_C( 81), UINT8_C( 77),
|
||
|
|
UINT8_C(161), UINT8_C(120), UINT8_C( 70), UINT8_C( 92), UINT8_C(128), UINT8_C(240), UINT8_C(218), UINT8_C(167) },
|
||
|
|
{ UINT8_C( 24), UINT8_C(175), UINT8_C(166), UINT8_C( 91), UINT8_C( 42), UINT8_MAX, UINT8_C( 92), UINT8_C(145),
|
||
|
|
UINT8_C( 32), UINT8_C(195), UINT8_C( 58), UINT8_C( 88), UINT8_C( 97), UINT8_C( 78), UINT8_C(154), UINT8_C( 60) },
|
||
|
|
{ UINT8_C(243), UINT8_C(136), UINT8_C(145), UINT8_C(177), UINT8_C(185), UINT8_C(216), UINT8_C(173), UINT8_C(222),
|
||
|
|
UINT8_C(193), UINT8_C( 59), UINT8_C(128), UINT8_C(180), UINT8_C(225), UINT8_C( 62), UINT8_C(116), UINT8_C(227) } },
|
||
|
|
{ { UINT8_C( 39), UINT8_C(134), UINT8_C(146), UINT8_C(182), UINT8_C( 95), UINT8_C(227), UINT8_C( 3), UINT8_C( 0),
|
||
|
|
UINT8_C( 91), UINT8_C( 73), UINT8_C( 93), UINT8_C(220), UINT8_C( 58), UINT8_C( 55), UINT8_C(131), UINT8_C( 82) },
|
||
|
|
{ UINT8_C(231), UINT8_C( 41), UINT8_C(174), UINT8_C( 17), UINT8_C( 40), UINT8_C( 10), UINT8_C(162), UINT8_C( 73),
|
||
|
|
UINT8_C(205), UINT8_C(221), UINT8_C(161), UINT8_C( 46), UINT8_C( 43), UINT8_C( 60), UINT8_C(106), UINT8_C( 83) },
|
||
|
|
{ UINT8_C( 14), UINT8_C(175), UINT8_C( 64), UINT8_C(199), UINT8_C(135), UINT8_C(237), UINT8_C(165), UINT8_C( 73),
|
||
|
|
UINT8_C( 40), UINT8_C( 38), UINT8_C(254), UINT8_C( 10), UINT8_C(101), UINT8_C(115), UINT8_C(237), UINT8_C(165) } },
|
||
|
|
{ { UINT8_C(194), UINT8_C(252), UINT8_C( 9), UINT8_C( 33), UINT8_C(223), UINT8_C( 13), UINT8_C( 33), UINT8_C( 58),
|
||
|
|
UINT8_C( 86), UINT8_C(126), UINT8_C( 22), UINT8_C(144), UINT8_C(182), UINT8_C(154), UINT8_C(227), UINT8_C(157) },
|
||
|
|
{ UINT8_C(195), UINT8_C(145), UINT8_C(174), UINT8_C(236), UINT8_C(155), UINT8_C( 80), UINT8_C( 53), UINT8_C(104),
|
||
|
|
UINT8_C( 45), UINT8_C(214), UINT8_C(150), UINT8_C( 89), UINT8_C( 18), UINT8_C( 0), UINT8_C(172), UINT8_C(212) },
|
||
|
|
{ UINT8_C(133), UINT8_C(141), UINT8_C(183), UINT8_C( 13), UINT8_C(122), UINT8_C( 93), UINT8_C( 86), UINT8_C(162),
|
||
|
|
UINT8_C(131), UINT8_C( 84), UINT8_C(172), UINT8_C(233), UINT8_C(200), UINT8_C(154), UINT8_C(143), UINT8_C(113) } },
|
||
|
|
{ { UINT8_C(252), UINT8_C(181), UINT8_C(245), UINT8_C(219), UINT8_C(194), UINT8_C( 23), UINT8_C( 21), UINT8_C( 25),
|
||
|
|
UINT8_C(149), UINT8_C( 44), UINT8_C(169), UINT8_C( 75), UINT8_C(198), UINT8_C(140), UINT8_C(232), UINT8_C(137) },
|
||
|
|
{ UINT8_C( 29), UINT8_C(150), UINT8_C(117), UINT8_C(184), UINT8_C(231), UINT8_C(170), UINT8_C( 32), UINT8_C( 20),
|
||
|
|
UINT8_C(129), UINT8_C(182), UINT8_C(109), UINT8_C(147), UINT8_C(182), UINT8_C( 25), UINT8_C(104), UINT8_C(178) },
|
||
|
|
{ UINT8_C( 25), UINT8_C( 75), UINT8_C(106), UINT8_C(147), UINT8_C(169), UINT8_C(193), UINT8_C( 53), UINT8_C( 45),
|
||
|
|
UINT8_C( 22), UINT8_C(226), UINT8_C( 22), UINT8_C(222), UINT8_C(124), UINT8_C(165), UINT8_C( 80), UINT8_C( 59) } },
|
||
|
|
{ { UINT8_C(207), UINT8_C( 93), UINT8_C(141), UINT8_C(145), UINT8_C(116), UINT8_C(163), UINT8_C(170), UINT8_C( 10),
|
||
|
|
UINT8_C(207), UINT8_C( 84), UINT8_C( 85), UINT8_C(149), UINT8_C(224), UINT8_C( 62), UINT8_C( 30), UINT8_C(254) },
|
||
|
|
{ UINT8_C(212), UINT8_C(148), UINT8_C(182), UINT8_C(187), UINT8_C( 62), UINT8_C(215), UINT8_C(208), UINT8_C(191),
|
||
|
|
UINT8_C(141), UINT8_C( 61), UINT8_C( 83), UINT8_C( 68), UINT8_C( 87), UINT8_C(187), UINT8_C(246), UINT8_C( 38) },
|
||
|
|
{ UINT8_C(163), UINT8_C(241), UINT8_C( 67), UINT8_C( 76), UINT8_C(178), UINT8_C(122), UINT8_C(122), UINT8_C(201),
|
||
|
|
UINT8_C( 92), UINT8_C(145), UINT8_C(168), UINT8_C(217), UINT8_C( 55), UINT8_C(249), UINT8_C( 20), UINT8_C( 36) } },
|
||
|
|
{ { UINT8_C( 24), UINT8_C(132), UINT8_C(183), UINT8_C(141), UINT8_C( 39), UINT8_C( 98), UINT8_C(151), UINT8_C(246),
|
||
|
|
UINT8_C(182), UINT8_C(236), UINT8_C(139), UINT8_C(150), UINT8_C( 42), UINT8_C(169), UINT8_C(148), UINT8_MAX },
|
||
|
|
{ UINT8_C( 61), UINT8_C( 75), UINT8_C(186), UINT8_C(124), UINT8_C( 34), UINT8_C(138), UINT8_C( 59), UINT8_C(175),
|
||
|
|
UINT8_C(200), UINT8_C(142), UINT8_C(243), UINT8_C( 31), UINT8_C( 73), UINT8_C(234), UINT8_C( 69), UINT8_C( 98) },
|
||
|
|
{ UINT8_C( 85), UINT8_C(207), UINT8_C(113), UINT8_C( 9), UINT8_C( 73), UINT8_C(236), UINT8_C(210), UINT8_C(165),
|
||
|
|
UINT8_C(126), UINT8_C(122), UINT8_C(126), UINT8_C(181), UINT8_C(115), UINT8_C(147), UINT8_C(217), UINT8_C( 97) } },
|
||
|
|
{ { UINT8_C(110), UINT8_C(252), UINT8_C(239), UINT8_C(149), UINT8_C( 94), UINT8_C(134), UINT8_C(139), UINT8_C( 20),
|
||
|
|
UINT8_C(114), UINT8_C( 22), UINT8_C(171), UINT8_C(157), UINT8_C(191), UINT8_C( 63), UINT8_C(156), UINT8_C(253) },
|
||
|
|
{ UINT8_C(138), UINT8_C( 86), UINT8_C(121), UINT8_C(172), UINT8_C(225), UINT8_C(180), UINT8_C( 92), UINT8_C(169),
|
||
|
|
UINT8_C( 67), UINT8_C( 79), UINT8_C(200), UINT8_C(140), UINT8_C( 57), UINT8_C( 13), UINT8_C(238), UINT8_C(167) },
|
||
|
|
{ UINT8_C(248), UINT8_C( 82), UINT8_C(104), UINT8_C( 65), UINT8_C( 63), UINT8_C( 58), UINT8_C(231), UINT8_C(189),
|
||
|
|
UINT8_C(181), UINT8_C(101), UINT8_C(115), UINT8_C( 41), UINT8_C(248), UINT8_C( 76), UINT8_C(138), UINT8_C(164) } },
|
||
|
|
{ { UINT8_C( 9), UINT8_C(221), UINT8_C( 60), UINT8_C(104), UINT8_C( 99), UINT8_C(199), UINT8_C(124), UINT8_C(214),
|
||
|
|
UINT8_C(221), UINT8_C( 39), UINT8_C(115), UINT8_C(157), UINT8_C(103), UINT8_C( 15), UINT8_C(154), UINT8_C(241) },
|
||
|
|
{ UINT8_C(101), UINT8_C( 19), UINT8_C(158), UINT8_C( 70), UINT8_C(199), UINT8_C(250), UINT8_C(239), UINT8_C( 10),
|
||
|
|
UINT8_C( 73), UINT8_C(183), UINT8_C(151), UINT8_C(131), UINT8_C(196), UINT8_C(133), UINT8_C( 42), UINT8_C(206) },
|
||
|
|
{ UINT8_C(110), UINT8_C(240), UINT8_C(218), UINT8_C(174), UINT8_C( 42), UINT8_C(193), UINT8_C(107), UINT8_C(224),
|
||
|
|
UINT8_C( 38), UINT8_C(222), UINT8_C( 10), UINT8_C( 32), UINT8_C( 43), UINT8_C(148), UINT8_C(196), UINT8_C(191) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_u8(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_u8x16(r, simde_vld1q_u8(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_u16 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint16_t a[8];
|
||
|
|
uint16_t b[8];
|
||
|
|
uint16_t r[8];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT16_C(26467), UINT16_C(50742), UINT16_C(45614), UINT16_C( 3228), UINT16_C( 4058), UINT16_C(16809), UINT16_C(17182), UINT16_C(33842) },
|
||
|
|
{ UINT16_C(53334), UINT16_C( 7626), UINT16_C(47818), UINT16_C( 5160), UINT16_C(49009), UINT16_C(13975), UINT16_C(49476), UINT16_C(42756) },
|
||
|
|
{ UINT16_C(14265), UINT16_C(58368), UINT16_C(27896), UINT16_C( 8388), UINT16_C(53067), UINT16_C(30784), UINT16_C( 1122), UINT16_C(11062) } },
|
||
|
|
{ { UINT16_C(14888), UINT16_C(22382), UINT16_C( 2796), UINT16_C(50787), UINT16_C( 3098), UINT16_C(14343), UINT16_C(14927), UINT16_C(42428) },
|
||
|
|
{ UINT16_C(34570), UINT16_C(54722), UINT16_C(59969), UINT16_C(45801), UINT16_C(32937), UINT16_C(61160), UINT16_C(60481), UINT16_C(27285) },
|
||
|
|
{ UINT16_C(49458), UINT16_C(11568), UINT16_C(62765), UINT16_C(31052), UINT16_C(36035), UINT16_C( 9967), UINT16_C( 9872), UINT16_C( 4177) } },
|
||
|
|
{ { UINT16_C( 806), UINT16_C( 5057), UINT16_C( 9230), UINT16_C(10457), UINT16_C(57648), UINT16_C(32608), UINT16_C( 7451), UINT16_C( 9508) },
|
||
|
|
{ UINT16_C(59044), UINT16_C(58874), UINT16_C(58321), UINT16_C(31383), UINT16_C(32867), UINT16_C(42344), UINT16_C(65132), UINT16_C(37647) },
|
||
|
|
{ UINT16_C(59850), UINT16_C(63931), UINT16_C( 2015), UINT16_C(41840), UINT16_C(24979), UINT16_C( 9416), UINT16_C( 7047), UINT16_C(47155) } },
|
||
|
|
{ { UINT16_C(53249), UINT16_C( 4006), UINT16_C(32756), UINT16_C( 9271), UINT16_C(39008), UINT16_C(31651), UINT16_C(51125), UINT16_C(22945) },
|
||
|
|
{ UINT16_C(39853), UINT16_C(32318), UINT16_C(54655), UINT16_C(58105), UINT16_C(24917), UINT16_C(49799), UINT16_C(38495), UINT16_C(24917) },
|
||
|
|
{ UINT16_C(27566), UINT16_C(36324), UINT16_C(21875), UINT16_C( 1840), UINT16_C(63925), UINT16_C(15914), UINT16_C(24084), UINT16_C(47862) } },
|
||
|
|
{ { UINT16_C(64358), UINT16_C(23152), UINT16_C(43130), UINT16_C(56190), UINT16_C( 8512), UINT16_C(62806), UINT16_C(63464), UINT16_C(38478) },
|
||
|
|
{ UINT16_C(35987), UINT16_C( 4628), UINT16_C( 3425), UINT16_C(47092), UINT16_C(31855), UINT16_C(52857), UINT16_C(52754), UINT16_C(31023) },
|
||
|
|
{ UINT16_C(34809), UINT16_C(27780), UINT16_C(46555), UINT16_C(37746), UINT16_C(40367), UINT16_C(50127), UINT16_C(50682), UINT16_C( 3965) } },
|
||
|
|
{ { UINT16_C(41161), UINT16_C(17363), UINT16_C(21064), UINT16_C(34846), UINT16_C(30067), UINT16_C(23677), UINT16_C(52076), UINT16_C(65522) },
|
||
|
|
{ UINT16_C( 1623), UINT16_C(47121), UINT16_C( 1556), UINT16_C(33647), UINT16_C(59522), UINT16_C(37969), UINT16_C(33206), UINT16_C(32525) },
|
||
|
|
{ UINT16_C(42784), UINT16_C(64484), UINT16_C(22620), UINT16_C( 2957), UINT16_C(24053), UINT16_C(61646), UINT16_C(19746), UINT16_C(32511) } },
|
||
|
|
{ { UINT16_C(57633), UINT16_C(27075), UINT16_C(57651), UINT16_C(42737), UINT16_C(28246), UINT16_C(49922), UINT16_C(62521), UINT16_C(37058) },
|
||
|
|
{ UINT16_C(54523), UINT16_C( 3912), UINT16_C(47322), UINT16_C(23698), UINT16_C(58272), UINT16_C(22512), UINT16_C(65124), UINT16_C(34262) },
|
||
|
|
{ UINT16_C(46620), UINT16_C(30987), UINT16_C(39437), UINT16_C( 899), UINT16_C(20982), UINT16_C( 6898), UINT16_C(62109), UINT16_C( 5784) } },
|
||
|
|
{ { UINT16_C(39391), UINT16_C( 4846), UINT16_C(57211), UINT16_C(53688), UINT16_C(47949), UINT16_C(34452), UINT16_C(22447), UINT16_C(43542) },
|
||
|
|
{ UINT16_C(24363), UINT16_C( 1465), UINT16_C(19223), UINT16_C(46945), UINT16_C(20783), UINT16_C(37646), UINT16_C(58703), UINT16_C(11801) },
|
||
|
|
{ UINT16_C(63754), UINT16_C( 6311), UINT16_C(10898), UINT16_C(35097), UINT16_C( 3196), UINT16_C( 6562), UINT16_C(15614), UINT16_C(55343) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_u16(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_u16x8(r, simde_vld1q_u16(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_u32 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint32_t a[4];
|
||
|
|
uint32_t b[4];
|
||
|
|
uint32_t r[4];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT32_C(4181723006), UINT32_C( 885783015), UINT32_C(1673224116), UINT32_C(3775844790) },
|
||
|
|
{ UINT32_C(1206306608), UINT32_C(1124026131), UINT32_C(3906276761), UINT32_C(1897393906) },
|
||
|
|
{ UINT32_C(1093062318), UINT32_C(2009809146), UINT32_C(1284533581), UINT32_C(1378271400) } },
|
||
|
|
{ { UINT32_C(3714734070), UINT32_C( 68236624), UINT32_C(1265159317), UINT32_C(3459085982) },
|
||
|
|
{ UINT32_C(1343623997), UINT32_C(4103214427), UINT32_C( 366766114), UINT32_C(1283912534) },
|
||
|
|
{ UINT32_C( 763390771), UINT32_C(4171451051), UINT32_C(1631925431), UINT32_C( 448031220) } },
|
||
|
|
{ { UINT32_C(2603216971), UINT32_C(3147840294), UINT32_C(2768635911), UINT32_C(3144954750) },
|
||
|
|
{ UINT32_C(2718730823), UINT32_C(3247873695), UINT32_C(1574334982), UINT32_C(2980666470) },
|
||
|
|
{ UINT32_C(1026980498), UINT32_C(2100746693), UINT32_C( 48003597), UINT32_C(1830653924) } },
|
||
|
|
{ { UINT32_C(1934414669), UINT32_C( 355396622), UINT32_C(1924871412), UINT32_C(2939039592) },
|
||
|
|
{ UINT32_C(1481718457), UINT32_C(3743016920), UINT32_C(3208441945), UINT32_C(2574312780) },
|
||
|
|
{ UINT32_C(3416133126), UINT32_C(4098413542), UINT32_C( 838346061), UINT32_C(1218385076) } },
|
||
|
|
{ { UINT32_C(3322723768), UINT32_C(2665233065), UINT32_C(3608188783), UINT32_C(2139504326) },
|
||
|
|
{ UINT32_C(1373099896), UINT32_C( 389083326), UINT32_C( 769092832), UINT32_C( 180766545) },
|
||
|
|
{ UINT32_C( 400856368), UINT32_C(3054316391), UINT32_C( 82314319), UINT32_C(2320270871) } },
|
||
|
|
{ { UINT32_C(2932921092), UINT32_C(2085399565), UINT32_C( 156458051), UINT32_C( 327735707) },
|
||
|
|
{ UINT32_C(1852071856), UINT32_C( 814126160), UINT32_C(1381850368), UINT32_C(2841388196) },
|
||
|
|
{ UINT32_C( 490025652), UINT32_C(2899525725), UINT32_C(1538308419), UINT32_C(3169123903) } },
|
||
|
|
{ { UINT32_C( 72822007), UINT32_C( 478258137), UINT32_C(2586236159), UINT32_C(1588506286) },
|
||
|
|
{ UINT32_C(1590497806), UINT32_C(2811122599), UINT32_C(1425665200), UINT32_C( 134042896) },
|
||
|
|
{ UINT32_C(1663319813), UINT32_C(3289380736), UINT32_C(4011901359), UINT32_C(1722549182) } },
|
||
|
|
{ { UINT32_C(1527469186), UINT32_C(4151807223), UINT32_C( 261201249), UINT32_C(1517109068) },
|
||
|
|
{ UINT32_C(4189600338), UINT32_C(1033913997), UINT32_C(1116903986), UINT32_C(1900646383) },
|
||
|
|
{ UINT32_C(1422102228), UINT32_C( 890753924), UINT32_C(1378105235), UINT32_C(3417755451) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_u32(a, b);
|
||
|
|
|
||
|
|
simde_test_arm_neon_assert_equal_u32x4(r, simde_vld1q_u32(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
static int
|
||
|
|
test_simde_vaddq_u64 (SIMDE_MUNIT_TEST_ARGS) {
|
||
|
|
struct {
|
||
|
|
uint64_t a[2];
|
||
|
|
uint64_t b[2];
|
||
|
|
uint64_t r[2];
|
||
|
|
} test_vec[] = {
|
||
|
|
{ { UINT64_C( 4814986688458413540), UINT64_C(17692320368709166305) },
|
||
|
|
{ UINT64_C(13313924206382956537), UINT64_C(14594553297499805225) },
|
||
|
|
{ UINT64_C(18128910894841370077), UINT64_C(13840129592499419914) } },
|
||
|
|
{ { UINT64_C( 8988473036196107929), UINT64_C(14372448548797616092) },
|
||
|
|
{ UINT64_C( 1994835094183764848), UINT64_C( 9807079594316311145) },
|
||
|
|
{ UINT64_C(10983308130379872777), UINT64_C( 5732784069404375621) } },
|
||
|
|
{ { UINT64_C( 1381409056111181588), UINT64_C( 8531232789823149263) },
|
||
|
|
{ UINT64_C( 3492853524787409771), UINT64_C( 9168371629288304069) },
|
||
|
|
{ UINT64_C( 4874262580898591359), UINT64_C(17699604419111453332) } },
|
||
|
|
{ { UINT64_C(14961619866231914328), UINT64_C(12081417531889038382) },
|
||
|
|
{ UINT64_C(17832984800169039493), UINT64_C(17011757792814168874) },
|
||
|
|
{ UINT64_C(14347860592691402205), UINT64_C(10646431250993655640) } },
|
||
|
|
{ { UINT64_C(14696404044792677158), UINT64_C(13201361342813856081) },
|
||
|
|
{ UINT64_C(16277837227336350142), UINT64_C(11455340474931777913) },
|
||
|
|
{ UINT64_C(12527497198419475684), UINT64_C( 6209957744036082378) } },
|
||
|
|
{ { UINT64_C(16372757905063310543), UINT64_C(11169953870697739545) },
|
||
|
|
{ UINT64_C(18335686276445570782), UINT64_C( 5051355942773124099) },
|
||
|
|
{ UINT64_C(16261700107799329709), UINT64_C(16221309813470863644) } },
|
||
|
|
{ { UINT64_C(12749384425783090810), UINT64_C(16328080845921083167) },
|
||
|
|
{ UINT64_C(10919518894275568390), UINT64_C( 1555480866372949464) },
|
||
|
|
{ UINT64_C( 5222159246349107584), UINT64_C(17883561712294032631) } },
|
||
|
|
{ { UINT64_C( 5859481300311754763), UINT64_C( 6004676323984625006) },
|
||
|
|
{ UINT64_C(10246929086205053448), UINT64_C( 9200137657917523965) },
|
||
|
|
{ UINT64_C(16106410386516808211), UINT64_C(15204813981902148971) } }
|
||
|
|
};
|
||
|
|
|
||
|
|
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_vaddq_u64(a, b);
|
||
|
|
simde_test_arm_neon_assert_equal_u64x2(r, simde_vld1q_u64(test_vec[i].r));
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
SIMDE_TEST_FUNC_LIST_BEGIN
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddh_f16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddd_s64)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddd_u64)
|
||
|
|
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_f16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_f32)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_f64)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_s8)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_s16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_s32)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_s64)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_u8)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_u16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_u32)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vadd_u64)
|
||
|
|
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_f16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_f32)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_f64)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_s8)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_s16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_s32)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_s64)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_u8)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_u16)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_u32)
|
||
|
|
SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_u64)
|
||
|
|
SIMDE_TEST_FUNC_LIST_END
|
||
|
|
|
||
|
|
#include "test-neon-footer.h"
|