LCOV - code coverage report
Current view: top level - lib/Target/AMDGPU - AMDGPUPerfHintAnalysis.h (source / functions) Hit Total Coverage
Test: llvm-toolchain.info Lines: 3 3 100.0 %
Date: 2018-10-20 13:21:21 Functions: 1 1 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //===- AMDGPUPerfHintAnalysis.h - analysis of functions memory traffic ----===//
       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             : /// \file
      11             : /// \brief Analyzes if a function potentially memory bound and if a kernel
      12             : /// kernel may benefit from limiting number of waves to reduce cache thrashing.
      13             : ///
      14             : //===----------------------------------------------------------------------===//
      15             : 
      16             : #ifndef LLVM_LIB_TARGET_AMDGPU_MDGPUPERFHINTANALYSIS_H
      17             : #define LLVM_LIB_TARGET_AMDGPU_MDGPUPERFHINTANALYSIS_H
      18             : #include "llvm/IR/ValueMap.h"
      19             : #include "llvm/Pass.h"
      20             : 
      21             : namespace llvm {
      22             : 
      23             : struct AMDGPUPerfHintAnalysis : public FunctionPass {
      24             :   static char ID;
      25             : 
      26             : public:
      27        4458 :   AMDGPUPerfHintAnalysis() : FunctionPass(ID) {}
      28             : 
      29             :   bool runOnFunction(Function &F) override;
      30             : 
      31        2229 :   void getAnalysisUsage(AnalysisUsage &AU) const override {
      32             :     AU.setPreservesAll();
      33        2229 :   }
      34             : 
      35             :   bool isMemoryBound(const Function *F) const;
      36             : 
      37             :   bool needsWaveLimiter(const Function *F) const;
      38             : 
      39             :   struct FuncInfo {
      40             :     unsigned MemInstCount;
      41             :     unsigned InstCount;
      42             :     unsigned IAMInstCount; // Indirect access memory instruction count
      43             :     unsigned LSMInstCount; // Large stride memory instruction count
      44             :     FuncInfo() : MemInstCount(0), InstCount(0), IAMInstCount(0),
      45             :                  LSMInstCount(0) {}
      46             :   };
      47             : 
      48             :   typedef ValueMap<const Function*, FuncInfo> FuncInfoMap;
      49             : 
      50             : private:
      51             : 
      52             :   FuncInfoMap FIM;
      53             : };
      54             : } // namespace llvm
      55             : #endif // LLVM_LIB_TARGET_AMDGPU_MDGPUPERFHINTANALYSIS_H

Generated by: LCOV version 1.13