996
|
1 /* Automatically generated output, edit source and recompile to change */
|
|
2 #include "oil.h"
|
|
3 int optimize_pass1_6(node *np)
|
|
4 { int opted=0;
|
|
5 unsigned long c,c1,c2,c3,c4,c5,c6,c7,c8,c9;
|
|
6 unsigned long x,x1,x2,x3,x4,x5,x6,x7,x8,x9,r;
|
|
7 int tempw;
|
|
8 node *tp;
|
|
9 checknodeactbits(np);
|
|
10 if(np->opcode==C_LSHIFTBY &&
|
|
11 np->lval->opcode==C_AND &&
|
|
12 np->lval->lval->opcode==XOR &&
|
|
13 np->lval->lval->width==32 &&
|
|
14 np->lval->lval->rval->opcode==C_OR &&
|
|
15 (np->lval->lval->rval->lval->opcode==MESH || np->lval->lval->rval->lval->opcode==MESH32) &&
|
|
16 np->lval->lval->rval->lval->constant==1431655765LU &&
|
|
17 (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
|
|
18 np->lval->rval->constant==1431655765LU &&
|
|
19 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
20 np->rval->constant==1LU)
|
|
21 do
|
|
22 {
|
|
23 x1=np->lval->lval->rval->rval->constant; c1=np->lval->lval->rval->rval->optdata;
|
|
24 OPTING(com1z0);
|
|
25 tp=newnode();
|
|
26 MAYBENEWNODE(tp);
|
|
27 tp->opcode=C_XOR;
|
|
28 tp->width=32;
|
|
29 MAYBENEWNODE(tp->lval);
|
|
30 tp->lval->opcode=C_AND;
|
|
31 tp->lval->width=32;
|
|
32 tp->lval->lval=np->lval->lval->rval->rval;
|
|
33 np->lval->lval->rval->rval=0;
|
|
34 MAYBENEWNODE(tp->lval->rval);
|
|
35 tp->lval->rval->opcode=MESH32;
|
|
36 tp->lval->rval->width=32;
|
|
37 tp->lval->rval->constant=(2863311530LU);
|
|
38 MAYBENEWNODE(tp->rval);
|
|
39 tp->rval->opcode=MESH32;
|
|
40 tp->rval->width=32;
|
|
41 tp->rval->constant=(2863311530LU);
|
|
42 nodefree(np->lval); nodefree(np->rval);
|
|
43 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
44 } while(0);
|
|
45
|
|
46 checknodeactbits(np);
|
|
47 if(np->opcode==C_LSHIFTBY &&
|
|
48 np->lval->opcode==C_AND &&
|
|
49 (np->lval->lval->opcode==MESH || np->lval->lval->opcode==MESH32) &&
|
|
50 np->lval->lval->constant==1431655765LU &&
|
|
51 np->lval->rval->opcode==XOR &&
|
|
52 np->lval->rval->width==32 &&
|
|
53 np->lval->rval->rval->opcode==C_OR &&
|
|
54 (np->lval->rval->rval->rval->opcode==MESH || np->lval->rval->rval->rval->opcode==MESH32) &&
|
|
55 np->lval->rval->rval->rval->constant==1431655765LU &&
|
|
56 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
57 np->rval->constant==1LU)
|
|
58 do
|
|
59 {
|
|
60 x1=np->lval->rval->rval->lval->constant; c1=np->lval->rval->rval->lval->optdata;
|
|
61 OPTING(com1z0);
|
|
62 tp=newnode();
|
|
63 MAYBENEWNODE(tp);
|
|
64 tp->opcode=C_XOR;
|
|
65 tp->width=32;
|
|
66 MAYBENEWNODE(tp->lval);
|
|
67 tp->lval->opcode=C_AND;
|
|
68 tp->lval->width=32;
|
|
69 tp->lval->lval=np->lval->rval->rval->lval;
|
|
70 np->lval->rval->rval->lval=0;
|
|
71 MAYBENEWNODE(tp->lval->rval);
|
|
72 tp->lval->rval->opcode=MESH32;
|
|
73 tp->lval->rval->width=32;
|
|
74 tp->lval->rval->constant=(2863311530LU);
|
|
75 MAYBENEWNODE(tp->rval);
|
|
76 tp->rval->opcode=MESH32;
|
|
77 tp->rval->width=32;
|
|
78 tp->rval->constant=(2863311530LU);
|
|
79 nodefree(np->lval); nodefree(np->rval);
|
|
80 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
81 } while(0);
|
|
82
|
|
83 checknodeactbits(np);
|
|
84 if(np->opcode==C_LSHIFTBY &&
|
|
85 np->lval->opcode==C_AND &&
|
|
86 (np->lval->lval->opcode==MESH || np->lval->lval->opcode==MESH32) &&
|
|
87 np->lval->lval->constant==1431655765LU &&
|
|
88 np->lval->rval->opcode==XOR &&
|
|
89 np->lval->rval->width==32 &&
|
|
90 np->lval->rval->rval->opcode==C_OR &&
|
|
91 (np->lval->rval->rval->lval->opcode==MESH || np->lval->rval->rval->lval->opcode==MESH32) &&
|
|
92 np->lval->rval->rval->lval->constant==1431655765LU &&
|
|
93 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
94 np->rval->constant==1LU)
|
|
95 do
|
|
96 {
|
|
97 x1=np->lval->rval->rval->rval->constant; c1=np->lval->rval->rval->rval->optdata;
|
|
98 OPTING(com1z0);
|
|
99 tp=newnode();
|
|
100 MAYBENEWNODE(tp);
|
|
101 tp->opcode=C_XOR;
|
|
102 tp->width=32;
|
|
103 MAYBENEWNODE(tp->lval);
|
|
104 tp->lval->opcode=C_AND;
|
|
105 tp->lval->width=32;
|
|
106 tp->lval->lval=np->lval->rval->rval->rval;
|
|
107 np->lval->rval->rval->rval=0;
|
|
108 MAYBENEWNODE(tp->lval->rval);
|
|
109 tp->lval->rval->opcode=MESH32;
|
|
110 tp->lval->rval->width=32;
|
|
111 tp->lval->rval->constant=(2863311530LU);
|
|
112 MAYBENEWNODE(tp->rval);
|
|
113 tp->rval->opcode=MESH32;
|
|
114 tp->rval->width=32;
|
|
115 tp->rval->constant=(2863311530LU);
|
|
116 nodefree(np->lval); nodefree(np->rval);
|
|
117 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
118 } while(0);
|
|
119
|
|
120 checknodeactbits(np);
|
|
121 if(np->opcode==C_AND &&
|
|
122 np->lval->opcode==XOR &&
|
|
123 np->lval->width==32 &&
|
|
124 np->lval->rval->opcode==C_OR &&
|
|
125 np->lval->rval->lval->opcode==C_LSHIFTBY &&
|
|
126 np->lval->rval->lval->lval->opcode==C_AND &&
|
|
127 (np->lval->rval->lval->lval->rval->opcode==MESH || np->lval->rval->lval->lval->rval->opcode==MESH32) &&
|
|
128 np->lval->rval->lval->lval->rval->constant==1431655765LU &&
|
|
129 (np->lval->rval->lval->rval->opcode==MESH || np->lval->rval->lval->rval->opcode==MESH32) &&
|
|
130 np->lval->rval->lval->rval->constant==1LU &&
|
|
131 (np->lval->rval->rval->opcode==MESH || np->lval->rval->rval->opcode==MESH32) &&
|
|
132 np->lval->rval->rval->constant==1431655765LU &&
|
|
133 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
134 np->rval->constant==1431655765LU)
|
|
135 do
|
|
136 {
|
|
137 x1=np->lval->rval->lval->lval->lval->constant; c1=np->lval->rval->lval->lval->lval->optdata;
|
|
138 OPTING(com0z1);
|
|
139 tp=newnode();
|
|
140 MAYBENEWNODE(tp);
|
|
141 tp->opcode=C_XOR;
|
|
142 tp->width=32;
|
|
143 MAYBENEWNODE(tp->lval);
|
|
144 tp->lval->opcode=C_AND;
|
|
145 tp->lval->width=32;
|
|
146 tp->lval->lval=np->lval->rval->lval->lval->lval;
|
|
147 np->lval->rval->lval->lval->lval=0;
|
|
148 MAYBENEWNODE(tp->lval->rval);
|
|
149 tp->lval->rval->opcode=MESH32;
|
|
150 tp->lval->rval->width=32;
|
|
151 tp->lval->rval->constant=(1431655765LU);
|
|
152 MAYBENEWNODE(tp->rval);
|
|
153 tp->rval->opcode=MESH32;
|
|
154 tp->rval->width=32;
|
|
155 tp->rval->constant=(1431655765LU);
|
|
156 nodefree(np->lval); nodefree(np->rval);
|
|
157 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
158 } while(0);
|
|
159
|
|
160 checknodeactbits(np);
|
|
161 if(np->opcode==C_AND &&
|
|
162 np->lval->opcode==XOR &&
|
|
163 np->lval->width==32 &&
|
|
164 np->lval->rval->opcode==C_OR &&
|
|
165 np->lval->rval->lval->opcode==C_LSHIFTBY &&
|
|
166 np->lval->rval->lval->lval->opcode==C_AND &&
|
|
167 (np->lval->rval->lval->lval->lval->opcode==MESH || np->lval->rval->lval->lval->lval->opcode==MESH32) &&
|
|
168 np->lval->rval->lval->lval->lval->constant==1431655765LU &&
|
|
169 (np->lval->rval->lval->rval->opcode==MESH || np->lval->rval->lval->rval->opcode==MESH32) &&
|
|
170 np->lval->rval->lval->rval->constant==1LU &&
|
|
171 (np->lval->rval->rval->opcode==MESH || np->lval->rval->rval->opcode==MESH32) &&
|
|
172 np->lval->rval->rval->constant==1431655765LU &&
|
|
173 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
174 np->rval->constant==1431655765LU)
|
|
175 do
|
|
176 {
|
|
177 x1=np->lval->rval->lval->lval->rval->constant; c1=np->lval->rval->lval->lval->rval->optdata;
|
|
178 OPTING(com0z1);
|
|
179 tp=newnode();
|
|
180 MAYBENEWNODE(tp);
|
|
181 tp->opcode=C_XOR;
|
|
182 tp->width=32;
|
|
183 MAYBENEWNODE(tp->lval);
|
|
184 tp->lval->opcode=C_AND;
|
|
185 tp->lval->width=32;
|
|
186 tp->lval->lval=np->lval->rval->lval->lval->rval;
|
|
187 np->lval->rval->lval->lval->rval=0;
|
|
188 MAYBENEWNODE(tp->lval->rval);
|
|
189 tp->lval->rval->opcode=MESH32;
|
|
190 tp->lval->rval->width=32;
|
|
191 tp->lval->rval->constant=(1431655765LU);
|
|
192 MAYBENEWNODE(tp->rval);
|
|
193 tp->rval->opcode=MESH32;
|
|
194 tp->rval->width=32;
|
|
195 tp->rval->constant=(1431655765LU);
|
|
196 nodefree(np->lval); nodefree(np->rval);
|
|
197 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
198 } while(0);
|
|
199
|
|
200 checknodeactbits(np);
|
|
201 if(np->opcode==C_AND &&
|
|
202 np->lval->opcode==XOR &&
|
|
203 np->lval->width==32 &&
|
|
204 np->lval->rval->opcode==C_OR &&
|
|
205 (np->lval->rval->lval->opcode==MESH || np->lval->rval->lval->opcode==MESH32) &&
|
|
206 np->lval->rval->lval->constant==1431655765LU &&
|
|
207 np->lval->rval->rval->opcode==C_LSHIFTBY &&
|
|
208 np->lval->rval->rval->lval->opcode==C_AND &&
|
|
209 (np->lval->rval->rval->lval->rval->opcode==MESH || np->lval->rval->rval->lval->rval->opcode==MESH32) &&
|
|
210 np->lval->rval->rval->lval->rval->constant==1431655765LU &&
|
|
211 (np->lval->rval->rval->rval->opcode==MESH || np->lval->rval->rval->rval->opcode==MESH32) &&
|
|
212 np->lval->rval->rval->rval->constant==1LU &&
|
|
213 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
214 np->rval->constant==1431655765LU)
|
|
215 do
|
|
216 {
|
|
217 x1=np->lval->rval->rval->lval->lval->constant; c1=np->lval->rval->rval->lval->lval->optdata;
|
|
218 OPTING(com0z1);
|
|
219 tp=newnode();
|
|
220 MAYBENEWNODE(tp);
|
|
221 tp->opcode=C_XOR;
|
|
222 tp->width=32;
|
|
223 MAYBENEWNODE(tp->lval);
|
|
224 tp->lval->opcode=C_AND;
|
|
225 tp->lval->width=32;
|
|
226 tp->lval->lval=np->lval->rval->rval->lval->lval;
|
|
227 np->lval->rval->rval->lval->lval=0;
|
|
228 MAYBENEWNODE(tp->lval->rval);
|
|
229 tp->lval->rval->opcode=MESH32;
|
|
230 tp->lval->rval->width=32;
|
|
231 tp->lval->rval->constant=(1431655765LU);
|
|
232 MAYBENEWNODE(tp->rval);
|
|
233 tp->rval->opcode=MESH32;
|
|
234 tp->rval->width=32;
|
|
235 tp->rval->constant=(1431655765LU);
|
|
236 nodefree(np->lval); nodefree(np->rval);
|
|
237 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
238 } while(0);
|
|
239
|
|
240 checknodeactbits(np);
|
|
241 if(np->opcode==C_AND &&
|
|
242 np->lval->opcode==XOR &&
|
|
243 np->lval->width==32 &&
|
|
244 np->lval->rval->opcode==C_OR &&
|
|
245 (np->lval->rval->lval->opcode==MESH || np->lval->rval->lval->opcode==MESH32) &&
|
|
246 np->lval->rval->lval->constant==1431655765LU &&
|
|
247 np->lval->rval->rval->opcode==C_LSHIFTBY &&
|
|
248 np->lval->rval->rval->lval->opcode==C_AND &&
|
|
249 (np->lval->rval->rval->lval->lval->opcode==MESH || np->lval->rval->rval->lval->lval->opcode==MESH32) &&
|
|
250 np->lval->rval->rval->lval->lval->constant==1431655765LU &&
|
|
251 (np->lval->rval->rval->rval->opcode==MESH || np->lval->rval->rval->rval->opcode==MESH32) &&
|
|
252 np->lval->rval->rval->rval->constant==1LU &&
|
|
253 (np->rval->opcode==MESH || np->rval->opcode==MESH32) &&
|
|
254 np->rval->constant==1431655765LU)
|
|
255 do
|
|
256 {
|
|
257 x1=np->lval->rval->rval->lval->rval->constant; c1=np->lval->rval->rval->lval->rval->optdata;
|
|
258 OPTING(com0z1);
|
|
259 tp=newnode();
|
|
260 MAYBENEWNODE(tp);
|
|
261 tp->opcode=C_XOR;
|
|
262 tp->width=32;
|
|
263 MAYBENEWNODE(tp->lval);
|
|
264 tp->lval->opcode=C_AND;
|
|
265 tp->lval->width=32;
|
|
266 tp->lval->lval=np->lval->rval->rval->lval->rval;
|
|
267 np->lval->rval->rval->lval->rval=0;
|
|
268 MAYBENEWNODE(tp->lval->rval);
|
|
269 tp->lval->rval->opcode=MESH32;
|
|
270 tp->lval->rval->width=32;
|
|
271 tp->lval->rval->constant=(1431655765LU);
|
|
272 MAYBENEWNODE(tp->rval);
|
|
273 tp->rval->opcode=MESH32;
|
|
274 tp->rval->width=32;
|
|
275 tp->rval->constant=(1431655765LU);
|
|
276 nodefree(np->lval); nodefree(np->rval);
|
|
277 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
278 } while(0);
|
|
279
|
|
280 checknodeactbits(np);
|
|
281 if(np->opcode==C_AND &&
|
|
282 (np->lval->opcode==MESH || np->lval->opcode==MESH32) &&
|
|
283 np->lval->constant==1431655765LU &&
|
|
284 np->rval->opcode==XOR &&
|
|
285 np->rval->width==32 &&
|
|
286 np->rval->rval->opcode==C_OR &&
|
|
287 np->rval->rval->lval->opcode==C_LSHIFTBY &&
|
|
288 np->rval->rval->lval->lval->opcode==C_AND &&
|
|
289 (np->rval->rval->lval->lval->rval->opcode==MESH || np->rval->rval->lval->lval->rval->opcode==MESH32) &&
|
|
290 np->rval->rval->lval->lval->rval->constant==1431655765LU &&
|
|
291 (np->rval->rval->lval->rval->opcode==MESH || np->rval->rval->lval->rval->opcode==MESH32) &&
|
|
292 np->rval->rval->lval->rval->constant==1LU &&
|
|
293 (np->rval->rval->rval->opcode==MESH || np->rval->rval->rval->opcode==MESH32) &&
|
|
294 np->rval->rval->rval->constant==1431655765LU)
|
|
295 do
|
|
296 {
|
|
297 x1=np->rval->rval->lval->lval->lval->constant; c1=np->rval->rval->lval->lval->lval->optdata;
|
|
298 OPTING(com0z1);
|
|
299 tp=newnode();
|
|
300 MAYBENEWNODE(tp);
|
|
301 tp->opcode=C_XOR;
|
|
302 tp->width=32;
|
|
303 MAYBENEWNODE(tp->lval);
|
|
304 tp->lval->opcode=C_AND;
|
|
305 tp->lval->width=32;
|
|
306 tp->lval->lval=np->rval->rval->lval->lval->lval;
|
|
307 np->rval->rval->lval->lval->lval=0;
|
|
308 MAYBENEWNODE(tp->lval->rval);
|
|
309 tp->lval->rval->opcode=MESH32;
|
|
310 tp->lval->rval->width=32;
|
|
311 tp->lval->rval->constant=(1431655765LU);
|
|
312 MAYBENEWNODE(tp->rval);
|
|
313 tp->rval->opcode=MESH32;
|
|
314 tp->rval->width=32;
|
|
315 tp->rval->constant=(1431655765LU);
|
|
316 nodefree(np->lval); nodefree(np->rval);
|
|
317 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
318 } while(0);
|
|
319
|
|
320 checknodeactbits(np);
|
|
321 if(np->opcode==C_AND &&
|
|
322 (np->lval->opcode==MESH || np->lval->opcode==MESH32) &&
|
|
323 np->lval->constant==1431655765LU &&
|
|
324 np->rval->opcode==XOR &&
|
|
325 np->rval->width==32 &&
|
|
326 np->rval->rval->opcode==C_OR &&
|
|
327 np->rval->rval->lval->opcode==C_LSHIFTBY &&
|
|
328 np->rval->rval->lval->lval->opcode==C_AND &&
|
|
329 (np->rval->rval->lval->lval->lval->opcode==MESH || np->rval->rval->lval->lval->lval->opcode==MESH32) &&
|
|
330 np->rval->rval->lval->lval->lval->constant==1431655765LU &&
|
|
331 (np->rval->rval->lval->rval->opcode==MESH || np->rval->rval->lval->rval->opcode==MESH32) &&
|
|
332 np->rval->rval->lval->rval->constant==1LU &&
|
|
333 (np->rval->rval->rval->opcode==MESH || np->rval->rval->rval->opcode==MESH32) &&
|
|
334 np->rval->rval->rval->constant==1431655765LU)
|
|
335 do
|
|
336 {
|
|
337 x1=np->rval->rval->lval->lval->rval->constant; c1=np->rval->rval->lval->lval->rval->optdata;
|
|
338 OPTING(com0z1);
|
|
339 tp=newnode();
|
|
340 MAYBENEWNODE(tp);
|
|
341 tp->opcode=C_XOR;
|
|
342 tp->width=32;
|
|
343 MAYBENEWNODE(tp->lval);
|
|
344 tp->lval->opcode=C_AND;
|
|
345 tp->lval->width=32;
|
|
346 tp->lval->lval=np->rval->rval->lval->lval->rval;
|
|
347 np->rval->rval->lval->lval->rval=0;
|
|
348 MAYBENEWNODE(tp->lval->rval);
|
|
349 tp->lval->rval->opcode=MESH32;
|
|
350 tp->lval->rval->width=32;
|
|
351 tp->lval->rval->constant=(1431655765LU);
|
|
352 MAYBENEWNODE(tp->rval);
|
|
353 tp->rval->opcode=MESH32;
|
|
354 tp->rval->width=32;
|
|
355 tp->rval->constant=(1431655765LU);
|
|
356 nodefree(np->lval); nodefree(np->rval);
|
|
357 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
358 } while(0);
|
|
359
|
|
360 checknodeactbits(np);
|
|
361 if(np->opcode==C_AND &&
|
|
362 (np->lval->opcode==MESH || np->lval->opcode==MESH32) &&
|
|
363 np->lval->constant==1431655765LU &&
|
|
364 np->rval->opcode==XOR &&
|
|
365 np->rval->width==32 &&
|
|
366 np->rval->rval->opcode==C_OR &&
|
|
367 (np->rval->rval->lval->opcode==MESH || np->rval->rval->lval->opcode==MESH32) &&
|
|
368 np->rval->rval->lval->constant==1431655765LU &&
|
|
369 np->rval->rval->rval->opcode==C_LSHIFTBY &&
|
|
370 np->rval->rval->rval->lval->opcode==C_AND &&
|
|
371 (np->rval->rval->rval->lval->rval->opcode==MESH || np->rval->rval->rval->lval->rval->opcode==MESH32) &&
|
|
372 np->rval->rval->rval->lval->rval->constant==1431655765LU &&
|
|
373 (np->rval->rval->rval->rval->opcode==MESH || np->rval->rval->rval->rval->opcode==MESH32) &&
|
|
374 np->rval->rval->rval->rval->constant==1LU)
|
|
375 do
|
|
376 {
|
|
377 x1=np->rval->rval->rval->lval->lval->constant; c1=np->rval->rval->rval->lval->lval->optdata;
|
|
378 OPTING(com0z1);
|
|
379 tp=newnode();
|
|
380 MAYBENEWNODE(tp);
|
|
381 tp->opcode=C_XOR;
|
|
382 tp->width=32;
|
|
383 MAYBENEWNODE(tp->lval);
|
|
384 tp->lval->opcode=C_AND;
|
|
385 tp->lval->width=32;
|
|
386 tp->lval->lval=np->rval->rval->rval->lval->lval;
|
|
387 np->rval->rval->rval->lval->lval=0;
|
|
388 MAYBENEWNODE(tp->lval->rval);
|
|
389 tp->lval->rval->opcode=MESH32;
|
|
390 tp->lval->rval->width=32;
|
|
391 tp->lval->rval->constant=(1431655765LU);
|
|
392 MAYBENEWNODE(tp->rval);
|
|
393 tp->rval->opcode=MESH32;
|
|
394 tp->rval->width=32;
|
|
395 tp->rval->constant=(1431655765LU);
|
|
396 nodefree(np->lval); nodefree(np->rval);
|
|
397 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
398 } while(0);
|
|
399
|
|
400 checknodeactbits(np);
|
|
401 if(np->opcode==C_AND &&
|
|
402 (np->lval->opcode==MESH || np->lval->opcode==MESH32) &&
|
|
403 np->lval->constant==1431655765LU &&
|
|
404 np->rval->opcode==XOR &&
|
|
405 np->rval->width==32 &&
|
|
406 np->rval->rval->opcode==C_OR &&
|
|
407 (np->rval->rval->lval->opcode==MESH || np->rval->rval->lval->opcode==MESH32) &&
|
|
408 np->rval->rval->lval->constant==1431655765LU &&
|
|
409 np->rval->rval->rval->opcode==C_LSHIFTBY &&
|
|
410 np->rval->rval->rval->lval->opcode==C_AND &&
|
|
411 (np->rval->rval->rval->lval->lval->opcode==MESH || np->rval->rval->rval->lval->lval->opcode==MESH32) &&
|
|
412 np->rval->rval->rval->lval->lval->constant==1431655765LU &&
|
|
413 (np->rval->rval->rval->rval->opcode==MESH || np->rval->rval->rval->rval->opcode==MESH32) &&
|
|
414 np->rval->rval->rval->rval->constant==1LU)
|
|
415 do
|
|
416 {
|
|
417 x1=np->rval->rval->rval->lval->rval->constant; c1=np->rval->rval->rval->lval->rval->optdata;
|
|
418 OPTING(com0z1);
|
|
419 tp=newnode();
|
|
420 MAYBENEWNODE(tp);
|
|
421 tp->opcode=C_XOR;
|
|
422 tp->width=32;
|
|
423 MAYBENEWNODE(tp->lval);
|
|
424 tp->lval->opcode=C_AND;
|
|
425 tp->lval->width=32;
|
|
426 tp->lval->lval=np->rval->rval->rval->lval->rval;
|
|
427 np->rval->rval->rval->lval->rval=0;
|
|
428 MAYBENEWNODE(tp->lval->rval);
|
|
429 tp->lval->rval->opcode=MESH32;
|
|
430 tp->lval->rval->width=32;
|
|
431 tp->lval->rval->constant=(1431655765LU);
|
|
432 MAYBENEWNODE(tp->rval);
|
|
433 tp->rval->opcode=MESH32;
|
|
434 tp->rval->width=32;
|
|
435 tp->rval->constant=(1431655765LU);
|
|
436 nodefree(np->lval); nodefree(np->rval);
|
|
437 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
438 } while(0);
|
|
439
|
|
440 checknodeactbits(np);
|
|
441 if(np->opcode==C_OR &&
|
|
442 np->lval->opcode==C_XOR &&
|
|
443 np->lval->lval->opcode==C_AND &&
|
|
444 np->lval->lval->lval->width==32 &&
|
|
445 (np->lval->lval->rval->opcode==MESH || np->lval->lval->rval->opcode==MESH32) &&
|
|
446 (np->lval->rval->opcode==MESH || np->lval->rval->opcode==MESH32) &&
|
|
447 np->rval->opcode==C_XOR &&
|
|
448 np->rval->lval->opcode==C_AND &&
|
|
449 np->rval->lval->lval->width==32 &&
|
|
450 (np->rval->lval->rval->opcode==MESH || np->rval->lval->rval->opcode==MESH32) &&
|
|
451 (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32))
|
|
452 do
|
|
453 {
|
|
454 x3=np->rval->lval->rval->constant; c3=np->rval->lval->rval->optdata;
|
|
455 x2=np->lval->lval->rval->constant; c2=np->lval->lval->rval->optdata;
|
|
456 if(!nodessame(np->lval->lval->lval,np->rval->lval->lval)) break;
|
|
457 x1=np->rval->lval->lval->constant; c1=np->rval->lval->lval->optdata;
|
|
458 x=np->lval->rval->constant;
|
|
459 c=np->lval->rval->optdata;
|
|
460 if(!(x==x2)) break;
|
|
461 x=x3; c=c3; if(!((x^x2)==4294967295LU)) break;
|
|
462 x=np->rval->rval->constant;
|
|
463 c=np->rval->rval->optdata;
|
|
464 if(!(x==x3)) break;
|
|
465 OPTING(cnot5);
|
|
466 tp=newnode();
|
|
467 MAYBENEWNODE(tp);
|
|
468 tp->opcode=C_NOT;
|
|
469 tp->width=32;
|
|
470 tp->rval=np->rval->lval->lval;
|
|
471 np->rval->lval->lval=0;
|
|
472 nodefree(np->lval); nodefree(np->rval);
|
|
473 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
474 } while(0);
|
|
475
|
|
476 checknodeactbits(np);
|
|
477 if(np->opcode==C_AND &&
|
|
478 np->lval->opcode==C_AND &&
|
|
479 np->rval->opcode==C_AND)
|
|
480 do
|
|
481 {
|
|
482 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
483 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
484 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
485 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
486 OPTING(distribll);
|
|
487 tp=newnode();
|
|
488 MAYBENEWNODE(tp);
|
|
489 tp->opcode=C_AND;
|
|
490 tp->width=32;
|
|
491 MAYBENEWNODE(tp->lval);
|
|
492 tp->lval->opcode=C_AND;
|
|
493 tp->lval->width=32;
|
|
494 tp->lval->lval=np->lval->lval;
|
|
495 np->lval->lval=0;
|
|
496 tp->lval->rval=np->rval->lval;
|
|
497 np->rval->lval=0;
|
|
498 tp->rval=np->rval->rval;
|
|
499 np->rval->rval=0;
|
|
500 nodefree(np->lval); nodefree(np->rval);
|
|
501 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
502 } while(0);
|
|
503
|
|
504 checknodeactbits(np);
|
|
505 if(np->opcode==C_AND &&
|
|
506 np->lval->opcode==C_OR &&
|
|
507 np->rval->opcode==C_OR)
|
|
508 do
|
|
509 {
|
|
510 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
511 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
512 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
513 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
514 OPTING(distribll);
|
|
515 tp=newnode();
|
|
516 MAYBENEWNODE(tp);
|
|
517 tp->opcode=C_OR;
|
|
518 tp->width=32;
|
|
519 MAYBENEWNODE(tp->lval);
|
|
520 tp->lval->opcode=C_AND;
|
|
521 tp->lval->width=32;
|
|
522 tp->lval->lval=np->lval->lval;
|
|
523 np->lval->lval=0;
|
|
524 tp->lval->rval=np->rval->lval;
|
|
525 np->rval->lval=0;
|
|
526 tp->rval=np->rval->rval;
|
|
527 np->rval->rval=0;
|
|
528 nodefree(np->lval); nodefree(np->rval);
|
|
529 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
530 } while(0);
|
|
531
|
|
532 checknodeactbits(np);
|
|
533 if(np->opcode==C_OR &&
|
|
534 np->lval->opcode==C_AND &&
|
|
535 np->rval->opcode==C_AND)
|
|
536 do
|
|
537 {
|
|
538 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
539 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
540 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
541 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
542 OPTING(distribll);
|
|
543 tp=newnode();
|
|
544 MAYBENEWNODE(tp);
|
|
545 tp->opcode=C_AND;
|
|
546 tp->width=32;
|
|
547 MAYBENEWNODE(tp->lval);
|
|
548 tp->lval->opcode=C_OR;
|
|
549 tp->lval->width=32;
|
|
550 tp->lval->lval=np->lval->lval;
|
|
551 np->lval->lval=0;
|
|
552 tp->lval->rval=np->rval->lval;
|
|
553 np->rval->lval=0;
|
|
554 tp->rval=np->rval->rval;
|
|
555 np->rval->rval=0;
|
|
556 nodefree(np->lval); nodefree(np->rval);
|
|
557 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
558 } while(0);
|
|
559
|
|
560 checknodeactbits(np);
|
|
561 if(np->opcode==C_OR &&
|
|
562 np->lval->opcode==C_OR &&
|
|
563 np->rval->opcode==C_OR)
|
|
564 do
|
|
565 {
|
|
566 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
567 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
568 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
569 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
570 OPTING(distribll);
|
|
571 tp=newnode();
|
|
572 MAYBENEWNODE(tp);
|
|
573 tp->opcode=C_OR;
|
|
574 tp->width=32;
|
|
575 MAYBENEWNODE(tp->lval);
|
|
576 tp->lval->opcode=C_OR;
|
|
577 tp->lval->width=32;
|
|
578 tp->lval->lval=np->lval->lval;
|
|
579 np->lval->lval=0;
|
|
580 tp->lval->rval=np->rval->lval;
|
|
581 np->rval->lval=0;
|
|
582 tp->rval=np->rval->rval;
|
|
583 np->rval->rval=0;
|
|
584 nodefree(np->lval); nodefree(np->rval);
|
|
585 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
586 } while(0);
|
|
587
|
|
588 checknodeactbits(np);
|
|
589 if(np->opcode==C_XOR &&
|
|
590 np->lval->opcode==C_AND &&
|
|
591 np->rval->opcode==C_AND)
|
|
592 do
|
|
593 {
|
|
594 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
595 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
596 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
597 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
598 OPTING(distribll);
|
|
599 tp=newnode();
|
|
600 MAYBENEWNODE(tp);
|
|
601 tp->opcode=C_AND;
|
|
602 tp->width=32;
|
|
603 MAYBENEWNODE(tp->lval);
|
|
604 tp->lval->opcode=C_XOR;
|
|
605 tp->lval->width=32;
|
|
606 tp->lval->lval=np->lval->lval;
|
|
607 np->lval->lval=0;
|
|
608 tp->lval->rval=np->rval->lval;
|
|
609 np->rval->lval=0;
|
|
610 tp->rval=np->rval->rval;
|
|
611 np->rval->rval=0;
|
|
612 nodefree(np->lval); nodefree(np->rval);
|
|
613 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
614 } while(0);
|
|
615
|
|
616 checknodeactbits(np);
|
|
617 if(np->opcode==C_AND &&
|
|
618 np->lval->opcode==C_LSHIFTBY &&
|
|
619 np->rval->opcode==C_LSHIFTBY)
|
|
620 do
|
|
621 {
|
|
622 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
623 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
624 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
625 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
626 OPTING(distribll);
|
|
627 tp=newnode();
|
|
628 MAYBENEWNODE(tp);
|
|
629 tp->opcode=C_LSHIFTBY;
|
|
630 tp->width=32;
|
|
631 MAYBENEWNODE(tp->lval);
|
|
632 tp->lval->opcode=C_AND;
|
|
633 tp->lval->width=32;
|
|
634 tp->lval->lval=np->lval->lval;
|
|
635 np->lval->lval=0;
|
|
636 tp->lval->rval=np->rval->lval;
|
|
637 np->rval->lval=0;
|
|
638 tp->rval=np->rval->rval;
|
|
639 np->rval->rval=0;
|
|
640 nodefree(np->lval); nodefree(np->rval);
|
|
641 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
642 } while(0);
|
|
643
|
|
644 checknodeactbits(np);
|
|
645 if(np->opcode==C_OR &&
|
|
646 np->lval->opcode==C_LSHIFTBY &&
|
|
647 np->rval->opcode==C_LSHIFTBY)
|
|
648 do
|
|
649 {
|
|
650 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
651 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
652 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
653 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
654 OPTING(distribll);
|
|
655 tp=newnode();
|
|
656 MAYBENEWNODE(tp);
|
|
657 tp->opcode=C_LSHIFTBY;
|
|
658 tp->width=32;
|
|
659 MAYBENEWNODE(tp->lval);
|
|
660 tp->lval->opcode=C_OR;
|
|
661 tp->lval->width=32;
|
|
662 tp->lval->lval=np->lval->lval;
|
|
663 np->lval->lval=0;
|
|
664 tp->lval->rval=np->rval->lval;
|
|
665 np->rval->lval=0;
|
|
666 tp->rval=np->rval->rval;
|
|
667 np->rval->rval=0;
|
|
668 nodefree(np->lval); nodefree(np->rval);
|
|
669 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
670 } while(0);
|
|
671
|
|
672 checknodeactbits(np);
|
|
673 if(np->opcode==C_XOR &&
|
|
674 np->lval->opcode==C_LSHIFTBY &&
|
|
675 np->rval->opcode==C_LSHIFTBY)
|
|
676 do
|
|
677 {
|
|
678 if(!nodessame(np->lval->rval,np->rval->rval)) break;
|
|
679 x3=np->rval->rval->constant; c3=np->rval->rval->optdata;
|
|
680 x2=np->rval->lval->constant; c2=np->rval->lval->optdata;
|
|
681 x1=np->lval->lval->constant; c1=np->lval->lval->optdata;
|
|
682 OPTING(distribll);
|
|
683 tp=newnode();
|
|
684 MAYBENEWNODE(tp);
|
|
685 tp->opcode=C_LSHIFTBY;
|
|
686 tp->width=32;
|
|
687 MAYBENEWNODE(tp->lval);
|
|
688 tp->lval->opcode=C_XOR;
|
|
689 tp->lval->width=32;
|
|
690 tp->lval->lval=np->lval->lval;
|
|
691 np->lval->lval=0;
|
|
692 tp->lval->rval=np->rval->lval;
|
|
693 np->rval->lval=0;
|
|
694 tp->rval=np->rval->rval;
|
|
695 np->rval->rval=0;
|
|
696 nodefree(np->lval); nodefree(np->rval);
|
|
697 tempw=np->width; *np=*tp; np->width=tempw; free(tp);
|
|
698 } while(0);
|
|
699
|
|
700 c=c1=c2=c3=c4=c5=c6=c7=c8=c9=0;
|
|
701 x=x1=x2=x3=x4=x5=x6=x7=x8=x9=r=0;
|
|
702 if(c+c1+c2+c3+c4+c5+c6+c7+c8+c9+r+
|
|
703 x+x1+x2+x3+x4+x5+x6+x7+x8+x9) raise(SIGSEGV);
|
|
704 return opted;
|
|
705 }
|