Mesa (master): gallivm: convert floats to doubles

Zack Rusin zack at kemper.freedesktop.org
Thu Apr 1 01:29:34 UTC 2010


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

Author: Zack Rusin <zackr at vmware.com>
Date:   Wed Mar 31 21:30:37 2010 -0400

gallivm: convert floats to doubles

printf can't handle floats, convert them to doubles so that we can
actually print floats.

---

 src/gallium/auxiliary/gallivm/lp_bld_printf.c |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.c b/src/gallium/auxiliary/gallivm/lp_bld_printf.c
index 78c9ec7..e4fa2c2 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_printf.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_printf.c
@@ -104,8 +104,15 @@ lp_build_printf(LLVMBuilderRef builder, const char *fmt, ...)
    params[0] = LLVMBuildGEP(builder, fmtarg, index, 2, "");
 
    va_start(arglist, fmt);
-   for (i = 1; i <= argcount; i++)
-      params[i] = va_arg(arglist, LLVMValueRef);
+   for (i = 1; i <= argcount; i++) {
+      LLVMValueRef val = va_arg(arglist, LLVMValueRef);
+      LLVMTypeRef type = LLVMTypeOf(val);
+      /* printf wants doubles, so lets convert so that
+       * we can actually print them */
+      if (LLVMGetTypeKind(type) == LLVMFloatTypeKind)
+         val = LLVMBuildFPExt(builder, val, LLVMDoubleType(), "");
+      params[i] = val;
+   }
    va_end(arglist);
 
    return LLVMBuildCall(builder, func_printf, params, argcount + 1, "");




More information about the mesa-commit mailing list