ack/mach/powerpc/as/mach3.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"},