From: Eric Anholt Date: Mon, 6 Aug 2012 22:02:34 +0000 (-0700) Subject: i965/vs: Protect pow(x,y) MOV of y on gen4 from other instruction flags. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b0adbda75a092a92211bb519a395494532ddb17e;p=mesa.git i965/vs: Protect pow(x,y) MOV of y on gen4 from other instruction flags. I don't know if it was possible to trigger this bug -- we don't merge saturates into the math instruction because we're bad at coalescing currently, and there's nothing generating these with predicates. Still, let's avoid future bugs when we do smarter codegen. Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp index 21eafcbcb5d..e63e08dc7da 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4_emit.cpp @@ -348,7 +348,11 @@ vec4_visitor::generate_math2_gen4(vec4_instruction *inst, struct brw_reg &op0 = is_int_div ? src1 : src0; struct brw_reg &op1 = is_int_div ? src0 : src1; + brw_push_insn_state(p); + brw_set_saturate(p, false); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); brw_MOV(p, retype(brw_message_reg(inst->base_mrf + 1), op1.type), op1); + brw_pop_insn_state(p); brw_math(p, dst,