ppc: support alias instructions. update Python & Java bindings accordingly
diff --git a/arch/PowerPC/PPCGenAsmWriter.inc b/arch/PowerPC/PPCGenAsmWriter.inc
index 00178ba..9459158 100644
--- a/arch/PowerPC/PPCGenAsmWriter.inc
+++ b/arch/PowerPC/PPCGenAsmWriter.inc
@@ -3683,73 +3683,73 @@
     break;
   case 3:
     // BCC
-    printPredicateOperand(MI, 0, O, "pm"); 
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     SStream_concat0(O, ", "); 
     printBranchOperand(MI, 2, O); 
     return;
     break;
   case 4:
     // BCCA
-    SStream_concat0(O, "a"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "a");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     SStream_concat0(O, ", "); 
     printAbsBranchOperand(MI, 2, O); 
     return;
     break;
   case 5:
     // BCCCTR, BCCCTR8
-    SStream_concat0(O, "ctr"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "ctr");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     return;
     break;
   case 6:
     // BCCCTRL, BCCCTRL8
-    SStream_concat0(O, "ctrl"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "ctrl");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     return;
     break;
   case 7:
     // BCCL
-    SStream_concat0(O, "l"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "l");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     SStream_concat0(O, ", "); 
     printBranchOperand(MI, 2, O); 
     return;
     break;
   case 8:
     // BCCLA
-    SStream_concat0(O, "la"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "la");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     SStream_concat0(O, ", "); 
     printAbsBranchOperand(MI, 2, O); 
     return;
     break;
   case 9:
     // BCCLR
-    SStream_concat0(O, "lr"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "lr");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     return;
     break;
   case 10:
     // BCCLRL
-    SStream_concat0(O, "lrl"); 
-    printPredicateOperand(MI, 0, O, "pm"); 
+    SStream_concat0(O, "lrl");
+    printPredicateOperand(MI, 0, O, "pm");
     SStream_concat0(O, " "); 
-    printPredicateOperand(MI, 0, O, "reg"); 
+    printPredicateOperand(MI, 0, O, "reg");
     return;
     break;
   case 11:
@@ -3759,17 +3759,19 @@
     break;
   case 12:
     // BL8_NOP, BL8_NOP_TLS, BLA8_NOP
-    SStream_concat0(O, "\n\tnop"); 
+    // SStream_concat0(O, "\n\tnop"); 	// qq
     return;
     break;
   case 13:
     // MFTB8
-    SStream_concat0(O, ", 268"); 
+    SStream_concat0(O, ", 268");
+	op_addImm(MI, 268);
     return;
     break;
   case 14:
     // MFVRSAVE, MFVRSAVEv
-    SStream_concat0(O, ", 256"); 
+    SStream_concat0(O, ", 256");
+	op_addImm(MI, 256);
     return;
     break;
   case 15:
@@ -3780,7 +3782,8 @@
     break;
   case 16:
     // V_SETALLONES, V_SETALLONESB, V_SETALLONESH
-    SStream_concat0(O, ", -1"); 
+    SStream_concat0(O, ", -1");
+	op_addImm(MI, -1);
     return;
     break;
   }
diff --git a/arch/PowerPC/PPCInstPrinter.c b/arch/PowerPC/PPCInstPrinter.c
index ff0afc7..d5ede00 100644
--- a/arch/PowerPC/PPCInstPrinter.c
+++ b/arch/PowerPC/PPCInstPrinter.c
@@ -36,6 +36,7 @@
 static void printOperand(MCInst *MI, unsigned OpNo, SStream *O);
 static void printInstruction(MCInst *MI, SStream *O, MCRegisterInfo *MRI);
 static void printAbsBranchOperand(MCInst *MI, unsigned OpNo, SStream *O);
