1 /* This file was generated automatically from vm-engine.c; do not
2    edit.  See the source file for copyright information.  */
3 
4 #define FOR_EACH_VM_OPERATION(M) \
5     M (0, halt, "halt", OP1 (X32)) \
6     M (1, call, "call", OP2 (X8_F24, X8_C24)) \
7     M (2, call_label, "call-label", OP3 (X8_F24, X8_C24, L32)) \
8     M (3, tail_call, "tail-call", OP1 (X8_C24)) \
9     M (4, tail_call_label, "tail-call-label", OP2 (X8_C24, L32)) \
10     M (5, tail_call_shuffle, "tail-call/shuffle", OP1 (X8_F24)) \
11     M (6, receive, "receive", OP2 (X8_F12_F12, X8_C24) | OP_DST) \
12     M (7, receive_values, "receive-values", OP2 (X8_F24, B1_X7_C24)) \
13     M (8, unused_8, NULL, NOP) \
14     M (9, return_values, "return-values", OP1 (X8_C24)) \
15     M (10, subr_call, "subr-call", OP1 (X32)) \
16     M (11, foreign_call, "foreign-call", OP1 (X8_C12_C12)) \
17     M (12, continuation_call, "continuation-call", OP1 (X8_C24)) \
18     M (13, compose_continuation, "compose-continuation", OP1 (X8_C24)) \
19     M (14, tail_apply, "tail-apply", OP1 (X32)) \
20     M (15, call_cc, "call/cc", OP1 (X32)) \
21     M (16, abort, "abort", OP1 (X32)) \
22     M (17, builtin_ref, "builtin-ref", OP1 (X8_S12_C12) | OP_DST) \
23     M (18, br_if_nargs_ne, "br-if-nargs-ne", OP2 (X8_C24, X8_L24)) \
24     M (19, br_if_nargs_lt, "br-if-nargs-lt", OP2 (X8_C24, X8_L24)) \
25     M (20, br_if_nargs_gt, "br-if-nargs-gt", OP2 (X8_C24, X8_L24)) \
26     M (21, assert_nargs_ee, "assert-nargs-ee", OP1 (X8_C24)) \
27     M (22, assert_nargs_ge, "assert-nargs-ge", OP1 (X8_C24)) \
28     M (23, assert_nargs_le, "assert-nargs-le", OP1 (X8_C24)) \
29     M (24, alloc_frame, "alloc-frame", OP1 (X8_C24)) \
30     M (25, reset_frame, "reset-frame", OP1 (X8_C24)) \
31     M (26, push, "push", OP1 (X8_S24)) \
32     M (27, pop, "pop", OP1 (X8_S24) | OP_DST) \
33     M (28, drop, "drop", OP1 (X8_C24)) \
34     M (29, assert_nargs_ee_locals, "assert-nargs-ee/locals", OP1 (X8_C12_C12)) \
35     M (30, br_if_npos_gt, "br-if-npos-gt", OP3 (X8_C24, X8_C24, X8_L24)) \
36     M (31, bind_kwargs, "bind-kwargs", OP4 (X8_C24, C8_C24, X8_C24, N32)) \
37     M (32, bind_rest, "bind-rest", OP1 (X8_F24) | OP_DST) \
38     M (33, br, "br", OP1 (X8_L24)) \
39     M (34, br_if_true, "br-if-true", OP2 (X8_S24, B1_X7_L24)) \
40     M (35, br_if_null, "br-if-null", OP2 (X8_S24, B1_X7_L24)) \
41     M (36, br_if_nil, "br-if-nil", OP2 (X8_S24, B1_X7_L24)) \
42     M (37, br_if_pair, "br-if-pair", OP2 (X8_S24, B1_X7_L24)) \
43     M (38, br_if_struct, "br-if-struct", OP2 (X8_S24, B1_X7_L24)) \
44     M (39, br_if_char, "br-if-char", OP2 (X8_S24, B1_X7_L24)) \
45     M (40, br_if_tc7, "br-if-tc7", OP2 (X8_S24, B1_C7_L24)) \
46     M (41, br_if_eq, "br-if-eq", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
47     M (42, br_if_eqv, "br-if-eqv", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
48     M (43, unused_43, NULL, NOP) \
49     M (44, br_if_logtest, "br-if-logtest", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
50     M (45, br_if_ee, "br-if-=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
51     M (46, br_if_lt, "br-if-<", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
52     M (47, br_if_le, "br-if-<=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
53     M (48, mov, "mov", OP1 (X8_S12_S12) | OP_DST) \
54     M (49, long_mov, "long-mov", OP2 (X8_S24, X8_S24) | OP_DST) \
55     M (50, long_fmov, "long-fmov", OP2 (X8_F24, X8_F24) | OP_DST) \
56     M (51, box, "box", OP1 (X8_S12_S12) | OP_DST) \
57     M (52, box_ref, "box-ref", OP1 (X8_S12_S12) | OP_DST) \
58     M (53, box_set, "box-set!", OP1 (X8_S12_S12)) \
59     M (54, make_closure, "make-closure", OP3 (X8_S24, L32, X8_C24) | OP_DST) \
60     M (55, free_ref, "free-ref", OP2 (X8_S12_S12, X8_C24) | OP_DST) \
61     M (56, free_set, "free-set!", OP2 (X8_S12_S12, X8_C24)) \
62     M (57, make_short_immediate, "make-short-immediate", OP1 (X8_S8_I16) | OP_DST) \
63     M (58, make_long_immediate, "make-long-immediate", OP2 (X8_S24, I32) | OP_DST) \
64     M (59, make_long_long_immediate, "make-long-long-immediate", OP3 (X8_S24, A32, B32) | OP_DST) \
65     M (60, make_non_immediate, "make-non-immediate", OP2 (X8_S24, N32) | OP_DST) \
66     M (61, static_ref, "static-ref", OP2 (X8_S24, R32) | OP_DST) \
67     M (62, static_set, "static-set!", OP2 (X8_S24, LO32)) \
68     M (63, static_patch, "static-patch!", OP3 (X32, LO32, L32)) \
69     M (64, current_module, "current-module", OP1 (X8_S24) | OP_DST) \
70     M (65, resolve, "resolve", OP2 (X8_S24, B1_X7_S24) | OP_DST) \
71     M (66, define, "define!", OP1 (X8_S12_S12) | OP_DST) \
72     M (67, toplevel_box, "toplevel-box", OP5 (X8_S24, R32, R32, N32, B1_X31) | OP_DST) \
73     M (68, module_box, "module-box", OP5 (X8_S24, R32, N32, N32, B1_X31) | OP_DST) \
74     M (69, prompt, "prompt", OP3 (X8_S24, B1_X7_F24, X8_L24)) \
75     M (70, wind, "wind", OP1 (X8_S12_S12)) \
76     M (71, unwind, "unwind", OP1 (X32)) \
77     M (72, push_fluid, "push-fluid", OP1 (X8_S12_S12)) \
78     M (73, pop_fluid, "pop-fluid", OP1 (X32)) \
79     M (74, fluid_ref, "fluid-ref", OP1 (X8_S12_S12) | OP_DST) \
80     M (75, fluid_set, "fluid-set!", OP1 (X8_S12_S12)) \
81     M (76, string_length, "string-length", OP1 (X8_S12_S12) | OP_DST) \
82     M (77, string_ref, "string-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
83     M (78, string_to_number, "string->number", OP1 (X8_S12_S12) | OP_DST) \
84     M (79, string_to_symbol, "string->symbol", OP1 (X8_S12_S12) | OP_DST) \
85     M (80, symbol_to_keyword, "symbol->keyword", OP1 (X8_S12_S12) | OP_DST) \
86     M (81, cons, "cons", OP1 (X8_S8_S8_S8) | OP_DST) \
87     M (82, car, "car", OP1 (X8_S12_S12) | OP_DST) \
88     M (83, cdr, "cdr", OP1 (X8_S12_S12) | OP_DST) \
89     M (84, set_car, "set-car!", OP1 (X8_S12_S12)) \
90     M (85, set_cdr, "set-cdr!", OP1 (X8_S12_S12)) \
91     M (86, add, "add", OP1 (X8_S8_S8_S8) | OP_DST) \
92     M (87, add_immediate, "add/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
93     M (88, sub, "sub", OP1 (X8_S8_S8_S8) | OP_DST) \
94     M (89, sub_immediate, "sub/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
95     M (90, mul, "mul", OP1 (X8_S8_S8_S8) | OP_DST) \
96     M (91, div, "div", OP1 (X8_S8_S8_S8) | OP_DST) \
97     M (92, quo, "quo", OP1 (X8_S8_S8_S8) | OP_DST) \
98     M (93, rem, "rem", OP1 (X8_S8_S8_S8) | OP_DST) \
99     M (94, mod, "mod", OP1 (X8_S8_S8_S8) | OP_DST) \
100     M (95, ash, "ash", OP1 (X8_S8_S8_S8) | OP_DST) \
101     M (96, logand, "logand", OP1 (X8_S8_S8_S8) | OP_DST) \
102     M (97, logior, "logior", OP1 (X8_S8_S8_S8) | OP_DST) \
103     M (98, logxor, "logxor", OP1 (X8_S8_S8_S8) | OP_DST) \
104     M (99, make_vector, "make-vector", OP1 (X8_S8_S8_S8) | OP_DST) \
105     M (100, make_vector_immediate, "make-vector/immediate", OP1 (X8_S8_C8_S8) | OP_DST) \
106     M (101, vector_length, "vector-length", OP1 (X8_S12_S12) | OP_DST) \
107     M (102, vector_ref, "vector-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
108     M (103, vector_ref_immediate, "vector-ref/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
109     M (104, vector_set, "vector-set!", OP1 (X8_S8_S8_S8)) \
110     M (105, vector_set_immediate, "vector-set!/immediate", OP1 (X8_S8_C8_S8)) \
111     M (106, struct_vtable, "struct-vtable", OP1 (X8_S12_S12) | OP_DST) \
112     M (107, allocate_struct, "allocate-struct", OP1 (X8_S8_S8_S8) | OP_DST) \
113     M (108, struct_ref, "struct-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
114     M (109, struct_set, "struct-set!", OP1 (X8_S8_S8_S8)) \
115     M (110, allocate_struct_immediate, "allocate-struct/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
116     M (111, struct_ref_immediate, "struct-ref/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
117     M (112, struct_set_immediate, "struct-set!/immediate", OP1 (X8_S8_C8_S8)) \
118     M (113, class_of, "class-of", OP1 (X8_S12_S12) | OP_DST) \
119     M (114, load_typed_array, "load-typed-array", OP5 (X8_S24, X8_S24, X8_S24, N32, C32) | OP_DST) \
120     M (115, make_array, "make-array", OP4 (X8_S24, X8_S24, X8_S24, X8_S24) | OP_DST) \
121     M (116, bv_u8_ref, "bv-u8-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
122     M (117, bv_s8_ref, "bv-s8-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
123     M (118, bv_u16_ref, "bv-u16-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
124     M (119, bv_s16_ref, "bv-s16-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
125     M (120, bv_u32_ref, "bv-u32-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
126     M (121, bv_s32_ref, "bv-s32-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
127     M (122, bv_u64_ref, "bv-u64-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
128     M (123, bv_s64_ref, "bv-s64-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
129     M (124, bv_f32_ref, "bv-f32-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
130     M (125, bv_f64_ref, "bv-f64-ref", OP1 (X8_S8_S8_S8) | OP_DST) \
131     M (126, bv_u8_set, "bv-u8-set!", OP1 (X8_S8_S8_S8)) \
132     M (127, bv_s8_set, "bv-s8-set!", OP1 (X8_S8_S8_S8)) \
133     M (128, bv_u16_set, "bv-u16-set!", OP1 (X8_S8_S8_S8)) \
134     M (129, bv_s16_set, "bv-s16-set!", OP1 (X8_S8_S8_S8)) \
135     M (130, bv_u32_set, "bv-u32-set!", OP1 (X8_S8_S8_S8)) \
136     M (131, bv_s32_set, "bv-s32-set!", OP1 (X8_S8_S8_S8)) \
137     M (132, bv_u64_set, "bv-u64-set!", OP1 (X8_S8_S8_S8)) \
138     M (133, bv_s64_set, "bv-s64-set!", OP1 (X8_S8_S8_S8)) \
139     M (134, bv_f32_set, "bv-f32-set!", OP1 (X8_S8_S8_S8)) \
140     M (135, bv_f64_set, "bv-f64-set!", OP1 (X8_S8_S8_S8)) \
141     M (136, scm_to_f64, "scm->f64", OP1 (X8_S12_S12) | OP_DST) \
142     M (137, f64_to_scm, "f64->scm", OP1 (X8_S12_S12) | OP_DST) \
143     M (138, fadd, "fadd", OP1 (X8_S8_S8_S8) | OP_DST) \
144     M (139, fsub, "fsub", OP1 (X8_S8_S8_S8) | OP_DST) \
145     M (140, fmul, "fmul", OP1 (X8_S8_S8_S8) | OP_DST) \
146     M (141, fdiv, "fdiv", OP1 (X8_S8_S8_S8) | OP_DST) \
147     M (142, apply_non_program, "apply-non-program", OP1 (X32)) \
148     M (143, scm_to_u64, "scm->u64", OP1 (X8_S12_S12) | OP_DST) \
149     M (144, u64_to_scm, "u64->scm", OP1 (X8_S12_S12) | OP_DST) \
150     M (145, bv_length, "bv-length", OP1 (X8_S12_S12) | OP_DST) \
151     M (146, br_if_u64_ee, "br-if-u64-=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
152     M (147, br_if_u64_lt, "br-if-u64-<", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
153     M (148, br_if_u64_le, "br-if-u64-<=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
154     M (149, uadd, "uadd", OP1 (X8_S8_S8_S8) | OP_DST) \
155     M (150, usub, "usub", OP1 (X8_S8_S8_S8) | OP_DST) \
156     M (151, umul, "umul", OP1 (X8_S8_S8_S8) | OP_DST) \
157     M (152, uadd_immediate, "uadd/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
158     M (153, usub_immediate, "usub/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
159     M (154, umul_immediate, "umul/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
160     M (155, load_f64, "load-f64", OP3 (X8_S24, AF32, BF32) | OP_DST) \
161     M (156, load_u64, "load-u64", OP3 (X8_S24, AU32, BU32) | OP_DST) \
162     M (157, scm_to_s64, "scm->s64", OP1 (X8_S12_S12) | OP_DST) \
163     M (158, s64_to_scm, "s64->scm", OP1 (X8_S12_S12) | OP_DST) \
164     M (159, load_s64, "load-s64", OP3 (X8_S24, AS32, BS32) | OP_DST) \
165     M (160, current_thread, "current-thread", OP1 (X8_S24) | OP_DST) \
166     M (161, logsub, "logsub", OP1 (X8_S8_S8_S8) | OP_DST) \
167     M (162, ulogand, "ulogand", OP1 (X8_S8_S8_S8) | OP_DST) \
168     M (163, ulogior, "ulogior", OP1 (X8_S8_S8_S8) | OP_DST) \
169     M (164, ulogsub, "ulogsub", OP1 (X8_S8_S8_S8) | OP_DST) \
170     M (165, ursh, "ursh", OP1 (X8_S8_S8_S8) | OP_DST) \
171     M (166, ulsh, "ulsh", OP1 (X8_S8_S8_S8) | OP_DST) \
172     M (167, scm_to_u64_truncate, "scm->u64/truncate", OP1 (X8_S12_S12) | OP_DST) \
173     M (168, ursh_immediate, "ursh/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
174     M (169, ulsh_immediate, "ulsh/immediate", OP1 (X8_S8_S8_C8) | OP_DST) \
175     M (170, br_if_u64_ee_scm, "br-if-u64-=-scm", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
176     M (171, br_if_u64_lt_scm, "br-if-u64-<-scm", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
177     M (172, br_if_u64_le_scm, "br-if-u64-<=-scm", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
178     M (173, br_if_u64_gt_scm, "br-if-u64->-scm", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
179     M (174, br_if_u64_ge_scm, "br-if-u64->=-scm", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
180     M (175, integer_to_char, "integer->char", OP1 (X8_S12_S12) | OP_DST) \
181     M (176, char_to_integer, "char->integer", OP1 (X8_S12_S12) | OP_DST) \
182     M (177, ulogxor, "ulogxor", OP1 (X8_S8_S8_S8) | OP_DST) \
183     M (178, make_atomic_box, "make-atomic-box", OP1 (X8_S12_S12) | OP_DST) \
184     M (179, atomic_box_ref, "atomic-box-ref", OP1 (X8_S12_S12) | OP_DST) \
185     M (180, atomic_box_set, "atomic-box-set!", OP1 (X8_S12_S12)) \
186     M (181, atomic_box_swap, "atomic-box-swap!", OP2 (X8_S12_S12, X8_S24) | OP_DST) \
187     M (182, atomic_box_compare_and_swap, "atomic-box-compare-and-swap!", OP3 (X8_S12_S12, X8_S24, X8_S24) | OP_DST) \
188     M (183, handle_interrupts, "handle-interrupts", OP1 (X32)) \
189     M (184, return_from_interrupt, "return-from-interrupt", OP1 (X32)) \
190     M (185, push_dynamic_state, "push-dynamic-state", OP1 (X8_S24)) \
191     M (186, pop_dynamic_state, "pop-dynamic-state", OP1 (X32)) \
192     M (187, br_if_f64_ee, "br-if-f64-=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
193     M (188, br_if_f64_lt, "br-if-f64-<", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
194     M (189, br_if_f64_le, "br-if-f64-<=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
195     M (190, br_if_f64_gt, "br-if-f64->", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
196     M (191, br_if_f64_ge, "br-if-f64->=", OP3 (X8_S24, X8_S24, B1_X7_L24)) \
197     M (192, string_set, "string-set!", OP1 (X8_S8_S8_S8)) \
198     M (193, unused_193, NULL, NOP) \
199     M (194, unused_194, NULL, NOP) \
200     M (195, unused_195, NULL, NOP) \
201     M (196, unused_196, NULL, NOP) \
202     M (197, unused_197, NULL, NOP) \
203     M (198, unused_198, NULL, NOP) \
204     M (199, unused_199, NULL, NOP) \
205     M (200, unused_200, NULL, NOP) \
206     M (201, unused_201, NULL, NOP) \
207     M (202, unused_202, NULL, NOP) \
208     M (203, unused_203, NULL, NOP) \
209     M (204, unused_204, NULL, NOP) \
210     M (205, unused_205, NULL, NOP) \
211     M (206, unused_206, NULL, NOP) \
212     M (207, unused_207, NULL, NOP) \
213     M (208, unused_208, NULL, NOP) \
214     M (209, unused_209, NULL, NOP) \
215     M (210, unused_210, NULL, NOP) \
216     M (211, unused_211, NULL, NOP) \
217     M (212, unused_212, NULL, NOP) \
218     M (213, unused_213, NULL, NOP) \
219     M (214, unused_214, NULL, NOP) \
220     M (215, unused_215, NULL, NOP) \
221     M (216, unused_216, NULL, NOP) \
222     M (217, unused_217, NULL, NOP) \
223     M (218, unused_218, NULL, NOP) \
224     M (219, unused_219, NULL, NOP) \
225     M (220, unused_220, NULL, NOP) \
226     M (221, unused_221, NULL, NOP) \
227     M (222, unused_222, NULL, NOP) \
228     M (223, unused_223, NULL, NOP) \
229     M (224, unused_224, NULL, NOP) \
230     M (225, unused_225, NULL, NOP) \
231     M (226, unused_226, NULL, NOP) \
232     M (227, unused_227, NULL, NOP) \
233     M (228, unused_228, NULL, NOP) \
234     M (229, unused_229, NULL, NOP) \
235     M (230, unused_230, NULL, NOP) \
236     M (231, unused_231, NULL, NOP) \
237     M (232, unused_232, NULL, NOP) \
238     M (233, unused_233, NULL, NOP) \
239     M (234, unused_234, NULL, NOP) \
240     M (235, unused_235, NULL, NOP) \
241     M (236, unused_236, NULL, NOP) \
242     M (237, unused_237, NULL, NOP) \
243     M (238, unused_238, NULL, NOP) \
244     M (239, unused_239, NULL, NOP) \
245     M (240, unused_240, NULL, NOP) \
246     M (241, unused_241, NULL, NOP) \
247     M (242, unused_242, NULL, NOP) \
248     M (243, unused_243, NULL, NOP) \
249     M (244, unused_244, NULL, NOP) \
250     M (245, unused_245, NULL, NOP) \
251     M (246, unused_246, NULL, NOP) \
252     M (247, unused_247, NULL, NOP) \
253     M (248, unused_248, NULL, NOP) \
254     M (249, unused_249, NULL, NOP) \
255     M (250, unused_250, NULL, NOP) \
256     M (251, unused_251, NULL, NOP) \
257     M (252, unused_252, NULL, NOP) \
258     M (253, unused_253, NULL, NOP) \
259     M (254, unused_254, NULL, NOP) \
260     M (255, unused_255, NULL, NOP) \
261 
262