[Polly][Isl] Use isl::set::tuple_dim, isl::map::domain_tuple_dim and isl::map::range_tuple_dim. NFC
This is part of an effort to reduce the differences between the custom C++ bindings used right now by polly in `lib/External/isl/include/isl/isl-noxceptions.h` and the official isl C++ interface.
Changes made:
- Use `isl::set::tuple_dim` instead of `isl::set::dim` and `isl::set::n_dim`
- Use `isl::map::domain_tuple_dim` instead of `isl::map::dim`
- Use `isl::map::range_tuple_dim` instead of `isl::map::dim`
- isl-noexceptions.h has been generated by this https://github.com/patacca/isl/commit/45576e1b4260f91946e4cf819485f57bd2ed5490
Note that not all the usage of `isl::{set,map}::dim` where replaced
Reviewed By: Meinersbur
Differential Revision: https://reviews.llvm.org/D104994
GitOrigin-RevId: f482497c381cf9beee513864123cf975bd72babf
diff --git a/lib/Analysis/DependenceInfo.cpp b/lib/Analysis/DependenceInfo.cpp
index 895a38a..5f4c293 100644
--- a/lib/Analysis/DependenceInfo.cpp
+++ b/lib/Analysis/DependenceInfo.cpp
@@ -190,7 +190,7 @@
/// Fix all dimension of @p Zero to 0 and add it to @p user
static void fixSetToZero(isl::set Zero, isl::union_set *User) {
- for (auto i : seq<isl_size>(0, Zero.dim(isl::dim::set)))
+ for (auto i : seq<isl_size>(0, Zero.tuple_dim()))
Zero = Zero.fix_si(isl::dim::set, i, 0);
*User = User->add_set(Zero);
}
diff --git a/lib/Analysis/ScopBuilder.cpp b/lib/Analysis/ScopBuilder.cpp
index c3fb92c..c5ba4fd 100644
--- a/lib/Analysis/ScopBuilder.cpp
+++ b/lib/Analysis/ScopBuilder.cpp
@@ -202,7 +202,7 @@
static isl::map createNextIterationMap(isl::space SetSpace, unsigned Dim) {
isl::space MapSpace = SetSpace.map_from_set();
isl::map NextIterationMap = isl::map::universe(MapSpace);
- for (auto u : seq<isl_size>(0, NextIterationMap.dim(isl::dim::in)))
+ for (auto u : seq<isl_size>(0, NextIterationMap.domain_tuple_dim()))
if (u != (isl_size)Dim)
NextIterationMap =
NextIterationMap.equate(isl::dim::in, u, isl::dim::out, u);
@@ -230,10 +230,10 @@
/// both with regards to the dimension @p Dim.
static std::pair<isl::set, isl::set> partitionSetParts(isl::set S,
unsigned Dim) {
- for (unsigned u = 0, e = S.n_dim(); u < e; u++)
+ for (unsigned u = 0, e = S.tuple_dim(); u < e; u++)
S = S.lower_bound_si(isl::dim::set, u, 0);
- unsigned NumDimsS = S.n_dim();
+ unsigned NumDimsS = S.tuple_dim();
isl::set OnlyDimS = S;
// Remove dimensions that are greater than Dim as they are not interesting.
@@ -328,7 +328,7 @@
} else {
assert(OldDepth > NewDepth);
int Diff = OldDepth - NewDepth;
- int NumDim = Dom.n_dim();
+ int NumDim = Dom.tuple_dim();
assert(NumDim >= Diff);
Dom = Dom.project_out(isl::dim::set, NumDim - Diff, Diff);
}
@@ -909,7 +909,7 @@
continue;
isl::set Domain = scop->getDomainConditions(BB);
- scop->updateMaxLoopDepth(isl_set_n_dim(Domain.get()));
+ scop->updateMaxLoopDepth(Domain.tuple_dim());
auto *BBLoop = getRegionNodeLoop(RN, LI);
// Propagate the domain from BB directly to blocks that have a superset
@@ -1162,7 +1162,7 @@
auto Result = isl::union_pw_multi_aff::empty(USet.get_space());
for (isl::set S : USet.get_set_list()) {
- int Dim = S.dim(isl::dim::set);
+ int Dim = S.tuple_dim();
auto PMA = isl::pw_multi_aff::project_out_map(S.get_space(), isl::dim::set,
N, Dim - N);
if (N > 1)
@@ -2405,7 +2405,7 @@
isl::map Transform = isl::map::universe(Array->getSpace().map_from_set());
std::vector<int> Int;
- int Dims = Elements.dim(isl::dim::set);
+ int Dims = Elements.tuple_dim();
for (int i = 0; i < Dims; i++) {
isl::set DimOnly = isl::set(Elements).project_out(isl::dim::set, 0, i);
DimOnly = DimOnly.project_out(isl::dim::set, 1, Dims - i - 1);
@@ -3386,7 +3386,7 @@
static isl::set getAccessDomain(MemoryAccess *MA) {
isl::set Domain = MA->getStatement()->getDomain();
- Domain = Domain.project_out(isl::dim::set, 0, Domain.n_dim());
+ Domain = Domain.project_out(isl::dim::set, 0, Domain.tuple_dim());
return Domain.reset_tuple_id();
}
diff --git a/lib/Analysis/ScopInfo.cpp b/lib/Analysis/ScopInfo.cpp
index 2925cfd..1a8d334 100644
--- a/lib/Analysis/ScopInfo.cpp
+++ b/lib/Analysis/ScopInfo.cpp
@@ -1006,7 +1006,7 @@
static isl::map getEqualAndLarger(isl::space SetDomain) {
isl::space Space = SetDomain.map_from_set();
isl::map Map = isl::map::universe(Space);
- unsigned lastDimension = Map.dim(isl::dim::in) - 1;
+ unsigned lastDimension = Map.domain_tuple_dim() - 1;
// Set all but the last dimension to be equal for the input and output
//
@@ -1046,10 +1046,9 @@
Stride = getStride(Schedule);
StrideX = isl::set::universe(Stride.get_space());
- for (auto i : seq<isl_size>(0, StrideX.dim(isl::dim::set) - 1))
+ for (auto i : seq<isl_size>(0, StrideX.tuple_dim() - 1))
StrideX = StrideX.fix_si(isl::dim::set, i, 0);
- StrideX = StrideX.fix_si(isl::dim::set, StrideX.dim(isl::dim::set) - 1,
- StrideWidth);
+ StrideX = StrideX.fix_si(isl::dim::set, StrideX.tuple_dim() - 1, StrideWidth);
IsStrideX = Stride.is_subset(StrideX);
return IsStrideX;
diff --git a/lib/CodeGen/PPCGCodeGeneration.cpp b/lib/CodeGen/PPCGCodeGeneration.cpp
index dac1fcd..9d2b3d9 100644
--- a/lib/CodeGen/PPCGCodeGeneration.cpp
+++ b/lib/CodeGen/PPCGCodeGeneration.cpp
@@ -1151,7 +1151,7 @@
isl::set ZeroSet = isl::set::universe(Min.get_space());
- for (long i = 0, n = Min.dim(isl::dim::set); i < n; i++)
+ for (long i = 0, n = Min.tuple_dim(); i < n; i++)
ZeroSet = ZeroSet.fix_si(isl::dim::set, i, 0);
if (Min.is_subset(ZeroSet)) {
@@ -1160,7 +1160,7 @@
isl::ast_expr Result = isl::ast_expr::from_val(isl::val(Min.get_ctx(), 0));
- for (long i = 0, n = Min.dim(isl::dim::set); i < n; i++) {
+ for (long i = 0, n = Min.tuple_dim(); i < n; i++) {
if (i > 0) {
isl::pw_aff Bound_I =
isl::manage(isl_multi_pw_aff_get_pw_aff(Array->bound, i - 1));
diff --git a/lib/External/isl/include/isl/isl-noexceptions.h b/lib/External/isl/include/isl/isl-noexceptions.h
index c653cea..facb764 100644
--- a/lib/External/isl/include/isl/isl-noexceptions.h
+++ b/lib/External/isl/include/isl/isl-noexceptions.h
@@ -1250,6 +1250,7 @@
inline boolean domain_is_wrapping() const;
inline map domain_map() const;
inline map domain_product(map map2) const;
+ inline isl_size domain_tuple_dim() const;
inline map drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
inline map drop_constraints_not_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
inline map drop_unused_params() const;
@@ -1380,6 +1381,7 @@
inline map range_map() const;
inline map range_product(map map2) const;
inline map range_reverse() const;
+ inline isl_size range_tuple_dim() const;
inline map remove_dims(isl::dim type, unsigned int first, unsigned int n) const;
inline map remove_divs() const;
inline map remove_divs_involving_dims(isl::dim type, unsigned int first, unsigned int n) const;
@@ -2922,6 +2924,7 @@
inline set subtract(set set2) const;
inline set sum(set set2) const;
inline map translation() const;
+ inline isl_size tuple_dim() const;
inline set unbind_params(multi_id tuple) const;
inline map unbind_params_insert_domain(multi_id domain) const;
inline set unite(set set2) const;
@@ -8336,6 +8339,12 @@
return manage(res);
}
+isl_size map::domain_tuple_dim() const
+{
+ auto res = isl_map_domain_tuple_dim(get());
+ return res;
+}
+
map map::drop_constraints_involving_dims(isl::dim type, unsigned int first, unsigned int n) const
{
auto res = isl_map_drop_constraints_involving_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
@@ -9126,6 +9135,12 @@
return manage(res);
}
+isl_size map::range_tuple_dim() const
+{
+ auto res = isl_map_range_tuple_dim(get());
+ return res;
+}
+
map map::remove_dims(isl::dim type, unsigned int first, unsigned int n) const
{
auto res = isl_map_remove_dims(copy(), static_cast<enum isl_dim_type>(type), first, n);
@@ -16338,6 +16353,12 @@
return manage(res);
}
+isl_size set::tuple_dim() const
+{
+ auto res = isl_set_tuple_dim(get());
+ return res;
+}
+
set set::unbind_params(multi_id tuple) const
{
auto res = isl_set_unbind_params(copy(), tuple.release());
diff --git a/lib/Support/ISLTools.cpp b/lib/Support/ISLTools.cpp
index bc4fda9..d772b71 100644
--- a/lib/Support/ISLTools.cpp
+++ b/lib/Support/ISLTools.cpp
@@ -166,7 +166,7 @@
if (Map.is_null())
continue;
- Dims = std::max(Dims, Map.dim(isl::dim::out));
+ Dims = std::max(Dims, Map.range_tuple_dim());
}
return Dims;
}
@@ -214,7 +214,7 @@
}
isl::set polly::shiftDim(isl::set Set, int Pos, int Amount) {
- int NumDims = Set.dim(isl::dim::set);
+ int NumDims = Set.tuple_dim();
if (Pos < 0)
Pos = NumDims + Pos;
assert(Pos < NumDims && "Dimension index must be in range");
diff --git a/lib/Transform/FlattenAlgo.cpp b/lib/Transform/FlattenAlgo.cpp
index c1ab8fd..0e25074 100644
--- a/lib/Transform/FlattenAlgo.cpp
+++ b/lib/Transform/FlattenAlgo.cpp
@@ -29,7 +29,7 @@
auto ParamDims = Set.dim(isl::dim::param);
Set = Set.project_out(isl::dim::param, 0, ParamDims);
Set = Set.project_out(isl::dim::set, 0, dim);
- auto SetDims = Set.dim(isl::dim::set);
+ auto SetDims = Set.tuple_dim();
Set = Set.project_out(isl::dim::set, 1, SetDims - 1);
return bool(Set.is_bounded());
}
@@ -40,7 +40,7 @@
/// Min_p <= x <= Max_p.
bool isDimBoundedByParameter(isl::set Set, unsigned dim) {
Set = Set.project_out(isl::dim::set, 0, dim);
- auto SetDims = Set.dim(isl::dim::set);
+ auto SetDims = Set.tuple_dim();
Set = Set.project_out(isl::dim::set, 1, SetDims - 1);
return bool(Set.is_bounded());
}
@@ -135,7 +135,7 @@
if (Map.is_null())
continue;
- Dims = std::max(Dims, Map.dim(isl::dim::out));
+ Dims = std::max(Dims, Map.range_tuple_dim());
}
return Dims;
}
@@ -144,7 +144,7 @@
isl::union_pw_aff scheduleExtractDimAff(isl::union_map UMap, unsigned pos) {
auto SingleUMap = isl::union_map::empty(UMap.get_space());
for (isl::map Map : UMap.get_map_list()) {
- unsigned MapDims = Map.dim(isl::dim::out);
+ unsigned MapDims = Map.range_tuple_dim();
isl::map SingleMap = Map.project_out(isl::dim::out, 0, pos);
SingleMap = SingleMap.project_out(isl::dim::out, 1, MapDims - pos - 1);
SingleUMap = SingleUMap.add_map(SingleMap);
@@ -179,7 +179,7 @@
auto ScatterSet = isl::set(Schedule.range());
auto ParamSpace = Schedule.get_space().params();
- auto Dims = ScatterSet.dim(isl::dim::set);
+ auto Dims = ScatterSet.tuple_dim();
assert(Dims >= 2);
// Would cause an infinite loop.
diff --git a/lib/Transform/MatmulOptimizer.cpp b/lib/Transform/MatmulOptimizer.cpp
index 8558a15..1bb2b6a 100644
--- a/lib/Transform/MatmulOptimizer.cpp
+++ b/lib/Transform/MatmulOptimizer.cpp
@@ -317,7 +317,7 @@
MatMulInfoTy &MMI) {
auto InputDimId = PartialSchedule.get_tuple_id(isl::dim::in);
auto *Stmt = static_cast<ScopStmt *>(InputDimId.get_user());
- isl_size OutDimNum = PartialSchedule.dim(isl::dim::out);
+ isl_size OutDimNum = PartialSchedule.range_tuple_dim();
assert(OutDimNum > 2 && "In case of the matrix multiplication the loop nest "
"and, consequently, the corresponding scheduling "
"functions have at least three dimensions.");
@@ -729,7 +729,7 @@
// Insert into the schedule tree.
isl::map ExtMap = MapOldIndVar.project_out(
- isl::dim::out, 2, MapOldIndVar.dim(isl::dim::out) - 2);
+ isl::dim::out, 2, MapOldIndVar.range_tuple_dim() - 2);
ExtMap = ExtMap.reverse();
ExtMap = ExtMap.fix_si(isl::dim::out, MMI.i, 0);
ExtMap = ExtMap.intersect_range(Domain);
@@ -870,9 +870,9 @@
auto Child = Node.child(0);
auto UnMapOldIndVar = Child.get_prefix_schedule_union_map();
auto MapOldIndVar = isl::map::from_union_map(UnMapOldIndVar);
- if (MapOldIndVar.dim(isl::dim::out) > 9)
+ if (MapOldIndVar.range_tuple_dim() > 9)
return MapOldIndVar.project_out(isl::dim::out, 0,
- MapOldIndVar.dim(isl::dim::out) - 9);
+ MapOldIndVar.range_tuple_dim() - 9);
return MapOldIndVar;
}
@@ -896,7 +896,7 @@
isl::schedule_node Child = Node.get_child(0);
isl::union_map UnMapOldIndVar = Child.get_prefix_schedule_relation();
isl::set Prefix = isl::map::from_union_map(UnMapOldIndVar).range();
- isl_size Dims = Prefix.dim(isl::dim::set);
+ isl_size Dims = Prefix.tuple_dim();
Prefix = Prefix.project_out(isl::dim::set, Dims - 1, 1);
Prefix = getPartialTilePrefixes(Prefix, MicroKernelParams.Nr);
Prefix = getPartialTilePrefixes(Prefix, MicroKernelParams.Mr);
@@ -955,7 +955,7 @@
auto Domain = Node.get_universe_domain();
assert(isl_union_set_n_set(Domain.get()) == 1);
if (Node.get_schedule_depth() != 0 ||
- (isl::set(Domain).dim(isl::dim::set) !=
+ (isl::set(Domain).tuple_dim() !=
isl_schedule_node_band_n_member(Node.get())))
return Node;
Node = isl::manage(isl_schedule_node_delete(Node.copy()));
diff --git a/lib/Transform/MaximalStaticExpansion.cpp b/lib/Transform/MaximalStaticExpansion.cpp
index 9cf02e7..da2774b 100644
--- a/lib/Transform/MaximalStaticExpansion.cpp
+++ b/lib/Transform/MaximalStaticExpansion.cpp
@@ -121,7 +121,7 @@
auto ParamDims = Set.dim(isl::dim::param);
Set = Set.project_out(isl::dim::param, 0, ParamDims);
Set = Set.project_out(isl::dim::set, 0, dim);
- auto SetDims = Set.dim(isl::dim::set);
+ auto SetDims = Set.tuple_dim();
Set = Set.project_out(isl::dim::set, 1, SetDims - 1);
return bool(Set.is_bounded());
}
@@ -350,7 +350,7 @@
// Get the current AM.
auto CurrentAccessMap = MA->getAccessRelation();
- unsigned in_dimensions = CurrentAccessMap.dim(isl::dim::in);
+ unsigned in_dimensions = CurrentAccessMap.domain_tuple_dim();
// Get domain from the current AM.
auto Domain = CurrentAccessMap.domain();
diff --git a/lib/Transform/ScheduleTreeTransform.cpp b/lib/Transform/ScheduleTreeTransform.cpp
index 8bcf731..5a66ad8 100644
--- a/lib/Transform/ScheduleTreeTransform.cpp
+++ b/lib/Transform/ScheduleTreeTransform.cpp
@@ -237,7 +237,7 @@
isl::union_map NewPartialSchedMap = isl::union_map::from(PartialSched);
unsigned BandDims = isl_schedule_node_band_n_member(OldNode.get());
for (isl::map Ext : NewChildExtensions.get_map_list()) {
- unsigned ExtDims = Ext.dim(isl::dim::in);
+ unsigned ExtDims = Ext.domain_tuple_dim();
assert(ExtDims >= BandDims);
unsigned OuterDims = ExtDims - BandDims;
@@ -485,7 +485,7 @@
/// @param Set A set, which should be modified.
/// @param VectorWidth A parameter, which determines the constraint.
static isl::set addExtentConstraints(isl::set Set, int VectorWidth) {
- unsigned Dims = Set.dim(isl::dim::set);
+ unsigned Dims = Set.tuple_dim();
isl::space Space = Set.get_space();
isl::local_space LocalSpace = isl::local_space(Space);
isl::constraint ExtConstr = isl::constraint::alloc_inequality(LocalSpace);
@@ -651,7 +651,7 @@
isl::set polly::getPartialTilePrefixes(isl::set ScheduleRange,
int VectorWidth) {
- isl_size Dims = ScheduleRange.dim(isl::dim::set);
+ isl_size Dims = ScheduleRange.tuple_dim();
isl::set LoopPrefixes =
ScheduleRange.drop_constraints_involving_dims(isl::dim::set, Dims - 1, 1);
auto ExtentPrefixes = addExtentConstraints(LoopPrefixes, VectorWidth);
@@ -663,7 +663,7 @@
isl::union_set polly::getIsolateOptions(isl::set IsolateDomain,
isl_size OutDimsNum) {
- isl_size Dims = IsolateDomain.dim(isl::dim::set);
+ isl_size Dims = IsolateDomain.tuple_dim();
assert(OutDimsNum <= Dims &&
"The isl::set IsolateDomain is used to describe the range of schedule "
"dimensions values, which should be isolated. Consequently, the "
diff --git a/lib/Transform/ZoneAlgo.cpp b/lib/Transform/ZoneAlgo.cpp
index 5e4c913..2c9499d 100644
--- a/lib/Transform/ZoneAlgo.cpp
+++ b/lib/Transform/ZoneAlgo.cpp
@@ -685,11 +685,10 @@
TargetStmt->getSurroundingLoop())) {
isl::set DefDomain = getDomainFor(DefStmt);
isl::set TargetDomain = getDomainFor(TargetStmt);
- assert(DefDomain.dim(isl::dim::set) <= TargetDomain.dim(isl::dim::set));
+ assert(DefDomain.tuple_dim() <= TargetDomain.tuple_dim());
Result = isl::map::from_domain_and_range(DefDomain, TargetDomain);
- for (unsigned i = 0, DefDims = DefDomain.dim(isl::dim::set); i < DefDims;
- i += 1)
+ for (unsigned i = 0, DefDims = DefDomain.tuple_dim(); i < DefDims; i += 1)
Result = Result.equate(isl::dim::in, i, isl::dim::out, i);
}