diff options
author | Eric Anholt <[email protected]> | 2012-01-09 10:27:44 -0800 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2012-01-09 10:47:09 -0800 |
commit | 83dc891b41c0224f5ba3624b3e3560129e644e28 (patch) | |
tree | 2e13d4509632ff648e3813de4a834cd42341192c /src | |
parent | 108cba21dec82a7e10962cf01f2835e7b950ff74 (diff) |
i965/fs: Fix GPU hangs with 16-wide integer div/mod on gen7.
Acked-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
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]); |