i965/fs: No need to unzip SIMD-periodic sources during SIMD lowering.

If the source value is going to the same for all SIMD-lowered chunks
of the instruction there should be no need to unzip the value into
multiple temporary registers one for each lowered chunk.  As a side
effect this fixes SIMD lowering of instructions with a vector
immediate source.  In the long term it *might* still be worth fixing
offset() to handle vector immediates correctly though, this should be
good enough for the moment.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
Francisco Jerez 2016-05-17 16:54:16 -07:00
parent 168163f5f0
commit 1760c24b4b

View file

@ -4767,7 +4767,7 @@ fs_visitor::lower_simd_width()
for (unsigned j = 0; j < inst->sources; j++) {
if (inst->src[j].file != BAD_FILE &&
!is_uniform(inst->src[j])) {
!is_periodic(inst->src[j], lower_width)) {
/* Get the i-th copy_width-wide chunk of the source. */
const fs_builder cbld = lbld.group(copy_width, 0);
const fs_reg src = offset(inst->src[j], cbld, i);