+static void print_value_name(ir_node *node)
+{
+ char name[128];
+ const arch_register_req_t *req = arch_get_register_req_out(node);
+ snprintf(name, sizeof(name), "V%ld.%s", get_irn_node_nr(node),
+ req->cls->name);
+
+ value(name);
+}
+
+static void print_node(ir_node *node)
+{
+ ir_op *op = get_irn_op(node);
+ int arity;
+ int i;
+
+ begin_mapping(NULL);
+
+ mapping_item("op");
+ value(get_op_name(op));
+
+ mapping_item("defs");
+ begin_list(NULL);
+ if (get_irn_mode(node) == mode_T) {
+ const ir_edge_t *edge;
+ foreach_out_edge(node, edge) {
+ ir_node *proj = get_edge_src_irn(edge);
+ const arch_register_req_t *req = arch_get_register_req_out(proj);
+
+ if (req->cls == NULL || (req->type & arch_register_req_type_ignore))
+ continue;
+
+ list_item();
+ print_value_name(proj);
+ }
+ } else {
+ const arch_register_req_t *req = arch_get_register_req_out(node);
+ if (req->cls != NULL && !(req->type & arch_register_req_type_ignore)) {
+ list_item();
+ print_value_name(node);
+ }
+ }
+ end_list(NULL);
+
+ mapping_item("uses");
+ begin_list(NULL);
+ arity = get_irn_arity(node);
+ for (i = 0; i < arity; ++i) {
+ const arch_register_req_t *req = arch_get_register_req(node, i);
+ ir_node *op = get_irn_n(node, i);
+
+ if (req->cls == NULL || (req->type & arch_register_req_type_ignore))
+ continue;
+
+ list_item();
+ print_value_name(op);
+ }
+ end_list(NULL);
+
+ end_mapping(NULL);
+}
+