-{"nop", "", 0x6500, 0xffff, RD_Z, 0, 0 }, /* move $0,$Z */
-{"la", "x,A", 0x0800, 0xf800, WR_x|RD_PC, 0, 0 },
-{"abs", "x,w", 0, (int) M_ABS, INSN_MACRO, 0, 0 },
-{"addiu", "y,x,4", 0x4000, 0xf810, WR_y|RD_x, 0, 0 },
-{"addiu", "x,k", 0x4800, 0xf800, WR_x|RD_x, 0, 0 },
-{"addiu", "S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, 0 },
-{"addiu", "S,S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, 0 },
-{"addiu", "x,P,V", 0x0800, 0xf800, WR_x|RD_PC, 0, 0 },
-{"addiu", "x,S,V", 0x0000, 0xf800, WR_x|RD_SP, 0, 0 },
-{"addu", "z,v,y", 0xe001, 0xf803, WR_z|RD_x|RD_y, 0, 0 },
-{"addu", "y,x,4", 0x4000, 0xf810, WR_y|RD_x, 0, 0 },
-{"addu", "x,k", 0x4800, 0xf800, WR_x|RD_x, 0, 0 },
-{"addu", "S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, 0 },
-{"addu", "S,S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, 0 },
-{"addu", "x,P,V", 0x0800, 0xf800, WR_x|RD_PC, 0, 0 },
-{"addu", "x,S,V", 0x0000, 0xf800, WR_x|RD_SP, 0, 0 },
-{"and", "x,y", 0xe80c, 0xf81f, WR_x|RD_x|RD_y, 0, 0 },
-{"b", "q", 0x1000, 0xf800, BR, 0, 0 },
-{"beq", "x,y,p", 0, (int) M_BEQ, INSN_MACRO, 0, 0 },
-{"beq", "x,U,p", 0, (int) M_BEQ_I, INSN_MACRO, 0, 0 },
-{"beqz", "x,p", 0x2000, 0xf800, BR|RD_x, 0, 0 },
-{"bge", "x,y,p", 0, (int) M_BGE, INSN_MACRO, 0, 0 },
-{"bge", "x,8,p", 0, (int) M_BGE_I, INSN_MACRO, 0, 0 },
-{"bgeu", "x,y,p", 0, (int) M_BGEU, INSN_MACRO, 0, 0 },
-{"bgeu", "x,8,p", 0, (int) M_BGEU_I, INSN_MACRO, 0, 0 },
-{"bgt", "x,y,p", 0, (int) M_BGT, INSN_MACRO, 0, 0 },
-{"bgt", "x,8,p", 0, (int) M_BGT_I, INSN_MACRO, 0, 0 },
-{"bgtu", "x,y,p", 0, (int) M_BGTU, INSN_MACRO, 0, 0 },
-{"bgtu", "x,8,p", 0, (int) M_BGTU_I, INSN_MACRO, 0, 0 },
-{"ble", "x,y,p", 0, (int) M_BLE, INSN_MACRO, 0, 0 },
-{"ble", "x,8,p", 0, (int) M_BLE_I, INSN_MACRO, 0, 0 },
-{"bleu", "x,y,p", 0, (int) M_BLEU, INSN_MACRO, 0, 0 },
-{"bleu", "x,8,p", 0, (int) M_BLEU_I, INSN_MACRO, 0, 0 },
-{"blt", "x,y,p", 0, (int) M_BLT, INSN_MACRO, 0, 0 },
-{"blt", "x,8,p", 0, (int) M_BLT_I, INSN_MACRO, 0, 0 },
-{"bltu", "x,y,p", 0, (int) M_BLTU, INSN_MACRO, 0, 0 },
-{"bltu", "x,8,p", 0, (int) M_BLTU_I, INSN_MACRO, 0, 0 },
-{"bne", "x,y,p", 0, (int) M_BNE, INSN_MACRO, 0, 0 },
-{"bne", "x,U,p", 0, (int) M_BNE_I, INSN_MACRO, 0, 0 },
-{"bnez", "x,p", 0x2800, 0xf800, BR|RD_x, 0, 0 },
-{"break", "6", 0xe805, 0xf81f, TRAP, 0, 0 },
-{"bteqz", "p", 0x6000, 0xff00, BR|RD_T, 0, 0 },
-{"btnez", "p", 0x6100, 0xff00, BR|RD_T, 0, 0 },
-{"cmpi", "x,U", 0x7000, 0xf800, WR_T|RD_x, 0, 0 },
-{"cmp", "x,y", 0xe80a, 0xf81f, WR_T|RD_x|RD_y, 0, 0 },
-{"cmp", "x,U", 0x7000, 0xf800, WR_T|RD_x, 0, 0 },
+/* name, args, match, mask, pinfo, pinfo2, membership */
+{"nop", "", 0x6500, 0xffff, RD_Z, 0, I1 }, /* move $0,$Z */
+{"la", "x,A", 0x0800, 0xf800, WR_x|RD_PC, 0, I1 },
+{"abs", "x,w", 0, (int) M_ABS, INSN_MACRO, 0, I1 },
+{"addiu", "y,x,4", 0x4000, 0xf810, WR_y|RD_x, 0, I1 },
+{"addiu", "x,k", 0x4800, 0xf800, WR_x|RD_x, 0, I1 },
+{"addiu", "S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, I1 },
+{"addiu", "S,S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, I1 },
+{"addiu", "x,P,V", 0x0800, 0xf800, WR_x|RD_PC, 0, I1 },
+{"addiu", "x,S,V", 0x0000, 0xf800, WR_x|RD_SP, 0, I1 },
+{"addu", "z,v,y", 0xe001, 0xf803, WR_z|RD_x|RD_y, 0, I1 },
+{"addu", "y,x,4", 0x4000, 0xf810, WR_y|RD_x, 0, I1 },
+{"addu", "x,k", 0x4800, 0xf800, WR_x|RD_x, 0, I1 },
+{"addu", "S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, I1 },
+{"addu", "S,S,K", 0x6300, 0xff00, WR_SP|RD_SP, 0, I1 },
+{"addu", "x,P,V", 0x0800, 0xf800, WR_x|RD_PC, 0, I1 },
+{"addu", "x,S,V", 0x0000, 0xf800, WR_x|RD_SP, 0, I1 },
+{"and", "x,y", 0xe80c, 0xf81f, WR_x|RD_x|RD_y, 0, I1 },
+{"b", "q", 0x1000, 0xf800, BR, 0, I1 },
+{"beq", "x,y,p", 0, (int) M_BEQ, INSN_MACRO, 0, I1 },
+{"beq", "x,U,p", 0, (int) M_BEQ_I, INSN_MACRO, 0, I1 },
+{"beqz", "x,p", 0x2000, 0xf800, BR|RD_x, 0, I1 },
+{"bge", "x,y,p", 0, (int) M_BGE, INSN_MACRO, 0, I1 },
+{"bge", "x,8,p", 0, (int) M_BGE_I, INSN_MACRO, 0, I1 },
+{"bgeu", "x,y,p", 0, (int) M_BGEU, INSN_MACRO, 0, I1 },
+{"bgeu", "x,8,p", 0, (int) M_BGEU_I, INSN_MACRO, 0, I1 },
+{"bgt", "x,y,p", 0, (int) M_BGT, INSN_MACRO, 0, I1 },
+{"bgt", "x,8,p", 0, (int) M_BGT_I, INSN_MACRO, 0, I1 },
+{"bgtu", "x,y,p", 0, (int) M_BGTU, INSN_MACRO, 0, I1 },
+{"bgtu", "x,8,p", 0, (int) M_BGTU_I, INSN_MACRO, 0, I1 },
+{"ble", "x,y,p", 0, (int) M_BLE, INSN_MACRO, 0, I1 },
+{"ble", "x,8,p", 0, (int) M_BLE_I, INSN_MACRO, 0, I1 },
+{"bleu", "x,y,p", 0, (int) M_BLEU, INSN_MACRO, 0, I1 },
+{"bleu", "x,8,p", 0, (int) M_BLEU_I, INSN_MACRO, 0, I1 },
+{"blt", "x,y,p", 0, (int) M_BLT, INSN_MACRO, 0, I1 },
+{"blt", "x,8,p", 0, (int) M_BLT_I, INSN_MACRO, 0, I1 },
+{"bltu", "x,y,p", 0, (int) M_BLTU, INSN_MACRO, 0, I1 },
+{"bltu", "x,8,p", 0, (int) M_BLTU_I, INSN_MACRO, 0, I1 },
+{"bne", "x,y,p", 0, (int) M_BNE, INSN_MACRO, 0, I1 },
+{"bne", "x,U,p", 0, (int) M_BNE_I, INSN_MACRO, 0, I1 },
+{"bnez", "x,p", 0x2800, 0xf800, BR|RD_x, 0, I1 },
+{"break", "6", 0xe805, 0xf81f, TRAP, 0, I1 },
+{"bteqz", "p", 0x6000, 0xff00, BR|RD_T, 0, I1 },
+{"btnez", "p", 0x6100, 0xff00, BR|RD_T, 0, I1 },
+{"cmpi", "x,U", 0x7000, 0xf800, WR_T|RD_x, 0, I1 },
+{"cmp", "x,y", 0xe80a, 0xf81f, WR_T|RD_x|RD_y, 0, I1 },
+{"cmp", "x,U", 0x7000, 0xf800, WR_T|RD_x, 0, I1 },