ppc: move our own alias instructions to PPCInstPrinter.c to isolate them from auto-gen code of LLVM
diff --git a/arch/PowerPC/PPCGenAsmWriter.inc b/arch/PowerPC/PPCGenAsmWriter.inc
index c4696f6..e2e699f 100644
--- a/arch/PowerPC/PPCGenAsmWriter.inc
+++ b/arch/PowerPC/PPCGenAsmWriter.inc
@@ -7706,163 +7706,6 @@
   case PPC_gBC:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBC 12, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "blt $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgt $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beq $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bso $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bt $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBC 4, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bge $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "ble $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bne $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bns $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bf $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBC 14, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "blt- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgt- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beq- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bso- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bt- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBC 6, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bge- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "ble- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bne- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bns- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bf- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBC 15, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "blt+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgt+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beq+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bso+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bt+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBC 7, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bge+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "ble+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bne+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bns+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bf+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8 &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
         GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
@@ -7901,162 +7744,6 @@
   case PPC_gBCA:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCA 12, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "blta $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgta $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqa $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoa $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bta $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCA 4, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgea $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blea $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnea $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsa $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfa $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCA 14, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "blta- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgta- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqa- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoa- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bta- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCA 6, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgea- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blea- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnea- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsa- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfa- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCA 15, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "blta+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgta+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqa+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoa+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bta+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCA 7, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgea+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blea+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnea+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsa+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfa+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8 &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
         GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
@@ -8102,174 +7789,6 @@
       AsmString = "bcctr $\xFF\x01\x06, $\x02";
       break;
     }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTR 12, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltctr";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtctr";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqctr";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoctr";
-          break;
-        default:
-          AsmString = "btctr $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTR 4, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgectr";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blectr";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnectr";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsctr";
-          break;
-        default:
-          AsmString = "bfctr $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTR 14, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltctr-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtctr-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqctr-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoctr-";
-          break;
-        default:
-          AsmString = "btctr- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTR 6, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgectr-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blectr-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnectr-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsctr-";
-          break;
-        default:
-          AsmString = "bfctr- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTR 15, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltctr+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtctr+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqctr+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoctr+";
-          break;
-        default:
-          AsmString = "btctr+ $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTR 7, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgectr+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blectr+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnectr+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsctr+";
-          break;
-        default:
-          AsmString = "bfctr+ $\x02";
-          break;
-      }
-      break;
-    }
     return NULL;
   case PPC_gBCCTRL:
     if (MCInst_getNumOperands(MI) == 3 &&
@@ -8281,334 +7800,10 @@
       AsmString = "bcctrl $\xFF\x01\x06, $\x02";
       break;
     }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTRL 12, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltctrl";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtctrl";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqctrl";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoctrl";
-          break;
-        default:
-          AsmString = "btctrl $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTRL 4, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgectrl";
-          break;          
-        case PPC_REG_R1:  
-          AsmString = "blectrl";
-          break;          
-        case PPC_REG_R2:  
-          AsmString = "bnectrl";
-          break;          
-        case PPC_REG_R3:  
-          AsmString = "bnsctrl";
-          break;
-        default:
-          AsmString = "bfctrl $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTRL 14, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltctrl-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtctrl-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqctrl-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoctrl-";
-          break;
-        default:
-          AsmString = "btctrl- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTRL 6, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgectrl-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blectrl-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnectrl-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsctrl-";
-          break;
-        default:
-          AsmString = "bfctrl- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTRL 15, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltctrl+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtctrl+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqctrl+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsoctrl+";
-          break;
-        default:
-          AsmString = "btctrl+ $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCCTRL 7, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgectrl+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blectrl+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnectrl+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsctrl+";
-          break;
-        default:
-          AsmString = "bfctrl+ $\x02";
-          break;
-      }
-      break;
-    }
     return NULL;
   case PPC_gBCL:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCL 12, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltl $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtl $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beql $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsol $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "btl $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCL 4, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgel $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blel $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnel $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsl $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfl $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCL 14, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltl- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtl- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beql- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsol- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "btl- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCL 6, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgel- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blel- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnel- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsl- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfl- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCL 15, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltl+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtl+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beql+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsol+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "btl+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCL 7, crbitrc:$bi, condbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgel+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blel+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnel+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsl+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfl+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8 &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
         GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
