#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_t a; simde_float16_t b; simde_float16_t 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_t 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_t a = simde_test_codegen_random_f16(-1000.0f, 1000.0f); simde_float16_t b = simde_test_codegen_random_f16(-1000.0f, 1000.0f); simde_float16_t 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_t a[4]; simde_float16_t b[4]; simde_float16_t r[4]; } test_vec[] = { { { SIMDE_FLOAT16_VALUE( -49.28), SIMDE_FLOAT16_VALUE( -109.00), SIMDE_FLOAT16_VALUE( -626.50), SIMDE_FLOAT16_VALUE( -567.00) }, { SIMDE_FLOAT16_VALUE( -178.88), SIMDE_FLOAT16_VALUE( 10.22), SIMDE_FLOAT16_VALUE( 976.50), SIMDE_FLOAT16_VALUE( -31.19) }, { SIMDE_FLOAT16_VALUE( -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) { #if 1 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; #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_vadd_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_vadd_f64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_float64x1_t a = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde_float64x1_t b = simde_test_arm_neon_random_f64x1(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde_float64x1_t r = simde_vadd_f64(a, b); simde_test_arm_neon_write_f64x1(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_f64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_arm_neon_write_f64x1(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vadd_s8 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vadd_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_vadd_s16 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vadd_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_vadd_s32 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vadd_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_vadd_s64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_int64x1_t a = simde_test_arm_neon_random_i64x1(); simde_int64x1_t b = simde_test_arm_neon_random_i64x1(); simde_int64x1_t r = simde_vadd_s64(a, b); simde_test_arm_neon_write_i64x1(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_i64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_arm_neon_write_i64x1(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vadd_u8 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vadd_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_vadd_u16 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vadd_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_vadd_u32 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vadd_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_vadd_u64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_uint64x1_t a = simde_test_arm_neon_random_u64x1(); simde_uint64x1_t b = simde_test_arm_neon_random_u64x1(); simde_uint64x1_t r = simde_vadd_u64(a, b); simde_test_arm_neon_write_u64x1(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_u64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_arm_neon_write_u64x1(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vaddq_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( 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) { #if 1 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; #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_vaddq_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_vaddq_f64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_float64x2_t a = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde_float64x2_t b = simde_test_arm_neon_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde_float64x2_t r = simde_vaddq_f64(a, b); simde_test_arm_neon_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_arm_neon_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vaddq_s8 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_s16 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_s32 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_s64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_u8 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_u16 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_u32 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vaddq_u64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 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; #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_vaddq_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_vadd_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( 33), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 65), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 235), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 73) }, { SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 232), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 101), SIMDE_POLY8_C( 20) }, { SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 7), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 101), SIMDE_POLY8_C( 93) } }, { { SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 215), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 215), SIMDE_POLY8_C( 125) }, { SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 157), SIMDE_POLY8_C( 162), SIMDE_POLY8_C( 142), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 65), SIMDE_POLY8_C( 82) }, { SIMDE_POLY8_C( 157), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 47) } }, { { SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 244), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 143) }, { SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 49), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 239), SIMDE_POLY8_C( 245) }, { SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 202), SIMDE_POLY8_C( 186), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 122) } }, { { SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 69), SIMDE_POLY8_C( 146), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 157), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 3) }, { SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 248) }, { SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 225), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 251) } }, { { SIMDE_POLY8_C( 242), SIMDE_POLY8_C( 176), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 94) }, { SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 107) }, { SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 149), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 129), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 53) } }, { { SIMDE_POLY8_C( 160), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 140), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 161) }, { SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 18), SIMDE_POLY8_C( 43), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 59) }, { SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 85), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 154) } }, { { SIMDE_POLY8_C( 254), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 92), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 23) }, { SIMDE_POLY8_C( 163), SIMDE_POLY8_C( 109), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 191), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 222) }, { SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 222), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 57), SIMDE_POLY8_C( 201) } }, { { SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 246), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 73), SIMDE_POLY8_C( 60) }, { SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 241) }, { SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 205) } }, }; 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_vadd_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_vadd_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_vadd_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( 44848), SIMDE_POLY16_C( 25263), SIMDE_POLY16_C( 56185), SIMDE_POLY16_C( 46842) }, { SIMDE_POLY16_C( 44027), SIMDE_POLY16_C( 18055), SIMDE_POLY16_C( 46799), SIMDE_POLY16_C( 11694) }, { SIMDE_POLY16_C( 1227), SIMDE_POLY16_C( 9256), SIMDE_POLY16_C( 28086), SIMDE_POLY16_C( 39764) } }, { { SIMDE_POLY16_C( 8719), SIMDE_POLY16_C( 48304), SIMDE_POLY16_C( 50563), SIMDE_POLY16_C( 33590) }, { SIMDE_POLY16_C( 60253), SIMDE_POLY16_C( 9950), SIMDE_POLY16_C( 7334), SIMDE_POLY16_C( 1265) }, { SIMDE_POLY16_C( 51538), SIMDE_POLY16_C( 39534), SIMDE_POLY16_C( 55589), SIMDE_POLY16_C( 34759) } }, { { SIMDE_POLY16_C( 2519), SIMDE_POLY16_C( 32880), SIMDE_POLY16_C( 38511), SIMDE_POLY16_C( 13749) }, { SIMDE_POLY16_C( 5160), SIMDE_POLY16_C( 5666), SIMDE_POLY16_C( 41636), SIMDE_POLY16_C( 48481) }, { SIMDE_POLY16_C( 7679), SIMDE_POLY16_C( 38482), SIMDE_POLY16_C( 13515), SIMDE_POLY16_C( 35028) } }, { { SIMDE_POLY16_C( 50014), SIMDE_POLY16_C( 24511), SIMDE_POLY16_C( 50497), SIMDE_POLY16_C( 7370) }, { SIMDE_POLY16_C( 38152), SIMDE_POLY16_C( 23612), SIMDE_POLY16_C( 5758), SIMDE_POLY16_C( 53290) }, { SIMDE_POLY16_C( 22102), SIMDE_POLY16_C( 899), SIMDE_POLY16_C( 54079), SIMDE_POLY16_C( 52448) } }, { { SIMDE_POLY16_C( 18670), SIMDE_POLY16_C( 22782), SIMDE_POLY16_C( 17120), SIMDE_POLY16_C( 154) }, { SIMDE_POLY16_C( 22181), SIMDE_POLY16_C( 26233), SIMDE_POLY16_C( 26407), SIMDE_POLY16_C( 43106) }, { SIMDE_POLY16_C( 7755), SIMDE_POLY16_C( 16007), SIMDE_POLY16_C( 9671), SIMDE_POLY16_C( 43256) } }, { { SIMDE_POLY16_C( 59179), SIMDE_POLY16_C( 13001), SIMDE_POLY16_C( 20645), SIMDE_POLY16_C( 16746) }, { SIMDE_POLY16_C( 51036), SIMDE_POLY16_C( 1807), SIMDE_POLY16_C( 20983), SIMDE_POLY16_C( 12864) }, { SIMDE_POLY16_C( 8311), SIMDE_POLY16_C( 13766), SIMDE_POLY16_C( 338), SIMDE_POLY16_C( 29482) } }, { { SIMDE_POLY16_C( 31092), SIMDE_POLY16_C( 3280), SIMDE_POLY16_C( 57691), SIMDE_POLY16_C( 47474) }, { SIMDE_POLY16_C( 10673), SIMDE_POLY16_C( 45266), SIMDE_POLY16_C( 22429), SIMDE_POLY16_C( 982) }, { SIMDE_POLY16_C( 20677), SIMDE_POLY16_C( 48130), SIMDE_POLY16_C( 46790), SIMDE_POLY16_C( 47780) } }, { { SIMDE_POLY16_C( 4312), SIMDE_POLY16_C( 27352), SIMDE_POLY16_C( 38240), SIMDE_POLY16_C( 43915) }, { SIMDE_POLY16_C( 33894), SIMDE_POLY16_C( 36255), SIMDE_POLY16_C( 63975), SIMDE_POLY16_C( 29690) }, { SIMDE_POLY16_C( 38078), SIMDE_POLY16_C( 59207), SIMDE_POLY16_C( 27783), SIMDE_POLY16_C( 55409) } }, }; 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_vadd_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_vadd_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_vadd_p64 (SIMDE_MUNIT_TEST_ARGS) { #if 1 struct { simde_poly64_t a[1]; simde_poly64_t b[1]; simde_poly64_t r[1]; } test_vec[] = { { { SIMDE_POLY64_C( 3371335337828377088) }, { SIMDE_POLY64_C(12072491326839767040) }, { SIMDE_POLY64_C( 9890882550602113536) } }, { { SIMDE_POLY64_C( 7391217391159827456) }, { SIMDE_POLY64_C(14364238106192646144) }, { SIMDE_POLY64_C(11658385110758804480) } }, { { SIMDE_POLY64_C( 7185530110704550912) }, { SIMDE_POLY64_C(13334676289916868608) }, { SIMDE_POLY64_C(15759899394016189440) } }, { { SIMDE_POLY64_C(14658100389548275712) }, { SIMDE_POLY64_C( 8650644509209679872) }, { SIMDE_POLY64_C(12925695957284839424) } }, { { SIMDE_POLY64_C(13960778482633791488) }, { SIMDE_POLY64_C( 3177382435778182656) }, { SIMDE_POLY64_C(17124641185996105216) } }, { { SIMDE_POLY64_C(17643760670330423296) }, { SIMDE_POLY64_C( 5279972151414581248) }, { SIMDE_POLY64_C(13663077304678014976) } }, { { SIMDE_POLY64_C( 4484919111408053760) }, { SIMDE_POLY64_C(10973306597402818560) }, { SIMDE_POLY64_C(11994394352764016128) } }, { { SIMDE_POLY64_C( 5962163531225644032) }, { SIMDE_POLY64_C( 3448187585791362048) }, { SIMDE_POLY64_C( 9036385187482548224) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly64x1_t a = simde_vld1_p64(test_vec[i].a); simde_poly64x1_t b = simde_vld1_p64(test_vec[i].b); simde_poly64x1_t r = simde_vadd_p64(a, b); simde_test_arm_neon_assert_equal_p64x1(r, simde_vld1_p64(test_vec[i].r)); } return 0; #else fputc('\n', stdout); for (int i = 0 ; i < 8 ; i++) { simde_poly64x1_t a = simde_test_arm_neon_random_p64x1(); simde_poly64x1_t b = simde_test_arm_neon_random_p64x1(); simde_poly64x1_t r = simde_vadd_p64(a, b); simde_test_arm_neon_write_p64x1(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_arm_neon_write_p64x1(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_arm_neon_write_p64x1(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_vaddq_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( 183), SIMDE_POLY8_C( 135), SIMDE_POLY8_C( 110), SIMDE_POLY8_C( 124), SIMDE_POLY8_C( 225), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 160), SIMDE_POLY8_C( 204), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 117), SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 126), SIMDE_POLY8_C( 228), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 129) }, { SIMDE_POLY8_C( 114), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 224), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 78), SIMDE_POLY8_C( 192), SIMDE_POLY8_C( 225), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 139) }, { SIMDE_POLY8_C( 197), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 97), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 1), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 12), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 3), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 130), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 10) } }, { { SIMDE_POLY8_C( 134), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 144), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 2), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 33), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 115), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 242) }, { SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 230), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 95), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 238), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 2) }, { SIMDE_POLY8_C( 241), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 216), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 212), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 122), SIMDE_POLY8_C(UINT8_MAX), SIMDE_POLY8_C( 22), SIMDE_POLY8_C( 215), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 138), SIMDE_POLY8_C( 37), SIMDE_POLY8_C( 240) } }, { { SIMDE_POLY8_C( 226), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 122), SIMDE_POLY8_C( 178), SIMDE_POLY8_C( 88), SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 163), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 202), SIMDE_POLY8_C( 64), SIMDE_POLY8_C( 89) }, { SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 166), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 53), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 154), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 136), SIMDE_POLY8_C( 165) }, { SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 42), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 71), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 174), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 252) } }, { { SIMDE_POLY8_C( 152), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 41), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 68), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 63), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 58), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 159) }, { SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 114), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 224), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 190), SIMDE_POLY8_C( 125), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 102), SIMDE_POLY8_C( 251), SIMDE_POLY8_C( 198), SIMDE_POLY8_C( 206), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 232), SIMDE_POLY8_C( 30) }, { SIMDE_POLY8_C( 19), SIMDE_POLY8_C( 32), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 182), SIMDE_POLY8_C( 26), SIMDE_POLY8_C( 47), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 148), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 188), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 129) } }, { { SIMDE_POLY8_C( 76), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 145), SIMDE_POLY8_C( 56), SIMDE_POLY8_C( 227), SIMDE_POLY8_C( 143), SIMDE_POLY8_C( 170), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 100), SIMDE_POLY8_C( 181), SIMDE_POLY8_C( 157), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 243), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 232), SIMDE_POLY8_C( 24) }, { SIMDE_POLY8_C( 17), SIMDE_POLY8_C( 179), SIMDE_POLY8_C( 80), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 75), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 177), SIMDE_POLY8_C( 156), SIMDE_POLY8_C( 204), SIMDE_POLY8_C( 101), SIMDE_POLY8_C( 83), SIMDE_POLY8_C( 253), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 207), SIMDE_POLY8_C( 194) }, { SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 189), SIMDE_POLY8_C( 193), SIMDE_POLY8_C( 44), SIMDE_POLY8_C( 168), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 126), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 121), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 151), SIMDE_POLY8_C( 14), SIMDE_POLY8_C( 91), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 218) } }, { { SIMDE_POLY8_C( 67), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 135), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 113), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 81), SIMDE_POLY8_C( 167), SIMDE_POLY8_C( 51), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 120), SIMDE_POLY8_C( 93), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 165), SIMDE_POLY8_C( 180) }, { SIMDE_POLY8_C( 126), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 202), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 150), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 141), SIMDE_POLY8_C( 131), SIMDE_POLY8_C( 219), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 187), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 139), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 210), SIMDE_POLY8_C( 129) }, { SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 77), SIMDE_POLY8_C( 112), SIMDE_POLY8_C( 231), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 220), SIMDE_POLY8_C( 36), SIMDE_POLY8_C( 232), SIMDE_POLY8_C( 54), SIMDE_POLY8_C( 195), SIMDE_POLY8_C( 132), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 10), SIMDE_POLY8_C( 119), SIMDE_POLY8_C( 53) } }, { { SIMDE_POLY8_C( 107), SIMDE_POLY8_C( 204), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 201), SIMDE_POLY8_C( 38), SIMDE_POLY8_C( 48), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 249), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 15), SIMDE_POLY8_C( 40), SIMDE_POLY8_C( 194), SIMDE_POLY8_C( 98), SIMDE_POLY8_C( 66), SIMDE_POLY8_C( 87) }, { SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 160), SIMDE_POLY8_C( 184), SIMDE_POLY8_C( 140), SIMDE_POLY8_C( 245), SIMDE_POLY8_C( 116), SIMDE_POLY8_C( 248), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 229), SIMDE_POLY8_C( 103), SIMDE_POLY8_C( 171), SIMDE_POLY8_C( 21), SIMDE_POLY8_C( 155), SIMDE_POLY8_C( 8), SIMDE_POLY8_C( 20), SIMDE_POLY8_C( 78) }, { SIMDE_POLY8_C( 31), SIMDE_POLY8_C( 108), SIMDE_POLY8_C( 204), SIMDE_POLY8_C( 52), SIMDE_POLY8_C( 60), SIMDE_POLY8_C( 82), SIMDE_POLY8_C( 200), SIMDE_POLY8_C( 9), SIMDE_POLY8_C( 28), SIMDE_POLY8_C( 79), SIMDE_POLY8_C( 164), SIMDE_POLY8_C( 61), SIMDE_POLY8_C( 89), SIMDE_POLY8_C( 106), SIMDE_POLY8_C( 86), SIMDE_POLY8_C( 25) } }, { { SIMDE_POLY8_C( 232), SIMDE_POLY8_C( 223), SIMDE_POLY8_C( 159), SIMDE_POLY8_C( 209), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 217), SIMDE_POLY8_C( 123), SIMDE_POLY8_C( 236), SIMDE_POLY8_C( 111), SIMDE_POLY8_C( 90), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 137), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 252), SIMDE_POLY8_C( 94), SIMDE_POLY8_C( 55) }, { SIMDE_POLY8_C( 104), SIMDE_POLY8_C( 232), SIMDE_POLY8_C( 62), SIMDE_POLY8_C( 153), SIMDE_POLY8_C( 211), SIMDE_POLY8_C( 147), SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 39), SIMDE_POLY8_C( 118), SIMDE_POLY8_C( 183), SIMDE_POLY8_C( 196), SIMDE_POLY8_C( 140), SIMDE_POLY8_C( 213), SIMDE_POLY8_C( 180), SIMDE_POLY8_C( 247), SIMDE_POLY8_C( 120) }, { SIMDE_POLY8_C( 128), SIMDE_POLY8_C( 55), SIMDE_POLY8_C( 161), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 214), SIMDE_POLY8_C( 74), SIMDE_POLY8_C( 251), SIMDE_POLY8_C( 203), SIMDE_POLY8_C( 25), SIMDE_POLY8_C( 237), SIMDE_POLY8_C( 87), SIMDE_POLY8_C( 5), SIMDE_POLY8_C( 0), SIMDE_POLY8_C( 72), SIMDE_POLY8_C( 169), SIMDE_POLY8_C( 79) } }, }; 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_vaddq_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_vaddq_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_vaddq_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( 17947), SIMDE_POLY16_C( 59627), SIMDE_POLY16_C( 13747), SIMDE_POLY16_C( 60214), SIMDE_POLY16_C( 25527), SIMDE_POLY16_C( 22465), SIMDE_POLY16_C( 31008), SIMDE_POLY16_C( 55276) }, { SIMDE_POLY16_C( 12643), SIMDE_POLY16_C( 57634), SIMDE_POLY16_C( 10112), SIMDE_POLY16_C( 31417), SIMDE_POLY16_C( 43720), SIMDE_POLY16_C( 57721), SIMDE_POLY16_C( 6164), SIMDE_POLY16_C( 3722) }, { SIMDE_POLY16_C( 30584), SIMDE_POLY16_C( 2505), SIMDE_POLY16_C( 4659), SIMDE_POLY16_C( 37263), SIMDE_POLY16_C( 51583), SIMDE_POLY16_C( 46776), SIMDE_POLY16_C( 24884), SIMDE_POLY16_C( 55654) } }, { { SIMDE_POLY16_C( 25610), SIMDE_POLY16_C( 33945), SIMDE_POLY16_C( 65012), SIMDE_POLY16_C( 27880), SIMDE_POLY16_C( 48429), SIMDE_POLY16_C( 44309), SIMDE_POLY16_C( 7727), SIMDE_POLY16_C( 18394) }, { SIMDE_POLY16_C( 4010), SIMDE_POLY16_C( 19605), SIMDE_POLY16_C( 646), SIMDE_POLY16_C( 6945), SIMDE_POLY16_C( 24159), SIMDE_POLY16_C( 5559), SIMDE_POLY16_C( 15091), SIMDE_POLY16_C( 4641) }, { SIMDE_POLY16_C( 27552), SIMDE_POLY16_C( 51212), SIMDE_POLY16_C( 65394), SIMDE_POLY16_C( 30665), SIMDE_POLY16_C( 58226), SIMDE_POLY16_C( 47266), SIMDE_POLY16_C( 9436), SIMDE_POLY16_C( 22011) } }, { { SIMDE_POLY16_C( 60692), SIMDE_POLY16_C( 33785), SIMDE_POLY16_C( 19384), SIMDE_POLY16_C( 14821), SIMDE_POLY16_C( 40380), SIMDE_POLY16_C( 19087), SIMDE_POLY16_C( 8114), SIMDE_POLY16_C( 36709) }, { SIMDE_POLY16_C( 36514), SIMDE_POLY16_C( 33408), SIMDE_POLY16_C( 63224), SIMDE_POLY16_C( 29645), SIMDE_POLY16_C( 15041), SIMDE_POLY16_C( 36757), SIMDE_POLY16_C( 42027), SIMDE_POLY16_C( 36016) }, { SIMDE_POLY16_C( 25526), SIMDE_POLY16_C( 377), SIMDE_POLY16_C( 48448), SIMDE_POLY16_C( 18984), SIMDE_POLY16_C( 42877), SIMDE_POLY16_C( 50458), SIMDE_POLY16_C( 48025), SIMDE_POLY16_C( 981) } }, { { SIMDE_POLY16_C( 18141), SIMDE_POLY16_C( 45065), SIMDE_POLY16_C( 60606), SIMDE_POLY16_C( 11849), SIMDE_POLY16_C( 46718), SIMDE_POLY16_C( 3530), SIMDE_POLY16_C( 42939), SIMDE_POLY16_C( 55698) }, { SIMDE_POLY16_C( 44681), SIMDE_POLY16_C( 12139), SIMDE_POLY16_C( 52114), SIMDE_POLY16_C( 21680), SIMDE_POLY16_C( 44059), SIMDE_POLY16_C( 27972), SIMDE_POLY16_C( 7574), SIMDE_POLY16_C( 15409) }, { SIMDE_POLY16_C( 59476), SIMDE_POLY16_C( 40802), SIMDE_POLY16_C( 10028), SIMDE_POLY16_C( 31481), SIMDE_POLY16_C( 6757), SIMDE_POLY16_C( 24718), SIMDE_POLY16_C( 47661), SIMDE_POLY16_C( 58787) } }, { { SIMDE_POLY16_C( 57331), SIMDE_POLY16_C( 62493), SIMDE_POLY16_C( 2414), SIMDE_POLY16_C( 51609), SIMDE_POLY16_C( 56885), SIMDE_POLY16_C( 15440), SIMDE_POLY16_C( 30921), SIMDE_POLY16_C( 57628) }, { SIMDE_POLY16_C( 55460), SIMDE_POLY16_C( 62933), SIMDE_POLY16_C( 30562), SIMDE_POLY16_C( 64038), SIMDE_POLY16_C( 17558), SIMDE_POLY16_C( 4700), SIMDE_POLY16_C( 4199), SIMDE_POLY16_C( 48364) }, { SIMDE_POLY16_C( 1879), SIMDE_POLY16_C( 456), SIMDE_POLY16_C( 32268), SIMDE_POLY16_C( 13247), SIMDE_POLY16_C( 39587), SIMDE_POLY16_C( 11788), SIMDE_POLY16_C( 26798), SIMDE_POLY16_C( 24048) } }, { { SIMDE_POLY16_C( 1786), SIMDE_POLY16_C( 24136), SIMDE_POLY16_C( 32584), SIMDE_POLY16_C( 43856), SIMDE_POLY16_C( 38344), SIMDE_POLY16_C( 50712), SIMDE_POLY16_C( 34231), SIMDE_POLY16_C( 25688) }, { SIMDE_POLY16_C( 49017), SIMDE_POLY16_C( 9948), SIMDE_POLY16_C( 18165), SIMDE_POLY16_C( 13402), SIMDE_POLY16_C( 58881), SIMDE_POLY16_C( 3005), SIMDE_POLY16_C( 11265), SIMDE_POLY16_C( 52715) }, { SIMDE_POLY16_C( 47491), SIMDE_POLY16_C( 30868), SIMDE_POLY16_C( 14781), SIMDE_POLY16_C( 40714), SIMDE_POLY16_C( 29641), SIMDE_POLY16_C( 52645), SIMDE_POLY16_C( 43446), SIMDE_POLY16_C( 43443) } }, { { SIMDE_POLY16_C( 36514), SIMDE_POLY16_C( 40641), SIMDE_POLY16_C( 48435), SIMDE_POLY16_C( 64823), SIMDE_POLY16_C( 28799), SIMDE_POLY16_C( 23113), SIMDE_POLY16_C( 15829), SIMDE_POLY16_C( 57863) }, { SIMDE_POLY16_C( 57839), SIMDE_POLY16_C( 56275), SIMDE_POLY16_C( 27049), SIMDE_POLY16_C( 15419), SIMDE_POLY16_C( 6369), SIMDE_POLY16_C( 64017), SIMDE_POLY16_C( 14409), SIMDE_POLY16_C( 65103) }, { SIMDE_POLY16_C( 28493), SIMDE_POLY16_C( 17682), SIMDE_POLY16_C( 54426), SIMDE_POLY16_C( 49420), SIMDE_POLY16_C( 26782), SIMDE_POLY16_C( 41048), SIMDE_POLY16_C( 1436), SIMDE_POLY16_C( 7240) } }, { { SIMDE_POLY16_C( 37116), SIMDE_POLY16_C( 54232), SIMDE_POLY16_C( 8172), SIMDE_POLY16_C( 65515), SIMDE_POLY16_C( 19328), SIMDE_POLY16_C( 45577), SIMDE_POLY16_C( 49944), SIMDE_POLY16_C( 63864) }, { SIMDE_POLY16_C( 31664), SIMDE_POLY16_C( 53471), SIMDE_POLY16_C( 46798), SIMDE_POLY16_C( 32140), SIMDE_POLY16_C( 22511), SIMDE_POLY16_C( 18434), SIMDE_POLY16_C( 35100), SIMDE_POLY16_C( 22561) }, { SIMDE_POLY16_C( 60236), SIMDE_POLY16_C( 775), SIMDE_POLY16_C( 43298), SIMDE_POLY16_C( 33383), SIMDE_POLY16_C( 7279), SIMDE_POLY16_C( 64011), SIMDE_POLY16_C( 18948), SIMDE_POLY16_C( 41305) } }, }; 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_vaddq_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_vaddq_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_vaddq_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(13970184144458926080), SIMDE_POLY64_C(18027732205616619520) }, { SIMDE_POLY64_C(10664911783920662528), SIMDE_POLY64_C(14874615707681933312) }, { SIMDE_POLY64_C( 6188351287691784192), SIMDE_POLY64_C( 3765606050019289088) } }, { { SIMDE_POLY64_C(13569664247937818624), SIMDE_POLY64_C( 2437702300059964928) }, { SIMDE_POLY64_C(10222886524441507840), SIMDE_POLY64_C(10211325454349762560) }, { SIMDE_POLY64_C( 3571315594245462016), SIMDE_POLY64_C(12421384299785623040) } }, { { SIMDE_POLY64_C(14498610656383666176), SIMDE_POLY64_C( 8476401534169848832) }, { SIMDE_POLY64_C( 1881698329189247232), SIMDE_POLY64_C( 8544005506879121408) }, { SIMDE_POLY64_C(15215494053881995520), SIMDE_POLY64_C( 229786886188037120) } }, { { SIMDE_POLY64_C( 830912799576854528), SIMDE_POLY64_C( 9788207972263112704) }, { SIMDE_POLY64_C( 3017709601730458624), SIMDE_POLY64_C( 9746625866454171648) }, { SIMDE_POLY64_C( 2478932721455817728), SIMDE_POLY64_C( 41741720232210432) } }, { { SIMDE_POLY64_C(15772662877274730496), SIMDE_POLY64_C(16744121799549632512) }, { SIMDE_POLY64_C( 3430907367297542656), SIMDE_POLY64_C(13089324110939936768) }, { SIMDE_POLY64_C(17689797678054578688), SIMDE_POLY64_C( 6771598536145377280) } }, { { SIMDE_POLY64_C( 7887153302148219904), SIMDE_POLY64_C( 801127234362076928) }, { SIMDE_POLY64_C( 3891594517710054400), SIMDE_POLY64_C(15740656329181452288) }, { SIMDE_POLY64_C( 6590301978556833792), SIMDE_POLY64_C(15090479817836443392) } }, { { SIMDE_POLY64_C( 504883112248428480), SIMDE_POLY64_C(10164513024740012032) }, { SIMDE_POLY64_C(13433945331308742656), SIMDE_POLY64_C( 3304541670337251840) }, { SIMDE_POLY64_C(13650202223467401152), SIMDE_POLY64_C(11588761958443661824) } }, { { SIMDE_POLY64_C(15631733279804442624), SIMDE_POLY64_C(15326868064001585152) }, { SIMDE_POLY64_C(17500586558082564096), SIMDE_POLY64_C( 845817615609313280) }, { SIMDE_POLY64_C( 3040352340325009408), SIMDE_POLY64_C(16073078717596747776) } }, }; 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_vaddq_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_vaddq_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 } #if !defined(SIMDE_TARGET_NOT_SUPPORT_INT128_TYPE) && !defined(SIMDE_BUG_GCC_113065) static int test_simde_vaddq_p128 (SIMDE_MUNIT_TEST_ARGS) { struct { simde_poly64_t a[2]; simde_poly64_t b[2]; simde_poly64_t r[2]; } test_vec[] = { { { SIMDE_POLY64_C( 2773134259082670592), SIMDE_POLY64_C( 9031857671464751104) }, { SIMDE_POLY64_C(15408611317451976704), SIMDE_POLY64_C( 5314471842361763840) }, { SIMDE_POLY64_C(17557921622677996032), SIMDE_POLY64_C( 3789586984176121856) } }, { { SIMDE_POLY64_C(14363410812027238400), SIMDE_POLY64_C( 7751777860661664768) }, { SIMDE_POLY64_C( 4070846577912177664), SIMDE_POLY64_C( 8033403141717473280) }, { SIMDE_POLY64_C(18386960794487266304), SIMDE_POLY64_C( 355706841938420736) } }, { { SIMDE_POLY64_C(17019201421568192512), SIMDE_POLY64_C( 9077731670917768192) }, { SIMDE_POLY64_C( 1093803490337685888), SIMDE_POLY64_C(12690135020377692160) }, { SIMDE_POLY64_C(16365414741193798016), SIMDE_POLY64_C(14836825620528675840) } }, { { SIMDE_POLY64_C( 8834005665657798656), SIMDE_POLY64_C( 7315692870291161088) }, { SIMDE_POLY64_C( 3583172236868845568), SIMDE_POLY64_C(14913079096527761408) }, { SIMDE_POLY64_C( 5413693383775240192), SIMDE_POLY64_C(12354334249137418240) } }, { { SIMDE_POLY64_C(16318651152855345152), SIMDE_POLY64_C(15283972988033570816) }, { SIMDE_POLY64_C( 4795255037585536000), SIMDE_POLY64_C(17815911970323484672) }, { SIMDE_POLY64_C(11599959615349332992), SIMDE_POLY64_C( 2532502929754736640) } }, { { SIMDE_POLY64_C(16540936757178476544), SIMDE_POLY64_C( 4596081763017794560) }, { SIMDE_POLY64_C(15120265319048798208), SIMDE_POLY64_C( 3251201193519464448) }, { SIMDE_POLY64_C( 3771992723781634048), SIMDE_POLY64_C( 1357279216665519104) } }, { { SIMDE_POLY64_C( 7991373722374909952), SIMDE_POLY64_C(17418001980645539840) }, { SIMDE_POLY64_C( 303154826827825408), SIMDE_POLY64_C( 9983013542091358208) }, { SIMDE_POLY64_C( 7697238601746657536), SIMDE_POLY64_C( 8877691528758722560) } }, { { SIMDE_POLY64_C(14668463690243614720), SIMDE_POLY64_C( 4370163632906065408) }, { SIMDE_POLY64_C( 3236423722687647744), SIMDE_POLY64_C( 6051015495717347328) }, { SIMDE_POLY64_C(16679868711160412160), SIMDE_POLY64_C( 8024418529387197952) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde_poly128_t a = test_vec[i].a[0]; simde_poly128_t b = test_vec[i].b[0]; simde_poly128_t r, mask; simde_poly64_t top_r, bottom_r; a = a << 64; a = a | test_vec[i].a[1]; b = b << 64; b = b | test_vec[i].b[1]; r = simde_vaddq_p128(a, b); mask = HEDLEY_STATIC_CAST(simde_poly128_t, 0xFFFFFFFFFFFFFFFFull); top_r = HEDLEY_STATIC_CAST(simde_poly64_t, (r >> 64) & mask); bottom_r = HEDLEY_STATIC_CAST(simde_poly64_t, (r << 64) >> 64); simde_assert_equal_p64(top_r, test_vec[i].r[0]); simde_assert_equal_p64(bottom_r, test_vec[i].r[1]); } return 0; } #endif /* !defined(SIMDE_TARGET_NOT_SUPPORT_INT128_TYPE) && !defined(SIMDE_BUG_GCC_113065)*/ 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_ENTRY(vadd_p8) SIMDE_TEST_FUNC_LIST_ENTRY(vadd_p16) SIMDE_TEST_FUNC_LIST_ENTRY(vadd_p64) SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_p8) SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_p16) SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_p64) #if !defined(SIMDE_TARGET_NOT_SUPPORT_INT128_TYPE) && !defined(SIMDE_BUG_GCC_113065) SIMDE_TEST_FUNC_LIST_ENTRY(vaddq_p128) #endif /* !defined(SIMDE_TARGET_NOT_SUPPORT_INT128_TYPE) */ SIMDE_TEST_FUNC_LIST_END #include "test-neon-footer.h"