Browse Source

gallivm: convert floats to doubles

printf can't handle floats, convert them to doubles so that we can
actually print floats.
tags/mesa-7.9-rc1
Zack Rusin 15 years ago
parent
commit
2fb655d1db
1 changed files with 9 additions and 2 deletions
  1. 9
    2
      src/gallium/auxiliary/gallivm/lp_bld_printf.c

+ 9
- 2
src/gallium/auxiliary/gallivm/lp_bld_printf.c View File

@@ -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, "");

Loading…
Cancel
Save