[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:
parent
cbb09c5b2c
commit
f482497c38
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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 "
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue