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:
parent
e4e666f459
commit
3f10e05176
912 changed files with 224964 additions and 11502 deletions
585
thirdparty/simde/test/arm/neon/fma_lane.c
vendored
585
thirdparty/simde/test/arm/neon/fma_lane.c
vendored
|
|
@ -149,6 +149,170 @@ test_simde_vfmad_laneq_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmah_lane_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
struct {
|
||||
simde_float16_t a;
|
||||
simde_float16_t b;
|
||||
simde_float16_t v[4];
|
||||
simde_float16_t r0;
|
||||
simde_float16_t r1;
|
||||
simde_float16_t r2;
|
||||
simde_float16_t r3;
|
||||
} test_vec[] = {
|
||||
{ SIMDE_FLOAT16_VALUE(-5.9),
|
||||
SIMDE_FLOAT16_VALUE(3.4),
|
||||
{ SIMDE_FLOAT16_VALUE(7.1), SIMDE_FLOAT16_VALUE(-14.2), SIMDE_FLOAT16_VALUE(4.1), SIMDE_FLOAT16_VALUE(0.9) },
|
||||
SIMDE_FLOAT16_VALUE(18.240),
|
||||
SIMDE_FLOAT16_VALUE(-54.180),
|
||||
SIMDE_FLOAT16_VALUE(8.040),
|
||||
SIMDE_FLOAT16_VALUE(-2.840) },
|
||||
{ SIMDE_FLOAT16_VALUE(-4.6),
|
||||
SIMDE_FLOAT16_VALUE(-6.0),
|
||||
{ SIMDE_FLOAT16_VALUE(-12.0), SIMDE_FLOAT16_VALUE(-4.1), SIMDE_FLOAT16_VALUE(11.3), SIMDE_FLOAT16_VALUE(-1.1) },
|
||||
SIMDE_FLOAT16_VALUE(67.400),
|
||||
SIMDE_FLOAT16_VALUE(20.000),
|
||||
SIMDE_FLOAT16_VALUE(-72.400),
|
||||
SIMDE_FLOAT16_VALUE(2.000) },
|
||||
{ SIMDE_FLOAT16_VALUE(-8.2),
|
||||
SIMDE_FLOAT16_VALUE(-6.9),
|
||||
{ SIMDE_FLOAT16_VALUE(-7.7), SIMDE_FLOAT16_VALUE(-3.2), SIMDE_FLOAT16_VALUE(-5.2), SIMDE_FLOAT16_VALUE(-0.2) },
|
||||
SIMDE_FLOAT16_VALUE(44.930),
|
||||
SIMDE_FLOAT16_VALUE(13.880),
|
||||
SIMDE_FLOAT16_VALUE(27.680),
|
||||
SIMDE_FLOAT16_VALUE(-6.820) },
|
||||
{ SIMDE_FLOAT16_VALUE(9.1),
|
||||
SIMDE_FLOAT16_VALUE(-10.5),
|
||||
{ SIMDE_FLOAT16_VALUE(-13.7), SIMDE_FLOAT16_VALUE(13.1), SIMDE_FLOAT16_VALUE(9.2), SIMDE_FLOAT16_VALUE(13.5) },
|
||||
SIMDE_FLOAT16_VALUE(152.950),
|
||||
SIMDE_FLOAT16_VALUE(-128.450),
|
||||
SIMDE_FLOAT16_VALUE(-87.500),
|
||||
SIMDE_FLOAT16_VALUE(-132.650) },
|
||||
{ SIMDE_FLOAT16_VALUE(-4.1),
|
||||
SIMDE_FLOAT16_VALUE(-2.4),
|
||||
{ SIMDE_FLOAT16_VALUE(-2.3), SIMDE_FLOAT16_VALUE(-15.0), SIMDE_FLOAT16_VALUE(-14.6), SIMDE_FLOAT16_VALUE(0.0) },
|
||||
SIMDE_FLOAT16_VALUE(1.420),
|
||||
SIMDE_FLOAT16_VALUE(31.900),
|
||||
SIMDE_FLOAT16_VALUE(30.940),
|
||||
SIMDE_FLOAT16_VALUE(-4.100) }
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x4_t v = simde_vld1_f16(test_vec[i].v);
|
||||
simde_float16_t r0 = simde_vfmah_lane_f16(test_vec[i].a, test_vec[i].b, v, 0);
|
||||
simde_float16_t r1 = simde_vfmah_lane_f16(test_vec[i].a, test_vec[i].b, v, 1);
|
||||
simde_float16_t r2 = simde_vfmah_lane_f16(test_vec[i].a, test_vec[i].b, v, 2);
|
||||
simde_float16_t r3 = simde_vfmah_lane_f16(test_vec[i].a, test_vec[i].b, v, 3);
|
||||
simde_assert_equal_f16(r0, test_vec[i].r0, 1);
|
||||
simde_assert_equal_f16(r1, test_vec[i].r1, 1);
|
||||
simde_assert_equal_f16(r2, test_vec[i].r2, 1);
|
||||
simde_assert_equal_f16(r3, test_vec[i].r3, 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmah_laneq_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
struct {
|
||||
simde_float16_t a;
|
||||
simde_float16_t b;
|
||||
simde_float16_t v[8];
|
||||
simde_float16_t r0;
|
||||
simde_float16_t r1;
|
||||
simde_float16_t r2;
|
||||
simde_float16_t r3;
|
||||
simde_float16_t r4;
|
||||
simde_float16_t r5;
|
||||
simde_float16_t r6;
|
||||
simde_float16_t r7;
|
||||
} test_vec[] = {
|
||||
{ SIMDE_FLOAT16_VALUE(9.6),
|
||||
SIMDE_FLOAT16_VALUE(-2.7),
|
||||
{ SIMDE_FLOAT16_VALUE(-9.6), SIMDE_FLOAT16_VALUE(1.6), SIMDE_FLOAT16_VALUE(2.6), SIMDE_FLOAT16_VALUE(-0.9),
|
||||
SIMDE_FLOAT16_VALUE(-3.7), SIMDE_FLOAT16_VALUE(0.9), SIMDE_FLOAT16_VALUE(-9.8), SIMDE_FLOAT16_VALUE(-0.1) },
|
||||
SIMDE_FLOAT16_VALUE(35.520),
|
||||
SIMDE_FLOAT16_VALUE(5.280),
|
||||
SIMDE_FLOAT16_VALUE(2.580),
|
||||
SIMDE_FLOAT16_VALUE(12.030),
|
||||
SIMDE_FLOAT16_VALUE(19.590),
|
||||
SIMDE_FLOAT16_VALUE(7.170),
|
||||
SIMDE_FLOAT16_VALUE(36.060),
|
||||
SIMDE_FLOAT16_VALUE(9.870) },
|
||||
{ SIMDE_FLOAT16_VALUE(8.3),
|
||||
SIMDE_FLOAT16_VALUE(6.6),
|
||||
{ SIMDE_FLOAT16_VALUE(3.8), SIMDE_FLOAT16_VALUE(-1.8), SIMDE_FLOAT16_VALUE(4.7), SIMDE_FLOAT16_VALUE(-1.9),
|
||||
SIMDE_FLOAT16_VALUE(-1.9), SIMDE_FLOAT16_VALUE(-2.8), SIMDE_FLOAT16_VALUE(-0.5), SIMDE_FLOAT16_VALUE(-5.0) },
|
||||
SIMDE_FLOAT16_VALUE(33.380),
|
||||
SIMDE_FLOAT16_VALUE(-3.580),
|
||||
SIMDE_FLOAT16_VALUE(39.320),
|
||||
SIMDE_FLOAT16_VALUE(-4.240),
|
||||
SIMDE_FLOAT16_VALUE(-4.240),
|
||||
SIMDE_FLOAT16_VALUE(-10.180),
|
||||
SIMDE_FLOAT16_VALUE(5.000),
|
||||
SIMDE_FLOAT16_VALUE(-24.700) },
|
||||
{ SIMDE_FLOAT16_VALUE(8.7),
|
||||
SIMDE_FLOAT16_VALUE(2.3),
|
||||
{ SIMDE_FLOAT16_VALUE(-9.1), SIMDE_FLOAT16_VALUE(0.6), SIMDE_FLOAT16_VALUE(2.4), SIMDE_FLOAT16_VALUE(-9.5),
|
||||
SIMDE_FLOAT16_VALUE(0.3), SIMDE_FLOAT16_VALUE(-6.1), SIMDE_FLOAT16_VALUE(-6.3), SIMDE_FLOAT16_VALUE(3.4) },
|
||||
SIMDE_FLOAT16_VALUE(-12.230),
|
||||
SIMDE_FLOAT16_VALUE(10.080),
|
||||
SIMDE_FLOAT16_VALUE(14.220),
|
||||
SIMDE_FLOAT16_VALUE(-13.150),
|
||||
SIMDE_FLOAT16_VALUE(9.390),
|
||||
SIMDE_FLOAT16_VALUE(-5.330),
|
||||
SIMDE_FLOAT16_VALUE(-5.790),
|
||||
SIMDE_FLOAT16_VALUE(16.520) },
|
||||
{ SIMDE_FLOAT16_VALUE(3.3),
|
||||
SIMDE_FLOAT16_VALUE(-9.7),
|
||||
{ SIMDE_FLOAT16_VALUE(2.8), SIMDE_FLOAT16_VALUE(-8.5), SIMDE_FLOAT16_VALUE(-5.5), SIMDE_FLOAT16_VALUE(6.3),
|
||||
SIMDE_FLOAT16_VALUE(-9.1), SIMDE_FLOAT16_VALUE(-5.3), SIMDE_FLOAT16_VALUE(-3.4), SIMDE_FLOAT16_VALUE(7.2) },
|
||||
SIMDE_FLOAT16_VALUE(-23.860),
|
||||
SIMDE_FLOAT16_VALUE(85.750),
|
||||
SIMDE_FLOAT16_VALUE(56.650),
|
||||
SIMDE_FLOAT16_VALUE(-57.810),
|
||||
SIMDE_FLOAT16_VALUE(91.570),
|
||||
SIMDE_FLOAT16_VALUE(54.710),
|
||||
SIMDE_FLOAT16_VALUE(36.280),
|
||||
SIMDE_FLOAT16_VALUE(-66.540) },
|
||||
{ SIMDE_FLOAT16_VALUE(9.1),
|
||||
SIMDE_FLOAT16_VALUE(-6.2),
|
||||
{ SIMDE_FLOAT16_VALUE(-0.0), SIMDE_FLOAT16_VALUE(-7.9), SIMDE_FLOAT16_VALUE(6.8), SIMDE_FLOAT16_VALUE(-8.0),
|
||||
SIMDE_FLOAT16_VALUE(8.2), SIMDE_FLOAT16_VALUE(1.4), SIMDE_FLOAT16_VALUE(-2.0), SIMDE_FLOAT16_VALUE(-0.7) },
|
||||
SIMDE_FLOAT16_VALUE(9.100),
|
||||
SIMDE_FLOAT16_VALUE(58.080),
|
||||
SIMDE_FLOAT16_VALUE(-33.060),
|
||||
SIMDE_FLOAT16_VALUE(58.700),
|
||||
SIMDE_FLOAT16_VALUE(-41.740),
|
||||
SIMDE_FLOAT16_VALUE(0.420),
|
||||
SIMDE_FLOAT16_VALUE(21.500),
|
||||
SIMDE_FLOAT16_VALUE(13.440) },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x8_t v = simde_vld1q_f16(test_vec[i].v);
|
||||
simde_float16_t r0 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 0);
|
||||
simde_float16_t r1 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 1);
|
||||
simde_float16_t r2 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 2);
|
||||
simde_float16_t r3 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 3);
|
||||
simde_float16_t r4 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 4);
|
||||
simde_float16_t r5 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 5);
|
||||
simde_float16_t r6 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 6);
|
||||
simde_float16_t r7 = simde_vfmah_laneq_f16(test_vec[i].a, test_vec[i].b, v, 7);
|
||||
|
||||
simde_assert_equal_f16(r0, test_vec[i].r0, 1);
|
||||
simde_assert_equal_f16(r1, test_vec[i].r1, 1);
|
||||
simde_assert_equal_f16(r2, test_vec[i].r2, 1);
|
||||
simde_assert_equal_f16(r3, test_vec[i].r3, 1);
|
||||
simde_assert_equal_f16(r4, test_vec[i].r4, 1);
|
||||
simde_assert_equal_f16(r5, test_vec[i].r5, 1);
|
||||
simde_assert_equal_f16(r6, test_vec[i].r6, 1);
|
||||
simde_assert_equal_f16(r7, test_vec[i].r7, 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmas_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
|
|
@ -336,6 +500,71 @@ test_simde_vfmas_laneq_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfma_lane_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
struct {
|
||||
simde_float16_t a[4];
|
||||
simde_float16_t b[4];
|
||||
simde_float16_t v[4];
|
||||
simde_float16_t r0[4];
|
||||
simde_float16_t r1[4];
|
||||
simde_float16_t r2[4];
|
||||
simde_float16_t r3[4];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE(-8.1), SIMDE_FLOAT16_VALUE(-5.0), SIMDE_FLOAT16_VALUE(-5.6), SIMDE_FLOAT16_VALUE(-4.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(2.4), SIMDE_FLOAT16_VALUE(-3.0), SIMDE_FLOAT16_VALUE(8.3), SIMDE_FLOAT16_VALUE(-5.4) },
|
||||
{ SIMDE_FLOAT16_VALUE(-9.8), SIMDE_FLOAT16_VALUE(-9.6), SIMDE_FLOAT16_VALUE(-7.1), SIMDE_FLOAT16_VALUE(1.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(-31.620), SIMDE_FLOAT16_VALUE(24.400), SIMDE_FLOAT16_VALUE(-86.940), SIMDE_FLOAT16_VALUE(48.620) },
|
||||
{ SIMDE_FLOAT16_VALUE(-31.140), SIMDE_FLOAT16_VALUE(23.800), SIMDE_FLOAT16_VALUE(-85.280), SIMDE_FLOAT16_VALUE(47.540) },
|
||||
{ SIMDE_FLOAT16_VALUE(-25.140), SIMDE_FLOAT16_VALUE(16.300), SIMDE_FLOAT16_VALUE(-64.530), SIMDE_FLOAT16_VALUE(34.040) },
|
||||
{ SIMDE_FLOAT16_VALUE(-5.460), SIMDE_FLOAT16_VALUE(-8.300), SIMDE_FLOAT16_VALUE(3.530), SIMDE_FLOAT16_VALUE(-10.240) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-5.1), SIMDE_FLOAT16_VALUE(1.3), SIMDE_FLOAT16_VALUE(-1.5), SIMDE_FLOAT16_VALUE(-1.9) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.7), SIMDE_FLOAT16_VALUE(1.4), SIMDE_FLOAT16_VALUE(-1.7), SIMDE_FLOAT16_VALUE(0.8) },
|
||||
{ SIMDE_FLOAT16_VALUE(-8.8), SIMDE_FLOAT16_VALUE(-7.7), SIMDE_FLOAT16_VALUE(10.0), SIMDE_FLOAT16_VALUE(2.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(62.660), SIMDE_FLOAT16_VALUE(-11.020), SIMDE_FLOAT16_VALUE(13.460), SIMDE_FLOAT16_VALUE(-8.940) },
|
||||
{ SIMDE_FLOAT16_VALUE(54.190), SIMDE_FLOAT16_VALUE(-9.480), SIMDE_FLOAT16_VALUE(11.590), SIMDE_FLOAT16_VALUE(-8.060) },
|
||||
{ SIMDE_FLOAT16_VALUE(-82.100), SIMDE_FLOAT16_VALUE(15.300), SIMDE_FLOAT16_VALUE(-18.500), SIMDE_FLOAT16_VALUE(6.100) },
|
||||
{ SIMDE_FLOAT16_VALUE(-22.040), SIMDE_FLOAT16_VALUE(4.380), SIMDE_FLOAT16_VALUE(-5.240), SIMDE_FLOAT16_VALUE(-0.140) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-1.2), SIMDE_FLOAT16_VALUE(1.6), SIMDE_FLOAT16_VALUE(-5.8), SIMDE_FLOAT16_VALUE(5.7) },
|
||||
{ SIMDE_FLOAT16_VALUE(2.3), SIMDE_FLOAT16_VALUE(8.0), SIMDE_FLOAT16_VALUE(4.9), SIMDE_FLOAT16_VALUE(-9.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(7.3), SIMDE_FLOAT16_VALUE(7.8), SIMDE_FLOAT16_VALUE(8.4), SIMDE_FLOAT16_VALUE(0.6) },
|
||||
{ SIMDE_FLOAT16_VALUE(15.590), SIMDE_FLOAT16_VALUE(60.000), SIMDE_FLOAT16_VALUE(29.970), SIMDE_FLOAT16_VALUE(-62.190) },
|
||||
{ SIMDE_FLOAT16_VALUE(16.740), SIMDE_FLOAT16_VALUE(64.000), SIMDE_FLOAT16_VALUE(32.420), SIMDE_FLOAT16_VALUE(-66.840) },
|
||||
{ SIMDE_FLOAT16_VALUE(18.120), SIMDE_FLOAT16_VALUE(68.800), SIMDE_FLOAT16_VALUE(35.360), SIMDE_FLOAT16_VALUE(-72.420) },
|
||||
{ SIMDE_FLOAT16_VALUE(0.180), SIMDE_FLOAT16_VALUE(6.400), SIMDE_FLOAT16_VALUE(-2.860), SIMDE_FLOAT16_VALUE(0.120) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(8.9), SIMDE_FLOAT16_VALUE(1.6), SIMDE_FLOAT16_VALUE(-4.1), SIMDE_FLOAT16_VALUE(8.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(-9.5), SIMDE_FLOAT16_VALUE(-4.5), SIMDE_FLOAT16_VALUE(-9.2), SIMDE_FLOAT16_VALUE(5.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(-4.8), SIMDE_FLOAT16_VALUE(6.8), SIMDE_FLOAT16_VALUE(0.6), SIMDE_FLOAT16_VALUE(-9.6) },
|
||||
{ SIMDE_FLOAT16_VALUE(54.500), SIMDE_FLOAT16_VALUE(23.200), SIMDE_FLOAT16_VALUE(40.060), SIMDE_FLOAT16_VALUE(-17.140) },
|
||||
{ SIMDE_FLOAT16_VALUE(-55.700), SIMDE_FLOAT16_VALUE(-29.000), SIMDE_FLOAT16_VALUE(-66.660), SIMDE_FLOAT16_VALUE(44.340) },
|
||||
{ SIMDE_FLOAT16_VALUE(3.200), SIMDE_FLOAT16_VALUE(-1.100), SIMDE_FLOAT16_VALUE(-9.620), SIMDE_FLOAT16_VALUE(11.480) },
|
||||
{ SIMDE_FLOAT16_VALUE(100.100), SIMDE_FLOAT16_VALUE(44.800), SIMDE_FLOAT16_VALUE(84.220), SIMDE_FLOAT16_VALUE(-42.580) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(1.1), SIMDE_FLOAT16_VALUE(-6.9), SIMDE_FLOAT16_VALUE(5.2), SIMDE_FLOAT16_VALUE(5.7) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.6), SIMDE_FLOAT16_VALUE(-6.4), SIMDE_FLOAT16_VALUE(-6.3), SIMDE_FLOAT16_VALUE(-3.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.0), SIMDE_FLOAT16_VALUE(-9.0), SIMDE_FLOAT16_VALUE(5.3), SIMDE_FLOAT16_VALUE(1.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(54.300), SIMDE_FLOAT16_VALUE(37.900), SIMDE_FLOAT16_VALUE(49.300), SIMDE_FLOAT16_VALUE(27.400) },
|
||||
{ SIMDE_FLOAT16_VALUE(69.500), SIMDE_FLOAT16_VALUE(50.700), SIMDE_FLOAT16_VALUE(61.900), SIMDE_FLOAT16_VALUE(33.600) },
|
||||
{ SIMDE_FLOAT16_VALUE(-39.180), SIMDE_FLOAT16_VALUE(-40.820), SIMDE_FLOAT16_VALUE(-28.190), SIMDE_FLOAT16_VALUE(-10.730) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.260), SIMDE_FLOAT16_VALUE(-13.940), SIMDE_FLOAT16_VALUE(-1.730), SIMDE_FLOAT16_VALUE(2.290) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x4_t v = simde_vld1_f16(test_vec[i].v);
|
||||
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 r0 = simde_vfma_lane_f16(a, b, v, 0);
|
||||
simde_float16x4_t r1 = simde_vfma_lane_f16(a, b, v, 1);
|
||||
simde_float16x4_t r2 = simde_vfma_lane_f16(a, b, v, 2);
|
||||
simde_float16x4_t r3 = simde_vfma_lane_f16(a, b, v, 3);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r0, simde_vld1_f16(test_vec[i].r0), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r1, simde_vld1_f16(test_vec[i].r1), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r2, simde_vld1_f16(test_vec[i].r2), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r3, simde_vld1_f16(test_vec[i].r3), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfma_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
|
|
@ -485,6 +714,108 @@ test_simde_vfma_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfma_laneq_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
struct {
|
||||
simde_float16_t a[4];
|
||||
simde_float16_t b[4];
|
||||
simde_float16_t v[8];
|
||||
simde_float16_t r0[4];
|
||||
simde_float16_t r1[4];
|
||||
simde_float16_t r2[4];
|
||||
simde_float16_t r3[4];
|
||||
simde_float16_t r4[4];
|
||||
simde_float16_t r5[4];
|
||||
simde_float16_t r6[4];
|
||||
simde_float16_t r7[4];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE(0.5), SIMDE_FLOAT16_VALUE(0.3), SIMDE_FLOAT16_VALUE(-5.6), SIMDE_FLOAT16_VALUE(-0.4) },
|
||||
{ SIMDE_FLOAT16_VALUE(-9.8), SIMDE_FLOAT16_VALUE(6.1), SIMDE_FLOAT16_VALUE(-5.7), SIMDE_FLOAT16_VALUE(7.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(-2.1), SIMDE_FLOAT16_VALUE(-0.7), SIMDE_FLOAT16_VALUE(-6.6), SIMDE_FLOAT16_VALUE(-5.5),
|
||||
SIMDE_FLOAT16_VALUE(-2.1), SIMDE_FLOAT16_VALUE(-1.8), SIMDE_FLOAT16_VALUE(-3.1), SIMDE_FLOAT16_VALUE(2.8) },
|
||||
{ SIMDE_FLOAT16_VALUE(21.080), SIMDE_FLOAT16_VALUE(-12.510), SIMDE_FLOAT16_VALUE(6.370), SIMDE_FLOAT16_VALUE(-15.730) },
|
||||
{ SIMDE_FLOAT16_VALUE(7.360), SIMDE_FLOAT16_VALUE(-3.970), SIMDE_FLOAT16_VALUE(-1.610), SIMDE_FLOAT16_VALUE(-5.510) },
|
||||
{ SIMDE_FLOAT16_VALUE(65.180), SIMDE_FLOAT16_VALUE(-39.960), SIMDE_FLOAT16_VALUE(32.020), SIMDE_FLOAT16_VALUE(-48.580) },
|
||||
{ SIMDE_FLOAT16_VALUE(54.400), SIMDE_FLOAT16_VALUE(-33.250), SIMDE_FLOAT16_VALUE(25.750), SIMDE_FLOAT16_VALUE(-40.550) },
|
||||
{ SIMDE_FLOAT16_VALUE(21.080), SIMDE_FLOAT16_VALUE(-12.510), SIMDE_FLOAT16_VALUE(6.370), SIMDE_FLOAT16_VALUE(-15.730) },
|
||||
{ SIMDE_FLOAT16_VALUE(18.140), SIMDE_FLOAT16_VALUE(-10.680), SIMDE_FLOAT16_VALUE(4.660), SIMDE_FLOAT16_VALUE(-13.540) },
|
||||
{ SIMDE_FLOAT16_VALUE(30.880), SIMDE_FLOAT16_VALUE(-18.610), SIMDE_FLOAT16_VALUE(12.070), SIMDE_FLOAT16_VALUE(-23.030) },
|
||||
{ SIMDE_FLOAT16_VALUE(-26.940), SIMDE_FLOAT16_VALUE(17.380), SIMDE_FLOAT16_VALUE(-21.560), SIMDE_FLOAT16_VALUE(20.040) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-1.7), SIMDE_FLOAT16_VALUE(7.9), SIMDE_FLOAT16_VALUE(-2.4), SIMDE_FLOAT16_VALUE(-0.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.2), SIMDE_FLOAT16_VALUE(5.5), SIMDE_FLOAT16_VALUE(-9.1), SIMDE_FLOAT16_VALUE(-2.8) },
|
||||
{ SIMDE_FLOAT16_VALUE(9.5), SIMDE_FLOAT16_VALUE(9.3), SIMDE_FLOAT16_VALUE(-9.3), SIMDE_FLOAT16_VALUE(-2.5),
|
||||
SIMDE_FLOAT16_VALUE(-9.9), SIMDE_FLOAT16_VALUE(2.9), SIMDE_FLOAT16_VALUE(-6.0), SIMDE_FLOAT16_VALUE(6.4) },
|
||||
{ SIMDE_FLOAT16_VALUE(-70.100), SIMDE_FLOAT16_VALUE(60.150), SIMDE_FLOAT16_VALUE(-88.850), SIMDE_FLOAT16_VALUE(-26.700) },
|
||||
{ SIMDE_FLOAT16_VALUE(-68.660), SIMDE_FLOAT16_VALUE(59.050), SIMDE_FLOAT16_VALUE(-87.030), SIMDE_FLOAT16_VALUE(-26.140) },
|
||||
{ SIMDE_FLOAT16_VALUE(65.260), SIMDE_FLOAT16_VALUE(-43.250), SIMDE_FLOAT16_VALUE(82.230), SIMDE_FLOAT16_VALUE(25.940) },
|
||||
{ SIMDE_FLOAT16_VALUE(16.300), SIMDE_FLOAT16_VALUE(-5.850), SIMDE_FLOAT16_VALUE(20.350), SIMDE_FLOAT16_VALUE(6.900) },
|
||||
{ SIMDE_FLOAT16_VALUE(69.580), SIMDE_FLOAT16_VALUE(-46.550), SIMDE_FLOAT16_VALUE(87.690), SIMDE_FLOAT16_VALUE(27.620) },
|
||||
{ SIMDE_FLOAT16_VALUE(-22.580), SIMDE_FLOAT16_VALUE(23.850), SIMDE_FLOAT16_VALUE(-28.790), SIMDE_FLOAT16_VALUE(-8.220) },
|
||||
{ SIMDE_FLOAT16_VALUE(41.500), SIMDE_FLOAT16_VALUE(-25.100), SIMDE_FLOAT16_VALUE(52.200), SIMDE_FLOAT16_VALUE(16.700) },
|
||||
{ SIMDE_FLOAT16_VALUE(-47.780), SIMDE_FLOAT16_VALUE(43.100), SIMDE_FLOAT16_VALUE(-60.640), SIMDE_FLOAT16_VALUE(-18.020) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-9.5), SIMDE_FLOAT16_VALUE(-7.9), SIMDE_FLOAT16_VALUE(3.2), SIMDE_FLOAT16_VALUE(6.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(-5.6), SIMDE_FLOAT16_VALUE(2.3), SIMDE_FLOAT16_VALUE(-8.6), SIMDE_FLOAT16_VALUE(-1.0) },
|
||||
{ SIMDE_FLOAT16_VALUE(0.1), SIMDE_FLOAT16_VALUE(1.8), SIMDE_FLOAT16_VALUE(-2.1), SIMDE_FLOAT16_VALUE(7.4),
|
||||
SIMDE_FLOAT16_VALUE(-4.2), SIMDE_FLOAT16_VALUE(0.4), SIMDE_FLOAT16_VALUE(-6.2), SIMDE_FLOAT16_VALUE(5.9) },
|
||||
{ SIMDE_FLOAT16_VALUE(-10.060), SIMDE_FLOAT16_VALUE(-7.670), SIMDE_FLOAT16_VALUE(2.340), SIMDE_FLOAT16_VALUE(6.200) },
|
||||
{ SIMDE_FLOAT16_VALUE(-19.580), SIMDE_FLOAT16_VALUE(-3.760), SIMDE_FLOAT16_VALUE(-12.280), SIMDE_FLOAT16_VALUE(4.500) },
|
||||
{ SIMDE_FLOAT16_VALUE(2.260), SIMDE_FLOAT16_VALUE(-12.730), SIMDE_FLOAT16_VALUE(21.260), SIMDE_FLOAT16_VALUE(8.400) },
|
||||
{ SIMDE_FLOAT16_VALUE(-50.940), SIMDE_FLOAT16_VALUE(9.120), SIMDE_FLOAT16_VALUE(-60.440), SIMDE_FLOAT16_VALUE(-1.100) },
|
||||
{ SIMDE_FLOAT16_VALUE(14.020), SIMDE_FLOAT16_VALUE(-17.560), SIMDE_FLOAT16_VALUE(39.320), SIMDE_FLOAT16_VALUE(10.500) },
|
||||
{ SIMDE_FLOAT16_VALUE(-11.740), SIMDE_FLOAT16_VALUE(-6.980), SIMDE_FLOAT16_VALUE(-0.240), SIMDE_FLOAT16_VALUE(5.900) },
|
||||
{ SIMDE_FLOAT16_VALUE(25.220), SIMDE_FLOAT16_VALUE(-22.160), SIMDE_FLOAT16_VALUE(56.520), SIMDE_FLOAT16_VALUE(12.500) },
|
||||
{ SIMDE_FLOAT16_VALUE(-42.540), SIMDE_FLOAT16_VALUE(5.670), SIMDE_FLOAT16_VALUE(-47.540), SIMDE_FLOAT16_VALUE(0.400) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-7.0), SIMDE_FLOAT16_VALUE(5.9), SIMDE_FLOAT16_VALUE(-10.0), SIMDE_FLOAT16_VALUE(-8.9) },
|
||||
{ SIMDE_FLOAT16_VALUE(-2.8), SIMDE_FLOAT16_VALUE(6.7), SIMDE_FLOAT16_VALUE(-4.1), SIMDE_FLOAT16_VALUE(-7.0) },
|
||||
{ SIMDE_FLOAT16_VALUE(7.3), SIMDE_FLOAT16_VALUE(1.2), SIMDE_FLOAT16_VALUE(0.2), SIMDE_FLOAT16_VALUE(4.4),
|
||||
SIMDE_FLOAT16_VALUE(-9.1), SIMDE_FLOAT16_VALUE(6.0), SIMDE_FLOAT16_VALUE(4.0), SIMDE_FLOAT16_VALUE(-3.8) },
|
||||
{ SIMDE_FLOAT16_VALUE(-27.440), SIMDE_FLOAT16_VALUE(54.810), SIMDE_FLOAT16_VALUE(-39.930), SIMDE_FLOAT16_VALUE(-60.000) },
|
||||
{ SIMDE_FLOAT16_VALUE(-10.360), SIMDE_FLOAT16_VALUE(13.940), SIMDE_FLOAT16_VALUE(-14.920), SIMDE_FLOAT16_VALUE(-17.300) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.560), SIMDE_FLOAT16_VALUE(7.240), SIMDE_FLOAT16_VALUE(-10.820), SIMDE_FLOAT16_VALUE(-10.300) },
|
||||
{ SIMDE_FLOAT16_VALUE(-19.320), SIMDE_FLOAT16_VALUE(35.380), SIMDE_FLOAT16_VALUE(-28.040), SIMDE_FLOAT16_VALUE(-39.700) },
|
||||
{ SIMDE_FLOAT16_VALUE(18.480), SIMDE_FLOAT16_VALUE(-55.070), SIMDE_FLOAT16_VALUE(27.310), SIMDE_FLOAT16_VALUE(54.800) },
|
||||
{ SIMDE_FLOAT16_VALUE(-23.800), SIMDE_FLOAT16_VALUE(46.100), SIMDE_FLOAT16_VALUE(-34.600), SIMDE_FLOAT16_VALUE(-50.900) },
|
||||
{ SIMDE_FLOAT16_VALUE(-18.200), SIMDE_FLOAT16_VALUE(32.700), SIMDE_FLOAT16_VALUE(-26.400), SIMDE_FLOAT16_VALUE(-36.900) },
|
||||
{ SIMDE_FLOAT16_VALUE(3.640), SIMDE_FLOAT16_VALUE(-19.560), SIMDE_FLOAT16_VALUE(5.580), SIMDE_FLOAT16_VALUE(17.700) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(6.3), SIMDE_FLOAT16_VALUE(-1.5), SIMDE_FLOAT16_VALUE(1.1), SIMDE_FLOAT16_VALUE(-3.6) },
|
||||
{ SIMDE_FLOAT16_VALUE(-9.1), SIMDE_FLOAT16_VALUE(8.2), SIMDE_FLOAT16_VALUE(-8.6), SIMDE_FLOAT16_VALUE(-4.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(4.9), SIMDE_FLOAT16_VALUE(-8.9), SIMDE_FLOAT16_VALUE(5.1), SIMDE_FLOAT16_VALUE(6.4),
|
||||
SIMDE_FLOAT16_VALUE(-2.4), SIMDE_FLOAT16_VALUE(7.2), SIMDE_FLOAT16_VALUE(8.8), SIMDE_FLOAT16_VALUE(-1.0) },
|
||||
{ SIMDE_FLOAT16_VALUE(-38.290), SIMDE_FLOAT16_VALUE(38.680), SIMDE_FLOAT16_VALUE(-41.040), SIMDE_FLOAT16_VALUE(-23.690) },
|
||||
{ SIMDE_FLOAT16_VALUE(87.290), SIMDE_FLOAT16_VALUE(-74.480), SIMDE_FLOAT16_VALUE(77.640), SIMDE_FLOAT16_VALUE(32.890) },
|
||||
{ SIMDE_FLOAT16_VALUE(-40.110), SIMDE_FLOAT16_VALUE(40.320), SIMDE_FLOAT16_VALUE(-42.760), SIMDE_FLOAT16_VALUE(-24.510) },
|
||||
{ SIMDE_FLOAT16_VALUE(-51.940), SIMDE_FLOAT16_VALUE(50.980), SIMDE_FLOAT16_VALUE(-53.940), SIMDE_FLOAT16_VALUE(-29.840) },
|
||||
{ SIMDE_FLOAT16_VALUE(28.140), SIMDE_FLOAT16_VALUE(-21.180), SIMDE_FLOAT16_VALUE(21.740), SIMDE_FLOAT16_VALUE(6.240) },
|
||||
{ SIMDE_FLOAT16_VALUE(-59.220), SIMDE_FLOAT16_VALUE(57.540), SIMDE_FLOAT16_VALUE(-60.820), SIMDE_FLOAT16_VALUE(-33.120) },
|
||||
{ SIMDE_FLOAT16_VALUE(-73.780), SIMDE_FLOAT16_VALUE(70.660), SIMDE_FLOAT16_VALUE(-74.580), SIMDE_FLOAT16_VALUE(-39.680) },
|
||||
{ SIMDE_FLOAT16_VALUE(15.400), SIMDE_FLOAT16_VALUE(-9.700), SIMDE_FLOAT16_VALUE(9.700), SIMDE_FLOAT16_VALUE(0.500) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x8_t v = simde_vld1q_f16(test_vec[i].v);
|
||||
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 r0 = simde_vfma_laneq_f16(a, b, v, 0);
|
||||
simde_float16x4_t r1 = simde_vfma_laneq_f16(a, b, v, 1);
|
||||
simde_float16x4_t r2 = simde_vfma_laneq_f16(a, b, v, 2);
|
||||
simde_float16x4_t r3 = simde_vfma_laneq_f16(a, b, v, 3);
|
||||
simde_float16x4_t r4 = simde_vfma_laneq_f16(a, b, v, 4);
|
||||
simde_float16x4_t r5 = simde_vfma_laneq_f16(a, b, v, 5);
|
||||
simde_float16x4_t r6 = simde_vfma_laneq_f16(a, b, v, 6);
|
||||
simde_float16x4_t r7 = simde_vfma_laneq_f16(a, b, v, 7);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r0, simde_vld1_f16(test_vec[i].r0), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r1, simde_vld1_f16(test_vec[i].r1), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r2, simde_vld1_f16(test_vec[i].r2), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r3, simde_vld1_f16(test_vec[i].r3), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r4, simde_vld1_f16(test_vec[i].r4), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r5, simde_vld1_f16(test_vec[i].r5), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r6, simde_vld1_f16(test_vec[i].r6), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x4(r7, simde_vld1_f16(test_vec[i].r7), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfma_laneq_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
|
|
@ -675,6 +1006,101 @@ test_simde_vfma_laneq_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmaq_lane_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
struct {
|
||||
simde_float16_t a[8];
|
||||
simde_float16_t b[8];
|
||||
simde_float16_t v[4];
|
||||
simde_float16_t r0[8];
|
||||
simde_float16_t r1[8];
|
||||
simde_float16_t r2[8];
|
||||
simde_float16_t r3[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE(-0.2), SIMDE_FLOAT16_VALUE(3.9), SIMDE_FLOAT16_VALUE(7.7), SIMDE_FLOAT16_VALUE(6.9),
|
||||
SIMDE_FLOAT16_VALUE(2.4), SIMDE_FLOAT16_VALUE(0.4), SIMDE_FLOAT16_VALUE(-9.6), SIMDE_FLOAT16_VALUE(-4.5) },
|
||||
{ SIMDE_FLOAT16_VALUE(8.8), SIMDE_FLOAT16_VALUE(2.0), SIMDE_FLOAT16_VALUE(7.3), SIMDE_FLOAT16_VALUE(-2.2),
|
||||
SIMDE_FLOAT16_VALUE(0.8), SIMDE_FLOAT16_VALUE(-2.0), SIMDE_FLOAT16_VALUE(9.0), SIMDE_FLOAT16_VALUE(7.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(4.7), SIMDE_FLOAT16_VALUE(-5.8), SIMDE_FLOAT16_VALUE(0.3), SIMDE_FLOAT16_VALUE(-5.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(41.160), SIMDE_FLOAT16_VALUE(13.300), SIMDE_FLOAT16_VALUE(42.010), SIMDE_FLOAT16_VALUE(-3.440),
|
||||
SIMDE_FLOAT16_VALUE(6.160), SIMDE_FLOAT16_VALUE(-9.000), SIMDE_FLOAT16_VALUE(32.700), SIMDE_FLOAT16_VALUE(29.340) },
|
||||
{ SIMDE_FLOAT16_VALUE(-51.240), SIMDE_FLOAT16_VALUE(-7.700), SIMDE_FLOAT16_VALUE(-34.640), SIMDE_FLOAT16_VALUE(19.660),
|
||||
SIMDE_FLOAT16_VALUE(-2.240), SIMDE_FLOAT16_VALUE(12.000), SIMDE_FLOAT16_VALUE(-61.800), SIMDE_FLOAT16_VALUE(-46.260) },
|
||||
{ SIMDE_FLOAT16_VALUE(2.440), SIMDE_FLOAT16_VALUE(4.500), SIMDE_FLOAT16_VALUE(9.890), SIMDE_FLOAT16_VALUE(6.240),
|
||||
SIMDE_FLOAT16_VALUE(2.640), SIMDE_FLOAT16_VALUE(-0.200), SIMDE_FLOAT16_VALUE(-6.900), SIMDE_FLOAT16_VALUE(-2.340) },
|
||||
{ SIMDE_FLOAT16_VALUE(-45.080), SIMDE_FLOAT16_VALUE(-6.300), SIMDE_FLOAT16_VALUE(-29.530), SIMDE_FLOAT16_VALUE(18.120),
|
||||
SIMDE_FLOAT16_VALUE(-1.680), SIMDE_FLOAT16_VALUE(10.600), SIMDE_FLOAT16_VALUE(-55.500), SIMDE_FLOAT16_VALUE(-41.220) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-9.6), SIMDE_FLOAT16_VALUE(6.6), SIMDE_FLOAT16_VALUE(0.7), SIMDE_FLOAT16_VALUE(-6.3),
|
||||
SIMDE_FLOAT16_VALUE(-4.3), SIMDE_FLOAT16_VALUE(-4.5), SIMDE_FLOAT16_VALUE(6.0), SIMDE_FLOAT16_VALUE(4.7) },
|
||||
{ SIMDE_FLOAT16_VALUE(1.8), SIMDE_FLOAT16_VALUE(6.6), SIMDE_FLOAT16_VALUE(-9.5), SIMDE_FLOAT16_VALUE(-3.0),
|
||||
SIMDE_FLOAT16_VALUE(-5.9), SIMDE_FLOAT16_VALUE(-2.8), SIMDE_FLOAT16_VALUE(7.6), SIMDE_FLOAT16_VALUE(4.5) },
|
||||
{ SIMDE_FLOAT16_VALUE(2.8), SIMDE_FLOAT16_VALUE(7.9), SIMDE_FLOAT16_VALUE(0.9), SIMDE_FLOAT16_VALUE(4.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(-4.560), SIMDE_FLOAT16_VALUE(25.080), SIMDE_FLOAT16_VALUE(-25.900), SIMDE_FLOAT16_VALUE(-14.700),
|
||||
SIMDE_FLOAT16_VALUE(-20.820), SIMDE_FLOAT16_VALUE(-12.340), SIMDE_FLOAT16_VALUE(27.280), SIMDE_FLOAT16_VALUE(17.300) },
|
||||
{ SIMDE_FLOAT16_VALUE(4.620), SIMDE_FLOAT16_VALUE(58.740), SIMDE_FLOAT16_VALUE(-74.350), SIMDE_FLOAT16_VALUE(-30.000),
|
||||
SIMDE_FLOAT16_VALUE(-50.910), SIMDE_FLOAT16_VALUE(-26.620), SIMDE_FLOAT16_VALUE(66.040), SIMDE_FLOAT16_VALUE(40.250) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.980), SIMDE_FLOAT16_VALUE(12.540), SIMDE_FLOAT16_VALUE(-7.850), SIMDE_FLOAT16_VALUE(-9.000),
|
||||
SIMDE_FLOAT16_VALUE(-9.610), SIMDE_FLOAT16_VALUE(-7.020), SIMDE_FLOAT16_VALUE(12.840), SIMDE_FLOAT16_VALUE(8.750) },
|
||||
{ SIMDE_FLOAT16_VALUE(-2.220), SIMDE_FLOAT16_VALUE(33.660), SIMDE_FLOAT16_VALUE(-38.250), SIMDE_FLOAT16_VALUE(-18.600),
|
||||
SIMDE_FLOAT16_VALUE(-28.490), SIMDE_FLOAT16_VALUE(-15.980), SIMDE_FLOAT16_VALUE(37.160), SIMDE_FLOAT16_VALUE(23.150) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-3.3), SIMDE_FLOAT16_VALUE(-2.2), SIMDE_FLOAT16_VALUE(1.9), SIMDE_FLOAT16_VALUE(5.5),
|
||||
SIMDE_FLOAT16_VALUE(-6.8), SIMDE_FLOAT16_VALUE(-2.6), SIMDE_FLOAT16_VALUE(1.6), SIMDE_FLOAT16_VALUE(-3.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(-5.9), SIMDE_FLOAT16_VALUE(-3.3), SIMDE_FLOAT16_VALUE(0.5), SIMDE_FLOAT16_VALUE(0.2),
|
||||
SIMDE_FLOAT16_VALUE(-8.9), SIMDE_FLOAT16_VALUE(7.2), SIMDE_FLOAT16_VALUE(8.2), SIMDE_FLOAT16_VALUE(1.5) },
|
||||
{ SIMDE_FLOAT16_VALUE(3.5), SIMDE_FLOAT16_VALUE(1.3), SIMDE_FLOAT16_VALUE(0.8), SIMDE_FLOAT16_VALUE(2.4) },
|
||||
{ SIMDE_FLOAT16_VALUE(-23.950), SIMDE_FLOAT16_VALUE(-13.750), SIMDE_FLOAT16_VALUE(3.650), SIMDE_FLOAT16_VALUE(6.200),
|
||||
SIMDE_FLOAT16_VALUE(-37.950), SIMDE_FLOAT16_VALUE(22.600), SIMDE_FLOAT16_VALUE(30.300), SIMDE_FLOAT16_VALUE(2.050) },
|
||||
{ SIMDE_FLOAT16_VALUE(-10.970), SIMDE_FLOAT16_VALUE(-6.490), SIMDE_FLOAT16_VALUE(2.550), SIMDE_FLOAT16_VALUE(5.760),
|
||||
SIMDE_FLOAT16_VALUE(-18.370), SIMDE_FLOAT16_VALUE(6.760), SIMDE_FLOAT16_VALUE(12.260), SIMDE_FLOAT16_VALUE(-1.250) },
|
||||
{ SIMDE_FLOAT16_VALUE(-8.020), SIMDE_FLOAT16_VALUE(-4.840), SIMDE_FLOAT16_VALUE(2.300), SIMDE_FLOAT16_VALUE(5.660),
|
||||
SIMDE_FLOAT16_VALUE(-13.920), SIMDE_FLOAT16_VALUE(3.160), SIMDE_FLOAT16_VALUE(8.160), SIMDE_FLOAT16_VALUE(-2.000) },
|
||||
{ SIMDE_FLOAT16_VALUE(-17.460), SIMDE_FLOAT16_VALUE(-10.120), SIMDE_FLOAT16_VALUE(3.100), SIMDE_FLOAT16_VALUE(5.980),
|
||||
SIMDE_FLOAT16_VALUE(-28.160), SIMDE_FLOAT16_VALUE(14.680), SIMDE_FLOAT16_VALUE(21.280), SIMDE_FLOAT16_VALUE(0.400) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(2.6), SIMDE_FLOAT16_VALUE(0.1), SIMDE_FLOAT16_VALUE(2.3), SIMDE_FLOAT16_VALUE(3.5),
|
||||
SIMDE_FLOAT16_VALUE(1.1), SIMDE_FLOAT16_VALUE(-7.3), SIMDE_FLOAT16_VALUE(-3.4), SIMDE_FLOAT16_VALUE(7.5) },
|
||||
{ SIMDE_FLOAT16_VALUE(-2.6), SIMDE_FLOAT16_VALUE(6.5), SIMDE_FLOAT16_VALUE(6.8), SIMDE_FLOAT16_VALUE(-7.0),
|
||||
SIMDE_FLOAT16_VALUE(5.0), SIMDE_FLOAT16_VALUE(9.3), SIMDE_FLOAT16_VALUE(-9.0), SIMDE_FLOAT16_VALUE(-2.0) },
|
||||
{ SIMDE_FLOAT16_VALUE(-5.1), SIMDE_FLOAT16_VALUE(5.4), SIMDE_FLOAT16_VALUE(3.8), SIMDE_FLOAT16_VALUE(4.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(15.860), SIMDE_FLOAT16_VALUE(-33.050), SIMDE_FLOAT16_VALUE(-32.380), SIMDE_FLOAT16_VALUE(39.200),
|
||||
SIMDE_FLOAT16_VALUE(-24.400), SIMDE_FLOAT16_VALUE(-54.730), SIMDE_FLOAT16_VALUE(42.500), SIMDE_FLOAT16_VALUE(17.700) },
|
||||
{ SIMDE_FLOAT16_VALUE(-11.440), SIMDE_FLOAT16_VALUE(35.200), SIMDE_FLOAT16_VALUE(39.020), SIMDE_FLOAT16_VALUE(-34.300),
|
||||
SIMDE_FLOAT16_VALUE(28.100), SIMDE_FLOAT16_VALUE(42.920), SIMDE_FLOAT16_VALUE(-52.000), SIMDE_FLOAT16_VALUE(-3.300) },
|
||||
{ SIMDE_FLOAT16_VALUE(-7.280), SIMDE_FLOAT16_VALUE(24.800), SIMDE_FLOAT16_VALUE(28.140), SIMDE_FLOAT16_VALUE(-23.100),
|
||||
SIMDE_FLOAT16_VALUE(20.100), SIMDE_FLOAT16_VALUE(28.040), SIMDE_FLOAT16_VALUE(-37.600), SIMDE_FLOAT16_VALUE(-0.100) },
|
||||
{ SIMDE_FLOAT16_VALUE(-8.580), SIMDE_FLOAT16_VALUE(28.050), SIMDE_FLOAT16_VALUE(31.540), SIMDE_FLOAT16_VALUE(-26.600),
|
||||
SIMDE_FLOAT16_VALUE(22.600), SIMDE_FLOAT16_VALUE(32.690), SIMDE_FLOAT16_VALUE(-42.100), SIMDE_FLOAT16_VALUE(-1.100) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(-5.3), SIMDE_FLOAT16_VALUE(9.3), SIMDE_FLOAT16_VALUE(4.7), SIMDE_FLOAT16_VALUE(-7.4),
|
||||
SIMDE_FLOAT16_VALUE(4.1), SIMDE_FLOAT16_VALUE(2.3), SIMDE_FLOAT16_VALUE(5.5), SIMDE_FLOAT16_VALUE(1.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(1.6), SIMDE_FLOAT16_VALUE(-9.7), SIMDE_FLOAT16_VALUE(-5.9), SIMDE_FLOAT16_VALUE(-8.1),
|
||||
SIMDE_FLOAT16_VALUE(0.2), SIMDE_FLOAT16_VALUE(-3.3), SIMDE_FLOAT16_VALUE(3.2), SIMDE_FLOAT16_VALUE(6.8) },
|
||||
{ SIMDE_FLOAT16_VALUE(1.5), SIMDE_FLOAT16_VALUE(3.9), SIMDE_FLOAT16_VALUE(5.6), SIMDE_FLOAT16_VALUE(7.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(-2.900), SIMDE_FLOAT16_VALUE(-5.250), SIMDE_FLOAT16_VALUE(-4.150), SIMDE_FLOAT16_VALUE(-19.550),
|
||||
SIMDE_FLOAT16_VALUE(4.400), SIMDE_FLOAT16_VALUE(-2.650), SIMDE_FLOAT16_VALUE(10.300), SIMDE_FLOAT16_VALUE(11.400) },
|
||||
{ SIMDE_FLOAT16_VALUE(0.940), SIMDE_FLOAT16_VALUE(-28.530), SIMDE_FLOAT16_VALUE(-18.310), SIMDE_FLOAT16_VALUE(-38.990),
|
||||
SIMDE_FLOAT16_VALUE(4.880), SIMDE_FLOAT16_VALUE(-10.570), SIMDE_FLOAT16_VALUE(17.980), SIMDE_FLOAT16_VALUE(27.720) },
|
||||
{ SIMDE_FLOAT16_VALUE(3.660), SIMDE_FLOAT16_VALUE(-45.020), SIMDE_FLOAT16_VALUE(-28.340), SIMDE_FLOAT16_VALUE(-52.760),
|
||||
SIMDE_FLOAT16_VALUE(5.220), SIMDE_FLOAT16_VALUE(-16.180), SIMDE_FLOAT16_VALUE(23.420), SIMDE_FLOAT16_VALUE(39.280) },
|
||||
{ SIMDE_FLOAT16_VALUE(6.060), SIMDE_FLOAT16_VALUE(-59.570), SIMDE_FLOAT16_VALUE(-37.190), SIMDE_FLOAT16_VALUE(-64.910),
|
||||
SIMDE_FLOAT16_VALUE(5.520), SIMDE_FLOAT16_VALUE(-21.130), SIMDE_FLOAT16_VALUE(28.220), SIMDE_FLOAT16_VALUE(49.480) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x4_t v = simde_vld1_f16(test_vec[i].v);
|
||||
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 r0 = simde_vfmaq_lane_f16(a, b, v, 0);
|
||||
simde_float16x8_t r1 = simde_vfmaq_lane_f16(a, b, v, 1);
|
||||
simde_float16x8_t r2 = simde_vfmaq_lane_f16(a, b, v, 2);
|
||||
simde_float16x8_t r3 = simde_vfmaq_lane_f16(a, b, v, 3);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r0, simde_vld1q_f16(test_vec[i].r0), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r1, simde_vld1q_f16(test_vec[i].r1), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r2, simde_vld1q_f16(test_vec[i].r2), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r3, simde_vld1q_f16(test_vec[i].r3), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmaq_lane_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
|
|
@ -826,6 +1252,158 @@ test_simde_vfmaq_lane_f64 (SIMDE_MUNIT_TEST_ARGS) {
|
|||
#endif
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmaq_laneq_f16 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
struct {
|
||||
simde_float16_t a[8];
|
||||
simde_float16_t b[8];
|
||||
simde_float16_t v[8];
|
||||
simde_float16_t r0[8];
|
||||
simde_float16_t r1[8];
|
||||
simde_float16_t r2[8];
|
||||
simde_float16_t r3[8];
|
||||
simde_float16_t r4[8];
|
||||
simde_float16_t r5[8];
|
||||
simde_float16_t r6[8];
|
||||
simde_float16_t r7[8];
|
||||
} test_vec[] = {
|
||||
{ { SIMDE_FLOAT16_VALUE(-2.0), SIMDE_FLOAT16_VALUE(2.7), SIMDE_FLOAT16_VALUE(4.9), SIMDE_FLOAT16_VALUE(-3.9),
|
||||
SIMDE_FLOAT16_VALUE(8.2), SIMDE_FLOAT16_VALUE(6.1), SIMDE_FLOAT16_VALUE(3.5), SIMDE_FLOAT16_VALUE(-5.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(9.0), SIMDE_FLOAT16_VALUE(3.5), SIMDE_FLOAT16_VALUE(3.5), SIMDE_FLOAT16_VALUE(-5.4),
|
||||
SIMDE_FLOAT16_VALUE(-2.5), SIMDE_FLOAT16_VALUE(5.4), SIMDE_FLOAT16_VALUE(-9.9), SIMDE_FLOAT16_VALUE(-7.6) },
|
||||
{ SIMDE_FLOAT16_VALUE(-5.5), SIMDE_FLOAT16_VALUE(-1.5), SIMDE_FLOAT16_VALUE(0.4), SIMDE_FLOAT16_VALUE(0.9),
|
||||
SIMDE_FLOAT16_VALUE(-2.0), SIMDE_FLOAT16_VALUE(3.5), SIMDE_FLOAT16_VALUE(-1.8), SIMDE_FLOAT16_VALUE(7.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(-51.500), SIMDE_FLOAT16_VALUE(-16.550), SIMDE_FLOAT16_VALUE(-14.350), SIMDE_FLOAT16_VALUE(25.800),
|
||||
SIMDE_FLOAT16_VALUE(21.950), SIMDE_FLOAT16_VALUE(-23.600), SIMDE_FLOAT16_VALUE(57.950), SIMDE_FLOAT16_VALUE(36.600) },
|
||||
{ SIMDE_FLOAT16_VALUE(-15.500), SIMDE_FLOAT16_VALUE(-2.550), SIMDE_FLOAT16_VALUE(-0.350), SIMDE_FLOAT16_VALUE(4.200),
|
||||
SIMDE_FLOAT16_VALUE(11.950), SIMDE_FLOAT16_VALUE(-2.000), SIMDE_FLOAT16_VALUE(18.350), SIMDE_FLOAT16_VALUE(6.200) },
|
||||
{ SIMDE_FLOAT16_VALUE(1.600), SIMDE_FLOAT16_VALUE(4.100), SIMDE_FLOAT16_VALUE(6.300), SIMDE_FLOAT16_VALUE(-6.060),
|
||||
SIMDE_FLOAT16_VALUE(7.200), SIMDE_FLOAT16_VALUE(8.260), SIMDE_FLOAT16_VALUE(-0.460), SIMDE_FLOAT16_VALUE(-8.240) },
|
||||
{ SIMDE_FLOAT16_VALUE(6.100), SIMDE_FLOAT16_VALUE(5.850), SIMDE_FLOAT16_VALUE(8.050), SIMDE_FLOAT16_VALUE(-8.760),
|
||||
SIMDE_FLOAT16_VALUE(5.950), SIMDE_FLOAT16_VALUE(10.960), SIMDE_FLOAT16_VALUE(-5.410), SIMDE_FLOAT16_VALUE(-12.040) },
|
||||
{ SIMDE_FLOAT16_VALUE(-20.000), SIMDE_FLOAT16_VALUE(-4.300), SIMDE_FLOAT16_VALUE(-2.100), SIMDE_FLOAT16_VALUE(6.900),
|
||||
SIMDE_FLOAT16_VALUE(13.200), SIMDE_FLOAT16_VALUE(-4.700), SIMDE_FLOAT16_VALUE(23.300), SIMDE_FLOAT16_VALUE(10.000) },
|
||||
{ SIMDE_FLOAT16_VALUE(29.500), SIMDE_FLOAT16_VALUE(14.950), SIMDE_FLOAT16_VALUE(17.150), SIMDE_FLOAT16_VALUE(-22.800),
|
||||
SIMDE_FLOAT16_VALUE(-0.550), SIMDE_FLOAT16_VALUE(25.000), SIMDE_FLOAT16_VALUE(-31.150), SIMDE_FLOAT16_VALUE(-31.800) },
|
||||
{ SIMDE_FLOAT16_VALUE(-18.200), SIMDE_FLOAT16_VALUE(-3.600), SIMDE_FLOAT16_VALUE(-1.400), SIMDE_FLOAT16_VALUE(5.820),
|
||||
SIMDE_FLOAT16_VALUE(12.700), SIMDE_FLOAT16_VALUE(-3.620), SIMDE_FLOAT16_VALUE(21.320), SIMDE_FLOAT16_VALUE(8.480) },
|
||||
{ SIMDE_FLOAT16_VALUE(62.800), SIMDE_FLOAT16_VALUE(27.900), SIMDE_FLOAT16_VALUE(30.100), SIMDE_FLOAT16_VALUE(-42.780),
|
||||
SIMDE_FLOAT16_VALUE(-9.800), SIMDE_FLOAT16_VALUE(44.980), SIMDE_FLOAT16_VALUE(-67.780), SIMDE_FLOAT16_VALUE(-59.920) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(3.3), SIMDE_FLOAT16_VALUE(-3.8), SIMDE_FLOAT16_VALUE(-0.1), SIMDE_FLOAT16_VALUE(-2.1),
|
||||
SIMDE_FLOAT16_VALUE(-1.9), SIMDE_FLOAT16_VALUE(9.2), SIMDE_FLOAT16_VALUE(5.5), SIMDE_FLOAT16_VALUE(-4.7) },
|
||||
{ SIMDE_FLOAT16_VALUE(2.6), SIMDE_FLOAT16_VALUE(-9.4), SIMDE_FLOAT16_VALUE(5.0), SIMDE_FLOAT16_VALUE(7.1),
|
||||
SIMDE_FLOAT16_VALUE(7.4), SIMDE_FLOAT16_VALUE(-4.0), SIMDE_FLOAT16_VALUE(1.2), SIMDE_FLOAT16_VALUE(2.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(0.3), SIMDE_FLOAT16_VALUE(9.3), SIMDE_FLOAT16_VALUE(7.4), SIMDE_FLOAT16_VALUE(4.7),
|
||||
SIMDE_FLOAT16_VALUE(-4.4), SIMDE_FLOAT16_VALUE(-9.4), SIMDE_FLOAT16_VALUE(6.4), SIMDE_FLOAT16_VALUE(-4.7) },
|
||||
{ SIMDE_FLOAT16_VALUE(4.080), SIMDE_FLOAT16_VALUE(-6.620), SIMDE_FLOAT16_VALUE(1.400), SIMDE_FLOAT16_VALUE(0.030),
|
||||
SIMDE_FLOAT16_VALUE(0.320), SIMDE_FLOAT16_VALUE(8.000), SIMDE_FLOAT16_VALUE(5.860), SIMDE_FLOAT16_VALUE(-4.040) },
|
||||
{ SIMDE_FLOAT16_VALUE(27.480), SIMDE_FLOAT16_VALUE(-91.220), SIMDE_FLOAT16_VALUE(46.400), SIMDE_FLOAT16_VALUE(63.930),
|
||||
SIMDE_FLOAT16_VALUE(66.920), SIMDE_FLOAT16_VALUE(-28.000), SIMDE_FLOAT16_VALUE(16.660), SIMDE_FLOAT16_VALUE(15.760) },
|
||||
{ SIMDE_FLOAT16_VALUE(22.540), SIMDE_FLOAT16_VALUE(-73.360), SIMDE_FLOAT16_VALUE(36.900), SIMDE_FLOAT16_VALUE(50.440),
|
||||
SIMDE_FLOAT16_VALUE(52.860), SIMDE_FLOAT16_VALUE(-20.400), SIMDE_FLOAT16_VALUE(14.380), SIMDE_FLOAT16_VALUE(11.580) },
|
||||
{ SIMDE_FLOAT16_VALUE(15.520), SIMDE_FLOAT16_VALUE(-47.980), SIMDE_FLOAT16_VALUE(23.400), SIMDE_FLOAT16_VALUE(31.270),
|
||||
SIMDE_FLOAT16_VALUE(32.880), SIMDE_FLOAT16_VALUE(-9.600), SIMDE_FLOAT16_VALUE(11.140), SIMDE_FLOAT16_VALUE(5.640) },
|
||||
{ SIMDE_FLOAT16_VALUE(-8.140), SIMDE_FLOAT16_VALUE(37.560), SIMDE_FLOAT16_VALUE(-22.100), SIMDE_FLOAT16_VALUE(-33.340),
|
||||
SIMDE_FLOAT16_VALUE(-34.460), SIMDE_FLOAT16_VALUE(26.800), SIMDE_FLOAT16_VALUE(0.220), SIMDE_FLOAT16_VALUE(-14.380) },
|
||||
{ SIMDE_FLOAT16_VALUE(-21.140), SIMDE_FLOAT16_VALUE(84.560), SIMDE_FLOAT16_VALUE(-47.100), SIMDE_FLOAT16_VALUE(-68.840),
|
||||
SIMDE_FLOAT16_VALUE(-71.460), SIMDE_FLOAT16_VALUE(46.800), SIMDE_FLOAT16_VALUE(-5.780), SIMDE_FLOAT16_VALUE(-25.380) },
|
||||
{ SIMDE_FLOAT16_VALUE(19.940), SIMDE_FLOAT16_VALUE(-63.960), SIMDE_FLOAT16_VALUE(31.900), SIMDE_FLOAT16_VALUE(43.340),
|
||||
SIMDE_FLOAT16_VALUE(45.460), SIMDE_FLOAT16_VALUE(-16.400), SIMDE_FLOAT16_VALUE(13.180), SIMDE_FLOAT16_VALUE(9.380) },
|
||||
{ SIMDE_FLOAT16_VALUE(-8.920), SIMDE_FLOAT16_VALUE(40.380), SIMDE_FLOAT16_VALUE(-23.600), SIMDE_FLOAT16_VALUE(-35.470),
|
||||
SIMDE_FLOAT16_VALUE(-36.680), SIMDE_FLOAT16_VALUE(28.000), SIMDE_FLOAT16_VALUE(-0.140), SIMDE_FLOAT16_VALUE(-15.040) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(2.9), SIMDE_FLOAT16_VALUE(8.9), SIMDE_FLOAT16_VALUE(8.8), SIMDE_FLOAT16_VALUE(-3.6),
|
||||
SIMDE_FLOAT16_VALUE(-0.3), SIMDE_FLOAT16_VALUE(1.9), SIMDE_FLOAT16_VALUE(-4.0), SIMDE_FLOAT16_VALUE(-3.6) },
|
||||
{ SIMDE_FLOAT16_VALUE(-5.7), SIMDE_FLOAT16_VALUE(8.3), SIMDE_FLOAT16_VALUE(-6.3), SIMDE_FLOAT16_VALUE(-5.6),
|
||||
SIMDE_FLOAT16_VALUE(-6.0), SIMDE_FLOAT16_VALUE(7.4), SIMDE_FLOAT16_VALUE(1.9), SIMDE_FLOAT16_VALUE(-5.9) },
|
||||
{ SIMDE_FLOAT16_VALUE(-3.9), SIMDE_FLOAT16_VALUE(3.9), SIMDE_FLOAT16_VALUE(8.7), SIMDE_FLOAT16_VALUE(2.4),
|
||||
SIMDE_FLOAT16_VALUE(-3.2), SIMDE_FLOAT16_VALUE(6.5), SIMDE_FLOAT16_VALUE(9.1), SIMDE_FLOAT16_VALUE(-9.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(25.130), SIMDE_FLOAT16_VALUE(-23.470), SIMDE_FLOAT16_VALUE(33.370), SIMDE_FLOAT16_VALUE(18.240),
|
||||
SIMDE_FLOAT16_VALUE(23.100), SIMDE_FLOAT16_VALUE(-26.960), SIMDE_FLOAT16_VALUE(-11.410), SIMDE_FLOAT16_VALUE(19.410) },
|
||||
{ SIMDE_FLOAT16_VALUE(-19.330), SIMDE_FLOAT16_VALUE(41.270), SIMDE_FLOAT16_VALUE(-15.770), SIMDE_FLOAT16_VALUE(-25.440),
|
||||
SIMDE_FLOAT16_VALUE(-23.700), SIMDE_FLOAT16_VALUE(30.760), SIMDE_FLOAT16_VALUE(3.410), SIMDE_FLOAT16_VALUE(-26.610) },
|
||||
{ SIMDE_FLOAT16_VALUE(-46.690), SIMDE_FLOAT16_VALUE(81.110), SIMDE_FLOAT16_VALUE(-46.010), SIMDE_FLOAT16_VALUE(-52.320),
|
||||
SIMDE_FLOAT16_VALUE(-52.500), SIMDE_FLOAT16_VALUE(66.280), SIMDE_FLOAT16_VALUE(12.530), SIMDE_FLOAT16_VALUE(-54.930) },
|
||||
{ SIMDE_FLOAT16_VALUE(-10.780), SIMDE_FLOAT16_VALUE(28.820), SIMDE_FLOAT16_VALUE(-6.320), SIMDE_FLOAT16_VALUE(-17.040),
|
||||
SIMDE_FLOAT16_VALUE(-14.700), SIMDE_FLOAT16_VALUE(19.660), SIMDE_FLOAT16_VALUE(0.560), SIMDE_FLOAT16_VALUE(-17.760) },
|
||||
{ SIMDE_FLOAT16_VALUE(21.140), SIMDE_FLOAT16_VALUE(-17.660), SIMDE_FLOAT16_VALUE(28.960), SIMDE_FLOAT16_VALUE(14.320),
|
||||
SIMDE_FLOAT16_VALUE(18.900), SIMDE_FLOAT16_VALUE(-21.780), SIMDE_FLOAT16_VALUE(-10.080), SIMDE_FLOAT16_VALUE(15.280) },
|
||||
{ SIMDE_FLOAT16_VALUE(-34.150), SIMDE_FLOAT16_VALUE(62.850), SIMDE_FLOAT16_VALUE(-32.150), SIMDE_FLOAT16_VALUE(-40.000),
|
||||
SIMDE_FLOAT16_VALUE(-39.300), SIMDE_FLOAT16_VALUE(50.000), SIMDE_FLOAT16_VALUE(8.350), SIMDE_FLOAT16_VALUE(-41.950) },
|
||||
{ SIMDE_FLOAT16_VALUE(-48.970), SIMDE_FLOAT16_VALUE(84.430), SIMDE_FLOAT16_VALUE(-48.530), SIMDE_FLOAT16_VALUE(-54.560),
|
||||
SIMDE_FLOAT16_VALUE(-54.900), SIMDE_FLOAT16_VALUE(69.240), SIMDE_FLOAT16_VALUE(13.290), SIMDE_FLOAT16_VALUE(-57.290) },
|
||||
{ SIMDE_FLOAT16_VALUE(54.770), SIMDE_FLOAT16_VALUE(-66.630), SIMDE_FLOAT16_VALUE(66.130), SIMDE_FLOAT16_VALUE(47.360),
|
||||
SIMDE_FLOAT16_VALUE(54.300), SIMDE_FLOAT16_VALUE(-65.440), SIMDE_FLOAT16_VALUE(-21.290), SIMDE_FLOAT16_VALUE(50.090) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(3.1), SIMDE_FLOAT16_VALUE(-8.0), SIMDE_FLOAT16_VALUE(-5.6), SIMDE_FLOAT16_VALUE(-2.4),
|
||||
SIMDE_FLOAT16_VALUE(-3.6), SIMDE_FLOAT16_VALUE(-2.7), SIMDE_FLOAT16_VALUE(-7.5), SIMDE_FLOAT16_VALUE(1.2) },
|
||||
{ SIMDE_FLOAT16_VALUE(9.7), SIMDE_FLOAT16_VALUE(-1.8), SIMDE_FLOAT16_VALUE(7.4), SIMDE_FLOAT16_VALUE(-0.5),
|
||||
SIMDE_FLOAT16_VALUE(1.4), SIMDE_FLOAT16_VALUE(-2.4), SIMDE_FLOAT16_VALUE(-6.1), SIMDE_FLOAT16_VALUE(3.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(7.4), SIMDE_FLOAT16_VALUE(-4.3), SIMDE_FLOAT16_VALUE(9.1), SIMDE_FLOAT16_VALUE(1.2),
|
||||
SIMDE_FLOAT16_VALUE(2.6), SIMDE_FLOAT16_VALUE(-1.0), SIMDE_FLOAT16_VALUE(-2.8), SIMDE_FLOAT16_VALUE(4.8) },
|
||||
{ SIMDE_FLOAT16_VALUE(74.880), SIMDE_FLOAT16_VALUE(-21.320), SIMDE_FLOAT16_VALUE(49.160), SIMDE_FLOAT16_VALUE(-6.100),
|
||||
SIMDE_FLOAT16_VALUE(6.760), SIMDE_FLOAT16_VALUE(-20.460), SIMDE_FLOAT16_VALUE(-52.640), SIMDE_FLOAT16_VALUE(25.620) },
|
||||
{ SIMDE_FLOAT16_VALUE(-38.610), SIMDE_FLOAT16_VALUE(-0.260), SIMDE_FLOAT16_VALUE(-37.420), SIMDE_FLOAT16_VALUE(-0.250),
|
||||
SIMDE_FLOAT16_VALUE(-9.620), SIMDE_FLOAT16_VALUE(7.620), SIMDE_FLOAT16_VALUE(18.730), SIMDE_FLOAT16_VALUE(-12.990) },
|
||||
{ SIMDE_FLOAT16_VALUE(91.370), SIMDE_FLOAT16_VALUE(-24.380), SIMDE_FLOAT16_VALUE(61.740), SIMDE_FLOAT16_VALUE(-6.950),
|
||||
SIMDE_FLOAT16_VALUE(9.140), SIMDE_FLOAT16_VALUE(-24.540), SIMDE_FLOAT16_VALUE(-63.010), SIMDE_FLOAT16_VALUE(31.230) },
|
||||
{ SIMDE_FLOAT16_VALUE(14.740), SIMDE_FLOAT16_VALUE(-10.160), SIMDE_FLOAT16_VALUE(3.280), SIMDE_FLOAT16_VALUE(-3.000),
|
||||
SIMDE_FLOAT16_VALUE(-1.920), SIMDE_FLOAT16_VALUE(-5.580), SIMDE_FLOAT16_VALUE(-14.820), SIMDE_FLOAT16_VALUE(5.160) },
|
||||
{ SIMDE_FLOAT16_VALUE(28.320), SIMDE_FLOAT16_VALUE(-12.680), SIMDE_FLOAT16_VALUE(13.640), SIMDE_FLOAT16_VALUE(-3.700),
|
||||
SIMDE_FLOAT16_VALUE(0.040), SIMDE_FLOAT16_VALUE(-8.940), SIMDE_FLOAT16_VALUE(-23.360), SIMDE_FLOAT16_VALUE(9.780) },
|
||||
{ SIMDE_FLOAT16_VALUE(-6.600), SIMDE_FLOAT16_VALUE(-6.200), SIMDE_FLOAT16_VALUE(-13.000), SIMDE_FLOAT16_VALUE(-1.900),
|
||||
SIMDE_FLOAT16_VALUE(-5.000), SIMDE_FLOAT16_VALUE(-0.300), SIMDE_FLOAT16_VALUE(-1.400), SIMDE_FLOAT16_VALUE(-2.100) },
|
||||
{ SIMDE_FLOAT16_VALUE(-24.060), SIMDE_FLOAT16_VALUE(-2.960), SIMDE_FLOAT16_VALUE(-26.320), SIMDE_FLOAT16_VALUE(-1.000),
|
||||
SIMDE_FLOAT16_VALUE(-7.520), SIMDE_FLOAT16_VALUE(4.020), SIMDE_FLOAT16_VALUE(9.580), SIMDE_FLOAT16_VALUE(-8.040) },
|
||||
{ SIMDE_FLOAT16_VALUE(49.660), SIMDE_FLOAT16_VALUE(-16.640), SIMDE_FLOAT16_VALUE(29.920), SIMDE_FLOAT16_VALUE(-4.800),
|
||||
SIMDE_FLOAT16_VALUE(3.120), SIMDE_FLOAT16_VALUE(-14.220), SIMDE_FLOAT16_VALUE(-36.780), SIMDE_FLOAT16_VALUE(17.040) } },
|
||||
{ { SIMDE_FLOAT16_VALUE(5.2), SIMDE_FLOAT16_VALUE(-1.0), SIMDE_FLOAT16_VALUE(4.9), SIMDE_FLOAT16_VALUE(5.0),
|
||||
SIMDE_FLOAT16_VALUE(-8.1), SIMDE_FLOAT16_VALUE(-2.2), SIMDE_FLOAT16_VALUE(8.4), SIMDE_FLOAT16_VALUE(-8.1) },
|
||||
{ SIMDE_FLOAT16_VALUE(9.2), SIMDE_FLOAT16_VALUE(-1.5), SIMDE_FLOAT16_VALUE(-8.3), SIMDE_FLOAT16_VALUE(-1.5),
|
||||
SIMDE_FLOAT16_VALUE(1.9), SIMDE_FLOAT16_VALUE(-6.1), SIMDE_FLOAT16_VALUE(-6.7), SIMDE_FLOAT16_VALUE(8.9) },
|
||||
{ SIMDE_FLOAT16_VALUE(5.6), SIMDE_FLOAT16_VALUE(-6.1), SIMDE_FLOAT16_VALUE(8.5), SIMDE_FLOAT16_VALUE(-5.9),
|
||||
SIMDE_FLOAT16_VALUE(7.1), SIMDE_FLOAT16_VALUE(-1.0), SIMDE_FLOAT16_VALUE(-4.0), SIMDE_FLOAT16_VALUE(3.3) },
|
||||
{ SIMDE_FLOAT16_VALUE(56.720), SIMDE_FLOAT16_VALUE(-9.400), SIMDE_FLOAT16_VALUE(-41.580), SIMDE_FLOAT16_VALUE(-3.400),
|
||||
SIMDE_FLOAT16_VALUE(2.540), SIMDE_FLOAT16_VALUE(-36.360), SIMDE_FLOAT16_VALUE(-29.120), SIMDE_FLOAT16_VALUE(41.740) },
|
||||
{ SIMDE_FLOAT16_VALUE(-50.920), SIMDE_FLOAT16_VALUE(8.150), SIMDE_FLOAT16_VALUE(55.530), SIMDE_FLOAT16_VALUE(14.150),
|
||||
SIMDE_FLOAT16_VALUE(-19.690), SIMDE_FLOAT16_VALUE(35.010), SIMDE_FLOAT16_VALUE(49.270), SIMDE_FLOAT16_VALUE(-62.390) },
|
||||
{ SIMDE_FLOAT16_VALUE(83.400), SIMDE_FLOAT16_VALUE(-13.750), SIMDE_FLOAT16_VALUE(-65.650), SIMDE_FLOAT16_VALUE(-7.750),
|
||||
SIMDE_FLOAT16_VALUE(8.050), SIMDE_FLOAT16_VALUE(-54.050), SIMDE_FLOAT16_VALUE(-48.550), SIMDE_FLOAT16_VALUE(67.550) },
|
||||
{ SIMDE_FLOAT16_VALUE(-49.080), SIMDE_FLOAT16_VALUE(7.850), SIMDE_FLOAT16_VALUE(53.870), SIMDE_FLOAT16_VALUE(13.850),
|
||||
SIMDE_FLOAT16_VALUE(-19.310), SIMDE_FLOAT16_VALUE(33.790), SIMDE_FLOAT16_VALUE(47.930), SIMDE_FLOAT16_VALUE(-60.610) },
|
||||
{ SIMDE_FLOAT16_VALUE(70.520), SIMDE_FLOAT16_VALUE(-11.650), SIMDE_FLOAT16_VALUE(-54.030), SIMDE_FLOAT16_VALUE(-5.650),
|
||||
SIMDE_FLOAT16_VALUE(5.390), SIMDE_FLOAT16_VALUE(-45.510), SIMDE_FLOAT16_VALUE(-39.170), SIMDE_FLOAT16_VALUE(55.090) },
|
||||
{ SIMDE_FLOAT16_VALUE(-4.000), SIMDE_FLOAT16_VALUE(0.500), SIMDE_FLOAT16_VALUE(13.200), SIMDE_FLOAT16_VALUE(6.500),
|
||||
SIMDE_FLOAT16_VALUE(-10.000), SIMDE_FLOAT16_VALUE(3.900), SIMDE_FLOAT16_VALUE(15.100), SIMDE_FLOAT16_VALUE(-17.000) },
|
||||
{ SIMDE_FLOAT16_VALUE(-31.600), SIMDE_FLOAT16_VALUE(5.000), SIMDE_FLOAT16_VALUE(38.100), SIMDE_FLOAT16_VALUE(11.000),
|
||||
SIMDE_FLOAT16_VALUE(-15.700), SIMDE_FLOAT16_VALUE(22.200), SIMDE_FLOAT16_VALUE(35.200), SIMDE_FLOAT16_VALUE(-43.700) },
|
||||
{ SIMDE_FLOAT16_VALUE(35.560), SIMDE_FLOAT16_VALUE(-5.950), SIMDE_FLOAT16_VALUE(-22.490), SIMDE_FLOAT16_VALUE(0.050),
|
||||
SIMDE_FLOAT16_VALUE(-1.830), SIMDE_FLOAT16_VALUE(-22.330), SIMDE_FLOAT16_VALUE(-13.710), SIMDE_FLOAT16_VALUE(21.270) } },
|
||||
};
|
||||
|
||||
for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
|
||||
simde_float16x8_t v = simde_vld1q_f16(test_vec[i].v);
|
||||
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 r0 = simde_vfmaq_laneq_f16(a, b, v, 0);
|
||||
simde_float16x8_t r1 = simde_vfmaq_laneq_f16(a, b, v, 1);
|
||||
simde_float16x8_t r2 = simde_vfmaq_laneq_f16(a, b, v, 2);
|
||||
simde_float16x8_t r3 = simde_vfmaq_laneq_f16(a, b, v, 3);
|
||||
simde_float16x8_t r4 = simde_vfmaq_laneq_f16(a, b, v, 4);
|
||||
simde_float16x8_t r5 = simde_vfmaq_laneq_f16(a, b, v, 5);
|
||||
simde_float16x8_t r6 = simde_vfmaq_laneq_f16(a, b, v, 6);
|
||||
simde_float16x8_t r7 = simde_vfmaq_laneq_f16(a, b, v, 7);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r0, simde_vld1q_f16(test_vec[i].r0), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r1, simde_vld1q_f16(test_vec[i].r1), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r2, simde_vld1q_f16(test_vec[i].r2), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r3, simde_vld1q_f16(test_vec[i].r3), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r4, simde_vld1q_f16(test_vec[i].r4), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r5, simde_vld1q_f16(test_vec[i].r5), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r6, simde_vld1q_f16(test_vec[i].r6), 1);
|
||||
simde_test_arm_neon_assert_equal_f16x8(r7, simde_vld1q_f16(test_vec[i].r7), 1);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
test_simde_vfmaq_laneq_f32 (SIMDE_MUNIT_TEST_ARGS) {
|
||||
#if 1
|
||||
|
|
@ -1023,15 +1601,22 @@ SIMDE_TEST_FUNC_LIST_ENTRY(vfmad_laneq_f64)
|
|||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmas_lane_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmas_laneq_f32)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmah_lane_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmah_laneq_f16)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfma_lane_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfma_lane_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfma_lane_f64)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfma_laneq_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfma_laneq_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfma_laneq_f64)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmaq_lane_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmaq_lane_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmaq_lane_f64)
|
||||
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmaq_laneq_f16)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmaq_laneq_f32)
|
||||
SIMDE_TEST_FUNC_LIST_ENTRY(vfmaq_laneq_f64)
|
||||
SIMDE_TEST_FUNC_LIST_END
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue