Polly 20.0.0git
|
#include "polly/CodeGen/IslNodeBuilder.h"
#include "polly/CodeGen/BlockGenerators.h"
#include "polly/CodeGen/CodeGeneration.h"
#include "polly/CodeGen/IslAst.h"
#include "polly/CodeGen/IslExprBuilder.h"
#include "polly/CodeGen/LoopGeneratorsGOMP.h"
#include "polly/CodeGen/LoopGeneratorsKMP.h"
#include "polly/CodeGen/RuntimeDebugBuilder.h"
#include "polly/Options.h"
#include "polly/ScopInfo.h"
#include "polly/Support/ISLTools.h"
#include "polly/Support/SCEVValidator.h"
#include "polly/Support/ScopHelper.h"
#include "polly/Support/VirtualInstruction.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/PostOrderIterator.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/Analysis/AssumptionCache.h"
#include "llvm/Analysis/LoopInfo.h"
#include "llvm/Analysis/RegionInfo.h"
#include "llvm/Analysis/ScalarEvolution.h"
#include "llvm/Analysis/ScalarEvolutionExpressions.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Constant.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/TargetParser/Triple.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "isl/aff.h"
#include "isl/aff_type.h"
#include "isl/ast.h"
#include "isl/ast_build.h"
#include "isl/isl-noexceptions.h"
#include "isl/map.h"
#include "isl/set.h"
#include "isl/union_map.h"
#include "isl/union_set.h"
#include "isl/val.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstring>
#include <string>
#include <utility>
#include <vector>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "polly-codegen" |
Enumerations | |
enum class | OpenMPBackend { GNU , LLVM } |
OpenMP backend options. More... | |
Functions | |
STATISTIC (VersionedScops, "Number of SCoPs that required versioning.") | |
STATISTIC (SequentialLoops, "Number of generated sequential for-loops") | |
STATISTIC (ParallelLoops, "Number of generated parallel for-loops") | |
STATISTIC (IfConditions, "Number of generated if-conditions") | |
static cl::opt< bool > | PollyGenerateRTCPrint ("polly-codegen-emit-rtc-print", cl::desc("Emit code that prints the runtime check result dynamically."), cl::Hidden, cl::cat(PollyCategory)) |
static cl::opt< bool > | PollyGenerateExpressions ("polly-codegen-generate-expressions", cl::desc("Generate AST expressions for unmodified and modified accesses"), cl::Hidden, cl::cat(PollyCategory)) |
static cl::opt< int > | PollyTargetFirstLevelCacheLineSize ("polly-target-first-level-cache-line-size", cl::desc("The size of the first level cache line size specified in bytes."), cl::Hidden, cl::init(64), cl::cat(PollyCategory)) |
static cl::opt< OpenMPBackend > | PollyOmpBackend ("polly-omp-backend", cl::desc("Choose the OpenMP library to use:"), cl::values(clEnumValN(OpenMPBackend::GNU, "GNU", "GNU OpenMP"), clEnumValN(OpenMPBackend::LLVM, "LLVM", "LLVM OpenMP")), cl::Hidden, cl::init(OpenMPBackend::GNU), cl::cat(PollyCategory)) |
static void | findReferencesByUse (Value *SrcVal, ScopStmt *UserStmt, Loop *UserScope, const ValueMapT &GlobalMap, SetVector< Value * > &Values, SetVector< const SCEV * > &SCEVs) |
static void | findReferencesInInst (Instruction *Inst, ScopStmt *UserStmt, Loop *UserScope, const ValueMapT &GlobalMap, SetVector< Value * > &Values, SetVector< const SCEV * > &SCEVs) |
static void | findReferencesInStmt (ScopStmt *Stmt, SetVector< Value * > &Values, ValueMapT &GlobalMap, SetVector< const SCEV * > &SCEVs) |
static void | addReferencesFromStmtSet (isl::set Set, SubtreeReferences *UserPtr) |
Extract the out-of-scop values and SCEVs referenced from a set describing a ScopStmt. | |
static void | addReferencesFromStmtUnionSet (isl::union_set USet, SubtreeReferences &References) |
Extract the out-of-scop values and SCEVs referenced from a union set referencing multiple ScopStmts. | |
static bool | IsLoopVectorizerDisabled (isl::ast_node_for Node) |
Restore the initial ordering of dimensions of the band node. | |
#define DEBUG_TYPE "polly-codegen" |
Definition at line 78 of file IslNodeBuilder.cpp.
|
strong |
|
static |
Extract the out-of-scop values and SCEVs referenced from a set describing a ScopStmt.
This includes the SCEVUnknowns referenced by the SCEVs used in the statement and the base pointers of the memory accesses. For scalar statements we force the generation of alloca memory locations and list these locations in the set of out-of-scop values as well.
Set | A set which references the ScopStmt we are interested in. |
UserPtr | A void pointer that can be casted to a SubtreeReferences structure. |
Definition at line 290 of file IslNodeBuilder.cpp.
References polly::addReferencesFromStmt(), isl::set::get_tuple_id(), and isl::id::get_user().
Referenced by addReferencesFromStmtUnionSet().
|
static |
Extract the out-of-scop values and SCEVs referenced from a union set referencing multiple ScopStmts.
This includes the SCEVUnknowns referenced by the SCEVs used in the statement and the base pointers of the memory accesses. For scalar statements we force the generation of alloca memory locations and list these locations in the set of out-of-scop values as well.
USet | A union set referencing the ScopStmts we are interested in. |
References | The SubtreeReferences data structure through which results are returned and further information is provided. |
Definition at line 309 of file IslNodeBuilder.cpp.
References addReferencesFromStmtSet(), and isl::union_set::get_set_list().
Referenced by polly::IslNodeBuilder::getReferencesInSubtree().
|
static |
Definition at line 194 of file IslNodeBuilder.cpp.
References polly::VirtualUse::Block, polly::VirtualUse::Constant, polly::VirtualUse::create(), polly::VirtualUse::getKind(), polly::VirtualUse::getScevExpr(), polly::VirtualUse::Hoisted, polly::VirtualUse::Inter, polly::VirtualUse::Intra, polly::VirtualUse::ReadOnly, polly::VirtualUse::Synthesizable, and polly::Value.
Referenced by findReferencesInInst().
|
static |
Definition at line 223 of file IslNodeBuilder.cpp.
References findReferencesByUse().
Referenced by findReferencesInStmt().
|
static |
Definition at line 231 of file IslNodeBuilder.cpp.
References findReferencesInInst(), polly::ScopStmt::getBasicBlock(), polly::ScopStmt::getInstructions(), polly::Scop::getLI(), polly::ScopStmt::getParent(), polly::ScopStmt::getRegion(), and polly::ScopStmt::isRegionStmt().
Referenced by polly::addReferencesFromStmt().
|
static |
Restore the initial ordering of dimensions of the band node.
In case the band node represents all the dimensions of the iteration domain, recreate the band node to restore the initial ordering of the dimensions.
Node | The band node to be modified. |
Definition at line 424 of file IslNodeBuilder.cpp.
References isl::ast_node::as(), assert, isl::ast_node_for::body(), isl::ast_node::get(), isl::ast_node_mark::id(), isl_ast_node_for, isl_ast_node_get_type(), and isl_ast_node_mark.
Referenced by polly::ScopAnnotator::annotateLoopLatch(), and polly::IslNodeBuilder::createForSequential().
|
static |
Referenced by polly::IslNodeBuilder::createNewAccesses().
|
static |
Referenced by polly::IslNodeBuilder::createRTC().
|
static |
Referenced by polly::IslNodeBuilder::createForParallel().
|
static |
Referenced by polly::IslNodeBuilder::allocateNewArrays().
STATISTIC | ( | IfConditions | , |
"Number of generated if-conditions" | |||
) |
STATISTIC | ( | ParallelLoops | , |
"Number of generated parallel for-loops" | |||
) |
STATISTIC | ( | SequentialLoops | , |
"Number of generated sequential for-loops" | |||
) |
STATISTIC | ( | VersionedScops | , |
"Number of SCoPs that required versioning." | |||
) |