17db96d56Sopenharmony_ci// Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ci#ifndef Py_OPCODE_H
47db96d56Sopenharmony_ci#define Py_OPCODE_H
57db96d56Sopenharmony_ci#ifdef __cplusplus
67db96d56Sopenharmony_ciextern "C" {
77db96d56Sopenharmony_ci#endif
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci/* Instruction opcodes for compiled code */
117db96d56Sopenharmony_ci#define CACHE                                    0
127db96d56Sopenharmony_ci#define POP_TOP                                  1
137db96d56Sopenharmony_ci#define PUSH_NULL                                2
147db96d56Sopenharmony_ci#define NOP                                      9
157db96d56Sopenharmony_ci#define UNARY_POSITIVE                          10
167db96d56Sopenharmony_ci#define UNARY_NEGATIVE                          11
177db96d56Sopenharmony_ci#define UNARY_NOT                               12
187db96d56Sopenharmony_ci#define UNARY_INVERT                            15
197db96d56Sopenharmony_ci#define BINARY_SUBSCR                           25
207db96d56Sopenharmony_ci#define GET_LEN                                 30
217db96d56Sopenharmony_ci#define MATCH_MAPPING                           31
227db96d56Sopenharmony_ci#define MATCH_SEQUENCE                          32
237db96d56Sopenharmony_ci#define MATCH_KEYS                              33
247db96d56Sopenharmony_ci#define PUSH_EXC_INFO                           35
257db96d56Sopenharmony_ci#define CHECK_EXC_MATCH                         36
267db96d56Sopenharmony_ci#define CHECK_EG_MATCH                          37
277db96d56Sopenharmony_ci#define WITH_EXCEPT_START                       49
287db96d56Sopenharmony_ci#define GET_AITER                               50
297db96d56Sopenharmony_ci#define GET_ANEXT                               51
307db96d56Sopenharmony_ci#define BEFORE_ASYNC_WITH                       52
317db96d56Sopenharmony_ci#define BEFORE_WITH                             53
327db96d56Sopenharmony_ci#define END_ASYNC_FOR                           54
337db96d56Sopenharmony_ci#define STORE_SUBSCR                            60
347db96d56Sopenharmony_ci#define DELETE_SUBSCR                           61
357db96d56Sopenharmony_ci#define GET_ITER                                68
367db96d56Sopenharmony_ci#define GET_YIELD_FROM_ITER                     69
377db96d56Sopenharmony_ci#define PRINT_EXPR                              70
387db96d56Sopenharmony_ci#define LOAD_BUILD_CLASS                        71
397db96d56Sopenharmony_ci#define LOAD_ASSERTION_ERROR                    74
407db96d56Sopenharmony_ci#define RETURN_GENERATOR                        75
417db96d56Sopenharmony_ci#define LIST_TO_TUPLE                           82
427db96d56Sopenharmony_ci#define RETURN_VALUE                            83
437db96d56Sopenharmony_ci#define IMPORT_STAR                             84
447db96d56Sopenharmony_ci#define SETUP_ANNOTATIONS                       85
457db96d56Sopenharmony_ci#define YIELD_VALUE                             86
467db96d56Sopenharmony_ci#define ASYNC_GEN_WRAP                          87
477db96d56Sopenharmony_ci#define PREP_RERAISE_STAR                       88
487db96d56Sopenharmony_ci#define POP_EXCEPT                              89
497db96d56Sopenharmony_ci#define HAVE_ARGUMENT                           90
507db96d56Sopenharmony_ci#define STORE_NAME                              90
517db96d56Sopenharmony_ci#define DELETE_NAME                             91
527db96d56Sopenharmony_ci#define UNPACK_SEQUENCE                         92
537db96d56Sopenharmony_ci#define FOR_ITER                                93
547db96d56Sopenharmony_ci#define UNPACK_EX                               94
557db96d56Sopenharmony_ci#define STORE_ATTR                              95
567db96d56Sopenharmony_ci#define DELETE_ATTR                             96
577db96d56Sopenharmony_ci#define STORE_GLOBAL                            97
587db96d56Sopenharmony_ci#define DELETE_GLOBAL                           98
597db96d56Sopenharmony_ci#define SWAP                                    99
607db96d56Sopenharmony_ci#define LOAD_CONST                             100
617db96d56Sopenharmony_ci#define LOAD_NAME                              101
627db96d56Sopenharmony_ci#define BUILD_TUPLE                            102
637db96d56Sopenharmony_ci#define BUILD_LIST                             103
647db96d56Sopenharmony_ci#define BUILD_SET                              104
657db96d56Sopenharmony_ci#define BUILD_MAP                              105
667db96d56Sopenharmony_ci#define LOAD_ATTR                              106
677db96d56Sopenharmony_ci#define COMPARE_OP                             107
687db96d56Sopenharmony_ci#define IMPORT_NAME                            108
697db96d56Sopenharmony_ci#define IMPORT_FROM                            109
707db96d56Sopenharmony_ci#define JUMP_FORWARD                           110
717db96d56Sopenharmony_ci#define JUMP_IF_FALSE_OR_POP                   111
727db96d56Sopenharmony_ci#define JUMP_IF_TRUE_OR_POP                    112
737db96d56Sopenharmony_ci#define POP_JUMP_FORWARD_IF_FALSE              114
747db96d56Sopenharmony_ci#define POP_JUMP_FORWARD_IF_TRUE               115
757db96d56Sopenharmony_ci#define LOAD_GLOBAL                            116
767db96d56Sopenharmony_ci#define IS_OP                                  117
777db96d56Sopenharmony_ci#define CONTAINS_OP                            118
787db96d56Sopenharmony_ci#define RERAISE                                119
797db96d56Sopenharmony_ci#define COPY                                   120
807db96d56Sopenharmony_ci#define BINARY_OP                              122
817db96d56Sopenharmony_ci#define SEND                                   123
827db96d56Sopenharmony_ci#define LOAD_FAST                              124
837db96d56Sopenharmony_ci#define STORE_FAST                             125
847db96d56Sopenharmony_ci#define DELETE_FAST                            126
857db96d56Sopenharmony_ci#define POP_JUMP_FORWARD_IF_NOT_NONE           128
867db96d56Sopenharmony_ci#define POP_JUMP_FORWARD_IF_NONE               129
877db96d56Sopenharmony_ci#define RAISE_VARARGS                          130
887db96d56Sopenharmony_ci#define GET_AWAITABLE                          131
897db96d56Sopenharmony_ci#define MAKE_FUNCTION                          132
907db96d56Sopenharmony_ci#define BUILD_SLICE                            133
917db96d56Sopenharmony_ci#define JUMP_BACKWARD_NO_INTERRUPT             134
927db96d56Sopenharmony_ci#define MAKE_CELL                              135
937db96d56Sopenharmony_ci#define LOAD_CLOSURE                           136
947db96d56Sopenharmony_ci#define LOAD_DEREF                             137
957db96d56Sopenharmony_ci#define STORE_DEREF                            138
967db96d56Sopenharmony_ci#define DELETE_DEREF                           139
977db96d56Sopenharmony_ci#define JUMP_BACKWARD                          140
987db96d56Sopenharmony_ci#define CALL_FUNCTION_EX                       142
997db96d56Sopenharmony_ci#define EXTENDED_ARG                           144
1007db96d56Sopenharmony_ci#define LIST_APPEND                            145
1017db96d56Sopenharmony_ci#define SET_ADD                                146
1027db96d56Sopenharmony_ci#define MAP_ADD                                147
1037db96d56Sopenharmony_ci#define LOAD_CLASSDEREF                        148
1047db96d56Sopenharmony_ci#define COPY_FREE_VARS                         149
1057db96d56Sopenharmony_ci#define RESUME                                 151
1067db96d56Sopenharmony_ci#define MATCH_CLASS                            152
1077db96d56Sopenharmony_ci#define FORMAT_VALUE                           155
1087db96d56Sopenharmony_ci#define BUILD_CONST_KEY_MAP                    156
1097db96d56Sopenharmony_ci#define BUILD_STRING                           157
1107db96d56Sopenharmony_ci#define LOAD_METHOD                            160
1117db96d56Sopenharmony_ci#define LIST_EXTEND                            162
1127db96d56Sopenharmony_ci#define SET_UPDATE                             163
1137db96d56Sopenharmony_ci#define DICT_MERGE                             164
1147db96d56Sopenharmony_ci#define DICT_UPDATE                            165
1157db96d56Sopenharmony_ci#define PRECALL                                166
1167db96d56Sopenharmony_ci#define CALL                                   171
1177db96d56Sopenharmony_ci#define KW_NAMES                               172
1187db96d56Sopenharmony_ci#define POP_JUMP_BACKWARD_IF_NOT_NONE          173
1197db96d56Sopenharmony_ci#define POP_JUMP_BACKWARD_IF_NONE              174
1207db96d56Sopenharmony_ci#define POP_JUMP_BACKWARD_IF_FALSE             175
1217db96d56Sopenharmony_ci#define POP_JUMP_BACKWARD_IF_TRUE              176
1227db96d56Sopenharmony_ci#define BINARY_OP_ADAPTIVE                       3
1237db96d56Sopenharmony_ci#define BINARY_OP_ADD_FLOAT                      4
1247db96d56Sopenharmony_ci#define BINARY_OP_ADD_INT                        5
1257db96d56Sopenharmony_ci#define BINARY_OP_ADD_UNICODE                    6
1267db96d56Sopenharmony_ci#define BINARY_OP_INPLACE_ADD_UNICODE            7
1277db96d56Sopenharmony_ci#define BINARY_OP_MULTIPLY_FLOAT                 8
1287db96d56Sopenharmony_ci#define BINARY_OP_MULTIPLY_INT                  13
1297db96d56Sopenharmony_ci#define BINARY_OP_SUBTRACT_FLOAT                14
1307db96d56Sopenharmony_ci#define BINARY_OP_SUBTRACT_INT                  16
1317db96d56Sopenharmony_ci#define BINARY_SUBSCR_ADAPTIVE                  17
1327db96d56Sopenharmony_ci#define BINARY_SUBSCR_DICT                      18
1337db96d56Sopenharmony_ci#define BINARY_SUBSCR_GETITEM                   19
1347db96d56Sopenharmony_ci#define BINARY_SUBSCR_LIST_INT                  20
1357db96d56Sopenharmony_ci#define BINARY_SUBSCR_TUPLE_INT                 21
1367db96d56Sopenharmony_ci#define CALL_ADAPTIVE                           22
1377db96d56Sopenharmony_ci#define CALL_PY_EXACT_ARGS                      23
1387db96d56Sopenharmony_ci#define CALL_PY_WITH_DEFAULTS                   24
1397db96d56Sopenharmony_ci#define COMPARE_OP_ADAPTIVE                     26
1407db96d56Sopenharmony_ci#define COMPARE_OP_FLOAT_JUMP                   27
1417db96d56Sopenharmony_ci#define COMPARE_OP_INT_JUMP                     28
1427db96d56Sopenharmony_ci#define COMPARE_OP_STR_JUMP                     29
1437db96d56Sopenharmony_ci#define EXTENDED_ARG_QUICK                      34
1447db96d56Sopenharmony_ci#define JUMP_BACKWARD_QUICK                     38
1457db96d56Sopenharmony_ci#define LOAD_ATTR_ADAPTIVE                      39
1467db96d56Sopenharmony_ci#define LOAD_ATTR_INSTANCE_VALUE                40
1477db96d56Sopenharmony_ci#define LOAD_ATTR_MODULE                        41
1487db96d56Sopenharmony_ci#define LOAD_ATTR_SLOT                          42
1497db96d56Sopenharmony_ci#define LOAD_ATTR_WITH_HINT                     43
1507db96d56Sopenharmony_ci#define LOAD_CONST__LOAD_FAST                   44
1517db96d56Sopenharmony_ci#define LOAD_FAST__LOAD_CONST                   45
1527db96d56Sopenharmony_ci#define LOAD_FAST__LOAD_FAST                    46
1537db96d56Sopenharmony_ci#define LOAD_GLOBAL_ADAPTIVE                    47
1547db96d56Sopenharmony_ci#define LOAD_GLOBAL_BUILTIN                     48
1557db96d56Sopenharmony_ci#define LOAD_GLOBAL_MODULE                      55
1567db96d56Sopenharmony_ci#define LOAD_METHOD_ADAPTIVE                    56
1577db96d56Sopenharmony_ci#define LOAD_METHOD_CLASS                       57
1587db96d56Sopenharmony_ci#define LOAD_METHOD_MODULE                      58
1597db96d56Sopenharmony_ci#define LOAD_METHOD_NO_DICT                     59
1607db96d56Sopenharmony_ci#define LOAD_METHOD_WITH_DICT                   62
1617db96d56Sopenharmony_ci#define LOAD_METHOD_WITH_VALUES                 63
1627db96d56Sopenharmony_ci#define PRECALL_ADAPTIVE                        64
1637db96d56Sopenharmony_ci#define PRECALL_BOUND_METHOD                    65
1647db96d56Sopenharmony_ci#define PRECALL_BUILTIN_CLASS                   66
1657db96d56Sopenharmony_ci#define PRECALL_BUILTIN_FAST_WITH_KEYWORDS      67
1667db96d56Sopenharmony_ci#define PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS  72
1677db96d56Sopenharmony_ci#define PRECALL_NO_KW_BUILTIN_FAST              73
1687db96d56Sopenharmony_ci#define PRECALL_NO_KW_BUILTIN_O                 76
1697db96d56Sopenharmony_ci#define PRECALL_NO_KW_ISINSTANCE                77
1707db96d56Sopenharmony_ci#define PRECALL_NO_KW_LEN                       78
1717db96d56Sopenharmony_ci#define PRECALL_NO_KW_LIST_APPEND               79
1727db96d56Sopenharmony_ci#define PRECALL_NO_KW_METHOD_DESCRIPTOR_FAST    80
1737db96d56Sopenharmony_ci#define PRECALL_NO_KW_METHOD_DESCRIPTOR_NOARGS  81
1747db96d56Sopenharmony_ci#define PRECALL_NO_KW_METHOD_DESCRIPTOR_O      113
1757db96d56Sopenharmony_ci#define PRECALL_NO_KW_STR_1                    121
1767db96d56Sopenharmony_ci#define PRECALL_NO_KW_TUPLE_1                  127
1777db96d56Sopenharmony_ci#define PRECALL_NO_KW_TYPE_1                   141
1787db96d56Sopenharmony_ci#define PRECALL_PYFUNC                         143
1797db96d56Sopenharmony_ci#define RESUME_QUICK                           150
1807db96d56Sopenharmony_ci#define STORE_ATTR_ADAPTIVE                    153
1817db96d56Sopenharmony_ci#define STORE_ATTR_INSTANCE_VALUE              154
1827db96d56Sopenharmony_ci#define STORE_ATTR_SLOT                        158
1837db96d56Sopenharmony_ci#define STORE_ATTR_WITH_HINT                   159
1847db96d56Sopenharmony_ci#define STORE_FAST__LOAD_FAST                  161
1857db96d56Sopenharmony_ci#define STORE_FAST__STORE_FAST                 167
1867db96d56Sopenharmony_ci#define STORE_SUBSCR_ADAPTIVE                  168
1877db96d56Sopenharmony_ci#define STORE_SUBSCR_DICT                      169
1887db96d56Sopenharmony_ci#define STORE_SUBSCR_LIST_INT                  170
1897db96d56Sopenharmony_ci#define UNPACK_SEQUENCE_ADAPTIVE               177
1907db96d56Sopenharmony_ci#define UNPACK_SEQUENCE_LIST                   178
1917db96d56Sopenharmony_ci#define UNPACK_SEQUENCE_TUPLE                  179
1927db96d56Sopenharmony_ci#define UNPACK_SEQUENCE_TWO_TUPLE              180
1937db96d56Sopenharmony_ci#define DO_TRACING                             255
1947db96d56Sopenharmony_ci
1957db96d56Sopenharmony_ci#define HAS_CONST(op) (false\
1967db96d56Sopenharmony_ci    || ((op) == 100) \
1977db96d56Sopenharmony_ci    || ((op) == 172) \
1987db96d56Sopenharmony_ci    )
1997db96d56Sopenharmony_ci
2007db96d56Sopenharmony_ci#define NB_ADD                                   0
2017db96d56Sopenharmony_ci#define NB_AND                                   1
2027db96d56Sopenharmony_ci#define NB_FLOOR_DIVIDE                          2
2037db96d56Sopenharmony_ci#define NB_LSHIFT                                3
2047db96d56Sopenharmony_ci#define NB_MATRIX_MULTIPLY                       4
2057db96d56Sopenharmony_ci#define NB_MULTIPLY                              5
2067db96d56Sopenharmony_ci#define NB_REMAINDER                             6
2077db96d56Sopenharmony_ci#define NB_OR                                    7
2087db96d56Sopenharmony_ci#define NB_POWER                                 8
2097db96d56Sopenharmony_ci#define NB_RSHIFT                                9
2107db96d56Sopenharmony_ci#define NB_SUBTRACT                             10
2117db96d56Sopenharmony_ci#define NB_TRUE_DIVIDE                          11
2127db96d56Sopenharmony_ci#define NB_XOR                                  12
2137db96d56Sopenharmony_ci#define NB_INPLACE_ADD                          13
2147db96d56Sopenharmony_ci#define NB_INPLACE_AND                          14
2157db96d56Sopenharmony_ci#define NB_INPLACE_FLOOR_DIVIDE                 15
2167db96d56Sopenharmony_ci#define NB_INPLACE_LSHIFT                       16
2177db96d56Sopenharmony_ci#define NB_INPLACE_MATRIX_MULTIPLY              17
2187db96d56Sopenharmony_ci#define NB_INPLACE_MULTIPLY                     18
2197db96d56Sopenharmony_ci#define NB_INPLACE_REMAINDER                    19
2207db96d56Sopenharmony_ci#define NB_INPLACE_OR                           20
2217db96d56Sopenharmony_ci#define NB_INPLACE_POWER                        21
2227db96d56Sopenharmony_ci#define NB_INPLACE_RSHIFT                       22
2237db96d56Sopenharmony_ci#define NB_INPLACE_SUBTRACT                     23
2247db96d56Sopenharmony_ci#define NB_INPLACE_TRUE_DIVIDE                  24
2257db96d56Sopenharmony_ci#define NB_INPLACE_XOR                          25
2267db96d56Sopenharmony_ci
2277db96d56Sopenharmony_ci#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
2287db96d56Sopenharmony_ci
2297db96d56Sopenharmony_ci/* Reserve some bytecodes for internal use in the compiler.
2307db96d56Sopenharmony_ci * The value of 240 is arbitrary. */
2317db96d56Sopenharmony_ci#define IS_ARTIFICIAL(op) ((op) > 240)
2327db96d56Sopenharmony_ci
2337db96d56Sopenharmony_ci#ifdef __cplusplus
2347db96d56Sopenharmony_ci}
2357db96d56Sopenharmony_ci#endif
2367db96d56Sopenharmony_ci#endif /* !Py_OPCODE_H */
237