Lines Matching full:branch

11 /// - it expands a branch or jump instruction into a long branch if its offset
18 /// Example of that is a situation where at first, no branch should be expanded,
21 /// case it is necessary to check again if there is some branch that needs
22 /// expansion. On the other hand, expanding some branch may cause a control
28 /// Regarding branch expanding:
30 /// When branch instruction like beqzc or bnezc has offset that is too large
37 /// Regarding compact branch hazard prevention:
42 /// A forbidden slot hazard occurs when a compact branch instruction is executed
44 /// such as a branch or jump, ERET, ERETNC, DERET, WAIT and PAUSE.
59 /// A) A previous pass has created a compact branch directly.
60 /// B) Transforming a delay slot branch into compact branch. This case can be
70 /// pipeline hazards such as compact branch hazard, hence the existing hazard
108 #define DEBUG_TYPE "mips-branch-expansion"
114 SkipLongBranch("skip-mips-long-branch", cl::init(false),
115 cl::desc("MIPS: Skip branch expansion pass."), cl::Hidden);
118 ForceLongBranch("force-mips-long-branch", cl::init(false),
144 return "Mips Branch Expansion Pass"; in getPassName()
186 "Expand out of range branch instructions and fix forbidden"
256 // Return if MBB has no branch instructions. in splitMBB()
263 // MBB has only one branch instruction if FirstBr is not a branch in splitMBB()
269 assert(!FirstBr->isIndirectBranch() && "Unexpected indirect branch found."); in splitMBB()
290 // most one branch after this loop is executed. in initMBBInfo()
307 // Compute offset of branch in number of bytes.
313 // Compute offset of a forward branch. in computeOffset()
321 // Compute offset of a backward branch. in computeOffset()
336 // Replace Br with a branch which has the opposite condition code and a
354 // Octeon BBIT family of branch has an immediate operand in replaceBranch()
357 llvm_unreachable("Unexpected immediate in branch instruction"); in replaceBranch()
364 llvm_unreachable("Unexpected operand type in branch instruction"); in replaceBranch()
369 // Bundle the instruction in the delay slot to the newly created branch in replaceBranch()
370 // and erase the original branch. in replaceBranch()
407 // Expand branch instructions to long branches.
522 // Bundle-align the target of indirect branch JR. in expandToLongBranch()
525 // In NaCl, modifying the sp is not allowed in branch delay slot. in expandToLongBranch()
526 // For MIPS32R6, we can skip using a delay slot branch. in expandToLongBranch()
575 // We assume the branch is within-function, and that offset is within in expandToLongBranch()
682 // At this point, offset where we need to branch does not fit into in expandToLongBranch()
683 // immediate field of the branch instruction and is not in the same in expandToLongBranch()
686 // do branch register. in expandToLongBranch()
723 // Change branch destination. in expandToLongBranch()
728 // Change branch destination and reverse condition. in expandToLongBranch()
831 // Search for MBB's branch instruction. in handlePossibleLongBranch()
861 // Skip if this MBB doesn't have a branch or the branch has already been in handlePossibleLongBranch()
862 // converted to a long branch. in handlePossibleLongBranch()