@@ -8647,162 +7842,6 @@
   case PPC_gBCLA:
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCLA 12, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltla $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtla $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqla $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsola $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "btla $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCLA 4, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgela $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blela $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnela $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsla $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfla $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCLA 14, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltla- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtla- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqla- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsola- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "btla- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCLA 6, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgela- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blela- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnela- $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsla- $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfla- $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCLA 15, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltla+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtla+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqla+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsola+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "btla+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
-      // (gBCLA 7, crbitrc:$bi, abscondbrtarget:$dst)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgela+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blela+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnela+ $\xFF\x03\x01";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnsla+ $\xFF\x03\x01";
-          break;
-        default:
-          AsmString = "bfla+ $\x02, $\xFF\x03\x01";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8 &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
         GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
@@ -8850,174 +7889,6 @@
     }
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLR 12, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltlr";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtlr";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqlr";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsolr";
-          break;
-        default:
-          AsmString = "btlr $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLR 4, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgelr";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blelr";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnelr";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnslr";
-          break;
-        default:
-          AsmString = "bflr $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLR 14, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltlr-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtlr-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqlr-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsolr-";
-          break;
-        default:
-          AsmString = "btlr- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLR 6, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgelr-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blelr-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnelr-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnslr-";
-          break;
-        default:
-          AsmString = "bflr- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLR 15, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltlr+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtlr+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqlr+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsolr+";
-          break;
-        default:
-          AsmString = "btlr+ $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLR 7, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgelr+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blelr+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnelr+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnslr+";
-          break;
-        default:
-          AsmString = "bflr+ $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8 &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
         GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
@@ -9073,174 +7944,6 @@
     }
     if (MCInst_getNumOperands(MI) == 3 &&
         MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLRL 12, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltlrl";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtlrl";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqlrl";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsolrl";
-          break;
-        default:
-          AsmString = "btlrl $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLRL 4, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgelrl";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blelrl";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnelrl";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnslrl";
-          break;
-        default:
-          AsmString = "bflrl $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLRL 14, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltlrl-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtlrl-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqlrl-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsolrl-";
-          break;
-        default:
-          AsmString = "btlrl- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLRL 6, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgelrl-";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blelrl-";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnelrl-";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnslrl-";
-          break;
-        default:
-          AsmString = "bflrl- $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLRL 15, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bltlrl+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "bgtlrl+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "beqlrl+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bsolrl+";
-          break;
-        default:
-          AsmString = "btlrl+ $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
-        MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
-        GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
-        MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
-        MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
-      // (gBCLRL 7, crbitrc:$bi, 0)
-      switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1))))
-      {
-        case PPC_REG_R0:
-          AsmString = "bgelrl+";
-          break;
-        case PPC_REG_R1:
-          AsmString = "blelrl+";
-          break;
-        case PPC_REG_R2:
-          AsmString = "bnelrl+";
-          break;
-        case PPC_REG_R3:
-          AsmString = "bnslrl+";
-          break;
-        default:
-          AsmString = "bflrl+ $\x02";
-          break;
-      }
-      break;
-    }
-    if (MCInst_getNumOperands(MI) == 3 &&
-        MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
         MCOperand_getImm(MCInst_getOperand(MI, 0)) == 8 &&
         MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
         GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
diff --git a/arch/PowerPC/PPCInstPrinter.c b/arch/PowerPC/PPCInstPrinter.c
index 2327ff9..aadf814 100644
--- a/arch/PowerPC/PPCInstPrinter.c
+++ b/arch/PowerPC/PPCInstPrinter.c
@@ -37,6 +37,9 @@
 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 char *printAliasInstrEx(MCInst *MI, SStream *OS, void *info);
+static void printCustomAliasOperand(MCInst *MI, unsigned OpIdx,
+		unsigned PrintMethodIdx, SStream *OS);
 
 static void set_mem_access(MCInst *MI, bool status)
 {
@@ -137,7 +140,11 @@
 		}
 	}
 
-	mnem = printAliasInstr(MI, O, Info);
+	// consider our own alias instructions first
+	mnem = printAliasInstrEx(MI, O, Info);
+	if (!mnem)
+		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] == '.')
@@ -628,6 +635,1312 @@
 	}
 }
 
+static char *printAliasInstrEx(MCInst *MI, SStream *OS, void *info)
+{
+#define GETREGCLASS_CONTAIN(_class, _reg) MCRegisterClass_contains(MCRegisterInfo_getRegClass(MRI, _class), MCOperand_getReg(MCInst_getOperand(MI, _reg)))
+	const char *AsmString;
+	char *tmp, *AsmMnem, *AsmOps, *c;
+	int OpIdx, PrintMethodIdx;
+	MCRegisterInfo *MRI = (MCRegisterInfo *)info;
+	switch (MCInst_getOpcode(MI)) {
+		default: return NULL;
+		case PPC_gBC:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBC 12, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "blt $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgt $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beq $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bso $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bt $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBC 4, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bge $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "ble $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bne $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bns $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bf $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBC 14, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "blt- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgt- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beq- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bso- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bt- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBC 6, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bge- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "ble- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bne- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bns- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bf- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBC 15, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "blt+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgt+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beq+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bso+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bt+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBC 7, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bge+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "ble+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bne+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bns+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bf+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+		case PPC_gBCA:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCA 12, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "blta $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgta $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqa $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoa $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bta $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCA 4, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgea $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blea $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnea $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsa $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfa $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCA 14, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "blta- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgta- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqa- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoa- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bta- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCA 6, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgea- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blea- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnea- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsa- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfa- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCA 15, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "blta+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgta+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqa+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoa+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bta+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCA 7, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgea+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blea+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnea+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsa+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfa+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+		case PPC_gBCCTR:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTR 12, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltctr";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtctr";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqctr";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoctr";
+							 break;
+						 default:
+							 AsmString = "btctr $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTR 4, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgectr";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blectr";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnectr";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsctr";
+							 break;
+						 default:
+							 AsmString = "bfctr $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTR 14, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltctr-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtctr-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqctr-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoctr-";
+							 break;
+						 default:
+							 AsmString = "btctr- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTR 6, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgectr-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blectr-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnectr-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsctr-";
+							 break;
+						 default:
+							 AsmString = "bfctr- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTR 15, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltctr+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtctr+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqctr+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoctr+";
+							 break;
+						 default:
+							 AsmString = "btctr+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTR 7, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgectr+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blectr+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnectr+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsctr+";
+							 break;
+						 default:
+							 AsmString = "bfctr+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+		case PPC_gBCCTRL:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTRL 12, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltctrl";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtctrl";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqctrl";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoctrl";
+							 break;
+						 default:
+							 AsmString = "btctrl $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTRL 4, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgectrl";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blectrl";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnectrl";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsctrl";
+							 break;
+						 default:
+							 AsmString = "bfctrl $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTRL 14, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltctrl-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtctrl-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqctrl-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoctrl-";
+							 break;
+						 default:
+							 AsmString = "btctrl- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTRL 6, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgectrl-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blectrl-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnectrl-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsctrl-";
+							 break;
+						 default:
+							 AsmString = "bfctrl- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTRL 15, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltctrl+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtctrl+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqctrl+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsoctrl+";
+							 break;
+						 default:
+							 AsmString = "btctrl+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCCTRL 7, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgectrl+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blectrl+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnectrl+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsctrl+";
+							 break;
+						 default:
+							 AsmString = "bfctrl+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+		case PPC_gBCL:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCL 12, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltl $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtl $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beql $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsol $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "btl $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCL 4, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgel $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blel $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnel $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsl $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfl $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCL 14, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltl- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtl- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beql- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsol- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "btl- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCL 6, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgel- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blel- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnel- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsl- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfl- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCL 15, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltl+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtl+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beql+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsol+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "btl+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCL 7, crbitrc:$bi, condbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgel+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blel+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnel+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsl+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfl+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+		case PPC_gBCLA:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCLA 12, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltla $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtla $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqla $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsola $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "btla $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCLA 4, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgela $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blela $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnela $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsla $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfla $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCLA 14, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltla- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtla- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqla- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsola- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "btla- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCLA 6, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgela- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blela- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnela- $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsla- $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfla- $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCLA 15, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltla+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtla+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqla+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsola+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "btla+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1)) {
+					 // (gBCLA 7, crbitrc:$bi, abscondbrtarget:$dst)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgela+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blela+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnela+ $\xFF\x03\x01";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnsla+ $\xFF\x03\x01";
+							 break;
+						 default:
+							 AsmString = "bfla+ $\x02, $\xFF\x03\x01";
+							 break;
+					 }
+					 break;
+				 }
+		case PPC_gBCLR:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLR 12, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltlr";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtlr";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqlr";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsolr";
+							 break;
+						 default:
+							 AsmString = "btlr $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLR 4, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgelr";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blelr";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnelr";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnslr";
+							 break;
+						 default:
+							 AsmString = "bflr $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLR 14, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltlr-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtlr-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqlr-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsolr-";
+							 break;
+						 default:
+							 AsmString = "btlr- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLR 6, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgelr-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blelr-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnelr-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnslr-";
+							 break;
+						 default:
+							 AsmString = "bflr- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLR 15, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltlr+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtlr+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqlr+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsolr+";
+							 break;
+						 default:
+							 AsmString = "btlr+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLR 7, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgelr+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blelr+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnelr+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnslr+";
+							 break;
+						 default:
+							 AsmString = "bflr+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+		case PPC_gBCLRL:
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 12 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLRL 12, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltlrl";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtlrl";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqlrl";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsolrl";
+							 break;
+						 default:
+							 AsmString = "btlrl $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 4 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLRL 4, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgelrl";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blelrl";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnelrl";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnslrl";
+							 break;
+						 default:
+							 AsmString = "bflrl $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 14 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLRL 14, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltlrl-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtlrl-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqlrl-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsolrl-";
+							 break;
+						 default:
+							 AsmString = "btlrl- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 6 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLRL 6, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgelrl-";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blelrl-";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnelrl-";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnslrl-";
+							 break;
+						 default:
+							 AsmString = "bflrl- $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 15 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLRL 15, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bltlrl+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "bgtlrl+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "beqlrl+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bsolrl+";
+							 break;
+						 default:
+							 AsmString = "btlrl+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 if (MCInst_getNumOperands(MI) == 3 &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 0)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 0)) == 7 &&
+						 MCOperand_isReg(MCInst_getOperand(MI, 1)) &&
+						 GETREGCLASS_CONTAIN(PPC_CRBITRCRegClassID, 1) &&
+						 MCOperand_isImm(MCInst_getOperand(MI, 2)) &&
+						 MCOperand_getImm(MCInst_getOperand(MI, 2)) == 0) {
+					 // (gBCLRL 7, crbitrc:$bi, 0)
+					 switch(PPC_map_register(MCOperand_getReg(MCInst_getOperand(MI, 1)))) {
+						 case PPC_REG_R0:
+							 AsmString = "bgelrl+";
+							 break;
+						 case PPC_REG_R1:
+							 AsmString = "blelrl+";
+							 break;
+						 case PPC_REG_R2:
+							 AsmString = "bnelrl+";
+							 break;
+						 case PPC_REG_R3:
+							 AsmString = "bnslrl+";
+							 break;
+						 default:
+							 AsmString = "bflrl+ $\x02";
+							 break;
+					 }
+					 break;
+				 }
+				 return NULL;
+	}
+
+	tmp = cs_strdup(AsmString);
+	AsmMnem = tmp;
+	for(AsmOps = tmp; *AsmOps; AsmOps++) {
+		if (*AsmOps == ' ' || *AsmOps == '\t') {
+			*AsmOps = '\0';
+			AsmOps++;
+			break;
+		}
+	}
+	SStream_concat0(OS, AsmMnem);
+	if (*AsmOps) {
+		SStream_concat0(OS, "\t");
+		for (c = AsmOps; *c; c++) {
+			if (*c == '$') {
+				c += 1;
+				if (*c == (char)0xff) {
+					c += 1;
+					OpIdx = *c - 1;
+					c += 1;
+					PrintMethodIdx = *c - 1;
+					printCustomAliasOperand(MI, OpIdx, PrintMethodIdx, OS);
+				} else
+					printOperand(MI, *c - 1, OS);
+			} else {
+				SStream_concat(OS, "%c", *c);
+			}
+		}
+	}
+	return tmp;
+}
+
 #define PRINT_ALIAS_INSTR
 #include "PPCGenAsmWriter.inc"