From 3137f2cb653db06f3dbb730cdaf126a11e65c480 Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Sun, 21 May 2017 20:23:23 +0000 Subject: [PATCH] [ScopInfo] Translate wrapConstantDimensions to isl C++ [NFC] llvm-svn: 303511 --- polly/lib/Analysis/ScopInfo.cpp | 48 +++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 2cea854..6b2d346 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -451,13 +451,13 @@ const ScopArrayInfo *ScopArrayInfo::getFromId(__isl_take isl_id *Id) { void MemoryAccess::wrapConstantDimensions() { auto *SAI = getScopArrayInfo(); - auto *ArraySpace = SAI->getSpace(); - auto *Ctx = isl_space_get_ctx(ArraySpace); + isl::space ArraySpace = give(SAI->getSpace()); + isl::ctx Ctx = ArraySpace.get_ctx(); unsigned DimsArray = SAI->getNumberOfDimensions(); - auto *DivModAff = isl_multi_aff_identity(isl_space_map_from_domain_and_range( - isl_space_copy(ArraySpace), isl_space_copy(ArraySpace))); - auto *LArraySpace = isl_local_space_from_space(ArraySpace); + isl::multi_aff DivModAff = isl::multi_aff::identity( + ArraySpace.map_from_domain_and_range(ArraySpace)); + isl::local_space LArraySpace = isl::local_space(ArraySpace); // Begin with last dimension, to iteratively carry into higher dimensions. for (int i = DimsArray - 1; i > 0; i--) { @@ -472,37 +472,33 @@ void MemoryAccess::wrapConstantDimensions() { if (DimSize->isZero()) continue; - auto *DimSizeVal = isl_valFromAPInt(Ctx, DimSizeCst->getAPInt(), false); - auto *Var = isl_aff_var_on_domain(isl_local_space_copy(LArraySpace), - isl_dim_set, i); - auto *PrevVar = isl_aff_var_on_domain(isl_local_space_copy(LArraySpace), - isl_dim_set, i - 1); + isl::val DimSizeVal = + valFromAPInt(Ctx.get(), DimSizeCst->getAPInt(), false); + isl::aff Var = isl::aff::var_on_domain(LArraySpace, isl::dim::set, i); + isl::aff PrevVar = + isl::aff::var_on_domain(LArraySpace, isl::dim::set, i - 1); // Compute: index % size // Modulo must apply in the divide of the previous iteration, if any. - auto *Modulo = isl_aff_copy(Var); - Modulo = isl_aff_mod_val(Modulo, isl_val_copy(DimSizeVal)); - Modulo = isl_aff_pullback_multi_aff(Modulo, isl_multi_aff_copy(DivModAff)); + isl::aff Modulo = Var.mod_val(DimSizeVal); + Modulo = Modulo.pullback(DivModAff); // Compute: floor(index / size) - auto *Divide = Var; - Divide = isl_aff_div( - Divide, - isl_aff_val_on_domain(isl_local_space_copy(LArraySpace), DimSizeVal)); - Divide = isl_aff_floor(Divide); - Divide = isl_aff_add(Divide, PrevVar); - Divide = isl_aff_pullback_multi_aff(Divide, isl_multi_aff_copy(DivModAff)); + isl::aff Divide = Var.div(isl::aff(LArraySpace, DimSizeVal)); + Divide = Divide.floor(); + Divide = Divide.add(PrevVar); + Divide = Divide.pullback(DivModAff); // Apply Modulo and Divide. - DivModAff = isl_multi_aff_set_aff(DivModAff, i, Modulo); - DivModAff = isl_multi_aff_set_aff(DivModAff, i - 1, Divide); + DivModAff = DivModAff.set_aff(i, Modulo); + DivModAff = DivModAff.set_aff(i - 1, Divide); } // Apply all modulo/divides on the accesses. - AccessRelation = - isl_map_apply_range(AccessRelation, isl_map_from_multi_aff(DivModAff)); - AccessRelation = isl_map_detect_equalities(AccessRelation); - isl_local_space_free(LArraySpace); + isl::map Relation = give(AccessRelation); + Relation = Relation.apply_range(isl::map::from_multi_aff(DivModAff)); + Relation = Relation.detect_equalities(); + AccessRelation = Relation.release(); } void MemoryAccess::updateDimensionality() { -- 2.7.4