From: Kenneth Graunke Date: Thu, 29 Sep 2011 00:37:51 +0000 (-0700) Subject: i965: Fix assertions about register types for INT DIV in brw_math. X-Git-Tag: android-x86-4.4-r1~9575 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ee2bf3a4b6b37287e6d150d3dd6742b7fa4f8215;p=android-x86%2Fexternal-mesa.git i965: Fix assertions about register types for INT DIV in brw_math. BRW_MATH_FUNCTION_REMAINDER was missing. Also, it seems worthwhile to assert that INT DIV's arguments are signed/unsigned integers. Signed-off-by: Kenneth Graunke Tested-by: Ian Romanick Reviewed-by: Ian Romanick Reviewed-by: Eric Anholt --- diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index f9f8d49a0d0..52ed21b15be 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -1478,8 +1478,11 @@ void brw_math( struct brw_compile *p, assert(!src.negate); assert(!src.abs); - if (function != BRW_MATH_FUNCTION_INT_DIV_QUOTIENT && - function != BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER) { + if (function == BRW_MATH_FUNCTION_INT_DIV_QUOTIENT || + function == BRW_MATH_FUNCTION_INT_DIV_REMAINDER || + function == BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER) { + assert(src.type != BRW_REGISTER_TYPE_F); + } else { assert(src.type == BRW_REGISTER_TYPE_F); } @@ -1538,8 +1541,12 @@ void brw_math2(struct brw_compile *p, assert(src0.hstride == BRW_HORIZONTAL_STRIDE_1); assert(src1.hstride == BRW_HORIZONTAL_STRIDE_1); - if (function != BRW_MATH_FUNCTION_INT_DIV_QUOTIENT && - function != BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER) { + if (function == BRW_MATH_FUNCTION_INT_DIV_QUOTIENT || + function == BRW_MATH_FUNCTION_INT_DIV_REMAINDER || + function == BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER) { + assert(src0.type != BRW_REGISTER_TYPE_F); + assert(src1.type != BRW_REGISTER_TYPE_F); + } else { assert(src0.type == BRW_REGISTER_TYPE_F); assert(src1.type == BRW_REGISTER_TYPE_F); }