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