i965: Fix math instruction hstride assertions on Broadwell.
authorKenneth Graunke <kenneth@whitecape.org>
Fri, 31 Jan 2014 01:50:02 +0000 (17:50 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 1 Feb 2014 01:50:09 +0000 (17:50 -0800)
In the final revision of my gen8_generator patch, I updated the MATH
instruction's assertion from (dst.hstride == 1) to check that source and
destination hstride matched.  Unfortunately, I didn't test this enough,
and many Piglit tests fail this test.

The documentation indicates that "scalar source is also supported",
which we believe means <0,1,0> access mode (hstride == 0).  If hstride
is non-zero, then it must match the destination register.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/gen8_generator.cpp

index ee5f792187fbf581db3e8c14e58fa1ef741ec3d8..1e2ac09bfd54d42bc666754ff7ff79886326bafb 100644 (file)
@@ -299,7 +299,7 @@ gen8_generator::math(unsigned math_function,
 {
    gen8_instruction *inst = next_inst(BRW_OPCODE_MATH);
 
-   assert(dst.hstride == src0.hstride);
+   assert(src0.hstride == 0 || src0.hstride == dst.hstride);
 
    gen8_set_math_function(inst, math_function);
    gen8_set_dst(brw, inst, dst);