25#include "llvm/ADT/SmallPtrSet.h"
26#include "llvm/IR/PassManager.h"
30using llvm::SmallPtrSet;
60 std::shared_ptr<isl_ctx>
Ctx;
125 void print(raw_ostream &O);
176 std::unique_ptr<IslAstInfo>
Ast;
IslAstInfo::IslAstUserPayload IslAstUserPayload
The accumulated dependence information for a SCoP.
void printScop(raw_ostream &OS, Scop &S) const override
Print a source code representation of the program.
void getAnalysisUsage(AnalysisUsage &AU) const override
Register all analyses and transformation required.
const IslAstInfo & getAI() const
void releaseMemory() override
Release the internal memory.
bool runOnScop(Scop &S) override
Build the AST for the given SCoP S.
std::unique_ptr< IslAstInfo > Ast
static bool isOutermostParallel(const isl::ast_node &Node)
Is this loop an outermost parallel loop?
static MemoryAccessSet * getBrokenReductions(const isl::ast_node &Node)
Get the nodes broken reductions or a nullptr if not available.
static bool isParallel(const isl::ast_node &Node)
Is this loop a parallel loop?
static isl::pw_aff getMinimalDependenceDistance(const isl::ast_node &Node)
Get minimal dependence distance or nullptr if not available.
static bool isInnermostParallel(const isl::ast_node &Node)
Is this loop an innermost parallel loop?
isl::ast_node getAst()
Return a copy of the AST root node.
SmallPtrSet< MemoryAccess *, 4 > MemoryAccessSet
static bool isExecutedInParallel(const isl::ast_node &Node)
Will the loop be run as thread parallel?
isl::ast_expr getRunCondition()
Get the run condition.
static bool isInnermost(const isl::ast_node &Node)
Is this loop an innermost loop?
static IslAstUserPayload * getNodePayload(const isl::ast_node &Node)
static isl::union_map getSchedule(const isl::ast_node &Node)
Get the nodes schedule or a nullptr if not available.
void print(raw_ostream &O)
IslAstInfo(Scop &S, const Dependences &D)
IslAst & getIslAst()
Return the isl AST computed by this IslAstInfo.
static isl::ast_build getBuild(const isl::ast_node &Node)
Get the nodes build context or a nullptr if not available.
static bool isReductionParallel(const isl::ast_node &Node)
Is this loop a reduction parallel loop?
const std::shared_ptr< isl_ctx > getSharedIslCtx() const
static isl::ast_expr buildRunCondition(Scop &S, const isl::ast_build &Build)
Build run-time condition for scop.
IslAst & operator=(const IslAst &)=delete
isl::ast_expr getRunCondition()
Get the run-time conditions for the Scop.
IslAst(const IslAst &)=delete
std::shared_ptr< isl_ctx > Ctx
static IslAst create(Scop &Scop, const Dependences &D)
IslAst & operator=(IslAst &&)=delete
isl::ast_expr RunCondition
void init(const Dependences &D)
ScopPass - This class adapts the RegionPass interface to allow convenient creation of passes that ope...
This file contains the declaration of the PolyhedralInfo class, which will provide an interface to ex...
void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &)
void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &)
llvm::Pass * createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS)
AnalysisManager< Scop, ScopStandardAnalysisResults & > ScopAnalysisManager
llvm::Pass * createIslAstInfoWrapperPassPass()
IslAstInfo run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &SAR)
Payload information used to annotate an AST node.
bool IsInnermost
Flag to mark innermost loops.
bool IsOutermostParallel
Flag to mark outermost parallel loops.
bool IsParallel
Does the dependence analysis determine that there are no loop-carried dependencies?
MemoryAccessSet BrokenReductions
Set of accesses which break reduction dependences.
isl::pw_aff MinimalDependenceDistance
The minimal dependence distance for non parallel loops.
bool IsReductionParallel
Flag to mark parallel loops which break reductions.
IslAstUserPayload()=default
Construct and initialize the payload.
bool IsInnermostParallel
Flag to mark innermost parallel loops.
isl::ast_build Build
The build environment at the time this node was constructed.
IslAstPrinterPass(raw_ostream &OS)
PreservedAnalyses run(Scop &S, ScopAnalysisManager &SAM, ScopStandardAnalysisResults &, SPMUpdater &U)