aboutsummaryrefslogtreecommitdiffstats
path: root/bootstrap/lib/compiler/egen/beam_opcodes.erl
blob: 05587800b4aae17048c464ea1eddd75521171231 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
-module(beam_opcodes).
%%  Warning: Do not edit this file.
%%  Auto-generated by 'beam_makeops'.

-export([format_number/0]).
-export([opcode/2,opname/1]).

-spec format_number() -> 0.
format_number() -> 0.

-spec opcode(atom(), 0..8) -> 1..151.
opcode(label, 1) -> 1;
opcode(func_info, 3) -> 2;
opcode(int_code_end, 0) -> 3;
opcode(call, 2) -> 4;
opcode(call_last, 3) -> 5;
opcode(call_only, 2) -> 6;
opcode(call_ext, 2) -> 7;
opcode(call_ext_last, 3) -> 8;
opcode(bif0, 2) -> 9;
opcode(bif1, 4) -> 10;
opcode(bif2, 5) -> 11;
opcode(allocate, 2) -> 12;
opcode(allocate_heap, 3) -> 13;
opcode(allocate_zero, 2) -> 14;
opcode(allocate_heap_zero, 3) -> 15;
opcode(test_heap, 2) -> 16;
opcode(init, 1) -> 17;
opcode(deallocate, 1) -> 18;
opcode(return, 0) -> 19;
opcode(send, 0) -> 20;
opcode(remove_message, 0) -> 21;
opcode(timeout, 0) -> 22;
opcode(loop_rec, 2) -> 23;
opcode(loop_rec_end, 1) -> 24;
opcode(wait, 1) -> 25;
opcode(wait_timeout, 2) -> 26;
%%opcode(m_plus, 4) -> 27;
%%opcode(m_minus, 4) -> 28;
%%opcode(m_times, 4) -> 29;
%%opcode(m_div, 4) -> 30;
%%opcode(int_div, 4) -> 31;
%%opcode(int_rem, 4) -> 32;
%%opcode(int_band, 4) -> 33;
%%opcode(int_bor, 4) -> 34;
%%opcode(int_bxor, 4) -> 35;
%%opcode(int_bsl, 4) -> 36;
%%opcode(int_bsr, 4) -> 37;
%%opcode(int_bnot, 3) -> 38;
opcode(is_lt, 3) -> 39;
opcode(is_ge, 3) -> 40;
opcode(is_eq, 3) -> 41;
opcode(is_ne, 3) -> 42;
opcode(is_eq_exact, 3) -> 43;
opcode(is_ne_exact, 3) -> 44;
opcode(is_integer, 2) -> 45;
opcode(is_float, 2) -> 46;
opcode(is_number, 2) -> 47;
opcode(is_atom, 2) -> 48;
opcode(is_pid, 2) -> 49;
opcode(is_reference, 2) -> 50;
opcode(is_port, 2) -> 51;
opcode(is_nil, 2) -> 52;
opcode(is_binary, 2) -> 53;
%%opcode(is_constant, 2) -> 54;
opcode(is_list, 2) -> 55;
opcode(is_nonempty_list, 2) -> 56;
opcode(is_tuple, 2) -> 57;
opcode(test_arity, 3) -> 58;
opcode(select_val, 3) -> 59;
opcode(select_tuple_arity, 3) -> 60;
opcode(jump, 1) -> 61;
opcode('catch', 2) -> 62;
opcode(catch_end, 1) -> 63;
opcode(move, 2) -> 64;
opcode(get_list, 3) -> 65;
opcode(get_tuple_element, 3) -> 66;
opcode(set_tuple_element, 3) -> 67;
%%opcode(put_string, 3) -> 68;
opcode(put_list, 3) -> 69;
opcode(put_tuple, 2) -> 70;
opcode(put, 1) -> 71;
opcode(badmatch, 1) -> 72;
opcode(if_end, 0) -> 73;
opcode(case_end, 1) -> 74;
opcode(call_fun, 1) -> 75;
%%opcode(make_fun, 3) -> 76;
opcode(is_function, 2) -> 77;
opcode(call_ext_only, 2) -> 78;
%%opcode(bs_start_match, 2) -> 79;
%%opcode(bs_get_integer, 5) -> 80;
%%opcode(bs_get_float, 5) -> 81;
%%opcode(bs_get_binary, 5) -> 82;
%%opcode(bs_skip_bits, 4) -> 83;
%%opcode(bs_test_tail, 2) -> 84;
%%opcode(bs_save, 1) -> 85;
%%opcode(bs_restore, 1) -> 86;
%%opcode(bs_init, 2) -> 87;
%%opcode(bs_final, 2) -> 88;
opcode(bs_put_integer, 5) -> 89;
opcode(bs_put_binary, 5) -> 90;
opcode(bs_put_float, 5) -> 91;
opcode(bs_put_string, 2) -> 92;
%%opcode(bs_need_buf, 1) -> 93;
opcode(fclearerror, 0) -> 94;
opcode(fcheckerror, 1) -> 95;
opcode(fmove, 2) -> 96;
opcode(fconv, 2) -> 97;
opcode(fadd, 4) -> 98;
opcode(fsub, 4) -> 99;
opcode(fmul, 4) -> 100;
opcode(fdiv, 4) -> 101;
opcode(fnegate, 3) -> 102;
opcode(make_fun2, 1) -> 103;
opcode('try', 2) -> 104;
opcode(try_end, 1) -> 105;
opcode(try_case, 1) -> 106;
opcode(try_case_end, 1) -> 107;
opcode(raise, 2) -> 108;
opcode(bs_init2, 6) -> 109;
opcode(bs_bits_to_bytes, 3) -> 110;
opcode(bs_add, 5) -> 111;
opcode(apply, 1) -> 112;
opcode(apply_last, 2) -> 113;
opcode(is_boolean, 2) -> 114;
opcode(is_function2, 3) -> 115;
opcode(bs_start_match2, 5) -> 116;
opcode(bs_get_integer2, 7) -> 117;
opcode(bs_get_float2, 7) -> 118;
opcode(bs_get_binary2, 7) -> 119;
opcode(bs_skip_bits2, 5) -> 120;
opcode(bs_test_tail2, 3) -> 121;
opcode(bs_save2, 2) -> 122;
opcode(bs_restore2, 2) -> 123;
opcode(gc_bif1, 5) -> 124;
opcode(gc_bif2, 6) -> 125;
%%opcode(bs_final2, 2) -> 126;
%%opcode(bs_bits_to_bytes2, 2) -> 127;
%%opcode(put_literal, 2) -> 128;
opcode(is_bitstr, 2) -> 129;
opcode(bs_context_to_binary, 1) -> 130;
opcode(bs_test_unit, 3) -> 131;
opcode(bs_match_string, 4) -> 132;
opcode(bs_init_writable, 0) -> 133;
opcode(bs_append, 8) -> 134;
opcode(bs_private_append, 6) -> 135;
opcode(trim, 2) -> 136;
opcode(bs_init_bits, 6) -> 137;
opcode(bs_get_utf8, 5) -> 138;
opcode(bs_skip_utf8, 4) -> 139;
opcode(bs_get_utf16, 5) -> 140;
opcode(bs_skip_utf16, 4) -> 141;
opcode(bs_get_utf32, 5) -> 142;
opcode(bs_skip_utf32, 4) -> 143;
opcode(bs_utf8_size, 3) -> 144;
opcode(bs_put_utf8, 3) -> 145;
opcode(bs_utf16_size, 3) -> 146;
opcode(bs_put_utf16, 3) -> 147;
opcode(bs_put_utf32, 3) -> 148;
opcode(on_load, 0) -> 149;
opcode(recv_mark, 1) -> 150;
opcode(recv_set, 1) -> 151;
opcode(Name, Arity) -> erlang:error(badarg, [Name,Arity]).

