LLVM 20.0.0git
Public Types | Public Member Functions | Public Attributes | List of all members
llvm::InstrProfRecord Struct Reference

Profiling information for a single function. More...

#include "llvm/ProfileData/InstrProf.h"

Inheritance diagram for llvm::InstrProfRecord:
Inheritance graph
[legend]

Public Types

enum  CountPseudoKind { NotPseudo = 0 , PseudoHot , PseudoWarm }
 
enum  PseudoCountVal { HotFunctionVal = -1 , WarmFunctionVal = -2 }
 

Public Member Functions

 InstrProfRecord ()=default
 
 InstrProfRecord (std::vector< uint64_t > Counts)
 
 InstrProfRecord (std::vector< uint64_t > Counts, std::vector< uint8_t > BitmapBytes)
 
 InstrProfRecord (InstrProfRecord &&)=default
 
 InstrProfRecord (const InstrProfRecord &RHS)
 
InstrProfRecordoperator= (InstrProfRecord &&)=default
 
InstrProfRecordoperator= (const InstrProfRecord &RHS)
 
uint32_t getNumValueKinds () const
 Return the number of value profile kinds with non-zero number of profile sites.
 
uint32_t getNumValueSites (uint32_t ValueKind) const
 Return the number of instrumented sites for ValueKind.
 
uint32_t getNumValueData (uint32_t ValueKind) const
 Return the total number of ValueData for ValueKind.
 
ArrayRef< InstrProfValueData > getValueArrayForSite (uint32_t ValueKind, uint32_t Site) const
 Return the array of profiled values at Site.
 
void reserveSites (uint32_t ValueKind, uint32_t NumValueSites)
 Reserve space for NumValueSites sites.
 
void addValueData (uint32_t ValueKind, uint32_t Site, ArrayRef< InstrProfValueData > VData, InstrProfSymtab *SymTab)
 Add ValueData for ValueKind at value Site.
 
void merge (InstrProfRecord &Other, uint64_t Weight, function_ref< void(instrprof_error)> Warn)
 Merge the counts in Other into this one.
 
void scale (uint64_t N, uint64_t D, function_ref< void(instrprof_error)> Warn)
 Scale up profile counts (including value profile data) by a factor of (N / D).
 
void sortValueData ()
 Sort value profile data (per site) by count.
 
void Clear ()
 Clear value data entries and edge counters.
 
void clearValueData ()
 Clear value data entries.
 
void accumulateCounts (CountSumOrPercent &Sum) const
 Compute the sums of all counts and store in Sum.
 
void overlap (InstrProfRecord &Other, OverlapStats &Overlap, OverlapStats &FuncLevelOverlap, uint64_t ValueCutoff)
 Compute the overlap b/w this IntrprofRecord and Other.
 
void overlapValueProfData (uint32_t ValueKind, InstrProfRecord &Src, OverlapStats &Overlap, OverlapStats &FuncLevelOverlap)
 Compute the overlap of value profile counts.
 
CountPseudoKind getCountPseudoKind () const
 
void setPseudoCount (CountPseudoKind Kind)
 

Public Attributes

std::vector< uint64_tCounts
 
std::vector< uint8_t > BitmapBytes
 

Detailed Description

Profiling information for a single function.

Definition at line 831 of file InstrProf.h.

Member Enumeration Documentation

◆ CountPseudoKind

Enumerator
NotPseudo 
PseudoHot 
PseudoWarm 

Definition at line 920 of file InstrProf.h.

◆ PseudoCountVal

Enumerator
HotFunctionVal 
WarmFunctionVal 

Definition at line 925 of file InstrProf.h.

Constructor & Destructor Documentation

◆ InstrProfRecord() [1/5]

llvm::InstrProfRecord::InstrProfRecord ( )
default

◆ InstrProfRecord() [2/5]

llvm::InstrProfRecord::InstrProfRecord ( std::vector< uint64_t Counts)
inline

Definition at line 836 of file InstrProf.h.

◆ InstrProfRecord() [3/5]

llvm::InstrProfRecord::InstrProfRecord ( std::vector< uint64_t Counts,
std::vector< uint8_t >  BitmapBytes 
)
inline

Definition at line 837 of file InstrProf.h.

◆ InstrProfRecord() [4/5]

llvm::InstrProfRecord::InstrProfRecord ( InstrProfRecord &&  )
default

◆ InstrProfRecord() [5/5]

llvm::InstrProfRecord::InstrProfRecord ( const InstrProfRecord RHS)
inline

Definition at line 841 of file InstrProf.h.

Member Function Documentation

◆ accumulateCounts()

void llvm::InstrProfRecord::accumulateCounts ( CountSumOrPercent Sum) const

Compute the sums of all counts and store in Sum.

Definition at line 742 of file InstrProf.cpp.

References Counts, llvm::CountSumOrPercent::CountSum, getNumValueSites(), getValueArrayForSite(), I, llvm::CountSumOrPercent::NumEntries, and llvm::CountSumOrPercent::ValueCounts.

Referenced by overlap().

◆ addValueData()

void llvm::InstrProfRecord::addValueData ( uint32_t  ValueKind,
uint32_t  Site,
ArrayRef< InstrProfValueData >  VData,
InstrProfSymtab SymTab 
)