+static char *printAliasInstr(MCInst *MI, SStream *OS, void *info);
 
 static void set_mem_access(MCInst *MI, bool status)
 {
@@ -60,7 +61,7 @@
 		return;
 
 	// check if this insn has branch hint
-	if (strrchr(insn_asm, '+') != NULL) {
+	if (strrchr(insn_asm, '+') != NULL && !strstr(insn_asm, ".+")) {
 		insn->detail->ppc.bh = PPC_BH_PLUS;
 	} else if (strrchr(insn_asm, '-') != NULL) {
 		insn->detail->ppc.bh = PPC_BH_MINUS;
@@ -72,6 +73,8 @@
 
 void PPC_printInst(MCInst *MI, SStream *O, void *Info)
 {
+	char *mnem;
+
 	// Check for slwi/srwi mnemonics.
 	if (MCInst_getOpcode(MI) == PPC_RLWINM) {
 		unsigned char SH = (unsigned char)MCOperand_getImm(MCInst_getOperand(MI, 2));
@@ -81,11 +84,13 @@
 
 		if (SH <= 31 && MB == 0 && ME == (31-SH)) {
 			SStream_concat0(O, "slwi\t");
+			MCInst_setOpcodePub(MI, PPC_INS_SLWI);
 			useSubstituteMnemonic = true;
 		}
 
 		if (SH <= 31 && MB == (32-SH) && ME == 31) {
 			SStream_concat0(O, "srwi\t");
+			MCInst_setOpcodePub(MI, PPC_INS_SRWI);
 			useSubstituteMnemonic = true;
 			SH = 32-SH;
 		}
@@ -106,6 +111,7 @@
 	if ((MCInst_getOpcode(MI) == PPC_OR || MCInst_getOpcode(MI) == PPC_OR8) &&
 			MCOperand_getReg(MCInst_getOperand(MI, 1)) == MCOperand_getReg(MCInst_getOperand(MI, 1))) {
 		SStream_concat0(O, "mr\t");
+		MCInst_setOpcodePub(MI, PPC_INS_MR);
 		printOperand(MI, 0, O);
 		SStream_concat0(O, ", ");
 		printOperand(MI, 1, O);
@@ -118,6 +124,7 @@
 		// rldicr RA, RS, SH, 63-SH == sldi RA, RS, SH
 		if (63-SH == ME) {
 			SStream_concat0(O, "sldi\t");
+			MCInst_setOpcodePub(MI, PPC_INS_SLDI);
 			printOperand(MI, 0, O);
 			SStream_concat0(O, ", ");
 			printOperand(MI, 1, O);
@@ -130,7 +137,16 @@
 		}
 	}
 
-	printInstruction(MI, O, NULL);
+	mnem = printAliasInstr(MI, O, Info);
+	if (mnem) {
+		// check to remove the last letter of ('.', '-', '+')
+		if (mnem[strlen(mnem) - 1] == '-' || mnem[strlen(mnem) - 1] == '+' || mnem[strlen(mnem) - 1] == '.')
+			mnem[strlen(mnem) - 1] = '\0';
+
+		MCInst_setOpcodePub(MI, PPC_map_insn(mnem));
+		cs_mem_free(mnem);
+	} else
+		printInstruction(MI, O, NULL);
 }
 
 
@@ -420,23 +436,28 @@
 
 static void printAbsBranchOperand(MCInst *MI, unsigned OpNo, SStream *O)
 {
-	int tmp;
+	int imm;
 	if (!MCOperand_isImm(MCInst_getOperand(MI, OpNo))) {
 		printOperand(MI, OpNo, O);
 		return;
 	}
 
-	tmp = (int)MCOperand_getImm(MCInst_getOperand(MI, OpNo)) * 4;
-	if (tmp >= 0) {
-		if (tmp > HEX_THRESHOLD)
-			SStream_concat(O, "0x%x", tmp);
+	imm = (int)MCOperand_getImm(MCInst_getOperand(MI, OpNo)) * 4;
+	if (imm >= 0) {
+		if (imm > HEX_THRESHOLD)
+			SStream_concat(O, "0x%x", imm);
 		else
-			SStream_concat(O, "%u", tmp);
+			SStream_concat(O, "%u", imm);
 	} else {
-		if (tmp < -HEX_THRESHOLD)
-			SStream_concat(O, "-0x%x", -tmp);
+		if (imm < -HEX_THRESHOLD)
+			SStream_concat(O, "-0x%x", -imm);
 		else
-			SStream_concat(O, "-%u", -tmp);
+			SStream_concat(O, "-%u", -imm);
+	}
+	if (MI->csh->detail) {
+		MI->flat_insn->detail->ppc.operands[MI->flat_insn->detail->ppc.op_count].type = PPC_OP_IMM;
+		MI->flat_insn->detail->ppc.operands[MI->flat_insn->detail->ppc.op_count].imm = imm;
+		MI->flat_insn->detail->ppc.op_count++;
 	}
 }
 
@@ -597,7 +618,16 @@
 	}
 }
 
-//#define PRINT_ALIAS_INSTR
+static void op_addImm(MCInst *MI, int v)
+{
+	if (MI->csh->detail) {
+		MI->flat_insn->detail->arm.operands[MI->flat_insn->detail->arm.op_count].type = ARM_OP_IMM;
+		MI->flat_insn->detail->arm.operands[MI->flat_insn->detail->arm.op_count].imm = v;
+		MI->flat_insn->detail->arm.op_count++;
+	}
+}
+
+#define PRINT_ALIAS_INSTR
 #include "PPCGenAsmWriter.inc"
 
 #endif
diff --git a/arch/PowerPC/PPCMapping.c b/arch/PowerPC/PPCMapping.c
index a34afc8..7135d62 100644
--- a/arch/PowerPC/PPCMapping.c
+++ b/arch/PowerPC/PPCMapping.c
@@ -491,61 +491,61 @@
 #endif
 	},
 	{
-		PPC_BCC, PPC_INS_B,
+		PPC_BCC, PPC_INS_B_CC,
 #ifndef CAPSTONE_DIET
 		{ 0 }, { 0 }, { 0 }, 1, 0
 #endif
 	},
 	{
-		PPC_BCCA, PPC_INS_B,
+		PPC_BCCA, PPC_INS_BA_CC,
 #ifndef CAPSTONE_DIET
 		{ 0 }, { 0 }, { 0 }, 1, 0
 #endif
 	},
 	{
-		PPC_BCCCTR, PPC_INS_B,
+		PPC_BCCCTR, PPC_INS_BCTR_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_CTR, 0 }, { 0 }, { 0 }, 1, 1
 #endif
 	},
 	{
-		PPC_BCCCTR8, PPC_INS_B,
+		PPC_BCCCTR8, PPC_INS_BCTR_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_CTR8, 0 }, { 0 }, { PPC_GRP_MODE64, 0 }, 1, 1
 #endif
 	},
 	{
-		PPC_BCCCTRL, PPC_INS_B,
+		PPC_BCCCTRL, PPC_INS_BCTRL_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_CTR, PPC_REG_RM, 0 }, { PPC_REG_LR, 0 }, { 0 }, 0, 0
 #endif
 	},
 	{
-		PPC_BCCCTRL8, PPC_INS_B,
+		PPC_BCCCTRL8, PPC_INS_BCTRL_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_CTR8, PPC_REG_RM, 0 }, { PPC_REG_LR8, 0 }, { PPC_GRP_MODE64, 0 }, 0, 0
 #endif
 	},
 	{
-		PPC_BCCL, PPC_INS_B,
+		PPC_BCCL, PPC_INS_BL_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_RM, 0 }, { PPC_REG_LR, 0 }, { 0 }, 0, 0
 #endif
 	},
 	{
-		PPC_BCCLA, PPC_INS_B,
+		PPC_BCCLA, PPC_INS_BLA_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_RM, 0 }, { PPC_REG_LR, 0 }, { 0 }, 0, 0
 #endif
 	},
 	{
-		PPC_BCCLR, PPC_INS_B,
+		PPC_BCCLR, PPC_INS_BLR_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_LR, PPC_REG_RM, 0 }, { 0 }, { 0 }, 1, 0
 #endif
 	},
 	{
-		PPC_BCCLRL, PPC_INS_B,
+		PPC_BCCLRL, PPC_INS_BLRL_CC,
 #ifndef CAPSTONE_DIET
 		{ PPC_REG_LR, PPC_REG_RM, 0 }, { PPC_REG_LR, 0 }, { 0 }, 0, 0
 #endif
@@ -7695,6 +7695,183 @@
 	{ PPC_INS_XXSPLTW, "xxspltw" },
 	{ PPC_INS_BCA, "bca" },
 	{ PPC_INS_BCLA, "bcla" },
+
+	// extra & alias instructions
+	{ PPC_INS_SLWI, "slwi" },
+	{ PPC_INS_SRWI, "srwi" },
+	{ PPC_INS_SLDI, "sldi" },
+	{ PPC_INS_BTA, "bta" },
+	{ PPC_INS_CRSET, "crset" },
+	{ PPC_INS_CRNOT, "crnot" },
+	{ PPC_INS_CRMOVE, "crmove" },
+	{ PPC_INS_CRCLR, "crclr" },
+	{ PPC_INS_MFBR0, "mfbr0" },
+	{ PPC_INS_MFBR1, "mfbr1" },
+	{ PPC_INS_MFBR2, "mfbr2" },
+	{ PPC_INS_MFBR3, "mfbr3" },
+	{ PPC_INS_MFBR4, "mfbr4" },
+	{ PPC_INS_MFBR5, "mfbr5" },
+	{ PPC_INS_MFBR6, "mfbr6" },
+	{ PPC_INS_MFBR7, "mfbr7" },
+	{ PPC_INS_MFXER, "mfxer" },
+	{ PPC_INS_MFRTCU, "mfrtcu" },
+	{ PPC_INS_MFRTCL, "mfrtcl" },
+	{ PPC_INS_MFDSCR, "mfdscr" },
+	{ PPC_INS_MFDSISR, "mfdsisr" },
+	{ PPC_INS_MFDAR, "mfdar" },
+	{ PPC_INS_MFSRR2, "mfsrr2" },
+	{ PPC_INS_MFSRR3, "mfsrr3" },
+	{ PPC_INS_MFCFAR, "mfcfar" },
+	{ PPC_INS_MFAMR, "mfamr" },
+	{ PPC_INS_MFPID, "mfpid" },
+	{ PPC_INS_MFTBLO, "mftblo" },
+	{ PPC_INS_MFTBHI, "mftbhi" },
+	{ PPC_INS_MFDBATU, "mfdbatu" },
+	{ PPC_INS_MFDBATL, "mfdbatl" },
+	{ PPC_INS_MFIBATU, "mfibatu" },
+	{ PPC_INS_MFIBATL, "mfibatl" },
+	{ PPC_INS_MFDCCR, "mfdccr" },
+	{ PPC_INS_MFICCR, "mficcr" },
+	{ PPC_INS_MFDEAR, "mfdear" },
+	{ PPC_INS_MFESR, "mfesr" },
+	{ PPC_INS_MFSPEFSCR, "mfspefscr" },
+	{ PPC_INS_MFTCR, "mftcr" },
+	{ PPC_INS_MFASR, "mfasr" },
+	{ PPC_INS_MFPVR, "mfpvr" },
+	{ PPC_INS_MFTBU, "mftbu" },
+	{ PPC_INS_MTCR, "mtcr" },
+	{ PPC_INS_MTBR0, "mtbr0" },
+	{ PPC_INS_MTBR1, "mtbr1" },
+	{ PPC_INS_MTBR2, "mtbr2" },
+	{ PPC_INS_MTBR3, "mtbr3" },
+	{ PPC_INS_MTBR4, "mtbr4" },
+	{ PPC_INS_MTBR5, "mtbr5" },
+	{ PPC_INS_MTBR6, "mtbr6" },
+	{ PPC_INS_MTBR7, "mtbr7" },
+	{ PPC_INS_MTXER, "mtxer" },
+	{ PPC_INS_MTDSCR, "mtdscr" },
+	{ PPC_INS_MTDSISR, "mtdsisr" },
+	{ PPC_INS_MTDAR, "mtdar" },
+	{ PPC_INS_MTSRR2, "mtsrr2" },
+	{ PPC_INS_MTSRR3, "mtsrr3" },
+	{ PPC_INS_MTCFAR, "mtcfar" },
+	{ PPC_INS_MTAMR, "mtamr" },
+	{ PPC_INS_MTPID, "mtpid" },
+	{ PPC_INS_MTTBL, "mttbl" },
+	{ PPC_INS_MTTBU, "mttbu" },
+	{ PPC_INS_MTTBLO, "mttblo" },
+	{ PPC_INS_MTTBHI, "mttbhi" },
+	{ PPC_INS_MTDBATU, "mtdbatu" },
+	{ PPC_INS_MTDBATL, "mtdbatl" },
+	{ PPC_INS_MTIBATU, "mtibatu" },
+	{ PPC_INS_MTIBATL, "mtibatl" },
+	{ PPC_INS_MTDCCR, "mtdccr" },
+	{ PPC_INS_MTICCR, "mticcr" },
+	{ PPC_INS_MTDEAR, "mtdear" },
+	{ PPC_INS_MTESR, "mtesr" },
+	{ PPC_INS_MTSPEFSCR, "mtspefscr" },
+	{ PPC_INS_MTTCR, "mttcr" },
+	{ PPC_INS_NOT, "not" },
+	{ PPC_INS_MR, "mr" },
+	{ PPC_INS_ROTLD, "rotld" },
+	{ PPC_INS_ROTLDI, "rotldi" },
+	{ PPC_INS_CLRLDI, "clrldi" },
+	{ PPC_INS_ROTLWI, "rotlwi" },
+	{ PPC_INS_CLRLWI, "clrlwi" },
+	{ PPC_INS_ROTLW, "rotlw" },
+	{ PPC_INS_SUB, "sub" },
+	{ PPC_INS_SUBC, "subc" },
+	{ PPC_INS_LWSYNC, "lwsync" },
+	{ PPC_INS_PTESYNC, "ptesync" },
+	{ PPC_INS_TDLT, "tdlt" },
+	{ PPC_INS_TDEQ, "tdeq" },
+	{ PPC_INS_TDGT, "tdgt" },
+	{ PPC_INS_TDNE, "tdne" },
+	{ PPC_INS_TDLLT, "tdllt" },
+	{ PPC_INS_TDLGT, "tdlgt" },
+	{ PPC_INS_TDU, "tdu" },
+	{ PPC_INS_TDLTI, "tdlti" },
+	{ PPC_INS_TDEQI, "tdeqi" },
+	{ PPC_INS_TDGTI, "tdgti" },
+	{ PPC_INS_TDNEI, "tdnei" },
+	{ PPC_INS_TDLLTI, "tdllti" },
+	{ PPC_INS_TDLGTI, "tdlgti" },
+	{ PPC_INS_TDUI, "tdui" },
+	{ PPC_INS_TLBREHI, "tlbrehi" },
+	{ PPC_INS_TLBRELO, "tlbrelo" },
+	{ PPC_INS_TLBWEHI, "tlbwehi" },
+	{ PPC_INS_TLBWELO, "tlbwelo" },
+	{ PPC_INS_TWLT, "twlt" },
+	{ PPC_INS_TWEQ, "tweq" },
+	{ PPC_INS_TWGT, "twgt" },
+	{ PPC_INS_TWNE, "twne" },
+	{ PPC_INS_TWLLT, "twllt" },
+	{ PPC_INS_TWLGT, "twlgt" },
+	{ PPC_INS_TWU, "twu" },
+	{ PPC_INS_TWLTI, "twlti" },
+	{ PPC_INS_TWEQI, "tweqi" },
+	{ PPC_INS_TWGTI, "twgti" },
+	{ PPC_INS_TWNEI, "twnei" },
+	{ PPC_INS_TWLLTI, "twllti" },
+	{ PPC_INS_TWLGTI, "twlgti" },
+	{ PPC_INS_TWUI, "twui" },
+	{ PPC_INS_WAITRSV, "waitrsv" },
+	{ PPC_INS_WAITIMPL, "waitimpl" },
+	{ PPC_INS_XNOP, "xnop" },
+	{ PPC_INS_XVMOVDP, "xvmovdp" },
+	{ PPC_INS_XVMOVSP, "xvmovsp" },
+	{ PPC_INS_XXSPLTD, "xxspltd" },
+	{ PPC_INS_XXMRGHD, "xxmrghd" },
+	{ PPC_INS_XXMRGLD, "xxmrgld" },
+	{ PPC_INS_XXSWAPD, "xxswapd" },
+	{ PPC_INS_BT, "bt" },
+	{ PPC_INS_BF, "bf" },
+	{ PPC_INS_BDNZT, "bdnzt" },
+	{ PPC_INS_BDNZF, "bdnzf" },
+	{ PPC_INS_BDZF, "bdzf" },
+	{ PPC_INS_BDZT, "bdzt" },
+	{ PPC_INS_BFA, "bfa" },
+	{ PPC_INS_BDNZTA, "bdnzta" },
+	{ PPC_INS_BDNZFA, "bdnzfa" },
+	{ PPC_INS_BDZTA, "bdzta" },
+	{ PPC_INS_BDZFA, "bdzfa" },
+	{ PPC_INS_BTCTR, "btctr" },
+	{ PPC_INS_BFCTR, "bfctr" },
+	{ PPC_INS_BTCTRL, "btctrl" },
+	{ PPC_INS_BFCTRL, "bfctrl" },
+	{ PPC_INS_BTL, "btl" },
+	{ PPC_INS_BFL, "bfl" },
+	{ PPC_INS_BDNZTL, "bdnztl" },
+	{ PPC_INS_BDNZFL, "bdnzfl" },
+	{ PPC_INS_BDZTL, "bdztl" },
+	{ PPC_INS_BDZFL, "bdzfl" },
+	{ PPC_INS_BTLA, "btla" },
+	{ PPC_INS_BFLA, "bfla" },
+	{ PPC_INS_BDNZTLA, "bdnztla" },
+	{ PPC_INS_BDNZFLA, "bdnzfla" },
+	{ PPC_INS_BDZTLA, "bdztla" },
+	{ PPC_INS_BDZFLA, "bdzfla" },
+	{ PPC_INS_BTLR, "btlr" },
+	{ PPC_INS_BFLR, "bflr" },
+	{ PPC_INS_BDNZTLR, "bdnztlr" },
+	{ PPC_INS_BDZTLR, "bdztlr" },
+	{ PPC_INS_BDZFLR, "bdzflr" },
+	{ PPC_INS_BTLRL, "btlrl" },
+	{ PPC_INS_BFLRL, "bflrl" },
+	{ PPC_INS_BDNZTLRL, "bdnztlrl" },
+	{ PPC_INS_BDNZFLRL, "bdnzflrl" },
+	{ PPC_INS_BDZTLRL, "bdztlrl" },
+	{ PPC_INS_BDZFLRL, "bdzflrl" },
+
+	// BccX
+	{ PPC_INS_B_CC, "b_cc" },
+	{ PPC_INS_BL_CC, "bl_cc" },
+	{ PPC_INS_BLA_CC, "bla_cc" },
+	{ PPC_INS_BLR_CC, "blr_cc" },
+	{ PPC_INS_BLRL_CC, "blrl_cc" },
+	{ PPC_INS_BA_CC, "ba_cc" },
+	{ PPC_INS_BCTR_CC, "bctr_cc" },
+	{ PPC_INS_BCTRL_CC, "bctrl_cc" },
 };
 
 // special alias insn
