Polly 20.0.0git
|
#include "llvm/ADT/SetVector.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/ValueHandle.h"
#include "isl/isl-noexceptions.h"
#include <optional>
Go to the source code of this file.
Classes | |
struct | polly::Assumption |
Helper struct to remember assumptions. More... | |
class | polly::MemAccInst |
Utility proxy to wrap the common members of LoadInst and StoreInst. More... | |
struct | llvm::simplify_type< polly::MemAccInst > |
Specialize simplify_type for MemAccInst to enable dyn_cast and cast from a MemAccInst object. More... | |
struct | polly::BandAttr |
Represent the attributes of a loop. More... | |
Namespaces | |
namespace | llvm |
This file contains the declaration of the PolyhedralInfo class, which will provide an interface to expose polyhedral analysis information of Polly. | |
namespace | polly |
Typedefs | |
using | polly::LoopToScevMapT = llvm::DenseMap< const llvm::Loop *, const llvm::SCEV * > |
Same as llvm/Analysis/ScalarEvolutionExpressions.h. | |
using | polly::RecordedAssumptionsTy = llvm::SmallVector< Assumption, 8 > |
using | polly::ValueMapT = llvm::DenseMap< llvm::AssertingVH< llvm::Value >, llvm::AssertingVH< llvm::Value > > |
Type to remap values. | |
using | polly::InvariantLoadsSetTy = llvm::SetVector< llvm::AssertingVH< llvm::LoadInst > > |
Type for a set of invariant loads. | |
using | polly::ParameterSetTy = llvm::SetVector< const llvm::SCEV * > |
Set type for parameters. | |
using | polly::BoxedLoopsSetTy = llvm::SetVector< const llvm::Loop * > |
Set of loops (used to remember loops in non-affine subregions). | |
Enumerations | |
enum | polly::AssumptionKind { polly::ALIASING , polly::INBOUNDS , polly::WRAPPING , polly::UNSIGNED , polly::PROFITABLE , polly::ERRORBLOCK , polly::COMPLEXITY , polly::INFINITELOOP , polly::INVARIANTLOAD , polly::DELINEARIZATION } |
Enumeration of assumptions Polly can take. More... | |
enum | polly::AssumptionSign { polly::AS_ASSUMPTION , polly::AS_RESTRICTION } |
Enum to distinguish between assumptions and restrictions. More... | |
Functions | |
void | polly::recordAssumption (RecordedAssumptionsTy *RecordedAssumptions, AssumptionKind Kind, isl::set Set, llvm::DebugLoc Loc, AssumptionSign Sign, llvm::BasicBlock *BB=nullptr, bool RTC=true) |
Record an assumption for later addition to the assumed context. | |
void | polly::simplifyRegion (llvm::Region *R, llvm::DominatorTree *DT, llvm::LoopInfo *LI, llvm::RegionInfo *RI) |
Simplify the region to have a single unconditional entry edge and a single exit edge. | |
void | polly::splitEntryBlockForAlloca (llvm::BasicBlock *EntryBlock, llvm::Pass *P) |
Split the entry block of a function to store the newly inserted allocations outside of all Scops. | |
void | polly::splitEntryBlockForAlloca (llvm::BasicBlock *EntryBlock, llvm::DominatorTree *DT, llvm::LoopInfo *LI, llvm::RegionInfo *RI) |
Split the entry block of a function to store the newly inserted allocations outside of all Scops. | |
llvm::Value * | polly::expandCodeFor (Scop &S, llvm::ScalarEvolution &SE, llvm::Function *GenFn, llvm::ScalarEvolution &GenSE, const llvm::DataLayout &DL, const char *Name, const llvm::SCEV *E, llvm::Type *Ty, llvm::Instruction *IP, ValueMapT *VMap, LoopToScevMapT *LoopMap, llvm::BasicBlock *RTCBB) |
Wrapper for SCEVExpander extended to all Polly features. | |
llvm::Value * | polly::getConditionFromTerminator (llvm::Instruction *TI) |
Return the condition for the terminator TI . | |
llvm::Loop * | polly::getLoopSurroundingScop (Scop &S, llvm::LoopInfo &LI) |
Get the smallest loop that contains S but is not in S . | |
unsigned | polly::getNumBlocksInLoop (llvm::Loop *L) |
Get the number of blocks in L . | |
unsigned | polly::getNumBlocksInRegionNode (llvm::RegionNode *RN) |
Get the number of blocks in RN . | |
llvm::Loop * | polly::getRegionNodeLoop (llvm::RegionNode *RN, llvm::LoopInfo &LI) |
Return the smallest loop surrounding RN . | |
bool | polly::isHoistableLoad (llvm::LoadInst *LInst, llvm::Region &R, llvm::LoopInfo &LI, llvm::ScalarEvolution &SE, const llvm::DominatorTree &DT, const InvariantLoadsSetTy &KnownInvariantLoads) |
Check if LInst can be hoisted in R . | |
bool | polly::isIgnoredIntrinsic (const llvm::Value *V) |
Return true iff V is an intrinsic that we ignore during code generation. | |
bool | polly::canSynthesize (const llvm::Value *V, const Scop &S, llvm::ScalarEvolution *SE, llvm::Loop *Scope) |
Check whether a value an be synthesized by the code generator. | |
llvm::BasicBlock * | polly::getUseBlock (const llvm::Use &U) |
Return the block in which a value is used. | |
llvm::Loop * | polly::getFirstNonBoxedLoopFor (llvm::Loop *L, llvm::LoopInfo &LI, const BoxedLoopsSetTy &BoxedLoops) |
llvm::Loop * | polly::getFirstNonBoxedLoopFor (llvm::BasicBlock *BB, llvm::LoopInfo &LI, const BoxedLoopsSetTy &BoxedLoops) |
bool | polly::isDebugCall (llvm::Instruction *Inst) |
Is the given instruction a call to a debug function? | |
bool | polly::hasDebugCall (ScopStmt *Stmt) |
Does the statement contain a call to a debug function? | |
std::optional< llvm::Metadata * > | polly::findMetadataOperand (llvm::MDNode *LoopMD, llvm::StringRef Name) |
Find a property value in a LoopID. | |
bool | polly::getBooleanLoopAttribute (llvm::MDNode *LoopID, llvm::StringRef Name) |
Find a boolean property value in a LoopID. | |
std::optional< int > | polly::getOptionalIntLoopAttribute (llvm::MDNode *LoopID, llvm::StringRef Name) |
Find an integers property value in a LoopID. | |
bool | polly::hasDisableAllTransformsHint (llvm::Loop *L) |
Does the loop's LoopID contain a 'llvm.loop.disable_heuristics' property? | |
bool | polly::hasDisableAllTransformsHint (llvm::MDNode *LoopID) |
isl::id | polly::getIslLoopAttr (isl::ctx Ctx, BandAttr *Attr) |
Get an isl::id representing a loop. | |
isl::id | polly::createIslLoopAttr (isl::ctx Ctx, llvm::Loop *L) |
Create an isl::id that identifies an original loop. | |
bool | polly::isLoopAttr (const isl::id &Id) |
Is Id representing a loop? | |
BandAttr * | polly::getLoopAttr (const isl::id &Id) |
Return the BandAttr of a loop's isl::id. | |