LLVM: lib/Target/AMDGPU/AMDGPUUnifyDivergentExitNodes.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "amdgpu-unify-divergent-exit-nodes"
Functions
INITIALIZE_PASS_BEGIN (AMDGPUUnifyDivergentExitNodes, DEBUG_TYPE, "Unify divergent function exit nodes", false, false) INITIALIZE_PASS_END(AMDGPUUnifyDivergentExitNodes
static bool isUniformlyReached (const UniformityInfo &UA, BasicBlock &BB)
static BasicBlock * createDummyReturnBlock (Function &F, SmallVector< BasicBlock *, 4 > &ReturningBlocks)
static void handleNBranch (Function &F, BasicBlock *BB, Instruction *BI, BasicBlock *DummyReturnBB, std::vector< DominatorTree::UpdateType > &Updates)
Handle conditional branch instructions (-> 2 targets) and callbr instructions with N targets.

DEBUG_TYPE

#define DEBUG_TYPE "amdgpu-unify-divergent-exit-nodes"

createDummyReturnBlock()

handleNBranch()

Handle conditional branch instructions (-> 2 targets) and callbr instructions with N targets.

Definition at line 198 of file AMDGPUUnifyDivergentExitNodes.cpp.

References llvm::BranchInst::Create(), llvm::DominatorTreeBase< BasicBlock, false >::Delete, llvm::Instruction::eraseFromParent(), F, llvm::BasicBlock::getTerminator(), llvm::ConstantInt::getTrue(), llvm::DominatorTreeBase< BasicBlock, false >::Insert, llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::BasicBlock::splitBasicBlock(), llvm::Successor, and llvm::successors().

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( AMDGPUUnifyDivergentExitNodes ,
DEBUG_TYPE ,
"Unify divergent function exit nodes" ,
false ,
false )

isUniformlyReached()

DEBUG_TYPE

false

nodes