• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  * http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef LIBABCKIT_ISA_ISA_STATIC_H
17 #define LIBABCKIT_ISA_ISA_STATIC_H
18 
19 #ifndef __cplusplus
20 #include <stdbool.h>
21 #include <stddef.h>
22 #include <stdint.h>
23 #else
24 #include <cstddef>
25 #include <cstdint>
26 #endif
27 
28 #include "../../../../include/c/metadata_core.h"
29 #include "../../../../include/c/ir_core.h"
30 #include "../../../../include/c/abckit.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 enum AbckitIsaApiStaticOpcode {
37     ABCKIT_ISA_API_STATIC_OPCODE_INVALID,
38     ABCKIT_ISA_API_STATIC_OPCODE_CONSTANT,
39     ABCKIT_ISA_API_STATIC_OPCODE_PARAMETER,
40     ABCKIT_ISA_API_STATIC_OPCODE_LOADSTRING,
41     ABCKIT_ISA_API_STATIC_OPCODE_RETURN,
42     ABCKIT_ISA_API_STATIC_OPCODE_TRY,
43     ABCKIT_ISA_API_STATIC_OPCODE_CATCHPHI,
44     ABCKIT_ISA_API_STATIC_OPCODE_PHI,
45 
46     /* Unary operations: */
47     ABCKIT_ISA_API_STATIC_OPCODE_NEG,
48     ABCKIT_ISA_API_STATIC_OPCODE_NOT,
49 
50     /* BinaryOperation: */
51     ABCKIT_ISA_API_STATIC_OPCODE_CMP,
52     ABCKIT_ISA_API_STATIC_OPCODE_ADD,
53     ABCKIT_ISA_API_STATIC_OPCODE_SUB,
54     ABCKIT_ISA_API_STATIC_OPCODE_MUL,
55     ABCKIT_ISA_API_STATIC_OPCODE_DIV,
56     ABCKIT_ISA_API_STATIC_OPCODE_MOD,
57     ABCKIT_ISA_API_STATIC_OPCODE_SHL,
58     ABCKIT_ISA_API_STATIC_OPCODE_SHR,
59     ABCKIT_ISA_API_STATIC_OPCODE_ASHR,
60     ABCKIT_ISA_API_STATIC_OPCODE_AND,
61     ABCKIT_ISA_API_STATIC_OPCODE_OR,
62     ABCKIT_ISA_API_STATIC_OPCODE_XOR,
63 
64     /* Cast: */
65     ABCKIT_ISA_API_STATIC_OPCODE_CAST,
66 
67     /* Object manipulation: */
68     ABCKIT_ISA_API_STATIC_OPCODE_NULLPTR,
69     ABCKIT_ISA_API_STATIC_OPCODE_NEWARRAY,
70     ABCKIT_ISA_API_STATIC_OPCODE_NEWOBJECT,
71     ABCKIT_ISA_API_STATIC_OPCODE_INITOBJECT,
72     ABCKIT_ISA_API_STATIC_OPCODE_LOADARRAY,
73     ABCKIT_ISA_API_STATIC_OPCODE_STOREARRAY,
74     ABCKIT_ISA_API_STATIC_OPCODE_LOADOBJECT,
75     ABCKIT_ISA_API_STATIC_OPCODE_STOREOBJECT,
76     ABCKIT_ISA_API_STATIC_OPCODE_LOADSTATIC,
77     ABCKIT_ISA_API_STATIC_OPCODE_STORESTATIC,
78     ABCKIT_ISA_API_STATIC_OPCODE_LENARRAY,
79     ABCKIT_ISA_API_STATIC_OPCODE_LOADCONSTARRAY,
80     ABCKIT_ISA_API_STATIC_OPCODE_CHECKCAST,
81     ABCKIT_ISA_API_STATIC_OPCODE_ISINSTANCE,
82     ABCKIT_ISA_API_STATIC_OPCODE_ISUNDEFINED,
83     ABCKIT_ISA_API_STATIC_OPCODE_LOADUNDEFINED,
84     ABCKIT_ISA_API_STATIC_OPCODE_EQUALS,
85 
86     /* Return: */
87     ABCKIT_ISA_API_STATIC_OPCODE_RETURN_VOID,
88 
89     /* Calls: */
90     ABCKIT_ISA_API_STATIC_OPCODE_CALL_STATIC,
91     ABCKIT_ISA_API_STATIC_OPCODE_CALL_VIRTUAL,
92 
93     /* BinaryImmOperation: */
94     ABCKIT_ISA_API_STATIC_OPCODE_ADDI,
95     ABCKIT_ISA_API_STATIC_OPCODE_SUBI,
96     ABCKIT_ISA_API_STATIC_OPCODE_MULI,
97     ABCKIT_ISA_API_STATIC_OPCODE_DIVI,
98     ABCKIT_ISA_API_STATIC_OPCODE_MODI,
99     ABCKIT_ISA_API_STATIC_OPCODE_SHLI,
100     ABCKIT_ISA_API_STATIC_OPCODE_SHRI,
101     ABCKIT_ISA_API_STATIC_OPCODE_ASHRI,
102     ABCKIT_ISA_API_STATIC_OPCODE_ANDI,
103     ABCKIT_ISA_API_STATIC_OPCODE_ORI,
104     ABCKIT_ISA_API_STATIC_OPCODE_XORI,
105 
106     /* Exceptions */
107     ABCKIT_ISA_API_STATIC_OPCODE_THROW,
108 
109     /* Condition */
110     ABCKIT_ISA_API_STATIC_OPCODE_IF,
111 };
112 
113 enum AbckitIsaApiStaticConditionCode {
114     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_NONE = 0,
115     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_EQ, /* == */
116     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_NE, /* != */
117     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_LT, /* < */
118     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_LE, /* <= */
119     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_GT, /* > */
120     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_GE, /* >= */
121     // Unsigned integers.
122     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_B,  /* < */
123     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_BE, /* <= */
124     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_A,  /* > */
125     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_AE, /* >= */
126     // Compare result of bitwise AND with zero
127     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_TST_EQ, /* (lhs AND rhs) == 0 */
128     ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_TST_NE, /* (lhs AND rhs) != 0 */
129 };
130 
131 /**
132  * @brief Struct that holds the pointers to the API used to work with static ISA.
133  * @note Valid targets: `ABCKIT_TARGET_ARK_TS_V2`.
134  */
135 struct AbckitIsaApiStatic {
136     /**
137      * @brief Returns core class of `inst`.
138      * @return AbckitCoreClass *.
139      * @param [ in ] AbckitInst *inst .
140      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
141      */
142     AbckitCoreClass *(*iGetClass)(AbckitInst *inst /* in */);
143 
144     /**
145      * @brief Sets `inst`'s class.
146      * @return void .
147      * @param [ in ] AbckitInst *inst .
148      * @param [ in ]  AbckitCoreClass *klass .
149      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
150      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitCoreClass *klass  is NULL.
151      */
152     void (*iSetClass)(AbckitInst *inst /* in */, AbckitCoreClass *klass /* in */);
153 
154     /**
155      * @brief Returns condition code.
156      * @return enum AbckitIsaApiStaticConditionCode .
157      * @param [ in ] AbckitInst *inst .
158      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
159      */
160     enum AbckitIsaApiStaticConditionCode (*iGetConditionCode)(AbckitInst *inst /* in */);
161 
162     /**
163      * @brief Sets condition code.
164      * @return void .
165      * @param [ in ] AbckitInst *inst .
166      * @param [ in ]  enum AbckitIsaApiStaticConditionCode cc .
167      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
168      */
169     void (*iSetConditionCode)(AbckitInst *inst /* in */, enum AbckitIsaApiStaticConditionCode cc /* in */);
170 
171     /**
172      * @brief Returns `inst`'s opcode.
173      * @return enum AbckitIsaApiStaticOpcode .
174      * @param [ in ] AbckitInst *inst .
175      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
176      */
177     enum AbckitIsaApiStaticOpcode (*iGetOpcode)(AbckitInst *inst /* in */);
178 
179     /* For Cast instructions */
180     /**
181      * @brief Sets target type 't' for 'inst'.
182      * @return void .
183      * @param [ in ] AbckitInst *inst .
184      * @param [ in ]  enum AbckitTypeId t .
185      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
186      */
187     void (*iSetTargetType)(AbckitInst *inst /* in */, enum AbckitTypeId t /* in */);
188 
189     /* For Cast instructions */
190     /**
191      * @brief Returns `inst`'s target type.
192      * @return enum AbckitTypeId .
193      * @param [ in ] AbckitInst *inst .
194      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inst  is NULL.
195      */
196     enum AbckitTypeId (*iGetTargetType)(AbckitInst *inst /* in */);
197 
198     /**
199      * @brief Creates `cmp` inst.
200      * @return AbckitInst *.
201      * @param [ in ] AbckitGraph *graph .
202      * @param [ in ]  AbckitInst *input0 .
203      * @param [ in ]  AbckitInst *input1 .
204      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
205      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
206      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
207      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
208      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
209      */
210     AbckitInst *(*iCreateCmp)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
211 
212     /**
213      * @brief Creates `load string` inst.
214      * @return AbckitInst *.
215      * @param [ in ] AbckitGraph *graph .
216      * @param [ in ]  AbckitString *str .
217      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
218      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitString *str  is NULL.
219      */
220     AbckitInst *(*iCreateLoadString)(AbckitGraph *graph /* in */, AbckitString *str /* in */);
221 
222     /**
223      * @brief Creates `return` inst.
224      * @return AbckitInst *.
225      * @param [ in ] AbckitGraph *graph .
226      * @param [ in ]  AbckitInst *input0 .
227      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
228      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
229      */
230     AbckitInst *(*iCreateReturn)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */);
231 
232     /**
233      * @brief Creates `If` inst.
234      * @return AbckitInst *.
235      * @param [ in ] AbckitGraph *graph .
236      * @param [ in ]  AbckitInst *input0 .
237      * @param [ in ]  AbckitInst *input1 .
238      * @param [ in ] enum AbckitIsaApiStaticConditionCode cc .
239      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
240      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
241      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
242      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
243      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
244      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if `cc` is ABCKIT_ISA_API_STATIC_CONDITION_CODE_CC_NONE
245      */
246     AbckitInst *(*iCreateIf)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */,
247                              enum AbckitIsaApiStaticConditionCode cc /* in */);
248 
249     /**
250      * @brief Creates `Neg` inst.
251      * @return AbckitInst *.
252      * @param [ in ] AbckitGraph *graph .
253      * @param [ in ]  AbckitInst *input0 .
254      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
255      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
256      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
257      */
258     AbckitInst *(*iCreateNeg)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */);
259 
260     /**
261      * @brief Creates `Not` inst.
262      * @return AbckitInst *.
263      * @param [ in ] AbckitGraph *graph .
264      * @param [ in ]  AbckitInst *input0 .
265      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
266      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
267      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
268      */
269     AbckitInst *(*iCreateNot)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */);
270 
271     /**
272      * @brief Creates `Add` inst.
273      * @return AbckitInst *.
274      * @param [ in ] AbckitGraph *graph .
275      * @param [ in ]  AbckitInst *input0 .
276      * @param [ in ]  AbckitInst *input1 .
277      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
278      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
279      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
280      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
281      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
282      */
283     AbckitInst *(*iCreateAdd)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
284 
285     /**
286      * @brief Creates `Sub` inst.
287      * @return AbckitInst *.
288      * @param [ in ] AbckitGraph *graph .
289      * @param [ in ]  AbckitInst *input0 .
290      * @param [ in ]  AbckitInst *input1 .
291      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
292      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
293      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
294      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
295      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
296      */
297     AbckitInst *(*iCreateSub)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
298 
299     /**
300      * @brief Creates `Mul` inst.
301      * @return AbckitInst *.
302      * @param [ in ] AbckitGraph *graph .
303      * @param [ in ]  AbckitInst *input0 .
304      * @param [ in ]  AbckitInst *input1 .
305      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
306      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
307      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
308      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
309      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
310      */
311     AbckitInst *(*iCreateMul)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
312 
313     /**
314      * @brief Creates `Div` inst.
315      * @return AbckitInst *.
316      * @param [ in ] AbckitGraph *graph .
317      * @param [ in ]  AbckitInst *input0 .
318      * @param [ in ]  AbckitInst *input1 .
319      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
320      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
321      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
322      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
323      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
324      */
325     AbckitInst *(*iCreateDiv)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
326 
327     /**
328      * @brief Creates `Mod` inst.
329      * @return AbckitInst *.
330      * @param [ in ] AbckitGraph *graph .
331      * @param [ in ]  AbckitInst *input0 .
332      * @param [ in ]  AbckitInst *input1 .
333      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
334      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
335      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
336      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
337      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
338      */
339     AbckitInst *(*iCreateMod)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
340 
341     /**
342      * @brief Creates `Shl` inst.
343      * @return AbckitInst *.
344      * @param [ in ] AbckitGraph *graph .
345      * @param [ in ]  AbckitInst *input0 .
346      * @param [ in ]  AbckitInst *input1 .
347      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
348      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
349      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
350      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
351      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
352      */
353     AbckitInst *(*iCreateShl)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
354 
355     /**
356      * @brief Creates `Shr` inst.
357      * @return AbckitInst *.
358      * @param [ in ] AbckitGraph *graph .
359      * @param [ in ]  AbckitInst *input0 .
360      * @param [ in ]  AbckitInst *input1 .
361      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
362      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
363      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
364      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
365      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
366      */
367     AbckitInst *(*iCreateShr)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
368 
369     /**
370      * @brief Creates `AShr` inst.
371      * @return AbckitInst *.
372      * @param [ in ] AbckitGraph *graph .
373      * @param [ in ]  AbckitInst *input0 .
374      * @param [ in ]  AbckitInst *input1 .
375      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
376      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
377      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
378      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
379      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
380      */
381     AbckitInst *(*iCreateAShr)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
382 
383     /**
384      * @brief Creates `And` inst.
385      * @return AbckitInst *.
386      * @param [ in ] AbckitGraph *graph .
387      * @param [ in ]  AbckitInst *input0 .
388      * @param [ in ]  AbckitInst *input1 .
389      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
390      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
391      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
392      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
393      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
394      */
395     AbckitInst *(*iCreateAnd)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
396 
397     /**
398      * @brief Creates `Or` inst.
399      * @return AbckitInst *.
400      * @param [ in ] AbckitGraph *graph .
401      * @param [ in ]  AbckitInst *input0 .
402      * @param [ in ]  AbckitInst *input1 .
403      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
404      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
405      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
406      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
407      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
408      */
409     AbckitInst *(*iCreateOr)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
410 
411     /**
412      * @brief Creates `Xor` inst.
413      * @return AbckitInst *.
414      * @param [ in ] AbckitGraph *graph .
415      * @param [ in ]  AbckitInst *input0 .
416      * @param [ in ]  AbckitInst *input1 .
417      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
418      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
419      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
420      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
421      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
422      */
423     AbckitInst *(*iCreateXor)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
424 
425     /**
426      * @brief Creates `Cast` inst.
427      * @return AbckitInst *.
428      * @param [ in ] AbckitGraph *graph .
429      * @param [ in ]  AbckitInst *input0 .
430      * @param [ in ] enum AbckitTypeId targetType .
431      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
432      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
433      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input0->graph is NULL.
434      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if input1->graph is NULL.
435      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if targetTypeId <= ABCKIT_TYPE_ID_INVALID
436      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if targetTypeId > ABCKIT_TYPE_ID_REFERENCE
437      */
438     AbckitInst *(*iCreateCast)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */,
439                                enum AbckitTypeId targetType /* in */);
440 
441     /**
442      * @brief Creates `NullPtr` inst.
443      * @return AbckitInst *.
444      * @param [ in ] AbckitGraph *graph .
445      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
446      */
447     AbckitInst *(*gCreateNullPtr)(AbckitGraph *graph /* in */);
448 
449     /**
450      * @brief Creates `NewArray` inst.
451      * @return AbckitInst *.
452      * @param [ in ] AbckitGraph *graph .
453      * @param [ in ]  AbckitCoreClass *inputClass .
454      * @param [ in ] AbckitInst *inputSize .
455      * @note UNSUPPORTED
456      */
457     AbckitInst *(*iCreateNewArray)(AbckitGraph *graph /* in */, AbckitCoreClass *inputClass /* in */,
458                                    AbckitInst *inputSize /* in */);
459 
460     /**
461      * @brief Creates `NewObject` inst.
462      * @return AbckitInst *.
463      * @param [ in ] AbckitGraph *graph .
464      * @param [ in ]  AbckitCoreClass *inputClass .
465      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
466      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitCoreClass *inputClass  is NULL.
467      * @note Set `ABCKIT_STATUS_INTERNAL_ERROR` error if inputClass->owningModule  is NULL.
468      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph->file` and `inputClass->owningModule->file`
469      * @note are not the same.
470      */
471     AbckitInst *(*iCreateNewObject)(AbckitGraph *graph /* in */, AbckitCoreClass *inputClass /* in */);
472 
473     /**
474      * @brief Creates `InitObject` inst.
475      * @return AbckitInst *.
476      * @param [ in ] AbckitGraph *graph .
477      * @param [ in ]  AbckitCoreFunction *function .
478      * @param [ in ] size_t argCount .
479      * @param  ... .
480      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
481      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitCoreFunction *function  is NULL.
482      * @note Set `ABCKIT_STATUS_INTERNAL_ERROR` error if inputFunction->owningModule  is NULL.
483      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph->file` and `inputFunction->owningModule->file`
484      * @note are not the same.
485      */
486     AbckitInst *(*iCreateInitObject)(AbckitGraph *graph /* in */, AbckitCoreFunction *function /* in */,
487                                      size_t argCount /* in */, ... /* function params */);
488 
489     /**
490      * @brief Creates `LoadArray` inst.
491      * @return AbckitInst *.
492      * @param [ in ] AbckitGraph *graph .
493      * @param [ in ]  AbckitInst *arrayRef .
494      * @param [ in ] AbckitInst *idx .
495      * @param [ in ]  enum AbckitTypeId returnTypeId .
496      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
497      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *arrayRef  is NULL.
498      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *idx  is NULL.
499      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `arrayRef->graph`
500      * @note and `idx->graph`are not the same.
501      */
502     AbckitInst *(*iCreateLoadArray)(AbckitGraph *graph /* in */, AbckitInst *arrayRef /* in */,
503                                     AbckitInst *idx /* in */, enum AbckitTypeId returnTypeId /* in */);
504 
505     /**
506      * @brief Creates `StoreArray` inst.
507      * @return AbckitInst *.
508      * @param [ in ] AbckitGraph *graph .
509      * @param [ in ]  AbckitInst *arrayRef .
510      * @param [ in ] AbckitInst *idx .
511      * @param [ in ]  AbckitInst *value .
512      * @param [ in ] enum AbckitTypeId valueTypeId .
513      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
514      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *arrayRef  is NULL.
515      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *idx  is NULL.
516      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *value  is NULL.
517      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `arrayRef->graph`,
518      * @note `idx->graph` and `value->graph` are not the same.
519      */
520     AbckitInst *(*iCreateStoreArray)(AbckitGraph *graph /* in */, AbckitInst *arrayRef /* in */,
521                                      AbckitInst *idx /* in */, AbckitInst *value /* in */,
522                                      enum AbckitTypeId valueTypeId /* in */);
523 
524     /**
525      * @brief Creates `StoreArrayWide` inst.
526      * @return AbckitInst *.
527      * @param [ in ] AbckitGraph *graph .
528      * @param [ in ]  AbckitInst *arrayRef .
529      * @param [ in ] AbckitInst *idx .
530      * @param [ in ]  AbckitInst *value .
531      * @param [ in ] enum AbckitTypeId valueTypeId .
532      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
533      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *arrayRef  is NULL.
534      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *idx  is NULL.
535      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *value  is NULL.
536      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `arrayRef->graph`,
537      * @note `idx->graph` and `value->graph` are not the same.
538      */
539     AbckitInst *(*iCreateStoreArrayWide)(AbckitGraph *graph /* in */, AbckitInst *arrayRef /* in */,
540                                          AbckitInst *idx /* in */, AbckitInst *value /* in */,
541                                          enum AbckitTypeId valueTypeId /* in */);
542 
543     /**
544      * @brief Creates `LenArray` inst.
545      * @return AbckitInst *.
546      * @param [ in ] AbckitGraph *graph .
547      * @param [ in ]  AbckitInst *arr .
548      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
549      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *arr  is NULL.
550      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph` and `arr->graph`
551      * @note are not the same.
552      */
553     AbckitInst *(*iCreateLenArray)(AbckitGraph *graph /* in */, AbckitInst *arr /* in */);
554 
555     /**
556      * @brief Creates `LoadConstArray` inst.
557      * @return AbckitInst *.
558      * @param [ in ] AbckitGraph *graph .
559      * @param [ in ]  AbckitLiteralArray *literalArray .
560      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
561      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitLiteralArray *literalArray  is NULL.
562      */
563     AbckitInst *(*iCreateLoadConstArray)(AbckitGraph *graph /* in */, AbckitLiteralArray *literalArray /* in */);
564 
565     /**
566      * @brief Creates `CheckCast` inst.
567      * @return AbckitInst *.
568      * @param [ in ] AbckitGraph *graph .
569      * @param [ in ]  AbckitInst *inputObj .
570      * @param [ in ] AbckitType *targetType .
571      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
572      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inputObj  is NULL.
573      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitType *targetType  is NULL.
574      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph` and `inputObj->graph`
575      * @note are not the same.
576      */
577     AbckitInst *(*iCreateCheckCast)(AbckitGraph *graph /* in */, AbckitInst *inputObj /* in */,
578                                     AbckitType *targetType /* in */);
579 
580     /**
581      * @brief Creates `IsInstance` inst.
582      * @return AbckitInst *.
583      * @param [ in ] AbckitGraph *graph .
584      * @param [ in ]  AbckitInst *inputObj .
585      * @param [ in ] AbckitType *targetType .
586      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
587      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inputObj  is NULL.
588      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitType *targetType  is NULL.
589      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph` and `inputObj->graph`
590      * @note are not the same.
591      */
592     AbckitInst *(*iCreateIsInstance)(AbckitGraph *graph /* in */, AbckitInst *inputObj /* in */,
593                                      AbckitType *targetType /* in */);
594 
595     /**
596      * @brief Creates `LoadUndefined` inst.
597      * @return AbckitInst *.
598      * @param [ in ] AbckitGraph *graph .
599      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
600      */
601     AbckitInst *(*iCreateLoadUndefined)(AbckitGraph *graph /* in */);
602 
603     /**
604      * @brief Creates `ReturnVoid` inst.
605      * @return AbckitInst *.
606      * @param [ in ] AbckitGraph *graph .
607      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
608      */
609     AbckitInst *(*iCreateReturnVoid)(AbckitGraph *graph /* in */);
610 
611     /**
612      * @brief Creates `Equals` inst.
613      * @return AbckitInst *.
614      * @param [ in ] AbckitGraph *graph .
615      * @param [ in ]  AbckitInst *input0 .
616      * @param [ in ]  AbckitInst *input1 .
617      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
618      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
619      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input1  is NULL.
620      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
621      * @note and `input1->graph` are not the same.
622      */
623     AbckitInst *(*iCreateEquals)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, AbckitInst *input1 /* in */);
624 
625     /**
626      * @brief Creates `CallStatic` inst.
627      * @return AbckitInst *.
628      * @param [ in ] AbckitGraph *graph .
629      * @param [ in ]  AbckitCoreFunction *function .
630      * @param [ in ] size_t argCount .
631      * @param  ... .
632      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
633      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitCoreFunction *function  is NULL.
634      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `function->graph`
635      * @note are not the same.
636      * @note Set `ABCKIT_STATUS_INTERNAL_ERROR` error if `inputFunction->owningModule` is NULL
637      */
638     AbckitInst *(*iCreateCallStatic)(AbckitGraph *graph /* in */, AbckitCoreFunction *function /* in */,
639                                      size_t argCount /* in */, ... /* function params */);
640 
641     /**
642      * @brief Creates `CallVirtual` inst.
643      * @return AbckitInst *.
644      * @param [ in ] AbckitGraph *graph .
645      * @param [ in ]  AbckitInst *inputObj .
646      * @param [ in ] AbckitCoreFunction *function .
647      * @param [ in ]  size_t argCount .
648      * @param ... .
649      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
650      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inputObj  is NULL.
651      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitCoreFunction *function  is NULL.
652      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `inputObj->graph`
653      * @note are not the same.
654      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph->file`, `inputFunction->owningModule->file`
655      * @note are not the same.
656      * @note Set `ABCKIT_STATUS_INTERNAL_ERROR` error if `inputFunction->owningModule` is NULL
657      */
658     AbckitInst *(*iCreateCallVirtual)(AbckitGraph *graph /* in */, AbckitInst *inputObj /* in */,
659                                       AbckitCoreFunction *function /* in */, size_t argCount /* in */,
660                                       ... /* function params */);
661 
662     /**
663      * @brief Creates `AddI` inst.
664      * @return AbckitInst *.
665      * @param [ in ] AbckitGraph *graph .
666      * @param [ in ]  AbckitInst *input0 .
667      * @param [ in ]  uint64_t imm .
668      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
669      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
670      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
671      * @note are not the same.
672      */
673     AbckitInst *(*iCreateAddI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
674 
675     /**
676      * @brief Creates `SubI` inst.
677      * @return AbckitInst *.
678      * @param [ in ] AbckitGraph *graph .
679      * @param [ in ]  AbckitInst *input0 .
680      * @param [ in ]  uint64_t imm .
681      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
682      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
683      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
684      * @note are not the same.
685      */
686     AbckitInst *(*iCreateSubI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
687 
688     /**
689      * @brief Creates `MulI` inst.
690      * @return AbckitInst *.
691      * @param [ in ] AbckitGraph *graph .
692      * @param [ in ]  AbckitInst *input0 .
693      * @param [ in ]  uint64_t imm .
694      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
695      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
696      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
697      * @note are not the same.
698      */
699     AbckitInst *(*iCreateMulI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
700 
701     /**
702      * @brief Creates `DivI` inst.
703      * @return AbckitInst *.
704      * @param [ in ] AbckitGraph *graph .
705      * @param [ in ]  AbckitInst *input0 .
706      * @param [ in ]  uint64_t imm .
707      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
708      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
709      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
710      * @note are not the same.
711      */
712     AbckitInst *(*iCreateDivI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
713 
714     /**
715      * @brief Creates `ModI` inst.
716      * @return AbckitInst *.
717      * @param [ in ] AbckitGraph *graph .
718      * @param [ in ]  AbckitInst *input0 .
719      * @param [ in ]  uint64_t imm .
720      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
721      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
722      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
723      * @note are not the same.
724      */
725     AbckitInst *(*iCreateModI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
726 
727     /**
728      * @brief Creates `ShlI` inst.
729      * @return AbckitInst *.
730      * @param [ in ] AbckitGraph *graph .
731      * @param [ in ]  AbckitInst *input0 .
732      * @param [ in ]  uint64_t imm .
733      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
734      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
735      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
736      * @note are not the same.
737      */
738     AbckitInst *(*iCreateShlI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
739 
740     /**
741      * @brief Creates `ShrI` inst.
742      * @return AbckitInst *.
743      * @param [ in ] AbckitGraph *graph .
744      * @param [ in ]  AbckitInst *input0 .
745      * @param [ in ]  uint64_t imm .
746      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
747      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
748      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
749      * @note are not the same.
750      */
751     AbckitInst *(*iCreateShrI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
752 
753     /**
754      * @brief Creates `AShrI` inst.
755      * @return AbckitInst *.
756      * @param [ in ] AbckitGraph *graph .
757      * @param [ in ]  AbckitInst *input0 .
758      * @param [ in ]  uint64_t imm .
759      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
760      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
761      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
762      * @note are not the same.
763      */
764     AbckitInst *(*iCreateAShrI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
765 
766     /**
767      * @brief Creates `AndI` inst.
768      * @return AbckitInst *.
769      * @param [ in ] AbckitGraph *graph .
770      * @param [ in ]  AbckitInst *input0 .
771      * @param [ in ]  uint64_t imm .
772      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
773      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
774      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
775      * @note are not the same.
776      */
777     AbckitInst *(*iCreateAndI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
778 
779     /**
780      * @brief Creates `OrI` inst.
781      * @return AbckitInst *.
782      * @param [ in ] AbckitGraph *graph .
783      * @param [ in ]  AbckitInst *input0 .
784      * @param [ in ]  uint64_t imm .
785      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
786      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
787      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
788      * @note are not the same.
789      */
790     AbckitInst *(*iCreateOrI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
791 
792     /**
793      * @brief Creates `XorI` inst.
794      * @return AbckitInst *.
795      * @param [ in ] AbckitGraph *graph .
796      * @param [ in ]  AbckitInst *input0 .
797      * @param [ in ]  uint64_t imm .
798      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
799      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *input0  is NULL.
800      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `input0->graph`
801      * @note are not the same.
802      */
803     AbckitInst *(*iCreateXorI)(AbckitGraph *graph /* in */, AbckitInst *input0 /* in */, uint64_t imm /* in */);
804 
805     /**
806      * @brief Creates `Throw` inst.
807      * @return AbckitInst *.
808      * @param [ in ] AbckitGraph *graph .
809      * @param [ in ]  AbckitInst *acc .
810      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
811      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *acc  is NULL.
812      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `acc->graph`
813      * @note are not the same.
814      */
815     AbckitInst *(*iCreateThrow)(AbckitGraph *graph /* in */, AbckitInst *acc /* in */);
816 
817     /**
818      * @brief Creates `IsUndefined` inst.
819      * @return AbckitInst *.
820      * @param [ in ] AbckitGraph *graph .
821      * @param [ in ]  AbckitInst *inputObj .
822      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitGraph *graph  is NULL.
823      * @note Set `ABCKIT_STATUS_BAD_ARGUMENT` error if AbckitInst *inputObj  is NULL.
824      * @note Set `ABCKIT_STATUS_WRONG_CTX` error if `graph`, `inputObj->graph`
825      * @note are not the same.
826      */
827     AbckitInst *(*iCreateIsUndefined)(AbckitGraph *graph /* in */, AbckitInst *inputObj /* in */);
828 };
829 
830 /**
831  * @brief Instantiates API for for working with static ISA.
832  * @return Instance of the `AbckitIsaApiStatic` struct with valid function pointers.
833  * @param [ in ] version - Version of the API to instantiate.
834  * @note Set `ABCKIT_STATUS_UNKNOWN_API_VERSION` error if `version` value is not in the `AbckitApiVersion` enum.
835  */
836 struct AbckitIsaApiStatic const *AbckitGetIsaApiStaticImpl(enum AbckitApiVersion version);
837 
838 #ifdef __cplusplus
839 }
840 #endif
841 
842 #endif  // LIBABCKIT_ISA_ISA_STATIC_H
843