Mercurial > repo
comparison interps/c-intercal/oilout0c.c @ 996:859f9b4339e6
<Gregor> tar xf egobot.tar.xz
author | HackBot |
---|---|
date | Sun, 09 Dec 2012 19:30:08 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
995:6883f5911eb7 | 996:859f9b4339e6 |
---|---|
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 } |