From: Eric Anholt Date: Mon, 9 Jan 2012 18:27:44 +0000 (-0800) Subject: i965/fs: Fix GPU hangs with 16-wide integer div/mod on gen7. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=83dc891b41c0224f5ba3624b3e3560129e644e28;p=mesa.git i965/fs: Fix GPU hangs with 16-wide integer div/mod on gen7. Acked-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 9f8a44a4742..44c9ee878f5 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -306,11 +306,17 @@ fs_visitor::visit(ir_expression *ir) } break; case ir_binop_div: + if (intel->gen >= 7 && c->dispatch_width == 16) + fail("16-wide INTDIV unsupported\n"); + /* Floating point should be lowered by DIV_TO_MUL_RCP in the compiler. */ assert(ir->type->is_integer()); emit_math(SHADER_OPCODE_INT_QUOTIENT, this->result, op[0], op[1]); break; case ir_binop_mod: + if (intel->gen >= 7 && c->dispatch_width == 16) + fail("16-wide INTDIV unsupported\n"); + /* Floating point should be lowered by MOD_TO_FRACT in the compiler. */ assert(ir->type->is_integer()); emit_math(SHADER_OPCODE_INT_REMAINDER, this->result, op[0], op[1]);