From: Matt Turner Date: Mon, 12 Jan 2015 18:48:04 +0000 (-0800) Subject: i965/vec4: Make sure that imm writes are to registers in the same file. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=41d9f232b6a7f53086b9c428cca30e45905abd48;p=mesa.git i965/vec4: Make sure that imm writes are to registers in the same file. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=87887 --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 33d5fdc17fa..0fac9495210 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;