X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fsparc%2Fsparc_new_nodes.c;h=558872e283459ccfded8598ac2390dadead37d84;hb=9246866a19201d235897e8ef842a28542911cd68;hp=b4564bc28ea115909be0206e95a15ee038a79dc6;hpb=09913c6466bf204f32f0fe00961011e2ba952157;p=libfirm diff --git a/ir/be/sparc/sparc_new_nodes.c b/ir/be/sparc/sparc_new_nodes.c index b4564bc28..558872e28 100644 --- a/ir/be/sparc/sparc_new_nodes.c +++ b/ir/be/sparc/sparc_new_nodes.c @@ -22,6 +22,7 @@ * @brief This file implements the creation of the achitecture specific firm * opcodes and the coresponding node constructors for the sparc * assembler irg. + * @author Hannes Rapp, Matthias Braun * @version $Id$ */ #include "config.h" @@ -81,7 +82,7 @@ static bool has_fp_conv_attr(const ir_node *node) */ static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason) { - const sparc_attr_t *attr; + const sparc_attr_t *sparc_attr; switch (reason) { case dump_node_opcode_txt: @@ -92,13 +93,17 @@ static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason) break; case dump_node_info_txt: + if (is_sparc_AddX_t(n) || is_sparc_AddCC_t(n)) + break; + arch_dump_reqs_and_registers(F, n); - attr = get_sparc_attr_const(n); - if (attr->immediate_value_entity) { + sparc_attr = get_sparc_attr_const(n); + if (sparc_attr->immediate_value_entity) { ir_fprintf(F, "entity: %+F (offset %d)\n", - attr->immediate_value_entity, attr->immediate_value); + sparc_attr->immediate_value_entity, + sparc_attr->immediate_value); } else { - ir_fprintf(F, "immediate value: %d\n", attr->immediate_value); + ir_fprintf(F, "immediate value: %d\n", sparc_attr->immediate_value); } if (sparc_has_load_store_attr(n)) { const sparc_load_store_attr_t *attr = get_sparc_load_store_attr_const(n); @@ -109,7 +114,8 @@ static void sparc_dump_node(FILE *F, ir_node *n, dump_reason_t reason) if (has_jmp_cond_attr(n)) { const sparc_jmp_cond_attr_t *attr = get_sparc_jmp_cond_attr_const(n); - fprintf(F, "pnc: %d (%s)\n", attr->pnc, get_pnc_string(attr->pnc)); + fprintf(F, "relation: %d (%s)\n", (int)attr->relation, + get_relation_string(attr->relation)); fprintf(F, "unsigned: %s\n", attr->is_unsigned ? "true" : "false"); } if (has_switch_jmp_attr(n)) { @@ -139,12 +145,14 @@ static void sparc_set_attr_imm(ir_node *res, ir_entity *entity, sparc_attr_t *attr = (sparc_attr_t*)get_irn_generic_attr(res); attr->immediate_value_entity = entity; attr->immediate_value = immediate_value; + arch_add_irn_flags(res, (arch_irn_flags_t)sparc_arch_irn_flag_immediate_form); } -static void init_sparc_jmp_cond_attr(ir_node *node, pn_Cmp pnc, bool is_unsigned) +static void init_sparc_jmp_cond_attr(ir_node *node, ir_relation relation, + bool is_unsigned) { sparc_jmp_cond_attr_t *attr = get_sparc_jmp_cond_attr(node); - attr->pnc = pnc; + attr->relation = relation; attr->is_unsigned = is_unsigned; } @@ -233,8 +241,8 @@ static void init_sparc_attributes(ir_node *node, arch_irn_flags_t flags, backend_info_t *info; (void) execution_units; - arch_irn_set_flags(node, flags); - arch_set_in_register_reqs(node, in_reqs); + arch_set_irn_flags(node, flags); + arch_set_irn_register_reqs_in(node, in_reqs); info = be_get_info(node); info->out_infos = NEW_ARR_D(reg_out_info_t, obst, n_res); @@ -291,6 +299,7 @@ static void sparc_copy_attr(ir_graph *irg, const ir_node *old_node, /* copy the attributes */ memcpy(attr_new, attr_old, get_op_attr_size(get_irn_op(old_node))); /* copy out flags */ + new_info->flags = old_info->flags; new_info->out_infos = DUP_ARR_D(reg_out_info_t, obst, old_info->out_infos); new_info->in_reqs = old_info->in_reqs; @@ -328,7 +337,7 @@ static int cmp_attr_sparc_jmp_cond(const ir_node *a, const ir_node *b) if (cmp_attr_sparc(a, b)) return 1; - return attr_a->pnc != attr_b->pnc + return attr_a->relation != attr_b->relation || attr_a->is_unsigned != attr_b->is_unsigned; } @@ -363,7 +372,7 @@ static int cmp_attr_sparc_fp_conv(const ir_node *a, const ir_node *b) return 1; return attr_a->src_mode != attr_b->src_mode - || attr_a->dest_mode != attr_b->dest_mode;; + || attr_a->dest_mode != attr_b->dest_mode; } /* Include the generated constructor functions */