From 84c95ec81cc06f5338847056aed870d608ce96c9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Mon, 4 Dec 2006 15:49:03 +0000 Subject: [PATCH] fixed the usage of real register names added default DUMMY unit register can be connected to units --- ir/be/scripts/generate_machine.pl | 2 ++ ir/be/scripts/generate_new_opcodes.pl | 5 +++- ir/be/scripts/generate_regalloc_if.pl | 40 +++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/ir/be/scripts/generate_machine.pl b/ir/be/scripts/generate_machine.pl index 9151d0e35..296b796cf 100755 --- a/ir/be/scripts/generate_machine.pl +++ b/ir/be/scripts/generate_machine.pl @@ -162,6 +162,8 @@ const be_machine_t *$arch\_init_machine_description(void) { if (! initialized) { be_execution_unit_type_t *cur_unit_tp; + + be_machine_init_dummy_unit(); EOF print OUT @obst_init; diff --git a/ir/be/scripts/generate_new_opcodes.pl b/ir/be/scripts/generate_new_opcodes.pl index a5dc2ad68..4000766a6 100755 --- a/ir/be/scripts/generate_new_opcodes.pl +++ b/ir/be/scripts/generate_new_opcodes.pl @@ -525,7 +525,10 @@ sub gen_execunit_list_initializer { my %init; foreach my $unit (@{ $units }) { - if (exists($cpu{"$unit"})) { + if ($unit eq "DUMMY") { + $init{"DUMMY"} = " &be_machine_execution_units_DUMMY[0]"; + } + elsif (exists($cpu{"$unit"})) { # operation can be executed on all units of this type # -> add them all my $tp_name = "$arch\_execution_units_$unit"; diff --git a/ir/be/scripts/generate_regalloc_if.pl b/ir/be/scripts/generate_regalloc_if.pl index c71ee9964..dba09342b 100755 --- a/ir/be/scripts/generate_regalloc_if.pl +++ b/ir/be/scripts/generate_regalloc_if.pl @@ -14,6 +14,7 @@ my $target_dir = $ARGV[1]; our $arch; our %reg_classes; our %nodes; +our %cpu; # include spec file @@ -181,12 +182,16 @@ foreach my $class_name (keys(%reg_classes)) { push(@obst_req, $tmp); push(@obst_header_all,"extern const $arch\_register_req_t $arch\_default_req_$class_name\_".$_->{"name"}.";\n"); + # realname is name if not set by user + $_->{"realname"} = $_->{"name"} if (! exists($_->{"realname"})); + $reg2class{$_->{"name"}} = { "class" => $old_classname, "index" => $idx }; # remember reg to class for later use push(@obst_regdef, " REG_".uc($_->{"name"})." = $idx,\n"); - push(@obst_reginit, " ".$class_name."_regs[$idx].name = \"".$_->{"name"}."\";\n"); + push(@obst_reginit, " ".$class_name."_regs[$idx].name = \"".$_->{"realname"}."\";\n"); push(@obst_reginit, " ".$class_name."_regs[$idx].reg_class = $class_ptr;\n"); push(@obst_reginit, " ".$class_name."_regs[$idx].index = $idx;\n"); push(@obst_reginit, " ".$class_name."_regs[$idx].type = ".translate_reg_type($_->{"type"}).";\n"); + push(@obst_reginit, " ".$class_name."_regs[$idx].data = ".get_execunit_variable_name($_->{"unit"}).";\n"); push(@obst_reginit, "\n"); $idx++; } @@ -311,7 +316,8 @@ print OUT<