1 #include <OOC/SSA/Opcode.d>
2 #include <__oo2c.h>
3 #include <setjmp.h>
4
OOC_SSA_Opcode__IsSigned(OOC_INT8 subclass)5 OOC_CHAR8 OOC_SSA_Opcode__IsSigned(OOC_INT8 subclass) {
6 register OOC_INT64 i0,i1;
7
8 i0 = subclass;
9 i1 = 1<=i0;
10 if (i1) goto l3;
11 i0=0u;
12 goto l4;
13 l3:
14 i0 = i0<=4;
15
16 l4:
17 return i0;
18 ;
19 }
20
OOC_SSA_Opcode__IsUnsigned(OOC_INT8 subclass)21 OOC_CHAR8 OOC_SSA_Opcode__IsUnsigned(OOC_INT8 subclass) {
22 register OOC_INT64 i0,i1;
23
24 i0 = subclass;
25 i1 = 5<=i0;
26 if (i1) goto l3;
27 i0=0u;
28 goto l4;
29 l3:
30 i0 = i0<=8;
31
32 l4:
33 return i0;
34 ;
35 }
36
OOC_SSA_Opcode__ConvDiffersFromCast(OOC_INT8 from,OOC_INT8 to)37 OOC_CHAR8 OOC_SSA_Opcode__ConvDiffersFromCast(OOC_INT8 from, OOC_INT8 to) {
38 register OOC_INT64 i0,i1;
39
40 i0 = from;
41 i1 = to;
42 return ((i0<10)!=(i1<10));
43 ;
44 }
45
OOC_SSA_Opcode__GetSubclassName(OOC_INT8 subclass,OOC_CHAR8 name[],OOC_LEN name_0d)46 void OOC_SSA_Opcode__GetSubclassName(OOC_INT8 subclass, OOC_CHAR8 name[], OOC_LEN name_0d) {
47 register OOC_INT64 i0;
48 OOC_CHAR8 scstr[16];
49
50 i0 = subclass;
51 switch (i0) {
52 case 0:
53 _copy_8((const void*)(OOC_CHAR8*)"none",(void*)(OOC_INT64)scstr,16);
54 goto l15;
55 case 1:
56 _copy_8((const void*)(OOC_CHAR8*)"i8",(void*)(OOC_INT64)scstr,16);
57 goto l15;
58 case 2:
59 _copy_8((const void*)(OOC_CHAR8*)"i16",(void*)(OOC_INT64)scstr,16);
60 goto l15;
61 case 3:
62 _copy_8((const void*)(OOC_CHAR8*)"i32",(void*)(OOC_INT64)scstr,16);
63 goto l15;
64 case 4:
65 _copy_8((const void*)(OOC_CHAR8*)"i64",(void*)(OOC_INT64)scstr,16);
66 goto l15;
67 case 5:
68 _copy_8((const void*)(OOC_CHAR8*)"u8",(void*)(OOC_INT64)scstr,16);
69 goto l15;
70 case 6:
71 _copy_8((const void*)(OOC_CHAR8*)"u16",(void*)(OOC_INT64)scstr,16);
72 goto l15;
73 case 7:
74 _copy_8((const void*)(OOC_CHAR8*)"u32",(void*)(OOC_INT64)scstr,16);
75 goto l15;
76 case 8:
77 _copy_8((const void*)(OOC_CHAR8*)"u64",(void*)(OOC_INT64)scstr,16);
78 goto l15;
79 case 9:
80 _copy_8((const void*)(OOC_CHAR8*)"adr",(void*)(OOC_INT64)scstr,16);
81 goto l15;
82 case 10:
83 _copy_8((const void*)(OOC_CHAR8*)"r32",(void*)(OOC_INT64)scstr,16);
84 goto l15;
85 case 11:
86 _copy_8((const void*)(OOC_CHAR8*)"r64",(void*)(OOC_INT64)scstr,16);
87 goto l15;
88 default:
89 _failed_case(i0, 34718);
90 goto l15;
91 }
92 l15:
93 _copy_8((const void*)(OOC_INT64)scstr,(void*)(OOC_INT64)name,name_0d);
94 return;
95 ;
96 }
97
OOC_SSA_Opcode__GetName(OOC_INT8 _class,OOC_INT8 subclass,OOC_CHAR8 name[],OOC_LEN name_0d)98 void OOC_SSA_Opcode__GetName(OOC_INT8 _class, OOC_INT8 subclass, OOC_CHAR8 name[], OOC_LEN name_0d) {
99 register OOC_INT64 i0,i1;
100 OOC_CHAR8 cstr[32];
101 OOC_CHAR8 scstr[32];
102
103 i0 = _class;
104 switch (i0) {
105 case 0:
106 _copy_8((const void*)(OOC_CHAR8*)"const",(void*)(OOC_INT64)cstr,32);
107 goto l91;
108 case 1:
109 _copy_8((const void*)(OOC_CHAR8*)"declref",(void*)(OOC_INT64)cstr,32);
110 goto l91;
111 case 2:
112 _copy_8((const void*)(OOC_CHAR8*)"typeref",(void*)(OOC_INT64)cstr,32);
113 goto l91;
114 case 3:
115 _copy_8((const void*)(OOC_CHAR8*)"address",(void*)(OOC_INT64)cstr,32);
116 goto l91;
117 case 4:
118 _copy_8((const void*)(OOC_CHAR8*)"enter",(void*)(OOC_INT64)cstr,32);
119 goto l91;
120 case 5:
121 _copy_8((const void*)(OOC_CHAR8*)"select",(void*)(OOC_INT64)cstr,32);
122 goto l91;
123 case 6:
124 _copy_8((const void*)(OOC_CHAR8*)"collect",(void*)(OOC_INT64)cstr,32);
125 goto l91;
126 case 82:
127 _copy_8((const void*)(OOC_CHAR8*)"labels",(void*)(OOC_INT64)cstr,32);
128 goto l91;
129 case 7:
130 _copy_8((const void*)(OOC_CHAR8*)"return",(void*)(OOC_INT64)cstr,32);
131 goto l91;
132 case 8:
133 _copy_8((const void*)(OOC_CHAR8*)"select-return",(void*)(OOC_INT64)cstr,32);
134 goto l91;
135 case 9:
136 _copy_8((const void*)(OOC_CHAR8*)"exit",(void*)(OOC_INT64)cstr,32);
137 goto l91;
138 case 10:
139 _copy_8((const void*)(OOC_CHAR8*)"loop-start",(void*)(OOC_INT64)cstr,32);
140 goto l91;
141 case 11:
142 _copy_8((const void*)(OOC_CHAR8*)"loop-end",(void*)(OOC_INT64)cstr,32);
143 goto l91;
144 case 12:
145 _copy_8((const void*)(OOC_CHAR8*)"get",(void*)(OOC_INT64)cstr,32);
146 goto l91;
147 case 13:
148 _copy_8((const void*)(OOC_CHAR8*)"set",(void*)(OOC_INT64)cstr,32);
149 goto l91;
150 case 14:
151 _copy_8((const void*)(OOC_CHAR8*)"copy",(void*)(OOC_INT64)cstr,32);
152 goto l91;
153 case 15:
154 _copy_8((const void*)(OOC_CHAR8*)"copy-string",(void*)(OOC_INT64)cstr,32);
155 goto l91;
156 case 16:
157 _copy_8((const void*)(OOC_CHAR8*)"cmp-string",(void*)(OOC_INT64)cstr,32);
158 goto l91;
159 case 17:
160 _copy_8((const void*)(OOC_CHAR8*)"concat",(void*)(OOC_INT64)cstr,32);
161 goto l91;
162 case 18:
163 _copy_8((const void*)(OOC_CHAR8*)"move-block",(void*)(OOC_INT64)cstr,32);
164 goto l91;
165 case 56:
166 _copy_8((const void*)(OOC_CHAR8*)"get-length-heap",(void*)(OOC_INT64)cstr,32);
167 goto l91;
168 case 57:
169 _copy_8((const void*)(OOC_CHAR8*)"get-length-param",(void*)(OOC_INT64)cstr,32);
170 goto l91;
171 case 58:
172 _copy_8((const void*)(OOC_CHAR8*)"copy-parameter",(void*)(OOC_INT64)cstr,32);
173 goto l91;
174 case 59:
175 _copy_8((const void*)(OOC_CHAR8*)"new-object",(void*)(OOC_INT64)cstr,32);
176 goto l91;
177 case 60:
178 _copy_8((const void*)(OOC_CHAR8*)"new-block",(void*)(OOC_INT64)cstr,32);
179 goto l91;
180 case 61:
181 _copy_8((const void*)(OOC_CHAR8*)"type-tag",(void*)(OOC_INT64)cstr,32);
182 goto l91;
183 case 62:
184 _copy_8((const void*)(OOC_CHAR8*)"type-test",(void*)(OOC_INT64)cstr,32);
185 goto l91;
186 case 63:
187 _copy_8((const void*)(OOC_CHAR8*)"tb-proc-address",(void*)(OOC_INT64)cstr,32);
188 goto l91;
189 case 19:
190 _copy_8((const void*)(OOC_CHAR8*)"add",(void*)(OOC_INT64)cstr,32);
191 goto l91;
192 case 20:
193 _copy_8((const void*)(OOC_CHAR8*)"subtract",(void*)(OOC_INT64)cstr,32);
194 goto l91;
195 case 21:
196 _copy_8((const void*)(OOC_CHAR8*)"negate",(void*)(OOC_INT64)cstr,32);
197 goto l91;
198 case 22:
199 _copy_8((const void*)(OOC_CHAR8*)"multiply",(void*)(OOC_INT64)cstr,32);
200 goto l91;
201 case 23:
202 _copy_8((const void*)(OOC_CHAR8*)"divide",(void*)(OOC_INT64)cstr,32);
203 goto l91;
204 case 24:
205 _copy_8((const void*)(OOC_CHAR8*)"modulo",(void*)(OOC_INT64)cstr,32);
206 goto l91;
207 case 25:
208 _copy_8((const void*)(OOC_CHAR8*)"eql",(void*)(OOC_INT64)cstr,32);
209 goto l91;
210 case 26:
211 _copy_8((const void*)(OOC_CHAR8*)"neq",(void*)(OOC_INT64)cstr,32);
212 goto l91;
213 case 27:
214 _copy_8((const void*)(OOC_CHAR8*)"lss",(void*)(OOC_INT64)cstr,32);
215 goto l91;
216 case 28:
217 _copy_8((const void*)(OOC_CHAR8*)"leq",(void*)(OOC_INT64)cstr,32);
218 goto l91;
219 case 29:
220 _copy_8((const void*)(OOC_CHAR8*)"gtr",(void*)(OOC_INT64)cstr,32);
221 goto l91;
222 case 30:
223 _copy_8((const void*)(OOC_CHAR8*)"geq",(void*)(OOC_INT64)cstr,32);
224 goto l91;
225 case 31:
226 _copy_8((const void*)(OOC_CHAR8*)"and",(void*)(OOC_INT64)cstr,32);
227 goto l91;
228 case 32:
229 _copy_8((const void*)(OOC_CHAR8*)"or",(void*)(OOC_INT64)cstr,32);
230 goto l91;
231 case 33:
232 _copy_8((const void*)(OOC_CHAR8*)"not",(void*)(OOC_INT64)cstr,32);
233 goto l91;
234 case 34:
235 _copy_8((const void*)(OOC_CHAR8*)"logical-and",(void*)(OOC_INT64)cstr,32);
236 goto l91;
237 case 35:
238 _copy_8((const void*)(OOC_CHAR8*)"logical-or",(void*)(OOC_INT64)cstr,32);
239 goto l91;
240 case 36:
241 _copy_8((const void*)(OOC_CHAR8*)"logical-xor",(void*)(OOC_INT64)cstr,32);
242 goto l91;
243 case 37:
244 _copy_8((const void*)(OOC_CHAR8*)"logical-complement",(void*)(OOC_INT64)cstr,32);
245 goto l91;
246 case 38:
247 _copy_8((const void*)(OOC_CHAR8*)"logical-subtr",(void*)(OOC_INT64)cstr,32);
248 goto l91;
249 case 39:
250 _copy_8((const void*)(OOC_CHAR8*)"set-bit",(void*)(OOC_INT64)cstr,32);
251 goto l91;
252 case 40:
253 _copy_8((const void*)(OOC_CHAR8*)"clear-bit",(void*)(OOC_INT64)cstr,32);
254 goto l91;
255 case 41:
256 _copy_8((const void*)(OOC_CHAR8*)"type-cast",(void*)(OOC_INT64)cstr,32);
257 goto l91;
258 case 42:
259 _copy_8((const void*)(OOC_CHAR8*)"type-conv",(void*)(OOC_INT64)cstr,32);
260 goto l91;
261 case 43:
262 _copy_8((const void*)(OOC_CHAR8*)"set-member",(void*)(OOC_INT64)cstr,32);
263 goto l91;
264 case 44:
265 _copy_8((const void*)(OOC_CHAR8*)"set-range",(void*)(OOC_INT64)cstr,32);
266 goto l91;
267 case 45:
268 _copy_8((const void*)(OOC_CHAR8*)"abs",(void*)(OOC_INT64)cstr,32);
269 goto l91;
270 case 46:
271 _copy_8((const void*)(OOC_CHAR8*)"shift-left",(void*)(OOC_INT64)cstr,32);
272 goto l91;
273 case 47:
274 _copy_8((const void*)(OOC_CHAR8*)"shift-right",(void*)(OOC_INT64)cstr,32);
275 goto l91;
276 case 48:
277 _copy_8((const void*)(OOC_CHAR8*)"ash",(void*)(OOC_INT64)cstr,32);
278 goto l91;
279 case 49:
280 _copy_8((const void*)(OOC_CHAR8*)"cap",(void*)(OOC_INT64)cstr,32);
281 goto l91;
282 case 50:
283 _copy_8((const void*)(OOC_CHAR8*)"entier",(void*)(OOC_INT64)cstr,32);
284 goto l91;
285 case 51:
286 _copy_8((const void*)(OOC_CHAR8*)"indexed",(void*)(OOC_INT64)cstr,32);
287 goto l91;
288 case 52:
289 _copy_8((const void*)(OOC_CHAR8*)"lsh",(void*)(OOC_INT64)cstr,32);
290 goto l91;
291 case 53:
292 _copy_8((const void*)(OOC_CHAR8*)"rot",(void*)(OOC_INT64)cstr,32);
293 goto l91;
294 case 54:
295 _copy_8((const void*)(OOC_CHAR8*)"odd",(void*)(OOC_INT64)cstr,32);
296 goto l91;
297 case 55:
298 _copy_8((const void*)(OOC_CHAR8*)"call",(void*)(OOC_INT64)cstr,32);
299 goto l91;
300 case 64:
301 _copy_8((const void*)(OOC_CHAR8*)"assert",(void*)(OOC_INT64)cstr,32);
302 goto l91;
303 case 65:
304 _copy_8((const void*)(OOC_CHAR8*)"halt",(void*)(OOC_INT64)cstr,32);
305 goto l91;
306 case 66:
307 _copy_8((const void*)(OOC_CHAR8*)"check-index",(void*)(OOC_INT64)cstr,32);
308 goto l91;
309 case 67:
310 _copy_8((const void*)(OOC_CHAR8*)"check-pointer",(void*)(OOC_INT64)cstr,32);
311 goto l91;
312 case 68:
313 _copy_8((const void*)(OOC_CHAR8*)"type-guard",(void*)(OOC_INT64)cstr,32);
314 goto l91;
315 case 69:
316 _copy_8((const void*)(OOC_CHAR8*)"failed-case",(void*)(OOC_INT64)cstr,32);
317 goto l91;
318 case 70:
319 _copy_8((const void*)(OOC_CHAR8*)"failed-with",(void*)(OOC_INT64)cstr,32);
320 goto l91;
321 case 71:
322 _copy_8((const void*)(OOC_CHAR8*)"failed-type-assert",(void*)(OOC_INT64)cstr,32);
323 goto l91;
324 case 81:
325 _copy_8((const void*)(OOC_CHAR8*)"preloaded-var",(void*)(OOC_INT64)cstr,32);
326 goto l91;
327 case 72:
328 _copy_8((const void*)(OOC_CHAR8*)"try-start",(void*)(OOC_INT64)cstr,32);
329 goto l91;
330 case 73:
331 _copy_8((const void*)(OOC_CHAR8*)"try-end",(void*)(OOC_INT64)cstr,32);
332 goto l91;
333 case 74:
334 _copy_8((const void*)(OOC_CHAR8*)"raise-exception",(void*)(OOC_INT64)cstr,32);
335 goto l91;
336 case 76:
337 _copy_8((const void*)(OOC_CHAR8*)"current-exception",(void*)(OOC_INT64)cstr,32);
338 goto l91;
339 case 77:
340 _copy_8((const void*)(OOC_CHAR8*)"clear-exception",(void*)(OOC_INT64)cstr,32);
341 goto l91;
342 case 78:
343 _copy_8((const void*)(OOC_CHAR8*)"push-exception-context",(void*)(OOC_INT64)cstr,32);
344 goto l91;
345 case 79:
346 _copy_8((const void*)(OOC_CHAR8*)"pop-exception-context",(void*)(OOC_INT64)cstr,32);
347 goto l91;
348 case 80:
349 _copy_8((const void*)(OOC_CHAR8*)"activate-context",(void*)(OOC_INT64)cstr,32);
350 goto l91;
351 case 83:
352 _copy_8((const void*)(OOC_CHAR8*)"dgate",(void*)(OOC_INT64)cstr,32);
353 goto l91;
354 case 84:
355 _copy_8((const void*)(OOC_CHAR8*)"design-standin",(void*)(OOC_INT64)cstr,32);
356 goto l91;
357 case 85:
358 _copy_8((const void*)(OOC_CHAR8*)"equiv",(void*)(OOC_INT64)cstr,32);
359 goto l91;
360 case 86:
361 _copy_8((const void*)(OOC_CHAR8*)"equiv-pre",(void*)(OOC_INT64)cstr,32);
362 goto l91;
363 case 87:
364 _copy_8((const void*)(OOC_CHAR8*)"vtable-proc-address",(void*)(OOC_INT64)cstr,32);
365 goto l91;
366 case 88:
367 _copy_8((const void*)(OOC_CHAR8*)"noop",(void*)(OOC_INT64)cstr,32);
368 goto l91;
369 default:
370 _failed_case(i0, 35407);
371 goto l91;
372 }
373 l91:
374 _copy_8((const void*)(OOC_INT64)cstr,(void*)(OOC_INT64)name,name_0d);
375 i0 = subclass;
376 i1 = i0!=0;
377 if (!i1) goto l94;
378 OOC_SSA_Opcode__GetSubclassName(i0, (void*)(OOC_INT64)scstr, 32);
379 Strings__Append((OOC_CHAR8*)"-", 2, (void*)(OOC_INT64)name, name_0d);
380 Strings__Append((void*)(OOC_INT64)scstr, 32, (void*)(OOC_INT64)name, name_0d);
381 l94:
382 return;
383 ;
384 }
385
OOC_SSA_Opcode__TypeToSubclass(OOC_SymbolTable__Type type)386 OOC_INT8 OOC_SSA_Opcode__TypeToSubclass(OOC_SymbolTable__Type type) {
387 register OOC_INT64 i0,i1;
388
389 i0 = (OOC_INT64)type;
390 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38959)))), OOC_SymbolTable__TypeDesc_Deparam)),OOC_SymbolTable__TypeDesc_Deparam)((OOC_SymbolTable__Type)i0);
391 type = (OOC_SymbolTable__Type)i0;
392 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 38984)))), &_td_OOC_SymbolTable__PredefTypeDesc);
393 if (i1) goto l23;
394 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39761)))), &_td_OOC_SymbolTable__ArrayDesc);
395 if (i1) goto l21;
396 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39808)))), &_td_OOC_SymbolTable__RecordDesc);
397 if (i1) goto l19;
398 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39856)))), &_td_OOC_SymbolTable__PointerDesc);
399 if (i1) goto l17;
400 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39908)))), &_td_OOC_SymbolTable__FormalParsDesc);
401 if (i1) goto l15;
402 i1 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 39963)))), &_td_OOC_SymbolTable__TypeVarDesc);
403 if (i1) goto l13;
404 Log__Type((OOC_CHAR8*)"++ Unknown type in TypeToSubclass", 34, (void*)i0);
405 _assert(0u, 127, 40103);
406 goto l43;
407 l13:
408 i0 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i0, 40012))+72);
409 i0 = OOC_SSA_Opcode__TypeToSubclass((OOC_SymbolTable__Type)i0);
410 return i0;
411 goto l43;
412 l15:
413 return 9;
414 goto l43;
415 l17:
416 return 9;
417 goto l43;
418 l19:
419 return 0;
420 goto l43;
421 l21:
422 return 0;
423 goto l43;
424 l23:
425 i0 = *(OOC_INT16*)((_check_pointer(i0, 39019))+72);
426 switch (i0) {
427 case 17:
428 return 0;
429 goto l43;
430 case 1:
431 return 5;
432 goto l43;
433 case 2:
434 return 6;
435 goto l43;
436 case 3:
437 return 7;
438 goto l43;
439 case 0:
440 return 5;
441 goto l43;
442 case 4:
443 return 1;
444 goto l43;
445 case 5:
446 return 2;
447 goto l43;
448 case 6:
449 return 3;
450 goto l43;
451 case 7:
452 return 4;
453 goto l43;
454 case 8:
455 return 10;
456 goto l43;
457 case 9:
458 return 11;
459 goto l43;
460 case 10:
461 return 7;
462 goto l43;
463 case 11:
464 return 5;
465 goto l43;
466 case 12:
467 return 9;
468 goto l43;
469 case 13:
470 case 14:
471 case 15:
472 return 9;
473 goto l43;
474 case 16:
475 return 9;
476 goto l43;
477 default:
478 _failed_case(i0, 39010);
479 goto l43;
480 }
481 l43:
482 _failed_function(38891); return 0;
483 ;
484 }
485
OOC_OOC_SSA_Opcode_init(void)486 void OOC_OOC_SSA_Opcode_init(void) {
487
488 return;
489 ;
490 }
491
OOC_OOC_SSA_Opcode_destroy(void)492 void OOC_OOC_SSA_Opcode_destroy(void) {
493 }
494
495 /* --- */
496