2008-10-23 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / mini-ops.h
index 672b0e3f65cabcdba56309a618f40fcdeb95dd41..dca84e8f4dcbd742a8690e71e1e66ffdb2a6781a 100644 (file)
@@ -5,6 +5,7 @@ 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_HARD_NOP,    "hard_nop", NONE, NONE, NONE)
 MINI_OP(OP_RELAXED_NOP,     "relaxed_nop", NONE, NONE, NONE)
 MINI_OP(OP_PHI,                "phi", IREG, NONE, NONE)
 MINI_OP(OP_FPHI,       "fphi", FREG, NONE, NONE)
@@ -109,11 +110,17 @@ 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)
 
+#ifdef MONO_ARCH_SUPPORT_SIMD_INTRINSICS
+MINI_OP(OP_STOREX_MEMBASE_REG, "storex_membase_reg", IREG, XREG, NONE)
+MINI_OP(OP_STOREX_ALIGNED_MEMBASE_REG,     "storex_aligned_membase_reg", IREG, XREG, NONE)
+#endif
+
 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_STOREX_MEMBASE,             "storex_membase", IREG, XREG, NONE)
 MINI_OP(OP_STOREV_MEMBASE,      "storev_membase", IREG, VREG, NONE)
 
 /* MONO_IS_LOAD_MEMBASE depends on the order here */
@@ -127,6 +134,13 @@ 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_LOADX_MEMBASE,                      "loadx_membase", XREG, IREG, NONE)
+
+#ifdef MONO_ARCH_SUPPORT_SIMD_INTRINSICS
+MINI_OP(OP_LOADX_ALIGNED_MEMBASE,  "loadx_aligned_membase", XREG, IREG, NONE)
+#endif
+
 MINI_OP(OP_LOADV_MEMBASE,   "loadv_membase", VREG, IREG, NONE)
 
 /* indexed loads: dreg = load at (sreg1 + sreg2)*/
@@ -585,7 +599,7 @@ MINI_OP(OP_SQRT,    "sqrt", FREG, FREG, NONE)
 /* to optimize strings */
 MINI_OP(OP_GETCHR, "getchar", NONE, NONE, NONE)
 MINI_OP(OP_STR_CHAR_ADDR, "str_char_addr", NONE, NONE, NONE)
-MINI_OP(OP_STRLEN, "strlen", NONE, NONE, NONE)
+MINI_OP(OP_STRLEN, "strlen", IREG, IREG, NONE)
 MINI_OP(OP_GETTYPE, "gettype", NONE, NONE, NONE)
 MINI_OP(OP_GETHASHCODE, "gethashcode", NONE, NONE, NONE)
 MINI_OP(OP_NEWARR, "newarr", IREG, IREG, NONE)
@@ -615,6 +629,152 @@ MINI_OP(OP_DUMMY_STORE, "dummy_store", NONE, NONE, NONE)
 MINI_OP(OP_NOT_REACHED, "not_reached", NONE, NONE, NONE)
 MINI_OP(OP_NOT_NULL, "not_null", NONE, IREG, NONE)
 
