| 
    LLVM 22.0.0git
    
   | 
 
#include "llvm/Analysis/BlockFrequencyInfoImpl.h"#include "llvm/ADT/APInt.h"#include "llvm/ADT/DenseMap.h"#include "llvm/ADT/SCCIterator.h"#include "llvm/ADT/SmallString.h"#include "llvm/Config/llvm-config.h"#include "llvm/IR/Function.h"#include "llvm/Support/BlockFrequency.h"#include "llvm/Support/BranchProbability.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/Debug.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/ScaledNumber.h"#include "llvm/Support/raw_ostream.h"#include <algorithm>#include <cassert>#include <cstddef>#include <cstdint>#include <iterator>#include <list>#include <numeric>#include <optional>#include <utility>#include <vector>Go to the source code of this file.
Classes | |
| struct | llvm::GraphTraits< IrreducibleGraph > | 
Namespaces | |
| namespace | llvm | 
| This is an optimization pass for GlobalISel generic memory operations.  | |
Macros | |
| #define | DEBUG_TYPE "block-freq" | 
Functions | |
| cl::opt< bool > | llvm::CheckBFIUnknownBlockQueries ("check-bfi-unknown-block-queries", cl::init(false), cl::Hidden, cl::desc("Check if block frequency is queried for an unknown block " "for debugging missed BFI updates")) | 
| cl::opt< bool > | llvm::UseIterativeBFIInference ("use-iterative-bfi-inference", cl::Hidden, cl::desc("Apply an iterative post-processing to infer correct BFI counts")) | 
| cl::opt< unsigned > | llvm::IterativeBFIMaxIterationsPerBlock ("iterative-bfi-max-iterations-per-block", cl::init(1000), cl::Hidden, cl::desc("Iterative inference: maximum number of update iterations " "per block")) | 
| cl::opt< double > | llvm::IterativeBFIPrecision ("iterative-bfi-precision", cl::init(1e-12), cl::Hidden, cl::desc("Iterative inference: delta convergence precision; smaller values " "typically lead to better results at the cost of worsen runtime")) | 
| static char | getHexDigit (int N) | 
| static void | combineWeight (Weight &W, const Weight &OtherW) | 
| static void | combineWeightsBySorting (WeightList &Weights) | 
| static void | combineWeightsByHashing (WeightList &Weights) | 
| static void | combineWeights (WeightList &Weights) | 
| static uint64_t | shiftRightAndRound (uint64_t N, int Shift) | 
| static void | cleanup (BlockFrequencyInfoImplBase &BFI) | 
| Clear all memory not needed downstream.   | |
| static void | debugAssign (const BlockFrequencyInfoImplBase &BFI, const DitheringDistributer &D, const BlockNode &T, const BlockMass &M, const char *Desc) | 
| static void | convertFloatingToInteger (BlockFrequencyInfoImplBase &BFI, const Scaled64 &Min, const Scaled64 &Max) | 
| static void | unwrapLoop (BlockFrequencyInfoImplBase &BFI, LoopData &Loop) | 
| Unwrap a loop package.   | |
| static void | findIrreducibleHeaders (const BlockFrequencyInfoImplBase &BFI, const IrreducibleGraph &G, const std::vector< const IrreducibleGraph::IrrNode * > &SCC, LoopData::NodeList &Headers, LoopData::NodeList &Others) | 
| Find extra irreducible headers.   | |
| static void | createIrreducibleLoop (BlockFrequencyInfoImplBase &BFI, const IrreducibleGraph &G, LoopData *OuterLoop, std::list< LoopData >::iterator Insert, const std::vector< const IrreducibleGraph::IrrNode * > &SCC) | 
| #define DEBUG_TYPE "block-freq" | 
Definition at line 41 of file BlockFrequencyInfoImpl.cpp.
      
  | 
  static | 
Clear all memory not needed downstream.
Releases all memory not used downstream. In particular, saves Freqs.
Definition at line 304 of file BlockFrequencyInfoImpl.cpp.
Referenced by llvm::BlockFrequencyInfoImplBase::finalizeMetrics(), llvm::CrashRecoveryContext::registerCleanup(), llvm::ConstantHoistingPass::runImpl(), and llvm::CrashRecoveryContext::unregisterCleanup().
      
  | 
  static | 
Definition at line 162 of file BlockFrequencyInfoImpl.cpp.
References assert(), and UINT64_MAX.
Referenced by combineWeightsByHashing(), and combineWeightsBySorting().
      
  | 
  static | 
Definition at line 218 of file BlockFrequencyInfoImpl.cpp.
References combineWeightsByHashing(), and combineWeightsBySorting().
Referenced by llvm::BlockFrequencyInfoImplBase::Distribution::normalize().
      
  | 
  static | 
Definition at line 199 of file BlockFrequencyInfoImpl.cpp.
References combineWeight(), I, and llvm::NextPowerOf2().
Referenced by combineWeights().
      
  | 
  static | 
Definition at line 178 of file BlockFrequencyInfoImpl.cpp.
References combineWeight(), E(), I, and llvm::sort().
Referenced by combineWeights().
      
  | 
  static | 
Definition at line 482 of file BlockFrequencyInfoImpl.cpp.
References llvm::dbgs(), LLVM_DEBUG, and Scaled.
Referenced by llvm::BlockFrequencyInfoImplBase::finalizeMetrics().
      
  | 
  static | 
Definition at line 758 of file BlockFrequencyInfoImpl.cpp.
References llvm::dbgs(), findIrreducibleHeaders(), G, LLVM_DEBUG, and N.
Referenced by llvm::BlockFrequencyInfoImplBase::analyzeIrreducible().
      
  | 
  static | 
Definition at line 435 of file BlockFrequencyInfoImpl.cpp.
References D(), llvm::dbgs(), and T.
Referenced by llvm::BlockFrequencyInfoImplBase::adjustLoopHeaderMass(), llvm::BlockFrequencyInfoImplBase::distributeIrrLoopHeaderMass(), and llvm::BlockFrequencyInfoImplBase::distributeMass().
      
  | 
  static | 
Find extra irreducible headers.
Find entry blocks and other blocks with backedges, which exist when G contains irreducible sub-SCCs. 
Definition at line 689 of file BlockFrequencyInfoImpl.cpp.
References assert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::begin(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::dbgs(), E(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), G, I, LLVM_DEBUG, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), llvm::make_range(), P, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::size(), and llvm::sort().
Referenced by createIrreducibleLoop().
      
  | 
  static | 
Definition at line 75 of file BlockFrequencyInfoImpl.cpp.
Referenced by llvm::bfi_detail::BlockMass::print().
Definition at line 228 of file BlockFrequencyInfoImpl.cpp.
Referenced by llvm::BlockFrequencyInfoImplBase::Distribution::normalize().
      
  | 
  static | 
Unwrap a loop package.
Visits all the members of a loop, adjusting their BlockData according to the loop's pseudo-node.
Definition at line 515 of file BlockFrequencyInfoImpl.cpp.
References llvm::dbgs(), F, LLVM_DEBUG, and N.
Referenced by llvm::BlockFrequencyInfoImplBase::unwrapLoops().