11. juli 2014 01:02 skrev "Jordan Justen" <jljus...@gmail.com> følgende: > > On Thu, Jul 10, 2014 at 2:24 PM, <thomashellan...@gmail.com> wrote: > > From: Thomas Helland <thomashellan...@gmail.com> > > > > Let's cut the needless A && B here. > > Gives some effect on a clean shader-db with > > some extra shaders from TF2 and portal. > > > > helped: shaders/tf2/2042.shader_test fs16: 23 -> 21 > > (-8.70%) > > helped: shaders/tf2/2042.shader_test fs8: 23 -> 21 > > (-8.70%) > > helped: shaders/tf2/4624.shader_test fs16: 21 -> 19 > > (-9.52%) > > helped: shaders/tf2/4624.shader_test fs8: 21 -> 19 > > (-9.52%) > > helped: shaders/tf2/763.shader_test fs16: 23 -> 21 > > (-8.70%) > > helped: shaders/tf2/763.shader_test fs8: 23 -> 21 > > (-8.70%) > > > > HURT: shaders/orbital_explorer.shader_test vs: 1049 -> 1052 > > (0.29%) > > > > total instructions in shared programs: 758979 -> 758970 (-0.00%) > > instructions in affected programs: 1183 -> 1174 (-0.76%) > > GAINED: 0 > > LOST: 0 > > > > Signed-off-by: Thomas Helland <thomashellan...@gmail.com> > > --- > > src/glsl/opt_algebraic.cpp | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/src/glsl/opt_algebraic.cpp b/src/glsl/opt_algebraic.cpp > > index ac7514a..8f3a505 100644 > > --- a/src/glsl/opt_algebraic.cpp > > +++ b/src/glsl/opt_algebraic.cpp > > @@ -588,6 +588,16 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) > > } else if (ir->operands[0]->equals(ir->operands[1])) { > > /* (a || a) == a */ > > return ir->operands[0]; > > + } else if (op_expr[0] && op_expr[0]->operation == ir_binop_logic_and && > > + (op_expr[0]->operands[0]->equals(op_expr[1]) || > > + op_expr[0]->operands[1]->equals(op_expr[1]))) { > > + /* A || (A && B) or A || (B && A) */ > > + return ir->operands[0]; > > Isn't this returning the 'and expr' rather than 'A'? > > Are the comments swapped too? > > -Jordan >
Oh, too much coffee I guess. You are of course doubly correct. Thanks for spotting that! I'll put up a new version soon. -Thomas > > + } else if (op_expr[1] && op_expr[1]->operation == ir_binop_logic_and && > > + (op_expr[1]->operands[0]->equals(op_expr[0]) || > > + op_expr[1]->operands[1]->equals(op_expr[0]))) { > > + /* (A && B) || A or (B && A) || A */ > > > > + return ir->operands[1]; > > } > > break; > > > > -- > > 2.0.0 > > > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev