LLVM: lib/Target/SPIRV/SPIRVStructurizer.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static void partialOrderVisit (BasicBlock &Start, std::function< bool(BasicBlock *)> Op)
static const ConvergenceRegion * getRegionForHeader (const ConvergenceRegion *Node, BasicBlock *BB)
static BasicBlock * getExitFor (const ConvergenceRegion *CR)
static BasicBlock * getDesignatedMergeBlock (Instruction *I)
static BasicBlock * getDesignatedContinueBlock (Instruction *I)
static bool isDefinedAsSelectionMergeBy (BasicBlock &Header, BasicBlock &Merge)
static bool hasLoopMergeInstruction (BasicBlock &BB)
static bool isMergeInstruction (Instruction *I)
static SmallPtrSet< BasicBlock *, 2 > getHeaderBlocks (Function &F)
static SmallPtrSet< BasicBlock *, 2 > getMergeBlocks (Function &F)
static std::vector< Instruction * > getMergeInstructions (BasicBlock &BB)
static SmallPtrSet< BasicBlock *, 2 > getContinueBlocks (Function &F)
static void visit (BasicBlock &Start, std::function< bool(BasicBlock *)> op)
static void replaceIfBranchTargets (BasicBlock *BB, BasicBlock *OldTarget, BasicBlock *NewTarget)
static void replaceBranchTargets (BasicBlock *BB, BasicBlock *OldTarget, BasicBlock *NewTarget)
INITIALIZE_PASS_BEGIN (SPIRVStructurizer, "spirv-structurizer", "structurize SPIRV", false, false) INITIALIZE_PASS_END(SPIRVStructurizer
Variables
spirv structurizer
spirv structurize SPIRV
spirv structurize false

BlockSet

Edge

getContinueBlocks()

getDesignatedContinueBlock()

getDesignatedMergeBlock()

getExitFor()

getHeaderBlocks()

getMergeBlocks()

getMergeInstructions()

getRegionForHeader()

hasLoopMergeInstruction()

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( SPIRVStructurizer ,
"spirv-structurizer" ,
"structurize SPIRV" ,
false ,
false )

isDefinedAsSelectionMergeBy()

isMergeInstruction()

partialOrderVisit()

replaceBranchTargets()

replaceIfBranchTargets()

visit()

false

structurizer