summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrancisco Jerez <[email protected]>2016-05-17 16:54:16 -0700
committerFrancisco Jerez <[email protected]>2016-05-27 23:19:20 -0700
commit1760c24b4bcf028477404e283f5768f2b6f25123 (patch)
tree413e8f0d88713d142428276ceb29a2c9aec15403
parent168163f5f08ac1c0f3e3af20d0b2ac3391d358ab (diff)
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 <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index bb2caa54e17..bb11be157a2 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -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);