-spec opname(1..151) -> {atom(),0..8}.
opname(1) -> {label,1};
opname(2) -> {func_info,3};
opname(3) -> {int_code_end,0};
opname(4) -> {call,2};
opname(5) -> {call_last,3};
opname(6) -> {call_only,2};
opname(7) -> {call_ext,2};
opname(8) -> {call_ext_last,3};
opname(9) -> {bif0,2};
opname(10) -> {bif1,4};
opname(11) -> {bif2,5};
opname(12) -> {allocate,2};
opname(13) -> {allocate_heap,3};
opname(14) -> {allocate_zero,2};
opname(15) -> {allocate_heap_zero,3};
opname(16) -> {test_heap,2};
opname(17) -> {init,1};
opname(18) -> {deallocate,1};
opname(19) -> {return,0};
opname(20) -> {send,0};
opname(21) -> {remove_message,0};
opname(22) -> {timeout,0};
opname(23) -> {loop_rec,2};
opname(24) -> {loop_rec_end,1};
opname(25) -> {wait,1};
opname(26) -> {wait_timeout,2};
opname(27) -> {m_plus,4};
opname(28) -> {m_minus,4};
opname(29) -> {m_times,4};
opname(30) -> {m_div,4};
opname(31) -> {int_div,4};
opname(32) -> {int_rem,4};
opname(33) -> {int_band,4};
opname(34) -> {int_bor,4};
opname(35) -> {int_bxor,4};
opname(36) -> {int_bsl,4};
opname(37) -> {int_bsr,4};
opname(38) -> {int_bnot,3};
opname(39) -> {is_lt,3};
opname(40) -> {is_ge,3};
opname(41) -> {is_eq,3};
opname(42) -> {is_ne,3};
opname(43) -> {is_eq_exact,3};
opname(44) -> {is_ne_exact,3};
opname(45) -> {is_integer,2};
opname(46) -> {is_float,2};
opname(47) -> {is_number,2};
opname(48) -> {is_atom,2};
opname(49) -> {is_pid,2};
opname(50) -> {is_reference,2};
opname(51) -> {is_port,2};
opname(52) -> {is_nil,2};
opname(53) -> {is_binary,2};
opname(54) -> {is_constant,2};
opname(55) -> {is_list,2};
opname(56) -> {is_nonempty_list,2};
opname(57) -> {is_tuple,2};
opname(58) -> {test_arity,3};
opname(59) -> {select_val,3};
opname(60) -> {select_tuple_arity,3};
opname(61) -> {jump,1};
opname(62) -> {'catch',2};
opname(63) -> {catch_end,1};
opname(64) -> {move,2};
opname(65) -> {get_list,3};
opname(66) -> {get_tuple_element,3};
opname(67) -> {set_tuple_element,3};
opname(68) -> {put_string,3};
opname(69) -> {put_list,3};
opname(70) -> {put_tuple,2};
opname(71) -> {put,1};
opname(72) -> {badmatch,1};
opname(73) -> {if_end,0};
opname(74) -> {case_end,1};
opname(75) -> {call_fun,1};
opname(76) -> {make_fun,3};
opname(77) -> {is_function,2};
opname(78) -> {call_ext_only,2};
opname(79) -> {bs_start_match,2};
opname(80) -> {bs_get_integer,5};
opname(81) -> {bs_get_float,5};
opname(82) -> {bs_get_binary,5};
opname(83) -> {bs_skip_bits,4};
opname(84) -> {bs_test_tail,2};
opname(85) -> {bs_save,1};
opname(86) -> {bs_restore,1};
opname(87) -> {bs_init,2};
opname(88) -> {bs_final,2};
opname(89) -> {bs_put_integer,5};
opname(90) -> {bs_put_binary,5};
opname(91) -> {bs_put_float,5};
opname(92) -> {bs_put_string,2};
opname(93) -> {bs_need_buf,1};
opname(94) -> {fclearerror,0};
opname(95) -> {fcheckerror,1};
opname(96) -> {fmove,2};
opname(97) -> {fconv,2};
opname(98) -> {fadd,4};
opname(99) -> {fsub,4};
opname(100) -> {fmul,4};
opname(101) -> {fdiv,4};
opname(102) -> {fnegate,3};
opname(103) -> {make_fun2,1};
opname(104) -> {'try',2};
opname(105) -> {try_end,1};
opname(106) -> {try_case,1};
opname(107) -> {try_case_end,1};
opname(108) -> {raise,2};
opname(109) -> {bs_init2,6};
opname(110) -> {bs_bits_to_bytes,3};
opname(111) -> {bs_add,5};
opname(112) -> {apply,1};
opname(113) -> {apply_last,2};
opname(114) -> {is_boolean,2};
opname(115) -> {is_function2,3};
opname(116) -> {bs_start_match2,5};
opname(117) -> {bs_get_integer2,7};
opname(118) -> {bs_get_float2,7};
opname(119) -> {bs_get_binary2,7};
opname(120) -> {bs_skip_bits2,5};
opname(121) -> {bs_test_tail2,3};
opname(122) -> {bs_save2,2};
opname(123) -> {bs_restore2,2};
opname(124) -> {gc_bif1,5};
opname(125) -> {gc_bif2,6};
opname(126) -> {bs_final2,2};
opname(127) -> {bs_bits_to_bytes2,2};
opname(128) -> {put_literal,2};
opname(129) -> {is_bitstr,2};
opname(130) -> {bs_context_to_binary,1};
opname(131) -> {bs_test_unit,3};
opname(132) -> {bs_match_string,4};
opname(133) -> {bs_init_writable,0};
opname(134) -> {bs_append,8};
opname(135) -> {bs_private_append,6};
opname(136) -> {trim,2};
opname(137) -> {bs_init_bits,6};
opname(138) -> {bs_get_utf8,5};
opname(139) -> {bs_skip_utf8,4};
opname(140) -> {bs_get_utf16,5};
opname(141) -> {bs_skip_utf16,4};
opname(142) -> {bs_get_utf32,5};
opname(143) -> {bs_skip_utf32,4};
opname(144) -> {bs_utf8_size,3};
opname(145) -> {bs_put_utf8,3};
opname(146) -> {bs_utf16_size,3};
opname(147) -> {bs_put_utf16,3};
opname(148) -> {bs_put_utf32,3};
opname(149) -> {on_load,0};
opname(150) -> {recv_mark,1};
opname(151) -> {recv_set,1};
opname(Number) -> erlang:error(badarg, [Number]).