From: Francisco Jerez Date: Thu, 19 Mar 2015 13:08:16 +0000 (+0200) Subject: i965/vec4: Don't lose the force_writemask_all flag during CSE. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ce030a63993f7192c6aa4c5b9180f9543a6a76bc;p=mesa.git i965/vec4: Don't lose the force_writemask_all flag during CSE. And set it in the MOV instructions that copy the temporary to the original destination if the generator instruction had it set. Reviewed-by: Matt Turner --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp b/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp index 0a687313a4e..31c01d60997 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_cse.cpp @@ -114,6 +114,7 @@ instructions_match(vec4_instruction *a, vec4_instruction *b) a->conditional_mod == b->conditional_mod && a->dst.type == b->dst.type && a->dst.writemask == b->dst.writemask && + a->force_writemask_all == b->force_writemask_all && a->regs_written == b->regs_written && operands_match(a, b); } @@ -168,6 +169,8 @@ vec4_visitor::opt_cse_local(bblock_t *block) for (unsigned i = 0; i < entry->generator->regs_written; ++i) { vec4_instruction *copy = MOV(offset(entry->generator->dst, i), offset(entry->tmp, i)); + copy->force_writemask_all = + entry->generator->force_writemask_all; entry->generator->insert_after(block, copy); }