LLVM 20.0.0git
Namespaces | Macros | Functions | Variables
SpeculativeExecution.cpp File Reference
#include "llvm/Transforms/Scalar/SpeculativeExecution.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/Analysis/GlobalsModRef.h"
#include "llvm/Analysis/TargetTransformInfo.h"
#include "llvm/Analysis/ValueTracking.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Operator.h"
#include "llvm/InitializePasses.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Transforms/Scalar.h"

Go to the source code of this file.

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Macros

#define DEBUG_TYPE   "speculative-execution"
 

Functions

 INITIALIZE_PASS_BEGIN (SpeculativeExecutionLegacyPass, "speculative-execution", "Speculatively execute instructions", false, false) INITIALIZE_PASS_END(SpeculativeExecutionLegacyPass
 
static InstructionCost 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 78 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 136 of file SpeculativeExecution.cpp.

◆ false

speculative Speculatively execute false

Definition at line 137 of file SpeculativeExecution.cpp.

◆ instructions

speculative Speculatively execute instructions

Definition at line 137 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.")) ( "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.")) ( "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.")) ( "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