Next try to get a wrong infinity result when using PBQP transformer.
[libfirm] / ir / be / test / pbqpHeur3.c
1 unsigned a;
2 unsigned b;
3 unsigned c;
4 unsigned d;
5
6 unsigned *block1, *block2, *block3, *block4, *block5, *block6;
7 unsigned gi1, gi2, gi3, gi4, gi5, gi6, gi7, gi8, gi9, gi10, gi11, gi12;
8 unsigned use;
9
10 int main(int argc, char **argv)
11 {
12         return 0;
13 }
14
15 unsigned k3_3(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
16 {
17         char a1, a2, a3;
18         char b1, b2, b3;
19         char c1, c2, c3;
20
21         a1 = i1 + k1;
22         a2 = base[i2 + k1];
23         a3 = base[i3 + k1];
24
25         b1 = i1 + k2;
26         b2 = base[i2 + k2];
27         b3 = base[i3 + k2];
28
29         c1 = i1 + k3;
30         c2 = base[i2 + k3];
31         c3 = base[i3 + k3];
32
33         if (a1 != a2)
34                 return a3;
35         if (b1 != b2)
36                 return b3;
37         if (c1 != c2)
38                 return c3;
39
40         return 0;
41 }
42
43 unsigned k3_3_am(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
44 {
45         char a1, a2, a3;
46         char b1, b2, b3;
47         char c1, c2, c3;
48
49         a1 = base[i1 + k1];
50         a2 = base[i2 + k1];
51         a3 = base[i3 + k1];
52
53         b1 = base[i1 + k2];
54         b2 = base[i2 + k2];
55         b3 = base[i3 + k2];
56
57         c1 = base[i1 + k3];
58         c2 = base[i2 + k3];
59         c3 = base[i3 + k3];
60
61         if (a1 != a2)
62                 return a3;
63         if (b1 != b2)
64                 return b3;
65         if (c1 != c2)
66                 return c3;
67
68         return 0;
69 }
70
71 unsigned k3_3_2(char* base, int i1, int i2, int i3, int k1, int k2, int k3)
72 {
73         char a1, a2, a3;
74         char b1, b2, b3;
75         char c1, c2, c3;
76
77         a1 = base[i1 + k1];
78         a2 = base[i2 + k1];
79         a3 = base[i3 + k1];
80
81         b1 = base[i1 + k2];
82         b2 = base[i2 + k2];
83         b3 = base[i3 + k2];
84
85         c1 = base[i1 + k3];
86         c2 = base[i2 + k3];
87         c3 = base[i3 + k3];
88
89         if (a1 != a2)
90                 return a3;
91         if (b1 != b2)
92                 return b3;
93         if (c1 != c2)
94                 return c3;
95
96         return 0;
97 }
98
99 unsigned k3_3_3(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
100 {
101         char a1, a2, a3;
102         char b1, b2, b3;
103         char c1, c2, c3;
104
105         a1 = i1 + k1;
106         a2 = base[i2 + k1];
107         a3 = base[i3 + k1];
108
109         b1 = i1 + k2;
110         b2 = base[i2 + k2];
111         b3 = base[i3 + k2];
112
113         c1 = i1 + k3;
114         c2 = base[i2 + k3];
115         c3 = base[i3 + k3];
116
117         if (a1 != a2)
118                 return a3;
119         if (b1 != b2)
120                 return b3;
121         if (c1 != c2)
122                 return c3;
123
124         return 0;
125 }
126
127 void diamond(void)
128 {
129         unsigned as  = a << 3;
130         unsigned asb = as + 123235;
131         unsigned asc = as + 235346;
132         unsigned sum = asb + asc;
133
134         d = sum;
135
136         use = k3_3_3(block1, asb, gi1, gi2, 10, 11, 12);
137 //      use = k3_3(block2, asb, gi3, gi4, 13, 14, 15);
138 //
139 //      use = k3_3(block3, asb, gi5, gi6, 16, 17, 18);
140 //      use = k3_3(block4, asb, gi7, gi8, 19, 20, 21);
141 //
142 //      use = k3_3(block5, asb, gi9, gi10, 22, 23, 24);
143 //      use = k3_3(block6, asb, gi11, gi12, 25, 26, 27);
144 }