i965: Skip execution size adjustment for instructions of width 4
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 3 Dec 2015 08:50:49 +0000 (09:50 +0100)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Thu, 17 Mar 2016 07:23:25 +0000 (08:23 +0100)
commit5be11d22368c4fd520983ab78a9ac8fc10d79929
treebb2a3e4a678dc7092a1925ec7fb6e6cab3601dd7
parent22a10dd0308c4993350e3e0609588a6f4e1cd402
i965: Skip execution size adjustment for instructions of width 4

This code in brw_set_dest adjusts the execution size of any instruction
with a dst.width < 8. However, we don't want to do this with instructions
operating on doubles, since these will have a width of 4, but still
need an execution size of 8 (for SIMD8). Unfortunately, we can't just check
the size of the operands involved to detect if we are doing an operation on
doubles, because we can have instructions that do operations on double
operands interpreted as UD, operating on any of its 2 32-bit components.

Previous commits have made it so we never emit instructions with a horizontal
width of 4 that don't have the correct execution size set for gen6+, so
we can skip it in this case, avoiding the conflicts with fp64 requirements.

Expanding the same fix to other hardware generations requires many more
changes but since we are not targetting fp64 support on them
wer don't really care for now.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
src/mesa/drivers/dri/i965/brw_eu_emit.c