+/* SIMD opcodes. */
+
+#ifdef MONO_ARCH_SUPPORT_SIMD_INTRINSICS
+
+MINI_OP(OP_ADDPS, "addps", XREG, XREG, XREG)
+MINI_OP(OP_DIVPS, "divps", XREG, XREG, XREG)
+MINI_OP(OP_MULPS, "mulps", XREG, XREG, XREG)
+MINI_OP(OP_SUBPS, "subps", XREG, XREG, XREG)
+MINI_OP(OP_MAXPS, "maxps", XREG, XREG, XREG)
+MINI_OP(OP_MINPS, "minps", XREG, XREG, XREG)
+MINI_OP(OP_COMPPS, "compps", XREG, XREG, XREG)
+MINI_OP(OP_ANDPS, "andps", XREG, XREG, XREG)
+MINI_OP(OP_ANDNPS, "andnps", XREG, XREG, XREG)
+MINI_OP(OP_ORPS, "orps", XREG, XREG, XREG)
+MINI_OP(OP_XORPS, "xorps", XREG, XREG, XREG)
+MINI_OP(OP_HADDPS, "haddps", XREG, XREG, XREG)
+MINI_OP(OP_HSUBPS, "hsubps", XREG, XREG, XREG)
+MINI_OP(OP_ADDSUBPS, "addsubps", XREG, XREG, XREG)
+MINI_OP(OP_DUPPS_LOW, "dupps_low", XREG, XREG, NONE)
+MINI_OP(OP_DUPPS_HIGH, "dupps_high", XREG, XREG, NONE)
+
+MINI_OP(OP_RSQRTPS, "rsqrtps", XREG, XREG, NONE)
+MINI_OP(OP_SQRTPS, "sqrtps", XREG, XREG, NONE)
+MINI_OP(OP_RCPPS, "rcpps", XREG, XREG, NONE)
+MINI_OP(OP_SHUFLEPS, "shuffleps", XREG, XREG, NONE)
+
+MINI_OP(OP_PSHUFLEW_HIGH, "pshufflew_high", XREG, XREG, NONE)
+MINI_OP(OP_PSHUFLEW_LOW, "pshufflew_low", XREG, XREG, NONE)
+MINI_OP(OP_PSHUFLED, "pshuffled", XREG, XREG, NONE)
+
+MINI_OP(OP_EXTRACT_MASK, "extract_mask", IREG, XREG, NONE)
+
+MINI_OP(OP_PAND, "pand", XREG, XREG, XREG)
+MINI_OP(OP_POR, "por", XREG, XREG, XREG)
+MINI_OP(OP_PXOR, "pxor", XREG, XREG, XREG)
+
+MINI_OP(OP_PADDB, "paddb", XREG, XREG, XREG)
+MINI_OP(OP_PADDW, "paddw", XREG, XREG, XREG)
+MINI_OP(OP_PADDD, "paddd", XREG, XREG, XREG)
+
+MINI_OP(OP_PSUBB, "psubb", XREG, XREG, XREG)
+MINI_OP(OP_PSUBW, "psubw", XREG, XREG, XREG)
+MINI_OP(OP_PSUBD, "psubd", XREG, XREG, XREG)
+
+MINI_OP(OP_PMAXB_UN, "pmaxb_un", XREG, XREG, XREG)
+MINI_OP(OP_PMAXW_UN, "pmaxw_un", XREG, XREG, XREG)
+MINI_OP(OP_PMAXD_UN, "pmaxd_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PMAXB, "pmaxb", XREG, XREG, XREG)
+MINI_OP(OP_PMAXW, "pmaxw", XREG, XREG, XREG)
+MINI_OP(OP_PMAXD, "pmaxd", XREG, XREG, XREG)
+
+MINI_OP(OP_PAVGB_UN, "pavgb_un", XREG, XREG, XREG)
+MINI_OP(OP_PAVGW_UN, "pavgw_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PMINB_UN, "pminb_un", XREG, XREG, XREG)
+MINI_OP(OP_PMINW_UN, "pminw_un", XREG, XREG, XREG)
+MINI_OP(OP_PMIND_UN, "pmind_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PMINB, "pminb", XREG, XREG, XREG)
+MINI_OP(OP_PMINW, "pminw", XREG, XREG, XREG)
+MINI_OP(OP_PMIND, "pmind", XREG, XREG, XREG)
+
+MINI_OP(OP_PCMPEQB, "pcmpeqb", XREG, XREG, XREG)
+MINI_OP(OP_PCMPEQW, "pcmpeqw", XREG, XREG, XREG)
+MINI_OP(OP_PCMPEQD, "pcmpeqd", XREG, XREG, XREG)
+
+MINI_OP(OP_PCMPGTB, "pcmpgtb", XREG, XREG, XREG)
+MINI_OP(OP_PCMPGTW, "pcmpgtw", XREG, XREG, XREG)
+MINI_OP(OP_PCMPGTD, "pcmpgtd", XREG, XREG, XREG)
+
+MINI_OP(OP_PSUM_ABS_DIFF, "psumabsdiff", XREG, XREG, XREG)
+
+MINI_OP(OP_UNPACK_LOWB, "unpack_lowb", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_LOWW, "unpack_loww", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_LOWD, "unpack_lowd", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_LOWQ, "unpack_lowq", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_LOWPS, "unpack_lowps", XREG, XREG, XREG)
+
+MINI_OP(OP_UNPACK_HIGHB, "unpack_highb", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_HIGHW, "unpack_highw", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_HIGHD, "unpack_highd", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_HIGHQ, "unpack_highq", XREG, XREG, XREG)
+MINI_OP(OP_UNPACK_HIGHPS, "unpack_highps", XREG, XREG, XREG)
+
+MINI_OP(OP_PACKW, "packw", XREG, XREG, XREG)
+MINI_OP(OP_PACKD, "packd", XREG, XREG, XREG)
+
+MINI_OP(OP_PADDB_SAT, "paddb_sat", XREG, XREG, XREG)
+MINI_OP(OP_PADDB_SAT_UN, "paddb_sat_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PADDW_SAT, "paddw_sat", XREG, XREG, XREG)
+MINI_OP(OP_PADDW_SAT_UN, "paddw_sat_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PADDD_SAT, "paddd_sat", XREG, XREG, XREG)
+MINI_OP(OP_PADDD_SAT_UN, "paddd_sat_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PSUBB_SAT, "psubb_sat", XREG, XREG, XREG)
+MINI_OP(OP_PSUBB_SAT_UN, "psubb_sat_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PSUBW_SAT, "psubw_sat", XREG, XREG, XREG)
+MINI_OP(OP_PSUBW_SAT_UN, "psubw_sat_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PSUBD_SAT, "psubd_sat", XREG, XREG, XREG)
+MINI_OP(OP_PSUBD_SAT_UN, "psubd_sat_un", XREG, XREG, XREG)
+
+MINI_OP(OP_PMULW, "pmulw", XREG, XREG, XREG)
+MINI_OP(OP_PMULD, "pmuld", XREG, XREG, XREG)
+
+MINI_OP(OP_PMULW_HIGH_UN, "pmul_high_un", XREG, XREG, XREG)
+
+/*SSE2 Shift ops must have the _reg version right after as code depends on this ordering.*/ 
+MINI_OP(OP_PSHRW, "pshrw", XREG, XREG, NONE)
+MINI_OP(OP_PSHRW_REG, "pshrw_reg", XREG, XREG, XREG)
+
+MINI_OP(OP_PSARW, "psarw", XREG, XREG, NONE)
+MINI_OP(OP_PSARW_REG, "psarw_reg", XREG, XREG, XREG)
+
+MINI_OP(OP_PSHLW, "pshlw", XREG, XREG, NONE)
+MINI_OP(OP_PSHLW_REG, "pshlw_reg", XREG, XREG, XREG)
+
+MINI_OP(OP_PSHRD, "pshrd", XREG, XREG, NONE)
+MINI_OP(OP_PSHRD_REG, "pshrd_reg", XREG, XREG, XREG)
+
+MINI_OP(OP_PSARD, "psard", XREG, XREG, NONE)
+MINI_OP(OP_PSARD_REG, "psard_reg", XREG, XREG, XREG)
+
+MINI_OP(OP_PSHLD, "pshld", XREG, XREG, NONE)
+MINI_OP(OP_PSHLD_REG, "pshld_reg", XREG, XREG, XREG)
+
+MINI_OP(OP_EXTRACT_I4, "extract_i4", IREG, XREG, NONE)
+MINI_OP(OP_ICONV_TO_R8_RAW, "iconv_to_r8_raw", FREG, IREG, NONE)
+MINI_OP(OP_LOADX_R4, "loadx_r4", FREG, IREG, NONE)
+
+MINI_OP(OP_PUSH_R4, "push_r4", NONE, FREG, NONE)
+MINI_OP(OP_LOADX_STACK, "loadx_stack", XREG, NONE, NONE)
+
+MINI_OP(OP_FCONV_TO_R8_X, "fconv_to_r8_x", XREG, FREG, NONE)
+MINI_OP(OP_XCONV_R8_TO_I4, "xconv_r8_to_i4", IREG, XREG, NONE)
+MINI_OP(OP_ICONV_TO_X, "iconv_to_x", XREG, IREG, NONE)
+
+#endif
+
+MINI_OP(OP_XMOVE,   "xmove", XREG, XREG, NONE)
+MINI_OP(OP_XZERO,   "xzero", XREG, NONE, NONE)
+
 /* Atomic specific
 
        Note, OP_ATOMIC_ADD_IMM_NEW_I4 and
@@ -944,119 +1104,120 @@ MINI_OP(OP_ALPHA_TRAPB, "alpha_trapb")
 #endif
 
 #if defined(__mips__)
-MINI_OP(OP_MIPS_BEQ,   "mips_beq")
-MINI_OP(OP_MIPS_BGEZ,  "mips_bgez")
-MINI_OP(OP_MIPS_BGTZ,  "mips_bgtz")
-MINI_OP(OP_MIPS_BLEZ,  "mips_blez")
-MINI_OP(OP_MIPS_BLTZ,  "mips_bltz")
-MINI_OP(OP_MIPS_BNE,   "mips_bne")
-MINI_OP(OP_MIPS_CVTSD, "mips_cvtsd")
-MINI_OP(OP_MIPS_FBEQ,  "mips_fbeq")
-MINI_OP(OP_MIPS_FBGE,  "mips_fbge")
-MINI_OP(OP_MIPS_FBGT,  "mips_fbgt")
-MINI_OP(OP_MIPS_FBLE,  "mips_fble")
-MINI_OP(OP_MIPS_FBLT,  "mips_fblt")
-MINI_OP(OP_MIPS_FBNE,  "mips_fbne")
-MINI_OP(OP_MIPS_FBFALSE, "mips_fbfalse")
-MINI_OP(OP_MIPS_FBTRUE, "mips_fbtrue")
-MINI_OP(OP_MIPS_LWC1,  "mips_lwc1")
-MINI_OP(OP_MIPS_MTC1S, "mips_mtc1_s")
-MINI_OP(OP_MIPS_MFC1S, "mips_mfc1_s")
-MINI_OP(OP_MIPS_MTC1D, "mips_mtc1_d")
-MINI_OP(OP_MIPS_MFC1D, "mips_mfc1_d")
-MINI_OP(OP_MIPS_NOP,   "mips_nop")
-MINI_OP(OP_MIPS_SLTI,  "mips_slti")
-MINI_OP(OP_MIPS_SLT,   "mips_slt")
-MINI_OP(OP_MIPS_SLTIU, "mips_sltiu")
-MINI_OP(OP_MIPS_SLTU,  "mips_sltu")
-MINI_OP(OP_MIPS_XORI,  "mips_xori")
-
-MINI_OP(OP_MIPS_COND_EXC_EQ, "mips_cond_exc_eq")
-MINI_OP(OP_MIPS_COND_EXC_GE, "mips_cond_exc_ge")
-MINI_OP(OP_MIPS_COND_EXC_GT, "mips_cond_exc_gt")
-MINI_OP(OP_MIPS_COND_EXC_LE, "mips_cond_exc_le")
-MINI_OP(OP_MIPS_COND_EXC_LT, "mips_cond_exc_lt")
-MINI_OP(OP_MIPS_COND_EXC_NE_UN, "mips_cond_exc_ne_un")
-MINI_OP(OP_MIPS_COND_EXC_GE_UN, "mips_cond_exc_ge_un")
-MINI_OP(OP_MIPS_COND_EXC_GT_UN, "mips_cond_exc_gt_un")
-MINI_OP(OP_MIPS_COND_EXC_LE_UN, "mips_cond_exc_le_un")
-MINI_OP(OP_MIPS_COND_EXC_LT_UN, "mips_cond_exc_lt_un")
-
-MINI_OP(OP_MIPS_COND_EXC_OV, "mips_cond_exc_ov")
-MINI_OP(OP_MIPS_COND_EXC_NO, "mips_cond_exc_no")
-MINI_OP(OP_MIPS_COND_EXC_C, "mips_cond_exc_c")
-MINI_OP(OP_MIPS_COND_EXC_NC, "mips_cond_exc_nc")
-
-MINI_OP(OP_MIPS_COND_EXC_IEQ, "mips_cond_exc_ieq")
-MINI_OP(OP_MIPS_COND_EXC_IGE, "mips_cond_exc_ige")
-MINI_OP(OP_MIPS_COND_EXC_IGT, "mips_cond_exc_igt")
-MINI_OP(OP_MIPS_COND_EXC_ILE, "mips_cond_exc_ile")
-MINI_OP(OP_MIPS_COND_EXC_ILT, "mips_cond_exc_ilt")
-MINI_OP(OP_MIPS_COND_EXC_INE_UN, "mips_cond_exc_ine_un")
-MINI_OP(OP_MIPS_COND_EXC_IGE_UN, "mips_cond_exc_ige_un")
-MINI_OP(OP_MIPS_COND_EXC_IGT_UN, "mips_cond_exc_igt_un")
-MINI_OP(OP_MIPS_COND_EXC_ILE_UN, "mips_cond_exc_ile_un")
-MINI_OP(OP_MIPS_COND_EXC_ILT_UN, "mips_cond_exc_ilt_un")
-
-MINI_OP(OP_MIPS_COND_EXC_IOV, "mips_cond_exc_iov")
-MINI_OP(OP_MIPS_COND_EXC_INO, "mips_cond_exc_ino")
-MINI_OP(OP_MIPS_COND_EXC_IC, "mips_cond_exc_ic")
-MINI_OP(OP_MIPS_COND_EXC_INC, "mips_cond_exc_inc")
+MINI_OP(OP_LONG_SHRUN_32,   "long_shrun_32", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_BEQ,   "mips_beq", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_BGEZ,  "mips_bgez", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_BGTZ,  "mips_bgtz", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_BLEZ,  "mips_blez", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_BLTZ,  "mips_bltz", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_BNE,   "mips_bne", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_CVTSD, "mips_cvtsd", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBEQ,  "mips_fbeq", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBGE,  "mips_fbge", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBGT,  "mips_fbgt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBLE,  "mips_fble", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBLT,  "mips_fblt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBNE,  "mips_fbne", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBFALSE, "mips_fbfalse", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_FBTRUE, "mips_fbtrue", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_LWC1,  "mips_lwc1", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_MTC1S, "mips_mtc1_s", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_MFC1S, "mips_mfc1_s", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_MTC1D, "mips_mtc1_d", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_MFC1D, "mips_mfc1_d", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_NOP,   "mips_nop", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_SLTI,  "mips_slti", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_SLT,   "mips_slt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_SLTIU, "mips_sltiu", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_SLTU,  "mips_sltu", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_XORI,  "mips_xori", NONE, NONE, NONE)
+
+MINI_OP(OP_MIPS_COND_EXC_EQ, "mips_cond_exc_eq", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_GE, "mips_cond_exc_ge", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_GT, "mips_cond_exc_gt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_LE, "mips_cond_exc_le", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_LT, "mips_cond_exc_lt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_NE_UN, "mips_cond_exc_ne_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_GE_UN, "mips_cond_exc_ge_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_GT_UN, "mips_cond_exc_gt_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_LE_UN, "mips_cond_exc_le_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_LT_UN, "mips_cond_exc_lt_un", NONE, NONE, NONE)
+
+MINI_OP(OP_MIPS_COND_EXC_OV, "mips_cond_exc_ov", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_NO, "mips_cond_exc_no", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_C, "mips_cond_exc_c", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_NC, "mips_cond_exc_nc", NONE, NONE, NONE)
+
+MINI_OP(OP_MIPS_COND_EXC_IEQ, "mips_cond_exc_ieq", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_IGE, "mips_cond_exc_ige", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_IGT, "mips_cond_exc_igt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_ILE, "mips_cond_exc_ile", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_ILT, "mips_cond_exc_ilt", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_INE_UN, "mips_cond_exc_ine_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_IGE_UN, "mips_cond_exc_ige_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_IGT_UN, "mips_cond_exc_igt_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_ILE_UN, "mips_cond_exc_ile_un", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_ILT_UN, "mips_cond_exc_ilt_un", NONE, NONE, NONE)
+
+MINI_OP(OP_MIPS_COND_EXC_IOV, "mips_cond_exc_iov", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_INO, "mips_cond_exc_ino", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_IC, "mips_cond_exc_ic", NONE, NONE, NONE)
+MINI_OP(OP_MIPS_COND_EXC_INC, "mips_cond_exc_inc", NONE, NONE, NONE)
 
 #endif
 
 #if defined(__hppa)
-MINI_OP(OP_HPPA_BEQ, "hppa_beq")
-MINI_OP(OP_HPPA_BGE, "hppa_bge")
-MINI_OP(OP_HPPA_BGT, "hppa_bgt")
-MINI_OP(OP_HPPA_BLE, "hppa_ble")
-MINI_OP(OP_HPPA_BLT, "hppa_blt")
-MINI_OP(OP_HPPA_BNE, "hppa_bne")
-MINI_OP(OP_HPPA_BGE_UN, "hppa_bge_un")
-MINI_OP(OP_HPPA_BGT_UN, "hppa_bgt_un")
-MINI_OP(OP_HPPA_BLE_UN, "hppa_ble_un")
-MINI_OP(OP_HPPA_BLT_UN, "hppa_blt_un")
-
-MINI_OP(OP_HPPA_CEQ, "hppa_ceq")
-MINI_OP(OP_HPPA_CGT, "hppa_cgt")
-MINI_OP(OP_HPPA_CGT_UN, "hppa_cgt_un")
-MINI_OP(OP_HPPA_CLT, "hppa_clt")
-MINI_OP(OP_HPPA_CLT_UN, "hppa_clt_un")
-
-MINI_OP(OP_HPPA_CEQ_IMM, "hppa_ceq_imm")
-MINI_OP(OP_HPPA_CGT_IMM, "hppa_cgt_imm")
-MINI_OP(OP_HPPA_CGT_UN_IMM, "hppa_cgt_un_imm")
-MINI_OP(OP_HPPA_CLT_IMM, "hppa_clt_imm")
-MINI_OP(OP_HPPA_CLT_UN_IMM, "hppa_clt_un_imm")
-
-MINI_OP(OP_HPPA_COND_EXC_EQ, "hppa_cond_exc_eq")
-MINI_OP(OP_HPPA_COND_EXC_GE, "hppa_cond_exc_ge")
-MINI_OP(OP_HPPA_COND_EXC_GT, "hppa_cond_exc_gt")
-MINI_OP(OP_HPPA_COND_EXC_LE, "hppa_cond_exc_le")
-MINI_OP(OP_HPPA_COND_EXC_LT, "hppa_cond_exc_lt")
-MINI_OP(OP_HPPA_COND_EXC_NE_UN, "hppa_cond_exc_ne_un")
-MINI_OP(OP_HPPA_COND_EXC_GE_UN, "hppa_cond_exc_ge_un")
-MINI_OP(OP_HPPA_COND_EXC_GT_UN, "hppa_cond_exc_gt_un")
-MINI_OP(OP_HPPA_COND_EXC_LE_UN, "hppa_cond_exc_le_un")
-MINI_OP(OP_HPPA_COND_EXC_LT_UN, "hppa_cond_exc_lt_un")
-MINI_OP(OP_HPPA_COND_EXC_OV, "hppa_cond_exc_ov")
-MINI_OP(OP_HPPA_COND_EXC_NO, "hppa_cond_exc_no")
-MINI_OP(OP_HPPA_COND_EXC_C, "hppa_cond_exc_c")
-MINI_OP(OP_HPPA_COND_EXC_NC, "hppa_cond_exc_nc")
-
-MINI_OP(OP_HPPA_XMPYU, "hppa_xmpyu")
-MINI_OP(OP_HPPA_ADD_OVF, "hppa_add_ovf")
-MINI_OP(OP_HPPA_SUB_OVF, "hppa_sub_ovf")
-MINI_OP(OP_HPPA_ADDC_OVF, "hppa_addc_ovf")
-MINI_OP(OP_HPPA_SUBB_OVF, "hppa_subb_ovf")
-
-MINI_OP(OP_HPPA_OUTARG_R4CONST, "hppa_outarg_r4const")
-MINI_OP(OP_HPPA_OUTARG_REGOFFSET, "hppa_outarg_regoffset")
-
-MINI_OP(OP_HPPA_LOADR4_LEFT, "hppa_loadr4_left")
-MINI_OP(OP_HPPA_LOADR4_RIGHT, "hppa_loadr4_right")
-MINI_OP(OP_HPPA_STORER4_LEFT, "hppa_storer4_left")
-MINI_OP(OP_HPPA_STORER4_RIGHT, "hppa_storer4_right")
-
-MINI_OP(OP_HPPA_SETF4REG, "hppa_setf4reg")
+MINI_OP(OP_HPPA_BEQ, "hppa_beq", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BGE, "hppa_bge", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BGT, "hppa_bgt", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BLE, "hppa_ble", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BLT, "hppa_blt", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BNE, "hppa_bne", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BGE_UN, "hppa_bge_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BGT_UN, "hppa_bgt_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BLE_UN, "hppa_ble_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_BLT_UN, "hppa_blt_un", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_CEQ, "hppa_ceq", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CGT, "hppa_cgt", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CGT_UN, "hppa_cgt_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CLT, "hppa_clt", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CLT_UN, "hppa_clt_un", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_CEQ_IMM, "hppa_ceq_imm", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CGT_IMM, "hppa_cgt_imm", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CGT_UN_IMM, "hppa_cgt_un_imm", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CLT_IMM, "hppa_clt_imm", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_CLT_UN_IMM, "hppa_clt_un_imm", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_COND_EXC_EQ, "hppa_cond_exc_eq", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_GE, "hppa_cond_exc_ge", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_GT, "hppa_cond_exc_gt", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_LE, "hppa_cond_exc_le", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_LT, "hppa_cond_exc_lt", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_NE_UN, "hppa_cond_exc_ne_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_GE_UN, "hppa_cond_exc_ge_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_GT_UN, "hppa_cond_exc_gt_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_LE_UN, "hppa_cond_exc_le_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_LT_UN, "hppa_cond_exc_lt_un", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_OV, "hppa_cond_exc_ov", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_NO, "hppa_cond_exc_no", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_C, "hppa_cond_exc_c", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_COND_EXC_NC, "hppa_cond_exc_nc", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_XMPYU, "hppa_xmpyu", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_ADD_OVF, "hppa_add_ovf", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_SUB_OVF, "hppa_sub_ovf", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_ADDC_OVF, "hppa_addc_ovf", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_SUBB_OVF, "hppa_subb_ovf", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_OUTARG_R4CONST, "hppa_outarg_r4const", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_OUTARG_REGOFFSET, "hppa_outarg_regoffset", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_LOADR4_LEFT, "hppa_loadr4_left", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_LOADR4_RIGHT, "hppa_loadr4_right", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_STORER4_LEFT, "hppa_storer4_left", NONE, NONE, NONE)
+MINI_OP(OP_HPPA_STORER4_RIGHT, "hppa_storer4_right", NONE, NONE, NONE)
+
+MINI_OP(OP_HPPA_SETF4REG, "hppa_setf4reg", NONE, NONE, NONE)
 #endif