LLVM 22.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:
[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.
 
LLVM_ABI void addValueData (uint32_t ValueKind, uint32_t Site, ArrayRef< InstrProfValueData > VData, InstrProfSymtab *SymTab)
 Add ValueData for ValueKind at value Site.
 
LLVM_ABI void merge (InstrProfRecord &Other, uint64_t Weight, function_ref< void(instrprof_error)> Warn)
 Merge the counts in Other into this one.
 
LLVM_ABI 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.
 
LLVM_ABI void accumulateCounts (CountSumOrPercent &Sum) const
 Compute the sums of all counts and store in Sum.
 
LLVM_ABI void overlap (InstrProfRecord &Other, OverlapStats &Overlap, OverlapStats &FuncLevelOverlap, uint64_t ValueCutoff)
 Compute the overlap b/w this IntrprofRecord and Other.
 
LLVM_ABI 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_tBitmapBytes
 

Detailed Description

Profiling information for a single function.

Definition at line 895 of file InstrProf.h.

Member Enumeration Documentation

◆ CountPseudoKind

Enumerator
NotPseudo 
PseudoHot 
PseudoWarm 

Definition at line 985 of file InstrProf.h.

◆ PseudoCountVal

Enumerator
HotFunctionVal 
WarmFunctionVal 

Definition at line 990 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 900 of file InstrProf.h.

◆ InstrProfRecord() [3/5]

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

Definition at line 901 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 905 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 779 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 1052 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 965 of file InstrProf.h.

References clearValueData(), and Counts.

◆ clearValueData()

void llvm::InstrProfRecord::clearValueData ( )
inline

Clear value data entries.

Definition at line 971 of file InstrProf.h.

Referenced by Clear().

◆ getCountPseudoKind()

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

Definition at line 994 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 1089 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 1082 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 1096 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 1101 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 957 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 911 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 828 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 1105 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 1020 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 1002 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 958 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: