tgsi: convert CHECK_INF_OR_NAN to inline function

And disable with if (0).  Inf/NaN can occur normally during program
execution.  Only enable the check code when needed during debugging.
This commit is contained in:
Brian Paul 2010-02-03 08:47:07 -07:00
parent 2ec50d256d
commit 9ca6cf0f54

View file

@ -450,12 +450,20 @@ static const union tgsi_exec_channel ZeroVec =
{ { 0.0, 0.0, 0.0, 0.0 } }; { { 0.0, 0.0, 0.0, 0.0 } };
#define CHECK_INF_OR_NAN(chan) do {\ /**
assert(!util_is_inf_or_nan((chan)->f[0]));\ * Assert that none of the float values in 'chan' are infinite or NaN.
assert(!util_is_inf_or_nan((chan)->f[1]));\ * NaN and Inf may occur normally during program execution and should
assert(!util_is_inf_or_nan((chan)->f[2]));\ * not lead to crashes, etc. But when debugging, it's helpful to catch
assert(!util_is_inf_or_nan((chan)->f[3]));\ * them.
} while (0) */
static INLINE void
check_inf_or_nan(const union tgsi_exec_channel *chan)
{
assert(!util_is_inf_or_nan((chan)->f[0]));
assert(!util_is_inf_or_nan((chan)->f[1]));
assert(!util_is_inf_or_nan((chan)->f[2]));
assert(!util_is_inf_or_nan((chan)->f[3]));
}
#ifdef DEBUG #ifdef DEBUG
@ -1219,8 +1227,9 @@ store_dest(struct tgsi_exec_machine *mach,
int offset = 0; /* indirection offset */ int offset = 0; /* indirection offset */
int index; int index;
if (dst_datatype == TGSI_EXEC_DATA_FLOAT) { /* for debugging */
CHECK_INF_OR_NAN(chan); if (0 && dst_datatype == TGSI_EXEC_DATA_FLOAT) {
check_inf_or_nan(chan);
} }
/* There is an extra source register that indirectly subscripts /* There is an extra source register that indirectly subscripts