From: Matthias Braun Date: Mon, 2 Jul 2007 11:46:40 +0000 (+0000) Subject: mangle register class name into requirement names X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=fd74fbfd9880420c8bfa884b8ea99b5f964f5c5e;p=libfirm mangle register class name into requirement names [r14873] --- diff --git a/ir/be/scripts/generate_new_opcodes.pl b/ir/be/scripts/generate_new_opcodes.pl index 8aedc397b..a9b6a75c8 100755 --- a/ir/be/scripts/generate_new_opcodes.pl +++ b/ir/be/scripts/generate_new_opcodes.pl @@ -855,7 +855,8 @@ TP_SEARCH: foreach my $cur_type (keys(%cpu)) { } sub mangle_requirements { - my $reqs = shift; + my $reqs = shift; + my $class = shift; my @alternatives = split(/ /, $reqs); for(my $idx = 0; $idx < scalar(@alternatives); $idx++) { @@ -864,7 +865,7 @@ sub mangle_requirements { @alternatives = sort @alternatives; - my $name = join('_', @alternatives); + my $name = $class."_".join('_', @alternatives); return $name; } @@ -1054,8 +1055,8 @@ CHECK_REQS: foreach (@regs) { my @cur_class = @{ $reg_classes{"$class"} }; for (my $idx = 0; $idx <= $#cur_class; $idx++) { if (defined($cur_class[$idx]{"type"}) && ($cur_class[$idx]{"type"} & 4)) { - my $reg = $cur_class[$idx]{"name"}; - my $regix = get_reg_index($reg); + my $reg = $cur_class[$idx]{"name"}; + my $regix = get_reg_index($reg); my $arrayp = $regix / 32; push(@{$limit_array[$arrayp]}, $reg); $limit_reqs .= "$reg "; @@ -1064,10 +1065,11 @@ CHECK_REQS: foreach (@regs) { } if ($has_limit == 1) { - $limit_name = "${arch}_limit_".mangle_requirements($limit_reqs); + $limit_name = "${arch}_limit_".mangle_requirements($limit_reqs, $class); if(defined($limit_bitsets{$limit_name})) { - return $limit_bitsets{$limit_name}; + $limit_name = $limit_bitsets{$limit_name}; + return ($class, $limit_name, $same_pos, $different_pos); } $limit_bitsets{$limit_name} = $limit_name; @@ -1117,16 +1119,13 @@ sub generate_requirements { my $op = shift; my $idx = shift; my $is_in = shift; - - my $name = "${arch}_requirements_".mangle_requirements($reqs); - if(defined($requirements{$name})) { - return $name; - } - $requirements{$name} = $name; + my $class = ""; + my $result; if ($reqs eq "none") { - push(@obst_reg_reqs, <