As it turns out, we were over-thinking the cause of the hang on Cherryview. It's simply errata for Cherryview.
commit 88fea85f09e2252035bec66ab26c375b45b000f5 Author: Ben Widawsky <benjamin.widaw...@intel.com> Date: Fri Nov 21 10:47:41 2014 -0800 i965/vec4/gen8: Handle the MUL dest hazard exception This is an explanation to why we never saw the hang on CHV. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84212 Cc: Matt Turner <matts...@gmail.com> Signed-off-by: Ben Widawsky <b...@bwidawsk.net> --- src/mesa/drivers/dri/i965/brw_vec4.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 2fb578e..082bb1e 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -719,11 +719,11 @@ vec4_visitor::is_dep_ctrl_unsafe(const vec4_instruction *inst) (reg.type == BRW_REGISTER_TYPE_UD || \ reg.type == BRW_REGISTER_TYPE_D) - /* From the destination hazard section of the spec: - * > Instructions other than send, may use this control as long as operations - * > that have different pipeline latencies are not mixed. + /* "When source or destination datatype is 64b or operation is integer DWord + * multiply, DepCtrl must not be used." + * May apply to future SoCs as well. */ - if (brw->gen >= 8) { + if (brw->is_cherryview) { if (inst->opcode == BRW_OPCODE_MUL && IS_DWORD(inst->src[0]) && IS_DWORD(inst->src[1])) -- 2.2.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev