1/* Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py */
2#ifndef Py_OPCODE_H
3#define Py_OPCODE_H
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8
9 /* Instruction opcodes for compiled code */
10#define POP_TOP 1
11#define ROT_TWO 2
12#define ROT_THREE 3
13#define DUP_TOP 4
14#define DUP_TOP_TWO 5
15#define ROT_FOUR 6
16#define NOP 9
17#define UNARY_POSITIVE 10
18#define UNARY_NEGATIVE 11
19#define UNARY_NOT 12
20#define UNARY_INVERT 15
21#define BINARY_MATRIX_MULTIPLY 16
22#define INPLACE_MATRIX_MULTIPLY 17
23#define BINARY_POWER 19
24#define BINARY_MULTIPLY 20
25#define BINARY_MODULO 22
26#define BINARY_ADD 23
27#define BINARY_SUBTRACT 24
28#define BINARY_SUBSCR 25
29#define BINARY_FLOOR_DIVIDE 26
30#define BINARY_TRUE_DIVIDE 27
31#define INPLACE_FLOOR_DIVIDE 28
32#define INPLACE_TRUE_DIVIDE 29
33#define GET_LEN 30
34#define MATCH_MAPPING 31
35#define MATCH_SEQUENCE 32
36#define MATCH_KEYS 33
37#define COPY_DICT_WITHOUT_KEYS 34
38#define WITH_EXCEPT_START 49
39#define GET_AITER 50
40#define GET_ANEXT 51
41#define BEFORE_ASYNC_WITH 52
42#define END_ASYNC_FOR 54
43#define INPLACE_ADD 55
44#define INPLACE_SUBTRACT 56
45#define INPLACE_MULTIPLY 57
46#define INPLACE_MODULO 59
47#define STORE_SUBSCR 60
48#define DELETE_SUBSCR 61
49#define BINARY_LSHIFT 62
50#define BINARY_RSHIFT 63
51#define BINARY_AND 64
52#define BINARY_XOR 65
53#define BINARY_OR 66
54#define INPLACE_POWER 67
55#define GET_ITER 68
56#define GET_YIELD_FROM_ITER 69
57#define PRINT_EXPR 70
58#define LOAD_BUILD_CLASS 71
59#define YIELD_FROM 72
60#define GET_AWAITABLE 73
61#define LOAD_ASSERTION_ERROR 74
62#define INPLACE_LSHIFT 75
63#define INPLACE_RSHIFT 76
64#define INPLACE_AND 77
65#define INPLACE_XOR 78
66#define INPLACE_OR 79
67#define LIST_TO_TUPLE 82
68#define RETURN_VALUE 83
69#define IMPORT_STAR 84
70#define SETUP_ANNOTATIONS 85
71#define YIELD_VALUE 86
72#define POP_BLOCK 87
73#define POP_EXCEPT 89
74#define HAVE_ARGUMENT 90
75#define STORE_NAME 90
76#define DELETE_NAME 91
77#define UNPACK_SEQUENCE 92
78#define FOR_ITER 93
79#define UNPACK_EX 94
80#define STORE_ATTR 95
81#define DELETE_ATTR 96
82#define STORE_GLOBAL 97
83#define DELETE_GLOBAL 98
84#define ROT_N 99
85#define LOAD_CONST 100
86#define LOAD_NAME 101
87#define BUILD_TUPLE 102
88#define BUILD_LIST 103
89#define BUILD_SET 104
90#define BUILD_MAP 105
91#define LOAD_ATTR 106
92#define COMPARE_OP 107
93#define IMPORT_NAME 108
94#define IMPORT_FROM 109
95#define JUMP_FORWARD 110
96#define JUMP_IF_FALSE_OR_POP 111
97#define JUMP_IF_TRUE_OR_POP 112
98#define JUMP_ABSOLUTE 113
99#define POP_JUMP_IF_FALSE 114
100#define POP_JUMP_IF_TRUE 115
101#define LOAD_GLOBAL 116
102#define IS_OP 117
103#define CONTAINS_OP 118
104#define RERAISE 119
105#define JUMP_IF_NOT_EXC_MATCH 121
106#define SETUP_FINALLY 122
107#define LOAD_FAST 124
108#define STORE_FAST 125
109#define DELETE_FAST 126
110#define GEN_START 129
111#define RAISE_VARARGS 130
112#define CALL_FUNCTION 131
113#define MAKE_FUNCTION 132
114#define BUILD_SLICE 133
115#define LOAD_CLOSURE 135
116#define LOAD_DEREF 136
117#define STORE_DEREF 137
118#define DELETE_DEREF 138
119#define CALL_FUNCTION_KW 141
120#define CALL_FUNCTION_EX 142
121#define SETUP_WITH 143
122#define EXTENDED_ARG 144
123#define LIST_APPEND 145
124#define SET_ADD 146
125#define MAP_ADD 147
126#define LOAD_CLASSDEREF 148
127#define MATCH_CLASS 152
128#define SETUP_ASYNC_WITH 154
129#define FORMAT_VALUE 155
130#define BUILD_CONST_KEY_MAP 156
131#define BUILD_STRING 157
132#define LOAD_METHOD 160
133#define CALL_METHOD 161
134#define LIST_EXTEND 162
135#define SET_UPDATE 163
136#define DICT_MERGE 164
137#define DICT_UPDATE 165
138#ifdef NEED_OPCODE_JUMP_TABLES
139static uint32_t _PyOpcode_RelativeJump[8] = {
140 0U,
141 0U,
142 536870912U,
143 67125248U,
144 67141632U,
145 0U,
146 0U,
147 0U,
148};
149static uint32_t _PyOpcode_Jump[8] = {
150 0U,
151 0U,
152 536870912U,
153 101695488U,
154 67141632U,
155 0U,
156 0U,
157 0U,
158};
159#endif /* OPCODE_TABLES */
160
161/* EXCEPT_HANDLER is a special, implicit block type which is created when
162 entering an except handler. It is not an opcode but we define it here
163 as we want it to be available to both frameobject.c and ceval.c, while
164 remaining private.*/
165#define EXCEPT_HANDLER 257
166
167#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
168
169#ifdef __cplusplus
170}
171#endif
172#endif /* !Py_OPCODE_H */
173