blob: 836c604e38c93d3da4c059528280136234a5acbe [file] [log] [blame]
Kushal Das02d23a22014-04-15 23:50:06 +05301/* Auto-generated by Tools/scripts/generate_opcode_h.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
15#define NOP 9
16#define UNARY_POSITIVE 10
17#define UNARY_NEGATIVE 11
18#define UNARY_NOT 12
19#define UNARY_INVERT 15
20#define BINARY_MATRIX_MULTIPLY 16
21#define INPLACE_MATRIX_MULTIPLY 17
22#define BINARY_POWER 19
23#define BINARY_MULTIPLY 20
24#define BINARY_MODULO 22
25#define BINARY_ADD 23
26#define BINARY_SUBTRACT 24
27#define BINARY_SUBSCR 25
28#define BINARY_FLOOR_DIVIDE 26
29#define BINARY_TRUE_DIVIDE 27
30#define INPLACE_FLOOR_DIVIDE 28
31#define INPLACE_TRUE_DIVIDE 29
32#define GET_AITER 50
33#define GET_ANEXT 51
34#define BEFORE_ASYNC_WITH 52
Serhiy Storchaka3028c952015-05-27 21:31:33 +030035#define INPLACE_ADD 55
36#define INPLACE_SUBTRACT 56
37#define INPLACE_MULTIPLY 57
38#define INPLACE_MODULO 59
39#define STORE_SUBSCR 60
40#define DELETE_SUBSCR 61
41#define BINARY_LSHIFT 62
42#define BINARY_RSHIFT 63
43#define BINARY_AND 64
44#define BINARY_XOR 65
45#define BINARY_OR 66
46#define INPLACE_POWER 67
47#define GET_ITER 68
Yury Selivanov5376ba92015-06-22 12:19:30 -040048#define GET_YIELD_FROM_ITER 69
Serhiy Storchaka3028c952015-05-27 21:31:33 +030049#define PRINT_EXPR 70
50#define LOAD_BUILD_CLASS 71
51#define YIELD_FROM 72
52#define GET_AWAITABLE 73
53#define INPLACE_LSHIFT 75
54#define INPLACE_RSHIFT 76
55#define INPLACE_AND 77
56#define INPLACE_XOR 78
57#define INPLACE_OR 79
58#define BREAK_LOOP 80
59#define WITH_CLEANUP_START 81
60#define WITH_CLEANUP_FINISH 82
61#define RETURN_VALUE 83
62#define IMPORT_STAR 84
63#define YIELD_VALUE 86
64#define POP_BLOCK 87
65#define END_FINALLY 88
66#define POP_EXCEPT 89
67#define HAVE_ARGUMENT 90
68#define STORE_NAME 90
69#define DELETE_NAME 91
70#define UNPACK_SEQUENCE 92
71#define FOR_ITER 93
72#define UNPACK_EX 94
73#define STORE_ATTR 95
74#define DELETE_ATTR 96
75#define STORE_GLOBAL 97
76#define DELETE_GLOBAL 98
77#define LOAD_CONST 100
78#define LOAD_NAME 101
79#define BUILD_TUPLE 102
80#define BUILD_LIST 103
81#define BUILD_SET 104
82#define BUILD_MAP 105
83#define LOAD_ATTR 106
84#define COMPARE_OP 107
85#define IMPORT_NAME 108
86#define IMPORT_FROM 109
87#define JUMP_FORWARD 110
88#define JUMP_IF_FALSE_OR_POP 111
89#define JUMP_IF_TRUE_OR_POP 112
90#define JUMP_ABSOLUTE 113
91#define POP_JUMP_IF_FALSE 114
92#define POP_JUMP_IF_TRUE 115
93#define LOAD_GLOBAL 116
94#define CONTINUE_LOOP 119
95#define SETUP_LOOP 120
96#define SETUP_EXCEPT 121
97#define SETUP_FINALLY 122
98#define LOAD_FAST 124
99#define STORE_FAST 125
100#define DELETE_FAST 126
101#define RAISE_VARARGS 130
102#define CALL_FUNCTION 131
103#define MAKE_FUNCTION 132
104#define BUILD_SLICE 133
Serhiy Storchaka3028c952015-05-27 21:31:33 +0300105#define LOAD_CLOSURE 135
106#define LOAD_DEREF 136
107#define STORE_DEREF 137
108#define DELETE_DEREF 138
109#define CALL_FUNCTION_VAR 140
110#define CALL_FUNCTION_KW 141
111#define CALL_FUNCTION_VAR_KW 142
112#define SETUP_WITH 143
113#define EXTENDED_ARG 144
114#define LIST_APPEND 145
115#define SET_ADD 146
116#define MAP_ADD 147
117#define LOAD_CLASSDEREF 148
118#define BUILD_LIST_UNPACK 149
119#define BUILD_MAP_UNPACK 150
120#define BUILD_MAP_UNPACK_WITH_CALL 151
121#define BUILD_TUPLE_UNPACK 152
122#define BUILD_SET_UNPACK 153
123#define SETUP_ASYNC_WITH 154
Eric V. Smitha78c7952015-11-03 12:45:05 -0500124#define FORMAT_VALUE 155
Serhiy Storchaka6a7506a2016-06-12 00:39:41 +0300125#define BUILD_CONST_KEY_MAP 156
Serhiy Storchakaea525a22016-09-06 22:07:53 +0300126#define BUILD_STRING 157
Martin v. Löwis7198a522002-01-01 19:59:11 +0000127
Benjamin Petersoneec3d712008-06-11 15:59:43 +0000128/* EXCEPT_HANDLER is a special, implicit block type which is created when
129 entering an except handler. It is not an opcode but we define it here
130 as we want it to be available to both frameobject.c and ceval.c, while
131 remaining private.*/
132#define EXCEPT_HANDLER 257
133
134
Kushal Das02d23a22014-04-15 23:50:06 +0530135enum cmp_op {PyCmp_LT=Py_LT, PyCmp_LE=Py_LE, PyCmp_EQ=Py_EQ, PyCmp_NE=Py_NE,
136 PyCmp_GT=Py_GT, PyCmp_GE=Py_GE, PyCmp_IN, PyCmp_NOT_IN,
137 PyCmp_IS, PyCmp_IS_NOT, PyCmp_EXC_MATCH, PyCmp_BAD};
Guido van Rossum3f5da241990-12-20 15:06:42 +0000138
139#define HAS_ARG(op) ((op) >= HAVE_ARGUMENT)
Guido van Rossuma3309961993-07-28 09:05:47 +0000140
141#ifdef __cplusplus
142}
143#endif
144#endif /* !Py_OPCODE_H */