libdpf/thirdparty/simde/test/arm/neon/minnmv.c
Ryan Henry 3f10e05176 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>
2026-09-24 14:30:19 -06:00

251 lines
11 KiB
C

#define SIMDE_TEST_ARM_NEON_INSN minnmv
#include "test-neon.h"
#include "../../../simde/arm/neon/minnmv.h"
static int
test_simde_vminnmv_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16_t a[4];
simde_float16_t r;
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE( 20.218), SIMDE_FLOAT16_VALUE( -6.853), SIMDE_FLOAT16_VALUE( -5.794), SIMDE_FLOAT16_VALUE( 8.347) },
SIMDE_FLOAT16_VALUE( -6.853) },
{ { SIMDE_FLOAT16_VALUE( -2.093), SIMDE_FLOAT16_VALUE( -3.578), SIMDE_FLOAT16_VALUE( -25.522), SIMDE_FLOAT16_VALUE( -21.689) },
SIMDE_FLOAT16_VALUE( -25.522) },
{ { SIMDE_FLOAT16_VALUE( 13.305), SIMDE_FLOAT16_VALUE( 15.886), SIMDE_FLOAT16_VALUE( -16.955), SIMDE_FLOAT16_VALUE( 14.481) },
SIMDE_FLOAT16_VALUE( -16.955) },
{ { SIMDE_FLOAT16_VALUE( -18.484), SIMDE_FLOAT16_VALUE( 29.793), SIMDE_FLOAT16_VALUE( -0.842), SIMDE_FLOAT16_VALUE( 19.516) },
SIMDE_FLOAT16_VALUE( -18.484) },
{ { SIMDE_FLOAT16_VALUE( -22.777), SIMDE_FLOAT16_VALUE( 4.641), SIMDE_FLOAT16_VALUE( -20.779), SIMDE_FLOAT16_VALUE( -21.506) },
SIMDE_FLOAT16_VALUE( -22.777) },
{ { SIMDE_FLOAT16_VALUE( -28.388), SIMDE_FLOAT16_VALUE( -10.209), SIMDE_FLOAT16_VALUE( 17.384), SIMDE_FLOAT16_VALUE( 29.067) },
SIMDE_FLOAT16_VALUE( -28.388) },
{ { SIMDE_FLOAT16_VALUE( -3.619), SIMDE_FLOAT16_VALUE( -13.964), SIMDE_FLOAT16_VALUE( 10.205), SIMDE_FLOAT16_VALUE( 26.305) },
SIMDE_FLOAT16_VALUE( -13.964) },
{ { SIMDE_FLOAT16_VALUE( 15.202), SIMDE_FLOAT16_VALUE( 15.144), SIMDE_FLOAT16_VALUE( 25.308), SIMDE_FLOAT16_VALUE( -28.303) },
SIMDE_FLOAT16_VALUE( -28.303) },
};
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_float16_t r = simde_vminnmv_f16(a);
simde_assert_equal_f16(r, 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_float16_t r = simde_vminnmv_f16(a);
simde_test_arm_neon_write_f16x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_f16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vminnmv_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float32_t a[2];
simde_float32_t r;
} test_vec[] = {
{ { SIMDE_FLOAT32_C( 453.38), SIMDE_FLOAT32_C( 453.38) },
SIMDE_FLOAT32_C( 453.38) },
{ { SIMDE_FLOAT32_C( -282.45), SIMDE_FLOAT32_C( -125.43) },
SIMDE_FLOAT32_C( -282.45) },
{ { SIMDE_FLOAT32_C( -15.54), SIMDE_FLOAT32_C( -221.82) },
SIMDE_FLOAT32_C( -221.82) },
{ { SIMDE_FLOAT32_C( -502.94), SIMDE_FLOAT32_C( -155.47) },
SIMDE_FLOAT32_C( -502.94) },
{ { SIMDE_FLOAT32_C( -806.84), SIMDE_FLOAT32_C( 615.87) },
SIMDE_FLOAT32_C( -806.84) }
};
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
simde_float32x2_t a = simde_vld1_f32(test_vec[i].a);
simde_float32_t r = simde_vminnmv_f32(a);
simde_assert_equal_f32(r, 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_float32_t r = simde_vminnmv_f32(a);
simde_test_arm_neon_write_f32x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_f32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vminnmvq_f16 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
struct {
simde_float16_t a[8];
simde_float16_t r;
} test_vec[] = {
{ { SIMDE_FLOAT16_VALUE( -11.968), SIMDE_FLOAT16_VALUE( 0.700), SIMDE_FLOAT16_VALUE( 1.342), SIMDE_FLOAT16_VALUE( 5.319),
SIMDE_FLOAT16_VALUE( 1.058), SIMDE_FLOAT16_VALUE( -3.121), SIMDE_FLOAT16_VALUE( 9.615), SIMDE_FLOAT16_VALUE( -29.989) },
SIMDE_FLOAT16_VALUE( -29.989) },
{ { SIMDE_FLOAT16_VALUE( 18.972), SIMDE_FLOAT16_VALUE( -13.189), SIMDE_FLOAT16_VALUE( -24.616), SIMDE_FLOAT16_VALUE( -11.420),
SIMDE_FLOAT16_VALUE( 29.006), SIMDE_FLOAT16_VALUE( 18.310), SIMDE_FLOAT16_VALUE( -2.603), SIMDE_FLOAT16_VALUE( 5.305) },
SIMDE_FLOAT16_VALUE( -24.616) },
{ { SIMDE_FLOAT16_VALUE( 25.793), SIMDE_FLOAT16_VALUE( -25.154), SIMDE_FLOAT16_VALUE( 16.638), SIMDE_FLOAT16_VALUE( -16.495),
SIMDE_FLOAT16_VALUE( -26.285), SIMDE_FLOAT16_VALUE( 8.955), SIMDE_FLOAT16_VALUE( -23.971), SIMDE_FLOAT16_VALUE( -28.845) },
SIMDE_FLOAT16_VALUE( -28.845) },
{ { SIMDE_FLOAT16_VALUE( 9.945), SIMDE_FLOAT16_VALUE( 9.819), SIMDE_FLOAT16_VALUE( 7.833), SIMDE_FLOAT16_VALUE( -12.584),
SIMDE_FLOAT16_VALUE( 2.684), SIMDE_FLOAT16_VALUE( -25.996), SIMDE_FLOAT16_VALUE( -12.605), SIMDE_FLOAT16_VALUE( 18.119) },
SIMDE_FLOAT16_VALUE( -25.996) },
{ { SIMDE_FLOAT16_VALUE( -7.772), SIMDE_FLOAT16_VALUE( 22.902), SIMDE_FLOAT16_VALUE( 26.436), SIMDE_FLOAT16_VALUE( -20.216),
SIMDE_FLOAT16_VALUE( 16.707), SIMDE_FLOAT16_VALUE( 5.188), SIMDE_FLOAT16_VALUE( -9.754), SIMDE_FLOAT16_VALUE( -28.714) },
SIMDE_FLOAT16_VALUE( -28.714) },
{ { SIMDE_FLOAT16_VALUE( -19.900), SIMDE_FLOAT16_VALUE( 6.812), SIMDE_FLOAT16_VALUE( 18.439), SIMDE_FLOAT16_VALUE( 23.239),
SIMDE_FLOAT16_VALUE( -21.049), SIMDE_FLOAT16_VALUE( -21.265), SIMDE_FLOAT16_VALUE( 7.079), SIMDE_FLOAT16_VALUE( 29.200) },
SIMDE_FLOAT16_VALUE( -21.265) },
{ { SIMDE_FLOAT16_VALUE( 19.055), SIMDE_FLOAT16_VALUE( -11.939), SIMDE_FLOAT16_VALUE( 22.429), SIMDE_FLOAT16_VALUE( 27.392),
SIMDE_FLOAT16_VALUE( 0.849), SIMDE_FLOAT16_VALUE( 8.276), SIMDE_FLOAT16_VALUE( 15.737), SIMDE_FLOAT16_VALUE( 2.775) },
SIMDE_FLOAT16_VALUE( -11.939) },
{ { SIMDE_FLOAT16_VALUE( -25.103), SIMDE_FLOAT16_VALUE( -1.612), SIMDE_FLOAT16_VALUE( -16.030), SIMDE_FLOAT16_VALUE( -16.356),
SIMDE_FLOAT16_VALUE( 15.013), SIMDE_FLOAT16_VALUE( -18.179), SIMDE_FLOAT16_VALUE( 11.449), SIMDE_FLOAT16_VALUE( -3.686) },
SIMDE_FLOAT16_VALUE( -25.103) },
};
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_float16_t r = simde_vminnmvq_f16(a);
simde_assert_equal_f16(r, 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_float16_t r = simde_vminnmvq_f16(a);
simde_test_arm_neon_write_f16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_f16(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vminnmvq_f32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float32_t a[4];
simde_float32_t r;
} test_vec[] = {
{ { SIMDE_FLOAT32_C( 947.343), -SIMDE_FLOAT32_C( 492.866), SIMDE_FLOAT32_C( 657.629), -SIMDE_FLOAT32_C( 369.464) },
-SIMDE_FLOAT32_C( 492.866) },
{ { -SIMDE_FLOAT32_C( 607.062), SIMDE_FLOAT32_C( 762.490), -SIMDE_FLOAT32_C( 503.820), SIMDE_FLOAT32_C( 757.954) },
-SIMDE_FLOAT32_C( 607.062) },
{ { SIMDE_FLOAT32_C( 504.835), -SIMDE_FLOAT32_C( 244.010), SIMDE_FLOAT32_C( 80.655), SIMDE_FLOAT32_C( 75.272) },
-SIMDE_FLOAT32_C( 244.010) },
{ { SIMDE_FLOAT32_C( 781.694), -SIMDE_FLOAT32_C( 539.025), SIMDE_FLOAT32_C( 704.302), -SIMDE_FLOAT32_C( 260.335) },
-SIMDE_FLOAT32_C( 539.025) },
{ { SIMDE_FLOAT32_C( 402.321), SIMDE_FLOAT32_C( 437.528), SIMDE_FLOAT32_C( 797.358), SIMDE_FLOAT32_C( 905.556) },
SIMDE_FLOAT32_C( 402.321) },
{ { -SIMDE_FLOAT32_C( 169.841), SIMDE_FLOAT32_C( 153.516), -SIMDE_FLOAT32_C( 589.051), SIMDE_FLOAT32_C( 82.098) },
-SIMDE_FLOAT32_C( 589.051) },
{ { -SIMDE_FLOAT32_C( 547.491), -SIMDE_FLOAT32_C( 621.393), SIMDE_FLOAT32_C( 732.052), -SIMDE_FLOAT32_C( 116.706) },
-SIMDE_FLOAT32_C( 621.393) },
{ { -SIMDE_FLOAT32_C( 511.376), SIMDE_FLOAT32_C( 429.828), SIMDE_FLOAT32_C( 694.590), -SIMDE_FLOAT32_C( 183.004) },
-SIMDE_FLOAT32_C( 511.376) },
};
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_float32_t r = simde_vminnmvq_f32(a);
simde_assert_equal_f32(r, 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_float32_t r = simde_vminnmvq_f32(a);
simde_test_arm_neon_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_f32(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
static int
test_simde_vminnmvq_f64 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
static const struct {
simde_float64_t a[2];
simde_float64_t r;
} test_vec[] = {
{ { SIMDE_FLOAT64_C( 901.508), -SIMDE_FLOAT64_C( 897.632) },
-SIMDE_FLOAT64_C( 897.632) },
{ { SIMDE_FLOAT64_C( 404.184), SIMDE_FLOAT64_C( 271.741) },
SIMDE_FLOAT64_C( 271.741) },
{ { SIMDE_FLOAT64_C( 10.848), SIMDE_FLOAT64_C( 877.595) },
SIMDE_FLOAT64_C( 10.848) },
{ { -SIMDE_FLOAT64_C( 253.723), -SIMDE_FLOAT64_C( 399.728) },
-SIMDE_FLOAT64_C( 399.728) },
{ { -SIMDE_FLOAT64_C( 45.876), -SIMDE_FLOAT64_C( 859.553) },
-SIMDE_FLOAT64_C( 859.553) },
{ { -SIMDE_FLOAT64_C( 676.066), SIMDE_FLOAT64_C( 259.907) },
-SIMDE_FLOAT64_C( 676.066) },
{ { -SIMDE_FLOAT64_C( 677.086), -SIMDE_FLOAT64_C( 656.352) },
-SIMDE_FLOAT64_C( 677.086) },
{ { -SIMDE_FLOAT64_C( 372.201), -SIMDE_FLOAT64_C( 499.493) },
-SIMDE_FLOAT64_C( 499.493) },
};
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_float64_t r = simde_vminnmvq_f64(a);
simde_assert_equal_f64(r, 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_float64_t r = simde_vminnmvq_f64(a);
simde_test_arm_neon_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST);
simde_test_codegen_write_f64(2, r, SIMDE_TEST_VEC_POS_LAST);
}
return 1;
#endif
}
SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(vminnmv_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vminnmv_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vminnmvq_f16)
SIMDE_TEST_FUNC_LIST_ENTRY(vminnmvq_f32)
SIMDE_TEST_FUNC_LIST_ENTRY(vminnmvq_f64)
SIMDE_TEST_FUNC_LIST_END
#include "test-neon-footer.h"