Add ValueData for ValueKind at value Site.

We do not support adding sites out of order. Site must go up from 0 one by one.

Definition at line 1015 of file InstrProf.cpp.

References assert(), and llvm::ArrayRef< T >::size().

◆ Clear()

void llvm::InstrProfRecord::Clear ( )
inline

Clear value data entries and edge counters.

Definition at line 900 of file InstrProf.h.

References clearValueData(), and Counts.

◆ clearValueData()

void llvm::InstrProfRecord::clearValueData ( )
inline

Clear value data entries.

Definition at line 906 of file InstrProf.h.

Referenced by Clear().

◆ getCountPseudoKind()

CountPseudoKind llvm::InstrProfRecord::getCountPseudoKind ( ) const
inline

Definition at line 929 of file InstrProf.h.

References Counts, HotFunctionVal, NotPseudo, PseudoHot, PseudoWarm, and WarmFunctionVal.

Referenced by merge().

◆ getNumValueData()

uint32_t llvm::InstrProfRecord::getNumValueData ( uint32_t  ValueKind) const
inline

Return the total number of ValueData for ValueKind.

Definition at line 1024 of file InstrProf.h.

References N.

◆ getNumValueKinds()

uint32_t llvm::InstrProfRecord::getNumValueKinds ( ) const
inline

Return the number of value profile kinds with non-zero number of profile sites.

Definition at line 1017 of file InstrProf.h.

◆ getNumValueSites()

uint32_t llvm::InstrProfRecord::getNumValueSites ( uint32_t  ValueKind) const
inline

Return the number of instrumented sites for ValueKind.

Definition at line 1031 of file InstrProf.h.

Referenced by accumulateCounts(), overlap(), and overlapValueProfData().

◆ getValueArrayForSite()

ArrayRef< InstrProfValueData > llvm::InstrProfRecord::getValueArrayForSite ( uint32_t  ValueKind,
uint32_t  Site 
) const
inline

Return the array of profiled values at Site.

Definition at line 1036 of file InstrProf.h.

Referenced by accumulateCounts(), llvm::annotateValueSite(), and llvm::getNumValueDataForSiteInstrProf().

◆ merge()

void llvm::InstrProfRecord::merge ( InstrProfRecord Other,
uint64_t  Weight,
function_ref< void(instrprof_error)>  Warn 
)

Merge the counts in Other into this one.

Optionally scale merged counts by Weight.

Definition at line 920 of file InstrProf.cpp.

References llvm::bitmap_mismatch, BitmapBytes, llvm::count_mismatch, llvm::counter_overflow, Counts, getCountPseudoKind(), llvm::getInstrMaxCountValue(), I, NotPseudo, llvm::Other, PseudoHot, PseudoWarm, llvm::SaturatingMultiplyAdd(), and setPseudoCount().

◆ operator=() [1/2]

InstrProfRecord & llvm::InstrProfRecord::operator= ( const InstrProfRecord RHS)
inline

Definition at line 847 of file InstrProf.h.

References BitmapBytes, Counts, and RHS.

◆ operator=() [2/2]

InstrProfRecord & llvm::InstrProfRecord::operator= ( InstrProfRecord &&  )
default

◆ overlap()

void llvm::InstrProfRecord::overlap ( InstrProfRecord Other,
OverlapStats Overlap,
OverlapStats FuncLevelOverlap,
uint64_t  ValueCutoff 
)

◆ overlapValueProfData()

void llvm::InstrProfRecord::overlapValueProfData ( uint32_t  ValueKind,
InstrProfRecord Src,
OverlapStats Overlap,
OverlapStats FuncLevelOverlap 
)

Compute the overlap of value profile counts.

Definition at line 791 of file InstrProf.cpp.

References assert(), getNumValueSites(), I, llvm::Other, and overlap().

Referenced by overlap().

◆ reserveSites()

void llvm::InstrProfRecord::reserveSites ( uint32_t  ValueKind,
uint32_t  NumValueSites 
)
inline

Reserve space for NumValueSites sites.

Definition at line 1040 of file InstrProf.h.

◆ scale()

void llvm::InstrProfRecord::scale ( uint64_t  N,
uint64_t  D,
function_ref< void(instrprof_error)>  Warn 
)

Scale up profile counts (including value profile data) by a factor of (N / D).

Definition at line 983 of file InstrProf.cpp.

References assert(), llvm::counter_overflow, Counts, D, llvm::getInstrMaxCountValue(), N, and llvm::SaturatingMultiply().

◆ setPseudoCount()

void llvm::InstrProfRecord::setPseudoCount ( CountPseudoKind  Kind)
inline

Definition at line 937 of file InstrProf.h.

References Counts, HotFunctionVal, PseudoHot, PseudoWarm, and WarmFunctionVal.

Referenced by merge().

◆ sortValueData()

void llvm::InstrProfRecord::sortValueData ( )
inline

Sort value profile data (per site) by count.

Definition at line 893 of file InstrProf.h.

Member Data Documentation

◆ BitmapBytes

std::vector<uint8_t> llvm::InstrProfRecord::BitmapBytes

◆ Counts

std::vector<uint64_t> llvm::InstrProfRecord::Counts

The documentation for this struct was generated from the following files: