Mercurial > repo
comparison interps/c-intercal/oilout0d.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_d(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_AND) | |
11 do | |
12 { | |
13 if(!nodessame(np->lval,np->rval)) break; | |
14 x1=np->rval->constant; c1=np->rval->optdata; | |
15 OPTING(anditself); | |
16 tp=newnode(); | |
17 tp=np->rval; | |
18 np->rval=0; | |
19 nodefree(np->lval); nodefree(np->rval); | |
20 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
21 } while(0); | |
22 | |
23 checknodeactbits(np); | |
24 if(np->opcode==C_OR) | |
25 do | |
26 { | |
27 if(!nodessame(np->lval,np->rval)) break; | |
28 x1=np->rval->constant; c1=np->rval->optdata; | |
29 OPTING(oritself); | |
30 tp=newnode(); | |
31 tp=np->rval; | |
32 np->rval=0; | |
33 nodefree(np->lval); nodefree(np->rval); | |
34 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
35 } while(0); | |
36 | |
37 checknodeactbits(np); | |
38 if(np->opcode==C_XOR) | |
39 do | |
40 { | |
41 if(!nodessame(np->lval,np->rval)) break; | |
42 x1=np->rval->constant; c1=np->rval->optdata; | |
43 OPTING(xoritself); | |
44 tp=newnode(); | |
45 MAYBENEWNODE(tp); | |
46 tp->opcode=MESH32; | |
47 tp->width=32; | |
48 tp->constant=(0LU); | |
49 nodefree(np->lval); nodefree(np->rval); | |
50 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
51 } while(0); | |
52 | |
53 checknodeactbits(np); | |
54 if(np->opcode==C_XOR && | |
55 np->lval->opcode==C_XOR) | |
56 do | |
57 { | |
58 x2=np->lval->rval->constant; c2=np->lval->rval->optdata; | |
59 if(!nodessame(np->lval->lval,np->rval)) break; | |
60 x1=np->rval->constant; c1=np->rval->optdata; | |
61 OPTING(xoritself); | |
62 tp=newnode(); | |
63 tp=np->lval->rval; | |
64 np->lval->rval=0; | |
65 nodefree(np->lval); nodefree(np->rval); | |
66 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
67 } while(0); | |
68 | |
69 checknodeactbits(np); | |
70 if(np->opcode==C_XOR && | |
71 np->lval->opcode==C_XOR) | |
72 do | |
73 { | |
74 x2=np->lval->lval->constant; c2=np->lval->lval->optdata; | |
75 if(!nodessame(np->lval->rval,np->rval)) break; | |
76 x1=np->rval->constant; c1=np->rval->optdata; | |
77 OPTING(xoritself); | |
78 tp=newnode(); | |
79 tp=np->lval->lval; | |
80 np->lval->lval=0; | |
81 nodefree(np->lval); nodefree(np->rval); | |
82 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
83 } while(0); | |
84 | |
85 checknodeactbits(np); | |
86 if(np->opcode==C_XOR && | |
87 np->rval->opcode==C_XOR) | |
88 do | |
89 { | |
90 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
91 if(!nodessame(np->lval,np->rval->lval)) break; | |
92 x1=np->rval->lval->constant; c1=np->rval->lval->optdata; | |
93 OPTING(xoritself); | |
94 tp=newnode(); | |
95 tp=np->rval->rval; | |
96 np->rval->rval=0; | |
97 nodefree(np->lval); nodefree(np->rval); | |
98 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
99 } while(0); | |
100 | |
101 checknodeactbits(np); | |
102 if(np->opcode==C_XOR && | |
103 np->rval->opcode==C_XOR) | |
104 do | |
105 { | |
106 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
107 if(!nodessame(np->lval,np->rval->rval)) break; | |
108 x1=np->rval->rval->constant; c1=np->rval->rval->optdata; | |
109 OPTING(xoritself); | |
110 tp=newnode(); | |
111 tp=np->rval->lval; | |
112 np->rval->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_LOGICALNOT && | |
119 np->rval->opcode==C_XOR) | |
120 do | |
121 { | |
122 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
123 x1=np->rval->lval->constant; c1=np->rval->lval->optdata; | |
124 OPTING(xortoequal); | |
125 tp=newnode(); | |
126 MAYBENEWNODE(tp); | |
127 tp->opcode=C_ISEQUAL; | |
128 tp->width=16; | |
129 tp->lval=np->rval->lval; | |
130 np->rval->lval=0; | |
131 tp->rval=np->rval->rval; | |
132 np->rval->rval=0; | |
133 nodefree(np->lval); nodefree(np->rval); | |
134 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
135 } while(0); | |
136 | |
137 checknodeactbits(np); | |
138 if(np->opcode==C_LOGICALNOT && | |
139 np->rval->opcode==C_ISEQUAL) | |
140 do | |
141 { | |
142 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
143 x1=np->rval->lval->constant; c1=np->rval->lval->optdata; | |
144 OPTING(negatingequal); | |
145 tp=newnode(); | |
146 MAYBENEWNODE(tp); | |
147 tp->opcode=C_NOTEQUAL; | |
148 tp->width=16; | |
149 tp->lval=np->rval->lval; | |
150 np->rval->lval=0; | |
151 tp->rval=np->rval->rval; | |
152 np->rval->rval=0; | |
153 nodefree(np->lval); nodefree(np->rval); | |
154 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
155 } while(0); | |
156 | |
157 checknodeactbits(np); | |
158 if(np->opcode==C_LOGICALNOT && | |
159 np->rval->opcode==C_NOTEQUAL) | |
160 do | |
161 { | |
162 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
163 x1=np->rval->lval->constant; c1=np->rval->lval->optdata; | |
164 OPTING(negatingequal); | |
165 tp=newnode(); | |
166 MAYBENEWNODE(tp); | |
167 tp->opcode=C_ISEQUAL; | |
168 tp->width=16; | |
169 tp->lval=np->rval->lval; | |
170 np->rval->lval=0; | |
171 tp->rval=np->rval->rval; | |
172 np->rval->rval=0; | |
173 nodefree(np->lval); nodefree(np->rval); | |
174 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
175 } while(0); | |
176 | |
177 checknodeactbits(np); | |
178 if(np->opcode==SELECT && | |
179 np->lval->opcode==SELECT && | |
180 np->lval->rval->width==32 && | |
181 np->rval->opcode==C_XOR && | |
182 np->rval->lval->opcode==XOR && | |
183 np->rval->lval->width==32 && | |
184 np->rval->lval->rval->opcode==SELECT && | |
185 np->rval->lval->rval->lval->width==32 && | |
186 np->rval->lval->rval->rval->width==32 && | |
187 (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) && | |
188 np->rval->rval->constant==2147483648LU) | |
189 do | |
190 { | |
191 if(!nodessame(np->lval->rval,np->rval->lval->rval->lval)) break; | |
192 if(!nodessame(np->rval->lval->rval->lval,np->rval->lval->rval->rval)) break; | |
193 x2=np->rval->lval->rval->rval->constant; c2=np->rval->lval->rval->rval->optdata; | |
194 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
195 OPTING(greaterthan32); | |
196 tp=newnode(); | |
197 MAYBENEWNODE(tp); | |
198 tp->opcode=C_GREATER; | |
199 tp->width=32; | |
200 tp->lval=nodecopy(np->lval->lval); | |
201 MAYBENEWNODE(tp->rval); | |
202 tp->rval->opcode=C_XOR; | |
203 tp->rval->width=32; | |
204 tp->rval->lval=np->rval->lval->rval->rval; | |
205 np->rval->lval->rval->rval=0; | |
206 tp->rval->rval=np->lval->lval; | |
207 np->lval->lval=0; | |
208 nodefree(np->lval); nodefree(np->rval); | |
209 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
210 } while(0); | |
211 | |
212 checknodeactbits(np); | |
213 if(np->opcode==SELECT && | |
214 np->lval->opcode==SELECT && | |
215 np->lval->rval->width==32 && | |
216 np->rval->opcode==C_XOR && | |
217 (np->rval->lval->opcode==MESH || np->rval->lval->opcode==MESH32) && | |
218 np->rval->lval->constant==2147483648LU && | |
219 np->rval->rval->opcode==XOR && | |
220 np->rval->rval->width==32 && | |
221 np->rval->rval->rval->opcode==SELECT && | |
222 np->rval->rval->rval->lval->width==32 && | |
223 np->rval->rval->rval->rval->width==32) | |
224 do | |
225 { | |
226 if(!nodessame(np->lval->rval,np->rval->rval->rval->lval)) break; | |
227 if(!nodessame(np->rval->rval->rval->lval,np->rval->rval->rval->rval)) break; | |
228 x2=np->rval->rval->rval->rval->constant; c2=np->rval->rval->rval->rval->optdata; | |
229 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
230 OPTING(greaterthan32); | |
231 tp=newnode(); | |
232 MAYBENEWNODE(tp); | |
233 tp->opcode=C_GREATER; | |
234 tp->width=32; | |
235 tp->lval=nodecopy(np->lval->lval); | |
236 MAYBENEWNODE(tp->rval); | |
237 tp->rval->opcode=C_XOR; | |
238 tp->rval->width=32; | |
239 tp->rval->lval=np->rval->rval->rval->rval; | |
240 np->rval->rval->rval->rval=0; | |
241 tp->rval->rval=np->lval->lval; | |
242 np->lval->lval=0; | |
243 nodefree(np->lval); nodefree(np->rval); | |
244 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
245 } while(0); | |
246 | |
247 checknodeactbits(np); | |
248 if(np->opcode==SELECT && | |
249 np->lval->opcode==SELECT && | |
250 np->lval->rval->width==16 && | |
251 np->rval->opcode==C_XOR && | |
252 np->rval->lval->opcode==XOR && | |
253 np->rval->lval->width==16 && | |
254 np->rval->lval->rval->opcode==SELECT && | |
255 np->rval->lval->rval->lval->width==16 && | |
256 np->rval->lval->rval->rval->width==16 && | |
257 (np->rval->rval->opcode==MESH || np->rval->rval->opcode==MESH32) && | |
258 np->rval->rval->constant==32768LU) | |
259 do | |
260 { | |
261 if(!nodessame(np->lval->rval,np->rval->lval->rval->lval)) break; | |
262 if(!nodessame(np->rval->lval->rval->lval,np->rval->lval->rval->rval)) break; | |
263 x2=np->rval->lval->rval->rval->constant; c2=np->rval->lval->rval->rval->optdata; | |
264 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
265 OPTING(greaterthan16); | |
266 tp=newnode(); | |
267 MAYBENEWNODE(tp); | |
268 tp->opcode=C_GREATER; | |
269 tp->width=32; | |
270 tp->lval=nodecopy(np->lval->lval); | |
271 MAYBENEWNODE(tp->rval); | |
272 tp->rval->opcode=C_XOR; | |
273 tp->rval->width=32; | |
274 tp->rval->lval=np->rval->lval->rval->rval; | |
275 np->rval->lval->rval->rval=0; | |
276 tp->rval->rval=np->lval->lval; | |
277 np->lval->lval=0; | |
278 nodefree(np->lval); nodefree(np->rval); | |
279 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
280 } while(0); | |
281 | |
282 checknodeactbits(np); | |
283 if(np->opcode==SELECT && | |
284 np->lval->opcode==SELECT && | |
285 np->lval->rval->width==16 && | |
286 np->rval->opcode==C_XOR && | |
287 (np->rval->lval->opcode==MESH || np->rval->lval->opcode==MESH32) && | |
288 np->rval->lval->constant==32768LU && | |
289 np->rval->rval->opcode==XOR && | |
290 np->rval->rval->width==16 && | |
291 np->rval->rval->rval->opcode==SELECT && | |
292 np->rval->rval->rval->lval->width==16 && | |
293 np->rval->rval->rval->rval->width==16) | |
294 do | |
295 { | |
296 if(!nodessame(np->lval->rval,np->rval->rval->rval->lval)) break; | |
297 if(!nodessame(np->rval->rval->rval->lval,np->rval->rval->rval->rval)) break; | |
298 x2=np->rval->rval->rval->rval->constant; c2=np->rval->rval->rval->rval->optdata; | |
299 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
300 OPTING(greaterthan16); | |
301 tp=newnode(); | |
302 MAYBENEWNODE(tp); | |
303 tp->opcode=C_GREATER; | |
304 tp->width=32; | |
305 tp->lval=nodecopy(np->lval->lval); | |
306 MAYBENEWNODE(tp->rval); | |
307 tp->rval->opcode=C_XOR; | |
308 tp->rval->width=32; | |
309 tp->rval->lval=np->rval->rval->rval->rval; | |
310 np->rval->rval->rval->rval=0; | |
311 tp->rval->rval=np->lval->lval; | |
312 np->lval->lval=0; | |
313 nodefree(np->lval); nodefree(np->rval); | |
314 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
315 } while(0); | |
316 | |
317 checknodeactbits(np); | |
318 if(np->opcode==C_AND && | |
319 np->lval->opcode==C_XOR) | |
320 do | |
321 { | |
322 if(!nodessame(np->lval->rval,np->rval)) break; | |
323 x2=np->rval->constant; c2=np->rval->optdata; | |
324 x1=np->lval->lval->constant; c1=np->lval->lval->optdata; | |
325 OPTING(xoroutsideand); | |
326 tp=newnode(); | |
327 MAYBENEWNODE(tp); | |
328 tp->opcode=C_XOR; | |
329 tp->width=32; | |
330 MAYBENEWNODE(tp->lval); | |
331 tp->lval->opcode=C_AND; | |
332 tp->lval->width=32; | |
333 tp->lval->lval=np->lval->lval; | |
334 np->lval->lval=0; | |
335 tp->lval->rval=nodecopy(np->rval); | |
336 tp->rval=np->rval; | |
337 np->rval=0; | |
338 nodefree(np->lval); nodefree(np->rval); | |
339 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
340 } while(0); | |
341 | |
342 checknodeactbits(np); | |
343 if(np->opcode==C_AND && | |
344 np->rval->opcode==C_XOR) | |
345 do | |
346 { | |
347 if(!nodessame(np->lval,np->rval->rval)) break; | |
348 x2=np->rval->rval->constant; c2=np->rval->rval->optdata; | |
349 x1=np->rval->lval->constant; c1=np->rval->lval->optdata; | |
350 OPTING(xoroutsideand); | |
351 tp=newnode(); | |
352 MAYBENEWNODE(tp); | |
353 tp->opcode=C_XOR; | |
354 tp->width=32; | |
355 MAYBENEWNODE(tp->lval); | |
356 tp->lval->opcode=C_AND; | |
357 tp->lval->width=32; | |
358 tp->lval->lval=np->rval->lval; | |
359 np->rval->lval=0; | |
360 tp->lval->rval=nodecopy(np->rval->rval); | |
361 tp->rval=np->rval->rval; | |
362 np->rval->rval=0; | |
363 nodefree(np->lval); nodefree(np->rval); | |
364 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
365 } while(0); | |
366 | |
367 checknodeactbits(np); | |
368 if(np->opcode==C_AND && | |
369 np->lval->opcode==C_XOR) | |
370 do | |
371 { | |
372 if(!nodessame(np->lval->lval,np->rval)) break; | |
373 x2=np->rval->constant; c2=np->rval->optdata; | |
374 x1=np->lval->rval->constant; c1=np->lval->rval->optdata; | |
375 OPTING(xoroutsideand); | |
376 tp=newnode(); | |
377 MAYBENEWNODE(tp); | |
378 tp->opcode=C_XOR; | |
379 tp->width=32; | |
380 MAYBENEWNODE(tp->lval); | |
381 tp->lval->opcode=C_AND; | |
382 tp->lval->width=32; | |
383 tp->lval->lval=np->lval->rval; | |
384 np->lval->rval=0; | |
385 tp->lval->rval=nodecopy(np->rval); | |
386 tp->rval=np->rval; | |
387 np->rval=0; | |
388 nodefree(np->lval); nodefree(np->rval); | |
389 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
390 } while(0); | |
391 | |
392 checknodeactbits(np); | |
393 if(np->opcode==C_AND && | |
394 np->rval->opcode==C_XOR) | |
395 do | |
396 { | |
397 if(!nodessame(np->lval,np->rval->lval)) break; | |
398 x2=np->rval->lval->constant; c2=np->rval->lval->optdata; | |
399 x1=np->rval->rval->constant; c1=np->rval->rval->optdata; | |
400 OPTING(xoroutsideand); | |
401 tp=newnode(); | |
402 MAYBENEWNODE(tp); | |
403 tp->opcode=C_XOR; | |
404 tp->width=32; | |
405 MAYBENEWNODE(tp->lval); | |
406 tp->lval->opcode=C_AND; | |
407 tp->lval->width=32; | |
408 tp->lval->lval=np->rval->rval; | |
409 np->rval->rval=0; | |
410 tp->lval->rval=nodecopy(np->rval->lval); | |
411 tp->rval=np->rval->lval; | |
412 np->rval->lval=0; | |
413 nodefree(np->lval); nodefree(np->rval); | |
414 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
415 } while(0); | |
416 | |
417 checknodeactbits(np); | |
418 if(np->opcode==C_XOR && | |
419 (np->rval->opcode==MESH || np->rval->opcode==MESH32) && | |
420 np->rval->constant==1LU) | |
421 do | |
422 { | |
423 x1=np->lval->constant; c1=np->lval->optdata; | |
424 x=x1; c=c1; if(!(c==1)) break; | |
425 OPTING(booleannot); | |
426 tp=newnode(); | |
427 MAYBENEWNODE(tp); | |
428 tp->opcode=C_LOGICALNOT; | |
429 tp->width=16; | |
430 tp->rval=np->lval; | |
431 np->lval=0; | |
432 nodefree(np->lval); nodefree(np->rval); | |
433 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
434 } while(0); | |
435 | |
436 checknodeactbits(np); | |
437 if(np->opcode==C_MINUS && | |
438 (np->lval->opcode==MESH || np->lval->opcode==MESH32) && | |
439 np->lval->constant==2LU && | |
440 np->rval->opcode==C_LOGICALNOT) | |
441 do | |
442 { | |
443 x1=np->rval->rval->constant; c1=np->rval->rval->optdata; | |
444 x=x1; c=c1; if(!(c==1)) break; | |
445 OPTING(not21); | |
446 tp=newnode(); | |
447 MAYBENEWNODE(tp); | |
448 tp->opcode=C_PLUS; | |
449 tp->width=32; | |
450 tp->lval=np->rval->rval; | |
451 np->rval->rval=0; | |
452 MAYBENEWNODE(tp->rval); | |
453 tp->rval->opcode=MESH32; | |
454 tp->rval->width=32; | |
455 tp->rval->constant=(1LU); | |
456 nodefree(np->lval); nodefree(np->rval); | |
457 tempw=np->width; *np=*tp; np->width=tempw; free(tp); | |
458 } while(0); | |
459 | |
460 c=c1=c2=c3=c4=c5=c6=c7=c8=c9=0; | |
461 x=x1=x2=x3=x4=x5=x6=x7=x8=x9=r=0; | |
462 if(c+c1+c2+c3+c4+c5+c6+c7+c8+c9+r+ | |
463 x+x1+x2+x3+x4+x5+x6+x7+x8+x9) raise(SIGSEGV); | |
464 return opted; | |
465 } |