mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 22:00:13 +01:00
llvmpipe: Specify lp_test_arit's target precision per function.
This commit is contained in:
parent
fc79c4fbd4
commit
b5941e33d0
1 changed files with 16 additions and 10 deletions
|
|
@ -80,6 +80,11 @@ struct unary_test_t
|
||||||
*/
|
*/
|
||||||
const float *values;
|
const float *values;
|
||||||
unsigned num_values;
|
unsigned num_values;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Required precision in bits.
|
||||||
|
*/
|
||||||
|
double precision;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -167,15 +172,16 @@ const float sincos_values[] = {
|
||||||
* Unary test cases.
|
* Unary test cases.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static const struct unary_test_t unary_tests[] = {
|
static const struct unary_test_t
|
||||||
{"neg", &lp_build_negate, &negf, exp2_values, Elements(exp2_values)},
|
unary_tests[] = {
|
||||||
{"exp2", &lp_build_exp2, &exp2f, exp2_values, Elements(exp2_values)},
|
{"neg", &lp_build_negate, &negf, exp2_values, Elements(exp2_values), 20.0 },
|
||||||
{"log2", &lp_build_log2, &log2f, log2_values, Elements(log2_values)},
|
{"exp2", &lp_build_exp2, &exp2f, exp2_values, Elements(exp2_values), 20.0 },
|
||||||
{"exp", &lp_build_exp, &expf, exp2_values, Elements(exp2_values)},
|
{"log2", &lp_build_log2, &log2f, log2_values, Elements(log2_values), 10.0 }, // FIXME
|
||||||
{"log", &lp_build_log, &logf, log2_values, Elements(log2_values)},
|
{"exp", &lp_build_exp, &expf, exp2_values, Elements(exp2_values), 18.0 },
|
||||||
{"rsqrt", &lp_build_rsqrt, &rsqrtf, rsqrt_values, Elements(rsqrt_values)},
|
{"log", &lp_build_log, &logf, log2_values, Elements(log2_values), 10.0 }, // FIXME
|
||||||
{"sin", &lp_build_sin, &sinf, sincos_values, Elements(sincos_values)},
|
{"rsqrt", &lp_build_rsqrt, &rsqrtf, rsqrt_values, Elements(rsqrt_values), 20.0 },
|
||||||
{"cos", &lp_build_cos, &cosf, sincos_values, Elements(sincos_values)},
|
{"sin", &lp_build_sin, &sinf, sincos_values, Elements(sincos_values), 20.0 },
|
||||||
|
{"cos", &lp_build_cos, &cosf, sincos_values, Elements(sincos_values), 20.0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -254,7 +260,7 @@ test_unary(struct gallivm_state *gallivm, unsigned verbose, FILE *fp, const stru
|
||||||
double error = fabs(src - ref);
|
double error = fabs(src - ref);
|
||||||
double precision = error ? -log2(error/fabs(ref)) : FLT_MANT_DIG;
|
double precision = error ? -log2(error/fabs(ref)) : FLT_MANT_DIG;
|
||||||
|
|
||||||
bool pass = precision >= 20.0;
|
bool pass = precision >= test->precision;
|
||||||
|
|
||||||
if (isnan(ref)) {
|
if (isnan(ref)) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue