From 7ac20cbc436a40fedf513eeb23fd6e86275f5903 Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Tue, 18 Sep 2007 14:52:13 +0000 Subject: [PATCH] remove old (nonfinished) flags handling, allow specification of flags for register classes [r15859] --- ir/be/scripts/generate_regalloc_if.pl | 32 ++++++++++++++++----------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/ir/be/scripts/generate_regalloc_if.pl b/ir/be/scripts/generate_regalloc_if.pl index 6dff9e143..e91a01498 100755 --- a/ir/be/scripts/generate_regalloc_if.pl +++ b/ir/be/scripts/generate_regalloc_if.pl @@ -34,7 +34,6 @@ my $target_dir = $ARGV[1]; our $arch; our %reg_classes; our %cpu; -our %flags = (); # include spec file @@ -121,12 +120,29 @@ foreach my $class_name (keys(%reg_classes)) { $class_name = $arch."_".$class_name; $numregs = "N_".$class_name."_REGS"; $class_ptr = "&".$arch."_reg_classes[CLASS_".$class_name."]"; - $class_mode = pop(@class)->{"mode"}; + my $flags = pop(@class); + $class_mode = $flags->{"mode"}; + my $class_flags = $flags->{"flags"}; + my $flags_prepared = ""; + + if(defined($class_flags)) { + my $first = 1; + foreach my $flag (split(/\|/, $class_flags)) { + if(!$first) { + $flags_prepared .= "|"; + } else { + $first = 0; + } + $flags_prepared .= "arch_register_class_flag_$flag"; + } + } else { + $flags_prepared = "0"; + } push(@obst_regtypes_decl, "extern const arch_register_t ${class_name}_regs[$numregs];\n"); push(@obst_classdef, "\tCLASS_$class_name = $class_idx,\n"); - push(@obst_regclasses, "{ \"$class_name\", $numregs, NULL, ".$class_name."_regs }"); + push(@obst_regclasses, "{ \"$class_name\", $numregs, NULL, ".$class_name."_regs, $flags_prepared }"); my $idx = 0; push(@obst_reginit, "\t/* set largest possible mode for '$class_name' */\n"); @@ -165,16 +181,6 @@ foreach my $class_name (keys(%reg_classes)) { $class_idx++; } -push(@obst_regdef, "enum flag_indices {\n"); -foreach my $flag (keys(%flags)) { - my %f = %{ $flags{$flag} }; - - push(@obst_regdef, "\tFLAG_$flag,\n"); -} -push(@obst_regdef, "\tFLAG_LAST\n"); -push(@obst_regdef, "};\n"); -push(@obst_regtypes_decl, "extern arch_flag_t ${arch}_flags[];\n"); - push(@obst_classdef, "\tN_CLASSES = ".scalar(keys(%reg_classes))."\n"); push(@obst_classdef, "};\n\n"); -- 2.20.1