[util] Fix more ULP issues in the simd tests on arm

This time for debug (unoptimized) builds. While I could just do an
approximate check, I think it's better to document (as such) the
expected errors.
This commit is contained in:
Bill Currie 2023-03-28 12:43:05 +09:00
parent c3558091ac
commit 53ae2fe223

View file

@ -193,7 +193,9 @@ static vec4d_test_t vec4d_tests[] = {
// used): ulp errors in z and w // used): ulp errors in z and w
T(crossd, qtest, qtest, {0, 0, 0, 0}, T(crossd, qtest, qtest, {0, 0, 0, 0},
#if defined(__aarch64__) #if defined(__aarch64__)
# ifdef __OPTIMIZE__
{0, 0, -2.1938006966593093e-17, 1.3322676295501878e-17}, {0, 0, -2.1938006966593093e-17, 1.3322676295501878e-17},
# endif
#endif #endif
), ),
@ -219,7 +221,9 @@ static vec4d_test_t vec4d_tests[] = {
// used): ulp error in z // used): ulp error in z
T(qmuld, qtest, qtest, {0.768, 0.576, 0, -0.28}, T(qmuld, qtest, qtest, {0.768, 0.576, 0, -0.28},
#if defined(__aarch64__) #if defined(__aarch64__)
# ifdef __OPTIMIZE__
{0, 0, -2.1938006966593093e-17, 0}, {0, 0, -2.1938006966593093e-17, 0},
# endif
#endif #endif
), ),
@ -325,15 +329,19 @@ static vec4f_test_t vec4f_tests[] = {
T(crossf, one, forward, {-1, 0, 1} ), T(crossf, one, forward, {-1, 0, 1} ),
T(crossf, one, up, { 1, -1, 0} ), T(crossf, one, up, { 1, -1, 0} ),
#ifdef __aarch64__ #ifdef __aarch64__
# ifdef __OPTIMIZE__
T(crossf, qtest, qtest, {0, 0, -1.47819534e-09, -1.43051153e-08} ), T(crossf, qtest, qtest, {0, 0, -1.47819534e-09, -1.43051153e-08} ),
# else
T(crossf, qtest, qtest, {0, 0, 0, 0} ),
# endif
#else #else
#if !defined(__SSE__) && !defined(__OPTIMIZE__) # if !defined(__SSE__) && !defined(__OPTIMIZE__)
// when not optimizing and SSE is not available (but ok when // when not optimizing and SSE is not available (but ok when
// optimizing) // optimizing)
T(crossf, qtest, qtest, {0, 0, -1.47819534e-09, 0} ), T(crossf, qtest, qtest, {0, 0, -1.47819534e-09, 0} ),
#else # else
T(crossf, qtest, qtest, {0, 0, 0, 0} ), T(crossf, qtest, qtest, {0, 0, 0, 0} ),
#endif # endif
#endif #endif
T(qmulf, qident, qident, qident ), T(qmulf, qident, qident, qident ),
@ -356,15 +364,19 @@ static vec4f_test_t vec4f_tests[] = {
T(qmulf, one, { 2, 2, 2, -2 }, { 0, 0, 0, -8 } ), T(qmulf, one, { 2, 2, 2, -2 }, { 0, 0, 0, -8 } ),
T(qmulf, qtest, qtest, {0.768, 0.576, 0, -0.28}, T(qmulf, qtest, qtest, {0.768, 0.576, 0, -0.28},
#ifdef __aarch64__ #ifdef __aarch64__
# ifdef __OPTIMIZE__
{0, 6e-8, -1.47819534e-09, 2.98023224e-08} {0, 6e-8, -1.47819534e-09, 2.98023224e-08}
# else
{0, 5.96046448e-08, 0, 2.98023224e-08}
# endif
#else #else
#if !defined(__SSE__) && !defined(__OPTIMIZE__) # if !defined(__SSE__) && !defined(__OPTIMIZE__)
// when not optimizing and SSE is not available (but ok when // when not optimizing and SSE is not available (but ok when
// optimizing) // optimizing)
{0, 6e-8, -1.47819534e-09, 3e-8} {0, 6e-8, -1.47819534e-09, 3e-8}
#elif !defined(__SSE__) # elif !defined(__SSE__)
{0, 6e-8, 0, 6e-8} {0, 6e-8, 0, 6e-8}
#else # else
{0, 6e-8, 0, 3e-8} {0, 6e-8, 0, 3e-8}
#endif #endif
#endif #endif