692 lines
42 KiB
C
692 lines
42 KiB
C
/*
|
|
* $Source$
|
|
* $State$
|
|
*/
|
|
|
|
/* Integer registers */
|
|
|
|
{0, GPR, 0, "r0"},
|
|
{0, GPR, 1, "r1"},
|
|
{0, GPR, 1, "sp"},
|
|
{0, GPR, 2, "r2"},
|
|
{0, GPR, 2, "fp"},
|
|
{0, GPR, 3, "r3"},
|
|
{0, GPR, 4, "r4"},
|
|
{0, GPR, 5, "r5"},
|
|
{0, GPR, 6, "r6"},
|
|
{0, GPR, 7, "r7"},
|
|
{0, GPR, 8, "r8"},
|
|
{0, GPR, 9, "r9"},
|
|
{0, GPR, 10, "r10"},
|
|
{0, GPR, 11, "r11"},
|
|
{0, GPR, 12, "r12"},
|
|
{0, GPR, 13, "r13"},
|
|
{0, GPR, 14, "r14"},
|
|
{0, GPR, 15, "r15"},
|
|
{0, GPR, 16, "r16"},
|
|
{0, GPR, 17, "r17"},
|
|
{0, GPR, 18, "r18"},
|
|
{0, GPR, 19, "r19"},
|
|
{0, GPR, 20, "r20"},
|
|
{0, GPR, 21, "r21"},
|
|
{0, GPR, 22, "r22"},
|
|
{0, GPR, 23, "r23"},
|
|
{0, GPR, 24, "r24"},
|
|
{0, GPR, 25, "r25"},
|
|
{0, GPR, 26, "r26"},
|
|
{0, GPR, 27, "r27"},
|
|
{0, GPR, 28, "r28"},
|
|
{0, GPR, 29, "r29"},
|
|
{0, GPR, 30, "r30"},
|
|
{0, GPR, 31, "r31"},
|
|
|
|
/* Floating-point registers */
|
|
|
|
{0, FPR, 0, "f0"},
|
|
{0, FPR, 1, "f1"},
|
|
{0, FPR, 2, "f2"},
|
|
{0, FPR, 3, "f3"},
|
|
{0, FPR, 4, "f4"},
|
|
{0, FPR, 5, "f5"},
|
|
{0, FPR, 6, "f6"},
|
|
{0, FPR, 7, "f7"},
|
|
{0, FPR, 8, "f8"},
|
|
{0, FPR, 9, "f9"},
|
|
{0, FPR, 10, "f10"},
|
|
{0, FPR, 11, "f11"},
|
|
{0, FPR, 12, "f12"},
|
|
{0, FPR, 13, "f13"},
|
|
{0, FPR, 14, "f14"},
|
|
{0, FPR, 15, "f15"},
|
|
{0, FPR, 16, "f16"},
|
|
{0, FPR, 17, "f17"},
|
|
{0, FPR, 18, "f18"},
|
|
{0, FPR, 19, "f19"},
|
|
{0, FPR, 20, "f20"},
|
|
{0, FPR, 21, "f21"},
|
|
{0, FPR, 22, "f22"},
|
|
{0, FPR, 23, "f23"},
|
|
{0, FPR, 24, "f24"},
|
|
{0, FPR, 25, "f25"},
|
|
{0, FPR, 26, "f26"},
|
|
{0, FPR, 27, "f27"},
|
|
{0, FPR, 28, "f28"},
|
|
{0, FPR, 29, "f29"},
|
|
{0, FPR, 30, "f30"},
|
|
{0, FPR, 31, "f31"},
|
|
|
|
/* Special registers */
|
|
|
|
{0, SPR, 32, "xer"},
|
|
{0, SPR, 256, "lr"},
|
|
{0, SPR, 288, "ctr"},
|
|
|
|
/* Condition registers */
|
|
|
|
{0, CR, 0, "cr0"},
|
|
{0, CR, 1, "cr1"},
|
|
{0, CR, 2, "cr2"},
|
|
{0, CR, 3, "cr3"},
|
|
{0, CR, 4, "cr4"},
|
|
{0, CR, 5, "cr5"},
|
|
{0, CR, 6, "cr6"},
|
|
{0, CR, 7, "cr7"},
|
|
|
|
/* Condition code flag */
|
|
|
|
{0, C, 0, "."},
|
|
|
|
/* Special instructions */
|
|
|
|
{0, OP_LI32, 0, "li32"},
|
|
{0, OP_HI, 0, "hi16"},
|
|
{0, OP_HA, 0, "ha16"},
|
|
{0, OP_LO, 0, "lo16"},
|
|
|
|
/* The next page numbers are from PowerPC User Instruction Set
|
|
* Architecture, Book I, Version 2.01.
|
|
*/
|
|
|
|
/* Branch processor instructions (page 20) */
|
|
|
|
{0, OP_LIL, 18<<26 | 0<<1 | 0<<0, "b"},
|
|
{0, OP_LIA, 18<<26 | 1<<1 | 0<<0, "ba"},
|
|
{0, OP_LIL, 18<<26 | 0<<1 | 1<<0, "bl"},
|
|
{0, OP_LIA, 18<<26 | 1<<1 | 1<<0, "bla"},
|
|
{0, OP_BO_BI_BDL, 16<<26 | 0<<1 | 0<<0, "bc"},
|
|
{0, OP_BO_BI_BDA, 16<<26 | 1<<1 | 0<<0, "bca"},
|
|
{0, OP_BO_BI_BDL, 16<<26 | 0<<1 | 1<<0, "bcl"},
|
|
{0, OP_BO_BI_BDA, 16<<26 | 1<<1 | 1<<0, "bcla"},
|
|
{0, OP_BO_BI_BH, 19<<26 | 16<<1 | 0<<0, "bclr"},
|
|
{0, OP_BO_BI_BH, 19<<26 | 16<<1 | 1<<0, "bclrl"},
|
|
{0, OP_BO_BI_BH, 19<<26 | 528<<1 | 0<<0, "bcctr"},
|
|
{0, OP_BO_BI_BH, 19<<26 | 528<<1 | 1<<0, "bcctrl"},
|
|
{0, OP_LEV, 17<<26 | 1<<1, "sc"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 257<<1, "crand"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 449<<1, "cror"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 193<<1, "crxor"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 225<<1, "crnand"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 33<<1, "crnor"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 289<<1, "creqv"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 129<<1, "crandc"},
|
|
{0, OP_BT_BA_BB, 19<<26 | 417<<1, "crorc"},
|
|
{0, OP_BF_BFA, 19<<26 | 0<<1, "mcrf"},
|
|
|
|
/* extended mnemonics for bc, bcctr, bclr (page 144) */
|
|
{0, OP_BH, 19<<26 | 20<<21 | 528<<1 | 0<<0, "bctr"},
|
|
{0, OP_BH, 19<<26 | 20<<21 | 528<<1 | 1<<0, "bctrl"},
|
|
{0, OP_BDL, 16<<26 | 16<<21 | 0<<1 | 0<<0, "bdnz"},
|
|
{0, OP_BDA, 16<<26 | 16<<21 | 1<<1 | 0<<0, "bdnza"},
|
|
{0, OP_BH, 19<<26 | 16<<21 | 16<<1 | 0<<0, "bdnzlr"},
|
|
{0, OP_BDL, 16<<26 | 16<<21 | 0<<1 | 1<<0, "bdnzl"},
|
|
{0, OP_BDA, 16<<26 | 16<<21 | 1<<1 | 1<<0, "bdnzla"},
|
|
{0, OP_BH, 19<<26 | 16<<21 | 16<<1 | 1<<0, "bdnzlrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 0<<21 | 0<<1 | 0<<0, "bdnzf"},
|
|
{0, OP_BI_BDA, 16<<26 | 0<<21 | 1<<1 | 0<<0, "bdnzfa"},
|
|
{0, OP_BI_BH, 19<<26 | 0<<21 | 16<<1 | 0<<0, "bdnzflr"},
|
|
{0, OP_BI_BDL, 16<<26 | 0<<21 | 0<<1 | 1<<0, "bdnzfl"},
|
|
{0, OP_BI_BDA, 16<<26 | 0<<21 | 1<<1 | 1<<0, "bdnzfla"},
|
|
{0, OP_BI_BH, 19<<26 | 0<<21 | 16<<1 | 1<<0, "bdnzflrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 8<<21 | 0<<1 | 0<<0, "bdnzt"},
|
|
{0, OP_BI_BDA, 16<<26 | 8<<21 | 1<<1 | 0<<0, "bdnzta"},
|
|
{0, OP_BI_BH, 19<<26 | 8<<21 | 16<<1 | 0<<0, "bdnztlr"},
|
|
{0, OP_BI_BDL, 16<<26 | 8<<21 | 0<<1 | 1<<0, "bdnztl"},
|
|
{0, OP_BI_BDA, 16<<26 | 8<<21 | 1<<1 | 1<<0, "bdnztla"},
|
|
{0, OP_BI_BH, 19<<26 | 8<<21 | 16<<1 | 1<<0, "bdnztlrl"},
|
|
{0, OP_BDL, 16<<26 | 18<<21 | 0<<1 | 0<<0, "bdz"},
|
|
{0, OP_BDA, 16<<26 | 18<<21 | 1<<1 | 0<<0, "bdza"},
|
|
{0, OP_BH, 19<<26 | 18<<21 | 16<<1 | 0<<0, "bdzlr"},
|
|
{0, OP_BDL, 16<<26 | 18<<21 | 0<<1 | 1<<0, "bdzl"},
|
|
{0, OP_BDA, 16<<26 | 18<<21 | 1<<1 | 1<<0, "bdzla"},
|
|
{0, OP_BH, 19<<26 | 18<<21 | 16<<1 | 1<<0, "bdzlrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 2<<21 | 0<<1 | 0<<0, "bdzf"},
|
|
{0, OP_BI_BDA, 16<<26 | 2<<21 | 1<<1 | 0<<0, "bdzfa"},
|
|
{0, OP_BI_BH, 19<<26 | 2<<21 | 16<<1 | 0<<0, "bdzflr"},
|
|
{0, OP_BI_BDL, 16<<26 | 2<<21 | 0<<1 | 1<<0, "bdzfl"},
|
|
{0, OP_BI_BDA, 16<<26 | 2<<21 | 1<<1 | 1<<0, "bdzfla"},
|
|
{0, OP_BI_BH, 19<<26 | 2<<21 | 16<<1 | 1<<0, "bdzflrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 10<<21 | 0<<1 | 0<<0, "bdzt"},
|
|
{0, OP_BI_BDA, 16<<26 | 10<<21 | 1<<1 | 0<<0, "bdzta"},
|
|
{0, OP_BI_BH, 19<<26 | 10<<21 | 16<<1 | 0<<0, "bdztlr"},
|
|
{0, OP_BI_BDL, 16<<26 | 10<<21 | 0<<1 | 1<<0, "bdztl"},
|
|
{0, OP_BI_BDA, 16<<26 | 10<<21 | 1<<1 | 1<<0, "bdztla"},
|
|
{0, OP_BI_BH, 19<<26 | 10<<21 | 16<<1 | 1<<0, "bdztlrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 4<<21 | 0<<1 | 0<<0, "bf"},
|
|
{0, OP_BI_BDA, 16<<26 | 4<<21 | 1<<1 | 0<<0, "bfa"},
|
|
{0, OP_BI_BH, 19<<26 | 4<<21 | 528<<1 | 0<<0, "bfctr"},
|
|
{0, OP_BI_BH, 19<<26 | 4<<21 | 528<<1 | 1<<0, "bfctrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 4<<21 | 0<<1 | 1<<0, "bfl"},
|
|
{0, OP_BI_BDA, 16<<26 | 4<<21 | 0<<1 | 1<<0, "bfla"},
|
|
{0, OP_BI_BH, 19<<26 | 4<<21 | 16<<1 | 0<<0, "bflr"},
|
|
{0, OP_BI_BH, 19<<26 | 4<<21 | 16<<1 | 1<<0, "bflrl"},
|
|
{0, OP_BH, 19<<26 | 20<<21 | 16<<1 | 0<<0, "blr"},
|
|
{0, OP_BH, 19<<26 | 20<<21 | 16<<1 | 1<<0, "blrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 12<<21 | 0<<1 | 0<<0, "bt"},
|
|
{0, OP_BI_BDA, 16<<26 | 12<<21 | 1<<1 | 0<<0, "bta"},
|
|
{0, OP_BI_BH, 19<<26 | 12<<21 | 528<<1 | 0<<0, "btctr"},
|
|
{0, OP_BI_BH, 19<<26 | 12<<21 | 528<<1 | 1<<0, "btctrl"},
|
|
{0, OP_BI_BDL, 16<<26 | 12<<21 | 0<<1 | 1<<0, "btl"},
|
|
{0, OP_BI_BDA, 16<<26 | 12<<21 | 0<<1 | 1<<0, "btla"},
|
|
{0, OP_BI_BH, 19<<26 | 12<<21 | 16<<1 | 0<<0, "btlr"},
|
|
{0, OP_BI_BH, 19<<26 | 12<<21 | 16<<1 | 1<<0, "btlrl"},
|
|
|
|
/* extended m with condition in BI (page 146) */
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 2<<16 | 0<<1 | 0<<0, "beq"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 2<<16 | 1<<1 | 0<<0, "beqa"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 2<<16 | 528<<1 | 0<<0, "beqctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 2<<16 | 528<<1 | 1<<0, "beqctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 2<<16 | 0<<1 | 1<<0, "beql"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 2<<16 | 1<<1 | 1<<0, "beqla"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 2<<16 | 16<<1 | 0<<0, "beqlr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 2<<16 | 16<<1 | 1<<0, "beqlrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 0<<16 | 0<<1 | 0<<0, "bge"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 0<<16 | 1<<1 | 0<<0, "bgea"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 528<<1 | 0<<0, "bgectr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 528<<1 | 1<<0, "bgectrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 0<<16 | 0<<1 | 1<<0, "bgel"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 0<<16 | 1<<1 | 1<<0, "bgela"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 16<<1 | 0<<0, "bgelr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 16<<1 | 1<<0, "bgelrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 1<<16 | 0<<1 | 0<<0, "bgt"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 1<<16 | 1<<1 | 0<<0, "bgta"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 1<<16 | 528<<1 | 0<<0, "bgtctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 1<<16 | 528<<1 | 1<<0, "bgtctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 1<<16 | 0<<1 | 1<<0, "bgtl"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 1<<16 | 1<<1 | 1<<0, "bgtla"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 1<<16 | 16<<1 | 0<<0, "bgtlr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 1<<16 | 16<<1 | 1<<0, "bgtlrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 1<<16 | 0<<1 | 0<<0, "ble"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 1<<16 | 1<<1 | 0<<0, "blea"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 528<<1 | 0<<0, "blectr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 528<<1 | 1<<0, "blectrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 1<<16 | 0<<1 | 1<<0, "blel"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 1<<16 | 1<<1 | 1<<0, "blela"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 16<<1 | 0<<0, "blelr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 16<<1 | 1<<0, "blelrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 0<<16 | 0<<1 | 0<<0, "blt"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 0<<16 | 1<<1 | 0<<0, "blta"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 0<<16 | 528<<1 | 0<<0, "bltctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 0<<16 | 528<<1 | 1<<0, "bltctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 0<<16 | 0<<1 | 1<<0, "bltl"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 0<<16 | 1<<1 | 1<<0, "bltla"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 0<<16 | 16<<1 | 0<<0, "bltlr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 0<<16 | 16<<1 | 1<<0, "bltlrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 2<<16 | 0<<1 | 0<<0, "bne"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 2<<16 | 1<<1 | 0<<0, "bnea"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 2<<16 | 528<<1 | 0<<0, "bnectr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 2<<16 | 528<<1 | 1<<0, "bnectrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 2<<16 | 0<<1 | 1<<0, "bnel"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 2<<16 | 1<<1 | 1<<0, "bnela"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 2<<16 | 16<<1 | 0<<0, "bnelr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 2<<16 | 16<<1 | 1<<0, "bnelrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 1<<16 | 0<<1 | 0<<0, "bng"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 1<<16 | 1<<1 | 0<<0, "bnga"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 528<<1 | 0<<0, "bngctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 528<<1 | 1<<0, "bngctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 1<<16 | 0<<1 | 1<<0, "bngl"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 1<<16 | 1<<1 | 1<<0, "bngla"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 16<<1 | 0<<0, "bnglr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 1<<16 | 16<<1 | 1<<0, "bnglrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 0<<16 | 0<<1 | 0<<0, "bnl"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 0<<16 | 1<<1 | 0<<0, "bnla"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 528<<1 | 0<<0, "bnlctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 528<<1 | 1<<0, "bnlctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 0<<16 | 0<<1 | 1<<0, "bnll"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 0<<16 | 1<<1 | 1<<0, "bnlla"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 16<<1 | 0<<0, "bnllr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 0<<16 | 16<<1 | 1<<0, "bnllrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 3<<16 | 0<<1 | 0<<0, "bns"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 3<<16 | 1<<1 | 0<<0, "bnsa"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 528<<1 | 0<<0, "bnsctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 528<<1 | 1<<0, "bnsctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 3<<16 | 0<<1 | 1<<0, "bnsl"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 3<<16 | 1<<1 | 1<<0, "bnsla"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 16<<1 | 0<<0, "bnslr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 16<<1 | 1<<0, "bnslrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 3<<16 | 0<<1 | 0<<0, "bnu"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 3<<16 | 1<<1 | 0<<0, "bnua"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 528<<1 | 0<<0, "bnuctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 528<<1 | 1<<0, "bnuctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 4<<21 | 3<<16 | 0<<1 | 1<<0, "bnul"},
|
|
{0, OP_BICR_BDA, 16<<26 | 4<<21 | 3<<16 | 1<<1 | 1<<0, "bnula"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 16<<1 | 0<<0, "bnulr"},
|
|
{0, OP_BICR_BH, 19<<26 | 4<<21 | 3<<16 | 16<<1 | 1<<0, "bnulrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 3<<16 | 0<<1 | 0<<0, "bso"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 3<<16 | 1<<1 | 0<<0, "bsoa"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 528<<1 | 0<<0, "bsoctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 528<<1 | 1<<0, "bsoctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 3<<16 | 0<<1 | 1<<0, "bsol"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 3<<16 | 1<<1 | 1<<0, "bsola"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 16<<1 | 0<<0, "bsolr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 16<<1 | 1<<0, "bsolrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 3<<16 | 0<<1 | 0<<0, "bun"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 3<<16 | 1<<1 | 0<<0, "buna"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 528<<1 | 0<<0, "bunctr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 528<<1 | 1<<0, "bunctrl"},
|
|
{0, OP_BICR_BDL, 16<<26 | 12<<21 | 3<<16 | 0<<1 | 1<<0, "bunl"},
|
|
{0, OP_BICR_BDA, 16<<26 | 12<<21 | 3<<16 | 1<<1 | 1<<0, "bunla"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 16<<1 | 0<<0, "bunlr"},
|
|
{0, OP_BICR_BH, 19<<26 | 12<<21 | 3<<16 | 16<<1 | 1<<0, "bunlrl"},
|
|
|
|
/* extended m for cr logic (page 147) */
|
|
{0, OP_BT_BT_BT, 19<<26 | 289<<1, "crset"},
|
|
{0, OP_BT_BT_BT, 19<<26 | 193<<1, "crclr"},
|
|
{0, OP_BT_BA_BA, 19<<26 | 449<<1, "crmove"},
|
|
{0, OP_BT_BA_BA, 19<<26 | 33<<1, "crnot"},
|
|
|
|
/* Fixed point instructions (page 29) */
|
|
|
|
{0, OP_RT_RA_D, 34<<26, "lbz"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 87<<1, "lbzx"},
|
|
{0, OP_RT_RA_D, 35<<26, "lbzu"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 119<<1, "lbzux"},
|
|
{0, OP_RT_RA_D, 40<<26, "lhz"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 279<<1, "lhzx"},
|
|
{0, OP_RT_RA_D, 41<<26, "lhzu"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 311<<1, "lhzux"},
|
|
{0, OP_RT_RA_D, 42<<26, "lha"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 343<<1, "lhax"},
|
|
{0, OP_RT_RA_D, 43<<26, "lhau"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 375<<1, "lhaux"},
|
|
{0, OP_RT_RA_D, 32<<26, "lwz"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 23<<1, "lwzx"},
|
|
{0, OP_RT_RA_D, 33<<26, "lwzu"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 55<<1, "lwzux"},
|
|
{0, OP_RT_RA_DS, 58<<26 | 2<<0, "lwa"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 341<<1, "lwax"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 363<<1, "lwaux"},
|
|
{0, OP_RT_RA_DS, 58<<26, "ld"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 21<<1, "ldx"},
|
|
{0, OP_RT_RA_DS, 58<<26 | 1<<0, "ldu"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 53<<1, "ldux"},
|
|
|
|
{0, OP_RS_RA_D, 38<<26, "stb"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 215<<1, "stbx"},
|
|
{0, OP_RS_RA_D, 39<<26, "stbu"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 247<<1, "stbux"},
|
|
{0, OP_RS_RA_D, 44<<26, "sth"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 407<<1, "sthx"},
|
|
{0, OP_RS_RA_D, 45<<26, "sthu"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 439<<1, "sthux"},
|
|
{0, OP_RS_RA_D, 36<<26, "stw"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 151<<1, "stwx"},
|
|
{0, OP_RS_RA_D, 37<<26, "stwu"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 183<<1, "stwux"},
|
|
{0, OP_RS_RA_DS, 62<<26, "std"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 149<<1, "stdx"},
|
|
{0, OP_RS_RA_DS, 62<<26 | 1<<0, "stdu"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 181<<1, "stdux"},
|
|
|
|
/* page 42 */
|
|
{0, OP_RT_RA_RB, 31<<26 | 790<<1, "lhbrx"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 534<<1, "lwbrx"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 918<<1, "sthbrx"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 662<<1, "stwbrx"},
|
|
|
|
/* page 44 */
|
|
{0, OP_RT_RA_D, 46<<26, "lmw"},
|
|
{0, OP_RS_RA_D, 47<<26, "stmw"},
|
|
|
|
/* page 45 */
|
|
{0, OP_RT_RA_NB, 31<<26 | 597<<1, "lswi"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 533<<1, "lswx"},
|
|
{0, OP_RS_RA_NB, 31<<26 | 725<<1, "stswi"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 661<<1, "stswx"},
|
|
|
|
/* page 49 */
|
|
{0, OP_RT_RA_SI, 14<<26, "addi"},
|
|
{0, OP_RT_RA_SI, 15<<26, "addis"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 266<<1, "add"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 266<<1, "addo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 40<<1, "subf"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 40<<1, "subfo"},
|
|
{0, OP_RT_RA_SI_addic, 12<<26, "addic"}, /* special case C */
|
|
{0, OP_RT_RA_SI, 8<<26, "subfic"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 10<<1, "addc"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 10<<1, "addco"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 8<<1, "subfc"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 8<<1, "subfco"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 138<<1, "adde"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 138<<1, "addeo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 136<<1, "subfe"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 136<<1, "subfeo"},
|
|
{0, OP_RT_RA_C, 31<<26 | 0<<10 | 234<<1, "addme"},
|
|
{0, OP_RT_RA_C, 31<<26 | 1<<10 | 234<<1, "addmeo"},
|
|
{0, OP_RT_RA_C, 31<<26 | 0<<10 | 232<<1, "subfme"},
|
|
{0, OP_RT_RA_C, 31<<26 | 1<<10 | 232<<1, "subfmeo"},
|
|
{0, OP_RT_RA_C, 31<<26 | 0<<10 | 202<<1, "addze"},
|
|
{0, OP_RT_RA_C, 31<<26 | 1<<10 | 202<<1, "addzeo"},
|
|
{0, OP_RT_RA_C, 31<<26 | 0<<10 | 200<<1, "subfze"},
|
|
{0, OP_RT_RA_C, 31<<26 | 1<<10 | 200<<1, "subfzeo"},
|
|
{0, OP_RT_RA_C, 31<<26 | 0<<10 | 104<<1, "neg"},
|
|
{0, OP_RT_RA_C, 31<<26 | 1<<10 | 104<<1, "nego"},
|
|
|
|
/* extended m for addition (pages 153, 154) */
|
|
{0, OP_RT_RA_D, 14<<26, "la"},
|
|
{0, OP_RT_SI, 14<<26 | 0<<16, "li"},
|
|
{0, OP_RT_SI, 15<<26 | 0<<16, "lis"},
|
|
|
|
/* extended m for subtraction (pages 147, 148) */
|
|
{0, OP_RT_RB_RA_C, 31<<26 | 0<<10 | 40<<1, "sub"},
|
|
{0, OP_RT_RB_RA_C, 31<<26 | 1<<10 | 40<<1, "subo"},
|
|
{0, OP_RT_RB_RA_C, 31<<26 | 0<<10 | 8<<1, "subc"},
|
|
{0, OP_RT_RB_RA_C, 31<<26 | 0<<10 | 8<<1, "subco"},
|
|
{0, OP_RT_RA_SI_subi, 14<<26, "subi"},
|
|
{0, OP_RT_RA_SI_subi, 15<<26, "subis"},
|
|
{0, OP_RT_RA_SI_subic, 12<<26, "subic"},
|
|
|
|
/* page 54 */
|
|
{0, OP_RT_RA_SI, 7<<26, "mulli"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 233<<1, "mulld"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 233<<1, "mulldo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 235<<1, "mullw"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 235<<1, "mullwo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 73<<1, "mulhd"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 75<<1, "mulhw"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 9<<1, "mulhdu"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 11<<1, "mulhwu"},
|
|
|
|
/* page 56 */
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 489<<1, "divd"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 489<<1, "divdo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 491<<1, "divw"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 491<<1, "divwo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 457<<1, "divdu"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 457<<1, "divduo"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 0<<10 | 459<<1, "divwu"},
|
|
{0, OP_RT_RA_RB_C, 31<<26 | 1<<10 | 459<<1, "divwuo"},
|
|
|
|
/* page 58 */
|
|
{0, OP_BF_L_RA_SI, 11<<26, "cmpi"},
|
|
{0, OP_BF_L_RA_RB, 31<<26 | 0<<1, "cmp"},
|
|
{0, OP_BF_L_RA_UI, 10<<26, "cmpli"},
|
|
{0, OP_BF_L_RA_RB, 31<<26 | 32<<1, "cmpl"},
|
|
|
|
/* extended m for comparison (page 149) */
|
|
{0, OP_BF_RA_SI, 11<<26 | 1<<21, "cmpdi"},
|
|
{0, OP_BF_RA_RB, 31<<26 | 1<<21 | 0<<1, "cmpd"},
|
|
{0, OP_BF_RA_UI, 10<<26 | 1<<21, "cmpldi"},
|
|
{0, OP_BF_RA_RB, 31<<26 | 1<<21 | 32<<1, "cmpld"},
|
|
{0, OP_BF_RA_SI, 11<<26 | 0<<21, "cmpwi"},
|
|
{0, OP_BF_RA_RB, 31<<26 | 0<<21 | 0<<1, "cmpw"},
|
|
{0, OP_BF_RA_UI, 10<<26 | 0<<21, "cmplwi"},
|
|
{0, OP_BF_RA_RB, 31<<26 | 0<<21 | 32<<1, "cmplw"},
|
|
|
|
/* page 60 */
|
|
{0, OP_TO_RA_SI, 2<<26, "tdi"},
|
|
{0, OP_TO_RA_SI, 3<<26, "twi"},
|
|
{0, OP_TO_RA_RB, 31<<26 | 68<<1, "td"},
|
|
{0, OP_TO_RA_RB, 31<<26 | 4<<1, "tw"},
|
|
|
|
/* extended m for traps (page 150) */
|
|
{0, OP_TOX_RA_RB, 31<<26 | 4<<21 | 68<<1, "tdeq"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 4<<21, "tdeqi"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 12<<21 | 68<<1, "tdge"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 12<<21, "tdgei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 8<<21 | 68<<1, "tdgt"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 8<<21, "tdgti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 20<<21 | 68<<1, "tdle"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 20<<21, "tdlei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 5<<21 | 68<<1, "tdlge"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 5<<21, "tdlgei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 1<<21 | 68<<1, "tdlgt"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 1<<21, "tdlgti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 6<<21 | 68<<1, "tdlle"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 6<<21, "tdllei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 2<<21 | 68<<1, "tdllt"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 2<<21, "tdllti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 6<<21 | 68<<1, "tdlng"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 6<<21, "tdlngi"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 5<<21 | 68<<1, "tdlnl"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 5<<21, "tdlnli"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 16<<21 | 68<<1, "tdlt"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 16<<21, "tdlti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 24<<21 | 68<<1, "tdne"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 24<<21, "tdnei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 20<<21 | 68<<1, "tdng"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 20<<21, "tdngi"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 12<<21 | 68<<1, "tdnl"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 12<<21, "tdnli"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 31<<21 | 68<<1, "tdu"},
|
|
{0, OP_TOX_RA_SI, 2<<26 | 31<<21, "tdui"},
|
|
{0, OP, 31<<26 | 31<<21 | 4<<1, "trap"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 4<<21 | 4<<1, "tweq"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 4<<21, "tweqi"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 12<<21 | 4<<1, "twge"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 12<<21, "twgei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 8<<21 | 4<<1, "twgt"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 8<<21, "twgti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 20<<21 | 4<<1, "twle"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 20<<21, "twlei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 5<<21 | 4<<1, "twlge"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 5<<21, "twlgei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 1<<21 | 4<<1, "twlgt"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 1<<21, "twlgti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 6<<21 | 4<<1, "twlle"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 6<<21, "twllei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 2<<21 | 4<<1, "twllt"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 2<<21, "twllti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 6<<21 | 4<<1, "twlng"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 6<<21, "twlngi"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 5<<21 | 4<<1, "twlnl"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 5<<21, "twlnli"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 16<<21 | 4<<1, "twlt"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 16<<21, "twlti"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 24<<21 | 4<<1, "twne"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 24<<21, "twnei"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 20<<21 | 4<<1, "twng"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 20<<21, "twngi"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 12<<21 | 4<<1, "twnl"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 12<<21, "twnli"},
|
|
{0, OP_TOX_RA_RB, 31<<26 | 31<<21 | 4<<1, "twu"},
|
|
{0, OP_TOX_RA_SI, 3<<26 | 31<<21, "twui"},
|
|
|
|
/* page 62 */
|
|
{0, OP_RA_RS_UI_CC, 28<<26, "andi"}, /* C compulsory */
|
|
{0, OP_RA_RS_UI_CC, 29<<26, "andis"}, /* C compulsory */
|
|
{0, OP_RA_RS_UI, 24<<26, "ori"},
|
|
{0, OP_RA_RS_UI, 25<<26, "oris"},
|
|
{0, OP_RA_RS_UI, 26<<26, "xori"},
|
|
{0, OP_RA_RS_UI, 27<<26, "xoris"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 28<<1, "and"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 444<<1, "or"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 316<<1, "xor"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 476<<1, "nand"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 124<<1, "nor"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 284<<1, "eqv"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 60<<1, "andc"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 412<<1, "orc"},
|
|
{0, OP_RA_RS_C, 31<<26 | 954<<1, "extsb"},
|
|
{0, OP_RA_RS_C, 31<<26 | 922<<1, "extsh"},
|
|
{0, OP_RA_RS_C, 31<<26 | 986<<1, "extsw"},
|
|
{0, OP_RA_RS_C, 31<<26 | 58<<1, "cntlzd"},
|
|
{0, OP_RA_RS_C, 31<<26 | 26<<1, "cntlzw"},
|
|
|
|
/* extended m using logic (pages 153, 154) */
|
|
{0, OP_RA_RS_RA_C, 31<<26 | 444<<1, "mr"},
|
|
{0, OP, 24<<26, "nop"},
|
|
{0, OP_RA_RS_RA_C, 31<<26 | 124<<1, "not"},
|
|
|
|
/* page 69 */
|
|
{0, OP_RA_RS_SH6_MB6_C, 30<<26 | 0<<2, "rldicl"},
|
|
{0, OP_RA_RS_SH6_MB6_C, 30<<26 | 1<<2, "rldicr"},
|
|
{0, OP_RA_RS_SH6_MB6_C, 30<<26 | 2<<2, "rldic"},
|
|
{0, OP_RA_RS_SH5_MB5_ME5_C, 21<<26, "rlwinm"},
|
|
{0, OP_RA_RS_RB_MB6_C, 30<<26 | 8<<1, "rldcl"},
|
|
{0, OP_RA_RS_RB_MB6_C, 30<<26 | 9<<1, "rldcr"},
|
|
{0, OP_RA_RS_RB_MB5_ME5_C, 23<<26, "rlwnm"},
|
|
{0, OP_RA_RS_SH6_MB6_C, 30<<26 | 3<<2, "rldimi"},
|
|
{0, OP_RA_RS_SH5_MB5_ME5_C, 20<<26, "rlwimi"},
|
|
|
|
/* extended m for doubleword rotation (page 151) */
|
|
{0, OP_clrlsldi, 30<<26 | 2<<2, "clrlsldi"},
|
|
{0, OP_clrldi, 30<<26 | 0<<2, "clrldi"},
|
|
{0, OP_clrrdi, 30<<26 | 1<<2, "clrrdi"},
|
|
{0, OP_extldi, 30<<26 | 0<<2, "extldi"},
|
|
{0, OP_extrdi, 30<<26 | 1<<2, "extrdi"},
|
|
{0, OP_insrdi, 30<<26 | 3<<2, "insrdi"},
|
|
{0, OP_RA_RS_RB_C, 30<<26 | MB6(0) | 8<<1, "rotld"},
|
|
{0, OP_RA_RS_SH6_C, 30<<26 | MB6(0) | 0<<2, "rotldi"},
|
|
{0, OP_rotrdi, 30<<26 | 0<<2, "rotrdi"},
|
|
{0, OP_sldi, 30<<26 | 1<<2, "sldi"},
|
|
{0, OP_srdi, 30<<26 | 0<<2, "srdi"},
|
|
|
|
/* extended m for word rotation (page 152) */
|
|
{0, OP_clrlslwi, 21<<26, "clrlslwi"},
|
|
{0, OP_clrlwi, 21<<26, "clrlwi"},
|
|
{0, OP_clrrwi, 21<<26, "clrrwi"},
|
|
{0, OP_extlwi, 21<<26, "extlwi"},
|
|
{0, OP_extrwi, 21<<26, "extrwi"},
|
|
{0, OP_inslwi, 20<<26, "inslwi"},
|
|
{0, OP_insrwi, 20<<26, "insrwi"},
|
|
{0, OP_RA_RS_RB_C, 23<<26 | 0<<6 | 31<<1, "rotlw"},
|
|
{0, OP_RA_RS_SH5_C, 21<<26 | 0<<6 | 31<<1, "rotlwi"},
|
|
{0, OP_rotrwi, 21<<26, "rotrwi"},
|
|
{0, OP_slwi, 21<<26, "slwi"},
|
|
{0, OP_srwi, 21<<26, "srwi"},
|
|
|
|
/* page 74 */
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 27<<1, "sld"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 24<<1, "slw"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 539<<1, "srd"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 536<<1, "srw"},
|
|
{0, OP_RA_RS_SH6_C, 31<<26 | 413<<2, "sradi"},
|
|
{0, OP_RA_RS_SH5_C, 31<<26 | 824<<1, "srawi"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 794<<1, "srad"},
|
|
{0, OP_RA_RS_RB_C, 31<<26 | 792<<1, "sraw"},
|
|
|
|
/* page 78 */
|
|
{0, OP_RS_SPR, 31<<26 | 467<<1, "mtspr"},
|
|
{0, OP_RT_SPR, 31<<26 | 339<<1, "mfspr"},
|
|
{0, OP_RS_FXM, 31<<26 | 0<<20 | 144<<1, "mtcrf"},
|
|
{0, OP_RT, 31<<26 | 0<<20 | 19<<1, "mfcr"},
|
|
|
|
/* extended m for special purpose registers (page 153) */
|
|
{0, OP_RT, 31<<26 | 9<<16 | 0<<11 | 339<<1, "mfctr"},
|
|
{0, OP_RT, 31<<26 | 8<<16 | 0<<11 | 339<<1, "mflr"},
|
|
{0, OP_RT, 31<<26 | 1<<16 | 0<<11 | 339<<1, "mfxer"},
|
|
{0, OP_RS, 31<<26 | 9<<16 | 0<<11 | 467<<1, "mtctr"},
|
|
{0, OP_RS, 31<<26 | 8<<16 | 0<<11 | 467<<1, "mtlr"},
|
|
{0, OP_RS, 31<<26 | 1<<16 | 0<<11 | 467<<1, "mtxer"},
|
|
|
|
/* extended m for condition register (page 154) */
|
|
{0, OP_RS, 31<<26 | 0<<20 | 255<<12 | 144<<1, "mtcr"},
|
|
|
|
/* Floating point instructions (page 83) */
|
|
|
|
/* page 98 */
|
|
{0, OP_FRT_RA_D, 48<<26, "lfs"},
|
|
{0, OP_FRT_RA_RB, 31<<26 | 535<<1, "lfsx"},
|
|
{0, OP_FRT_RA_D, 49<<26, "lfsu"},
|
|
{0, OP_FRT_RA_RB, 31<<26 | 567<<1, "lfsux"},
|
|
{0, OP_FRT_RA_D, 50<<26, "lfd"},
|
|
{0, OP_FRT_RA_RB, 31<<26 | 599<<1, "lfdx"},
|
|
{0, OP_FRT_RA_D, 51<<26, "lfdu"},
|
|
{0, OP_FRT_RA_RB, 31<<26 | 631<<1, "lfdux"},
|
|
{0, OP_FRS_RA_D, 52<<26, "stfs"},
|
|
{0, OP_FRS_RA_RB, 31<<26 | 663<<1, "stfsx"},
|
|
{0, OP_FRS_RA_D, 53<<26, "stfsu"},
|
|
{0, OP_FRS_RA_RB, 31<<26 | 695<<1, "stfsux"},
|
|
{0, OP_FRS_RA_D, 54<<26, "stfd"},
|
|
{0, OP_FRS_RA_RB, 31<<26 | 727<<1, "stfdx"},
|
|
{0, OP_FRS_RA_D, 55<<26, "stfdu"},
|
|
{0, OP_FRS_RA_RB, 31<<26 | 759<<1, "stfdux"},
|
|
{0, OP_FRS_RA_RB, 31<<26 | 983<<1, "stfiwx"},
|
|
|
|
/* page 104 */
|
|
{0, OP_FRT_FRB_C, 63<<26 | 72<<1, "fmr"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 40<<1, "fneg"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 264<<1, "fabs"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 136<<1, "fnabs"},
|
|
|
|
{0, OP_FRT_FRA_FRB_C, 63<<26 | 21<<1, "fadd"},
|
|
{0, OP_FRT_FRA_FRB_C, 59<<26 | 21<<1, "fadds"},
|
|
{0, OP_FRT_FRA_FRB_C, 63<<26 | 20<<1, "fsub"},
|
|
{0, OP_FRT_FRA_FRB_C, 59<<26 | 20<<1, "fsubs"},
|
|
{0, OP_FRT_FRA_FRC_C, 63<<26 | 25<<1, "fmul"},
|
|
{0, OP_FRT_FRA_FRC_C, 59<<26 | 25<<1, "fmuls"},
|
|
{0, OP_FRT_FRA_FRB_C, 63<<26 | 18<<1, "fdiv"},
|
|
{0, OP_FRT_FRA_FRB_C, 59<<26 | 18<<1, "fdivs"},
|
|
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 63<<26 | 29<<1, "fmadd"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 59<<26 | 29<<1, "fmadds"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 63<<26 | 28<<1, "fmsub"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 59<<26 | 28<<1, "fmsubs"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 63<<26 | 31<<1, "fnmadd"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 59<<26 | 31<<1, "fnmadds"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 63<<26 | 30<<1, "fnmsub"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 59<<26 | 30<<1, "fnmsubs"},
|
|
|
|
/* page 109 */
|
|
{0, OP_FRT_FRB_C, 63<<26 | 12<<1, "frsp"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 814<<1, "fctid"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 815<<1, "fctidz"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 14<<1, "fctiw"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 15<<1, "fctiwz"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 846<<1, "fcfid"},
|
|
|
|
{0, OP_BF_FRA_FRB, 63<<26 | 0<<1, "fcmpu"},
|
|
{0, OP_BF_FRA_FRB, 63<<26 | 32<<1, "fcmpo"},
|
|
|
|
{0, OP_FRT_C, 63<<26 | 583<<1, "mffs"},
|
|
{0, OP_BF_BFA, 63<<26 | 64<<1, "mcrfs"},
|
|
{0, OP_BF_U_C, 63<<26 | 134<<1, "mtfsfi"},
|
|
{0, OP_FLM_FRB_C, 63<<26 | 711<<1, "mtfsf"},
|
|
{0, OP_BT_C, 63<<26 | 70<<1, "mtfsb0"},
|
|
{0, OP_BT_C, 63<<26 | 38<<1, "mtfsb1"},
|
|
|
|
{0, OP_FRT_FRB_C, 63<<26 | 22<<1, "fsqrt"},
|
|
{0, OP_FRT_FRB_C, 59<<26 | 22<<1, "fsqrts"},
|
|
{0, OP_FRT_FRB_C, 59<<26 | 24<<1, "fres"},
|
|
{0, OP_FRT_FRB_C, 63<<26 | 26<<1, "frsqrte"},
|
|
{0, OP_FRT_FRA_FRC_FRB_C, 63<<26 | 23<<1, "fsel"},
|
|
|
|
/* Storage control instructions (Book II, page 15) */
|
|
|
|
/* Book II, page 17 */
|
|
{0, OP_RA_RB, 31<<26 | 982<<1, "icbi"},
|
|
{0, OP_RA_RB_TH /* page 35 */, 31<<26 | 278<<1, "dcbt"},
|
|
{0, OP_RA_RB, 31<<26 | 246<<1, "dcbtst"},
|
|
{0, OP_RA_RB, 31<<26 | 1014<<1, "dcbz"},
|
|
{0, OP_RA_RB, 31<<26 | 54<<1, "dcbst"},
|
|
{0, OP_RA_RB, 31<<26 | 86<<1, "dcbf"},
|
|
{0, OP, 19<<26 | 150<<1, "isync"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 20<<1, "lwarx"},
|
|
{0, OP_RT_RA_RB, 31<<26 | 84<<1, "ldarx"},
|
|
{0, OP_RS_RA_RB_CC, 31<<26 | 150<<1 | 1<<0, "stwcx"},
|
|
{0, OP_RS_RA_RB_CC, 31<<26 | 150<<1 | 1<<0, "stdcx"},
|
|
{0, OP_L, 31<<26 | 598<<1, "sync"},
|
|
{0, OP, 31<<26 | 1<<21 | 598<<1, "lwsync"},
|
|
{0, OP, 31<<26 | 2<<21 | 598<<1, "ptesync"},
|
|
{0, OP, 31<<26 | 854<<1, "eieio"},
|
|
|
|
/* Time base (Book II, page 30) */
|
|
|
|
{0, OP_RT_TBR, 31<<26 | 371<<1, "mftb"},
|
|
{0, OP_RT, 31<<26 | 8<<11 | 13<<16 | 371<<1, "mftbu"},
|
|
|
|
/* External control (Book II, page 33) */
|
|
|
|
{0, OP_RT_RA_RB, 31<<26 | 310<<1, "eciwx"},
|
|
{0, OP_RS_RA_RB, 31<<26 | 438<<1, "ecowx"},
|