use crate::hermes;

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