@@ -7821,4 +7998,58 @@
 	return 0;
 }
 
+static name_map alias_insn_name_maps[] = {
+	{ PPC_INS_BTA, "bta" },
+	{ PPC_INS_B, "blt" },
+	{ PPC_INS_B, "bgt" },
+	{ PPC_INS_B, "beq" },
+	{ PPC_INS_B, "bne" },
+
+	{ PPC_INS_BA_CC, "blta" },
+	{ PPC_INS_BA_CC, "bgta" },
+	{ PPC_INS_BA_CC, "beqa" },
+	{ PPC_INS_BA_CC, "bnea" },
+
+	{ PPC_INS_BCTR_CC, "bltctr" },
+	{ PPC_INS_BCTR_CC, "bgtctr" },
+	{ PPC_INS_BCTR_CC, "beqctr" },
+	{ PPC_INS_BCTR_CC, "bnectr" },
+
+	{ PPC_INS_BCTRL_CC, "bltctrl" },
+	{ PPC_INS_BCTRL_CC, "bgtctrl" },
+	{ PPC_INS_BCTRL_CC, "beqctrl" },
+	{ PPC_INS_BCTRL_CC, "bnectrl" },
+
+	{ PPC_INS_BL_CC, "bltl" },
+	{ PPC_INS_BL_CC, "bgtl" },
+	{ PPC_INS_BL_CC, "beql" },
+	{ PPC_INS_BL_CC, "bnel" },
+
+	{ PPC_INS_BLA_CC, "bltla" },
+	{ PPC_INS_BLA_CC, "bgtla" },
+	{ PPC_INS_BLA_CC, "beqla" },
+	{ PPC_INS_BLA_CC, "bnela" },
+
+	{ PPC_INS_BLR_CC, "bltlr" },
+	{ PPC_INS_BLR_CC, "bgtlr" },
+	{ PPC_INS_BLR_CC, "beqlr" },
+	{ PPC_INS_BLR_CC, "bnelr" },
+
+	{ PPC_INS_BLRL_CC, "bltlrl" },
+	{ PPC_INS_BLRL_CC, "bgtlrl" },
+	{ PPC_INS_BLRL_CC, "beqlrl" },
+	{ PPC_INS_BLRL_CC, "bnelrl" },
+};
+// map instruction name to public instruction ID
+ppc_reg PPC_map_insn(const char *name)
+{
+	// NOTE: skip first NULL name in insn_name_maps
+	int i = name2id(&insn_name_maps[1], ARR_SIZE(insn_name_maps) - 1, name);
+
+	if (i == -1)
+		// try again with 'special' insn that is not available in insn_name_maps
+		i = name2id(alias_insn_name_maps, ARR_SIZE(alias_insn_name_maps), name);
+
+	return (i != -1)? i : PPC_REG_INVALID;
+}
 #endif
