Module: Mesa Branch: 10.4 Commit: b2e243f70c5395c1002bcc6104b060b05584adbc URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b2e243f70c5395c1002bcc6104b060b05584adbc
Author: Samuel Iglesias Gonsalvez <sigles...@igalia.com> Date: Tue Feb 24 19:02:57 2015 +0100 glsl: optimize (0 cmp x + y) into (-x cmp y). The optimization done by commit 34ec1a24d did not take it into account. Fixes: dEQP-GLES3.functional.shaders.random.all_features.fragment.20 Signed-off-by: Samuel Iglesias Gonsalvez <sigles...@igalia.com> Reviewed-by: Ian Romanick <ian.d.roman...@intel.com> Reviewed-by: Matt Turner <matts...@gmail.com> Cc: "10.4 10.5" <mesa-sta...@lists.freedesktop.org> (cherry picked from commit b43bbfa90ace596c8b2e0b3954a5f69924726c59) --- src/glsl/opt_algebraic.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp index 87bb875..e94e072 100644 --- a/src/glsl/opt_algebraic.cpp +++ b/src/glsl/opt_algebraic.cpp @@ -578,9 +578,18 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) if (!is_vec_zero(zero)) continue; - return new(mem_ctx) ir_expression(ir->operation, - add->operands[0], - neg(add->operands[1])); + /* Depending of the zero position we want to optimize + * (0 cmp x+y) into (-x cmp y) or (x+y cmp 0) into (x cmp -y) + */ + if (add_pos == 1) { + return new(mem_ctx) ir_expression(ir->operation, + neg(add->operands[0]), + add->operands[1]); + } else { + return new(mem_ctx) ir_expression(ir->operation, + add->operands[0], + neg(add->operands[1])); + } } break; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit