From 516482fa4892951b0f20a507f10cc7488ac6b250 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Fri, 6 Oct 2006 14:20:34 +0000 Subject: [PATCH] added support for requirements: different from all in --- ir/be/scripts/generate_regalloc_if.pl | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ir/be/scripts/generate_regalloc_if.pl b/ir/be/scripts/generate_regalloc_if.pl index 0f310b36e..9201745b5 100755 --- a/ir/be/scripts/generate_regalloc_if.pl +++ b/ir/be/scripts/generate_regalloc_if.pl @@ -354,7 +354,7 @@ sub build_inout_idx_class { else { my @regs = split(/ /, $reqs[$idx]); GET_CLASS: foreach my $reg (@regs) { - if ($reg =~ /!?(in|out)\_r\d+/) { + if ($reg =~ /!?(in|out)\_r\d+/ || $reg =~ /!in/) { $class = "UNKNOWN_CLASS"; } else { @@ -439,7 +439,13 @@ sub generate_requirements { push(@req_type_mask, "arch_register_req_type_should_be_same"); } if (defined($different_pos)) { - push(@req_type_mask, "arch_register_req_type_should_be_different"); + if ($different_pos == 666) { + push(@req_type_mask, "arch_register_req_type_should_be_different_from_all"); + undef $different_pos; + } + else { + push(@req_type_mask, "arch_register_req_type_should_be_different"); + } } $tmp .= "&_".$op."_reg_req_$inout\_$idx\n"; @@ -543,6 +549,10 @@ CHECK_REQS: foreach (@regs) { $class = $idx_class[$2 - 1]; next CHECK_REQS; } + elsif (/!in/) { + $class = $idx_class[0]; + return ($class, 0, undef, 666); + } # check for negate if (substr($_, 0, 1) eq "!") { -- 2.20.1