mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 10:42:39 +01:00
FastISel: Factor out common code; NFC intended
This should be no functional change but for the record: For three cases in X86FastISel this will change the order in which the FalseMBB and TrueMBB of a conditional branch is addedd to the successor/predecessor lists. llvm-svn: 245997
This commit is contained in:
parent
a3f0d5cebf
commit
a64770afff
@ -468,6 +468,11 @@ protected:
|
||||
/// immediate (fall-through) successor, and update the CFG.
|
||||
void fastEmitBranch(MachineBasicBlock *MBB, DebugLoc DL);
|
||||
|
||||
/// Emit an unconditional branch to \p FalseMBB, obtains the branch weight
|
||||
/// and adds TrueMBB and FalseMBB to the successor list.
|
||||
void finishCondBranch(const BasicBlock *BranchBB, MachineBasicBlock *TrueMBB,
|
||||
MachineBasicBlock *FalseMBB);
|
||||
|
||||
/// \brief Update the value map to include the new mapping for this
|
||||
/// instruction, or insert an extra copy to get the result in a previous
|
||||
/// determined register.
|
||||
|
@ -1408,6 +1408,18 @@ void FastISel::fastEmitBranch(MachineBasicBlock *MSucc, DebugLoc DbgLoc) {
|
||||
FuncInfo.MBB->addSuccessor(MSucc, BranchWeight);
|
||||
}
|
||||
|
||||
void FastISel::finishCondBranch(const BasicBlock *BranchBB,
|
||||
MachineBasicBlock *TrueMBB,
|
||||
MachineBasicBlock *FalseMBB) {
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BranchBB,
|
||||
TrueMBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TrueMBB, BranchWeight);
|
||||
|
||||
fastEmitBranch(FalseMBB, DbgLoc);
|
||||
}
|
||||
|
||||
/// Emit an FNeg operation.
|
||||
bool FastISel::selectFNeg(const User *I) {
|
||||
unsigned OpReg = getRegForValue(BinaryOperator::getFNegArgument(I));
|
||||
|
@ -2260,14 +2260,7 @@ bool AArch64FastISel::emitCompareAndBranch(const BranchInst *BI) {
|
||||
MIB.addImm(TestBit);
|
||||
MIB.addMBB(TBB);
|
||||
|
||||
// Obtain the branch weight and add the TrueBB to the successor list.
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TBB, BranchWeight);
|
||||
fastEmitBranch(FBB, DbgLoc);
|
||||
|
||||
finishCondBranch(BI->getParent(), TBB, FBB);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2342,14 +2335,7 @@ bool AArch64FastISel::selectBranch(const Instruction *I) {
|
||||
.addImm(CC)
|
||||
.addMBB(TBB);
|
||||
|
||||
// Obtain the branch weight and add the TrueBB to the successor list.
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TBB, BranchWeight);
|
||||
|
||||
fastEmitBranch(FBB, DbgLoc);
|
||||
finishCondBranch(BI->getParent(), TBB, FBB);
|
||||
return true;
|
||||
}
|
||||
} else if (TruncInst *TI = dyn_cast<TruncInst>(BI->getCondition())) {
|
||||
@ -2380,14 +2366,7 @@ bool AArch64FastISel::selectBranch(const Instruction *I) {
|
||||
.addImm(CC)
|
||||
.addMBB(TBB);
|
||||
|
||||
// Obtain the branch weight and add the TrueBB to the successor list.
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TBB, BranchWeight);
|
||||
|
||||
fastEmitBranch(FBB, DbgLoc);
|
||||
finishCondBranch(BI->getParent(), TBB, FBB);
|
||||
return true;
|
||||
}
|
||||
} else if (const auto *CI = dyn_cast<ConstantInt>(BI->getCondition())) {
|
||||
@ -2415,14 +2394,7 @@ bool AArch64FastISel::selectBranch(const Instruction *I) {
|
||||
.addImm(CC)
|
||||
.addMBB(TBB);
|
||||
|
||||
// Obtain the branch weight and add the TrueBB to the successor list.
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TBB, BranchWeight);
|
||||
|
||||
fastEmitBranch(FBB, DbgLoc);
|
||||
finishCondBranch(BI->getParent(), TBB, FBB);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2453,14 +2425,7 @@ bool AArch64FastISel::selectBranch(const Instruction *I) {
|
||||
.addImm(CC)
|
||||
.addMBB(TBB);
|
||||
|
||||
// Obtain the branch weight and add the TrueBB to the successor list.
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TBB, BranchWeight);
|
||||
|
||||
fastEmitBranch(FBB, DbgLoc);
|
||||
finishCondBranch(BI->getParent(), TBB, FBB);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1431,17 +1431,7 @@ bool X86FastISel::X86SelectBranch(const Instruction *I) {
|
||||
.addMBB(TrueMBB);
|
||||
}
|
||||
|
||||
// Obtain the branch weight and add the TrueBB to the successor list.
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TrueMBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TrueMBB, BranchWeight);
|
||||
|
||||
// Emits an unconditional branch to the FalseBB, obtains the branch
|
||||
// weight, and adds it to the successor list.
|
||||
fastEmitBranch(FalseMBB, DbgLoc);
|
||||
|
||||
finishCondBranch(BI->getParent(), TrueMBB, FalseMBB);
|
||||
return true;
|
||||
}
|
||||
} else if (TruncInst *TI = dyn_cast<TruncInst>(BI->getCondition())) {
|
||||
@ -1472,12 +1462,8 @@ bool X86FastISel::X86SelectBranch(const Instruction *I) {
|
||||
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(JmpOpc))
|
||||
.addMBB(TrueMBB);
|
||||
fastEmitBranch(FalseMBB, DbgLoc);
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TrueMBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TrueMBB, BranchWeight);
|
||||
|
||||
finishCondBranch(BI->getParent(), TrueMBB, FalseMBB);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -1492,12 +1478,7 @@ bool X86FastISel::X86SelectBranch(const Instruction *I) {
|
||||
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(BranchOpc))
|
||||
.addMBB(TrueMBB);
|
||||
fastEmitBranch(FalseMBB, DbgLoc);
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TrueMBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TrueMBB, BranchWeight);
|
||||
finishCondBranch(BI->getParent(), TrueMBB, FalseMBB);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -1511,12 +1492,7 @@ bool X86FastISel::X86SelectBranch(const Instruction *I) {
|
||||
.addReg(OpReg).addImm(1);
|
||||
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, TII.get(X86::JNE_1))
|
||||
.addMBB(TrueMBB);
|
||||
fastEmitBranch(FalseMBB, DbgLoc);
|
||||
uint32_t BranchWeight = 0;
|
||||
if (FuncInfo.BPI)
|
||||
BranchWeight = FuncInfo.BPI->getEdgeWeight(BI->getParent(),
|
||||
TrueMBB->getBasicBlock());
|
||||
FuncInfo.MBB->addSuccessor(TrueMBB, BranchWeight);
|
||||
finishCondBranch(BI->getParent(), TrueMBB, FalseMBB);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user