2013-11-19 Catherine Moore <clm@codesourcery.com>
[deliverable/binutils-gdb.git] / opcodes / mips-opc.c
index fdc0088fc67d327c5b85402145266f071bb9bdd3..9fb2d9530870a7a487a46a76c289b2a8476fd36d 100644 (file)
@@ -71,25 +71,50 @@ decode_mips_operand (const char *p)
        case 'P': BIT (5, 6, 32);               /* (32 .. 63) */
        case 'Q': SINT (10, 6);
        case 'S': MSB (5, 11, 0, FALSE, 63);    /* (0 .. 31), 64-bit op */
+       case 'T': INT_ADJ (10, 16, 511, 0, FALSE); /* (-512 .. 511) << 0 */
+       case 'U': INT_ADJ (10, 16, 511, 1, FALSE); /* (-512 .. 511) << 1 */
+       case 'V': INT_ADJ (10, 16, 511, 2, FALSE); /* (-512 .. 511) << 2 */
+       case 'W': INT_ADJ (10, 16, 511, 3, FALSE); /* (-512 .. 511) << 3 */
        case 'X': BIT (5, 16, 32);              /* (32 .. 63) */
        case 'Z': REG (5, 0, FP);
 
        case 'a': SINT (8, 6);
        case 'b': SINT (8, 3);
        case 'c': INT_ADJ (9, 6, 255, 4, FALSE); /* (-256 .. 255) << 4 */
+       case 'd': REG (5, 6, MSA);
+       case 'e': REG (5, 11, MSA);
        case 'f': INT_ADJ (15, 6, 32767, 3, TRUE);
        case 'g': SINT (5, 6);
+       case 'h': REG (5, 16, MSA);
        case 'i': JALX (26, 0, 2);
        case 'j': SINT (9, 7);
+       case 'k': REG (5, 6, GP);
+       case 'l': REG (5, 6, MSA_CTRL);
        case 'm': REG (0, 0, R5900_ACC);
+       case 'n': REG (5, 11, MSA_CTRL);
+       case 'o': SPECIAL (5, 16, IMM_INDEX);
        case 'p': BIT (5, 6, 0);                /* (0 .. 31), 32-bit op */
        case 'q': REG (0, 0, R5900_Q);
        case 'r': REG (0, 0, R5900_R);
        case 's': MSB (5, 11, 0, FALSE, 31);    /* (0 .. 31) */
        case 't': REG (5, 16, COPRO);
+       case 'u': SPECIAL (4, 16, IMM_INDEX);
+       case 'v': SPECIAL (3, 16, IMM_INDEX);
+       case 'w': SPECIAL (2, 16, IMM_INDEX);
        case 'x': BIT (5, 16, 0);               /* (0 .. 31) */
        case 'y': REG (0, 0, R5900_I);
        case 'z': REG (5, 0, GP);
+
+       case '~': BIT (2, 6, 1);                /* (1 .. 4) */
+       case '!': BIT (3, 16, 0);               /* (0 .. 7) */
+       case '@': BIT (4, 16, 0);               /* (0 .. 15) */
+       case '#': BIT (6, 16, 0);               /* (0 .. 63) */
+       case '$': UINT (5, 16);                 /* (0 .. 31) */
+       case '%': SINT (5, 16);                 /* (-16 .. 15) */
+       case '^': SINT (10, 11);                /* (-512 .. 511) */
+       case '&': SPECIAL (0, 0, IMM_INDEX);
+       case '*': SPECIAL (5, 16, REG_INDEX);
+       case '|': BIT (8, 16, 0);               /* (0 .. 255) */
        }
       break;
 
@@ -134,8 +159,8 @@ decode_mips_operand (const char *p)
     case 'S': REG (5, 11, FP);
     case 'T': REG (5, 16, FP);
     case 'U': SPECIAL (10, 11, CLO_CLZ_DEST);
-    case 'V': REG (5, 11, FP);
-    case 'W': REG (5, 16, FP);
+    case 'V': OPTIONAL_REG (5, 11, FP);
+    case 'W': OPTIONAL_REG (5, 16, FP);
     case 'X': REG (5, 6, VEC);
     case 'Y': REG (5, 11, VEC);
     case 'Z': REG (5, 16, VEC);
@@ -153,12 +178,12 @@ decode_mips_operand (const char *p)
     case 'o': SINT (16, 0);
     case 'p': BRANCH (16, 0, 2);
     case 'q': HINT (10, 6);
-    case 'r': REG (5, 21, GP);
+    case 'r': OPTIONAL_REG (5, 21, GP);
     case 's': REG (5, 21, GP);
     case 't': REG (5, 16, GP);
     case 'u': HINT (16, 0);
-    case 'v': REG (5, 21, GP);
-    case 'w': REG (5, 16, GP);
+    case 'v': OPTIONAL_REG (5, 21, GP);
+    case 'w': OPTIONAL_REG (5, 16, GP);
     case 'x': REG (0, 0, GP);
     case 'z': MAPPED_REG (0, 0, GP, reg_0_map);
     }
@@ -167,15 +192,15 @@ decode_mips_operand (const char *p)
 
 /* Short hand so the lines aren't too long.  */
 
-#define LDD     INSN_LOAD_MEMORY_DELAY
 #define LCD    INSN_LOAD_COPROC_DELAY
 #define UBD     INSN_UNCOND_BRANCH_DELAY
 #define CBD    INSN_COND_BRANCH_DELAY
 #define COD     INSN_COPROC_MOVE_DELAY
-#define CLD    INSN_COPROC_MEMORY_DELAY
+#define CLD    (INSN_LOAD_MEMORY|INSN_COPROC_MEMORY_DELAY)
 #define CBL    INSN_COND_BRANCH_LIKELY
 #define NODS   INSN_NO_DELAY_SLOT
 #define TRAP   INSN_NO_DELAY_SLOT
+#define LM     INSN_LOAD_MEMORY
 #define SM     INSN_STORE_MEMORY
 
 #define WR_1   INSN_WRITE_1
@@ -332,6 +357,10 @@ decode_mips_operand (const char *p)
 /* TLB invalidate instruction support.  */
 #define TLBINV ASE_EVA
 
+/* MSA support.  */
+#define MSA    ASE_MSA
+#define MSA64  ASE_MSA64
+
 /* The order of overloaded instructions matters.  Label arguments and
    register arguments look the same. Instructions that can have either
    for arguments must apear in the correct order in this table for the
@@ -351,9 +380,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
    them first.  The assemblers uses a hash table based on the
    instruction name anyhow.  */
 /* name,               args,           match,      mask,       pinfo,                  pinfo2,         membership,     ase,    exclusions */
-{"pref",               "k,o(b)",       0xcc000000, 0xfc000000, RD_3,                   0,              I4_32|G3,       0,      0 },
+{"pref",               "k,o(b)",       0xcc000000, 0xfc000000, RD_3|LM,                0,              I4_32|G3,       0,      0 },
 {"pref",               "k,A(b)",       0,    (int) M_PREF_AB,  INSN_MACRO,             0,              I4_32|G3,       0,      0 },
-{"prefx",              "h,t(b)",       0x4c00000f, 0xfc0007ff, RD_2|RD_3|FP_S,         0,              I4_33,          0,      0 },
+{"prefx",              "h,t(b)",       0x4c00000f, 0xfc0007ff, RD_2|RD_3|FP_S|LM,              0,              I4_33,          0,      0 },
 {"nop",                        "",             0x00000000, 0xffffffff, 0,                      INSN2_ALIAS,    I1,             0,      0 }, /* sll */
 {"ssnop",              "",             0x00000040, 0xffffffff, 0,                      INSN2_ALIAS,    I1,             0,      0 }, /* sll */
 {"ehb",                        "",             0x000000c0, 0xffffffff, 0,                      INSN2_ALIAS,    I1,             0,      0 }, /* sll */
@@ -377,14 +406,14 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"ramri",              "d,s",          0x700000f5, 0xfc1f07ff, WR_1|RD_2,              0,              IL3A,           0,      0 },
 {"gsle",               "s,t",          0x70000026, 0xfc00ffff, RD_1|RD_2,              0,              IL3A,           0,      0 },
 {"gsgt",               "s,t",          0x70000027, 0xfc00ffff, RD_1|RD_2,              0,              IL3A,           0,      0 },
