Add more page numbers from PowerPC version 2.01. Remove "xnop" not in 2.01, add "mtcr" from 2.01. Add "lwarx" and the other instructions from Book II. I did not try all the newly added instructions, but these seem to work: dcbt, dcbtst, icibi, isync, lwarx, stwcx., mftb, mftbu In man/powerpc_as.6 (not installed), add a summary of the registers and addressing modes (like in i386_as.6), describe short forms, update description of hi16/ha16, add CAVEATS about instructions that some processors can't run.
		
			
				
	
	
		
			691 lines
		
	
	
	
		
			41 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			691 lines
		
	
	
	
		
			41 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",
 |