LLVM  6.0.0svn
Namespaces | Macros | Functions | Variables
SpeculativeExecution.cpp File Reference
#include "llvm/Transforms/Scalar/SpeculativeExecution.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Operator.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
Include dependency graph for SpeculativeExecution.cpp:

Go to the source code of this file.

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Macros

#define DEBUG_TYPE   "speculative-execution"
 

Functions

 INITIALIZE_PASS_BEGIN (SpeculativeExecutionLegacyPass, "speculative-execution", "Speculatively execute instructions", false, false) INITIALIZE_PASS_END(SpeculativeExecutionLegacyPass
 
static unsigned llvm::ComputeSpeculationCost (const Instruction *I, const TargetTransformInfo &TTI)
 
FunctionPassllvm::createSpeculativeExecutionPass ()
 
FunctionPassllvm::createSpeculativeExecutionIfHasBranchDivergencePass ()
 

Variables

static cl::opt< unsignedSpecExecMaxSpeculationCost ("spec-exec-max-speculation-cost", cl::init(7), cl::Hidden, cl::desc("Speculative execution is not applied to basic blocks where " "the cost of the instructions to speculatively execute " "exceeds this limit."))
 
static cl::opt< unsignedSpecExecMaxNotHoisted ("spec-exec-max-not-hoisted", cl::init(5), cl::Hidden, cl::desc("Speculative execution is not applied to basic blocks where the " "number of instructions that would not be speculatively executed " "exceeds this limit."))
 
static cl::opt< boolSpecExecOnlyIfDivergentTarget ("spec-exec-only-if-divergent-target", cl::init(false), cl::Hidden, cl::desc("Speculative execution is applied only to targets with divergent " "branches, even if the pass was configured to apply only to all " "targets."))
 
speculative execution
 
speculative Speculatively execute instructions
 
speculative Speculatively execute false
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "speculative-execution"

Definition at line 76 of file SpeculativeExecution.cpp.

Function Documentation

◆ INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( SpeculativeExecutionLegacyPass  ,
"speculative-execution ,
"Speculatively execute instructions ,
false  ,
false   
)

Variable Documentation

◆ execution

speculative execution

Definition at line 134 of file SpeculativeExecution.cpp.

◆ false

speculative Speculatively execute false

Definition at line 134 of file SpeculativeExecution.cpp.

◆ instructions

speculative Speculatively execute instructions

Definition at line 134 of file SpeculativeExecution.cpp.

◆ SpecExecMaxNotHoisted

cl::opt<unsigned> SpecExecMaxNotHoisted("spec-exec-max-not-hoisted", cl::init(5), cl::Hidden, cl::desc("Speculative execution is not applied to basic blocks where the " "number of instructions that would not be speculatively executed " "exceeds this limit."))
static

◆ SpecExecMaxSpeculationCost

cl::opt<unsigned> SpecExecMaxSpeculationCost("spec-exec-max-speculation-cost", cl::init(7), cl::Hidden, cl::desc("Speculative execution is not applied to basic blocks where " "the cost of the instructions to speculatively execute " "exceeds this limit."))
static

◆ SpecExecOnlyIfDivergentTarget

cl::opt<bool> SpecExecOnlyIfDivergentTarget("spec-exec-only-if-divergent-target", cl::init(false), cl::Hidden, cl::desc("Speculative execution is applied only to targets with divergent " "branches, even if the pass was configured to apply only to all " "targets."))
static