Lines Matching defs:instr

56 // The optimal approach is to mix islands for distinations within two hops,  in isADRP()
65 // (2) new InputSection, which contains ... in isADRP()
81 // * DenseMap<Symbol *, ThunkInfo> thunkMap: Maps the function symbol in isADRP()
88 // function: (a) thunk symbol, (b) input section containing stub code, and in isADRP()
93 // * A thunk incarnation comprises (a) private-extern Defined symbol pointing in isADRP()
109 // thus, we place thunks at monotonically increasing addresses. Once a thunk in isADRP()
116 DenseMap<Symbol *, ThunkInfo> lld::macho::thunkMap; in isADRP()
120 // instructions, whereas CISC (i.e., x86) generally doesn't. RISC only needs in isST1SinglePost()
124 if (!target->usesThunks()) in isST1SinglePost()
125 return false; in isST1SinglePost()
132 for (InputSection *isec : inputs) { in isST1SinglePost()
133 for (Reloc &r : isec->relocs) { in isST1SinglePost()
136 auto *sym = r.referent.get<Symbol *>(); in isST1SinglePost()
142 // might need to create more for this referent at the time we are in isST1SinglePost()
153 // Since __stubs is placed after __text, we must estimate the address
160 // Tally the non-stub functions which still have call sites in isSTPPost()
166 maxPotentialThunks += in isSTPOffset()
167 !tp.first->isInStubs() && ti.callSitesUsed < ti.callSiteCount; in isSTPOffset()
173 isecEnd = alignTo(isecEnd, isec->align) + isec->getSize(); in isSTPPre()
177 uint64_t stubsInRangeVA = isecEnd + maxPotentialThunks * target->thunkSize + in isSTP()
184 ", tail = " + to_hexString(isecEnd - isecVA) + in isLoadStoreUnscaled()
191 uint64_t isecFileOff = fileOff;
197 isecAddr += isec->getSize();
202 for (ConcatInputSection *isec : inputs) in isLoadStoreImmediatePre()
203 finalizeOne(isec); in isLoadStoreImmediatePre()
209 uint64_t branchRange = target->branchRange; in isLoadStoreRegisterOff()
210 uint64_t stubsInRangeVA = TargetInfo::outOfRangeVA;
215 size_t thunkCount = 0;
219 // Kick-off by ensuring that the first input section has an address in getRt()
222 if (finalIdx == callIdx) in getRn()
223 finalizeOne(inputs[finalIdx++]); in getRn()
231 if (isec->callSiteCount == 0) in isBranch()
232 continue; in isBranch()
238 // sits in the middle of a loop, this code executes only once. in isV8SingleRegisterNonStructureLoadStore()
249 [](Reloc &a, Reloc &b) { return a.offset > b.offset; })); in isV8NonStructureLoad()
274 ++thunkInfo.thunkCallCount; in hasWriteback()
275 ++thunkCallCount;
284 // ... otherwise, create a new thunk in doesLoadStoreWriteToReg()