diff options
author | Tobias Grosser <tobias@grosser.es> | 2017-07-24 16:22:27 +0000 |
---|---|---|
committer | Tobias Grosser <tobias@grosser.es> | 2017-07-24 16:22:27 +0000 |
commit | 206e9e3b3b9c6f6f960ea89c81fe9bf54e6c5b46 (patch) | |
tree | 7d2aefb6ed13410c2def44074534b14d990878d4 /polly/lib | |
parent | fc638c11bbb6e1202bfd7862413f6b8d2067100e (diff) | |
download | bcm5719-llvm-206e9e3b3b9c6f6f960ea89c81fe9bf54e6c5b46.tar.gz bcm5719-llvm-206e9e3b3b9c6f6f960ea89c81fe9bf54e6c5b46.zip |
Move ScopArrayInfo::getFromAccessFunction and getFromId to isl++
llvm-svn: 308892
Diffstat (limited to 'polly/lib')
-rw-r--r-- | polly/lib/Analysis/ScopInfo.cpp | 23 | ||||
-rw-r--r-- | polly/lib/CodeGen/IslExprBuilder.cpp | 2 | ||||
-rw-r--r-- | polly/lib/CodeGen/PPCGCodeGeneration.cpp | 15 | ||||
-rw-r--r-- | polly/lib/Exchange/JSONExporter.cpp | 2 |
4 files changed, 27 insertions, 15 deletions
diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index c1a30b9bad4..cd1a0b46112 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -437,16 +437,15 @@ void ScopArrayInfo::print(raw_ostream &OS, bool SizeAsPwAff) const { } const ScopArrayInfo * -ScopArrayInfo::getFromAccessFunction(__isl_keep isl_pw_multi_aff *PMA) { - isl_id *Id = isl_pw_multi_aff_get_tuple_id(PMA, isl_dim_out); - assert(Id && "Output dimension didn't have an ID"); +ScopArrayInfo::getFromAccessFunction(isl::pw_multi_aff PMA) { + isl::id Id = PMA.get_tuple_id(isl::dim::out); + assert(!Id.is_null() && "Output dimension didn't have an ID"); return getFromId(Id); } -const ScopArrayInfo *ScopArrayInfo::getFromId(__isl_take isl_id *Id) { - void *User = isl_id_get_user(Id); +const ScopArrayInfo *ScopArrayInfo::getFromId(isl::id Id) { + void *User = Id.get_user(); const ScopArrayInfo *SAI = static_cast<ScopArrayInfo *>(User); - isl_id_free(Id); return SAI; } @@ -1017,7 +1016,7 @@ MemoryAccess::MemoryAccess(ScopStmt *Stmt, AccessType AccType, Statement(Stmt), InvalidDomain(nullptr), AccessInstruction(nullptr), IsAffine(true), AccessRelation(nullptr), NewAccessRelation(isl::manage(AccRel)), FAD(nullptr) { - auto *ArrayInfoId = NewAccessRelation.get_tuple_id(isl::dim::out).release(); + isl::id ArrayInfoId = NewAccessRelation.get_tuple_id(isl::dim::out); auto *SAI = ScopArrayInfo::getFromId(ArrayInfoId); Sizes.push_back(nullptr); for (unsigned i = 1; i < SAI->getNumberOfDimensions(); i++) @@ -4719,6 +4718,16 @@ Scop::getAccessesOfType(std::function<bool(MemoryAccess &)> Predicate) { Accesses = isl_union_map_add_map(Accesses, AccessDomain); } } + + return isl_union_map_coalesce(Accesses); + + for (auto X : this->getInvariantAccesses()) + for (auto A : X.InvariantAccesses) { + if (!Predicate(*A)) + continue; + Accesses = + isl_union_map_add_map(Accesses, A->getAccessRelation().release()); + } return isl_union_map_coalesce(Accesses); } diff --git a/polly/lib/CodeGen/IslExprBuilder.cpp b/polly/lib/CodeGen/IslExprBuilder.cpp index 65e680fab52..01558813600 100644 --- a/polly/lib/CodeGen/IslExprBuilder.cpp +++ b/polly/lib/CodeGen/IslExprBuilder.cpp @@ -233,7 +233,7 @@ Value *IslExprBuilder::createAccessAddress(isl_ast_expr *Expr) { SAI = (*IDToSAI)[BaseId]; if (!SAI) - SAI = ScopArrayInfo::getFromId(BaseId); + SAI = ScopArrayInfo::getFromId(isl::manage(BaseId)); else isl_id_free(BaseId); diff --git a/polly/lib/CodeGen/PPCGCodeGeneration.cpp b/polly/lib/CodeGen/PPCGCodeGeneration.cpp index 897bb417a9b..c35ff50986a 100644 --- a/polly/lib/CodeGen/PPCGCodeGeneration.cpp +++ b/polly/lib/CodeGen/PPCGCodeGeneration.cpp @@ -1512,7 +1512,7 @@ GPUNodeBuilder::createLaunchParameters(ppcg_kernel *Kernel, Function *F, continue; isl_id *Id = isl_space_get_tuple_id(Prog->array[i].space, isl_dim_set); - const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(Id); + const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(isl::manage(Id)); ArgSizes[Index] = SAI->getElemSizeInBytes(); @@ -1785,7 +1785,7 @@ GPUNodeBuilder::createKernelFunctionDecl(ppcg_kernel *Kernel, if (gpu_array_is_read_only_scalar(&Prog->array[i])) { isl_id *Id = isl_space_get_tuple_id(Prog->array[i].space, isl_dim_set); - const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(Id); + const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(isl::manage(Id)); Args.push_back(SAI->getElementType()); MemoryType.push_back( ConstantAsMetadata::get(ConstantInt::get(Builder.getInt32Ty(), 0))); @@ -1865,7 +1865,8 @@ GPUNodeBuilder::createKernelFunctionDecl(ppcg_kernel *Kernel, Arg->setName(Kernel->array[i].array->name); isl_id *Id = isl_space_get_tuple_id(Prog->array[i].space, isl_dim_set); - const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(isl_id_copy(Id)); + const ScopArrayInfo *SAI = + ScopArrayInfo::getFromId(isl::manage(isl_id_copy(Id))); Type *EleTy = SAI->getElementType(); Value *Val = &*Arg; SmallVector<const SCEV *, 4> Sizes; @@ -1996,7 +1997,8 @@ void GPUNodeBuilder::prepareKernelArguments(ppcg_kernel *Kernel, Function *FN) { continue; isl_id *Id = isl_space_get_tuple_id(Prog->array[i].space, isl_dim_set); - const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(isl_id_copy(Id)); + const ScopArrayInfo *SAI = + ScopArrayInfo::getFromId(isl::manage(isl_id_copy(Id))); isl_id_free(Id); if (SAI->getNumberOfDimensions() > 0) { @@ -2029,7 +2031,8 @@ void GPUNodeBuilder::finalizeKernelArguments(ppcg_kernel *Kernel) { continue; isl_id *Id = isl_space_get_tuple_id(Prog->array[i].space, isl_dim_set); - const ScopArrayInfo *SAI = ScopArrayInfo::getFromId(isl_id_copy(Id)); + const ScopArrayInfo *SAI = + ScopArrayInfo::getFromId(isl::manage(isl_id_copy(Id))); isl_id_free(Id); if (SAI->getNumberOfDimensions() > 0) { @@ -2068,7 +2071,7 @@ void GPUNodeBuilder::createKernelVariables(ppcg_kernel *Kernel, Function *FN) { for (int i = 0; i < Kernel->n_var; ++i) { struct ppcg_kernel_var &Var = Kernel->var[i]; isl_id *Id = isl_space_get_tuple_id(Var.array->space, isl_dim_set); - Type *EleTy = ScopArrayInfo::getFromId(Id)->getElementType(); + Type *EleTy = ScopArrayInfo::getFromId(isl::manage(Id))->getElementType(); Type *ArrayTy = EleTy; SmallVector<const SCEV *, 4> Sizes; diff --git a/polly/lib/Exchange/JSONExporter.cpp b/polly/lib/Exchange/JSONExporter.cpp index 5d85d27830c..52299978709 100644 --- a/polly/lib/Exchange/JSONExporter.cpp +++ b/polly/lib/Exchange/JSONExporter.cpp @@ -480,7 +480,7 @@ bool JSONImporter::importAccesses(Scop &S, Json::Value &JScop, NewOutId = isl_map_get_tuple_id(NewAccessMap, isl_dim_out); auto *SAI = S.getArrayInfoByName(isl_id_get_name(NewOutId)); isl_id *OutId = isl_map_get_tuple_id(CurrentAccessMap, isl_dim_out); - auto *OutSAI = ScopArrayInfo::getFromId(OutId); + auto *OutSAI = ScopArrayInfo::getFromId(isl::manage(OutId)); if (!SAI || SAI->getElementType() != OutSAI->getElementType()) { errs() << "JScop file contains access function with undeclared " "ScopArrayInfo\n"; |