1use crate::hermes;
2
3build_instructions!(
4 (0, Unreachable, ),
5 (1, NewObjectWithBuffer, r0: Reg8, p0: UInt16, p1: UInt16, p2: UInt16, p3: UInt16),
6 (2, NewObjectWithBufferLong, r0: Reg8, p0: UInt16, p1: UInt16, p2: UInt32, p3: UInt32),
7 (3, NewObject, r0: Reg8),
8 (4, NewObjectWithParent, r0: Reg8, r1: Reg8),
9 (5, NewArrayWithBuffer, r0: Reg8, p0: UInt16, p1: UInt16, p2: UInt16),
10 (6, NewArrayWithBufferLong, r0: Reg8, p0: UInt16, p1: UInt16, p2: UInt32),
11 (7, NewArray, r0: Reg8, p0: UInt16),
12 (8, Mov, r0: Reg8, r1: Reg8),
13 (9, MovLong, r0: Reg32, r1: Reg32),
14 (10, Negate, r0: Reg8, r1: Reg8),
15 (11, Not, r0: Reg8, r1: Reg8),
16 (12, BitNot, r0: Reg8, r1: Reg8),
17 (13, TypeOf, r0: Reg8, r1: Reg8),
18 (14, Eq, r0: Reg8, r1: Reg8, r2: Reg8),
19 (15, StrictEq, r0: Reg8, r1: Reg8, r2: Reg8),
20 (16, Neq, r0: Reg8, r1: Reg8, r2: Reg8),
21 (17, StrictNeq, r0: Reg8, r1: Reg8, r2: Reg8),
22 (18, Less, r0: Reg8, r1: Reg8, r2: Reg8),
23 (19, LessEq, r0: Reg8, r1: Reg8, r2: Reg8),
24 (20, Greater, r0: Reg8, r1: Reg8, r2: Reg8),
25 (21, GreaterEq, r0: Reg8, r1: Reg8, r2: Reg8),
26 (22, Add, r0: Reg8, r1: Reg8, r2: Reg8),
27 (23, AddN, r0: Reg8, r1: Reg8, r2: Reg8),
28 (24, Mul, r0: Reg8, r1: Reg8, r2: Reg8),
29 (25, MulN, r0: Reg8, r1: Reg8, r2: Reg8),
30 (26, Div, r0: Reg8, r1: Reg8, r2: Reg8),
31 (27, DivN, r0: Reg8, r1: Reg8, r2: Reg8),
32 (28, Mod, r0: Reg8, r1: Reg8, r2: Reg8),
33 (29, Sub, r0: Reg8, r1: Reg8, r2: Reg8),
34 (30, SubN, r0: Reg8, r1: Reg8, r2: Reg8),
35 (31, LShift, r0: Reg8, r1: Reg8, r2: Reg8),
36 (32, RShift, r0: Reg8, r1: Reg8, r2: Reg8),
37 (33, URshift, r0: Reg8, r1: Reg8, r2: Reg8),
38 (34, BitAnd, r0: Reg8, r1: Reg8, r2: Reg8),
39 (35, BitXor, r0: Reg8, r1: Reg8, r2: Reg8),
40 (36, BitOr, r0: Reg8, r1: Reg8, r2: Reg8),
41 (37, Inc, r0: Reg8, r1: Reg8),
42 (38, Dec, r0: Reg8, r1: Reg8),
43 (39, InstanceOf, r0: Reg8, r1: Reg8, r2: Reg8),
44 (40, IsIn, r0: Reg8, r1: Reg8, r2: Reg8),
45 (41, GetEnvironment, r0: Reg8, p0: UInt8),
46 (42, StoreToEnvironment, r0: Reg8, p0: UInt8, r1: Reg8),
47 (43, StoreToEnvironmentL, r0: Reg8, p0: UInt16, r1: Reg8),
48 (44, StoreNPToEnvironment, r0: Reg8, p0: UInt8, r1: Reg8),
49 (45, StoreNPToEnvironmentL, r0: Reg8, p0: UInt16, r1: Reg8),
50 (46, LoadFromEnvironment, r0: Reg8, r1: Reg8, p0: UInt8),
51 (47, LoadFromEnvironmentL, r0: Reg8, r1: Reg8, p0: UInt16),
52 (48, GetGlobalObject, r0: Reg8),
53 (49, GetNewTarget, r0: Reg8),
54 (50, CreateEnvironment, r0: Reg8),
55 (51, CreateInnerEnvironment, r0: Reg8, r1: Reg8, p0: UInt32),
56 (52, DeclareGlobalVar, p0: StringIDUInt32),
57 (53, ThrowIfHasRestrictedGlobalProperty, p0: StringIDUInt32),
58 (54, GetByIdShort, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt8),
59 (55, GetById, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt16),
60 (56, GetByIdLong, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt32),
61 (57, TryGetById, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt16),
62 (58, TryGetByIdLong, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt32),
63 (59, PutById, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt16),
64 (60, PutByIdLong, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt32),
65 (61, TryPutById, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt16),
66 (62, TryPutByIdLong, r0: Reg8, r1: Reg8, p0: UInt8, p1: StringIDUInt32),
67 (63, PutNewOwnByIdShort, r0: Reg8, r1: Reg8, p0: StringIDUInt8),
68 (64, PutNewOwnById, r0: Reg8, r1: Reg8, p0: StringIDUInt16),
69 (65, PutNewOwnByIdLong, r0: Reg8, r1: Reg8, p0: StringIDUInt32),
70 (66, PutNewOwnNEById, r0: Reg8, r1: Reg8, p0: StringIDUInt16),
71 (67, PutNewOwnNEByIdLong, r0: Reg8, r1: Reg8, p0: StringIDUInt32),
72 (68, PutOwnByIndex, r0: Reg8, r1: Reg8, p0: UInt8),
73 (69, PutOwnByIndexL, r0: Reg8, r1: Reg8, p0: UInt32),
74 (70, PutOwnByVal, r0: Reg8, r1: Reg8, r2: Reg8, p0: UInt8),
75 (71, DelById, r0: Reg8, r1: Reg8, p0: StringIDUInt16),
76 (72, DelByIdLong, r0: Reg8, r1: Reg8, p0: StringIDUInt32),
77 (73, GetByVal, r0: Reg8, r1: Reg8, r2: Reg8),
78 (74, PutByVal, r0: Reg8, r1: Reg8, r2: Reg8),
79 (75, DelByVal, r0: Reg8, r1: Reg8, r2: Reg8),
80 (76, PutOwnGetterSetterByVal, r0: Reg8, r1: Reg8, r2: Reg8, r3: Reg8, p0: UInt8),
81 (77, GetPNameList, r0: Reg8, r1: Reg8, r2: Reg8, r3: Reg8),
82 (78, GetNextPName, r0: Reg8, r1: Reg8, r2: Reg8, r3: Reg8, r4: Reg8),
83 (79, Call, r0: Reg8, r1: Reg8, p0: UInt8),
84 (80, Construct, r0: Reg8, r1: Reg8, p0: UInt8),
85 (81, Call1, r0: Reg8, r1: Reg8, r2: Reg8),
86 (82, CallDirect, r0: Reg8, p0: UInt8, p1: FunctionIDUInt16),
87 (83, Call2, r0: Reg8, r1: Reg8, r2: Reg8, r3: Reg8),
88 (84, Call3, r0: Reg8, r1: Reg8, r2: Reg8, r3: Reg8, r4: Reg8),
89 (85, Call4, r0: Reg8, r1: Reg8, r2: Reg8, r3: Reg8, r4: Reg8, r5: Reg8),
90 (86, CallLong, r0: Reg8, r1: Reg8, p0: UInt32),
91 (87, ConstructLong, r0: Reg8, r1: Reg8, p0: UInt32),
92 (88, CallDirectLongIndex, r0: Reg8, p0: UInt8, p1: UInt32),
93 (89, CallBuiltin, r0: Reg8, p0: UInt8, p1: UInt8),
94 (90, CallBuiltinLong, r0: Reg8, p0: UInt8, p1: UInt32),
95 (91, GetBuiltinClosure, r0: Reg8, p0: UInt8),
96 (92, Ret, r0: Reg8),
97 (93, Catch, r0: Reg8),
98 (94, DirectEval, r0: Reg8, r1: Reg8, p0: UInt8),
99 (95, Throw, r0: Reg8),
100 (96, ThrowIfEmpty, r0: Reg8, r1: Reg8),
101 (97, Debugger, ),
102 (98, AsyncBreakCheck, ),
103 (99, ProfilePoint, p0: UInt16),
104 (100, CreateClosure, r0: Reg8, r1: Reg8, p0: FunctionIDUInt16),
105 (101, CreateClosureLongIndex, r0: Reg8, r1: Reg8, p0: FunctionIDUInt32),
106 (102, CreateGeneratorClosure, r0: Reg8, r1: Reg8, p0: FunctionIDUInt16),
107 (103, CreateGeneratorClosureLongIndex, r0: Reg8, r1: Reg8, p0: FunctionIDUInt32),
108 (104, CreateAsyncClosure, r0: Reg8, r1: Reg8, p0: FunctionIDUInt16),
109 (105, CreateAsyncClosureLongIndex, r0: Reg8, r1: Reg8, p0: FunctionIDUInt32),
110 (106, CreateThis, r0: Reg8, r1: Reg8, r2: Reg8),
111 (107, SelectObject, r0: Reg8, r1: Reg8, r2: Reg8),
112 (108, LoadParam, r0: Reg8, p0: UInt8),
113 (109, LoadParamLong, r0: Reg8, p0: UInt32),
114 (110, LoadConstUInt8, r0: Reg8, p0: UInt8),
115 (111, LoadConstInt, r0: Reg8, p0: Imm32),
116 (112, LoadConstDouble, r0: Reg8, p0: Double),
117 (113, LoadConstBigInt, r0: Reg8, p0: BigIntIDUInt16),
118 (114, LoadConstBigIntLongIndex, r0: Reg8, p0: BigIntIDUInt32),
119 (115, LoadConstString, r0: Reg8, p0: StringIDUInt16),
120 (116, LoadConstStringLongIndex, r0: Reg8, p0: StringIDUInt32),
121 (117, LoadConstEmpty, r0: Reg8),
122 (118, LoadConstUndefined, r0: Reg8),
123 (119, LoadConstNull, r0: Reg8),
124 (120, LoadConstTrue, r0: Reg8),
125 (121, LoadConstFalse, r0: Reg8),
126 (122, LoadConstZero, r0: Reg8),
127 (123, CoerceThisNS, r0: Reg8, r1: Reg8),
128 (124, LoadThisNS, r0: Reg8),
129 (125, ToNumber, r0: Reg8, r1: Reg8),
130 (126, ToNumeric, r0: Reg8, r1: Reg8),
131 (127, ToInt32, r0: Reg8, r1: Reg8),
132 (128, AddEmptyString, r0: Reg8, r1: Reg8),
133 (129, GetArgumentsPropByVal, r0: Reg8, r1: Reg8, r2: Reg8),
134 (130, GetArgumentsLength, r0: Reg8, r1: Reg8),
135 (131, ReifyArguments, r0: Reg8),
136 (132, CreateRegExp, r0: Reg8, p0: StringIDUInt32, p1: StringIDUInt32, p2: UInt32),
137 (133, SwitchImm, r0: Reg8, p0: UInt32, p1: Addr32, p2: UInt32, p3: UInt32),
138 (134, StartGenerator, ),
139 (135, ResumeGenerator, r0: Reg8, r1: Reg8),
140 (136, CompleteGenerator, ),
141 (137, CreateGenerator, r0: Reg8, r1: Reg8, p0: FunctionIDUInt16),
142 (138, CreateGeneratorLongIndex, r0: Reg8, r1: Reg8, p0: FunctionIDUInt32),
143 (139, IteratorBegin, r0: Reg8, r1: Reg8),
144 (140, IteratorNext, r0: Reg8, r1: Reg8, r2: Reg8),
145 (141, IteratorClose, r0: Reg8, p0: UInt8),
146 (142, Jmp, p0: Addr8),
147 (143, JmpLong, p0: Addr32),
148 (144, JmpTrue, p0: Addr8, r0: Reg8),
149 (145, JmpTrueLong, p0: Addr32, r0: Reg8),
150 (146, JmpFalse, p0: Addr8, r0: Reg8),
151 (147, JmpFalseLong, p0: Addr32, r0: Reg8),
152 (148, JmpUndefined, p0: Addr8, r0: Reg8),
153 (149, JmpUndefinedLong, p0: Addr32, r0: Reg8),
154 (150, SaveGenerator, p0: Addr8),
155 (151, SaveGeneratorLong, p0: Addr32),
156 (152, JLess, p0: Addr8, r0: Reg8, r1: Reg8),
157 (153, JLessLong, p0: Addr32, r0: Reg8, r1: Reg8),
158 (154, JNotLess, p0: Addr8, r0: Reg8, r1: Reg8),
159 (155, JNotLessLong, p0: Addr32, r0: Reg8, r1: Reg8),
160 (156, JLessN, p0: Addr8, r0: Reg8, r1: Reg8),
161 (157, JLessNLong, p0: Addr32, r0: Reg8, r1: Reg8),
162 (158, JNotLessN, p0: Addr8, r0: Reg8, r1: Reg8),
163 (159, JNotLessNLong, p0: Addr32, r0: Reg8, r1: Reg8),
164 (160, JLessEqual, p0: Addr8, r0: Reg8, r1: Reg8),
165 (161, JLessEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
166 (162, JNotLessEqual, p0: Addr8, r0: Reg8, r1: Reg8),
167 (163, JNotLessEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
168 (164, JLessEqualN, p0: Addr8, r0: Reg8, r1: Reg8),
169 (165, JLessEqualNLong, p0: Addr32, r0: Reg8, r1: Reg8),
170 (166, JNotLessEqualN, p0: Addr8, r0: Reg8, r1: Reg8),
171 (167, JNotLessEqualNLong, p0: Addr32, r0: Reg8, r1: Reg8),
172 (168, JGreater, p0: Addr8, r0: Reg8, r1: Reg8),
173 (169, JGreaterLong, p0: Addr32, r0: Reg8, r1: Reg8),
174 (170, JNotGreater, p0: Addr8, r0: Reg8, r1: Reg8),
175 (171, JNotGreaterLong, p0: Addr32, r0: Reg8, r1: Reg8),
176 (172, JGreaterN, p0: Addr8, r0: Reg8, r1: Reg8),
177 (173, JGreaterNLong, p0: Addr32, r0: Reg8, r1: Reg8),
178 (174, JNotGreaterN, p0: Addr8, r0: Reg8, r1: Reg8),
179 (175, JNotGreaterNLong, p0: Addr32, r0: Reg8, r1: Reg8),
180 (176, JGreaterEqual, p0: Addr8, r0: Reg8, r1: Reg8),
181 (177, JGreaterEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
182 (178, JNotGreaterEqual, p0: Addr8, r0: Reg8, r1: Reg8),
183 (179, JNotGreaterEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
184 (180, JGreaterEqualN, p0: Addr8, r0: Reg8, r1: Reg8),
185 (181, JGreaterEqualNLong, p0: Addr32, r0: Reg8, r1: Reg8),
186 (182, JNotGreaterEqualN, p0: Addr8, r0: Reg8, r1: Reg8),
187 (183, JNotGreaterEqualNLong, p0: Addr32, r0: Reg8, r1: Reg8),
188 (184, JEqual, p0: Addr8, r0: Reg8, r1: Reg8),
189 (185, JEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
190 (186, JNotEqual, p0: Addr8, r0: Reg8, r1: Reg8),
191 (187, JNotEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
192 (188, JStrictEqual, p0: Addr8, r0: Reg8, r1: Reg8),
193 (189, JStrictEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
194 (190, JStrictNotEqual, p0: Addr8, r0: Reg8, r1: Reg8),
195 (191, JStrictNotEqualLong, p0: Addr32, r0: Reg8, r1: Reg8),
196 (192, Add32, r0: Reg8, r1: Reg8, r2: Reg8),
197 (193, Sub32, r0: Reg8, r1: Reg8, r2: Reg8),
198 (194, Mul32, r0: Reg8, r1: Reg8, r2: Reg8),
199 (195, Divi32, r0: Reg8, r1: Reg8, r2: Reg8),
200 (196, Divu32, r0: Reg8, r1: Reg8, r2: Reg8),
201 (197, Loadi8, r0: Reg8, r1: Reg8, r2: Reg8),
202 (198, Loadu8, r0: Reg8, r1: Reg8, r2: Reg8),
203 (199, Loadi16, r0: Reg8, r1: Reg8, r2: Reg8),
204 (200, Loadu16, r0: Reg8, r1: Reg8, r2: Reg8),
205 (201, Loadi32, r0: Reg8, r1: Reg8, r2: Reg8),
206 (202, Loadu32, r0: Reg8, r1: Reg8, r2: Reg8),
207 (203, Store8, r0: Reg8, r1: Reg8, r2: Reg8),
208 (204, Store16, r0: Reg8, r1: Reg8, r2: Reg8),
209 (205, Store32, r0: Reg8, r1: Reg8, r2: Reg8)
210);