i965/fs: fix copy propagation from load payload
authorIago Toral Quiroga <itoral@igalia.com>
Tue, 12 Apr 2016 11:53:24 +0000 (13:53 +0200)
committerSamuel Iglesias Gonsálvez <siglesias@igalia.com>
Mon, 16 May 2016 07:55:32 +0000 (09:55 +0200)
We were not considering the case where the load payload is writing to
a destination with a reg_offset > 0.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp

index 4b73b07a2401ae8489f8d8bf7c268dc2f3db8a2b..3d61af696acaf4abcf41ec39bbc9ffe42ccf42a8 100644 (file)
@@ -784,7 +784,7 @@ fs_visitor::opt_copy_propagate_local(void *copy_prop_ctx, bblock_t *block,
             if (inst->src[i].file == VGRF) {
                acp_entry *entry = ralloc(copy_prop_ctx, acp_entry);
                entry->dst = inst->dst;
-               entry->dst.reg_offset = offset;
+               entry->dst.reg_offset += offset;
                entry->src = inst->src[i];
                entry->regs_written = regs_written;
                entry->regs_read = inst->regs_read(i);