-MINI_OP(OP_LOAD, "load")
-MINI_OP(OP_LDADDR, "ldaddr")
-MINI_OP(OP_STORE, "store")
-MINI_OP(OP_OBJADDR, "objaddr")
-MINI_OP(OP_VTADDR, "vtaddr")
-MINI_OP(OP_PHI, "phi")
-MINI_OP(OP_RENAME, "rename")
-MINI_OP(OP_COMPARE, "compare")
-MINI_OP(OP_COMPARE_IMM, "compare_imm")
-MINI_OP(OP_FCOMPARE, "fcompare")
-MINI_OP(OP_LCOMPARE, "lcompare")
-MINI_OP(OP_ICOMPARE, "icompare")
-MINI_OP(OP_ICOMPARE_IMM, "icompare_imm")
-MINI_OP(OP_LOCAL, "local")
-MINI_OP(OP_ARG, "arg")
-MINI_OP(OP_ARGLIST, "oparglist")
-MINI_OP(OP_OUTARG, "outarg")
-MINI_OP(OP_OUTARG_REG, "outarg_reg")
-MINI_OP(OP_OUTARG_FREG, "outarg_freg")
-MINI_OP(OP_OUTARG_IMM, "outarg_imm")
-MINI_OP(OP_OUTARG_R4, "outarg_r4")
-MINI_OP(OP_OUTARG_R8, "outarg_r8")
-MINI_OP(OP_OUTARG_VT, "outarg_vt")
-MINI_OP(OP_OUTARG_MEMBASE, "outarg_membase")
-MINI_OP(OP_INARG_VT, "inarg_vt")
-MINI_OP(OP_RETARG, "retarg")
-MINI_OP(OP_SETRET, "setret")
-MINI_OP(OP_SETFRET, "setfret")
-MINI_OP(OP_SETLRET, "setlret")
-MINI_OP(OP_SETREG, "setreg")
-MINI_OP(OP_SETREGIMM, "setregimm")
-MINI_OP(OP_SETFREG, "setfreg")
-MINI_OP(OP_CHECK_THIS, "checkthis")
-MINI_OP(OP_VOIDCALL, "voidcall")
-MINI_OP(OP_VOIDCALLVIRT, "voidcallvirt")
-MINI_OP(OP_VOIDCALL_REG, "voidcall_reg")
-MINI_OP(OP_VOIDCALL_MEMBASE, "voidcall_membase")
-MINI_OP(OP_FCALL, "fcall")
-MINI_OP(OP_FCALLVIRT, "fcallvirt")
-MINI_OP(OP_FCALL_REG, "fcall_reg")
-MINI_OP(OP_FCALL_MEMBASE, "fcall_membase")
-MINI_OP(OP_LCALL, "lcall")
-MINI_OP(OP_LCALLVIRT, "lcallvirt")
-MINI_OP(OP_LCALL_REG, "lcall_reg")
-MINI_OP(OP_LCALL_MEMBASE, "lcall_membase")
-MINI_OP(OP_VCALL, "vcall")
-MINI_OP(OP_VCALLVIRT, "vcallvirt")
-MINI_OP(OP_VCALL_REG, "vcall_reg")
-MINI_OP(OP_VCALL_MEMBASE, "vcall_membase")
-MINI_OP(OP_CALL_REG, "call_reg")
-MINI_OP(OP_CALL_MEMBASE, "call_membase")
-MINI_OP(OP_TRAP, "trap")
-MINI_OP(OP_ICONST, "iconst")
-MINI_OP(OP_I8CONST, "i8const")
-MINI_OP(OP_R4CONST, "r4const")
-MINI_OP(OP_R8CONST, "r8const")
-MINI_OP(OP_REGVAR, "regvar")
-MINI_OP(OP_REG, "reg")
-MINI_OP(OP_REGOFFSET, "regoffset")
-MINI_OP(OP_LABEL, "label")
-MINI_OP(OP_CHECK_ARRAY_TYPE, "check_array_type")
-MINI_OP(OP_ARRAY_RANK, "array_rank")
-MINI_OP(OP_THROW_OR_NULL, "throw_or_null")
-MINI_OP(OP_RETHROW, "op_rethrow")
-MINI_OP(OP_REFANYTYPE, "refanytype")
-MINI_OP(OP_NEWOBJ, "op_newobj")
-
-MINI_OP(OP_STORE_MEMBASE_IMM,"store_membase_imm")
-MINI_OP(OP_STORE_MEMBASE_REG,"store_membase_reg")
-MINI_OP(OP_STOREI1_MEMBASE_IMM, "storei1_membase_imm")
-MINI_OP(OP_STOREI1_MEMBASE_REG, "storei1_membase_reg")
-MINI_OP(OP_STOREI2_MEMBASE_IMM, "storei2_membase_imm")
-MINI_OP(OP_STOREI2_MEMBASE_REG, "storei2_membase_reg")
-MINI_OP(OP_STOREI4_MEMBASE_IMM, "storei4_membase_imm")
-MINI_OP(OP_STOREI4_MEMBASE_REG, "storei4_membase_reg")
-MINI_OP(OP_STOREI8_MEMBASE_IMM, "storei8_membase_imm")
-MINI_OP(OP_STOREI8_MEMBASE_REG, "storei8_membase_reg")
-MINI_OP(OP_STORER4_MEMBASE_REG, "storer4_membase_reg")
-MINI_OP(OP_STORER8_MEMBASE_REG, "storer8_membase_reg")
-MINI_OP(OP_LOAD_MEMBASE, "load_membase")
-MINI_OP(OP_LOADI1_MEMBASE,"loadi1_membase")
-MINI_OP(OP_LOADU1_MEMBASE,"loadu1_membase")
-MINI_OP(OP_LOADI2_MEMBASE,"loadi2_membase")
-MINI_OP(OP_LOADU2_MEMBASE,"loadu2_membase")
-MINI_OP(OP_LOADI4_MEMBASE,"loadi4_membase")
-MINI_OP(OP_LOADU4_MEMBASE,"loadu4_membase")
-MINI_OP(OP_LOADI8_MEMBASE,"loadi8_membase")
-MINI_OP(OP_LOADR4_MEMBASE,"loadr4_membase")
-MINI_OP(OP_LOADR8_MEMBASE,"loadr8_membase")
+MINI_OP(OP_LOAD, "load", NONE, NONE, NONE)
+MINI_OP(OP_LDADDR, "ldaddr", IREG, NONE, NONE)
+MINI_OP(OP_STORE, "store", NONE, NONE, NONE)
+MINI_OP(OP_OBJADDR, "objaddr", NONE, NONE, NONE)
+MINI_OP(OP_VTADDR, "vtaddr", NONE, NONE, NONE)
+MINI_OP(OP_NOP, "nop", NONE, NONE, NONE)
+MINI_OP(OP_PHI, "phi", IREG, NONE, NONE)
+MINI_OP(OP_FPHI, "fphi", FREG, NONE, NONE)
+MINI_OP(OP_VPHI, "vphi", VREG, NONE, NONE)
+MINI_OP(OP_RENAME, "rename", NONE, NONE, NONE)
+MINI_OP(OP_COMPARE, "compare", NONE, IREG, IREG)
+MINI_OP(OP_COMPARE_IMM, "compare_imm", NONE, IREG, NONE)
+MINI_OP(OP_FCOMPARE, "fcompare", NONE, FREG, FREG)
+MINI_OP(OP_LCOMPARE, "lcompare", NONE, LREG, LREG)
+MINI_OP(OP_ICOMPARE, "icompare", NONE, IREG, IREG)
+MINI_OP(OP_ICOMPARE_IMM, "icompare_imm", NONE, IREG, NONE)
+MINI_OP(OP_LCOMPARE_IMM, "lcompare_imm", NONE, LREG, NONE)
+MINI_OP(OP_LOCAL, "local", NONE, NONE, NONE)
+MINI_OP(OP_ARG, "arg", NONE, NONE, NONE)
+MINI_OP(OP_ARGLIST, "oparglist", NONE, IREG, NONE)
+MINI_OP(OP_OUTARG, "outarg", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_REG, "outarg_reg", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_FREG, "outarg_freg", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_FREG_R4, "outarg_freg_r4", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_IMM, "outarg_imm", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_R4, "outarg_r4", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_R8, "outarg_r8", NONE, NONE, NONE)
+MINI_OP(OP_OUTARG_VT, "outarg_vt", NONE, VREG, NONE)
+MINI_OP(OP_OUTARG_VTRETADDR, "outarg_vtretaddr", IREG, NONE, NONE)
+MINI_OP(OP_OUTARG_MEMBASE, "outarg_membase", NONE, NONE, NONE)
+MINI_OP(OP_INARG_VT, "inarg_vt", NONE, NONE, NONE)
+MINI_OP(OP_RETARG, "retarg", NONE, NONE, NONE)
+MINI_OP(OP_SETRET, "setret", NONE, NONE, NONE)
+MINI_OP(OP_SETFRET, "setfret", FREG, FREG, NONE)
+MINI_OP(OP_SETLRET, "setlret", NONE, IREG, IREG)
+MINI_OP(OP_LOCALLOC, "localloc", IREG, IREG, NONE)
+MINI_OP(OP_LOCALLOC_IMM, "localloc_imm", IREG, NONE, NONE)
+MINI_OP(OP_CHECK_THIS, "checkthis", NONE, IREG, NONE)
+MINI_OP(OP_CHECK_THIS_PASSTHROUGH, "checkthis_passthrough", NONE, NONE, NONE)
+MINI_OP(OP_VOIDCALL, "voidcall", NONE, NONE, NONE)
+MINI_OP(OP_VOIDCALLVIRT, "voidcallvirt", NONE, NONE, NONE)
+MINI_OP(OP_VOIDCALL_REG, "voidcall_reg", NONE, IREG, NONE)
+MINI_OP(OP_VOIDCALL_MEMBASE, "voidcall_membase", NONE, IREG, NONE)
+MINI_OP(OP_FCALL, "fcall", FREG, NONE, NONE)
+MINI_OP(OP_FCALLVIRT, "fcallvirt", FREG, NONE, NONE)
+MINI_OP(OP_FCALL_REG, "fcall_reg", FREG, IREG, NONE)
+MINI_OP(OP_FCALL_MEMBASE, "fcall_membase", FREG, IREG, NONE)
+MINI_OP(OP_LCALL, "lcall", LREG, NONE, NONE)
+MINI_OP(OP_LCALLVIRT, "lcallvirt", LREG, NONE, NONE)
+MINI_OP(OP_LCALL_REG, "lcall_reg", LREG, IREG, NONE)
+MINI_OP(OP_LCALL_MEMBASE, "lcall_membase", LREG, IREG, NONE)
+MINI_OP(OP_VCALL, "vcall", VREG, NONE, NONE)
+MINI_OP(OP_VCALLVIRT, "vcallvirt", VREG, NONE, NONE)
+MINI_OP(OP_VCALL_REG, "vcall_reg", VREG, IREG, NONE)
+MINI_OP(OP_VCALL_MEMBASE, "vcall_membase", VREG, IREG, NONE)
+MINI_OP(OP_VOIDCALL_RGCTX, "voidcall_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_LCALL_RGCTX, "lcall_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_VCALL_RGCTX, "vcall_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_CALL_RGCTX, "call_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_FCALL_RGCTX, "fcall_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_VOIDCALL_REG_RGCTX, "voidcall_reg_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_LCALL_REG_RGCTX, "lcall_reg_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_VCALL_REG_RGCTX, "vcall_reg_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_CALL_REG_RGCTX, "call_reg_rgctx", NONE, NONE, NONE)
+MINI_OP(OP_VOIDCALLVIRT_IMT, "voidcallvirt_imt", NONE, NONE, NONE)
+MINI_OP(OP_CALLVIRT_IMT, "callvirt_imt", NONE, NONE, NONE)
+MINI_OP(OP_FCALLVIRT_IMT, "fcallvirt_imt", NONE, NONE, NONE)
+MINI_OP(OP_LCALLVIRT_IMT, "lcallvirt_imt", NONE, NONE, NONE)
+MINI_OP(OP_VCALLVIRT_IMT, "vcallvirt_imt", NONE, NONE, NONE)
+MINI_OP(OP_FCALL_REG_RGCTX, "fcall_reg_rgctx", NONE, NONE, NONE)
+
+MINI_OP(OP_TRAMPCALL_VTABLE, "trampcall_vtable", NONE, NONE, NONE)
+
+/* Represents the decomposed vcall which doesn't return a vtype no more */
+MINI_OP(OP_VCALL2, "vcall2", NONE, NONE, NONE)
+MINI_OP(OP_VCALL2_REG, "vcall2_reg", NONE, IREG, NONE)
+MINI_OP(OP_VCALL2_MEMBASE, "vcall2_membase", NONE, IREG, NONE)
+
+MINI_OP(OP_CALL, "call", IREG, NONE, NONE)
+MINI_OP(OP_CALL_REG, "call_reg", IREG, IREG, NONE)
+MINI_OP(OP_CALL_MEMBASE, "call_membase", IREG, IREG, NONE)
+MINI_OP(OP_CALLVIRT, "callvirt", IREG, NONE, NONE)
+MINI_OP(OP_TRAP, "trap", NONE, NONE, NONE)
+MINI_OP(OP_ICONST, "iconst", IREG, NONE, NONE)
+MINI_OP(OP_I8CONST, "i8const", LREG, NONE, NONE)
+MINI_OP(OP_R4CONST, "r4const", FREG, NONE, NONE)
+MINI_OP(OP_R8CONST, "r8const", FREG, NONE, NONE)
+MINI_OP(OP_REGVAR, "regvar", NONE, NONE, NONE)
+MINI_OP(OP_REG, "reg", NONE, NONE, NONE)
+MINI_OP(OP_REGOFFSET, "regoffset", NONE, NONE, NONE)
+MINI_OP(OP_VTARG_ADDR, "vtarg_addr", NONE, NONE, NONE)
+MINI_OP(OP_LABEL, "label", NONE, NONE, NONE)
+MINI_OP(OP_SWITCH, "switch", NONE, IREG, NONE)
+MINI_OP(OP_CHECK_ARRAY_TYPE, "check_array_type", NONE, NONE, NONE)
+MINI_OP(OP_ARRAY_RANK, "array_rank", NONE, NONE, NONE)
+MINI_OP(OP_THROW, "throw", NONE, IREG, NONE)
+MINI_OP(OP_THROW_OR_NULL, "throw_or_null", NONE, NONE, NONE)
+MINI_OP(OP_RETHROW, "rethrow", NONE, IREG, NONE)
+MINI_OP(OP_REFANYTYPE, "refanytype", NONE, NONE, NONE)
+
+/* MONO_IS_STORE_MEMBASE depends on the order here */
+MINI_OP(OP_STORE_MEMBASE_REG,"store_membase_reg", IREG, IREG, NONE)
+MINI_OP(OP_STOREI1_MEMBASE_REG, "storei1_membase_reg", IREG, IREG, NONE)
+MINI_OP(OP_STOREI2_MEMBASE_REG, "storei2_membase_reg", IREG, IREG, NONE)
+MINI_OP(OP_STOREI4_MEMBASE_REG, "storei4_membase_reg", IREG, IREG, NONE)
+MINI_OP(OP_STOREI8_MEMBASE_REG, "storei8_membase_reg", IREG, IREG, NONE)
+MINI_OP(OP_STORER4_MEMBASE_REG, "storer4_membase_reg", IREG, FREG, NONE)
+MINI_OP(OP_STORER8_MEMBASE_REG, "storer8_membase_reg", IREG, FREG, NONE)
+
+MINI_OP(OP_STORE_MEMBASE_IMM,"store_membase_imm", IREG, NONE, NONE)
+MINI_OP(OP_STOREI1_MEMBASE_IMM, "storei1_membase_imm", IREG, NONE, NONE)
+MINI_OP(OP_STOREI2_MEMBASE_IMM, "storei2_membase_imm", IREG, NONE, NONE)
+MINI_OP(OP_STOREI4_MEMBASE_IMM, "storei4_membase_imm", IREG, NONE, NONE)
+MINI_OP(OP_STOREI8_MEMBASE_IMM, "storei8_membase_imm", IREG, NONE, NONE)
+MINI_OP(OP_STOREV_MEMBASE, "storev_membase", IREG, VREG, NONE)
+
+/* MONO_IS_LOAD_MEMBASE depends on the order here */
+MINI_OP(OP_LOAD_MEMBASE, "load_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADI1_MEMBASE,"loadi1_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADU1_MEMBASE,"loadu1_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADI2_MEMBASE,"loadi2_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADU2_MEMBASE,"loadu2_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADI4_MEMBASE,"loadi4_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADU4_MEMBASE,"loadu4_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADI8_MEMBASE,"loadi8_membase", IREG, IREG, NONE)
+MINI_OP(OP_LOADR4_MEMBASE,"loadr4_membase", FREG, IREG, NONE)
+MINI_OP(OP_LOADR8_MEMBASE,"loadr8_membase", FREG, IREG, NONE)
+MINI_OP(OP_LOADV_MEMBASE, "loadv_membase", VREG, IREG, NONE)
+