diff options
author | marha <marha@users.sourceforge.net> | 2015-03-22 14:10:47 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2015-03-22 14:10:47 +0100 |
commit | 3bc24b271f45f9f33484b8cf53b44f33f7e8a237 (patch) | |
tree | 193651a94adb3804e800747e993d07b92688e4d4 /mesalib/src/glsl/opt_algebraic.cpp | |
parent | c646056120fe14e4c4ccf81bac5d78d61225a8e8 (diff) | |
parent | 82c8df11062f72a7d467e26cedbbd8b322ff7a70 (diff) | |
download | vcxsrv-3bc24b271f45f9f33484b8cf53b44f33f7e8a237.tar.gz vcxsrv-3bc24b271f45f9f33484b8cf53b44f33f7e8a237.tar.bz2 vcxsrv-3bc24b271f45f9f33484b8cf53b44f33f7e8a237.zip |
Merge remote-tracking branch 'origin/released'
Conflicts:
mesalib/src/mapi/glapi/glapi.h
mesalib/src/mapi/glapi/glapi_nop.c
mesalib/src/mesa/main/bufferobj.c
Diffstat (limited to 'mesalib/src/glsl/opt_algebraic.cpp')
-rw-r--r-- | mesalib/src/glsl/opt_algebraic.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/mesalib/src/glsl/opt_algebraic.cpp b/mesalib/src/glsl/opt_algebraic.cpp index c6040bff8..69c03ea8b 100644 --- a/mesalib/src/glsl/opt_algebraic.cpp +++ b/mesalib/src/glsl/opt_algebraic.cpp @@ -626,9 +626,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; |