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