|
LLVM
8.0.1
|
#include "AMDGPU.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallVector.h"#include "llvm/ADT/StringRef.h"#include "llvm/Analysis/LegacyDivergenceAnalysis.h"#include "llvm/Analysis/PostDominators.h"#include "llvm/Analysis/TargetTransformInfo.h"#include "llvm/Transforms/Utils/Local.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/CFG.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Function.h"#include "llvm/IR/InstrTypes.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/Intrinsics.h"#include "llvm/IR/Type.h"#include "llvm/Pass.h"#include "llvm/Support/Casting.h"#include "llvm/Transforms/Scalar.h"#include "llvm/Transforms/Utils.h"
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 LegacyDivergenceAnalysis &DA, BasicBlock &BB) |
| static BasicBlock * | unifyReturnBlockSet (Function &F, ArrayRef< BasicBlock *> ReturningBlocks, const TargetTransformInfo &TTI, StringRef Name) |
Variables | |
| DEBUG_TYPE | |
| Unify divergent function exit | nodes |
| Unify divergent function exit | false |
| #define DEBUG_TYPE "amdgpu-unify-divergent-exit-nodes" |
Definition at line 47 of file AMDGPUUnifyDivergentExitNodes.cpp.
| INITIALIZE_PASS_BEGIN | ( | AMDGPUUnifyDivergentExitNodes | , |
| DEBUG_TYPE | , | ||
| "Unify divergent function exit nodes" | , | ||
| false | , | ||
| false | |||
| ) |
|
static |
BB is reachable through only uniform branches. XXX - Is there a more efficient way to find this? Definition at line 98 of file AMDGPUUnifyDivergentExitNodes.cpp.
References llvm::SmallVectorBase::empty(), llvm::BasicBlock::getTerminator(), llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::LegacyDivergenceAnalysis::isUniform(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::predecessors(), and llvm::SmallVectorTemplateBase< T >::push_back().
Referenced by unifyReturnBlockSet().
|
static |
Definition at line 120 of file AMDGPUUnifyDivergentExitNodes.cpp.
References llvm::Intrinsic::amdgcn_unreachable, llvm::BasicBlock::Create(), llvm::CallInst::Create(), llvm::PHINode::Create(), llvm::ReturnInst::Create(), llvm::BranchInst::Create(), llvm::SmallVectorBase::empty(), llvm::Instruction::eraseFromParent(), llvm::BasicBlock::eraseFromParent(), F(), llvm::SmallVectorTemplateCommon< T >::front(), llvm::UndefValue::get(), llvm::Function::getContext(), llvm::Intrinsic::getDeclaration(), llvm::BasicBlock::getInstList(), llvm::GlobalValue::getParent(), llvm::Function::getReturnType(), llvm::BasicBlock::getTerminator(), llvm::ConstantInt::getTrue(), isUniformlyReached(), llvm::Type::isVoidTy(), Name, llvm::SmallVectorTemplateBase< T >::push_back(), llvm::iplist_impl< IntrusiveListT, TraitsT >::push_back(), llvm::BasicBlock::removeFromParent(), runOnFunction(), llvm::simplifyCFG(), llvm::SmallVectorBase::size(), and llvm::ArrayRef< T >::size().
| DEBUG_TYPE |
Definition at line 74 of file AMDGPUUnifyDivergentExitNodes.cpp.
| Unify divergent function exit false |
Definition at line 74 of file AMDGPUUnifyDivergentExitNodes.cpp.
| Unify divergent function exit nodes |
Definition at line 74 of file AMDGPUUnifyDivergentExitNodes.cpp.
Referenced by llvm::SpillPlacement::addConstraints(), llvm::SpillPlacement::addLinks(), llvm::SpillPlacement::addPrefSpill(), llvm::SpillPlacement::finish(), llvm::SpillPlacement::Node::getDissentingNeighbors(), llvm::SpillPlacement::iterate(), and llvm::SpillPlacement::scanActiveBundles().
1.8.13