diff --git a/arch/PowerPC/PPCMapping.h b/arch/PowerPC/PPCMapping.h
index 01c6583..2056f28 100644
--- a/arch/PowerPC/PPCMapping.h
+++ b/arch/PowerPC/PPCMapping.h
@@ -18,5 +18,7 @@
 // map internal raw register to 'public' register
 ppc_reg PPC_map_register(unsigned int r);
 
+ppc_reg PPC_map_insn(const char *name);
+
 #endif
 
diff --git a/bindings/java/capstone/Ppc_const.java b/bindings/java/capstone/Ppc_const.java
index 1cd2a6d..e48d6c7 100644
--- a/bindings/java/capstone/Ppc_const.java
+++ b/bindings/java/capstone/Ppc_const.java
@@ -997,7 +997,180 @@
 	public static final int PPC_INS_XXSPLTW = 766;
 	public static final int PPC_INS_BCA = 767;
 	public static final int PPC_INS_BCLA = 768;
-	public static final int PPC_INS_MAX = 769;
+	public static final int PPC_INS_SLWI = 769;
+	public static final int PPC_INS_SRWI = 770;
+	public static final int PPC_INS_SLDI = 771;
+	public static final int PPC_INS_BTA = 772;
+	public static final int PPC_INS_CRSET = 773;
+	public static final int PPC_INS_CRNOT = 774;
+	public static final int PPC_INS_CRMOVE = 775;
+	public static final int PPC_INS_CRCLR = 776;
+	public static final int PPC_INS_MFBR0 = 777;
+	public static final int PPC_INS_MFBR1 = 778;
+	public static final int PPC_INS_MFBR2 = 779;
+	public static final int PPC_INS_MFBR3 = 780;
+	public static final int PPC_INS_MFBR4 = 781;
+	public static final int PPC_INS_MFBR5 = 782;
+	public static final int PPC_INS_MFBR6 = 783;
+	public static final int PPC_INS_MFBR7 = 784;
+	public static final int PPC_INS_MFXER = 785;
+	public static final int PPC_INS_MFRTCU = 786;
+	public static final int PPC_INS_MFRTCL = 787;
+	public static final int PPC_INS_MFDSCR = 788;
+	public static final int PPC_INS_MFDSISR = 789;
+	public static final int PPC_INS_MFDAR = 790;
+	public static final int PPC_INS_MFSRR2 = 791;
+	public static final int PPC_INS_MFSRR3 = 792;
+	public static final int PPC_INS_MFCFAR = 793;
+	public static final int PPC_INS_MFAMR = 794;
+	public static final int PPC_INS_MFPID = 795;
+	public static final int PPC_INS_MFTBLO = 796;
+	public static final int PPC_INS_MFTBHI = 797;
+	public static final int PPC_INS_MFDBATU = 798;
+	public static final int PPC_INS_MFDBATL = 799;
+	public static final int PPC_INS_MFIBATU = 800;
+	public static final int PPC_INS_MFIBATL = 801;
+	public static final int PPC_INS_MFDCCR = 802;
+	public static final int PPC_INS_MFICCR = 803;
+	public static final int PPC_INS_MFDEAR = 804;
+	public static final int PPC_INS_MFESR = 805;
+	public static final int PPC_INS_MFSPEFSCR = 806;
+	public static final int PPC_INS_MFTCR = 807;
+	public static final int PPC_INS_MFASR = 808;
+	public static final int PPC_INS_MFPVR = 809;
+	public static final int PPC_INS_MFTBU = 810;
+	public static final int PPC_INS_MTCR = 811;
+	public static final int PPC_INS_MTBR0 = 812;
+	public static final int PPC_INS_MTBR1 = 813;
+	public static final int PPC_INS_MTBR2 = 814;
+	public static final int PPC_INS_MTBR3 = 815;
+	public static final int PPC_INS_MTBR4 = 816;
+	public static final int PPC_INS_MTBR5 = 817;
+	public static final int PPC_INS_MTBR6 = 818;
+	public static final int PPC_INS_MTBR7 = 819;
+	public static final int PPC_INS_MTXER = 820;
+	public static final int PPC_INS_MTDSCR = 821;
+	public static final int PPC_INS_MTDSISR = 822;
+	public static final int PPC_INS_MTDAR = 823;
+	public static final int PPC_INS_MTSRR2 = 824;
+	public static final int PPC_INS_MTSRR3 = 825;
+	public static final int PPC_INS_MTCFAR = 826;
+	public static final int PPC_INS_MTAMR = 827;
+	public static final int PPC_INS_MTPID = 828;
+	public static final int PPC_INS_MTTBL = 829;
+	public static final int PPC_INS_MTTBU = 830;
+	public static final int PPC_INS_MTTBLO = 831;
+	public static final int PPC_INS_MTTBHI = 832;
+	public static final int PPC_INS_MTDBATU = 833;
+	public static final int PPC_INS_MTDBATL = 834;
+	public static final int PPC_INS_MTIBATU = 835;
+	public static final int PPC_INS_MTIBATL = 836;
+	public static final int PPC_INS_MTDCCR = 837;
+	public static final int PPC_INS_MTICCR = 838;
+	public static final int PPC_INS_MTDEAR = 839;
+	public static final int PPC_INS_MTESR = 840;
+	public static final int PPC_INS_MTSPEFSCR = 841;
+	public static final int PPC_INS_MTTCR = 842;
+	public static final int PPC_INS_NOT = 843;
+	public static final int PPC_INS_MR = 844;
+	public static final int PPC_INS_ROTLD = 845;
+	public static final int PPC_INS_ROTLDI = 846;
+	public static final int PPC_INS_CLRLDI = 847;
+	public static final int PPC_INS_ROTLWI = 848;
+	public static final int PPC_INS_CLRLWI = 849;
+	public static final int PPC_INS_ROTLW = 850;
+	public static final int PPC_INS_SUB = 851;
+	public static final int PPC_INS_SUBC = 852;
+	public static final int PPC_INS_LWSYNC = 853;
+	public static final int PPC_INS_PTESYNC = 854;
+	public static final int PPC_INS_TDLT = 855;
+	public static final int PPC_INS_TDEQ = 856;
+	public static final int PPC_INS_TDGT = 857;
+	public static final int PPC_INS_TDNE = 858;
+	public static final int PPC_INS_TDLLT = 859;
+	public static final int PPC_INS_TDLGT = 860;
+	public static final int PPC_INS_TDU = 861;
+	public static final int PPC_INS_TDLTI = 862;
+	public static final int PPC_INS_TDEQI = 863;
+	public static final int PPC_INS_TDGTI = 864;
+	public static final int PPC_INS_TDNEI = 865;
+	public static final int PPC_INS_TDLLTI = 866;
+	public static final int PPC_INS_TDLGTI = 867;
+	public static final int PPC_INS_TDUI = 868;
+	public static final int PPC_INS_TLBREHI = 869;
+	public static final int PPC_INS_TLBRELO = 870;
+	public static final int PPC_INS_TLBWEHI = 871;
+	public static final int PPC_INS_TLBWELO = 872;
+	public static final int PPC_INS_TWLT = 873;
+	public static final int PPC_INS_TWEQ = 874;
+	public static final int PPC_INS_TWGT = 875;
+	public static final int PPC_INS_TWNE = 876;
+	public static final int PPC_INS_TWLLT = 877;
+	public static final int PPC_INS_TWLGT = 878;
+	public static final int PPC_INS_TWU = 879;
+	public static final int PPC_INS_TWLTI = 880;
+	public static final int PPC_INS_TWEQI = 881;
+	public static final int PPC_INS_TWGTI = 882;
+	public static final int PPC_INS_TWNEI = 883;
+	public static final int PPC_INS_TWLLTI = 884;
+	public static final int PPC_INS_TWLGTI = 885;
+	public static final int PPC_INS_TWUI = 886;
+	public static final int PPC_INS_WAITRSV = 887;
+	public static final int PPC_INS_WAITIMPL = 888;
+	public static final int PPC_INS_XNOP = 889;
+	public static final int PPC_INS_XVMOVDP = 890;
+	public static final int PPC_INS_XVMOVSP = 891;
+	public static final int PPC_INS_XXSPLTD = 892;
+	public static final int PPC_INS_XXMRGHD = 893;
+	public static final int PPC_INS_XXMRGLD = 894;
+	public static final int PPC_INS_XXSWAPD = 895;
+	public static final int PPC_INS_BT = 896;
+	public static final int PPC_INS_BF = 897;
+	public static final int PPC_INS_BDNZT = 898;
+	public static final int PPC_INS_BDNZF = 899;
+	public static final int PPC_INS_BDZF = 900;
+	public static final int PPC_INS_BDZT = 901;
+	public static final int PPC_INS_BFA = 902;
+	public static final int PPC_INS_BDNZTA = 903;
+	public static final int PPC_INS_BDNZFA = 904;
+	public static final int PPC_INS_BDZTA = 905;
+	public static final int PPC_INS_BDZFA = 906;
+	public static final int PPC_INS_BTCTR = 907;
+	public static final int PPC_INS_BFCTR = 908;
+	public static final int PPC_INS_BTCTRL = 909;
+	public static final int PPC_INS_BFCTRL = 910;
+	public static final int PPC_INS_BTL = 911;
+	public static final int PPC_INS_BFL = 912;
+	public static final int PPC_INS_BDNZTL = 913;
+	public static final int PPC_INS_BDNZFL = 914;
+	public static final int PPC_INS_BDZTL = 915;
+	public static final int PPC_INS_BDZFL = 916;
+	public static final int PPC_INS_BTLA = 917;
+	public static final int PPC_INS_BFLA = 918;
+	public static final int PPC_INS_BDNZTLA = 919;
+	public static final int PPC_INS_BDNZFLA = 920;
+	public static final int PPC_INS_BDZTLA = 921;
+	public static final int PPC_INS_BDZFLA = 922;
+	public static final int PPC_INS_BTLR = 923;
+	public static final int PPC_INS_BFLR = 924;
+	public static final int PPC_INS_BDNZTLR = 925;
+	public static final int PPC_INS_BDZTLR = 926;
+	public static final int PPC_INS_BDZFLR = 927;
+	public static final int PPC_INS_BTLRL = 928;
+	public static final int PPC_INS_BFLRL = 929;
+	public static final int PPC_INS_BDNZTLRL = 930;
+	public static final int PPC_INS_BDNZFLRL = 931;
+	public static final int PPC_INS_BDZTLRL = 932;
+	public static final int PPC_INS_BDZFLRL = 933;
+	public static final int PPC_INS_B_CC = 934;
+	public static final int PPC_INS_BL_CC = 935;
+	public static final int PPC_INS_BLA_CC = 936;
+	public static final int PPC_INS_BLR_CC = 937;
+	public static final int PPC_INS_BLRL_CC = 938;
+	public static final int PPC_INS_BA_CC = 939;
+	public static final int PPC_INS_BCTR_CC = 940;
+	public static final int PPC_INS_BCTRL_CC = 941;
+	public static final int PPC_INS_MAX = 942;
 
 	// Group of PPC instructions
 
