don't use __PTR_TO_INT from obstack.h... well the code is still using obstack interna...
[libfirm] / ir / ir / irreflect.def
1
2 BEGIN_OP(Block)
3   BEGIN_ARGS
4     ARG("Block", BB)
5     MARK
6     ARG("predecessors", X)
7   END_ARGS
8 END_OP
9
10 BEGIN_OP(Start)
11   BEGIN_ARGS
12     ARG("Execution", X)
13     ARG("Memory", Mem)
14     ARG("Stack", Ref)
15     ARG("Global", Ref)
16     VARG("Arguments", Data)
17     ARG("Call By Value", Ref)
18     MARK
19     BLOCK
20   END_ARGS
21 END_OP
22
23 BEGIN_OP(End)
24   BEGIN_ARGS
25     MARK
26     BLOCK
27     VARG("Memory & Preds", Lh)
28   END_ARGS
29 END_OP
30
31 /*
32  * EndReg
33  */
34
35 /*
36  * EndExcept
37  */
38
39 /*
40  * Jmp
41  */
42
43 BEGIN_OP(Jmp)
44   BEGIN_ARGS
45     ARG("Target", X)
46     MARK
47     BLOCK
48   END_ARGS
49 END_OP
50
51 BEGIN_OP(Break)
52   BEGIN_ARGS
53     ARG("Target", X)
54     MARK
55     BLOCK
56   END_ARGS
57 END_ARGS
58
59 BEGIN_OP(Cond)
60   BEGIN_ARGS
61     ARG("False Branch", X)
62     ARG("True Branch", X)
63     MARK
64     BLOCK
65     ARG("Condition", Bool)
66   END_ARGS
67
68   BEGIN_ARGS
69     VARG("Cases", X)
70     MARK
71     BLOCK
72     ARG("Switch", Int)
73   END_ARGS
74 END_OP
75
76 BEGIN_OP(Return)
77   BEGIN_ARGS
78     ARG("CF", X)
79     MARK
80     BLOCK
81     ARG("Memory", Mem)
82     VARG("Args", Data)
83   END_ARGS
84 END_OP
85
86 BEGIN_OP(CallBegin)
87   BEGIN_ARGS
88     VARG("CF", X)
89     MARK
90     BLOCK
91     ARG("Addr", Ref)
92   END_ARGS
93 END_OP
94
95 BEGIN_OP(Const)
96   BEGIN_ARGS
97     ARG("Value", Data)
98     MARK
99     BLOCK
100   END_ARGS
101 END_OP
102
103 BEGIN_OP(SymConst)
104   BEGIN_ARGS
105     ARG("Value", Int)
106     MARK
107     BLOCK
108   END_ARGS
109
110   BEGIN_ARGS
111     ARG("Value", Ref)
112     MARK
113     BLOCK
114   END_ARGS
115 END_OP
116
117 BEGIN_OP(Unknown)
118   BEGIN_ARGS
119     ARG("Value", Any)
120     MARK
121     BLOCK
122   END_ARGS
123 END_OP
124
125 BEGIN_OP(Sel)
126   BEGIN_ARGS
127     ARG("Addr", Ref)
128     MARK
129     BLOCK
130     ARG("Memory", Mem)
131     ARG("Base", Ref)
132     VARG_SAME("Indices", Int)
133   END_ARGS
134 END_OP
135
136 BEGIN_OP(Call)
137   BEGIN_ARGS
138     ARG("Memory", Mem)
139     ARG("CF", X)
140     VARG("Results", Data)
141     ARG("Exception Memory", Mem)
142     ARG("Stack", Ref)
143     MARK
144     BLOCK
145     ARG("Memory", Mem)
146     ARG("Addr", Ref)
147     VARG("Parameters", Data)
148   END_ARGS
149 END_OP
150
151 BEGIN_OP(Add)
152   BEGIN_ARGS
153     ARG("Result", NumP)
154     MARK
155     BLOCK
156     ARG_SAME("Op 1", NumP, 0)
157     ARG_SAME("Op 2", NumP, 0)
158   END_ARGS
159
160   BEGIN_ARGS
161     ARG("Result", Ref)
162     MARK
163     BLOCK
164     ARG("Op 1", Ref)
165     ARG("Op 2", Num)
166   END_ARGS
167
168   BEGIN_ARGS
169     ARG("Result", Ref)
170     MARK
171     BLOCK
172     ARG("Op 1", Num)
173     ARG("Op 2", Ref)
174   END_ARGS
175 END_OP
176
177 BEGIN_OP(Sub)
178   BEGIN_ARGS
179     ARG("Result", NumP)
180     MARK
181     BLOCK
182     ARG_SAME("Op 1", NumP, 0)
183     ARG_SAME("Op 2", NumP, 0)
184   END_ARGS
185
186   BEGIN_ARGS
187     ARG("Result", Ref)
188     MARK
189     BLOCK
190     ARG("Op 1", NumP)
191     ARG("Op 2", Ref)
192   END_ARGS
193
194   BEGIN_ARGS
195     ARG("Result", Ref)
196     MARK
197     BLOCK
198     ARG("Op 1", Ref)
199     ARG("Op 2", NumP)
200   END_ARGS
201
202   BEGIN_ARGS
203     ARG("Result", Num)
204     MARK
205     BLOCK
206     ARG("Op 1", Ref)
207     ARG("Op 2", Ref)
208   END_ARGS
209 END_OP
210
211 BEGIN_OP(Minus)
212   BEGIN_ARGS
213     ARG("Result", Num)
214     MARK
215     BLOCK
216     ARG_SAME("Op 0", Num, 0)
217   END_ARGS
218 END_OP
219
220 BEGIN_OP(Mul)
221   BEGIN_ARGS
222     ARG("Result", Int)
223     MARK
224     BLOCK
225     ARG("Op 0", Int)
226     ARG_SAME("Op 1", Int, 3)
227   END_ARGS
228
229   BEGIN_ARGS
230     ARG("Result", Float)
231     MARK
232     BLOCK
233     ARG_SAME("Op 0", Float, 0)
234     ARG_SAME("Op 1", Float, 0)
235   END_ARGS
236 END_OP
237
238 BEGIN_OP(Quot)
239   BEGIN_ARGS
240     ARG("Memory", Mem)
241     ARG("CF", X)
242     ARG("Op 0", Float)
243     MARK
244     BLOCK
245     ARG("Memory", Mem)
246     ARG_SAME("Op 0", Float, 2)
247     ARG_SAME("Op 1", Float, 2)
248   END_ARGS
249 END_OP
250
251 BEGIN_OP(DivMod)
252   BEGIN_ARGS
253     ARG("Memory", Mem)
254     ARG("CF", X)
255     ARG("Res 0", Int)
256     ARG_SAME("Res 1", Int, 2)
257     MARK
258     BLOCK
259     ARG("Memory", Mem)
260     ARG_SAME("Op 0", Int, 2)
261     ARG_SAME("Op 1", Int, 2)
262   END_ARGS
263 END_OP
264
265 BEGIN_OP(Div)
266 BEGIN_ARGS
267   ARG("Memory", Mem)
268   ARG("CF", X)
269   ARG("Result", Int)
270   MARK
271   BLOCK
272   ARG("Memory", Mem)
273   ARG_SAME("Op 0", Int, 2)
274   ARG_SAME("Op 1", Int, 2)
275 END_ARGS
276 END_OP
277
278 BEGIN_OP(Mod)
279 BEGIN_ARGS
280   ARG("Memory", Mem)
281   ARG("CF", X)
282   ARG("Result", Int)
283   MARK
284   BLOCK
285   ARG("Memory", Mem)
286   ARG_SAME("Op 0", Int, 2)
287   ARG_SAME("Op 1", Int, 2)
288 END_ARGS
289 END_OP
290
291 BEGIN_OP(Abs)
292 BEGIN_ARGS
293   ARG("Res", Num)
294   MARK
295   BLOCK
296   ARG_SAME("Op", Num, 0)
297 END_ARGS
298 END_OP
299
300 BEGIN_OP(Mux)
301 BEGIN_ARGS
302   ARG("Res", NumP)
303   MARK
304   BLOCK
305   ARG("Switch", Bool)
306   ARG_SAME("Op 0", NumP, 0)
307   ARG_SAME("Op 1", NumP, 0)
308 END_ARGS
309 END_OP
310
311
312 BEGIN_OP(And)
313 BEGIN_ARGS
314   ARG("Res", Int)
315   MARK
316   BLOCK
317   ARG_SAME("Op 0", Int, 0)
318   ARG_SAME("Op 1", Int, 0)
319 END_ARGS
320 END_OP
321
322 BEGIN_OP(Or)
323 BEGIN_ARGS
324   ARG("Res", Int)
325   MARK
326   BLOCK
327   ARG_SAME("Op 0", Int, 0)
328   ARG_SAME("Op 1", Int, 0)
329 END_ARGS
330 END_OP
331
332 BEGIN_OP(Eor)
333 BEGIN_ARGS
334   ARG("Res", Int)
335   MARK
336   BLOCK
337   ARG_SAME("Op 0", Int, 0)
338   ARG_SAME("Op 1", Int, 0)
339 END_ARGS
340 END_OP
341
342 BEGIN_OP(Not)
343 BEGIN_ARGS
344   ARG("Res", Int)
345   MARK
346   BLOCK
347   ARG_SAME("Op", Int, 0)
348 END_ARGS
349 END_OP
350
351 BEGIN_OP(Shl)
352 BEGIN_ARGS
353   ARG("Res", Int)
354   MARK
355   BLOCK
356   ARG_SAME("Op 0", Int, 0)
357   ARG("Op 1", IntU)
358 END_ARGS
359 END_OP
360
361 BEGIN_OP(Shr)
362 BEGIN_ARGS
363   ARG("Res", Int)
364   MARK
365   BLOCK
366   ARG_SAME("Op 0", Int, 0)
367   ARG("Op 1", IntU)
368 END_ARGS
369 END_OP
370
371 BEGIN_OP(Shrs)
372 BEGIN_ARGS
373   ARG("Res", Int)
374   MARK
375   BLOCK
376   ARG_SAME("Op 0", Int, 0)
377   ARG("Op 1", IntU)
378 END_ARGS
379 END_OP
380
381 BEGIN_OP(Rot)
382 BEGIN_ARGS
383   ARG("Res", Int)
384   MARK
385   BLOCK
386   ARG_SAME("Op 0", Int, 0)
387   ARG("Op 1", Int)
388 END_ARGS
389 END_OP
390
391 BEGIN_OP(Cmp)
392 BEGIN_ARGS
393   VARG("Res", Bool)
394   MARK
395   BLOCK
396   ARG("Op 0", Datab)
397   ARG_SAME("Op 1", Datab, 3)
398 END_ARGS
399 END_OP
400
401 BEGIN_OP(Conv)
402 BEGIN_ARGS
403   VARG("Res", Datab)
404   MARK
405   BLOCK
406   ARG("Op 0", Datab)
407 END_ARGS
408 END_OP
409
410 BEGIN_OP(Phi)
411 BEGIN_ARGS
412   ARG_SAME("Res", DataM, 3)
413   MARK
414   BLOCK
415   VARG("Op 0", DataM)
416 END_ARGS
417 END_OP
418
419 BEGIN_OP(Filter)
420 BEGIN_ARGS
421   ARG_SAME("Res", DataM, 3)
422   MARK
423   BLOCK
424   VARG("Op 0", DataM)
425 END_ARGS
426 END_OP
427
428 BEGIN_OP(Load)
429 BEGIN_ARGS
430   ARG("Memory", Mem)
431   ARG("CF", X)
432   ARG("Data", Data)
433   MARK
434   BLOCK
435   ARG("Memory", Mem)
436   ARG("Addr", Ref)
437 END_ARGS
438 END_OP
439
440 BEGIN_OP(Store)
441 BEGIN_ARGS
442   ARG("Memory", Mem)
443   ARG("CF", X)
444   MARK
445   BLOCK
446   ARG("Memory", Mem)
447   ARG("Addr", Ref)
448   ARG("Data", Data)
449 END_ARGS
450 END_OP
451
452 BEGIN_OP(Alloc)
453 BEGIN_ARGS
454   ARG("Memory", Mem)
455   ARG("CF", X)
456   ARG("Addr", Ref)
457   MARK
458   BLOCK
459   ARG("Memory", Mem)
460   ARG("Size", IntU)
461 END_ARGS
462 END_OP
463
464 BEGIN_OP(Free)
465 BEGIN_ARGS
466   ARG("Memory", Mem)
467   MARK
468   BLOCK
469   ARG("Memory", Mem)
470   ARG("Addr", Ref)
471 END_ARGS
472 END_OP
473
474 BEGIN_OP(Sync)
475 BEGIN_ARGS
476   ARG("Memory", Mem)
477   MARK
478   BLOCK
479   VARG_SAME("Memory", Mem)
480 END_ARGS
481 END_OP