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