From: Ian Romanick Date: Wed, 10 Mar 2010 05:44:34 +0000 (-0800) Subject: IR print visitor: Add some support for printing types and constants X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fe10250355682bcfb87d1688151b93b08d0a4e3c;p=mesa.git IR print visitor: Add some support for printing types and constants --- diff --git a/ir_print_visitor.cpp b/ir_print_visitor.cpp index 365ff5933e3..c09de83ffd6 100644 --- a/ir_print_visitor.cpp +++ b/ir_print_visitor.cpp @@ -22,6 +22,28 @@ */ #include #include "ir_print_visitor.h" +#include "glsl_types.h" + +static void +print_type(const glsl_type *t) +{ + if (t->base_type == GLSL_TYPE_ARRAY) { + printf("array\n"); + printf(" ("); + print_type(t->fields.array); + printf(")\n"); + + printf(" (%u)\n", t->length); + printf(")"); + } else if (t->base_type == GLSL_TYPE_STRUCT) { + printf("struct (%s %u\n", t->name ? t->name : "@", t->length); + printf(" (FINISHME: structure fields go here)\n"); + printf(")"); + } else { + printf("%s", t->name); + } +} + void ir_print_visitor::visit(ir_variable *ir) { @@ -35,7 +57,10 @@ void ir_print_visitor::visit(ir_variable *ir) printf(" (%s%s%s%s)\n", cent, inv, mode[ir->mode], interp[ir->interpolation]); - printf(" (FINISHME: type goes here)\n"); + printf(" ("); + print_type(ir->type); + printf(")\n"); + printf(" (%s)\n", ir->name); printf(")\n"); } @@ -98,6 +123,12 @@ void ir_print_visitor::visit(ir_assignment *ir) void ir_print_visitor::visit(ir_constant *ir) { - printf("%s:%d:\n", __func__, __LINE__); (void) ir; + + printf("(constant\n"); + printf(" ("); + print_type(ir->type); + printf(")\n"); + printf(" (FINISHME: value goes here)\n"); + printf(")\n"); }