LCOV - code coverage report
Current view: top level - include/llvm/Support - BlockFrequency.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 7 7 100.0 %
Date: 2017-09-14 15:23:50 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===-------- BlockFrequency.h - Block Frequency Wrapper --------*- C++ -*-===//
       2             : //
       3             : //                     The LLVM Compiler Infrastructure
       4             : //
       5             : // This file is distributed under the University of Illinois Open Source
       6             : // License. See LICENSE.TXT for details.
       7             : //
       8             : //===----------------------------------------------------------------------===//
       9             : //
      10             : // This file implements Block Frequency class.
      11             : //
      12             : //===----------------------------------------------------------------------===//
      13             : 
      14             : #ifndef LLVM_SUPPORT_BLOCKFREQUENCY_H
      15             : #define LLVM_SUPPORT_BLOCKFREQUENCY_H
      16             : 
      17             : #include "llvm/Support/BranchProbability.h"
      18             : #include "llvm/Support/DataTypes.h"
      19             : 
      20             : namespace llvm {
      21             : 
      22             : class raw_ostream;
      23             : 
      24             : // This class represents Block Frequency as a 64-bit value.
      25             : class BlockFrequency {
      26             :   uint64_t Frequency;
      27             : 
      28             : public:
      29     9039511 :   BlockFrequency(uint64_t Freq = 0) : Frequency(Freq) { }
      30             : 
      31             :   /// \brief Returns the maximum possible frequency, the saturation value.
      32             :   static uint64_t getMaxFrequency() { return -1ULL; }
      33             : 
      34             :   /// \brief Returns the frequency as a fixpoint number scaled by the entry
      35             :   /// frequency.
      36     5794340 :   uint64_t getFrequency() const { return Frequency; }
      37             : 
      38             :   /// \brief Multiplies with a branch probability. The computation will never
      39             :   /// overflow.
      40             :   BlockFrequency &operator*=(BranchProbability Prob);
      41             :   BlockFrequency operator*(BranchProbability Prob) const;
      42             : 
      43             :   /// \brief Divide by a non-zero branch probability using saturating
      44             :   /// arithmetic.
      45             :   BlockFrequency &operator/=(BranchProbability Prob);
      46             :   BlockFrequency operator/(BranchProbability Prob) const;
      47             : 
      48             :   /// \brief Adds another block frequency using saturating arithmetic.
      49             :   BlockFrequency &operator+=(BlockFrequency Freq);
      50             :   BlockFrequency operator+(BlockFrequency Freq) const;
      51             : 
      52             :   /// \brief Subtracts another block frequency using saturating arithmetic.
      53             :   BlockFrequency &operator-=(BlockFrequency Freq);
      54             :   BlockFrequency operator-(BlockFrequency Freq) const;
      55             : 
      56             :   /// \brief Shift block frequency to the right by count digits saturating to 1.
      57             :   BlockFrequency &operator>>=(const unsigned count);
      58             : 
      59             :   bool operator<(BlockFrequency RHS) const {
      60      125390 :     return Frequency < RHS.Frequency;
      61             :   }
      62             : 
      63             :   bool operator<=(BlockFrequency RHS) const {
      64       13773 :     return Frequency <= RHS.Frequency;
      65             :   }
      66             : 
      67             :   bool operator>(BlockFrequency RHS) const {
      68        7101 :     return Frequency > RHS.Frequency;
      69             :   }
      70             : 
      71             :   bool operator>=(BlockFrequency RHS) const {
      72     7821230 :     return Frequency >= RHS.Frequency;
      73             :   }
      74             : 
      75             :   bool operator==(BlockFrequency RHS) const {
      76         514 :     return Frequency == RHS.Frequency;
      77             :   }
      78             : };
      79             : 
      80             : }
      81             : 
      82             : #endif

Generated by: LCOV version 1.13