--- /dev/null
+#define RCSID3 "$Header$"
+
+/*
+ * NS 16032 keywords
+ */
+
+/* Registers */
+0, REG, 0, "r0",
+0, REG, 1, "r1",
+0, REG, 2, "r2",
+0, REG, 3, "r3",
+0, REG, 4, "r4",
+0, REG, 5, "r5",
+0, REG, 6, "r6",
+0, REG, 7, "r7",
+0, FREG, 0, "f0",
+0, FREG, 1, "f1",
+0, FREG, 2, "f2",
+0, FREG, 3, "f3",
+0, FREG, 4, "f4",
+0, FREG, 5, "f5",
+0, FREG, 6, "f6",
+0, FREG, 7, "f7",
+/* CPU dedicated registers */
+0, AREG, 0x0, "us",
+0, AREG, 0x8, "fp",
+0, AREG, 0x9, "sp",
+0, AREG, 0xA, "sb",
+0, AREG, 0xD, "psr",
+0, AREG, 0xE, "intbase",
+0, AREG, 0xF, "mod",
+/* Tokens dedicated to addressing modes */
+0, TOS, 0x17, "tos",
+0, EXTERNAL, 0x16, "external",
+0, PC, 0, "pc",
+0, INDICATOR, 'b', "b",
+0, INDICATOR, 'c', "c",
+0, INDICATOR, 'd', "d",
+0, INDICATOR, 'f', "f",
+0, INDICATOR, 'i', "i",
+0, INDICATOR, 'm', "m",
+0, INDICATOR, 'q', "q",
+0, INDICATOR, 'u', "u",
+0, INDICATOR, 'w', "w",
+/* Memory management registers */
+0, MREG, 0x0, "bpr0",
+0, MREG, 0x1, "bpr1",
+0, MREG, 0x4, "pf0",
+0, MREG, 0x5, "pf1",
+0, MREG, 0x8, "sc",
+0, MREG, 0xA, "msr",
+0, MREG, 0xB, "bcnt",
+0, MREG, 0xC, "ptb0",
+0, MREG, 0xD, "ptb1",
+0, MREG, 0xF, "eia",
+/* Instruction types */
+/* Integer instructions */
+0, ADD_I, mk_op2(0x5,I_BYTE,I_BYTE), "movb",
+0, ADD_I, mk_op2(0x5,I_WORD,I_WORD), "movw",
+0, ADD_I, mk_op2(0x5,I_DOUBLE,I_DOUBLE), "movd",
+0, ADD_I, mk_op2(0x1,I_BYTE,I_BYTE), "cmpb",
+0, ADD_I, mk_op2(0x1,I_WORD,I_WORD), "cmpw",
+0, ADD_I, mk_op2(0x1,I_DOUBLE,I_DOUBLE), "cmpd",
+0, ADD_I, mk_op2(0x0,I_BYTE,I_BYTE), "addb",
+0, ADD_I, mk_op2(0x0,I_WORD,I_WORD), "addw",
+0, ADD_I, mk_op2(0x0,I_DOUBLE,I_DOUBLE), "addd",
+0, ADD_I, mk_op2(0x4,I_BYTE,I_BYTE), "addcb",
+0, ADD_I, mk_op2(0x4,I_WORD,I_WORD), "addcw",
+0, ADD_I, mk_op2(0x4,I_DOUBLE,I_DOUBLE), "addcd",
+0, ADD_I, mk_op2(0x8,I_BYTE,I_BYTE), "subb",
+0, ADD_I, mk_op2(0x8,I_WORD,I_WORD), "subw",
+0, ADD_I, mk_op2(0x8,I_DOUBLE,I_DOUBLE), "subd",
+0, ADD_I, mk_op2(0xC,I_BYTE,I_BYTE), "subcb",
+0, ADD_I, mk_op2(0xC,I_WORD,I_WORD), "subcw",
+0, ADD_I, mk_op2(0xC,I_DOUBLE,I_DOUBLE), "subcd",
+0, COM, mk_op2(0x8,I_BYTE,I_BYTE), "negb",
+0, COM, mk_op2(0x8,I_WORD,I_WORD), "negw",
+0, COM, mk_op2(0x8,I_DOUBLE,I_DOUBLE), "negd",
+0, COM, mk_op2(0xC,I_BYTE,I_BYTE), "absb",
+0, COM, mk_op2(0xC,I_WORD,I_WORD), "absw",
+0, COM, mk_op2(0xC,I_DOUBLE,I_DOUBLE), "absd",
+0, MUL_I, mk_op2(0x8,I_BYTE,I_BYTE), "mulb",
+0, MUL_I, mk_op2(0x8,I_WORD,I_WORD), "mulw",
+0, MUL_I, mk_op2(0x8,I_DOUBLE,I_DOUBLE), "muld",
+0, MUL_I, mk_op2(0xF,I_BYTE,I_BYTE), "divb",
+0, MUL_I, mk_op2(0xF,I_WORD,I_WORD), "divw",
+0, MUL_I, mk_op2(0xF,I_DOUBLE,I_DOUBLE), "divd",
+0, MUL_I, mk_op2(0xE,I_BYTE,I_BYTE), "modb",
+0, MUL_I, mk_op2(0xE,I_WORD,I_WORD), "modw",
+0, MUL_I, mk_op2(0xE,I_DOUBLE,I_DOUBLE), "modd",
+0, MUL_I, mk_op2(0xC,I_BYTE,I_BYTE), "quob",
+0, MUL_I, mk_op2(0xC,I_WORD,I_WORD), "quow",
+0, MUL_I, mk_op2(0xC,I_DOUBLE,I_DOUBLE), "quod",
+0, MUL_I, mk_op2(0xD,I_BYTE,I_BYTE), "remb",
+0, MUL_I, mk_op2(0xD,I_WORD,I_WORD), "remw",
+0, MUL_I, mk_op2(0xD,I_DOUBLE,I_DOUBLE), "remd",
+0, ADD_I, mk_op2(0xA,I_BYTE,I_BYTE), "andb",
+0, ADD_I, mk_op2(0xA,I_WORD,I_WORD), "andw",
+0, ADD_I, mk_op2(0xA,I_DOUBLE,I_DOUBLE), "andd",
+0, ADD_I, mk_op2(0x6,I_BYTE,I_BYTE), "orb",
+0, ADD_I, mk_op2(0x6,I_WORD,I_WORD), "orw",
+0, ADD_I, mk_op2(0x6,I_DOUBLE,I_DOUBLE), "ord",
+0, ADD_I, mk_op2(0x2,I_BYTE,I_BYTE), "bicb",
+0, ADD_I, mk_op2(0x2,I_WORD,I_WORD), "bicw",
+0, ADD_I, mk_op2(0x2,I_DOUBLE,I_DOUBLE), "bicd",
+0, ADD_I, mk_op2(0xE,I_BYTE,I_BYTE), "xorb",
+0, ADD_I, mk_op2(0xE,I_WORD,I_WORD), "xorw",
+0, ADD_I, mk_op2(0xE,I_DOUBLE,I_DOUBLE), "xord",
+0, COM, mk_op2(0xD,I_BYTE,I_BYTE), "comb",
+0, COM, mk_op2(0xD,I_WORD,I_WORD), "comw",
+0, COM, mk_op2(0xD,I_DOUBLE,I_DOUBLE), "comd",
+0, COM, mk_op2(0x1,I_BYTE,I_BYTE), "ashb",
+0, COM, mk_op2(0x1,I_BYTE,I_WORD), "ashw",
+0, COM, mk_op2(0x1,I_BYTE,I_DOUBLE), "ashd",
+0, COM, mk_op2(0x5,I_BYTE,I_BYTE), "lshb",
+0, COM, mk_op2(0x5,I_BYTE,I_WORD), "lshw",
+0, COM, mk_op2(0x5,I_BYTE,I_DOUBLE), "lshd",
+0, COM, mk_op2(0x0,I_BYTE,I_BYTE), "rotb",
+0, COM, mk_op2(0x0,I_BYTE,I_WORD), "rotw",
+0, COM, mk_op2(0x0,I_BYTE,I_DOUBLE), "rotd",
+0, MOVID, mk_op2(0x4,I_BYTE,I_WORD), "movxbw",
+0, MOVID, mk_op2(0x7,I_BYTE,I_DOUBLE), "movxbd",
+0, MOVID, mk_op2(0x7,I_WORD,I_DOUBLE), "movxwd",
+0, MOVID, mk_op2(0x5,I_BYTE,I_WORD), "movzbw",
+0, MOVID, mk_op2(0x6,I_BYTE,I_DOUBLE), "movzbd",
+0, MOVID, mk_op2(0x6,I_WORD,I_DOUBLE), "movzwd",
+#ifdef UNUSED
+0, MOVID, mk_op2(0x7,I_DOUBLE,I_DOUBLE), "movxdd",
+0, MOVID, mk_op2(0x6,I_DOUBLE,I_DOUBLE), "movzdd",
+#endif
+0, ADD_I, mk_op2(0x9,I_DOUBLE,I_DOUBLE), "addr",
+/* Quick integer instructions */
+0, MOVQ, mk_op1(0x5,I_BYTE), "movqb",
+0, MOVQ, mk_op1(0x5,I_WORD), "movqw",
+0, MOVQ, mk_op1(0x5,I_DOUBLE), "movqd",
+0, MOVQ, mk_op1(0x1,I_BYTE), "cmpqb",
+0, MOVQ, mk_op1(0x1,I_WORD), "cmpqw",
+0, MOVQ, mk_op1(0x1,I_DOUBLE), "cmpqd",
+0, MOVQ, mk_op1(0x0,I_BYTE), "addqb",
+0, MOVQ, mk_op1(0x0,I_WORD), "addqw",
+0, MOVQ, mk_op1(0x0,I_DOUBLE), "addqd",
+/* Extended integer instructions */
+0, MUL_I, mk_op2(0x9,I_BYTE,I_BYTE), "meib",
+0, MUL_I, mk_op2(0x9,I_WORD,I_WORD), "meiw",
+0, MUL_I, mk_op2(0x9,I_DOUBLE,I_DOUBLE), "meid",
+0, MUL_I, mk_op2(0xB,I_BYTE,I_BYTE), "deib",
+0, MUL_I, mk_op2(0xB,I_WORD,I_WORD), "deiw",
+0, MUL_I, mk_op2(0xB,I_DOUBLE,I_DOUBLE), "deid",
+/* Boolean instructions */
+0, COM, mk_op2(0x9,I_BYTE,I_BYTE), "notb",
+0, COM, mk_op2(0x9,I_WORD,I_WORD), "notw",
+0, COM, mk_op2(0x9,I_DOUBLE,I_DOUBLE), "notd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_EQ), "seqb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_EQ), "seqw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_EQ), "seqd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_NE), "sneb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_NE), "snew",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_NE), "sned",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_CS), "scsb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_CS), "scsw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_CS), "scsd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_CC), "sccb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_CC), "sccw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_CC), "sccd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_HI), "shib",
+0, SEQ, mk_op1c(0x3,I_WORD,B_HI), "shiw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_HI), "shid",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_LS), "slsb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_LS), "slsw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_LS), "slsd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_GT), "sgtb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_GT), "sgtw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_GT), "sgtd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_LE), "sleb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_LE), "slew",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_LE), "sled",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_FS), "sfsb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_FS), "sfsw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_FS), "sfsd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_FC), "sfcb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_FC), "sfcw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_FC), "sfcd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_LO), "slob",
+0, SEQ, mk_op1c(0x3,I_WORD,B_LO), "slow",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_LO), "slod",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_HS), "shsb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_HS), "shsw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_HS), "shsd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_LT), "sltb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_LT), "sltw",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_LT), "sltd",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_GE), "sgeb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_GE), "sgew",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_GE), "sged",
+#ifdef UNUSED
+0, SEQ, mk_op1c(0x3,I_BYTE,B_TRUE), "strueb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_TRUE), "struew",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_TRUE), "strued",
+0, SEQ, mk_op1c(0x3,I_BYTE,B_FALSE), "sfalseb",
+0, SEQ, mk_op1c(0x3,I_WORD,B_FALSE), "sfalsew",
+0, SEQ, mk_op1c(0x3,I_DOUBLE,B_FALSE), "sfalsed",
+#endif
+/* Bit instructions */
+0, ADD_I, mk_op2(0xD,I_BYTE,I_BYTE), "tbitb",
+0, ADD_I, mk_op2(0xD,I_WORD,I_WORD), "tbitw",
+0, ADD_I, mk_op2(0xD,I_DOUBLE,I_DOUBLE), "tbitd",
+0, COM, mk_op2(0x6,I_BYTE,I_BYTE), "sbitb",
+0, COM, mk_op2(0x6,I_WORD,I_WORD), "sbitw",
+0, COM, mk_op2(0x6,I_DOUBLE,I_DOUBLE), "sbitd",
+0, COM, mk_op2(0x7,I_BYTE,I_BYTE), "sbitib",
+0, COM, mk_op2(0x7,I_WORD,I_WORD), "sbitiw",
+0, COM, mk_op2(0x7,I_DOUBLE,I_DOUBLE), "sbitid",
+0, COM, mk_op2(0x2,I_BYTE,I_BYTE), "cbitb",
+0, COM, mk_op2(0x2,I_WORD,I_WORD), "cbitw",
+0, COM, mk_op2(0x2,I_DOUBLE,I_DOUBLE), "cbitd",
+0, COM, mk_op2(0x3,I_BYTE,I_BYTE), "cbitib",
+0, COM, mk_op2(0x3,I_WORD,I_WORD), "cbitiw",
+0, COM, mk_op2(0x3,I_DOUBLE,I_DOUBLE), "cbitid",
+0, COM, mk_op2(0xE,I_BYTE,I_BYTE), "ibitb",
+0, COM, mk_op2(0xE,I_WORD,I_WORD), "ibitw",
+0, COM, mk_op2(0xE,I_DOUBLE,I_DOUBLE), "ibitd",
+0, CHECK, mk_op1(0x1,I_DOUBLE), "cvtp",
+0, FFS, mk_op2c(0x5,I_BYTE,I_BYTE,0), "ffsb",
+0, FFS, mk_op2c(0x5,I_WORD,I_BYTE,0), "ffsw",
+0, FFS, mk_op2c(0x5,I_DOUBLE,I_BYTE,0), "ffsd",
+/* Field instructions */
+0, INS, mk_op2(0x0,I_BYTE,I_BYTE), "extb",
+0, INS, mk_op2(0x0,I_WORD,I_WORD), "extw",
+0, INS, mk_op2(0x0,I_DOUBLE,I_DOUBLE), "extd",
+0, INSS, mk_op2(0x3,I_BYTE,I_BYTE), "extsb",
+0, INSS, mk_op2(0x3,I_WORD,I_WORD), "extsw",
+0, INSS, mk_op2(0x3,I_DOUBLE,I_DOUBLE), "extsd",
+0, INS, mk_op2(0x2,I_BYTE,I_BYTE), "insb",
+0, INS, mk_op2(0x2,I_WORD,I_WORD), "insw",
+0, INS, mk_op2(0x2,I_DOUBLE,I_DOUBLE), "insd",
+0, INSS, mk_op2(0x2,I_BYTE,I_BYTE), "inssb",
+0, INSS, mk_op2(0x2,I_WORD,I_WORD), "inssw",
+0, INSS, mk_op2(0x2,I_DOUBLE,I_DOUBLE), "inssd",
+/* String instructions */
+0, MOVS, mk_op1c(0x0,I_BYTE,0), "movsb",
+0, MOVS, mk_op1c(0x0,I_WORD,0), "movsw",
+0, MOVS, mk_op1c(0x0,I_DOUBLE,0), "movsd",
+0, MOVS, mk_op1c(0x0,I_BYTE,SO_TRANS), "movst",
+0, MOVS, mk_op1c(0x1,I_BYTE,0), "cmpsb",
+0, MOVS, mk_op1c(0x1,I_WORD,0), "cmpsw",
+0, MOVS, mk_op1c(0x1,I_DOUBLE,0), "cmpsd",
+0, MOVS, mk_op1c(0x1,I_BYTE,SO_TRANS), "cmpst",
+0, MOVS, mk_op1c(0x3,I_BYTE,0), "skpsb",
+0, MOVS, mk_op1c(0x3,I_WORD,0), "skpsw",
+0, MOVS, mk_op1c(0x3,I_DOUBLE,0), "skpsd",
+0, MOVS, mk_op1c(0x3,I_BYTE,SO_TRANS), "skpst",
+/* Block instructions */
+0, MOVM, mk_op2(0x0,I_BYTE,I_BYTE), "movmb",
+0, MOVM, mk_op2(0x0,I_WORD,I_WORD), "movmw",
+0, MOVM, mk_op2(0x0,I_DOUBLE,I_DOUBLE), "movmd",
+0, MOVM, mk_op2(0x1,I_BYTE,I_BYTE), "cmpmb",
+0, MOVM, mk_op2(0x1,I_WORD,I_WORD), "cmpmw",
+0, MOVM, mk_op2(0x1,I_DOUBLE,I_DOUBLE), "cmpmd",
+/* Packed decimal instructions */
+0, COM, mk_op2(0xF,I_BYTE,I_BYTE), "addpb",
+0, COM, mk_op2(0xF,I_WORD,I_WORD), "addpw",
+0, COM, mk_op2(0xF,I_DOUBLE,I_DOUBLE), "addpd",
+0, COM, mk_op2(0xB,I_BYTE,I_BYTE), "subpb",
+0, COM, mk_op2(0xB,I_WORD,I_WORD), "subpw",
+0, COM, mk_op2(0xB,I_DOUBLE,I_DOUBLE), "subpd",
+/* Array instructions */
+0, CHECK, mk_op2(0x4,I_BYTE,I_BYTE), "indexb",
+0, CHECK, mk_op2(0x4,I_WORD,I_WORD), "indexw",
+0, CHECK, mk_op2(0x4,I_DOUBLE,I_DOUBLE), "indexd",
+0, CHECK, mk_op2(0x3,I_BYTE,I_BYTE), "checkb",
+0, CHECK, mk_op2(0x3,I_WORD,I_WORD), "checkw",
+0, CHECK, mk_op2(0x3,I_DOUBLE,I_DOUBLE), "checkd",
+/* Processor control instructions */
+0, JUMP, mk_op1(0x4,I_DOUBLE), "jump",
+0, BR, mk_c(B_EQ), "beq",
+0, BR, mk_c(B_NE), "bne",
+0, BR, mk_c(B_CS), "bcs",
+0, BR, mk_c(B_CC), "bcc",
+0, BR, mk_c(B_HI), "bhi",
+0, BR, mk_c(B_LS), "bls",
+0, BR, mk_c(B_GT), "bgt",
+0, BR, mk_c(B_LE), "ble",
+0, BR, mk_c(B_FS), "bfs",
+0, BR, mk_c(B_FC), "bfc",
+0, BR, mk_c(B_LO), "blo",
+0, BR, mk_c(B_HS), "bhs",
+0, BR, mk_c(B_LT), "blt",
+0, BR, mk_c(B_GE), "bge",
+0, BR, mk_c(B_TRUE), "br",
+#ifdef UNUSED
+0, BR, mk_c(B_FALSE), "bfalse",
+#endif
+0, ADJSP, mk_op1(0xE,I_BYTE), "caseb",
+0, ADJSP, mk_op1(0xE,I_WORD), "casew",
+0, ADJSP, mk_op1(0xE,I_DOUBLE), "cased",
+0, ACB, mk_op1(0x4,I_BYTE), "acbb",
+0, ACB, mk_op1(0x4,I_WORD), "acbw",
+0, ACB, mk_op1(0x4,I_DOUBLE), "acbd",
+0, JSR, mk_op1(0xC,I_DOUBLE), "jsr",
+0, BSR, mk_op(0x0), "bsr",
+0, RET, mk_op(0x1), "ret",
+0, RET, mk_op(0x2), "cxp",
+0, ADJSP, mk_op1(0x0,I_DOUBLE), "cxpd",
+0, RET, mk_op(0x3), "rxp",
+0, RET, mk_op(0x4), "rett",
+0, WAIT, mk_op(0x5), "reti",
+0, WAIT, mk_op(0xC), "dia",
+/* Processor service instructions */
+0, ADJSP, mk_op1(0xA,I_BYTE), "adjspb",
+0, ADJSP, mk_op1(0xA,I_WORD), "adjspw",
+0, ADJSP, mk_op1(0xA,I_DOUBLE), "adjspd",
+0, ADJSP, mk_op1(0x2,I_BYTE), "bicpsrb",
+0, ADJSP, mk_op1(0x2,I_WORD), "bicpsrw",
+0, ADJSP, mk_op1(0x6,I_BYTE), "bispsrb",
+0, ADJSP, mk_op1(0x6,I_WORD), "bispsrw",
+#ifdef UNUSED
+0, ADJSP, mk_op1(0x2,I_DOUBLE), "bicpsrd",
+0, ADJSP, mk_op1(0x6,I_DOUBLE), "bispsrd",
+#endif
+0, SAVE, mk_op(0x6), "save",
+0, SAVE, mk_op(0x7), "restore",
+0, ENTER, mk_op(0x8), "enter",
+0, SAVE, mk_op(0x9), "exit",
+0, LPR, mk_op1(0x6,I_BYTE), "lprb",
+0, LPR, mk_op1(0x6,I_WORD), "lprw",
+0, LPR, mk_op1(0x6,I_DOUBLE), "lprd",
+0, LPR, mk_op1(0x2,I_BYTE), "sprb",
+0, LPR, mk_op1(0x2,I_WORD), "sprw",
+0, LPR, mk_op1(0x2,I_DOUBLE), "sprd",
+0, SETCFG, mk_op1(0x2,I_DOUBLE), "setcfg",
+0, WAIT, mk_op(0xF), "bpt",
+0, WAIT, mk_op(0xD), "flag",
+0, WAIT, mk_op(0xE), "svc",
+0, WAIT, mk_op(0xA), "nop",
+0, WAIT, mk_op(0xB), "wait",
+/* Memory management instructions */
+0, LMR, mk_op1(0x2,I_DOUBLE), "lmr",
+0, LMR, mk_op1(0x3,I_DOUBLE), "smr",
+0, RDVAL, mk_op1(0x0,I_DOUBLE), "rdval",
+0, RDVAL, mk_op1(0x1,I_DOUBLE), "wrval",
+#ifdef SU_ASSEM
+/* The assembler ref. man and the CPU description booklet differ
+ in the encoding of these instructions
+*/
+0, FFS, mk_op2c(0x6,I_BYTE,I_BYTE,1), "movsub",
+0, FFS, mk_op2c(0x6,I_WORD,I_WORD,1), "movsuw",
+0, FFS, mk_op2c(0x6,I_DOUBLE,I_DOUBLE,1),"movsud",
+0, FFS, mk_op2c(0x6,I_BYTE,I_BYTE,3), "movusb",
+0, FFS, mk_op2c(0x6,I_WORD,I_WORD,3), "movusw",
+0, FFS, mk_op2c(0x6,I_DOUBLE,I_DOUBLE,3),"movusd",
+#else
+/* assembler reference manual version */
+0, FFS, mk_op2c(0x7,I_BYTE,I_BYTE,0), "movsub",
+0, FFS, mk_op2c(0x7,I_WORD,I_WORD,0), "movsuw",
+0, FFS, mk_op2c(0x7,I_DOUBLE,I_DOUBLE,0),"movsud",
+0, FFS, mk_op2c(0x6,I_BYTE,I_BYTE,0), "movusb",
+0, FFS, mk_op2c(0x6,I_WORD,I_WORD,0), "movusw",
+0, FFS, mk_op2c(0x6,I_DOUBLE,I_DOUBLE,0),"movusd",
+#endif
+/* Floating point instructions */
+0, ADD_F, mk_op2(0xD,F_FLOAT,F_FLOAT), "absf",
+0, ADD_F, mk_op2(0xD,F_LONG,F_LONG), "absl",
+0, ADD_F, mk_op2(0x0,F_FLOAT,F_FLOAT), "addf",
+0, ADD_F, mk_op2(0x0,F_LONG,F_LONG), "addl",
+0, ADD_F, mk_op2(0x2,F_FLOAT,F_FLOAT), "cmpf",
+0, ADD_F, mk_op2(0x2,F_LONG,F_LONG), "cmpl",
+0, ADD_F, mk_op2(0x8,F_FLOAT,F_FLOAT), "divf",
+0, ADD_F, mk_op2(0x8,F_LONG,F_LONG), "divl",
+0, ADD_F, mk_op2(0xC,F_FLOAT,F_FLOAT), "mulf",
+0, ADD_F, mk_op2(0xC,F_LONG,F_LONG), "mull",
+0, ADD_F, mk_op2(0x4,F_FLOAT,F_FLOAT), "subf",
+0, ADD_F, mk_op2(0x4,F_LONG,F_LONG), "subl",
+0, ADD_F, mk_op2(0x5,F_FLOAT,F_FLOAT), "negf",
+0, ADD_F, mk_op2(0x5,F_LONG,F_LONG), "negl",
+0, ADD_F, mk_op2(0x1,F_FLOAT,F_FLOAT), "movf",
+0, ADD_F, mk_op2(0x1,F_LONG,F_LONG), "movl",
+0, MOVIF, mk_op2(0x0,I_BYTE,F_FLOAT), "movbf",
+0, MOVIF, mk_op2(0x0,I_WORD,F_FLOAT), "movwf",
+0, MOVIF, mk_op2(0x0,I_DOUBLE,F_FLOAT), "movdf",
+0, MOVIF, mk_op2(0x0,I_BYTE,F_LONG), "movbl",
+0, MOVIF, mk_op2(0x0,I_WORD,F_LONG), "movwl",
+0, MOVIF, mk_op2(0x0,I_DOUBLE,F_LONG), "movdl",
+0, MOVFL, mk_op2(0x3,F_FLOAT,F_LONG), "movfl",
+0, MOVFL, mk_op2(0x2,F_LONG,F_FLOAT), "movlf",
+0, TRUNC, mk_op2(0x7,F_FLOAT,I_BYTE), "floorfb",
+0, TRUNC, mk_op2(0x7,F_FLOAT,I_WORD), "floorfw",
+0, TRUNC, mk_op2(0x7,F_FLOAT,I_DOUBLE), "floorfd",
+0, TRUNC, mk_op2(0x7,F_LONG,I_BYTE), "floorlb",
+0, TRUNC, mk_op2(0x7,F_LONG,I_WORD), "floorlw",
+0, TRUNC, mk_op2(0x7,F_LONG,I_DOUBLE), "floorld",
+0, TRUNC, mk_op2(0x4,F_FLOAT,I_BYTE), "roundfb",
+0, TRUNC, mk_op2(0x4,F_FLOAT,I_WORD), "roundfw",
+0, TRUNC, mk_op2(0x4,F_FLOAT,I_DOUBLE), "roundfd",
+0, TRUNC, mk_op2(0x4,F_LONG,I_BYTE), "roundlb",
+0, TRUNC, mk_op2(0x4,F_LONG,I_WORD), "roundlw",
+0, TRUNC, mk_op2(0x4,F_LONG,I_DOUBLE), "roundld",
+0, TRUNC, mk_op2(0x5,F_FLOAT,I_BYTE), "truncfb",
+0, TRUNC, mk_op2(0x5,F_FLOAT,I_WORD), "truncfw",
+0, TRUNC, mk_op2(0x5,F_FLOAT,I_DOUBLE), "truncfd",
+0, TRUNC, mk_op2(0x5,F_LONG,I_BYTE), "trunclb",
+0, TRUNC, mk_op2(0x5,F_LONG,I_WORD), "trunclw",
+0, TRUNC, mk_op2(0x5,F_LONG,I_DOUBLE), "truncld",
+0, LFSR, mk_op(0x1), "lfsr",
+0, LFSR, mk_op(0x6), "sfsr",
+/* Slave processor instructions */
+0, LCR, mk_op1(0x2,I_DOUBLE), "lcr", /* Sure ? */
+0, LCR, mk_op1(0x3,I_DOUBLE), "scr", /* Sure ? */
+0, CATST, mk_op1(0x0,I_DOUBLE), "catst0",/* Sure ? */
+0, CATST, mk_op1(0x1,I_DOUBLE), "catst1",/* Sure ? */
+0, LCSR, mk_op1(0x1,S_DOUBLE), "lcsr", /* Sure ? */
+0, LCSR, mk_op1(0x6,S_DOUBLE), "scsr", /* Sure ? */
+0, CCVSI, mk_op2(0x7,S_DOUBLE,I_BYTE), "ccv0db",
+0, CCVSI, mk_op2(0x7,S_DOUBLE,I_WORD), "ccv0dw",
+0, CCVSI, mk_op2(0x7,S_DOUBLE,I_DOUBLE), "ccv0dd",
+0, CCVSI, mk_op2(0x7,S_QUAD,I_BYTE), "ccv0qb",
+0, CCVSI, mk_op2(0x7,S_QUAD,I_WORD), "ccv0qw",
+0, CCVSI, mk_op2(0x7,S_QUAD,I_DOUBLE), "ccv0qd",
+0, CCVSI, mk_op2(0x5,S_DOUBLE,I_BYTE), "ccv1db",
+0, CCVSI, mk_op2(0x5,S_DOUBLE,I_WORD), "ccv1dw",
+0, CCVSI, mk_op2(0x5,S_DOUBLE,I_DOUBLE), "ccv1dd",
+0, CCVSI, mk_op2(0x5,S_QUAD,I_BYTE), "ccv1qb",
+0, CCVSI, mk_op2(0x5,S_QUAD,I_WORD), "ccv1qw",
+0, CCVSI, mk_op2(0x5,S_QUAD,I_DOUBLE), "ccv1qd",
+0, CCVSI, mk_op2(0x4,S_DOUBLE,I_BYTE), "ccv2db",
+0, CCVSI, mk_op2(0x4,S_DOUBLE,I_WORD), "ccv2dw",
+0, CCVSI, mk_op2(0x4,S_DOUBLE,I_DOUBLE), "ccv2dd",
+0, CCVSI, mk_op2(0x4,S_QUAD,I_BYTE), "ccv2qb",
+0, CCVSI, mk_op2(0x4,S_QUAD,I_WORD), "ccv2qw",
+0, CCVSI, mk_op2(0x4,S_QUAD,I_DOUBLE), "ccv2qd",
+0, CCVIS, mk_op2(0x0,I_BYTE,S_DOUBLE), "ccv3bd",
+0, CCVIS, mk_op2(0x0,I_WORD,S_DOUBLE), "ccv3wd",
+0, CCVIS, mk_op2(0x0,I_DOUBLE,S_DOUBLE), "ccv3dd",
+0, CCVIS, mk_op2(0x0,I_BYTE,S_QUAD), "ccv3bq",
+0, CCVIS, mk_op2(0x0,I_WORD,S_QUAD), "ccv3wq",
+0, CCVIS, mk_op2(0x0,I_DOUBLE,S_QUAD), "ccv3dq",
+0, CCVSS, mk_op2(0x3,S_DOUBLE,S_QUAD), "ccv4dq",
+0, CCVSS, mk_op2(0x2,S_QUAD,S_DOUBLE), "ccv5qd",
+0, CMOV, mk_op2(0x0,S_DOUBLE,S_DOUBLE), "ccal0d",
+0, CMOV, mk_op2(0x0,S_QUAD,S_QUAD), "ccal0q",
+0, CMOV, mk_op2(0x4,S_DOUBLE,S_DOUBLE), "ccal1d",
+0, CMOV, mk_op2(0x4,S_QUAD,S_QUAD), "ccal1q",
+0, CMOV, mk_op2(0xC,S_DOUBLE,S_DOUBLE), "ccal2d",
+0, CMOV, mk_op2(0xC,S_QUAD,S_QUAD), "ccal2q",
+0, CMOV, mk_op2(0x8,S_DOUBLE,S_DOUBLE), "ccal3d",
+0, CMOV, mk_op2(0x8,S_QUAD,S_QUAD), "ccal3q",
+0, CMOV, mk_op2(0x2,S_DOUBLE,S_DOUBLE), "ccmpd",
+0, CMOV, mk_op2(0x2,S_QUAD,S_QUAD), "ccmpq",
+0, CMOV, mk_op2(0x1,S_DOUBLE,S_DOUBLE), "cmov0d",
+0, CMOV, mk_op2(0x1,S_QUAD,S_QUAD), "cmov0q",
+0, CMOV, mk_op2(0xD,S_DOUBLE,S_DOUBLE), "cmov1d",
+0, CMOV, mk_op2(0xD,S_QUAD,S_QUAD), "cmov1q",
+0, CMOV, mk_op2(0x5,S_DOUBLE,S_DOUBLE), "cmov2d",
+0, CMOV, mk_op2(0x5,S_QUAD,S_QUAD), "cmov2q",