diff --git a/bindings/python/capstone/ppc_const.py b/bindings/python/capstone/ppc_const.py
index 1ab7913..7a06371 100644
--- a/bindings/python/capstone/ppc_const.py
+++ b/bindings/python/capstone/ppc_const.py
@@ -994,7 +994,180 @@
 PPC_INS_XXSPLTW = 766
 PPC_INS_BCA = 767
 PPC_INS_BCLA = 768
-PPC_INS_MAX = 769
+PPC_INS_SLWI = 769
+PPC_INS_SRWI = 770
+PPC_INS_SLDI = 771
+PPC_INS_BTA = 772
+PPC_INS_CRSET = 773
+PPC_INS_CRNOT = 774
+PPC_INS_CRMOVE = 775
+PPC_INS_CRCLR = 776
+PPC_INS_MFBR0 = 777
+PPC_INS_MFBR1 = 778
+PPC_INS_MFBR2 = 779
+PPC_INS_MFBR3 = 780
+PPC_INS_MFBR4 = 781
+PPC_INS_MFBR5 = 782
+PPC_INS_MFBR6 = 783
+PPC_INS_MFBR7 = 784
+PPC_INS_MFXER = 785
+PPC_INS_MFRTCU = 786
+PPC_INS_MFRTCL = 787
+PPC_INS_MFDSCR = 788
+PPC_INS_MFDSISR = 789
+PPC_INS_MFDAR = 790
+PPC_INS_MFSRR2 = 791
+PPC_INS_MFSRR3 = 792
+PPC_INS_MFCFAR = 793
+PPC_INS_MFAMR = 794
+PPC_INS_MFPID = 795
+PPC_INS_MFTBLO = 796
+PPC_INS_MFTBHI = 797
+PPC_INS_MFDBATU = 798
+PPC_INS_MFDBATL = 799
+PPC_INS_MFIBATU = 800
+PPC_INS_MFIBATL = 801
+PPC_INS_MFDCCR = 802
+PPC_INS_MFICCR = 803
+PPC_INS_MFDEAR = 804
+PPC_INS_MFESR = 805
+PPC_INS_MFSPEFSCR = 806
+PPC_INS_MFTCR = 807
+PPC_INS_MFASR = 808
+PPC_INS_MFPVR = 809
+PPC_INS_MFTBU = 810
+PPC_INS_MTCR = 811
+PPC_INS_MTBR0 = 812
+PPC_INS_MTBR1 = 813
+PPC_INS_MTBR2 = 814
+PPC_INS_MTBR3 = 815
+PPC_INS_MTBR4 = 816
+PPC_INS_MTBR5 = 817
+PPC_INS_MTBR6 = 818
+PPC_INS_MTBR7 = 819
+PPC_INS_MTXER = 820
+PPC_INS_MTDSCR = 821
+PPC_INS_MTDSISR = 822
+PPC_INS_MTDAR = 823
+PPC_INS_MTSRR2 = 824
+PPC_INS_MTSRR3 = 825
+PPC_INS_MTCFAR = 826
+PPC_INS_MTAMR = 827
+PPC_INS_MTPID = 828
+PPC_INS_MTTBL = 829
+PPC_INS_MTTBU = 830
+PPC_INS_MTTBLO = 831
+PPC_INS_MTTBHI = 832
+PPC_INS_MTDBATU = 833
+PPC_INS_MTDBATL = 834
+PPC_INS_MTIBATU = 835
+PPC_INS_MTIBATL = 836
+PPC_INS_MTDCCR = 837
+PPC_INS_MTICCR = 838
+PPC_INS_MTDEAR = 839
+PPC_INS_MTESR = 840
+PPC_INS_MTSPEFSCR = 841
+PPC_INS_MTTCR = 842
+PPC_INS_NOT = 843
+PPC_INS_MR = 844
+PPC_INS_ROTLD = 845
+PPC_INS_ROTLDI = 846
+PPC_INS_CLRLDI = 847
+PPC_INS_ROTLWI = 848
+PPC_INS_CLRLWI = 849
+PPC_INS_ROTLW = 850
+PPC_INS_SUB = 851
+PPC_INS_SUBC = 852
+PPC_INS_LWSYNC = 853
+PPC_INS_PTESYNC = 854
+PPC_INS_TDLT = 855
+PPC_INS_TDEQ = 856
+PPC_INS_TDGT = 857
+PPC_INS_TDNE = 858
+PPC_INS_TDLLT = 859
+PPC_INS_TDLGT = 860
+PPC_INS_TDU = 861
+PPC_INS_TDLTI = 862
+PPC_INS_TDEQI = 863
+PPC_INS_TDGTI = 864
+PPC_INS_TDNEI = 865
+PPC_INS_TDLLTI = 866
+PPC_INS_TDLGTI = 867
+PPC_INS_TDUI = 868
+PPC_INS_TLBREHI = 869
+PPC_INS_TLBRELO = 870
+PPC_INS_TLBWEHI = 871
+PPC_INS_TLBWELO = 872
+PPC_INS_TWLT = 873
+PPC_INS_TWEQ = 874
+PPC_INS_TWGT = 875
+PPC_INS_TWNE = 876
+PPC_INS_TWLLT = 877
+PPC_INS_TWLGT = 878
+PPC_INS_TWU = 879
+PPC_INS_TWLTI = 880
+PPC_INS_TWEQI = 881
+PPC_INS_TWGTI = 882
+PPC_INS_TWNEI = 883
+PPC_INS_TWLLTI = 884
+PPC_INS_TWLGTI = 885
+PPC_INS_TWUI = 886
+PPC_INS_WAITRSV = 887
+PPC_INS_WAITIMPL = 888
+PPC_INS_XNOP = 889
+PPC_INS_XVMOVDP = 890
+PPC_INS_XVMOVSP = 891
+PPC_INS_XXSPLTD = 892
+PPC_INS_XXMRGHD = 893
+PPC_INS_XXMRGLD = 894
+PPC_INS_XXSWAPD = 895
+PPC_INS_BT = 896
+PPC_INS_BF = 897
+PPC_INS_BDNZT = 898
+PPC_INS_BDNZF = 899
+PPC_INS_BDZF = 900
+PPC_INS_BDZT = 901
+PPC_INS_BFA = 902
+PPC_INS_BDNZTA = 903
+PPC_INS_BDNZFA = 904
+PPC_INS_BDZTA = 905
+PPC_INS_BDZFA = 906
+PPC_INS_BTCTR = 907
+PPC_INS_BFCTR = 908
+PPC_INS_BTCTRL = 909
+PPC_INS_BFCTRL = 910
+PPC_INS_BTL = 911
+PPC_INS_BFL = 912
+PPC_INS_BDNZTL = 913
+PPC_INS_BDNZFL = 914
+PPC_INS_BDZTL = 915
+PPC_INS_BDZFL = 916
+PPC_INS_BTLA = 917
+PPC_INS_BFLA = 918
+PPC_INS_BDNZTLA = 919
+PPC_INS_BDNZFLA = 920
+PPC_INS_BDZTLA = 921
+PPC_INS_BDZFLA = 922
+PPC_INS_BTLR = 923
+PPC_INS_BFLR = 924
+PPC_INS_BDNZTLR = 925
+PPC_INS_BDZTLR = 926
+PPC_INS_BDZFLR = 927
+PPC_INS_BTLRL = 928
+PPC_INS_BFLRL = 929
+PPC_INS_BDNZTLRL = 930
+PPC_INS_BDNZFLRL = 931
+PPC_INS_BDZTLRL = 932
+PPC_INS_BDZFLRL = 933
+PPC_INS_B_CC = 934
+PPC_INS_BL_CC = 935
+PPC_INS_BLA_CC = 936
+PPC_INS_BLR_CC = 937
+PPC_INS_BLRL_CC = 938
+PPC_INS_BA_CC = 939
+PPC_INS_BCTR_CC = 940
+PPC_INS_BCTRL_CC = 941
+PPC_INS_MAX = 942
 
 # Group of PPC instructions
 
