Lines Matching defs:BSI
140 static bool splitMBB(BlockSplitInfo &BSI) {
141 assert(BSI.allInstrsInSameMBB() &&
144 MachineBasicBlock *ThisMBB = BSI.OrigBranch->getParent();
156 unsigned OrigBROpcode = BSI.OrigBranch->getOpcode();
163 unsigned NewBROpcode = BSI.InvertNewBranch ? InvertedOpcode : OrigBROpcode;
164 MachineBasicBlock *OrigTarget = BSI.OrigBranch->getOperand(1).getMBB();
169 BSI.BranchToFallThrough ? OrigFallThrough : OrigTarget;
184 if (BSI.MBPI) {
185 if (BSI.BranchToFallThrough) {
186 ProbToNewTarget = BSI.MBPI->getEdgeProbability(ThisMBB, OrigFallThrough) / 2;
191 ProbToNewTarget = BSI.MBPI->getEdgeProbability(ThisMBB, OrigTarget) / 2;
199 MachineBasicBlock::iterator InsertPoint = BSI.SplitBefore;
220 BuildMI(*ThisMBB, ThisMBB->end(), BSI.SplitBefore->getDebugLoc(),
222 .addReg(BSI.SplitCond->getOperand(0).getReg())
224 BuildMI(*ThisMBB, ThisMBB->end(), BSI.SplitBefore->getDebugLoc(),
227 if (BSI.MIToDelete)
228 BSI.MIToDelete->eraseFromParent();
232 if (BSI.NewCond) {
235 FirstTerminator->getOperand(0).setReg(BSI.NewCond->getOperand(0).getReg());
237 if (BSI.InvertOrigBranch)
693 BlockSplitInfo BSI { Branch, SplitBefore, SplitCond, InvertNewBranch,
696 bool Changed = splitMBB(BSI);