blob: 998a5ce492d03fb1c524a89f10e3c29200004c93 [file] [log] [blame]
Shivank98e3d14552018-10-19 01:23:18 +05301/* Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py */
Guido van Rossuma3309961993-07-28 09:05:47 +00002#ifndef Py_OPCODE_H
3#define Py_OPCODE_H
4#ifdef __cplusplus
5extern "C" {
6#endif
7
Guido van Rossumf70e43a1991-02-19 12:39:46 +00008
Kushal Das02d23a22014-04-15 23:50:06 +05309 /* Instruction opcodes for compiled code */
Serhiy Storchaka3028c952015-05-27 21:31:33 +030010#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
Serhiy Storchaka520b7ae2018-02-22 23:33:30 +020015#define ROT_FOUR 6
Serhiy Storchaka3028c952015-05-27 21:31:33 +030016#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
Mark Shannonfee55262019-11-21 09:11:43 +000033#define WITH_EXCEPT_START 49
Serhiy Storchaka3028c952015-05-27 21:31:33 +030034#define GET_AITER 50
35#define GET_ANEXT 51
36#define BEFORE_ASYNC_WITH 52
Serhiy Storchaka702f8f32018-03-23 14:34:35 +020037#define END_ASYNC_FOR 54
Serhiy Storchaka3028c952015-05-27 21:31:33 +030038#define INPLACE_ADD 55
39#define INPLACE_SUBTRACT 56
40#define INPLACE_MULTIPLY 57
41#define INPLACE_MODULO 59
42#define STORE_SUBSCR 60
43#define DELETE_SUBSCR 61
44#define BINARY_LSHIFT 62
45#define BINARY_RSHIFT 63
46#define BINARY_AND 64
47#define BINARY_XOR 65
48#define BINARY_OR 66
49#define INPLACE_POWER 67
50#define GET_ITER 68
Yury Selivanov5376ba92015-06-22 12:19:30 -040051#define GET_YIELD_FROM_ITER 69
Serhiy Storchaka3028c952015-05-27 21:31:33 +030052#define PRINT_EXPR 70
53#define LOAD_BUILD_CLASS 71
54#define YIELD_FROM 72
55#define GET_AWAITABLE 73
Zackery Spytzce6a0702019-08-25 03:44:09 -060056#define LOAD_ASSERTION_ERROR 74
Serhiy Storchaka3028c952015-05-27 21:31:33 +030057#define INPLACE_LSHIFT 75
58#define INPLACE_RSHIFT 76
59#define INPLACE_AND 77
60#define INPLACE_XOR 78
61#define INPLACE_OR 79
Mark Shannon13bc1392020-01-23 09:25:17 +000062#define LIST_TO_TUPLE 82
Serhiy Storchaka3028c952015-05-27 21:31:33 +030063#define RETURN_VALUE 83
64#define IMPORT_STAR 84
Yury Selivanovf8cb8a12016-09-08 20:50:03 -070065#define SETUP_ANNOTATIONS 85
Serhiy Storchaka3028c952015-05-27 21:31:33 +030066#define YIELD_VALUE 86
67#define POP_BLOCK 87
Serhiy Storchaka3028c952015-05-27 21:31:33 +030068#define POP_EXCEPT 89
69#define HAVE_ARGUMENT 90
70#define STORE_NAME 90
71#define DELETE_NAME 91
72#define UNPACK_SEQUENCE 92
73#define FOR_ITER 93
74#define UNPACK_EX 94
75#define STORE_ATTR 95
76#define DELETE_ATTR 96
77#define STORE_GLOBAL 97
78#define DELETE_GLOBAL 98
79#define LOAD_CONST 100
80#define LOAD_NAME 101
81#define BUILD_TUPLE 102
82#define BUILD_LIST 103
83#define BUILD_SET 104
84#define BUILD_MAP 105
85#define LOAD_ATTR 106
86#define COMPARE_OP 107
87#define IMPORT_NAME 108
88#define IMPORT_FROM 109
89#define JUMP_FORWARD 110
90#define JUMP_IF_FALSE_OR_POP 111
91#define JUMP_IF_TRUE_OR_POP 112
92#define JUMP_ABSOLUTE 113
93#define POP_JUMP_IF_FALSE 114
94#define POP_JUMP_IF_TRUE 115
95#define LOAD_GLOBAL 116
Mark Shannon9af0e472020-01-14 10:12:45 +000096#define IS_OP 117
97#define CONTAINS_OP 118
Mark Shannonbf353f32020-12-17 13:55:28 +000098#define RERAISE 119
Mark Shannon9af0e472020-01-14 10:12:45 +000099#define JUMP_IF_NOT_EXC_MATCH 121
Serhiy Storchaka3028c952015-05-27 21:31:33 +0300100#define SETUP_FINALLY 122
101#define LOAD_FAST 124
102#define STORE_FAST 125
103#define DELETE_FAST 126
104#define RAISE_VARARGS 130
105#define CALL_FUNCTION 131
106#define MAKE_FUNCTION 132
107#define BUILD_SLICE 133
Serhiy Storchaka3028c952015-05-27 21:31:33 +0300108#define LOAD_CLOSURE 135
109#define LOAD_DEREF 136
110#define STORE_DEREF 137
111#define DELETE_DEREF 138
Serhiy Storchaka3028c952015-05-27 21:31:33 +0300112#define CALL_FUNCTION_KW 141
Victor Stinnerf9b760f2016-09-09 10:17:08 -0700113#define CALL_FUNCTION_EX 142
Serhiy Storchaka3028c952015-05-27 21:31:33 +0300114#define SETUP_WITH 143
115#define EXTENDED_ARG 144
116#define LIST_APPEND 145
117#define SET_ADD 146
118#define MAP_ADD 147
119#define LOAD_CLASSDEREF 148
Serhiy Storchaka3028c952015-05-27 21:31:33 +0300120#define SETUP_ASYNC_WITH 154
Eric V. Smitha78c7952015-11-03 12:45:05 -0500121#define FORMAT_VALUE 155
Serhiy Storchaka6a7506a2016-06-12 00:39:41 +0300122#define BUILD_CONST_KEY_MAP 156
Serhiy Storchakaea525a22016-09-06 22:07:53 +0300123#define BUILD_STRING 157
Yury Selivanovf2392132016-12-13 19:03:51 -0500124#define LOAD_METHOD 160
125#define CALL_METHOD 161
Mark Shannon13bc1392020-01-23 09:25:17 +0000126#define LIST_EXTEND 162
127#define SET_UPDATE 163
Mark Shannon8a4cd702020-01-27 09:57:45 +0000128#define DICT_MERGE 164
129#define DICT_UPDATE 165
Mark Shannon582aaf12020-08-04 17:30:11 +0100130#ifdef NEED_OPCODE_JUMP_TABLES
131static uint32_t _PyOpcode_RelativeJump[8] = {
132 0U,
133 0U,
134 536870912U,
135 67125248U,
136 67141632U,
137 0U,
138 0U,
139 0U,
140};
141static uint32_t _PyOpcode_Jump[8] = {
142 0U,
143 0U,
144 536870912U,
145 101695488U,
146 67141632U,
147 0U,
148 0U,
149 0U,
150};
151#endif /* OPCODE_TABLES */
Martin v. Löwis7198a522002-01-01 19:59:11 +0000152
Benjamin Petersoneec3d712008-06-11 15:59:43 +0000153/* EXCEPT_HANDLER is a special, implicit block type which is created when
154 entering an except handler. It is not an opcode but we define it here
155 as we want it to be available to both frameobject.c and ceval.c, while
156 remaining private.*/
157#define EXCEPT_HANDLER 257
158
Guido van Rossum3f5da241990-12-20 15:06:42 +0000159#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
Guido van Rossuma3309961993-07-28 09:05:47 +0000160
161#ifdef __cplusplus
162}
163#endif
164#endif /* !Py_OPCODE_H */