Changed header file usage (abcremoval.h).
[mono.git] / mono / mini / build_relations_propagation_table.pl
1 #!/usr/bin/perl
2
3 @relations = (
4   'MONO_NO_RELATION',  # 000
5   'MONO_EQ_RELATION',  # 001
6   'MONO_LT_RELATION',  # 010
7   'MONO_LE_RELATION',  # 011 (MONO_LT_RELATION|MONO_EQ_RELATION)
8   'MONO_GT_RELATION',  # 100
9   'MONO_GE_RELATION',  # 101 (MONO_GT_RELATION|MONO_EQ_RELATION)
10   'MONO_NE_RELATION',  # 110 (MONO_LT_RELATION|MONO_GT_RELATION)
11   'MONO_ANY_RELATION', # 111 (MONO_EQ_RELATION|MONO_LT_RELATION|MONO_GT_RELATION)
12 );
13
14 sub build_propagated_relation
15 {
16   my ( $main_relation, $related_relation ) = @_;
17   my $result = 'MONO_UNKNOWN_RELATION';
18   
19   if ( ($main_relation eq 'MONO_EQ_RELATION') && ($related_relation ne 'MONO_NO_RELATION') )
20   {
21     $result = $related_relation;
22   }
23   elsif ( $main_relation eq 'MONO_LT_RELATION' )
24   {
25     if ( $related_relation eq 'MONO_EQ_RELATION' )
26     {
27       $result = 'MONO_LT_RELATION';
28     }
29     elsif ( $related_relation eq 'MONO_LT_RELATION' )
30     {
31       $result = 'MONO_LT_RELATION';
32     }
33     elsif ( $related_relation eq 'MONO_LE_RELATION' )
34     {
35       $result = 'MONO_LT_RELATION';
36     }
37     else
38     {
39       $result = 'MONO_ANY_RELATION';
40     }
41   }
42   elsif ( $main_relation eq 'MONO_LE_RELATION' )
43   {
44     if ( $related_relation eq 'MONO_EQ_RELATION' )
45     {
46       $result = 'MONO_LE_RELATION';
47     }
48     elsif ( $related_relation eq 'MONO_LT_RELATION' )
49     {
50       $result = 'MONO_LT_RELATION';
51     }
52     elsif ( $related_relation eq 'MONO_LE_RELATION' )
53     {
54       $result = 'MONO_LE_RELATION';
55     }
56     else
57     {
58       $result = 'MONO_ANY_RELATION';
59     }
60   }
61   
62   elsif ( $main_relation eq 'MONO_GT_RELATION' )
63   {
64     if ( $related_relation eq 'MONO_EQ_RELATION' )
65     {
66       $result = 'MONO_GT_RELATION';
67     }
68     elsif ( $related_relation eq 'MONO_GT_RELATION' )
69     {
70       $result = 'MONO_GT_RELATION';
71     }
72     elsif ( $related_relation eq 'MONO_GE_RELATION' )
73     {
74       $result = 'MONO_GT_RELATION';
75     }
76     else
77     {
78       $result = 'MONO_ANY_RELATION';
79     }
80   }
81   elsif ( $main_relation eq 'MONO_GE_RELATION' )
82   {
83     if ( $related_relation eq 'MONO_EQ_RELATION' )
84     {
85       $result = 'MONO_GE_RELATION';
86     }
87     elsif ( $related_relation eq 'MONO_GT_RELATION' )
88     {
89       $result = 'MONO_GT_RELATION';
90     }
91     elsif ( $related_relation eq 'MONO_GE_RELATION' )
92     {
93       $result = 'MONO_GE_RELATION';
94     }
95     else
96     {
97       $result = 'MONO_ANY_RELATION';
98     }
99   }
100   else
101   {
102     $result = 'MONO_ANY_RELATION';
103   }
104   
105   $result;
106 }
107
108 open FILE, ">propagated_relations_table.def";
109
110 for ( my $mr = 0; $mr < 8; $mr++ )
111 {
112   for ( my $pr = 0; $pr < 8; $pr++ )
113   {
114     my $propagated_relation = &build_propagated_relation( $relations[$mr], $relations[$pr] );
115     print FILE "  $propagated_relation, /* $relations[$mr] - $relations[$pr] */\n";
116   }
117 }
118
119 close FILE;