From: Christian Würdig Date: Fri, 19 May 2006 09:15:58 +0000 (+0000) Subject: create op tag, register tag for each op, use tag to determine return value of is_... X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=ea061cce0888de9a7e09b594a2666176f6aa7f79;p=libfirm create op tag, register tag for each op, use tag to determine return value of is_$arch_irn --- diff --git a/ir/be/scripts/generate_new_opcodes.pl b/ir/be/scripts/generate_new_opcodes.pl index cfc566987..0602ae5c0 100755 --- a/ir/be/scripts/generate_new_opcodes.pl +++ b/ir/be/scripts/generate_new_opcodes.pl @@ -302,6 +302,7 @@ foreach my $op (keys(%nodes)) { $temp = " op_$op = new_ir_op(cur_opcode + iro_$op, \"$op\", op_pin_state_".$n{"state"}.", ".$n{"op_flags"}; $temp .= "|M, ".translate_arity($arity).", 0, sizeof($arch\_attr_t) + $n_res * sizeof(arch_register_t *), &ops);\n"; push(@obst_new_irop, $temp); + push(@obst_new_irop, " set_op_tag(op_$op, &$arch\_op_tag);\n"); push(@obst_enum_op, " iro_$op,\n"); push(@obst_header, "\n"); @@ -323,11 +324,37 @@ print OUT "\n"; print OUT @obst_get_opvar; print OUT "\n"; -print OUT<= 1) { + $a = uc(substr($arch, 0, 1)); +} + +if (length($arch) >= 2) { + $b = uc(substr($arch, 1, 1)); +} + +if (length($arch) >= 3) { + $c = uc(substr($arch, 2, 1)); +} + +if (length($arch) >= 4) { + $d = uc(substr($arch, 3, 1)); +} + +print OUT "static unsigned $arch\_op_tag = FOURCC('$a', '$b', '$c', '$d');\n"; + +print OUT< 0 && "missing opcode init"); - assert($arch\_opcode_end > 0 && "missing opcode init"); - - if (opc - (unsigned)$arch\_opcode_start < (unsigned)($arch\_opcode_end - $arch\_opcode_start)) - return 1; - - return 0; + return get_op_tag(get_irn_op(node)) == &$arch\_op_tag; } int get_$arch\_irn_opcode(const ir_node *node) {