Add users for symconst.
[libfirm] / ir / be / test / pbqpHeur2.c
1 unsigned *block;
2 unsigned *block1, *block2, *block3, *block4, *block5, *block6, *block7;
3 unsigned *block8;
4 volatile unsigned arr[100];
5 unsigned ca,cb,cc;
6 unsigned b = 3008;
7
8 // TODO what if we use unsigned* instead of char*?
9 unsigned k3_3(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
10 {
11         char a1, a2, a3;
12         char b1, b2, b3;
13         char c1, c2, c3;
14
15         a1 = i1 + k1;
16         a2 = base[i2 + k1];
17         a3 = base[i3 + k1];
18
19         b1 = i1 + k2;
20         b2 = base[i2 + k2];
21         b3 = base[i3 + k2];
22
23         c1 = i1 + k3;
24         c2 = base[i2 + k3];
25         c3 = base[i3 + k3];
26
27         if (a1 != a2)
28                 return a3;
29         if (b1 != b2)
30                 return b3;
31         if (c1 != c2)
32                 return c3;
33
34         return 0;
35 }
36
37 unsigned k3_3_2(char* base, int i1, int i2, int i3, int k1, int k2, int k3)
38 {
39         char a1, a2, a3;
40         char b1, b2, b3;
41         char c1, c2, c3;
42
43         a1 = base[i1 + k1];
44         a2 = base[i2 + k1];
45         a3 = base[i3 + k1];
46
47         b1 = base[i1 + k2];
48         b2 = base[i2 + k2];
49         b3 = base[i3 + k2];
50
51         c1 = base[i1 + k3];
52         c2 = base[i2 + k3];
53         c3 = base[i3 + k3];
54
55         if (a1 != a2)
56                 return a3;
57         if (b1 != b2)
58                 return b3;
59         if (c1 != c2)
60                 return c3;
61
62         return 0;
63 }
64
65 unsigned k3_3_am(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
66 {
67         char a1, a2, a3;
68         char b1, b2, b3;
69         char c1, c2, c3;
70
71         a1 = base[i1 + k1];
72         a2 = base[i2 + k1];
73         a3 = base[i3 + k1];
74
75         b1 = base[i1 + k2];
76         b2 = base[i2 + k2];
77         b3 = base[i3 + k2];
78
79         c1 = base[i1 + k3];
80         c2 = base[i2 + k3];
81         c3 = base[i3 + k3];
82
83         if (a1 != a2)
84                 return a3;
85         if (b1 != b2)
86                 return b3;
87         if (c1 != c2)
88                 return c3;
89
90         return 0;
91 }
92
93 unsigned g1,g2,g3;
94 unsigned g4,g5,g6;
95 unsigned g7,g8,g9;
96 unsigned g10,g11,g12;
97 unsigned h1,h2,h3;
98 unsigned h4,h5,h6;
99 unsigned h7,h8,h9;
100 unsigned k1,k2,k3;
101 unsigned k4,k5,k6;
102 unsigned k7,k8,k9;
103 unsigned k10,k11,k12;
104 unsigned s1,s2,s3;
105
106 void full_am(unsigned base, int index)
107 {
108         unsigned ca = arr[index] + base;
109
110         /* users for shift const */
111         b = k3_3_am(block, h1, h2, h3, 2, 3, 4);
112         b = k3_3_am(block, h4, h5, h6, 2, 5, 6);
113         b = k3_3_am(block, h7, h8, h9, 2, 7, 8);
114
115         /* users for symconst */
116         b = k3_3(block8, &arr, s2, s3, 51, 52, 53);
117
118         /* users for offset */
119         b = k3_3_2(block1, 4 * index, g2, g3, 31, 32, 33);
120         b = k3_3_2(block2, 4 * index, g5, g6, 34, 35, 36);
121         b = k3_3_2(block6, 4 * index, g7, g8, 37, 38, 39);
122         b = k3_3_2(block7, 4 * index, g9, g10, 40, 41, 42);
123         //b = k3_3(base + 4 * index, base + 4 * index, g8, g9, 37, 38, 39);
124
125         /* users for computed value */
126         //b = k3_3(block1, ca, k2, k3, 7, 8, 9);
127         //b = k3_3(block2, ca, k5, k6, 10, 11, 12);
128         b = k3_3(block3, ca, k8, k9, 13, 14, 15);
129         b = k3_3(block4, ca, k11, k12, 16, 17, 18);
130         b = k3_3(block5, ca, k7, k10, 19, 20, 21);
131 }
132
133 int main(int argc, char **argv) {
134         return 0;
135 }