i965/fs: Fix GPU hangs with 16-wide integer div/mod on gen7.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Eric Anholt 2012-01-09 10:27:44 -08:00
parent 108cba21de
commit 83dc891b41

View file

@ -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]);