All heuristic applications at right place, but there's a conv between :-(
[libfirm] / ir / be / test / pbqpHeur2.c
1 unsigned *block;
2 unsigned *block1, *block2, *block3, *block4, *block5;
3 volatile char arr[100];
4 unsigned ca,cb,cc;
5 unsigned b = 3008;
6
7 // TODO what if we use unsigned* instead of char*?
8 unsigned k3_3(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
9 {
10         char a1, a2, a3;
11         char b1, b2, b3;
12         char c1, c2, c3;
13
14         a1 = i1 + k1;
15         a2 = base[i2 + k1];
16         a3 = base[i3 + k1];
17
18         b1 = i1 + k2;
19         b2 = base[i2 + k2];
20         b3 = base[i3 + k2];
21
22         c1 = i1 + k3;
23         c2 = base[i2 + k3];
24         c3 = base[i3 + k3];
25
26         if (a1 != a2)
27                 return a3;
28         if (b1 != b2)
29                 return b3;
30         if (c1 != c2)
31                 return c3;
32
33         return 0;
34 }
35
36 unsigned k3_3_am(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
37 {
38         char a1, a2, a3;
39         char b1, b2, b3;
40         char c1, c2, c3;
41
42         a1 = base[i1 + k1];
43         a2 = base[i2 + k1];
44         a3 = base[i3 + k1];
45
46         b1 = base[i1 + k2];
47         b2 = base[i2 + k2];
48         b3 = base[i3 + k2];
49
50         c1 = base[i1 + k3];
51         c2 = base[i2 + k3];
52         c3 = base[i3 + k3];
53
54         if (a1 != a2)
55                 return a3;
56         if (b1 != b2)
57                 return b3;
58         if (c1 != c2)
59                 return c3;
60
61         return 0;
62 }
63
64 unsigned g1,g2,g3;
65 unsigned g4,g5,g6;
66 unsigned g7,g8,g9;
67 unsigned h1,h2,h3;
68 unsigned h4,h5,h6;
69 unsigned h7,h8,h9;
70 unsigned k1,k2,k3;
71 unsigned k4,k5,k6;
72 unsigned k7,k8,k9;
73 unsigned k10,k11,k12;
74
75 void full_am(unsigned base, unsigned index)
76 {
77         unsigned ca = arr[base + 4 * index] + b;
78
79         /* user for shift const */
80         b = k3_3_am(block, h1, h2, h3, 2, 3, 4);
81         b = k3_3_am(block, h4, h5, h6, 2, 5, 6);
82         b = k3_3_am(block, h7, h8, h9, 2, 7, 8);
83
84         b = k3_3(block1, base + 4 * index, g2, g3, 31, 32, 33);
85         b = k3_3(block2, base + 4 * index, g5, g6, 34, 35, 36);
86         //b = k3_3(base + 4 * index, base + 4 * index, g8, g9, 37, 38, 39);
87
88         /* user for computed value */
89         //b = k3_3(block1, ca, k2, k3, 7, 8, 9);
90         //b = k3_3(block2, ca, k5, k6, 10, 11, 12);
91         b = k3_3(block3, ca, k8, k9, 13, 14, 15);
92         b = k3_3(block4, ca, k11, k12, 16, 17, 18);
93         b = k3_3(block5, ca, k7, k10, 19, 20, 21);
94 }
95
96 int main(int argc, char **argv) {
97         return 0;
98 }