From a34bd654cc83bd1ee46a1216ab416b46d5025ca5 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Mon, 12 Jan 2015 10:48:04 -0800 Subject: [PATCH] i965/vec4: Make sure that imm writes are to registers in the same file. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87887 --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index c96bd84..121ca42 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -341,15 +341,21 @@ vec4_visitor::opt_vector_float() { bool progress = false; - int last_reg = -1; + int last_reg = -1, last_reg_offset = -1; + enum register_file last_reg_file = BAD_FILE; + int remaining_channels; uint8_t imm[4]; int inst_count; vec4_instruction *imm_inst[4]; foreach_block_and_inst_safe(block, vec4_instruction, inst, cfg) { - if (last_reg != inst->dst.reg) { + if (last_reg != inst->dst.reg || + last_reg_offset != inst->dst.reg_offset || + last_reg_file != inst->dst.file) { last_reg = inst->dst.reg; + last_reg_offset = inst->dst.reg_offset; + last_reg_file = inst->dst.file; remaining_channels = WRITEMASK_XYZW; inst_count = 0; -- 2.0.4