mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-01 01:00:10 +01:00
gallivm: Fixed erroneous optimisation in lp_build_min/max.
Previously assumed normalised was 0 to 1, but it can be -1 to 1 if type is signed. Tested with lp_test_conv and lp_test_format, reduced errors. Signed-off-by: José Fonseca <jfonseca@vmware.com>
This commit is contained in:
parent
fdeb0394cb
commit
a3d4af0c00
1 changed files with 14 additions and 7 deletions
|
|
@ -763,9 +763,12 @@ lp_build_min(struct lp_build_context *bld,
|
|||
if(a == b)
|
||||
return a;
|
||||
|
||||
if(bld->type.norm) {
|
||||
if(a == bld->zero || b == bld->zero)
|
||||
return bld->zero;
|
||||
if (bld->type.norm) {
|
||||
if (!bld->type.sign) {
|
||||
if (a == bld->zero || b == bld->zero) {
|
||||
return bld->zero;
|
||||
}
|
||||
}
|
||||
if(a == bld->one)
|
||||
return b;
|
||||
if(b == bld->one)
|
||||
|
|
@ -797,10 +800,14 @@ lp_build_max(struct lp_build_context *bld,
|
|||
if(bld->type.norm) {
|
||||
if(a == bld->one || b == bld->one)
|
||||
return bld->one;
|
||||
if(a == bld->zero)
|
||||
return b;
|
||||
if(b == bld->zero)
|
||||
return a;
|
||||
if (!bld->type.sign) {
|
||||
if (a == bld->zero) {
|
||||
return b;
|
||||
}
|
||||
if (b == bld->zero) {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return lp_build_max_simple(bld, a, b);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue