When faced with this sequence:
MOV R1, c[1];
MAD R0, R2, R1.x, R1.y;
we were concluding that the MOV of R1 set up our accumulator and so we could
just use the previous result. Only, it's got R1.xyzw in it instead of the
r1.y we're looking for.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=46784
NOTE: This is a candidate for the 8.0 branch.
if (val.address_mode != BRW_ADDRESS_DIRECT)
return false;
- if (val.negate || val.abs)
+ if (val.negate || val.abs || val.dw1.bits.swizzle != BRW_SWIZZLE_XYZW)
return false;
switch (prev_insn->header.opcode) {