From e65e12fdbc2f51ecc3ca9265993c0c7a03e05a84 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 26 Mar 2010 11:00:07 -0700 Subject: IR print visitor: Print out something for the operator. --- ir_print_visitor.cpp | 57 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 13 deletions(-) (limited to 'ir_print_visitor.cpp') diff --git a/ir_print_visitor.cpp b/ir_print_visitor.cpp index 6d0f797807c..f055e8f1d8f 100644 --- a/ir_print_visitor.cpp +++ b/ir_print_visitor.cpp @@ -86,22 +86,53 @@ void ir_print_visitor::visit(ir_function *ir) void ir_print_visitor::visit(ir_expression *ir) { - printf("(expression "); + static const char *const operators[] = { + "~", + "!", + "-", + "abs", + "rcp", + "rsq", + "exp", + "log", + "f2i", + "i2f", + "u2f", + "trunc", + "ceil", + "floor", + "+", + "-", + "*", + "/", + "%", + "<", + ">", + "<=", + ">=", + "==", + "!=", + "<<", + ">>", + "&", + "^", + "|", + "&&", + "^^", + "||", + "!", + "dot", + "min", + "max", + }; - const char *str; - char buf[256]; + printf("(expression "); - switch (ir->operation) { - case ir_unop_f2i: str = "f2i"; break; - case ir_unop_i2f: str = "i2f"; break; - case ir_unop_u2f: str = "u2f"; break; - default: - snprintf(buf, sizeof(buf), "operator %u", ir->operation); - str = buf; - break; - } + assert((unsigned int)ir->operation < + sizeof(operators) / sizeof(operators[0])); - printf("(%s) (", str); + printf("%s", operators[ir->operation]); + printf("("); if (ir->operands[0]) ir->operands[0]->accept(this); printf(") "); -- cgit v1.2.3