From: Zack Rusin Date: Thu, 1 Apr 2010 01:30:37 +0000 (-0400) Subject: gallivm: convert floats to doubles X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2fb655d1dbb3f8425aeff1597271262661ef206b;p=mesa.git gallivm: convert floats to doubles printf can't handle floats, convert them to doubles so that we can actually print floats. --- diff --git a/src/gallium/auxiliary/gallivm/lp_bld_printf.c b/src/gallium/auxiliary/gallivm/lp_bld_printf.c index 78c9ec778b6..e4fa2c264c3 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, "");