e900e2706e4867cbc974e197f9010b390ba072e0
[libfirm] / ir / be / test / pbqpHeur2.c
1 unsigned *block;
2 unsigned *block1, *block2, *block3, *block4, *block5, *block6, *block7;
3 volatile unsigned 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_2(char* base, int i1, int i2, int i3, int k1, int k2, int 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 k3_3_am(char* base, unsigned i1, unsigned i2, unsigned i3, unsigned k1, unsigned k2, unsigned k3)
65 {
66         char a1, a2, a3;
67         char b1, b2, b3;
68         char c1, c2, c3;
69
70         a1 = base[i1 + k1];
71         a2 = base[i2 + k1];
72         a3 = base[i3 + k1];
73
74         b1 = base[i1 + k2];
75         b2 = base[i2 + k2];
76         b3 = base[i3 + k2];
77
78         c1 = base[i1 + k3];
79         c2 = base[i2 + k3];
80         c3 = base[i3 + k3];
81
82         if (a1 != a2)
83                 return a3;
84         if (b1 != b2)
85                 return b3;
86         if (c1 != c2)
87                 return c3;
88
89         return 0;
90 }
91
92 unsigned g1,g2,g3;
93 unsigned g4,g5,g6;
94 unsigned g7,g8,g9;
95 unsigned g10,g11,g12;
96 unsigned h1,h2,h3;
97 unsigned h4,h5,h6;
98 unsigned h7,h8,h9;
99 unsigned k1,k2,k3;
100 unsigned k4,k5,k6;
101 unsigned k7,k8,k9;
102 unsigned k10,k11,k12;
103
104 void full_am(unsigned base, int index)
105 {
106         unsigned ca = arr[index] + base;
107
108         /* user for shift const */
109         b = k3_3_am(block, h1, h2, h3, 2, 3, 4);
110         b = k3_3_am(block, h4, h5, h6, 2, 5, 6);
111         b = k3_3_am(block, h7, h8, h9, 2, 7, 8);
112
113         b = k3_3_2(block1, 4 * index, g2, g3, 31, 32, 33);
114         b = k3_3_2(block2, 4 * index, g5, g6, 34, 35, 36);
115         b = k3_3_2(block6, 4 * index, g7, g8, 37, 38, 39);
116         b = k3_3_2(block7, 4 * index, g9, g10, 40, 41, 42);
117         //b = k3_3(base + 4 * index, base + 4 * index, g8, g9, 37, 38, 39);
118
119         /* user for computed value */
120         //b = k3_3(block1, ca, k2, k3, 7, 8, 9);
121         //b = k3_3(block2, ca, k5, k6, 10, 11, 12);
122         b = k3_3(block3, ca, k8, k9, 13, 14, 15);
123         b = k3_3(block4, ca, k11, k12, 16, 17, 18);
124         b = k3_3(block5, ca, k7, k10, 19, 20, 21);
125 }
126
127 int main(int argc, char **argv) {
128         return 0;
129 }