Update googletest to 1.18.0 and SIMDe to 0.8.2.

Googletest 1.18 asks for CMake 3.13 or newer, so configuring the tests no longer warns that CMake compatibility below 3.10 is deprecated.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ryan Henry 2026-09-24 14:30:19 -06:00
parent e4e666f459
commit 3f10e05176
912 changed files with 224964 additions and 11502 deletions

View file

@ -4,6 +4,65 @@
#include "test-neon.h"
#include "../../../simde/arm/neon/recps.h"
static int
test_simde_vrecpsh_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16 a;
simde_float16 b;
simde_float16 r;
} test_vec[] = {
{ SIMDE_FLOAT16_VALUE( -10.414),
SIMDE_FLOAT16_VALUE( 11.655),
SIMDE_FLOAT16_VALUE( 123.375) },
{ SIMDE_FLOAT16_VALUE( -2.877),
SIMDE_FLOAT16_VALUE( -4.775),
SIMDE_FLOAT16_VALUE( -11.738) },
{ SIMDE_FLOAT16_VALUE( 11.091),
SIMDE_FLOAT16_VALUE( 14.332),
SIMDE_FLOAT16_VALUE(-156.956) },
{ SIMDE_FLOAT16_VALUE( -3.004),
SIMDE_FLOAT16_VALUE( -7.340),
SIMDE_FLOAT16_VALUE( -20.049) },
{ SIMDE_FLOAT16_VALUE( -12.810),
SIMDE_FLOAT16_VALUE( 1.702),
SIMDE_FLOAT16_VALUE( 23.803) },
{ SIMDE_FLOAT16_VALUE( 2.632),
SIMDE_FLOAT16_VALUE( 2.416),
SIMDE_FLOAT16_VALUE( -4.359) },
{ SIMDE_FLOAT16_VALUE( -9.777),
SIMDE_FLOAT16_VALUE( -4.796),
SIMDE_FLOAT16_VALUE( -44.890) },
{ SIMDE_FLOAT16_VALUE( -12.089),
SIMDE_FLOAT16_VALUE( -5.509),
SIMDE_FLOAT16_VALUE( -64.598) },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16_t a = test_vec[i].a;
simde_float16_t b = test_vec[i].b;
simde_float16_t r = simde_vrecpsh_f16(a, 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(-100.0f, 100.0f);
simde_float16_t b = simde_test_codegen_random_f16(-100.0f, 100.0f);
simde_float16_t r = simde_vrecpsh_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_vrecpss_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
@ -236,6 +295,71 @@ test_simde_vrecps_f32 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vrecps_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(3.80), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(1.60), SIMDE_FLOAT16_VALUE(4.40) },
{ SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(4.90) },
{ SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(8.45), SIMDE_FLOAT16_VALUE(7.76), SIMDE_FLOAT16_VALUE(-19.55) } },
{ { SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(-3.50), SIMDE_FLOAT16_VALUE(-1.60), SIMDE_FLOAT16_VALUE(-2.90) },
{ SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(2.50), SIMDE_FLOAT16_VALUE(-4.90) },
{ SIMDE_FLOAT16_VALUE(-3.88), SIMDE_FLOAT16_VALUE(-7.10), SIMDE_FLOAT16_VALUE(6.00), SIMDE_FLOAT16_VALUE(-12.21) } },
{ { SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(-1.80), SIMDE_FLOAT16_VALUE(-2.40) },
{ SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(1.70) },
{ SIMDE_FLOAT16_VALUE(1.53), SIMDE_FLOAT16_VALUE(2.12), SIMDE_FLOAT16_VALUE(-4.48), SIMDE_FLOAT16_VALUE(6.08) } },
{ { SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(4.90), SIMDE_FLOAT16_VALUE(1.40) },
{ SIMDE_FLOAT16_VALUE(-1.30), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(3.20) },
{ SIMDE_FLOAT16_VALUE(7.72), SIMDE_FLOAT16_VALUE(0.60), SIMDE_FLOAT16_VALUE(-8.28), SIMDE_FLOAT16_VALUE(-2.48) } },
{ { SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(2.50), SIMDE_FLOAT16_VALUE(-1.20), SIMDE_FLOAT16_VALUE(3.40) },
{ SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(0.80), SIMDE_FLOAT16_VALUE(3.50), SIMDE_FLOAT16_VALUE(-4.20) },
{ SIMDE_FLOAT16_VALUE(4.96), SIMDE_FLOAT16_VALUE(0.00), SIMDE_FLOAT16_VALUE(6.20), SIMDE_FLOAT16_VALUE(16.28) } },
{ { SIMDE_FLOAT16_VALUE(-2.90), SIMDE_FLOAT16_VALUE(-4.30), SIMDE_FLOAT16_VALUE(-1.80), SIMDE_FLOAT16_VALUE(-3.00) },
{ SIMDE_FLOAT16_VALUE(-1.90), SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(0.60), SIMDE_FLOAT16_VALUE(-2.40) },
{ SIMDE_FLOAT16_VALUE(-3.51), SIMDE_FLOAT16_VALUE(4.15), SIMDE_FLOAT16_VALUE(3.08), SIMDE_FLOAT16_VALUE(-5.20) } },
{ { SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(-4.10) },
{ SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(-4.60), SIMDE_FLOAT16_VALUE(-2.60) },
{ SIMDE_FLOAT16_VALUE(-4.45), SIMDE_FLOAT16_VALUE(4.94), SIMDE_FLOAT16_VALUE(-10.89), SIMDE_FLOAT16_VALUE(-8.66) } },
{ { SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(2.20) },
{ SIMDE_FLOAT16_VALUE(2.40), SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(-2.60) },
{ SIMDE_FLOAT16_VALUE(-4.24), SIMDE_FLOAT16_VALUE(2.66), SIMDE_FLOAT16_VALUE(0.89), SIMDE_FLOAT16_VALUE(7.72) } },
{ { SIMDE_FLOAT16_VALUE(4.60), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(-0.80) },
{ SIMDE_FLOAT16_VALUE(1.00), SIMDE_FLOAT16_VALUE(-0.10), SIMDE_FLOAT16_VALUE(-4.70), SIMDE_FLOAT16_VALUE(0.70) },
{ SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(2.33), SIMDE_FLOAT16_VALUE(-18.67), SIMDE_FLOAT16_VALUE(2.56) } },
{ { SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(-4.60), SIMDE_FLOAT16_VALUE(-3.80), SIMDE_FLOAT16_VALUE(-4.30) },
{ SIMDE_FLOAT16_VALUE(4.10), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(-1.00), SIMDE_FLOAT16_VALUE(4.40) },
{ SIMDE_FLOAT16_VALUE(-16.45), SIMDE_FLOAT16_VALUE(22.70), SIMDE_FLOAT16_VALUE(-1.80), SIMDE_FLOAT16_VALUE(20.92) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x4_t a = simde_vld1_f16(test_vec[i].a);
simde_float16x4_t b = simde_vld1_f16(test_vec[i].b);
simde_float16x4_t r = simde_vrecps_f16(a, b);
simde_test_arm_neon_assert_equal_f16x4(r, simde_vld1_f16(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float16x4_t a = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
simde_float16x4_t b = simde_test_arm_neon_random_f16x4(-100.0f, 100.0f);
simde_float16x4_t r = simde_vrecps_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_vrecpsq_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
@ -350,13 +474,80 @@ test_simde_vrecpsq_f32 (SIMDE_MUNIT_TEST_ARGS) {
#endif
}
static int
test_simde_vrecpsq_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16_t a[8];
simde_float16_t b[8];
simde_float16_t r[8];
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(-3.20), SIMDE_FLOAT16_VALUE(-4.50), SIMDE_FLOAT16_VALUE(-1.50), SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(-0.60), SIMDE_FLOAT16_VALUE(4.10) },
{ SIMDE_FLOAT16_VALUE(-3.30), SIMDE_FLOAT16_VALUE(1.20), SIMDE_FLOAT16_VALUE(2.40), SIMDE_FLOAT16_VALUE(-4.90), SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(-1.90), SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(1.10) },
{ SIMDE_FLOAT16_VALUE(-8.23), SIMDE_FLOAT16_VALUE(5.84), SIMDE_FLOAT16_VALUE(12.80), SIMDE_FLOAT16_VALUE(-5.35), SIMDE_FLOAT16_VALUE(1.01), SIMDE_FLOAT16_VALUE(0.48), SIMDE_FLOAT16_VALUE(1.52), SIMDE_FLOAT16_VALUE(-2.51) } },
{ { SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(1.40), SIMDE_FLOAT16_VALUE(4.30), SIMDE_FLOAT16_VALUE(3.50), SIMDE_FLOAT16_VALUE(3.00), SIMDE_FLOAT16_VALUE(4.80), SIMDE_FLOAT16_VALUE(-0.40), SIMDE_FLOAT16_VALUE(3.40) },
{ SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(-4.40), SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(4.10), SIMDE_FLOAT16_VALUE(-3.00), SIMDE_FLOAT16_VALUE(-2.40), SIMDE_FLOAT16_VALUE(1.00) },
{ SIMDE_FLOAT16_VALUE(2.78), SIMDE_FLOAT16_VALUE(8.16), SIMDE_FLOAT16_VALUE(0.71), SIMDE_FLOAT16_VALUE(-9.55), SIMDE_FLOAT16_VALUE(-10.30), SIMDE_FLOAT16_VALUE(16.41), SIMDE_FLOAT16_VALUE(1.04), SIMDE_FLOAT16_VALUE(-1.40) } },
{ { SIMDE_FLOAT16_VALUE(-4.30), SIMDE_FLOAT16_VALUE(-1.20), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-2.40), SIMDE_FLOAT16_VALUE(0.30), SIMDE_FLOAT16_VALUE(-0.00), SIMDE_FLOAT16_VALUE(1.60) },
{ SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(-4.50), SIMDE_FLOAT16_VALUE(0.70), SIMDE_FLOAT16_VALUE(-2.40), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(-4.30), SIMDE_FLOAT16_VALUE(-2.00), SIMDE_FLOAT16_VALUE(-2.40) },
{ SIMDE_FLOAT16_VALUE(-1.44), SIMDE_FLOAT16_VALUE(-3.40), SIMDE_FLOAT16_VALUE(-0.59), SIMDE_FLOAT16_VALUE(-2.80), SIMDE_FLOAT16_VALUE(2.96), SIMDE_FLOAT16_VALUE(3.29), SIMDE_FLOAT16_VALUE(2.00), SIMDE_FLOAT16_VALUE(5.84) } },
{ { SIMDE_FLOAT16_VALUE(1.70), SIMDE_FLOAT16_VALUE(-0.60), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(3.70), SIMDE_FLOAT16_VALUE(1.90), SIMDE_FLOAT16_VALUE(2.30), SIMDE_FLOAT16_VALUE(4.00), SIMDE_FLOAT16_VALUE(1.90) },
{ SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(-4.50), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(-0.30) },
{ SIMDE_FLOAT16_VALUE(6.59), SIMDE_FLOAT16_VALUE(0.98), SIMDE_FLOAT16_VALUE(12.08), SIMDE_FLOAT16_VALUE(15.31), SIMDE_FLOAT16_VALUE(-6.55), SIMDE_FLOAT16_VALUE(12.35), SIMDE_FLOAT16_VALUE(-16.80), SIMDE_FLOAT16_VALUE(2.57) } },
{ { SIMDE_FLOAT16_VALUE(0.20), SIMDE_FLOAT16_VALUE(2.10), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(-2.70), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(-2.60), SIMDE_FLOAT16_VALUE(-2.60) },
{ SIMDE_FLOAT16_VALUE(-0.40), SIMDE_FLOAT16_VALUE(4.00), SIMDE_FLOAT16_VALUE(4.00), SIMDE_FLOAT16_VALUE(-3.00), SIMDE_FLOAT16_VALUE(-3.40), SIMDE_FLOAT16_VALUE(-3.00), SIMDE_FLOAT16_VALUE(3.90), SIMDE_FLOAT16_VALUE(2.80) },
{ SIMDE_FLOAT16_VALUE(2.08), SIMDE_FLOAT16_VALUE(-6.40), SIMDE_FLOAT16_VALUE(22.00), SIMDE_FLOAT16_VALUE(-12.41), SIMDE_FLOAT16_VALUE(-7.18), SIMDE_FLOAT16_VALUE(-0.10), SIMDE_FLOAT16_VALUE(12.14), SIMDE_FLOAT16_VALUE(9.28) } },
{ { SIMDE_FLOAT16_VALUE(-3.10), SIMDE_FLOAT16_VALUE(2.70), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(0.10), SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(3.40), SIMDE_FLOAT16_VALUE(-4.80), SIMDE_FLOAT16_VALUE(0.80) },
{ SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(2.60), SIMDE_FLOAT16_VALUE(0.80), SIMDE_FLOAT16_VALUE(0.40), SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(-3.70), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(-3.50) },
{ SIMDE_FLOAT16_VALUE(6.65), SIMDE_FLOAT16_VALUE(-5.02), SIMDE_FLOAT16_VALUE(2.56), SIMDE_FLOAT16_VALUE(1.96), SIMDE_FLOAT16_VALUE(6.42), SIMDE_FLOAT16_VALUE(14.58), SIMDE_FLOAT16_VALUE(9.20), SIMDE_FLOAT16_VALUE(4.80) } },
{ { SIMDE_FLOAT16_VALUE(0.50), SIMDE_FLOAT16_VALUE(-3.80), SIMDE_FLOAT16_VALUE(-4.10), SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(3.80), SIMDE_FLOAT16_VALUE(-1.30), SIMDE_FLOAT16_VALUE(4.90), SIMDE_FLOAT16_VALUE(1.90) },
{ SIMDE_FLOAT16_VALUE(-4.00), SIMDE_FLOAT16_VALUE(-0.30), SIMDE_FLOAT16_VALUE(-0.70), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(1.30), SIMDE_FLOAT16_VALUE(2.90), SIMDE_FLOAT16_VALUE(2.70) },
{ SIMDE_FLOAT16_VALUE(4.00), SIMDE_FLOAT16_VALUE(0.86), SIMDE_FLOAT16_VALUE(-0.87), SIMDE_FLOAT16_VALUE(3.41), SIMDE_FLOAT16_VALUE(15.68), SIMDE_FLOAT16_VALUE(3.69), SIMDE_FLOAT16_VALUE(-12.21), SIMDE_FLOAT16_VALUE(-3.13) } },
{ { SIMDE_FLOAT16_VALUE(2.30), SIMDE_FLOAT16_VALUE(-3.80), SIMDE_FLOAT16_VALUE(4.20), SIMDE_FLOAT16_VALUE(3.10), SIMDE_FLOAT16_VALUE(-5.00), SIMDE_FLOAT16_VALUE(1.50), SIMDE_FLOAT16_VALUE(3.20), SIMDE_FLOAT16_VALUE(-2.80) },
{ SIMDE_FLOAT16_VALUE(-0.50), SIMDE_FLOAT16_VALUE(4.40), SIMDE_FLOAT16_VALUE(1.90), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(-4.50), SIMDE_FLOAT16_VALUE(4.70), SIMDE_FLOAT16_VALUE(-4.00), SIMDE_FLOAT16_VALUE(-3.20) },
{ SIMDE_FLOAT16_VALUE(3.15), SIMDE_FLOAT16_VALUE(18.72), SIMDE_FLOAT16_VALUE(-5.98), SIMDE_FLOAT16_VALUE(4.79), SIMDE_FLOAT16_VALUE(-20.50), SIMDE_FLOAT16_VALUE(-5.05), SIMDE_FLOAT16_VALUE(14.80), SIMDE_FLOAT16_VALUE(-6.96) } },
{ { SIMDE_FLOAT16_VALUE(1.10), SIMDE_FLOAT16_VALUE(-4.20), SIMDE_FLOAT16_VALUE(-4.90), SIMDE_FLOAT16_VALUE(-1.00), SIMDE_FLOAT16_VALUE(-1.10), SIMDE_FLOAT16_VALUE(-3.60), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(3.60) },
{ SIMDE_FLOAT16_VALUE(-1.30), SIMDE_FLOAT16_VALUE(3.00), SIMDE_FLOAT16_VALUE(3.30), SIMDE_FLOAT16_VALUE(2.30), SIMDE_FLOAT16_VALUE(0.00), SIMDE_FLOAT16_VALUE(-0.90), SIMDE_FLOAT16_VALUE(-4.70), SIMDE_FLOAT16_VALUE(-1.00) },
{ SIMDE_FLOAT16_VALUE(3.43), SIMDE_FLOAT16_VALUE(14.59), SIMDE_FLOAT16_VALUE(18.17), SIMDE_FLOAT16_VALUE(4.30), SIMDE_FLOAT16_VALUE(2.00), SIMDE_FLOAT16_VALUE(-1.24), SIMDE_FLOAT16_VALUE(-2.23), SIMDE_FLOAT16_VALUE(5.60) } },
{ { SIMDE_FLOAT16_VALUE(-0.80), SIMDE_FLOAT16_VALUE(-0.40), SIMDE_FLOAT16_VALUE(-2.10), SIMDE_FLOAT16_VALUE(-1.70), SIMDE_FLOAT16_VALUE(4.10), SIMDE_FLOAT16_VALUE(4.50), SIMDE_FLOAT16_VALUE(2.80), SIMDE_FLOAT16_VALUE(-1.80) },
{ SIMDE_FLOAT16_VALUE(3.40), SIMDE_FLOAT16_VALUE(0.70), SIMDE_FLOAT16_VALUE(2.40), SIMDE_FLOAT16_VALUE(-0.50), SIMDE_FLOAT16_VALUE(-1.40), SIMDE_FLOAT16_VALUE(0.80), SIMDE_FLOAT16_VALUE(3.80), SIMDE_FLOAT16_VALUE(-3.70) },
{ SIMDE_FLOAT16_VALUE(4.72), SIMDE_FLOAT16_VALUE(2.28), SIMDE_FLOAT16_VALUE(7.04), SIMDE_FLOAT16_VALUE(1.15), SIMDE_FLOAT16_VALUE(7.74), SIMDE_FLOAT16_VALUE(-1.60), SIMDE_FLOAT16_VALUE(-8.65), SIMDE_FLOAT16_VALUE(-4.66) } },
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float16x8_t a = simde_vld1q_f16(test_vec[i].a);
simde_float16x8_t b = simde_vld1q_f16(test_vec[i].b);
simde_float16x8_t r = simde_vrecpsq_f16(a, b);
simde_test_arm_neon_assert_equal_f16x8(r, simde_vld1q_f16(test_vec[i].r), 1);
}
return 0;
#else
fputc('\n', stdout);
for (int i = 0 ; i < 8 ; i++) {
simde_float16x8_t a = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
simde_float16x8_t b = simde_test_arm_neon_random_f16x8(-100.0f, 100.0f);
simde_float16x8_t r = simde_vrecpsq_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
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vrecpsh_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecpss_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecpsd_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecps_f64)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecps_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecps_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecpsq_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecpsq_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vrecpsq_f64)
SIMDE_TEST_FUNC_LIST_END