mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 20:28:04 +02:00
r600/sb: Don't optimize float GT and GE
Sine NAN's can be involved the result can't be deducted like this.
Also with NTT inplace now we can assume that most possible
arithmetic optimizations have already been applied.
Piglit: spec@glsl-1.30@execution@range_analysis_fsat_of_nan
Fixes: a4840e15ab
r600: Use nir-to-tgsi instead of TGSI when the NIR debug opt is disabled.
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16130>
This commit is contained in:
parent
e9797b648a
commit
6cb510156e
3 changed files with 4 additions and 18 deletions
|
|
@ -384,7 +384,6 @@ shaders@glsl-max-varyings >max_varying_components,Fail
|
|||
|
||||
spec@!opengl 1.0@gl-1.0-dlist-bitmap,Fail
|
||||
spec@!opengl 1.0@gl-1.0-no-op-paths,Fail
|
||||
spec@!opengl 1.0@gl-1.0-spot-light,Fail
|
||||
spec@!opengl 1.0@gl-1.0-swapbuffers-behavior,Fail
|
||||
spec@!opengl 1.0@gl-1.0-user-clip-all-planes,Fail
|
||||
|
||||
|
|
|
|||
|
|
@ -1497,7 +1497,6 @@ spec@oes_shader_io_blocks@compiler@layout-location-aliasing.vert,Fail
|
|||
|
||||
spec@!opengl 1.0@gl-1.0-dlist-bitmap,Fail
|
||||
spec@!opengl 1.0@gl-1.0-no-op-paths,Fail
|
||||
spec@!opengl 1.0@gl-1.0-spot-light,Fail
|
||||
spec@!opengl 1.0@gl-1.0-user-clip-all-planes,Fail
|
||||
spec@!opengl 1.1@linestipple,Fail
|
||||
spec@!opengl 1.1@linestipple@Factor 2x,Fail
|
||||
|
|
|
|||
|
|
@ -221,18 +221,12 @@ bool expr_handler::fold_setcc(alu_node &n) {
|
|||
} else if (isc1) {
|
||||
if (cmp_type == AF_FLOAT_CMP) {
|
||||
if (n.bc.src[0].abs && !n.bc.src[0].neg) {
|
||||
if (cv1.f < 0.0f && (cc == AF_CC_GT || cc == AF_CC_NE)) {
|
||||
cond_result = true;
|
||||
have_result = true;
|
||||
} else if (cv1.f <= 0.0f && cc == AF_CC_GE) {
|
||||
if (cv1.f < 0.0f && cc == AF_CC_NE) {
|
||||
cond_result = true;
|
||||
have_result = true;
|
||||
}
|
||||
} else if (n.bc.src[0].abs && n.bc.src[0].neg) {
|
||||
if (cv1.f > 0.0f && (cc == AF_CC_GE || cc == AF_CC_E)) {
|
||||
cond_result = false;
|
||||
have_result = true;
|
||||
} else if (cv1.f >= 0.0f && cc == AF_CC_GT) {
|
||||
if (cv1.f > 0.0f && cc == AF_CC_E) {
|
||||
cond_result = false;
|
||||
have_result = true;
|
||||
}
|
||||
|
|
@ -244,18 +238,12 @@ bool expr_handler::fold_setcc(alu_node &n) {
|
|||
} else if (isc0) {
|
||||
if (cmp_type == AF_FLOAT_CMP) {
|
||||
if (n.bc.src[1].abs && !n.bc.src[1].neg) {
|
||||
if (cv0.f <= 0.0f && cc == AF_CC_GT) {
|
||||
cond_result = false;
|
||||
have_result = true;
|
||||
} else if (cv0.f < 0.0f && (cc == AF_CC_GE || cc == AF_CC_E)) {
|
||||
if (cv0.f < 0.0f && (cc == AF_CC_E)) {
|
||||
cond_result = false;
|
||||
have_result = true;
|
||||
}
|
||||
} else if (n.bc.src[1].abs && n.bc.src[1].neg) {
|
||||
if (cv0.f >= 0.0f && cc == AF_CC_GE) {
|
||||
cond_result = true;
|
||||
have_result = true;
|
||||
} else if (cv0.f > 0.0f && (cc == AF_CC_GT || cc == AF_CC_NE)) {
|
||||
if (cv0.f > 0.0f && cc == AF_CC_NE) {
|
||||
cond_result = true;
|
||||
have_result = true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue