gallivm: support printing of 64 bit integers
authorZack Rusin <zackr@vmware.com>
Tue, 8 Oct 2013 18:10:09 +0000 (14:10 -0400)
committerZack Rusin <zackr@vmware.com>
Wed, 9 Oct 2013 22:29:05 +0000 (18:29 -0400)
only 8 and 32 bit integers were supported before.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
src/gallium/auxiliary/gallivm/lp_bld_printf.c

index 1324da26a71a5ebc024c8701053dad3be76bcfcb..69d829ea6762a45956605f39742a8831c4dfced6 100644 (file)
@@ -26,6 +26,7 @@
  **************************************************************************/
 
 #include <stdio.h>
+#include <inttypes.h>
 
 #include "util/u_debug.h"
 #include "util/u_memory.h"
@@ -106,7 +107,11 @@ lp_build_print_value(struct gallivm_state *gallivm,
       type_fmt[4] = 'g';
       type_fmt[5] = '\0';
    } else if (type_kind == LLVMIntegerTypeKind) {
-      if (LLVMGetIntTypeWidth(type_ref) == 8) {
+      if (LLVMGetIntTypeWidth(type_ref) == 64) {
+         unsigned flen = strlen(PRId64);
+         assert(flen <= 3);
+         strncpy(type_fmt + 2, PRId64, flen);
+      } else if (LLVMGetIntTypeWidth(type_ref) == 8) {
          type_fmt[2] = 'u';
       } else {
          type_fmt[2] = 'i';