Continued example.
[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 *gp10, *gp11, *gp12, *gp13, *gp14, *gp15, *gp16, *gp17, *gp18;
9 unsigned use;
10 volatile unsigned volatile_use;
11 unsigned **volatile_p;
12
13 int main(int argc, char **argv)
14 {
15         return 0;
16 }
17
18 unsigned k3_3(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
19 {
20         char a1, a2, a3;
21         char b1, b2, b3;
22         char c1, c2, c3;
23
24         a1 = i1 + k1;
25         a2 = base[i2 + k1];
26         a3 = base[i3 + k1];
27
28         b1 = i1 + k2;
29         b2 = base[i2 + k2];
30         b3 = base[i3 + k2];
31
32         c1 = i1 + k3;
33         c2 = base[i2 + k3];
34         c3 = base[i3 + k3];
35
36         if (a1 != a2)
37                 return a3;
38         if (b1 != b2)
39                 return b3;
40         if (c1 != c2)
41                 return c3;
42
43         return 0;
44 }
45
46 unsigned k3_3_am(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
47 {
48         char a1, a2, a3;
49         char b1, b2, b3;
50         char c1, c2, c3;
51
52         a1 = base[i1 + k1];
53         a2 = base[i2 + k1];
54         a3 = base[i3 + k1];
55
56         b1 = base[i1 + k2];
57         b2 = base[i2 + k2];
58         b3 = base[i3 + k2];
59
60         c1 = base[i1 + k3];
61         c2 = base[i2 + k3];
62         c3 = base[i3 + k3];
63
64         if (a1 != a2)
65                 return a3;
66         if (b1 != b2)
67                 return b3;
68         if (c1 != c2)
69                 return c3;
70
71         return 0;
72 }
73
74 unsigned k3_3_2(char* base, int i1, int i2, int i3, int k1, int k2, int k3)
75 {
76         char a1, a2, a3;
77         char b1, b2, b3;
78         char c1, c2, c3;
79
80         a1 = base[i1 + k1];
81         a2 = base[i2 + k1];
82         a3 = base[i3 + k1];
83
84         b1 = base[i1 + k2];
85         b2 = base[i2 + k2];
86         b3 = base[i3 + k2];
87
88         c1 = base[i1 + k3];
89         c2 = base[i2 + k3];
90         c3 = base[i3 + k3];
91
92         if (a1 != a2)
93                 return a3;
94         if (b1 != b2)
95                 return b3;
96         if (c1 != c2)
97                 return c3;
98
99         return 0;
100 }
101
102 unsigned k3_3_3(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
103 {
104         volatile_use = i1 + k1;
105         volatile_use = i2 + k1;
106         volatile_use = i3 + k1;
107
108         volatile_use = i1 + k2;
109         volatile_use = i2 + k2;
110         volatile_use = i3 + k2;
111
112         volatile_use = i1 + k3;
113         volatile_use = i2 + k3;
114         volatile_use = i3 + k3;
115
116         return 0;
117 }
118
119 unsigned k3_3_4(char* base, unsigned i1, unsigned i2, unsigned i3, char *k1, char *k2, char *k3)
120 {
121         gp10 = i1 + k1;
122         gp11 = i2 + k1;
123         gp12 = i3 + k1;
124
125         gp13 = i1 + k2;
126         gp14 = i2 + k2;
127         gp15 = i3 + k2;
128
129         gp16 = i1 + k3;
130         gp17 = i2 + k3;
131         gp18 = i3 + k3;
132
133         return 0;
134 }
135
136 void diamond(void)
137 {
138         unsigned as  = a << 3;
139         unsigned asb = as + 123235;
140         unsigned asc = as + 235346;
141         unsigned sum = asb + asc;
142
143         d = sum;
144
145         use = k3_3_4(block1, asb, gi1, gi2, &gi3, &gi4, &gi5);
146 //      use = k3_3(block2, asb, gi3, gi4, 13, 14, 15);
147 //
148 //      use = k3_3(block3, asb, gi5, gi6, 16, 17, 18);
149 //      use = k3_3(block4, asb, gi7, gi8, 19, 20, 21);
150 //
151 //      use = k3_3(block5, asb, gi9, gi10, 22, 23, 24);
152 //      use = k3_3(block6, asb, gi11, gi12, 25, 26, 27);
153 }