LLVM 20.0.0git
|
This is the LLVM vectorization plan. More...
#include "VPlan.h"
#include "LoopVectorizationPlanner.h"
#include "VPlanCFG.h"
#include "VPlanPatternMatch.h"
#include "VPlanTransforms.h"
#include "VPlanUtils.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Analysis/DomTreeUpdater.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/CFG.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/GraphWriter.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "llvm/Transforms/Utils/LoopVersioning.h"
#include <cassert>
#include <string>
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 "loop-vectorize" |
Functions | |
template<typename T > | |
static T * | getPlanEntry (T *Start) |
template<typename T > | |
static T * | getEnclosingLoopRegionForRegion (T *P) |
Return the enclosing loop region for region P . | |
static bool | hasConditionalTerminator (const VPBasicBlock *VPBB) |
static std::pair< VPBlockBase *, VPBlockBase * > | cloneFrom (VPBlockBase *Entry) |
static void | remapOperands (VPBlockBase *Entry, VPBlockBase *NewEntry, DenseMap< VPValue *, VPValue * > &Old2NewVPValues) |
Variables | |
cl::opt< unsigned > | ForceTargetInstructionCost |
static cl::opt< bool > | PrintVPlansInDotFormat ("vplan-print-in-dot-format", cl::Hidden, cl::desc("Use dot format instead of plain text when dumping VPlans")) |
This is the LLVM vectorization plan.
It represents a candidate for vectorization, allowing to plan and optimize how to vectorize a given loop before generating LLVM-IR. The vectorizer uses vectorization plans to estimate the costs of potential candidates and if profitable to execute the desired plan, generating vector LLVM-IR code.
Definition in file VPlan.cpp.
|
static |
Definition at line 652 of file VPlan.cpp.
References assert(), llvm::VPBlockBase::getPredecessors(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::VPBlockBase::setPredecessors(), llvm::VPBlockBase::setSuccessors(), llvm::VPBlockBase::successors(), llvm::vp_depth_first_shallow(), and llvm::zip().
Referenced by llvm::VPRegionBlock::clone(), and llvm::VPlan::duplicate().
Return the enclosing loop region for region P
.
The templated version is used to support both const and non-const block arguments.
Definition at line 557 of file VPlan.cpp.
Referenced by llvm::VPBasicBlock::getEnclosingLoopRegion().
Definition at line 133 of file VPlan.cpp.
References llvm::SetVector< T, Vector, Set, N >::insert(), llvm_unreachable, and llvm::SetVector< T, Vector, Set, N >::size().
Referenced by llvm::VPBlockBase::getPlan().
|
static |
Definition at line 574 of file VPlan.cpp.
References assert(), llvm::VPBasicBlock::back(), llvm::VPBasicBlock::empty(), llvm::VPBlockBase::getNumSuccessors(), llvm::VPBlockBase::getParent(), IsCondBranch(), llvm::VPBasicBlock::isExiting(), llvm::VPRegionBlock::isReplicator(), llvm::VPlanPatternMatch::m_BranchOnCond(), llvm::VPlanPatternMatch::m_BranchOnCount(), llvm::VPlanPatternMatch::m_VPValue(), and llvm::PatternMatch::match().
Referenced by llvm::VPBasicBlock::getTerminator().
|
static |
Definition at line 1149 of file VPlan.cpp.
References assert(), I, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), llvm::BasicBlock::size(), and llvm::zip().
Referenced by llvm::VPlan::duplicate().
|
static |
Referenced by llvm::LoopVectorizationPlanner::printPlans().