diff --git a/include/ppc.h b/include/ppc.h
index 548552d..c4a07e7 100644
--- a/include/ppc.h
+++ b/include/ppc.h
@@ -1053,6 +1053,184 @@
 	PPC_INS_BCA,
 	PPC_INS_BCLA,
 
+	// extra & alias instructions
+	PPC_INS_SLWI,
+	PPC_INS_SRWI,
+	PPC_INS_SLDI,
+
+	PPC_INS_BTA,
+	PPC_INS_CRSET,
+	PPC_INS_CRNOT,
+	PPC_INS_CRMOVE,
+	PPC_INS_CRCLR,
+	PPC_INS_MFBR0,
+	PPC_INS_MFBR1,
+	PPC_INS_MFBR2,
+	PPC_INS_MFBR3,
+	PPC_INS_MFBR4,
+	PPC_INS_MFBR5,
+	PPC_INS_MFBR6,
+	PPC_INS_MFBR7,
+	PPC_INS_MFXER,
+	PPC_INS_MFRTCU,
+	PPC_INS_MFRTCL,
+	PPC_INS_MFDSCR,
+	PPC_INS_MFDSISR,
+	PPC_INS_MFDAR,
+	PPC_INS_MFSRR2,
+	PPC_INS_MFSRR3,
+	PPC_INS_MFCFAR,
+	PPC_INS_MFAMR,
+	PPC_INS_MFPID,
+	PPC_INS_MFTBLO,
+	PPC_INS_MFTBHI,
+	PPC_INS_MFDBATU,
+	PPC_INS_MFDBATL,
+	PPC_INS_MFIBATU,
+	PPC_INS_MFIBATL,
+	PPC_INS_MFDCCR,
+	PPC_INS_MFICCR,
+	PPC_INS_MFDEAR,
+	PPC_INS_MFESR,
+	PPC_INS_MFSPEFSCR,
+	PPC_INS_MFTCR,
+	PPC_INS_MFASR,
+	PPC_INS_MFPVR,
+	PPC_INS_MFTBU,
+	PPC_INS_MTCR,
+	PPC_INS_MTBR0,
+	PPC_INS_MTBR1,
+	PPC_INS_MTBR2,
+	PPC_INS_MTBR3,
+	PPC_INS_MTBR4,
+	PPC_INS_MTBR5,
+	PPC_INS_MTBR6,
+	PPC_INS_MTBR7,
+	PPC_INS_MTXER,
+	PPC_INS_MTDSCR,
+	PPC_INS_MTDSISR,
+	PPC_INS_MTDAR,
+	PPC_INS_MTSRR2,
+	PPC_INS_MTSRR3,
+	PPC_INS_MTCFAR,
+	PPC_INS_MTAMR,
+	PPC_INS_MTPID,
+	PPC_INS_MTTBL,
+	PPC_INS_MTTBU,
+	PPC_INS_MTTBLO,
+	PPC_INS_MTTBHI,
+	PPC_INS_MTDBATU,
+	PPC_INS_MTDBATL,
+	PPC_INS_MTIBATU,
+	PPC_INS_MTIBATL,
+	PPC_INS_MTDCCR,
+	PPC_INS_MTICCR,
+	PPC_INS_MTDEAR,
+	PPC_INS_MTESR,
+	PPC_INS_MTSPEFSCR,
+	PPC_INS_MTTCR,
+	PPC_INS_NOT,
+	PPC_INS_MR,
+	PPC_INS_ROTLD,
+	PPC_INS_ROTLDI,
+	PPC_INS_CLRLDI,
+	PPC_INS_ROTLWI,
+	PPC_INS_CLRLWI,
+	PPC_INS_ROTLW,
+	PPC_INS_SUB,
+	PPC_INS_SUBC,
+	PPC_INS_LWSYNC,
+	PPC_INS_PTESYNC,
+	PPC_INS_TDLT,
+	PPC_INS_TDEQ,
+	PPC_INS_TDGT,
+	PPC_INS_TDNE,
+	PPC_INS_TDLLT,
+	PPC_INS_TDLGT,
+	PPC_INS_TDU,
+	PPC_INS_TDLTI,
+	PPC_INS_TDEQI,
+	PPC_INS_TDGTI,
+	PPC_INS_TDNEI,
+	PPC_INS_TDLLTI,
+	PPC_INS_TDLGTI,
+	PPC_INS_TDUI,
+	PPC_INS_TLBREHI,
+	PPC_INS_TLBRELO,
+	PPC_INS_TLBWEHI,
+	PPC_INS_TLBWELO,
+	PPC_INS_TWLT,
+	PPC_INS_TWEQ,
+	PPC_INS_TWGT,
+	PPC_INS_TWNE,
+	PPC_INS_TWLLT,
+	PPC_INS_TWLGT,
+	PPC_INS_TWU,
+	PPC_INS_TWLTI,
+	PPC_INS_TWEQI,
+	PPC_INS_TWGTI,
+	PPC_INS_TWNEI,
+	PPC_INS_TWLLTI,
+	PPC_INS_TWLGTI,
+	PPC_INS_TWUI,
+	PPC_INS_WAITRSV,
+	PPC_INS_WAITIMPL,
+	PPC_INS_XNOP,
+	PPC_INS_XVMOVDP,
+	PPC_INS_XVMOVSP,
+	PPC_INS_XXSPLTD,
+	PPC_INS_XXMRGHD,
+	PPC_INS_XXMRGLD,
+	PPC_INS_XXSWAPD,
+	PPC_INS_BT,
+	PPC_INS_BF,
+	PPC_INS_BDNZT,
+	PPC_INS_BDNZF,
+	PPC_INS_BDZF,
+	PPC_INS_BDZT,
+	PPC_INS_BFA,
+	PPC_INS_BDNZTA,
+	PPC_INS_BDNZFA,
+	PPC_INS_BDZTA,
+	PPC_INS_BDZFA,
+	PPC_INS_BTCTR,
+	PPC_INS_BFCTR,
+	PPC_INS_BTCTRL,
+	PPC_INS_BFCTRL,
+	PPC_INS_BTL,
+	PPC_INS_BFL,
+	PPC_INS_BDNZTL,
+	PPC_INS_BDNZFL,
+	PPC_INS_BDZTL,
+	PPC_INS_BDZFL,
+	PPC_INS_BTLA,
+	PPC_INS_BFLA,
+	PPC_INS_BDNZTLA,
+	PPC_INS_BDNZFLA,
+	PPC_INS_BDZTLA,
+	PPC_INS_BDZFLA,
+	PPC_INS_BTLR,
+	PPC_INS_BFLR,
+	PPC_INS_BDNZTLR,
+	PPC_INS_BDZTLR,
+	PPC_INS_BDZFLR,
+	PPC_INS_BTLRL,
+	PPC_INS_BFLRL,
+	PPC_INS_BDNZTLRL,
+	PPC_INS_BDNZFLRL,
+	PPC_INS_BDZTLRL,
+	PPC_INS_BDZFLRL,
+
+	// branch CC instruction
+	PPC_INS_B_CC,	// Bcc
+	PPC_INS_BL_CC,	// BccL
+	PPC_INS_BLA_CC,	// BccLA
+	PPC_INS_BLR_CC,	// BccLR
+	PPC_INS_BLRL_CC,	// BccLRL
+	PPC_INS_BA_CC,	// BccA
+	PPC_INS_BCTR_CC,	// BccCTR
+	PPC_INS_BCTRL_CC,	// BccCTRL
+
 	PPC_INS_MAX,   // <-- mark the end of the list of instructions
 } ppc_insn;