[llvm] r182385 - Fix PPC branch selection for counter-based branches
Bill Wendling
isanbard at gmail.com
Tue May 21 15:11:39 PDT 2013
Okay. Done. :)
-bw
On Tue, May 21, 2013 at 2:58 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> Bill,
>
> Please pull this bug fix into the release branch.
>
> Thanks again,
> Hal
>
> ----- Original Message -----
> > Author: hfinkel
> > Date: Tue May 21 09:21:09 2013
> > New Revision: 182385
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=182385&view=rev
> > Log:
> > Fix PPC branch selection for counter-based branches
> >
> > Although I had added some support for the BDZ/BDNZ branches into the
> > selector
> > (in r158204), I had not correctly adjusted the condition at the top
> > of the
> > loop. As a result, these branches were still essentially unsupported.
> >
> > This fixes PR16086. Unfortunately, any test case would be very large
> > (because
> > it would need to force the loop backedge to exceed the range of the
> > 16-bit
> > immediate).
> >
> > Modified:
> > llvm/trunk/lib/Target/PowerPC/PPCBranchSelector.cpp
> >
> > Modified: llvm/trunk/lib/Target/PowerPC/PPCBranchSelector.cpp
> > URL:
> >
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCBranchSelector.cpp?rev=182385&r1=182384&r2=182385&view=diff
> >
> ==============================================================================
> > --- llvm/trunk/lib/Target/PowerPC/PPCBranchSelector.cpp (original)
> > +++ llvm/trunk/lib/Target/PowerPC/PPCBranchSelector.cpp Tue May 21
> > 09:21:09 2013
> > @@ -112,15 +112,21 @@ bool PPCBSel::runOnMachineFunction(Machi
> > unsigned MBBStartOffset = 0;
> > for (MachineBasicBlock::iterator I = MBB.begin(), E =
> > MBB.end();
> > I != E; ++I) {
> > - if (I->getOpcode() != PPC::BCC || I->getOperand(2).isImm())
> > {
> > + MachineBasicBlock *Dest = 0;
> > + if (I->getOpcode() == PPC::BCC && !I->getOperand(2).isImm())
> > + Dest = I->getOperand(2).getMBB();
> > + else if ((I->getOpcode() == PPC::BDNZ8 || I->getOpcode() ==
> > PPC::BDNZ ||
> > + I->getOpcode() == PPC::BDZ8 || I->getOpcode() ==
> > PPC::BDZ) &&
> > + !I->getOperand(0).isImm())
> > + Dest = I->getOperand(0).getMBB();
> > +
> > + if (!Dest) {
> > MBBStartOffset += TII->GetInstSizeInBytes(I);
> > continue;
> > }
> >
> > // Determine the offset from the current branch to the
> > destination
> > // block.
> > - MachineBasicBlock *Dest = I->getOperand(2).getMBB();
> > -
> > int BranchSize;
> > if (Dest->getNumber() <= MBB.getNumber()) {
> > // If this is a backwards branch, the delta is the offset
> > from the
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130521/a9327afe/attachment.html>
More information about the llvm-commits
mailing list