/* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ #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",