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:
Gert Wollny 2022-04-24 13:24:44 +02:00 committed by Marge Bot
parent e9797b648a
commit 6cb510156e
3 changed files with 4 additions and 18 deletions

View file

@ -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

View file

@ -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

View file

@ -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;
}