While working on related issue, found out that previous patch (and original version) were applying incorrectly opt_vector_float in some cases.
Specifically, for this piece of code: cmp.nz.f0.0 null:F, vgrf6.xyzz:F, vgrf17.xyzz:F mov vgrf2.0.x:D, 0D (+f0.0.any4h) mov vgrf2.0.x:D, -1D mov vgrf2.0.yzw:D, 0D opt_vector_float was generating: cmp.nz.f0.0 null:F, vgrf6.xyzz:F, vgrf17.xyzz:F (+f0.0.any4h) mov vgrf2.0.x:D, -1D mov vgrf2.0:F, [0F, 0F, 0F, 0F] cmp.nz.f0.0 null:D, vgrf2.xyzw:D, 0D As can be notice, in the former code vgrf2.x could be 0 or -1, depending on the predicate, while in the result it is always 0. Problem is that when applying the optimization, it was ignoring the predicate. The next patch updates the previous version to fix this problem. *** BLURB HERE *** Juan A. Suarez Romero (1): i965: add opportunistic behaviour to opt_vector_float() src/mesa/drivers/dri/i965/brw_vec4.cpp | 62 ++++++++++++++++++++++------------ src/mesa/drivers/dri/i965/brw_vec4.h | 4 +++ 2 files changed, 44 insertions(+), 22 deletions(-) -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev