From: Chris Lattner Date: Sat, 21 Oct 2006 06:03:11 +0000 (+0000) Subject: Implement support for branch reversal, fix a bug in branch analysis. X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7c4fe259f8bfeae542cfef25c1f1e9b1ff25a39b;p=oota-llvm.git Implement support for branch reversal, fix a bug in branch analysis. This provides stuff like: cmpw cr0, r15, r29 mr r14, r15 - bge cr0, LBB3_111 ;bb656 - b LBB3_90 ;bb501 + blt cr0, LBB3_90 ;bb501 LBB3_111: ;bb656 lwz r18, 68(r1) which is particularly good for dispatch group formation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31101 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/PPCInstrInfo.cpp b/lib/Target/PowerPC/PPCInstrInfo.cpp index 76cb7ed5694..63188466bed 100644 --- a/lib/Target/PowerPC/PPCInstrInfo.cpp +++ b/lib/Target/PowerPC/PPCInstrInfo.cpp @@ -186,7 +186,7 @@ bool PPCInstrInfo::AnalyzeBranch(MachineBasicBlock &MBB,MachineBasicBlock *&TBB, TBB = LastInst->getOperand(2).getMachineBasicBlock(); Cond.push_back(LastInst->getOperand(0)); Cond.push_back(LastInst->getOperand(1)); - return true; + return false; } // Otherwise, don't know what this is. return true; @@ -261,5 +261,8 @@ void PPCInstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB, bool PPCInstrInfo:: ReverseBranchCondition(std::vector &Cond) const { - return true; + assert(Cond.size() == 2 && "Invalid PPC branch opcode!"); + // Leave the CR# the same, but invert the condition. + Cond[1].setImm(invertPPCBranchOpcode(Cond[1].getImm())); + return false; }