Lines Matching refs:BF

58 bool hasVolatileName(const BinaryFunction &BF) {  in hasVolatileName()  argument
59 for (const StringRef &Name : BF.getNames()) in hasVolatileName()
359 void DataReader::readProfile(BinaryFunction &BF) { in readProfile() argument
360 if (BF.empty()) in readProfile()
364 BF.ProfileFlags = BinaryFunction::PF_SAMPLE; in readProfile()
365 readSampleData(BF); in readProfile()
369 BF.ProfileFlags = BinaryFunction::PF_LBR; in readProfile()
372 matchProfileData(BF); in readProfile()
374 FuncBranchData *FBD = getBranchData(BF); in readProfile()
386 BinaryBasicBlock *BB = BF.getBasicBlockAtOffset(BI.To.Offset); in readProfile()
399 if (!recordBranch(BF, BI.From.Offset, BI.To.Offset, BI.Branches, in readProfile()
407 convertBranchData(BF); in readProfile()
410 void DataReader::matchProfileData(BinaryFunction &BF) { in matchProfileData() argument
417 FuncBranchData *FBD = getBranchData(BF); in matchProfileData()
419 BF.ProfileMatchRatio = evaluateProfileData(BF, *FBD); in matchProfileData()
420 BF.RawBranchCount = FBD->getNumExecutedBranches(); in matchProfileData()
421 if (BF.ProfileMatchRatio == 1.0f) { in matchProfileData()
422 if (fetchProfileForOtherEntryPoints(BF)) { in matchProfileData()
423 BF.ProfileMatchRatio = evaluateProfileData(BF, *FBD); in matchProfileData()
424 BF.ExecutionCount = FBD->ExecutionCount; in matchProfileData()
425 BF.RawBranchCount = FBD->getNumExecutedBranches(); in matchProfileData()
434 if (!hasVolatileName(BF)) in matchProfileData()
439 getBranchDataForNamesRegex(BF.getNames()); in matchProfileData()
445 if (evaluateProfileData(BF, *NewBranchData) != 1.0f) in matchProfileData()
452 setBranchData(BF, NewBranchData); in matchProfileData()
454 BF.ExecutionCount = NewBranchData->ExecutionCount; in matchProfileData()
455 BF.ProfileMatchRatio = 1.0f; in matchProfileData()
460 void DataReader::matchProfileMemData(BinaryFunction &BF) { in matchProfileMemData() argument
462 getMemDataForNamesRegex(BF.getNames()); in matchProfileMemData()
468 if (FuncMemData *MD = getMemData(BF)) in matchProfileMemData()
472 setMemData(BF, NewMemData); in matchProfileMemData()
478 bool DataReader::fetchProfileForOtherEntryPoints(BinaryFunction &BF) { in fetchProfileForOtherEntryPoints() argument
479 BinaryContext &BC = BF.getBinaryContext(); in fetchProfileForOtherEntryPoints()
481 FuncBranchData *FBD = getBranchData(BF); in fetchProfileForOtherEntryPoints()
488 for (BinaryBasicBlock *BB : BF.BasicBlocks) { in fetchProfileForOtherEntryPoints()
494 uint64_t EntryAddress = BB->getOffset() + BF.getAddress(); in fetchProfileForOtherEntryPoints()
509 float DataReader::evaluateProfileData(BinaryFunction &BF, in evaluateProfileData() argument
511 BinaryContext &BC = BF.getBinaryContext(); in evaluateProfileData()
524 IsValid = recordBranch(BF, BI.From.Offset, BI.To.Offset, 0); in evaluateProfileData()
536 MCInst *Instr = BF.getInstructionAtOffset(BI.From.Offset); in evaluateProfileData()
539 Instr = BF.getInstructionAtOffset(BI.From.Offset + 1); in evaluateProfileData()
550 LLVM_DEBUG(dbgs() << "\tinvalid branch in " << BF << " : 0x" in evaluateProfileData()
562 << ") for function " << BF << '\n'; in evaluateProfileData()
567 void DataReader::readSampleData(BinaryFunction &BF) { in readSampleData() argument
568 FuncSampleData *SampleDataOrErr = getFuncSampleData(BF.getNames()); in readSampleData()
574 BF.ProfileMatchRatio = 1.0f; in readSampleData()
575 BF.removeTagsFromProfile(); in readSampleData()
589 uint64_t LastOffset = BF.getSize(); in readSampleData()
591 for (auto I = BF.BasicBlockOffsets.rbegin(), E = BF.BasicBlockOffsets.rend(); in readSampleData()
610 BF.ExecutionCount = TotalEntryCount; in readSampleData()
612 estimateEdgeCounts(BF); in readSampleData()
615 void DataReader::convertBranchData(BinaryFunction &BF) const { in convertBranchData()
616 BinaryContext &BC = BF.getBinaryContext(); in convertBranchData()
618 if (BF.empty()) in convertBranchData()
621 FuncBranchData *FBD = getBranchData(BF); in convertBranchData()
639 MCInst *Instr = BF.getInstructionAtOffset(BI.From.Offset); in convertBranchData()
647 << Twine::utohexstr(BI.From.Offset) << " in function " << BF in convertBranchData()
672 bool DataReader::recordBranch(BinaryFunction &BF, uint64_t From, uint64_t To, in recordBranch() argument
674 BinaryContext &BC = BF.getBinaryContext(); in recordBranch()
676 BinaryBasicBlock *FromBB = BF.getBasicBlockContainingOffset(From); in recordBranch()
677 BinaryBasicBlock *ToBB = BF.getBasicBlockContainingOffset(To); in recordBranch()
697 for (std::pair<uint32_t, uint32_t> &Branch : BF.IgnoredBranches) in recordBranch()
733 << " in " << BF << " : " << From << " -> " << To in recordBranch()
740 if (ToBB == BF.getLayout().block_back()) in recordBranch()
742 BinaryBasicBlock *NextBB = BF.getLayout().getBlock(ToBB->getIndex() + 1); in recordBranch()
749 MCInst *FromInstruction = BF.getInstructionAtOffset(From); in recordBranch()
760 << BF << '\n'); in recordBranch()
765 LLVM_DEBUG(dbgs() << "no instruction for offset " << From << " in " << BF in recordBranch()
796 LLVM_DEBUG(dbgs() << "invalid branch in " << BF << '\n' in recordBranch()