gallivm: added lp_dump_llvmtype() debug helper
authorBrian Paul <brianp@vmware.com>
Thu, 13 May 2010 16:24:10 +0000 (10:24 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 13 May 2010 20:15:44 +0000 (14:15 -0600)
src/gallium/auxiliary/gallivm/lp_bld_type.c
src/gallium/auxiliary/gallivm/lp_bld_type.h

index 9028963..37d278d 100644 (file)
@@ -285,6 +285,42 @@ lp_typekind_name(LLVMTypeKind t)
 }
 
 
+/**
+ * Print an LLVMTypeRef.  Like LLVMDumpValue().  For debugging.
+ */
+void
+lp_dump_llvmtype(LLVMTypeRef t)
+{
+   LLVMTypeKind k = LLVMGetTypeKind(t);
+
+   if (k == LLVMVectorTypeKind) {
+      LLVMTypeRef te = LLVMGetElementType(t);
+      LLVMTypeKind ke = LLVMGetTypeKind(te);
+      unsigned len = LLVMGetVectorSize(t);
+      if (ke == LLVMIntegerTypeKind) {
+         unsigned b = LLVMGetIntTypeWidth(te);
+         debug_printf("Vector [%u] of %u-bit Integer\n", len, b);
+      }
+      else {
+         debug_printf("Vector [%u] of %s\n", len, lp_typekind_name(ke));
+      }
+   }
+   else if (k == LLVMArrayTypeKind) {
+      LLVMTypeRef te = LLVMGetElementType(t);
+      LLVMTypeKind ke = LLVMGetTypeKind(te);
+      unsigned len = LLVMGetArrayLength(t);
+      debug_printf("Array [%u] of %s\n", len, lp_typekind_name(ke));
+   }
+   else if (k == LLVMIntegerTypeKind) {
+      unsigned b = LLVMGetIntTypeWidth(t);
+      debug_printf("%u-bit Integer\n", b);
+   }
+   else {
+      debug_printf("%s\n", lp_typekind_name(k));
+   }
+}
+
+
 void
 lp_build_context_init(struct lp_build_context *bld,
                       LLVMBuilderRef builder,
index f1922ef..b3f9e91 100644 (file)
@@ -321,6 +321,10 @@ lp_typekind_name(LLVMTypeKind t);
 
 
 void
+lp_dump_llvmtype(LLVMTypeRef t);
+
+
+void
 lp_build_context_init(struct lp_build_context *bld,
                       LLVMBuilderRef builder,
                       struct lp_type type);