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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user