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