Created attachment 97657 [details]
Bug detailed description:
It fails on Ironlake platforms with mesa master branch, and works well on 10.1 branch.
GL_sin_sin_vec2_frag_xvary.test and GL_sin_sin_vec3_frag_xvary.test also fail with same bisect commit.
Bisect shows: a6860100b87415ab510d0d210cabfeeccebc9a0a is the first bad commit
Author: Juha-Pekka Heikkila <firstname.lastname@example.org>
AuthorDate: Fri Mar 28 15:28:33 2014 +0200
Commit: Matt Turner <email@example.com>
CommitDate: Wed Apr 16 22:46:45 2014 -0700
i965/fs: Change fs_visitor::emit_lrp to use MAC for gen<6
This allows us to emit ADD/MUL/MAC instead of MUL/ADD/MUL/ADD,
saving one instruction and two temporary registers.
Reviewed-by: Kenneth Graunke <firstname.lastname@example.org>
Reviewed-by: Matt Turner <email@example.com>
Signed-off-by: Juha-Pekka Heikkila <firstname.lastname@example.org>
2. GTF -width=64 -height=64 -run=GL/sin/sin_float_frag_xvary.test
It also fails on Mesa 10.2 branch.
I sent patch to mesa-dev which on my test did fix this issue:
I would really like to understand the issue - changing from implicit to explicit seems like it's papering over a bug. Usually in cases like this, I try to track down the problem by disabling optimizations and seeing if that fixes it.
I found out that disabling constant propagation into the MULs that write the accumulator fixes the problem. Which is pretty specific. But the assembly after the optimization looks just as valid...
I've sent a revert for this patch.