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";
186 "Expand out of range branch instructions and fix forbidden"
256 // Return if MBB has no branch instructions.
263 // MBB has only one branch instruction if FirstBr is not a branch
269 assert(!FirstBr->isIndirectBranch() && "Unexpected indirect branch found.");
290 // most one branch after this loop is executed.
307 // Compute offset of branch in number of bytes.
313 // Compute offset of a forward branch.
321 // Compute offset of a backward branch.
336 // Replace Br with a branch which has the opposite condition code and a
354 // Octeon BBIT family of branch has an immediate operand
357 llvm_unreachable("Unexpected immediate in branch instruction");
364 llvm_unreachable("Unexpected operand type in branch instruction");
369 // Bundle the instruction in the delay slot to the newly created branch
370 // and erase the original branch.
407 // Expand branch instructions to long branches.
522 // Bundle-align the target of indirect branch JR.
525 // In NaCl, modifying the sp is not allowed in branch delay slot.
526 // For MIPS32R6, we can skip using a delay slot branch.
575 // We assume the branch is within-function, and that offset is within
682 // At this point, offset where we need to branch does not fit into
683 // immediate field of the branch instruction and is not in the same
686 // do branch register.
723 // Change branch destination.
728 // Change branch destination and reverse condition.
831 // Search for MBB's branch instruction.
861 // Skip if this MBB doesn't have a branch or the branch has already been
862 // converted to a long branch.