Added users to shift.
[libfirm] / ir / be / test / pbqpHeur3.c
1 unsigned   a;
2 unsigned   b;
3 unsigned  *gi1, gi2, gi3, gi4, gi5;
4 unsigned  *gi11, gi12, gi13, gi14, gi15;
5 unsigned  *gi101, gi102, gi103, gi104, gi105;
6 unsigned  *gi111, gi112, gi113, gi114, gi115;
7 unsigned  *gi201, gi202, gi203, gi204, gi205;
8 unsigned  *gi211, gi212, gi213, gi214, gi215;
9 unsigned  *gi301, gi302, gi303, gi304, gi305;
10 unsigned  *gi311, gi312, gi313, gi314, gi315;
11 unsigned  *gi401, gi402, gi403, gi404, gi405;
12 unsigned  *gi411, gi412, gi413, gi414, gi415;
13 unsigned  *gi501, gi502, gi503, gi504, gi505;
14 unsigned  *gi511, gi512, gi513, gi514, gi515;
15 unsigned  *gi601, gi602, gi603, gi604, gi605;
16 unsigned  *gi611, gi612, gi613, gi614, gi615;
17 unsigned  *gi701, gi702, gi703, gi704, gi705;
18 unsigned  *gi711, gi712, gi713, gi714, gi715;
19 unsigned  *gi801, gi802, gi803, gi804, gi805;
20 unsigned  *gi811, gi812, gi813, gi814, gi815;
21 unsigned **gp;
22 unsigned   use;
23
24 int main(int argc, char **argv)
25 {
26         return 0;
27 }
28
29 unsigned add_1_shift_users(unsigned i1, unsigned i2, unsigned i3,
30                 char *k1, char *k2,     char *k3,
31                 unsigned **gp1, unsigned **gp2, unsigned **gp3, unsigned **gp4,
32                 unsigned **gp5, unsigned **gp6, unsigned **gp7, unsigned **gp8,
33                 unsigned **gp9,
34                 const int c1, const int c2, const int c3)
35 {
36         unsigned tmp1 = i1 + c1;
37         unsigned tmp2 = (i2 << 3) + c2;
38         unsigned tmp3 = (i3 << 3) + c3;
39
40         *gp1 = tmp1 + k1;
41         *gp2 = tmp2 + k1;
42         *gp3 = tmp3 + k1;
43
44         *gp4 = tmp1 + k2;
45         *gp5 = tmp2 + k2;
46         *gp6 = tmp3 + k2;
47
48         *gp7 = tmp1 + k3;
49         *gp8 = tmp2 + k3;
50         *gp9 = tmp3 + k3;
51
52         return 0;
53 }
54
55 unsigned add_3_add_const_shift_users(unsigned i1, unsigned i2, unsigned i3,
56                 char *k1, char *k2,     char *k3,
57                 unsigned **gp1, unsigned **gp2, unsigned **gp3, unsigned **gp4,
58                 unsigned **gp5, unsigned **gp6, unsigned **gp7, unsigned **gp8,
59                 unsigned **gp9,
60                 const int c1, const int c2)
61 {
62         unsigned tmp2 = (i2 << 3) + c1;
63         unsigned tmp3 = (i3 << 3) + c2;
64
65         *gp1 = i1 + k1;
66         *gp2 = tmp2 + k1;
67         *gp3 = tmp3 + k1;
68
69         *gp4 = i1 + k2;
70         *gp5 = tmp2 + k2;
71         *gp6 = tmp3 + k2;
72
73         *gp7 = i1 + k3;
74         *gp8 = tmp2 + k3;
75         *gp9 = tmp3 + k3;
76
77         return 0;
78 }
79
80 void diamond(void)
81 {
82         unsigned as  = a << 3;
83         unsigned asb = as + 123235;
84         unsigned asc = as + 235346;
85         unsigned sum = asb + asc;
86
87         b = sum;
88
89         /* Add 6 users for asb. */
90         use = add_3_add_const_shift_users(asb, gi1, gi2,
91                         &gi3, &gi4, &gi5,
92                         &gp[0], &gp[1], &gp[2], &gp[3], &gp[4], &gp[5], &gp[6], &gp[7], &gp[8],
93                         7, 8);
94         use = add_3_add_const_shift_users(asb, gi11, gi12,
95                         &gi13, &gi14, &gi15,
96                         &gp[10], &gp[11], &gp[12], &gp[13], &gp[14], &gp[15], &gp[16], &gp[17], &gp[18],
97                         17, 18);
98
99         /* Add 6 users for asc. */
100         use = add_3_add_const_shift_users(asc, gi101, gi102,
101                         &gi103, &gi104, &gi105,
102                         &gp[100], &gp[101], &gp[102], &gp[103], &gp[104], &gp[105], &gp[106], &gp[107], &gp[108],
103                         107, 108);
104         use = add_3_add_const_shift_users(asc, gi111, gi112,
105                         &gi113, &gi114, &gi115,
106                         &gp[110], &gp[111], &gp[112], &gp[113], &gp[114], &gp[115], &gp[116], &gp[117], &gp[118],
107                         117, 118);
108
109         /* Add 7 users for as. */
110         use = add_1_shift_users(as, gi201, gi202,
111                         &gi203, &gi204, &gi205,
112                         &gp[200], &gp[201], &gp[202], &gp[203], &gp[204], &gp[205], &gp[206], &gp[207], &gp[208],
113                         200, 201, 202);
114         use = add_1_shift_users(as, gi301, gi302,
115                         &gi303, &gi304, &gi305,
116                         &gp[300], &gp[301], &gp[302], &gp[303], &gp[304], &gp[305], &gp[306], &gp[307], &gp[308],
117                         300, 301, 302);
118         use = add_1_shift_users(as, gi401, gi402,
119                         &gi403, &gi404, &gi405,
120                         &gp[400], &gp[401], &gp[402], &gp[403], &gp[404], &gp[405], &gp[406], &gp[407], &gp[408],
121                         400, 401, 402);
122         use = add_1_shift_users(as, gi501, gi502,
123                         &gi503, &gi504, &gi505,
124                         &gp[500], &gp[501], &gp[502], &gp[503], &gp[504], &gp[505], &gp[506], &gp[507], &gp[508],
125                         500, 501, 502);
126         use = add_1_shift_users(as, gi601, gi602,
127                         &gi603, &gi604, &gi605,
128                         &gp[600], &gp[601], &gp[602], &gp[603], &gp[604], &gp[605], &gp[606], &gp[607], &gp[608],
129                         600, 601, 602);
130         use = add_1_shift_users(as, gi701, gi702,
131                         &gi703, &gi704, &gi705,
132                         &gp[700], &gp[701], &gp[702], &gp[703], &gp[704], &gp[705], &gp[706], &gp[707], &gp[708],
133                         700, 701, 702);
134         use = add_1_shift_users(as, gi801, gi802,
135                         &gi803, &gi804, &gi805,
136                         &gp[800], &gp[801], &gp[802], &gp[803], &gp[804], &gp[805], &gp[806], &gp[807], &gp[808],
137                         800, 801, 802);
138 }