Mesa (master): tgsi: convert CHECK_INF_OR_NAN to inline function

Brian Paul brianp at kemper.freedesktop.org
Wed Feb 3 15:50:41 UTC 2010


Module: Mesa
Branch: master
Commit: 9ca6cf0f54c4ab9cd6dfdea54c5bf350ae4491d5
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9ca6cf0f54c4ab9cd6dfdea54c5bf350ae4491d5

Author: Brian Paul <brianp at vmware.com>
Date:   Wed Feb  3 08:47:07 2010 -0700

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.

---

 src/gallium/auxiliary/tgsi/tgsi_exec.c |   25 +++++++++++++++++--------
 1 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 256918b..c0d1b01 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -450,12 +450,20 @@ static const union tgsi_exec_channel ZeroVec =
    { { 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(!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]));\
-   } while (0)
+/**
+ * Assert that none of the float values in 'chan' are infinite or NaN.
+ * NaN and Inf may occur normally during program execution and should
+ * not lead to crashes, etc.  But when debugging, it's helpful to catch
+ * them.
+ */
+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
@@ -1219,8 +1227,9 @@ store_dest(struct tgsi_exec_machine *mach,
    int offset = 0;  /* indirection offset */
    int index;
 
-   if (dst_datatype == TGSI_EXEC_DATA_FLOAT) {
-      CHECK_INF_OR_NAN(chan);
+   /* for debugging */
+   if (0 && dst_datatype == TGSI_EXEC_DATA_FLOAT) {
+      check_inf_or_nan(chan);
    }
 
    /* There is an extra source register that indirectly subscripts




More information about the mesa-commit mailing list