Lines Matching full:branch

40 // Branch-range extension can be implemented in two ways, either through ...
42 // (1) Branch islands: Single branch instructions (also of limited range),
44 // destination. On ARM64, as 16 branch islands are needed to hop between
45 // opposite ends of a 2 GiB program. LD64 uses branch islands exclusively,
49 // register, followed by a register-indirect branch. Thunks are
57 // implement thunks. TODO: Adding support for branch islands!
60 // branch-range-extension thunk consists of:
65 // (3.1) new data for the instructions to load & branch to the far address +
120 // (i.e., ARM) generally does because it has limited-range branch/call
122 // thunks for programs so large that branch source & destination addresses
123 // might differ more than the range of branch instruction(s).
136 if (!target->hasAttr(r.type, RelocAttrBits::BRANCH)) in needsThunks()
147 // We can avoid work on InputSections that have no BRANCH relocs. in needsThunks()
155 // beyond which stubs are within range of a simple forward branch.
242 // Assign addresses up-to the forward branch-range limit. in finalize()
245 // (on Arm64: 12). If a section starts with a branch instruction and in finalize()
246 // contains several branch instructions in succession, then the distance in finalize()
266 // reach any stub with a forward branch. Note that although it in finalize()
270 // (and start of __stubs) comes within range of a forward branch. in finalize()
281 if (!target->hasAttr(r.type, RelocAttrBits::BRANCH)) in finalize()
284 // Calculate branch reachability boundaries in finalize()
296 // are now within range of a simple forward branch. in finalize()
317 // There were too many consecutive branch instructions for `slop` in finalize()