-{"gslble",             "t,b,d",        0xc8000010, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gslbgt",             "t,b,d",        0xc8000011, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gslhle",             "t,b,d",        0xc8000012, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gslhgt",             "t,b,d",        0xc8000013, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gslwle",             "t,b,d",        0xc8000014, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gslwgt",             "t,b,d",        0xc8000015, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gsldle",             "t,b,d",        0xc8000016, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gsldgt",             "t,b,d",        0xc8000017, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
+{"gslble",             "t,b,d",        0xc8000010, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gslbgt",             "t,b,d",        0xc8000011, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gslhle",             "t,b,d",        0xc8000012, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gslhgt",             "t,b,d",        0xc8000013, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gslwle",             "t,b,d",        0xc8000014, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gslwgt",             "t,b,d",        0xc8000015, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gsldle",             "t,b,d",        0xc8000016, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gsldgt",             "t,b,d",        0xc8000017, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
 {"gssble",             "t,b,d",        0xe8000010, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gssbgt",             "t,b,d",        0xe8000011, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gsshle",             "t,b,d",        0xe8000012, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
@@ -393,37 +422,37 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"gsswgt",             "t,b,d",        0xe8000015, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gssdle",             "t,b,d",        0xe8000016, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gssdgt",             "t,b,d",        0xe8000017, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
-{"gslwlec1",           "T,b,d",        0xc8000018, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gslwgtc1",           "T,b,d",        0xc8000019, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gsldlec1",           "T,b,d",        0xc800001a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
-{"gsldgtc1",           "T,b,d",        0xc800001b, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IL3A,           0,      0 },
+{"gslwlec1",           "T,b,d",        0xc8000018, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gslwgtc1",           "T,b,d",        0xc8000019, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gsldlec1",           "T,b,d",        0xc800001a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
+{"gsldgtc1",           "T,b,d",        0xc800001b, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IL3A,           0,      0 },
 {"gsswlec1",           "T,b,d",        0xe800001c, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gsswgtc1",           "T,b,d",        0xe800001d, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gssdlec1",           "T,b,d",        0xe800001e, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
 {"gssdgtc1",           "T,b,d",        0xe800001f, 0xfc0007ff, RD_1|RD_2|RD_3|SM,      0,              IL3A,           0,      0 },
-{"gslwlc1",            "T,+a(b)",      0xc8000004, 0xfc00c03f, WR_1|RD_3|LDD,          0,              IL3A,           0,      0 },
-{"gslwrc1",            "T,+a(b)",      0xc8000005, 0xfc00c03f, WR_1|RD_3|LDD,          0,              IL3A,           0,      0 },
-{"gsldlc1",            "T,+a(b)",      0xc8000006, 0xfc00c03f, WR_1|RD_3|LDD,          0,              IL3A,           0,      0 },
-{"gsldrc1",            "T,+a(b)",      0xc8000007, 0xfc00c03f, WR_1|RD_3|LDD,          0,              IL3A,           0,      0 },
+{"gslwlc1",            "T,+a(b)",      0xc8000004, 0xfc00c03f, WR_1|RD_3|LM,           0,              IL3A,           0,      0 },
+{"gslwrc1",            "T,+a(b)",      0xc8000005, 0xfc00c03f, WR_1|RD_3|LM,           0,              IL3A,           0,      0 },
+{"gsldlc1",            "T,+a(b)",      0xc8000006, 0xfc00c03f, WR_1|RD_3|LM,           0,              IL3A,           0,      0 },
+{"gsldrc1",            "T,+a(b)",      0xc8000007, 0xfc00c03f, WR_1|RD_3|LM,           0,              IL3A,           0,      0 },
 {"gsswlc1",            "T,+a(b)",      0xe8000004, 0xfc00c03f, RD_1|RD_3|SM,           0,              IL3A,           0,      0 },
 {"gsswrc1",            "T,+a(b)",      0xe8000005, 0xfc00c03f, RD_1|RD_3|SM,           0,              IL3A,           0,      0 },
 {"gssdlc1",            "T,+a(b)",      0xe8000006, 0xfc00c03f, RD_1|RD_3|SM,           0,              IL3A,           0,      0 },
 {"gssdrc1",            "T,+a(b)",      0xe8000007, 0xfc00c03f, RD_1|RD_3|SM,           0,              IL3A,           0,      0 },
-{"gslbx",              "t,+b(b,d)",    0xd8000000, 0xfc000007, WR_1|RD_3|RD_4|LDD,     0,              IL3A,           0,      0 },
-{"gslhx",              "t,+b(b,d)",    0xd8000001, 0xfc000007, WR_1|RD_3|RD_4|LDD,     0,              IL3A,           0,      0 },
-{"gslwx",              "t,+b(b,d)",    0xd8000002, 0xfc000007, WR_1|RD_3|RD_4|LDD,     0,              IL3A,           0,      0 },
-{"gsldx",              "t,+b(b,d)",    0xd8000003, 0xfc000007, WR_1|RD_3|RD_4|LDD,     0,              IL3A,           0,      0 },
+{"gslbx",              "t,+b(b,d)",    0xd8000000, 0xfc000007, WR_1|RD_3|RD_4|LM,      0,              IL3A,           0,      0 },
+{"gslhx",              "t,+b(b,d)",    0xd8000001, 0xfc000007, WR_1|RD_3|RD_4|LM,      0,              IL3A,           0,      0 },
+{"gslwx",              "t,+b(b,d)",    0xd8000002, 0xfc000007, WR_1|RD_3|RD_4|LM,      0,              IL3A,           0,      0 },
+{"gsldx",              "t,+b(b,d)",    0xd8000003, 0xfc000007, WR_1|RD_3|RD_4|LM,      0,              IL3A,           0,      0 },
 {"gssbx",              "t,+b(b,d)",    0xf8000000, 0xfc000007, RD_1|RD_3|RD_4|SM,      0,              IL3A,           0,      0 },
 {"gsshx",              "t,+b(b,d)",    0xf8000001, 0xfc000007, RD_1|RD_3|RD_4|SM,      0,              IL3A,           0,      0 },
 {"gsswx",              "t,+b(b,d)",    0xf8000002, 0xfc000007, RD_1|RD_3|RD_4|SM,      0,              IL3A,           0,      0 },
 {"gssdx",              "t,+b(b,d)",    0xf8000003, 0xfc000007, RD_1|RD_3|RD_4|SM,      0,              IL3A,           0,      0 },
-{"gslwxc1",            "T,+b(b,d)",    0xd8000006, 0xfc000007, WR_1|RD_3|RD_4|LDD,     0,              IL3A,           0,      0 },
-{"gsldxc1",            "T,+b(b,d)",    0xd8000007, 0xfc000007, WR_1|RD_3|RD_4|LDD,     0,              IL3A,           0,      0 },
+{"gslwxc1",            "T,+b(b,d)",    0xd8000006, 0xfc000007, WR_1|RD_3|RD_4|LM,      0,              IL3A,           0,      0 },
+{"gsldxc1",            "T,+b(b,d)",    0xd8000007, 0xfc000007, WR_1|RD_3|RD_4|LM,      0,              IL3A,           0,      0 },
 {"gsswxc1",            "T,+b(b,d)",    0xf8000006, 0xfc000007, RD_1|RD_3|RD_4|SM,      0,              IL3A,           0,      0 },
 {"gssdxc1",            "T,+b(b,d)",    0xf8000007, 0xfc000007, RD_1|RD_3|RD_4|SM,      0,              IL3A,           0,      0 },
-{"gslq",               "+z,t,+c(b)",   0xc8000020, 0xfc008020, WR_1|WR_2|RD_4|LDD,     0,              IL3A,           0,      0 },
+{"gslq",               "+z,t,+c(b)",   0xc8000020, 0xfc008020, WR_1|WR_2|RD_4|LM,      0,              IL3A,           0,      0 },
 {"gssq",               "+z,t,+c(b)",   0xe8000020, 0xfc008020, RD_1|RD_2|RD_4|SM,      0,              IL3A,           0,      0 },
-{"gslqc1",             "+Z,T,+c(b)",   0xc8008020, 0xfc008020, WR_1|WR_2|RD_4|LDD,     0,              IL3A,           0,      0 },
+{"gslqc1",             "+Z,T,+c(b)",   0xc8008020, 0xfc008020, WR_1|WR_2|RD_4|LM,      0,              IL3A,           0,      0 },
 {"gssqc1",             "+Z,T,+c(b)",   0xe8008020, 0xfc008020, RD_1|RD_2|RD_4|SM,      0,              IL3A,           0,      0 },
 
 /* R5900 VU0 Macromode instructions. */
@@ -445,6 +474,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"vcallms",            "+f",             0x4a000038, 0xffe0003f,       CP,             0,              VU0,            0,      0 },
 {"vcallmsr",           "+9",             0x4a000039, 0xffff07ff,       CP,             0,              VU0,            0,      0 },
 {"vclipw.xyz",         "+6+K,+7+N",      0x4bc001ff, 0xffe007ff,       CP,             0,              VU0,            0,      0 },
+{"vclipw",             "+6+K,+7+N",      0x4bc001ff, 0xffe007ff,       CP,             0,              VU0,            0,      0 },
 {"vdiv",               "+q,+6+L,+7+M",   0x4a0003bc, 0xfe0007ff,       CP,             0,              VU0,            0,      0 },
 {"vftoi0",             "+7+K,+6+K",      0x4a00017c, 0xfe0007ff,       CP,             VU0CH,          VU0,            0,      0 },
 {"vftoi4",             "+7+K,+6+K",      0x4a00017d, 0xfe0007ff,       CP,             VU0CH,          VU0,            0,      0 },
@@ -561,7 +591,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"abs.d",              "D,V",          0x46200005, 0xffff003f, WR_1|RD_2|FP_D,         0,              I1,             0,      SF },
 {"abs.ps",             "D,V",          0x46c00005, 0xffff003f, WR_1|RD_2|FP_D,         0,              I5_33|IL2F,     0,      0 },
 {"abs.ps",             "D,V",          0x45600005, 0xffff003f, WR_1|RD_2|FP_D,         0,              IL2E,           0,      0 },
-{"aclr",               "\\,~(b)",      0x04070000, 0xfc1f8000, RD_3|SM|NODS,           0,              0,              MC,     0 },
+{"aclr",               "\\,~(b)",      0x04070000, 0xfc1f8000, RD_3|LM|SM|NODS,        0,              0,              MC,     0 },
 {"aclr",               "\\,A(b)",      0,    (int) M_ACLR_AB,  INSN_MACRO,             0,              0,              MC,     0 },
 {"add",                        "d,v,t",        0x00000020, 0xfc0007ff, WR_1|RD_2|RD_3,         0,              I1,             0,      0 },
 {"add",                        "t,r,I",        0,    (int) M_ADD_I,    INSN_MACRO,             0,              I1,             0,      0 },
@@ -600,7 +630,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"and.ob",             "D,S,Q",        0x4800000c, 0xfc20003f, WR_1|RD_2|RD_3|FP_D,    0,              N54,            0,      0 },
 {"and.qh",             "X,Y,Q",        0x7820000c, 0xfc20003f, WR_1|RD_2|RD_3|FP_D,    0,              0,              MX,     0 },
 {"andi",               "t,r,i",        0x30000000, 0xfc000000, WR_1|RD_2,              0,              I1,             0,      0 },
-{"aset",               "\\,~(b)",      0x04078000, 0xfc1f8000, RD_3|SM|NODS,           0,              0,              MC,     0 },
+{"aset",               "\\,~(b)",      0x04078000, 0xfc1f8000, RD_3|LM|SM|NODS,        0,              0,              MC,     0 },
 {"aset",               "\\,A(b)",      0,    (int) M_ASET_AB,  INSN_MACRO,             0,              0,              MC,     0 },
 {"baddu",              "d,v,t",        0x70000028, 0xfc0007ff, WR_1|RD_2|RD_3,         0,              IOCT,           0,      0 },
 /* b is at the top of the table.  */
@@ -920,8 +950,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"dctr",               "o(b)",         0xbc050000, 0xfc1f0000, RD_2,                   0,              I3,             0,      0 },
 {"dctw",               "o(b)",         0xbc090000, 0xfc1f0000, RD_2,                   0,              I3,             0,      0 },
 {"deret",              "",             0x4200001f, 0xffffffff, NODS,                   0,              I32|G2,         0,      0 },
-{"dext",               "t,r,I,+I",     0,    (int) M_DEXT,     INSN_MACRO,             0,              I65,            0,      0 },
-{"dext",               "t,r,+A,+C",    0x7c000003, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
+{"dext",               "t,r,+A,+H",    0x7c000003, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
+{"dext",               "t,r,+A,+G",    0x7c000001, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 }, /* dextm */
+{"dext",               "t,r,+E,+H",    0x7c000002, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 }, /* dextu */
 {"dextm",              "t,r,+A,+G",    0x7c000001, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
 {"dextu",              "t,r,+E,+H",    0x7c000002, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
 /* For ddiv, see the comments about div.  */
@@ -935,8 +966,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"di",                 "",             0x42000039, 0xffffffff, WR_C0,                  0,              EE,             0,      0 },
 {"di",                 "",             0x41606000, 0xffffffff, WR_C0,                  0,              I33,            0,      0 },
 {"di",                 "t",            0x41606000, 0xffe0ffff, WR_1|WR_C0,             0,              I33,            0,      0 },
-{"dins",               "t,r,I,+I",     0,    (int) M_DINS,     INSN_MACRO,             0,              I65,            0,      0 },
 {"dins",               "t,r,+A,+B",    0x7c000007, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
+{"dins",               "t,r,+A,+F",    0x7c000005, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 }, /* dinsm */
+{"dins",               "t,r,+E,+F",    0x7c000006, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 }, /* dinsu */
 {"dinsm",              "t,r,+A,+F",    0x7c000005, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
 {"dinsu",              "t,r,+E,+F",    0x7c000006, 0xfc00003f, WR_1|RD_2,              0,              I65,            0,      0 },
 /* The MIPS assembler treats the div opcode with two operands as
@@ -1104,36 +1136,36 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"jal",                        "a",            0x0c000000, 0xfc000000, WR_31|UBD,              0,              I1,             0,      0 },
 {"jalx",               "+i",           0x74000000, 0xfc000000, WR_31|UBD,              0,              I1,             0,      0 },
 {"la",                 "t,A(b)",       0,    (int) M_LA_AB,    INSN_MACRO,             0,              I1,             0,      0 },
-{"laa",                        "d,(b),t",      0x7000049f, 0xfc0007ff, WR_1|RD_2|RD_3|LDD|SM,  0,              IOCT2,          0,      0 },
-{"laad",               "d,(b),t",      0x700004df, 0xfc0007ff, WR_1|RD_2|RD_3|LDD|SM,  0,              IOCT2,          0,      0 },
-{"lac",                        "d,(b)",        0x7000039f, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"lacd",               "d,(b)",        0x700003df, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"lad",                        "d,(b)",        0x7000019f, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"ladd",               "d,(b)",        0x700001df, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"lai",                        "d,(b)",        0x7000009f, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"laid",               "d,(b)",        0x700000df, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"las",                        "d,(b)",        0x7000029f, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"lasd",               "d,(b)",        0x700002df, 0xfc1f07ff, WR_1|RD_2|LDD|SM,       0,              IOCT2,          0,      0 },
-{"law",                        "d,(b),t",      0x7000059f, 0xfc0007ff, WR_1|RD_2|RD_3|LDD|SM,  0,              IOCT2,          0,      0 },
-{"lawd",               "d,(b),t",      0x700005df, 0xfc0007ff, WR_1|RD_2|RD_3|LDD|SM,  0,              IOCT2,          0,      0 },
-{"lb",                 "t,o(b)",       0x80000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"laa",                        "d,(b),t",      0x7000049f, 0xfc0007ff, WR_1|RD_2|RD_3|LM|SM,   0,              IOCT2,          0,      0 },
+{"laad",               "d,(b),t",      0x700004df, 0xfc0007ff, WR_1|RD_2|RD_3|LM|SM,   0,              IOCT2,          0,      0 },
+{"lac",                        "d,(b)",        0x7000039f, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"lacd",               "d,(b)",        0x700003df, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"lad",                        "d,(b)",        0x7000019f, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"ladd",               "d,(b)",        0x700001df, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"lai",                        "d,(b)",        0x7000009f, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"laid",               "d,(b)",        0x700000df, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"las",                        "d,(b)",        0x7000029f, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"lasd",               "d,(b)",        0x700002df, 0xfc1f07ff, WR_1|RD_2|LM|SM,        0,              IOCT2,          0,      0 },
+{"law",                        "d,(b),t",      0x7000059f, 0xfc0007ff, WR_1|RD_2|RD_3|LM|SM,   0,              IOCT2,          0,      0 },
+{"lawd",               "d,(b),t",      0x700005df, 0xfc0007ff, WR_1|RD_2|RD_3|LM|SM,   0,              IOCT2,          0,      0 },
+{"lb",                 "t,o(b)",       0x80000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lb",                 "t,A(b)",       0,    (int) M_LB_AB,    INSN_MACRO,             0,              I1,             0,      0 },
-{"lbu",                        "t,o(b)",       0x90000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"lbu",                        "t,o(b)",       0x90000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lbu",                        "t,A(b)",       0,    (int) M_LBU_AB,   INSN_MACRO,             0,              I1,             0,      0 },
-{"lbx",                        "d,t(b)",       0x7c00058a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          0,      0 },
-{"lbux",               "d,t(b)",       0x7c00018a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          D32,    0},
-{"ldx",                        "d,t(b)",       0x7c00020a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          D64,    0},
-{"lhx",                        "d,t(b)",       0x7c00010a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          D32,    0},
-{"lhux",               "d,t(b)",       0x7c00050a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          0,      0 },
-{"lwx",                        "d,t(b)",       0x7c00000a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          D32,    0},
-{"lwux",               "d,t(b)",       0x7c00040a, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,     0,              IOCT2,          0,      0 },
+{"lbx",                        "d,t(b)",       0x7c00058a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          0,      0 },
+{"lbux",               "d,t(b)",       0x7c00018a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          D32,    0},
+{"ldx",                        "d,t(b)",       0x7c00020a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          D64,    0},
+{"lhx",                        "d,t(b)",       0x7c00010a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          D32,    0},
+{"lhux",               "d,t(b)",       0x7c00050a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          0,      0 },
+{"lwx",                        "d,t(b)",       0x7c00000a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          D32,    0},
+{"lwux",               "d,t(b)",       0x7c00040a, 0xfc0007ff, WR_1|RD_2|RD_3|LM,      0,              IOCT2,          0,      0 },
 {"lca",                        "t,A(b)",       0,    (int) M_LCA_AB,   INSN_MACRO,             0,              I1,             0,      0 },
 /* The macro has to be first to handle o32 correctly.  */
 {"ld",                 "t,A(b)",       0,    (int) M_LD_AB,    INSN_MACRO,             0,              I1,             0,      0 },
-{"ld",                 "t,o(b)",       0xdc000000, 0xfc000000, WR_1|RD_3,              0,              I3,             0,      0 },
-{"ldaddw",             "t,b",          0x70000010, 0xfc00ffff, MOD_1|RD_2|SM,          0,              XLR,            0,      0 },
-{"ldaddwu",            "t,b",          0x70000011, 0xfc00ffff, MOD_1|RD_2|SM,          0,              XLR,            0,      0 },
-{"ldaddd",             "t,b",          0x70000012, 0xfc00ffff, MOD_1|RD_2|SM,          0,              XLR,            0,      0 },
+{"ld",                 "t,o(b)",       0xdc000000, 0xfc000000, WR_1|RD_3|LM,           0,              I3,             0,      0 },
+{"ldaddw",             "t,b",          0x70000010, 0xfc00ffff, MOD_1|RD_2|LM|SM,       0,              XLR,            0,      0 },
+{"ldaddwu",            "t,b",          0x70000011, 0xfc00ffff, MOD_1|RD_2|LM|SM,       0,              XLR,            0,      0 },
+{"ldaddd",             "t,b",          0x70000012, 0xfc00ffff, MOD_1|RD_2|LM|SM,       0,              XLR,            0,      0 },
 {"ldc1",               "T,o(b)",       0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D,     0,              I2,             0,      SF },
 {"ldc1",               "E,o(b)",       0xd4000000, 0xfc000000, WR_1|RD_3|CLD|FP_D,     0,              I2,             0,      SF },
 {"ldc1",               "T,A(b)",       0,    (int) M_LDC1_AB,  INSN_MACRO,             INSN2_M_FP_D,   I2,             0,      SF },
@@ -1144,31 +1176,31 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"ldc2",               "E,A(b)",       0,    (int) M_LDC2_AB,  INSN_MACRO,             0,              I2,             0,      IOCT|IOCTP|IOCT2|EE },
 {"ldc3",               "E,o(b)",       0xdc000000, 0xfc000000, RD_3|WR_CC|CLD,         0,              I2,             0,      IOCT|IOCTP|IOCT2|EE },
 {"ldc3",               "E,A(b)",       0,    (int) M_LDC3_AB,  INSN_MACRO,             0,              I2,             0,      IOCT|IOCTP|IOCT2|EE },
-{"ldl",                        "t,o(b)",       0x68000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I3,             0,      0 },
+{"ldl",                        "t,o(b)",       0x68000000, 0xfc000000, WR_1|RD_3|LM,           0,              I3,             0,      0 },
 {"ldl",                        "t,A(b)",       0,    (int) M_LDL_AB,   INSN_MACRO,             0,              I3,             0,      0 },
-{"ldr",                        "t,o(b)",       0x6c000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I3,             0,      0 },
+{"ldr",                        "t,o(b)",       0x6c000000, 0xfc000000, WR_1|RD_3|LM,           0,              I3,             0,      0 },
 {"ldr",                        "t,A(b)",       0,    (int) M_LDR_AB,   INSN_MACRO,             0,              I3,             0,      0 },
-{"ldxc1",              "D,t(b)",       0x4c000001, 0xfc00f83f, WR_1|RD_2|RD_3|LDD|FP_D, 0,             I4_33,          0,      0 },
-{"lh",                 "t,o(b)",       0x84000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"ldxc1",              "D,t(b)",       0x4c000001, 0xfc00f83f, WR_1|RD_2|RD_3|LM|FP_D, 0,              I4_33,          0,      0 },
+{"lh",                 "t,o(b)",       0x84000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lh",                 "t,A(b)",       0,    (int) M_LH_AB,    INSN_MACRO,             0,              I1,             0,      0 },
-{"lhu",                        "t,o(b)",       0x94000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"lhu",                        "t,o(b)",       0x94000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lhu",                        "t,A(b)",       0,    (int) M_LHU_AB,   INSN_MACRO,             0,              I1,             0,      0 },
 /* li is at the start of the table.  */
 {"li.d",               "t,F",          0,    (int) M_LI_D,     INSN_MACRO,             INSN2_M_FP_D,   I1,             0,      SF },
 {"li.d",               "T,L",          0,    (int) M_LI_DD,    INSN_MACRO,             INSN2_M_FP_D,   I1,             0,      SF },
 {"li.s",               "t,f",          0,    (int) M_LI_S,     INSN_MACRO,             INSN2_M_FP_S,   I1,             0,      0 },
 {"li.s",               "T,l",          0,    (int) M_LI_SS,    INSN_MACRO,             INSN2_M_FP_S,   I1,             0,      0 },
-{"ll",                 "t,o(b)",       0xc0000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I2,             0,      EE },
+{"ll",                 "t,o(b)",       0xc0000000, 0xfc000000, WR_1|RD_3|LM,           0,              I2,             0,      EE },
 {"ll",                 "t,A(b)",       0,    (int) M_LL_AB,    INSN_MACRO,             0,              I2,             0,      EE },
-{"lld",                        "t,o(b)",       0xd0000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I3,             0,      EE },
+{"lld",                        "t,o(b)",       0xd0000000, 0xfc000000, WR_1|RD_3|LM,           0,              I3,             0,      EE },
 {"lld",                        "t,A(b)",       0,    (int) M_LLD_AB,   INSN_MACRO,             0,              I3,             0,      EE },
-{"lq",                 "t,o(b)",       0x78000000, 0xfc000000, WR_1|RD_3,              0,              MMI,            0,      0 },
+{"lq",                 "t,o(b)",       0x78000000, 0xfc000000, WR_1|RD_3|LM,           0,              MMI,            0,      0 },
 {"lq",                 "t,A(b)",       0,    (int) M_LQ_AB,    INSN_MACRO,             0,              MMI,            0,      0 },
-{"lqc2",               "+7,o(b)",      0xd8000000, 0xfc000000, RD_3|WR_C2,             0,              EE,             0,      0 },
+{"lqc2",               "+7,o(b)",      0xd8000000, 0xfc000000, RD_3|WR_C2|LM,          0,              EE,             0,      0 },
 {"lqc2",               "+7,A(b)",      0,    (int) M_LQC2_AB,  INSN_MACRO,             0,              EE,             0,      0 },
 {"lui",                        "t,u",          0x3c000000, 0xffe00000, WR_1,                   0,              I1,             0,      0 },
-{"luxc1",              "D,t(b)",       0x4c000005, 0xfc00f83f, WR_1|RD_2|RD_3|LDD|FP_D, 0,             I5_33|N55,      0,      0},
-{"lw",                 "t,o(b)",       0x8c000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"luxc1",              "D,t(b)",       0x4c000005, 0xfc00f83f, WR_1|RD_2|RD_3|LM|FP_D, 0,              I5_33|N55,      0,      0},
+{"lw",                 "t,o(b)",       0x8c000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lw",                 "t,A(b)",       0,    (int) M_LW_AB,    INSN_MACRO,             0,              I1,             0,      0 },
 {"lwc0",               "E,o(b)",       0xc0000000, 0xfc000000, RD_3|WR_CC|CLD,         0,              I1,             0,      IOCT|IOCTP|IOCT2 },
 {"lwc0",               "E,A(b)",       0,    (int) M_LWC0_AB,  INSN_MACRO,             0,              I1,             0,      IOCT|IOCTP|IOCT2 },
@@ -1182,19 +1214,19 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"lwc2",               "E,A(b)",       0,    (int) M_LWC2_AB,  INSN_MACRO,             0,              I1,             0,      IOCT|IOCTP|IOCT2|EE },
 {"lwc3",               "E,o(b)",       0xcc000000, 0xfc000000, RD_3|WR_CC|CLD,         0,              I1,             0,      IOCT|IOCTP|IOCT2|EE },
 {"lwc3",               "E,A(b)",       0,    (int) M_LWC3_AB,  INSN_MACRO,             0,              I1,             0,      IOCT|IOCTP|IOCT2|EE },
-{"lwl",                        "t,o(b)",       0x88000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"lwl",                        "t,o(b)",       0x88000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lwl",                        "t,A(b)",       0,    (int) M_LWL_AB,   INSN_MACRO,             0,              I1,             0,      0 },
-{"lcache",             "t,o(b)",       0x88000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I2,             0,      0 }, /* same */
+{"lcache",             "t,o(b)",       0x88000000, 0xfc000000, WR_1|RD_3|LM,           0,              I2,             0,      0 }, /* same */
 {"lcache",             "t,A(b)",       0,    (int) M_LWL_AB,   INSN_MACRO,             0,              I2,             0,      0 }, /* as lwl */
-{"lwr",                        "t,o(b)",       0x98000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I1,             0,      0 },
+{"lwr",                        "t,o(b)",       0x98000000, 0xfc000000, WR_1|RD_3|LM,           0,              I1,             0,      0 },
 {"lwr",                        "t,A(b)",       0,    (int) M_LWR_AB,   INSN_MACRO,             0,              I1,             0,      0 },
-{"flush",              "t,o(b)",       0x98000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I2,             0,      0 }, /* same */
+{"flush",              "t,o(b)",       0x98000000, 0xfc000000, WR_1|RD_3|LM,           0,              I2,             0,      0 }, /* same */
 {"flush",              "t,A(b)",       0,    (int) M_LWR_AB,   INSN_MACRO,             0,              I2,             0,      0 }, /* as lwr */
 {"fork",               "d,s,t",        0x7c000008, 0xfc0007ff, WR_1|RD_2|RD_3|TRAP,    0,              0,              MT32,   0 },
-{"lwu",                        "t,o(b)",       0x9c000000, 0xfc000000, WR_1|RD_3|LDD,          0,              I3,             0,      0 },
+{"lwu",                        "t,o(b)",       0x9c000000, 0xfc000000, WR_1|RD_3|LM,           0,              I3,             0,      0 },
 {"lwu",                        "t,A(b)",       0,    (int) M_LWU_AB,   INSN_MACRO,             0,              I3,             0,      0 },
-{"lwxc1",              "D,t(b)",       0x4c000000, 0xfc00f83f, WR_1|RD_2|RD_3|LDD|FP_S,     0,         I4_33,          0,      0 },
-{"lwxs",               "d,t(b)",       0x70000088, 0xfc0007ff, WR_1|RD_2|RD_3|LDD,          0,         0,              SMT,    0 },
+{"lwxc1",              "D,t(b)",       0x4c000000, 0xfc00f83f, WR_1|RD_2|RD_3|LM|FP_S,     0,          I4_33,          0,      0 },
+{"lwxs",               "d,t(b)",       0x70000088, 0xfc0007ff, WR_1|RD_2|RD_3|LM,           0,         0,              SMT,    0 },
 {"macc",               "d,s,t",        0x00000028, 0xfc0007ff, WR_1|RD_2|RD_3|WR_HILO,      0,         N412,           0,      0 },
 {"macc",               "d,s,t",        0x00000158, 0xfc0007ff, WR_1|RD_2|RD_3|WR_HILO,      0,         N5,             0,      0 },
 {"maccs",              "d,s,t",        0x00000428, 0xfc0007ff, WR_1|RD_2|RD_3|WR_HILO,      0,         N412,           0,      0 },
@@ -1285,7 +1317,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"mflo",               "d,9",          0x00000012, 0xff9f07ff, WR_1|RD_LO,             0,              0,              D32,    0 },
 {"mflo1",              "d",            0x70000012, 0xffff07ff, WR_1|RD_LO,             0,              EE,             0,      0 },
 {"mflhxu",             "d",            0x00000052, 0xffff07ff, WR_1|MOD_HILO,          0,              0,              SMT,    0 },
-{"mfcr",               "t,s",          0x70000018, 0xfc00ffff, WR_1,                   0,              XLR,            0,      0 },
+{"mfcr",               "t,s",          0x70000018, 0xfc00ffff, WR_1|RD_2,              0,              XLR,            0,      0 },
 {"mfsa",               "d",            0x00000028, 0xffff07ff, WR_1,                   0,              EE,             0,      0 },
 {"min.ob",             "X,Y,Q",        0x78000006, 0xfc20003f, WR_1|RD_2|RD_3|FP_D,    0,              SB1,            MX,     0 },
 {"min.ob",             "D,S,Q",        0x48000006, 0xfc20003f, WR_1|RD_2|RD_3|FP_D,    0,              N54,            0,      0 },
@@ -1378,7 +1410,7 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"mtlo",               "s,7",          0x00000013, 0xfc1fe7ff, RD_1|WR_LO,             0,              0,              D32,    0 },
 {"mtlo1",              "s",            0x70000013, 0xfc1fffff, RD_1|WR_LO,             0,              EE,             0,      0 },
 {"mtlhx",              "s",            0x00000053, 0xfc1fffff, RD_1|MOD_HILO,          0,              0,              SMT,    0 },
-{"mtcr",               "t,s",          0x70000019, 0xfc00ffff, RD_1,                   0,              XLR,            0,      0 },
+{"mtcr",               "t,s",          0x70000019, 0xfc00ffff, RD_1|RD_2,              0,              XLR,            0,      0 },
 {"mtm0",               "s",            0x70000008, 0xfc1fffff, RD_1,                   0,              IOCT,           0,      0 },
 {"mtm1",               "s",            0x7000000c, 0xfc1fffff, RD_1,                   0,              IOCT,           0,      0 },
 {"mtm2",               "s",            0x7000000d, 0xfc1fffff, RD_1,                   0,              IOCT,           0,      0 },
@@ -1799,9 +1831,9 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"suxc1",              "S,t(b)",       0x4c00000d, 0xfc0007ff, RD_1|RD_2|RD_3|SM|FP_D, 0,              I5_33|N55,      0,      0},
 {"sw",                 "t,o(b)",       0xac000000, 0xfc000000, RD_1|RD_3|SM,           0,              I1,             0,      0 },
 {"sw",                 "t,A(b)",       0,    (int) M_SW_AB,    INSN_MACRO,             0,              I1,             0,      0 },
-{"swapw",              "t,b",          0x70000014, 0xfc00ffff, MOD_1|RD_2|SM,          0,              XLR,            0,      0 },
-{"swapwu",             "t,b",          0x70000015, 0xfc00ffff, MOD_1|RD_2|SM,          0,              XLR,            0,      0 },
-{"swapd",              "t,b",          0x70000016, 0xfc00ffff, MOD_1|RD_2|SM,          0,              XLR,            0,      0 },
+{"swapw",              "t,b",          0x70000014, 0xfc00ffff, MOD_1|RD_2|LM|SM,       0,              XLR,            0,      0 },
+{"swapwu",             "t,b",          0x70000015, 0xfc00ffff, MOD_1|RD_2|LM|SM,       0,              XLR,            0,      0 },
+{"swapd",              "t,b",          0x70000016, 0xfc00ffff, MOD_1|RD_2|LM|SM,       0,              XLR,            0,      0 },
 {"swc0",               "E,o(b)",       0xe0000000, 0xfc000000, RD_3|RD_C0|SM,          0,              I1,             0,      IOCT|IOCTP|IOCT2 },
 {"swc0",               "E,A(b)",       0,    (int) M_SWC0_AB,  INSN_MACRO,             0,              I1,             0,      IOCT|IOCTP|IOCT2 },
 {"swc1",               "T,o(b)",       0xe4000000, 0xfc000000, RD_1|RD_3|SM|FP_S,      0,              I1,             0,      0 },
@@ -2506,21 +2538,21 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"sequ",               "S,T",          0x46800032, 0xffe007ff, RD_1|RD_2|WR_CC|FP_D,   0,              IL2E,           0,      0 },
 {"sequ",               "S,T",          0x4b80000c, 0xffe007ff, RD_1|RD_2|WR_CC|FP_D,   0,              IL2F|IL3A,      0,      0 },
 /* MIPS Enhanced VA Scheme */
-{"lbue",               "t,+j(b)",      0x7c000028, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lbue",               "t,+j(b)",      0x7c000028, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lbue",               "t,A(b)",       0,    (int) M_LBUE_AB,  INSN_MACRO,             0,              0,              EVA,    0 },
-{"lhue",               "t,+j(b)",      0x7c000029, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lhue",               "t,+j(b)",      0x7c000029, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lhue",               "t,A(b)",       0,    (int) M_LHUE_AB,  INSN_MACRO,             0,              0,              EVA,    0 },
-{"lbe",                        "t,+j(b)",      0x7c00002c, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lbe",                        "t,+j(b)",      0x7c00002c, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lbe",                        "t,A(b)",       0,    (int) M_LBE_AB,   INSN_MACRO,             0,              0,              EVA,    0 },
-{"lhe",                        "t,+j(b)",      0x7c00002d, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lhe",                        "t,+j(b)",      0x7c00002d, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lhe",                        "t,A(b)",       0,    (int) M_LHE_AB,   INSN_MACRO,             0,              0,              EVA,    0 },
-{"lle",                        "t,+j(b)",      0x7c00002e, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lle",                        "t,+j(b)",      0x7c00002e, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lle",                        "t,A(b)",       0,    (int) M_LLE_AB,   INSN_MACRO,             0,              0,              EVA,    0 },
-{"lwe",                        "t,+j(b)",      0x7c00002f, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lwe",                        "t,+j(b)",      0x7c00002f, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lwe",                        "t,A(b)",       0,    (int) M_LWE_AB,   INSN_MACRO,             0,              0,              EVA,    0 },
-{"lwle",               "t,+j(b)",      0x7c000019, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lwle",               "t,+j(b)",      0x7c000019, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lwle",               "t,A(b)",       0,    (int) M_LWLE_AB,  INSN_MACRO,             0,              0,              EVA,    0 },
-{"lwre",               "t,+j(b)",      0x7c00001a, 0xfc00007f, WR_1|RD_3|LDD,          0,              0,              EVA,    0 },
+{"lwre",               "t,+j(b)",      0x7c00001a, 0xfc00007f, WR_1|RD_3|LM,           0,              0,              EVA,    0 },
 {"lwre",               "t,A(b)",       0,    (int) M_LWRE_AB,  INSN_MACRO,             0,              0,              EVA,    0 },
 {"sbe",                        "t,+j(b)",      0x7c00001c, 0xfc00007f, RD_1|RD_3|SM,           0,              0,              EVA,    0 },
 {"sbe",                        "t,A(b)",       0,    (int) M_SBE_AB,   INSN_MACRO,             0,              0,              EVA,    0 },
@@ -2538,6 +2570,539 @@ const struct mips_opcode mips_builtin_opcodes[] =
 {"cachee",             "k,A(b)",       0,    (int) M_CACHEE_AB,INSN_MACRO,             0,              0,              EVA,    0 },
 {"prefe",              "k,+j(b)",      0x7c000023, 0xfc00007f, RD_3,                   0,              0,              EVA,    0 },
 {"prefe",              "k,A(b)",       0,    (int) M_PREFE_AB, INSN_MACRO,             0,              0,              EVA,    0 },
+/* MSA Extension.  */
+{"sll.b",              "+d,+e,+h",     0x7800000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"sll.h",              "+d,+e,+h",     0x7820000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"sll.w",              "+d,+e,+h",     0x7840000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"sll.d",              "+d,+e,+h",     0x7860000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"slli.b",             "+d,+e,+!",     0x78700009, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"slli.h",             "+d,+e,+@",     0x78600009, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"slli.w",             "+d,+e,+x",     0x78400009, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"slli.d",             "+d,+e,+#",     0x78000009, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sra.b",              "+d,+e,+h",     0x7880000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"sra.h",              "+d,+e,+h",     0x78a0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"sra.w",              "+d,+e,+h",     0x78c0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"sra.d",              "+d,+e,+h",     0x78e0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srai.b",             "+d,+e,+!",     0x78f00009, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srai.h",             "+d,+e,+@",     0x78e00009, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srai.w",             "+d,+e,+x",     0x78c00009, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srai.d",             "+d,+e,+#",     0x78800009, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srl.b",              "+d,+e,+h",     0x7900000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srl.h",              "+d,+e,+h",     0x7920000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srl.w",              "+d,+e,+h",     0x7940000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srl.d",              "+d,+e,+h",     0x7960000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srli.b",             "+d,+e,+!",     0x79700009, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srli.h",             "+d,+e,+@",     0x79600009, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srli.w",             "+d,+e,+x",     0x79400009, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srli.d",             "+d,+e,+#",     0x79000009, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bclr.b",             "+d,+e,+h",     0x7980000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bclr.h",             "+d,+e,+h",     0x79a0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bclr.w",             "+d,+e,+h",     0x79c0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bclr.d",             "+d,+e,+h",     0x79e0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bclri.b",            "+d,+e,+!",     0x79f00009, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bclri.h",            "+d,+e,+@",     0x79e00009, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bclri.w",            "+d,+e,+x",     0x79c00009, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bclri.d",            "+d,+e,+#",     0x79800009, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bset.b",             "+d,+e,+h",     0x7a00000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bset.h",             "+d,+e,+h",     0x7a20000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bset.w",             "+d,+e,+h",     0x7a40000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bset.d",             "+d,+e,+h",     0x7a60000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bseti.b",            "+d,+e,+!",     0x7a700009, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bseti.h",            "+d,+e,+@",     0x7a600009, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bseti.w",            "+d,+e,+x",     0x7a400009, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bseti.d",            "+d,+e,+#",     0x7a000009, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bneg.b",             "+d,+e,+h",     0x7a80000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bneg.h",             "+d,+e,+h",     0x7aa0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bneg.w",             "+d,+e,+h",     0x7ac0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bneg.d",             "+d,+e,+h",     0x7ae0000d, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"bnegi.b",            "+d,+e,+!",     0x7af00009, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bnegi.h",            "+d,+e,+@",     0x7ae00009, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bnegi.w",            "+d,+e,+x",     0x7ac00009, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bnegi.d",            "+d,+e,+#",     0x7a800009, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"binsl.b",            "+d,+e,+h",     0x7b00000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsl.h",            "+d,+e,+h",     0x7b20000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsl.w",            "+d,+e,+h",     0x7b40000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsl.d",            "+d,+e,+h",     0x7b60000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsli.b",           "+d,+e,+!",     0x7b700009, 0xfff8003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsli.h",           "+d,+e,+@",     0x7b600009, 0xfff0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsli.w",           "+d,+e,+x",     0x7b400009, 0xffe0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsli.d",           "+d,+e,+#",     0x7b000009, 0xffc0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsr.b",            "+d,+e,+h",     0x7b80000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsr.h",            "+d,+e,+h",     0x7ba0000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsr.w",            "+d,+e,+h",     0x7bc0000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsr.d",            "+d,+e,+h",     0x7be0000d, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"binsri.b",           "+d,+e,+!",     0x7bf00009, 0xfff8003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsri.h",           "+d,+e,+@",     0x7be00009, 0xfff0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsri.w",           "+d,+e,+x",     0x7bc00009, 0xffe0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"binsri.d",           "+d,+e,+#",     0x7b800009, 0xffc0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"addv.b",             "+d,+e,+h",     0x7800000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"addv.h",             "+d,+e,+h",     0x7820000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"addv.w",             "+d,+e,+h",     0x7840000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"addv.d",             "+d,+e,+h",     0x7860000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"addvi.b",            "+d,+e,+$",     0x78000006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"addvi.h",            "+d,+e,+$",     0x78200006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"addvi.w",            "+d,+e,+$",     0x78400006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"addvi.d",            "+d,+e,+$",     0x78600006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"subv.b",             "+d,+e,+h",     0x7880000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subv.h",             "+d,+e,+h",     0x78a0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subv.w",             "+d,+e,+h",     0x78c0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subv.d",             "+d,+e,+h",     0x78e0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subvi.b",            "+d,+e,+$",     0x78800006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"subvi.h",            "+d,+e,+$",     0x78a00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"subvi.w",            "+d,+e,+$",     0x78c00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"subvi.d",            "+d,+e,+$",     0x78e00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"max_s.b",            "+d,+e,+h",     0x7900000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_s.h",            "+d,+e,+h",     0x7920000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_s.w",            "+d,+e,+h",     0x7940000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_s.d",            "+d,+e,+h",     0x7960000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"maxi_s.b",           "+d,+e,+%",     0x79000006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"maxi_s.h",           "+d,+e,+%",     0x79200006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"maxi_s.w",           "+d,+e,+%",     0x79400006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"maxi_s.d",           "+d,+e,+%",     0x79600006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"max_u.b",            "+d,+e,+h",     0x7980000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_u.h",            "+d,+e,+h",     0x79a0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_u.w",            "+d,+e,+h",     0x79c0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_u.d",            "+d,+e,+h",     0x79e0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"maxi_u.b",           "+d,+e,+$",     0x79800006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"maxi_u.h",           "+d,+e,+$",     0x79a00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"maxi_u.w",           "+d,+e,+$",     0x79c00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"maxi_u.d",           "+d,+e,+$",     0x79e00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"min_s.b",            "+d,+e,+h",     0x7a00000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_s.h",            "+d,+e,+h",     0x7a20000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_s.w",            "+d,+e,+h",     0x7a40000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_s.d",            "+d,+e,+h",     0x7a60000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mini_s.b",           "+d,+e,+%",     0x7a000006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"mini_s.h",           "+d,+e,+%",     0x7a200006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"mini_s.w",           "+d,+e,+%",     0x7a400006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"mini_s.d",           "+d,+e,+%",     0x7a600006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"min_u.b",            "+d,+e,+h",     0x7a80000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_u.h",            "+d,+e,+h",     0x7aa0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_u.w",            "+d,+e,+h",     0x7ac0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_u.d",            "+d,+e,+h",     0x7ae0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mini_u.b",           "+d,+e,+$",     0x7a800006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"mini_u.h",           "+d,+e,+$",     0x7aa00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"mini_u.w",           "+d,+e,+$",     0x7ac00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"mini_u.d",           "+d,+e,+$",     0x7ae00006, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"max_a.b",            "+d,+e,+h",     0x7b00000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_a.h",            "+d,+e,+h",     0x7b20000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_a.w",            "+d,+e,+h",     0x7b40000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"max_a.d",            "+d,+e,+h",     0x7b60000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_a.b",            "+d,+e,+h",     0x7b80000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_a.h",            "+d,+e,+h",     0x7ba0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_a.w",            "+d,+e,+h",     0x7bc0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"min_a.d",            "+d,+e,+h",     0x7be0000e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ceq.b",              "+d,+e,+h",     0x7800000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ceq.h",              "+d,+e,+h",     0x7820000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ceq.w",              "+d,+e,+h",     0x7840000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ceq.d",              "+d,+e,+h",     0x7860000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ceqi.b",             "+d,+e,+%",     0x78000007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ceqi.h",             "+d,+e,+%",     0x78200007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ceqi.w",             "+d,+e,+%",     0x78400007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ceqi.d",             "+d,+e,+%",     0x78600007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clt_s.b",            "+d,+e,+h",     0x7900000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clt_s.h",            "+d,+e,+h",     0x7920000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clt_s.w",            "+d,+e,+h",     0x7940000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clt_s.d",            "+d,+e,+h",     0x7960000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clti_s.b",           "+d,+e,+%",     0x79000007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clti_s.h",           "+d,+e,+%",     0x79200007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clti_s.w",           "+d,+e,+%",     0x79400007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clti_s.d",           "+d,+e,+%",     0x79600007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clt_u.b",            "+d,+e,+h",     0x7980000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clt_u.h",            "+d,+e,+h",     0x79a0000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clt_u.w",            "+d,+e,+h",     0x79c0000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clt_u.d",            "+d,+e,+h",     0x79e0000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clti_u.b",           "+d,+e,+$",     0x79800007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clti_u.h",           "+d,+e,+$",     0x79a00007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clti_u.w",           "+d,+e,+$",     0x79c00007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clti_u.d",           "+d,+e,+$",     0x79e00007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"cle_s.b",            "+d,+e,+h",     0x7a00000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"cle_s.h",            "+d,+e,+h",     0x7a20000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"cle_s.w",            "+d,+e,+h",     0x7a40000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"cle_s.d",            "+d,+e,+h",     0x7a60000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clei_s.b",           "+d,+e,+%",     0x7a000007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clei_s.h",           "+d,+e,+%",     0x7a200007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clei_s.w",           "+d,+e,+%",     0x7a400007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clei_s.d",           "+d,+e,+%",     0x7a600007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"cle_u.b",            "+d,+e,+h",     0x7a80000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"cle_u.h",            "+d,+e,+h",     0x7aa0000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"cle_u.w",            "+d,+e,+h",     0x7ac0000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"cle_u.d",            "+d,+e,+h",     0x7ae0000f, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"clei_u.b",           "+d,+e,+$",     0x7a800007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clei_u.h",           "+d,+e,+$",     0x7aa00007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clei_u.w",           "+d,+e,+$",     0x7ac00007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"clei_u.d",           "+d,+e,+$",     0x7ae00007, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ld.b",               "+d,+T(d)",     0x78000020, 0xfc00003f, WR_1|RD_3|LM,           0,              0,              MSA,    0 },
+{"ld.h",               "+d,+U(d)",     0x78000021, 0xfc00003f, WR_1|RD_3|LM,           0,              0,              MSA,    0 },
+{"ld.w",               "+d,+V(d)",     0x78000022, 0xfc00003f, WR_1|RD_3|LM,           0,              0,              MSA,    0 },
+{"ld.d",               "+d,+W(d)",     0x78000023, 0xfc00003f, WR_1|RD_3|LM,           0,              0,              MSA,    0 },
+{"st.b",               "+d,+T(d)",     0x78000024, 0xfc00003f, RD_1|RD_3|SM,           0,              0,              MSA,    0 },
+{"st.h",               "+d,+U(d)",     0x78000025, 0xfc00003f, RD_1|RD_3|SM,           0,              0,              MSA,    0 },
+{"st.w",               "+d,+V(d)",     0x78000026, 0xfc00003f, RD_1|RD_3|SM,           0,              0,              MSA,    0 },
+{"st.d",               "+d,+W(d)",     0x78000027, 0xfc00003f, RD_1|RD_3|SM,           0,              0,              MSA,    0 },
+{"sat_s.b",            "+d,+e,+!",     0x7870000a, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_s.h",            "+d,+e,+@",     0x7860000a, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_s.w",            "+d,+e,+x",     0x7840000a, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_s.d",            "+d,+e,+#",     0x7800000a, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_u.b",            "+d,+e,+!",     0x78f0000a, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_u.h",            "+d,+e,+@",     0x78e0000a, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_u.w",            "+d,+e,+x",     0x78c0000a, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"sat_u.d",            "+d,+e,+#",     0x7880000a, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"add_a.b",            "+d,+e,+h",     0x78000010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"add_a.h",            "+d,+e,+h",     0x78200010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"add_a.w",            "+d,+e,+h",     0x78400010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"add_a.d",            "+d,+e,+h",     0x78600010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_a.b",           "+d,+e,+h",     0x78800010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_a.h",           "+d,+e,+h",     0x78a00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_a.w",           "+d,+e,+h",     0x78c00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_a.d",           "+d,+e,+h",     0x78e00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_s.b",           "+d,+e,+h",     0x79000010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_s.h",           "+d,+e,+h",     0x79200010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_s.w",           "+d,+e,+h",     0x79400010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_s.d",           "+d,+e,+h",     0x79600010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_u.b",           "+d,+e,+h",     0x79800010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_u.h",           "+d,+e,+h",     0x79a00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_u.w",           "+d,+e,+h",     0x79c00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"adds_u.d",           "+d,+e,+h",     0x79e00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_s.b",            "+d,+e,+h",     0x7a000010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_s.h",            "+d,+e,+h",     0x7a200010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_s.w",            "+d,+e,+h",     0x7a400010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_s.d",            "+d,+e,+h",     0x7a600010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_u.b",            "+d,+e,+h",     0x7a800010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_u.h",            "+d,+e,+h",     0x7aa00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_u.w",            "+d,+e,+h",     0x7ac00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ave_u.d",            "+d,+e,+h",     0x7ae00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_s.b",           "+d,+e,+h",     0x7b000010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_s.h",           "+d,+e,+h",     0x7b200010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_s.w",           "+d,+e,+h",     0x7b400010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_s.d",           "+d,+e,+h",     0x7b600010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_u.b",           "+d,+e,+h",     0x7b800010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_u.h",           "+d,+e,+h",     0x7ba00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_u.w",           "+d,+e,+h",     0x7bc00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"aver_u.d",           "+d,+e,+h",     0x7be00010, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_s.b",           "+d,+e,+h",     0x78000011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_s.h",           "+d,+e,+h",     0x78200011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_s.w",           "+d,+e,+h",     0x78400011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_s.d",           "+d,+e,+h",     0x78600011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_u.b",           "+d,+e,+h",     0x78800011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_u.h",           "+d,+e,+h",     0x78a00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_u.w",           "+d,+e,+h",     0x78c00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subs_u.d",           "+d,+e,+h",     0x78e00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsus_u.b",         "+d,+e,+h",     0x79000011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsus_u.h",         "+d,+e,+h",     0x79200011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsus_u.w",         "+d,+e,+h",     0x79400011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsus_u.d",         "+d,+e,+h",     0x79600011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsuu_s.b",         "+d,+e,+h",     0x79800011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsuu_s.h",         "+d,+e,+h",     0x79a00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsuu_s.w",         "+d,+e,+h",     0x79c00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"subsuu_s.d",         "+d,+e,+h",     0x79e00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_s.b",           "+d,+e,+h",     0x7a000011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_s.h",           "+d,+e,+h",     0x7a200011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_s.w",           "+d,+e,+h",     0x7a400011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_s.d",           "+d,+e,+h",     0x7a600011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_u.b",           "+d,+e,+h",     0x7a800011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_u.h",           "+d,+e,+h",     0x7aa00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_u.w",           "+d,+e,+h",     0x7ac00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"asub_u.d",           "+d,+e,+h",     0x7ae00011, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mulv.b",             "+d,+e,+h",     0x78000012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mulv.h",             "+d,+e,+h",     0x78200012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mulv.w",             "+d,+e,+h",     0x78400012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mulv.d",             "+d,+e,+h",     0x78600012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"maddv.b",            "+d,+e,+h",     0x78800012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"maddv.h",            "+d,+e,+h",     0x78a00012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"maddv.w",            "+d,+e,+h",     0x78c00012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"maddv.d",            "+d,+e,+h",     0x78e00012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msubv.b",            "+d,+e,+h",     0x79000012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msubv.h",            "+d,+e,+h",     0x79200012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msubv.w",            "+d,+e,+h",     0x79400012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msubv.d",            "+d,+e,+h",     0x79600012, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"div_s.b",            "+d,+e,+h",     0x7a000012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_s.h",            "+d,+e,+h",     0x7a200012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_s.w",            "+d,+e,+h",     0x7a400012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_s.d",            "+d,+e,+h",     0x7a600012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_u.b",            "+d,+e,+h",     0x7a800012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_u.h",            "+d,+e,+h",     0x7aa00012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_u.w",            "+d,+e,+h",     0x7ac00012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"div_u.d",            "+d,+e,+h",     0x7ae00012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_s.b",            "+d,+e,+h",     0x7b000012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_s.h",            "+d,+e,+h",     0x7b200012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_s.w",            "+d,+e,+h",     0x7b400012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_s.d",            "+d,+e,+h",     0x7b600012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_u.b",            "+d,+e,+h",     0x7b800012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_u.h",            "+d,+e,+h",     0x7ba00012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_u.w",            "+d,+e,+h",     0x7bc00012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mod_u.d",            "+d,+e,+h",     0x7be00012, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dotp_s.h",           "+d,+e,+h",     0x78200013, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dotp_s.w",           "+d,+e,+h",     0x78400013, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dotp_s.d",           "+d,+e,+h",     0x78600013, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dotp_u.h",           "+d,+e,+h",     0x78a00013, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dotp_u.w",           "+d,+e,+h",     0x78c00013, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dotp_u.d",           "+d,+e,+h",     0x78e00013, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dpadd_s.h",          "+d,+e,+h",     0x79200013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpadd_s.w",          "+d,+e,+h",     0x79400013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpadd_s.d",          "+d,+e,+h",     0x79600013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpadd_u.h",          "+d,+e,+h",     0x79a00013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpadd_u.w",          "+d,+e,+h",     0x79c00013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpadd_u.d",          "+d,+e,+h",     0x79e00013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpsub_s.h",          "+d,+e,+h",     0x7a200013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpsub_s.w",          "+d,+e,+h",     0x7a400013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpsub_s.d",          "+d,+e,+h",     0x7a600013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpsub_u.h",          "+d,+e,+h",     0x7aa00013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpsub_u.w",          "+d,+e,+h",     0x7ac00013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"dpsub_u.d",          "+d,+e,+h",     0x7ae00013, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"sld.b",              "+d,+e+*",      0x78000014, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"sld.h",              "+d,+e+*",      0x78200014, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"sld.w",              "+d,+e+*",      0x78400014, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"sld.d",              "+d,+e+*",      0x78600014, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"sldi.b",             "+d,+e+o",      0x78000019, 0xffe0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"sldi.h",             "+d,+e+u",      0x78200019, 0xfff0003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"sldi.w",             "+d,+e+v",      0x78300019, 0xfff8003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"sldi.d",             "+d,+e+w",      0x78380019, 0xfffc003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"splat.b",            "+d,+e+*",      0x78800014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"splat.h",            "+d,+e+*",      0x78a00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"splat.w",            "+d,+e+*",      0x78c00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"splat.d",            "+d,+e+*",      0x78e00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"splati.b",           "+d,+e+o",      0x78400019, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"splati.h",           "+d,+e+u",      0x78600019, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"splati.w",           "+d,+e+v",      0x78700019, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"splati.d",           "+d,+e+w",      0x78780019, 0xfffc003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"pckev.b",            "+d,+e,+h",     0x79000014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckev.h",            "+d,+e,+h",     0x79200014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckev.w",            "+d,+e,+h",     0x79400014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckev.d",            "+d,+e,+h",     0x79600014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckod.b",            "+d,+e,+h",     0x79800014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckod.h",            "+d,+e,+h",     0x79a00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckod.w",            "+d,+e,+h",     0x79c00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"pckod.d",            "+d,+e,+h",     0x79e00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvl.b",             "+d,+e,+h",     0x7a000014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvl.h",             "+d,+e,+h",     0x7a200014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvl.w",             "+d,+e,+h",     0x7a400014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvl.d",             "+d,+e,+h",     0x7a600014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvr.b",             "+d,+e,+h",     0x7a800014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvr.h",             "+d,+e,+h",     0x7aa00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvr.w",             "+d,+e,+h",     0x7ac00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvr.d",             "+d,+e,+h",     0x7ae00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvev.b",            "+d,+e,+h",     0x7b000014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvev.h",            "+d,+e,+h",     0x7b200014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvev.w",            "+d,+e,+h",     0x7b400014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvev.d",            "+d,+e,+h",     0x7b600014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvod.b",            "+d,+e,+h",     0x7b800014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvod.h",            "+d,+e,+h",     0x7ba00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvod.w",            "+d,+e,+h",     0x7bc00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ilvod.d",            "+d,+e,+h",     0x7be00014, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"vshf.b",             "+d,+e,+h",     0x78000015, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"vshf.h",             "+d,+e,+h",     0x78200015, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"vshf.w",             "+d,+e,+h",     0x78400015, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"vshf.d",             "+d,+e,+h",     0x78600015, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"srar.b",             "+d,+e,+h",     0x78800015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srar.h",             "+d,+e,+h",     0x78a00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srar.w",             "+d,+e,+h",     0x78c00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srar.d",             "+d,+e,+h",     0x78e00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srari.b",            "+d,+e,+!",     0x7970000a, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srari.h",            "+d,+e,+@",     0x7960000a, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srari.w",            "+d,+e,+x",     0x7940000a, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srari.d",            "+d,+e,+#",     0x7900000a, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srlr.b",             "+d,+e,+h",     0x79000015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srlr.h",             "+d,+e,+h",     0x79200015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srlr.w",             "+d,+e,+h",     0x79400015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srlr.d",             "+d,+e,+h",     0x79600015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"srlri.b",            "+d,+e,+!",     0x79f0000a, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srlri.h",            "+d,+e,+@",     0x79e0000a, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srlri.w",            "+d,+e,+x",     0x79c0000a, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"srlri.d",            "+d,+e,+#",     0x7980000a, 0xffc0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"hadd_s.h",           "+d,+e,+h",     0x7a200015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hadd_s.w",           "+d,+e,+h",     0x7a400015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hadd_s.d",           "+d,+e,+h",     0x7a600015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hadd_u.h",           "+d,+e,+h",     0x7aa00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hadd_u.w",           "+d,+e,+h",     0x7ac00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hadd_u.d",           "+d,+e,+h",     0x7ae00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hsub_s.h",           "+d,+e,+h",     0x7b200015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hsub_s.w",           "+d,+e,+h",     0x7b400015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hsub_s.d",           "+d,+e,+h",     0x7b600015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hsub_u.h",           "+d,+e,+h",     0x7ba00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hsub_u.w",           "+d,+e,+h",     0x7bc00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"hsub_u.d",           "+d,+e,+h",     0x7be00015, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"and.v",              "+d,+e,+h",     0x7800001e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"andi.b",             "+d,+e,+|",     0x78000000, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"or.v",               "+d,+e,+h",     0x7820001e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ori.b",              "+d,+e,+|",     0x79000000, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nor.v",              "+d,+e,+h",     0x7840001e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"nori.b",             "+d,+e,+|",     0x7a000000, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"xor.v",              "+d,+e,+h",     0x7860001e, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"xori.b",             "+d,+e,+|",     0x7b000000, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bmnz.v",             "+d,+e,+h",     0x7880001e, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"bmnzi.b",            "+d,+e,+|",     0x78000001, 0xff00003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"bmz.v",              "+d,+e,+h",     0x78a0001e, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"bmzi.b",             "+d,+e,+|",     0x79000001, 0xff00003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"bsel.v",             "+d,+e,+h",     0x78c0001e, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"bseli.b",            "+d,+e,+|",     0x7a000001, 0xff00003f, MOD_1|RD_2,             0,              0,              MSA,    0 },
+{"shf.b",              "+d,+e,+|",     0x78000002, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"shf.h",              "+d,+e,+|",     0x79000002, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"shf.w",              "+d,+e,+|",     0x7a000002, 0xff00003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"bnz.v",              "+h,p",         0x45e00000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bz.v",               "+h,p",         0x45600000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"fill.b",             "+d,d",         0x7b00001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fill.h",             "+d,d",         0x7b01001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fill.w",             "+d,d",         0x7b02001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fill.d",             "+d,d",         0x7b03001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA64,  0 },
+{"pcnt.b",             "+d,+e",        0x7b04001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"pcnt.h",             "+d,+e",        0x7b05001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"pcnt.w",             "+d,+e",        0x7b06001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"pcnt.d",             "+d,+e",        0x7b07001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nloc.b",             "+d,+e",        0x7b08001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nloc.h",             "+d,+e",        0x7b09001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nloc.w",             "+d,+e",        0x7b0a001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nloc.d",             "+d,+e",        0x7b0b001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nlzc.b",             "+d,+e",        0x7b0c001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nlzc.h",             "+d,+e",        0x7b0d001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nlzc.w",             "+d,+e",        0x7b0e001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"nlzc.d",             "+d,+e",        0x7b0f001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_s.b",           "+k,+e+o",      0x78800019, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_s.h",           "+k,+e+u",      0x78a00019, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_s.w",           "+k,+e+v",      0x78b00019, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_s.d",           "+k,+e+w",      0x78b80019, 0xfffc003f, WR_1|RD_2,              0,              0,              MSA64,  0 },
+{"copy_u.b",           "+k,+e+o",      0x78c00019, 0xffe0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_u.h",           "+k,+e+u",      0x78e00019, 0xfff0003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_u.w",           "+k,+e+v",      0x78f00019, 0xfff8003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"copy_u.d",           "+k,+e+w",      0x78f80019, 0xfffc003f, WR_1|RD_2,              0,              0,              MSA64,  0 },
+{"insert.b",           "+d+o,d",       0x79000019, 0xffe0003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"insert.h",           "+d+u,d",       0x79200019, 0xfff0003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"insert.w",           "+d+v,d",       0x79300019, 0xfff8003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"insert.d",           "+d+w,d",       0x79380019, 0xfffc003f, MOD_1|RD_3,             0,              0,              MSA64,  0 },
+{"insve.b",            "+d+o,+e+&",    0x79400019, 0xffe0003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"insve.h",            "+d+u,+e+&",    0x79600019, 0xfff0003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"insve.w",            "+d+v,+e+&",    0x79700019, 0xfff8003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"insve.d",            "+d+w,+e+&",    0x79780019, 0xfffc003f, MOD_1|RD_3,             0,              0,              MSA,    0 },
+{"bnz.b",              "+h,p",         0x47800000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bnz.h",              "+h,p",         0x47a00000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bnz.w",              "+h,p",         0x47c00000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bnz.d",              "+h,p",         0x47e00000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bz.b",               "+h,p",         0x47000000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bz.h",               "+h,p",         0x47200000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bz.w",               "+h,p",         0x47400000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"bz.d",               "+h,p",         0x47600000, 0xffe00000, RD_1|CBD,               0,              0,              MSA,    0 },
+{"ldi.b",              "+d,+^",        0x7b000007, 0xffe0003f, WR_1,                   0,              0,              MSA,    0 },
+{"ldi.h",              "+d,+^",        0x7b200007, 0xffe0003f, WR_1,                   0,              0,              MSA,    0 },
+{"ldi.w",              "+d,+^",        0x7b400007, 0xffe0003f, WR_1,                   0,              0,              MSA,    0 },
+{"ldi.d",              "+d,+^",        0x7b600007, 0xffe0003f, WR_1,                   0,              0,              MSA,    0 },
+{"fcaf.w",             "+d,+e,+h",     0x7800001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcaf.d",             "+d,+e,+h",     0x7820001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcun.w",             "+d,+e,+h",     0x7840001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcun.d",             "+d,+e,+h",     0x7860001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fceq.w",             "+d,+e,+h",     0x7880001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fceq.d",             "+d,+e,+h",     0x78a0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcueq.w",            "+d,+e,+h",     0x78c0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcueq.d",            "+d,+e,+h",     0x78e0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fclt.w",             "+d,+e,+h",     0x7900001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fclt.d",             "+d,+e,+h",     0x7920001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcult.w",            "+d,+e,+h",     0x7940001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcult.d",            "+d,+e,+h",     0x7960001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcle.w",             "+d,+e,+h",     0x7980001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcle.d",             "+d,+e,+h",     0x79a0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcule.w",            "+d,+e,+h",     0x79c0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcule.d",            "+d,+e,+h",     0x79e0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsaf.w",             "+d,+e,+h",     0x7a00001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsaf.d",             "+d,+e,+h",     0x7a20001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsun.w",             "+d,+e,+h",     0x7a40001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsun.d",             "+d,+e,+h",     0x7a60001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fseq.w",             "+d,+e,+h",     0x7a80001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fseq.d",             "+d,+e,+h",     0x7aa0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsueq.w",            "+d,+e,+h",     0x7ac0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsueq.d",            "+d,+e,+h",     0x7ae0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fslt.w",             "+d,+e,+h",     0x7b00001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fslt.d",             "+d,+e,+h",     0x7b20001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsult.w",            "+d,+e,+h",     0x7b40001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsult.d",            "+d,+e,+h",     0x7b60001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsle.w",             "+d,+e,+h",     0x7b80001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsle.d",             "+d,+e,+h",     0x7ba0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsule.w",            "+d,+e,+h",     0x7bc0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsule.d",            "+d,+e,+h",     0x7be0001a, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fadd.w",             "+d,+e,+h",     0x7800001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fadd.d",             "+d,+e,+h",     0x7820001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsub.w",             "+d,+e,+h",     0x7840001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsub.d",             "+d,+e,+h",     0x7860001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmul.w",             "+d,+e,+h",     0x7880001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmul.d",             "+d,+e,+h",     0x78a0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fdiv.w",             "+d,+e,+h",     0x78c0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fdiv.d",             "+d,+e,+h",     0x78e0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmadd.w",            "+d,+e,+h",     0x7900001b, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"fmadd.d",            "+d,+e,+h",     0x7920001b, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"fmsub.w",            "+d,+e,+h",     0x7940001b, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"fmsub.d",            "+d,+e,+h",     0x7960001b, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"fexp2.w",            "+d,+e,+h",     0x79c0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fexp2.d",            "+d,+e,+h",     0x79e0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fexdo.h",            "+d,+e,+h",     0x7a00001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fexdo.w",            "+d,+e,+h",     0x7a20001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ftq.h",              "+d,+e,+h",     0x7a80001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"ftq.w",              "+d,+e,+h",     0x7aa0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmin.w",             "+d,+e,+h",     0x7b00001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmin.d",             "+d,+e,+h",     0x7b20001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmin_a.w",           "+d,+e,+h",     0x7b40001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmin_a.d",           "+d,+e,+h",     0x7b60001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmax.w",             "+d,+e,+h",     0x7b80001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmax.d",             "+d,+e,+h",     0x7ba0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmax_a.w",           "+d,+e,+h",     0x7bc0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fmax_a.d",           "+d,+e,+h",     0x7be0001b, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcor.w",             "+d,+e,+h",     0x7840001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcor.d",             "+d,+e,+h",     0x7860001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcune.w",            "+d,+e,+h",     0x7880001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcune.d",            "+d,+e,+h",     0x78a0001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcne.w",             "+d,+e,+h",     0x78c0001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fcne.d",             "+d,+e,+h",     0x78e0001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mul_q.h",            "+d,+e,+h",     0x7900001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mul_q.w",            "+d,+e,+h",     0x7920001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"madd_q.h",           "+d,+e,+h",     0x7940001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"madd_q.w",           "+d,+e,+h",     0x7960001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msub_q.h",           "+d,+e,+h",     0x7980001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msub_q.w",           "+d,+e,+h",     0x79a0001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"fsor.w",             "+d,+e,+h",     0x7a40001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsor.d",             "+d,+e,+h",     0x7a60001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsune.w",            "+d,+e,+h",     0x7a80001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsune.d",            "+d,+e,+h",     0x7aa0001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsne.w",             "+d,+e,+h",     0x7ac0001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"fsne.d",             "+d,+e,+h",     0x7ae0001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mulr_q.h",           "+d,+e,+h",     0x7b00001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"mulr_q.w",           "+d,+e,+h",     0x7b20001c, 0xffe0003f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"maddr_q.h",          "+d,+e,+h",     0x7b40001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"maddr_q.w",          "+d,+e,+h",     0x7b60001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msubr_q.h",          "+d,+e,+h",     0x7b80001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"msubr_q.w",          "+d,+e,+h",     0x7ba0001c, 0xffe0003f, MOD_1|RD_2|RD_3,        0,              0,              MSA,    0 },
+{"fclass.w",           "+d,+e",        0x7b20001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fclass.d",           "+d,+e",        0x7b21001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftrunc_s.w",         "+d,+e",        0x7b22001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftrunc_s.d",         "+d,+e",        0x7b23001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftrunc_u.w",         "+d,+e",        0x7b24001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftrunc_u.d",         "+d,+e",        0x7b25001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fsqrt.w",            "+d,+e",        0x7b26001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fsqrt.d",            "+d,+e",        0x7b27001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"frsqrt.w",           "+d,+e",        0x7b28001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"frsqrt.d",           "+d,+e",        0x7b29001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"frcp.w",             "+d,+e",        0x7b2a001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"frcp.d",             "+d,+e",        0x7b2b001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"frint.w",            "+d,+e",        0x7b2c001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"frint.d",            "+d,+e",        0x7b2d001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"flog2.w",            "+d,+e",        0x7b2e001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"flog2.d",            "+d,+e",        0x7b2f001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fexupl.w",           "+d,+e",        0x7b30001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fexupl.d",           "+d,+e",        0x7b31001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fexupr.w",           "+d,+e",        0x7b32001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"fexupr.d",           "+d,+e",        0x7b33001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffql.w",             "+d,+e",        0x7b34001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffql.d",             "+d,+e",        0x7b35001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffqr.w",             "+d,+e",        0x7b36001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffqr.d",             "+d,+e",        0x7b37001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftint_s.w",          "+d,+e",        0x7b38001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftint_s.d",          "+d,+e",        0x7b39001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftint_u.w",          "+d,+e",        0x7b3a001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ftint_u.d",          "+d,+e",        0x7b3b001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffint_s.w",          "+d,+e",        0x7b3c001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffint_s.d",          "+d,+e",        0x7b3d001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffint_u.w",          "+d,+e",        0x7b3e001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ffint_u.d",          "+d,+e",        0x7b3f001e, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"ctcmsa",             "+l,d",         0x783e0019, 0xffff003f, RD_2|COD,               0,              0,              MSA,    0 },
+{"cfcmsa",             "+k,+n",        0x787e0019, 0xffff003f, WR_1|COD,               0,              0,              MSA,    0 },
+{"move.v",             "+d,+e",        0x78be0019, 0xffff003f, WR_1|RD_2,              0,              0,              MSA,    0 },
+{"lsa",                        "d,v,t,+~",     0x00000005, 0xfc00073f, WR_1|RD_2|RD_3,         0,              0,              MSA,    0 },
+{"dlsa",               "d,v,t,+~",     0x00000015, 0xfc00073f, WR_1|RD_2|RD_3,         0,              0,              MSA64,  0 },
 /* No hazard protection on coprocessor instructions--they shouldn't
    change the state of the processor and if they do it's up to the
    user to put in nops as necessary.  These are at the end so that the
This page took 0.0647 seconds and 4 git commands to generate.