mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-27 08:26:23 +00:00
Implement InsertBranch() hook
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75966 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c9d4a887f6
commit
64d52d4a5d
@ -239,9 +239,32 @@ unsigned
|
|||||||
SystemZInstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
|
SystemZInstrInfo::InsertBranch(MachineBasicBlock &MBB, MachineBasicBlock *TBB,
|
||||||
MachineBasicBlock *FBB,
|
MachineBasicBlock *FBB,
|
||||||
const SmallVectorImpl<MachineOperand> &Cond) const {
|
const SmallVectorImpl<MachineOperand> &Cond) const {
|
||||||
assert(0 && "Implement branches!");
|
// FIXME this should probably have a DebugLoc operand
|
||||||
|
DebugLoc dl = DebugLoc::getUnknownLoc();
|
||||||
|
// Shouldn't be a fall through.
|
||||||
|
assert(TBB && "InsertBranch must not be told to insert a fallthrough");
|
||||||
|
assert((Cond.size() == 1 || Cond.size() == 0) &&
|
||||||
|
"SystemZ branch conditions have one component!");
|
||||||
|
|
||||||
return 0;
|
if (Cond.empty()) {
|
||||||
|
// Unconditional branch?
|
||||||
|
assert(!FBB && "Unconditional branch with multiple successors!");
|
||||||
|
BuildMI(&MBB, dl, get(SystemZ::JMP)).addMBB(TBB);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conditional branch.
|
||||||
|
unsigned Count = 0;
|
||||||
|
SystemZCC::CondCodes CC = (SystemZCC::CondCodes)Cond[0].getImm();
|
||||||
|
BuildMI(&MBB, dl, getBrCond(CC)).addMBB(TBB);
|
||||||
|
++Count;
|
||||||
|
|
||||||
|
if (FBB) {
|
||||||
|
// Two-way Conditional branch. Insert the second branch.
|
||||||
|
BuildMI(&MBB, dl, get(SystemZ::JMP)).addMBB(FBB);
|
||||||
|
++Count;
|
||||||
|
}
|
||||||
|
return Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
const TargetInstrDesc&
|
const TargetInstrDesc&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user