GPUOcelot
|
SplitBasicBlockPass.cpp. More...
Classes | |
class | KernelAndId |
class | AssignFallThroughEdge |
class | ConvertPredicationToSelectPass |
A class for a pass that converts all predicate instructions to conditional select. More... | |
class | DeadCodeEliminationPass |
A transform to perform dead code elimination on a PTX kernel. More... | |
class | DefaultLayoutPass |
Construct an instruction vector without reconverge points. More... | |
class | IPDOMReconvergencePass |
A pass to construct an instruction vector with reconverge points. More... | |
class | KernelDrawerPass |
class | LinearScanRegisterAllocationPass |
Implements the linear scan register allocation algorithm. More... | |
class | MIMDThreadSchedulingPass |
A class for changing the scheduling order of threads assuming execution on a SIMT IPDOM machine. More... | |
class | Pass |
A class modeled after the LLVM notion of an optimization pass. Allows different transformations to be applied to PTX modules. More... | |
class | ImmutablePass |
A pass that generates information about a program without modifying it, used to generate data structures. More... | |
class | ModulePass |
A pass over an entire module. More... | |
class | KernelPass |
A pass over a single kernel in a module. More... | |
class | ImmutableKernelPass |
An immutable pass over a single kernel in a module. More... | |
class | BasicBlockPass |
A pass over a single basic block in a kernel. More... | |
class | PassManager |
A class to orchestrate the execution of many passes. More... | |
class | RemoveBarrierPass |
A class for a pass that removes all barriers from a PTX kernel. More... | |
class | SimplifyExternalCallsPass |
Removes parameters passed to external calls to eliminate explicit stack modifications in PTX. The register are passed directly to external calls. More... | |
class | SplitBasicBlockPass |
A class for splitting basic blocks larger than a specified size. More... | |
class | StructuralTransform |
StructuralTransform - This class holds all the methods and data structures. More... | |
class | SubkernelFormationPass |
Split all kernels in a module into sub-kernels. The sub-kernels should be called as functions from the main kernel. The assumption is that all threads will execute a sub-kernel, hit a barrier, and enter the next sub-kernel. More... | |
class | SyncEliminationPass |
This pass converts ordinary bra instructions into bra.uni, whenever the divergence analysis deems it safe to do so. More... | |
class | ThreadFrontierReconvergencePass |
A pass to construct an instruction vector with reconverge points at thread frontiers. More... | |
Typedefs | |
typedef analysis::DataflowGraph::iterator | iterator |
typedef analysis::DataflowGraph::Instruction | Instruction |
typedef analysis::DataflowGraph::RegisterPointerVector | RegisterPointerVector |
typedef analysis::DataflowGraph::RegisterVector | RegisterVector |
typedef std::unordered_set < iterator > | BlockSet |
typedef analysis::DataflowGraph::BlockPointerSet | BlockPointerSet |
typedef analysis::DataflowGraph::PhiInstruction | PhiInstruction |
typedef analysis::DataflowGraph::Register | Register |
typedef analysis::DataflowGraph::Block::RegisterSet | RegisterSet |
typedef analysis::DataflowGraph::InstructionVector | InstructionVector |
typedef analysis::DataflowGraph::PhiInstructionVector | PhiInstructionVector |
typedef PassManager::AnalysisMap | AnalysisMap |
typedef std::unordered_set < std::string > | StringSet |
typedef analysis::StructuralAnalysis | SA |
typedef std::unordered_map < std::string, ir::ControlFlowGraph::iterator > | BlockLabelMap |
typedef std::unordered_map < ir::BasicBlock::Id, KernelAndId > | IdToSubkernelMap |
typedef std::list< Pass * > | PassList |
Functions | |
void | sinkBarrier (ir::PTXKernel &kernel, BlockSet &barriers, ir::ControlFlowGraph::iterator block, ir::ControlFlowGraph::iterator dom, ir::ControlFlowGraph::iterator pdom, analysis::DataflowGraph *dfg) |
void | splitBlock (ir::ControlFlowGraph &cfg, ir::ControlFlowGraph::iterator block, unsigned int maxSize) |
typedef std::unordered_map<std::string, ir::ControlFlowGraph::iterator> transforms::BlockLabelMap |
typedef std::unordered_set< ir::ControlFlowGraph::iterator > transforms::BlockSet |
typedef std::unordered_map<ir::BasicBlock::Id, KernelAndId> transforms::IdToSubkernelMap |
typedef std::list<Pass*> transforms::PassList |
typedef std::unordered_set<std::string> transforms::StringSet |
void transforms::sinkBarrier | ( | ir::PTXKernel & | kernel, |
BlockSet & | barriers, | ||
ir::ControlFlowGraph::iterator | block, | ||
ir::ControlFlowGraph::iterator | dom, | ||
ir::ControlFlowGraph::iterator | pdom, | ||
analysis::DataflowGraph * | dfg | ||
) |
void transforms::splitBlock | ( | ir::ControlFlowGraph & | cfg, |
ir::ControlFlowGraph::iterator | block, | ||
unsigned int | maxSize | ||
) |