LLVM  14.0.0git
Namespaces | Macros | Functions | Variables
PGOMemOPSizeOpt.cpp File Reference
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/BlockFrequencyInfo.h"
#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/OptimizationRemarkEmitter.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstVisitor.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/Type.h"
#include "llvm/InitializePasses.h"
#include "llvm/Pass.h"
#include "llvm/PassRegistry.h"
#include "llvm/ProfileData/InstrProf.h"
#include "llvm/ProfileData/InstrProfData.inc"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/WithColor.h"
#include "llvm/Transforms/Instrumentation.h"
#include "llvm/Transforms/Instrumentation/PGOInstrumentation.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include <cassert>
#include <cstdint>
#include <vector>
Include dependency graph for PGOMemOPSizeOpt.cpp:

Go to the source code of this file.

Namespaces

 llvm
 ---------------------— PointerInfo ------------------------------------—
 

Macros

#define INSTR_PROF_VALUE_PROF_MEMOP_API
 
#define DEBUG_TYPE   "pgo-memop-opt"
 

Functions

 STATISTIC (NumOfPGOMemOPOpt, "Number of memop intrinsics optimized.")
 
 STATISTIC (NumOfPGOMemOPAnnotate, "Number of memop intrinsics annotated.")
 
 INITIALIZE_PASS_BEGIN (PGOMemOPSizeOptLegacyPass, "pgo-memop-opt", "Optimize memory intrinsic using its size value profile", false, false) INITIALIZE_PASS_END(PGOMemOPSizeOptLegacyPass
 
static bool PGOMemOPSizeOptImpl (Function &F, BlockFrequencyInfo &BFI, OptimizationRemarkEmitter &ORE, DominatorTree *DT, TargetLibraryInfo &TLI)
 

Variables

static cl::opt< unsigned > MemOPCountThreshold ("pgo-memop-count-threshold", cl::Hidden, cl::ZeroOrMore, cl::init(1000), cl::desc("The minimum count to optimize memory " "intrinsic calls"))
 
static cl::opt< bool > DisableMemOPOPT ("disable-memop-opt", cl::init(false), cl::Hidden, cl::desc("Disable optimize"))
 
static cl::opt< unsigned > MemOPPercentThreshold ("pgo-memop-percent-threshold", cl::init(40), cl::Hidden, cl::ZeroOrMore, cl::desc("The percentage threshold for the " "memory intrinsic calls optimization"))
 
static cl::opt< unsigned > MemOPMaxVersion ("pgo-memop-max-version", cl::init(3), cl::Hidden, cl::ZeroOrMore, cl::desc("The max version for the optimized memory " " intrinsic calls"))
 
static cl::opt< bool > MemOPScaleCount ("pgo-memop-scale-count", cl::init(true), cl::Hidden, cl::desc("Scale the memop size counts using the basic " " block count value"))
 
cl::opt< bool > MemOPOptMemcmpBcmp ("pgo-memop-optimize-memcmp-bcmp", cl::init(true), cl::Hidden, cl::desc("Size-specialize memcmp and bcmp calls"))
 
static cl::opt< unsigned > MemOpMaxOptSize ("memop-value-prof-max-opt-size", cl::Hidden, cl::init(128), cl::desc("Optimize the memop size <= this value"))
 
pgo memop opt
 
char & llvm::PGOMemOPSizeOptID = PGOMemOPSizeOptLegacyPass::ID
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "pgo-memop-opt"

Definition at line 59 of file PGOMemOPSizeOpt.cpp.

◆ INSTR_PROF_VALUE_PROF_MEMOP_API

#define INSTR_PROF_VALUE_PROF_MEMOP_API

Definition at line 42 of file PGOMemOPSizeOpt.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( PGOMemOPSizeOptLegacyPass  ,
"pgo-memop-opt ,
"Optimize memory intrinsic using its size value profile ,
false  ,
false   
)

◆ PGOMemOPSizeOptImpl()

static bool PGOMemOPSizeOptImpl ( Function F,
BlockFrequencyInfo BFI,
OptimizationRemarkEmitter ORE,
DominatorTree DT,
TargetLibraryInfo TLI 
)
static

Definition at line 507 of file PGOMemOPSizeOpt.cpp.

References llvm::AMDGPUISD::BFI, DisableMemOPOPT, and F.

Referenced by llvm::PGOMemOPSizeOpt::run().

◆ STATISTIC() [1/2]

STATISTIC ( NumOfPGOMemOPAnnotate  ,
"Number of memop intrinsics annotated."   
)

◆ STATISTIC() [2/2]

STATISTIC ( NumOfPGOMemOPOpt  ,
"Number of memop intrinsics optimized."   
)

Variable Documentation

◆ DisableMemOPOPT

cl::opt<bool> DisableMemOPOPT("disable-memop-opt", cl::init(false), cl::Hidden, cl::desc("Disable optimize"))
static

Referenced by PGOMemOPSizeOptImpl().

◆ MemOPCountThreshold

cl::opt<unsigned> MemOPCountThreshold("pgo-memop-count-threshold", cl::Hidden, cl::ZeroOrMore, cl::init(1000), cl::desc("The minimum count to optimize memory " "intrinsic calls"))
static

◆ MemOpMaxOptSize

cl::opt<unsigned> MemOpMaxOptSize("memop-value-prof-max-opt-size", cl::Hidden, cl::init(128), cl::desc("Optimize the memop size <= this value"))
static

◆ MemOPMaxVersion

cl::opt<unsigned> MemOPMaxVersion("pgo-memop-max-version", cl::init(3), cl::Hidden, cl::ZeroOrMore, cl::desc("The max version for the optimized memory " " intrinsic calls"))
static

◆ MemOPOptMemcmpBcmp

cl::opt<bool> MemOPOptMemcmpBcmp("pgo-memop-optimize-memcmp-bcmp", cl::init(true), cl::Hidden, cl::desc("Size-specialize memcmp and bcmp calls"))

◆ MemOPPercentThreshold

cl::opt<unsigned> MemOPPercentThreshold("pgo-memop-percent-threshold", cl::init(40), cl::Hidden, cl::ZeroOrMore, cl::desc("The percentage threshold for the " "memory intrinsic calls optimization"))
static

◆ MemOPScaleCount

cl::opt<bool> MemOPScaleCount("pgo-memop-scale-count", cl::init(true), cl::Hidden, cl::desc("Scale the memop size counts using the basic " " block count value"))
static

◆ opt

pgo memop opt

Definition at line 134 of file PGOMemOPSizeOpt.cpp.