llvmpipe/tests: update arith test to check for edge cases

Test infs, zeros and nans with our arith functions to assure
correct/defined behavior with those values.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
Zack Rusin 2013-07-18 03:33:22 -04:00
parent f7c06785d0
commit f59cb67376
1 changed files with 19 additions and 9 deletions

View File

@ -108,6 +108,7 @@ static float sgnf(float x)
const float exp2_values[] = { const float exp2_values[] = {
-INFINITY,
-60, -60,
-4, -4,
-2, -2,
@ -122,7 +123,9 @@ const float exp2_values[] = {
1, 1,
2, 2,
4, 4,
60 60,
INFINITY,
NAN
}; };
@ -134,6 +137,8 @@ const float log2_values[] = {
*/ */
1.4012984643248171e-45, 1.4012984643248171e-45,
#endif #endif
-INFINITY,
0,
1e-007, 1e-007,
0.1, 0.1,
0.5, 0.5,
@ -146,7 +151,9 @@ const float log2_values[] = {
2, 2,
4, 4,
100000, 100000,
1e+018 1e+018,
INFINITY,
NAN
}; };
@ -190,6 +197,7 @@ const float rsqrt_values[] = {
const float sincos_values[] = { const float sincos_values[] = {
-INFINITY,
-5*M_PI/4, -5*M_PI/4,
-4*M_PI/4, -4*M_PI/4,
-4*M_PI/4, -4*M_PI/4,
@ -201,6 +209,8 @@ const float sincos_values[] = {
3*M_PI/4, 3*M_PI/4,
4*M_PI/4, 4*M_PI/4,
5*M_PI/4, 5*M_PI/4,
INFINITY,
NAN
}; };
const float round_values[] = { const float round_values[] = {
@ -263,9 +273,9 @@ static const struct unary_test_t
unary_tests[] = { unary_tests[] = {
{"neg", &lp_build_negate, &negf, exp2_values, Elements(exp2_values), 20.0 }, {"neg", &lp_build_negate, &negf, exp2_values, Elements(exp2_values), 20.0 },
{"exp2", &lp_build_exp2, &exp2f, exp2_values, Elements(exp2_values), 20.0 }, {"exp2", &lp_build_exp2, &exp2f, exp2_values, Elements(exp2_values), 20.0 },
{"log2", &lp_build_log2, &log2f, log2_values, Elements(log2_values), 20.0 }, {"log2", &lp_build_log2_safe, &log2f, log2_values, Elements(log2_values), 20.0 },
{"exp", &lp_build_exp, &expf, exp2_values, Elements(exp2_values), 18.0 }, {"exp", &lp_build_exp, &expf, exp2_values, Elements(exp2_values), 18.0 },
{"log", &lp_build_log, &logf, log2_values, Elements(log2_values), 20.0 }, {"log", &lp_build_log_safe, &logf, log2_values, Elements(log2_values), 20.0 },
{"rcp", &lp_build_rcp, &rcpf, rcp_values, Elements(rcp_values), 20.0 }, {"rcp", &lp_build_rcp, &rcpf, rcp_values, Elements(rcp_values), 20.0 },
{"rsqrt", &lp_build_rsqrt, &rsqrtf, rsqrt_values, Elements(rsqrt_values), 20.0 }, {"rsqrt", &lp_build_rsqrt, &rsqrtf, rsqrt_values, Elements(rsqrt_values), 20.0 },
{"sin", &lp_build_sin, &sinf, sincos_values, Elements(sincos_values), 20.0 }, {"sin", &lp_build_sin, &sinf, sincos_values, Elements(sincos_values), 20.0 },