[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 45576e1b42

Note that not all the usage of `isl::{set,map}::dim` where replaced

Reviewed By: Meinersbur

Differential Revision: https://reviews.llvm.org/D104994
This commit is contained in:
patacca 2021-07-06 11:20:18 +02:00
parent cbb09c5b2c
commit f482497c38
11 changed files with 56 additions and 37 deletions

View File

@ -190,7 +190,7 @@ static void collectInfo(Scop &S, isl_union_map *&Read,
/// 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);
}

View File

@ -202,7 +202,7 @@ static bool containsErrorBlock(RegionNode *RN, const Region &R, LoopInfo &LI,
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 @@ static isl::set collectBoundedParts(isl::set S) {
/// 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 @@ isl::set ScopBuilder::adjustDomainDimensions(isl::set Dom, Loop *OldL,
} 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 @@ bool ScopBuilder::buildDomainsWithBranchConstraints(
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 @@ static isl::multi_union_pw_aff mapToDimension(isl::union_set USet, int N) {
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 @@ void ScopBuilder::foldSizeConstantsToRight() {
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 @@ bool ScopBuilder::calculateMinMaxAccess(AliasGroupTy AliasGroup,
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();
}

View File

@ -1006,7 +1006,7 @@ isl::pw_aff MemoryAccess::getPwAff(const SCEV *E) {
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 @@ bool MemoryAccess::isStrideX(isl::map Schedule, int StrideWidth) const {
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;

View File

@ -1151,7 +1151,7 @@ Value *GPUNodeBuilder::getArrayOffset(gpu_array_info *Array) {
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 @@ Value *GPUNodeBuilder::getArrayOffset(gpu_array_info *Array) {
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));

View File

@ -1250,6 +1250,7 @@ public:
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 @@ public:
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 @@ public:
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 @@ map map::domain_product(map map2) const
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 @@ map map::range_reverse() const
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 @@ map set::translation() const
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());

View File

@ -166,7 +166,7 @@ isl_size polly::getNumScatterDims(const isl::union_map &Schedule) {
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::union_map polly::reverseDomain(const isl::union_map &UMap) {
}
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");

View File

@ -29,7 +29,7 @@ bool isDimBoundedByConstant(isl::set Set, unsigned dim) {
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 @@ bool isDimBoundedByConstant(isl::set Set, unsigned dim) {
/// 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 @@ isl_size scheduleScatterDims(const isl::union_map &Schedule) {
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_size scheduleScatterDims(const isl::union_map &Schedule) {
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 @@ isl::union_map tryFlattenSequence(isl::union_map Schedule) {
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.

View File

@ -317,7 +317,7 @@ static bool containsOnlyMatrMultAcc(isl::map PartialSchedule,
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 @@ static isl::schedule_node optimizePackedB(isl::schedule_node Node,
// 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 @@ getInductionVariablesSubstitution(isl::schedule_node Node,
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 @@ isolateAndUnrollMatMulInnerLoops(isl::schedule_node Node,
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 @@ getBandNodeWithOriginDimOrder(isl::schedule_node Node) {
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()));

View File

@ -121,7 +121,7 @@ static bool isDimBoundedByConstant(isl::set Set, unsigned dim) {
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 @@ ScopArrayInfo *MaximalStaticExpander::expandAccess(Scop &S, MemoryAccess *MA) {
// 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();

View File

@ -237,7 +237,7 @@ struct ExtensionNodeRewriter
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 @@ static isl::basic_set isDivisibleBySet(isl::ctx &Ctx, long Factor,
/// @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::schedule polly::applyPartialUnroll(isl::schedule_node BandToUnroll,
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::set polly::getPartialTilePrefixes(isl::set ScheduleRange,
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 "

View File

@ -685,11 +685,10 @@ isl::map ZoneAlgorithm::getDefToTarget(ScopStmt *DefStmt,
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);
}