On 7 March 2015 at 18:00, Matt Turner <matts...@gmail.com> wrote: > On Sat, Mar 7, 2015 at 9:54 AM, Emil Velikov <emil.l.veli...@gmail.com> wrote: >> On 27 February 2015 at 19:34, Matt Turner <matts...@gmail.com> wrote: >>> For some given GLSL IR like (+ (neg x) (* 1.2 x)), the try_emit_mad >>> function would see that one of the +'s sources was a negate expression >>> and set mul_negate = true without confirming that it was actually a >>> multiply. >>> >> Hi Matt, >> >> This commit does not pick cleanly due to with commit >> 8cfd1e2ac6b(i965/fs: Emit MAD instructions when possible.) and >> 3654b6d43ce(i965/fs: Emit MADs from (x + abs(y * z)).) > > Those commits are why this one is needed. I think the problem is that > the i965/vec4 versions of those commits aren't on 10.5, so you can > simply drop the changes to i965_vec4_visitor.cpp from this patch for > 10.5.
Thank you Matt. The vec4 changes were during 10.6-devel, thus dropping leaves the following trivial conflict. I'll give the branch a quick piglit test and push it. -Emil --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@@ -452,15 -449,13 +447,18 @@@ fs_visitor::try_emit_mad(ir_expression mul_negate = true; } - if (!mul || mul->operation != ir_binop_mul) - return false; + if (mul && mul->operation == ir_binop_mul) + break; } + if (!mul || mul->operation != ir_binop_mul) + return false; + + if (nonmul->as_constant() || + mul->operands[0]->as_constant() || + mul->operands[1]->as_constant()) + return false; + nonmul->accept(this); fs_reg src0 = this->result; _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev