[polly] r303615 - [ScopInfo] Translate foldAccessRelation to isl C++ [NFC]
Tobias Grosser via llvm-commits
llvm-commits at lists.llvm.org
Tue May 23 00:22:56 PDT 2017
Author: grosser
Date: Tue May 23 02:22:56 2017
New Revision: 303615
URL: http://llvm.org/viewvc/llvm-project?rev=303615&view=rev
Log:
[ScopInfo] Translate foldAccessRelation to isl C++ [NFC]
Modified:
polly/trunk/lib/Analysis/ScopInfo.cpp
Modified: polly/trunk/lib/Analysis/ScopInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Analysis/ScopInfo.cpp?rev=303615&r1=303614&r2=303615&view=diff
==============================================================================
--- polly/trunk/lib/Analysis/ScopInfo.cpp (original)
+++ polly/trunk/lib/Analysis/ScopInfo.cpp Tue May 23 02:22:56 2017
@@ -846,72 +846,69 @@ void MemoryAccess::foldAccessRelation()
int Size = Subscripts.size();
- isl_map *OldAccessRelation = isl_map_copy(AccessRelation);
+ isl::map NewAccessRelation = give(isl_map_copy(AccessRelation));
for (int i = Size - 2; i >= 0; --i) {
- isl_space *Space;
- isl_map *MapOne, *MapTwo;
- isl_pw_aff *DimSize = getPwAff(Sizes[i + 1]);
-
- isl_space *SpaceSize = isl_pw_aff_get_space(DimSize);
- isl_pw_aff_free(DimSize);
- isl_id *ParamId = isl_space_get_dim_id(SpaceSize, isl_dim_param, 0);
-
- Space = isl_map_get_space(AccessRelation);
- Space = isl_space_map_from_set(isl_space_range(Space));
- Space = isl_space_align_params(Space, SpaceSize);
+ isl::space Space;
+ isl::map MapOne, MapTwo;
+ isl::pw_aff DimSize = give(getPwAff(Sizes[i + 1]));
- int ParamLocation = isl_space_find_dim_by_id(Space, isl_dim_param, ParamId);
- isl_id_free(ParamId);
+ isl::space SpaceSize = DimSize.get_space();
+ isl::id ParamId =
+ give(isl_space_get_dim_id(SpaceSize.get(), isl_dim_param, 0));
- MapOne = isl_map_universe(isl_space_copy(Space));
+ Space = give(isl_map_copy(AccessRelation)).get_space();
+ Space = Space.range().map_from_set();
+ Space = Space.align_params(SpaceSize);
+
+ int ParamLocation = Space.find_dim_by_id(isl::dim::param, ParamId);
+
+ MapOne = isl::map::universe(Space);
for (int j = 0; j < Size; ++j)
- MapOne = isl_map_equate(MapOne, isl_dim_in, j, isl_dim_out, j);
- MapOne = isl_map_lower_bound_si(MapOne, isl_dim_in, i + 1, 0);
+ MapOne = MapOne.equate(isl::dim::in, j, isl::dim::out, j);
+ MapOne = MapOne.lower_bound_si(isl::dim::in, i + 1, 0);
- MapTwo = isl_map_universe(isl_space_copy(Space));
+ MapTwo = isl::map::universe(Space);
for (int j = 0; j < Size; ++j)
if (j < i || j > i + 1)
- MapTwo = isl_map_equate(MapTwo, isl_dim_in, j, isl_dim_out, j);
+ MapTwo = MapTwo.equate(isl::dim::in, j, isl::dim::out, j);
- isl_local_space *LS = isl_local_space_from_space(Space);
- isl_constraint *C;
- C = isl_equality_alloc(isl_local_space_copy(LS));
- C = isl_constraint_set_constant_si(C, -1);
- C = isl_constraint_set_coefficient_si(C, isl_dim_in, i, 1);
- C = isl_constraint_set_coefficient_si(C, isl_dim_out, i, -1);
- MapTwo = isl_map_add_constraint(MapTwo, C);
- C = isl_equality_alloc(LS);
- C = isl_constraint_set_coefficient_si(C, isl_dim_in, i + 1, 1);
- C = isl_constraint_set_coefficient_si(C, isl_dim_out, i + 1, -1);
- C = isl_constraint_set_coefficient_si(C, isl_dim_param, ParamLocation, 1);
- MapTwo = isl_map_add_constraint(MapTwo, C);
- MapTwo = isl_map_upper_bound_si(MapTwo, isl_dim_in, i + 1, -1);
+ isl::local_space LS(Space);
+ isl::constraint C;
+ C = isl::constraint::alloc_equality(LS);
+ C = C.set_constant_si(-1);
+ C = C.set_coefficient_si(isl::dim::in, i, 1);
+ C = C.set_coefficient_si(isl::dim::out, i, -1);
+ MapTwo = MapTwo.add_constraint(C);
+ C = isl::constraint::alloc_equality(LS);
+ C = C.set_coefficient_si(isl::dim::in, i + 1, 1);
+ C = C.set_coefficient_si(isl::dim::out, i + 1, -1);
+ C = C.set_coefficient_si(isl::dim::param, ParamLocation, 1);
+ MapTwo = MapTwo.add_constraint(C);
+ MapTwo = MapTwo.upper_bound_si(isl::dim::in, i + 1, -1);
- MapOne = isl_map_union(MapOne, MapTwo);
- AccessRelation = isl_map_apply_range(AccessRelation, MapOne);
+ MapOne = MapOne.unite(MapTwo);
+ NewAccessRelation = NewAccessRelation.apply_range(MapOne);
}
- isl_id *BaseAddrId = getScopArrayInfo()->getBasePtrId();
- auto Space = Statement->getDomainSpace();
- AccessRelation = isl_map_set_tuple_id(
- AccessRelation, isl_dim_in, isl_space_get_tuple_id(Space, isl_dim_set));
- AccessRelation =
- isl_map_set_tuple_id(AccessRelation, isl_dim_out, BaseAddrId);
- AccessRelation = isl_map_gist_domain(AccessRelation, Statement->getDomain());
+ isl::id BaseAddrId = give(getScopArrayInfo()->getBasePtrId());
+ isl::space Space = give(Statement->getDomainSpace());
+ NewAccessRelation = NewAccessRelation.set_tuple_id(
+ isl::dim::in, Space.get_tuple_id(isl::dim::set));
+ NewAccessRelation = NewAccessRelation.set_tuple_id(isl::dim::out, BaseAddrId);
+ NewAccessRelation =
+ NewAccessRelation.gist_domain(give(Statement->getDomain()));
// Access dimension folding might in certain cases increase the number of
// disjuncts in the memory access, which can possibly complicate the generated
// run-time checks and can lead to costly compilation.
- if (!PollyPreciseFoldAccesses && isl_map_n_basic_map(AccessRelation) >
- isl_map_n_basic_map(OldAccessRelation)) {
- isl_map_free(AccessRelation);
- AccessRelation = OldAccessRelation;
+ if (!PollyPreciseFoldAccesses &&
+ isl_map_n_basic_map(NewAccessRelation.get()) >
+ isl_map_n_basic_map(AccessRelation)) {
} else {
- isl_map_free(OldAccessRelation);
+ isl_map_free(AccessRelation);
+ AccessRelation = NewAccessRelation.release();
}
-
- isl_space_free(Space);
}
/// Check if @p Expr is divisible by @p Size.
More information about the llvm-commits
mailing list