(In reply to iive from comment #2) > The problem that causes this bug is when the first half of the above code, > changes the condition check in the second. Something that will not happen, > if "cndge" is executed as a single VLIW. > Aka I have "cndge r0.xy, r0.xx, |r2|, r3" that is turned into: > mov r12.x, |r2| > cndge r0.x, r0.x, r12, r3 > mov r12.y, |r2| > cndge r0.y, r0.x, r12, r3 > > I think that we should copy the whole register first. > The generated code should looks like this: > > mov r12, |r2| > cndge r0.xy, r1, r12, r3 That analysis looks spot on. I've just sent a patch to mesa-dev which should fix this, can you verify it works?