i965/vec4: Handle destination writemasks in VEC4_OPCODE_PACK_BYTES.
authorMatt Turner <mattst88@gmail.com>
Fri, 15 Aug 2014 22:03:44 +0000 (15:03 -0700)
committerMatt Turner <mattst88@gmail.com>
Wed, 26 Nov 2014 01:29:02 +0000 (17:29 -0800)
commit531feec9dc4680046f21c517d13312c7df7b7619
tree2a47aafb209ccc430d73e643cd30aaebc9148819
parent70fcd565388354da5a3c96d8a265e4d0b5ad7292
i965/vec4: Handle destination writemasks in VEC4_OPCODE_PACK_BYTES.

Since pack_bytes expands to two mov(4) align1 instructions, we can't use
swizzles directly. For an instruction like

   pack_bytes m4.y:UD, vgrf13.xyzw:UD

we can write into the .y component by settings the offset based on the
swizzle.

Also while we're doing this, we can set the dependency control hints
properly, so that a series of pack_bytes writing into separate
components of a register can issue without blocking.
src/mesa/drivers/dri/i965/brw_vec4_generator.cpp