diff options
Diffstat (limited to 'polly/lib/Support/ISLTools.cpp')
-rw-r--r-- | polly/lib/Support/ISLTools.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/polly/lib/Support/ISLTools.cpp b/polly/lib/Support/ISLTools.cpp index 8b8c51a..b6ac9ba 100644 --- a/polly/lib/Support/ISLTools.cpp +++ b/polly/lib/Support/ISLTools.cpp @@ -263,6 +263,18 @@ isl::map polly::shiftDim(isl::map Map, isl::dim Dim, int Pos, int Amount) { } } +isl::val polly::getConstant(isl::map Map, isl::dim Dim, int Pos) { + unsigned NumDims = unsignedFromIslSize(Map.dim(Dim)); + if (Pos < 0) + Pos = NumDims + Pos; + assert(unsigned(Pos) < NumDims && "Dimension index must be in range"); + // TODO: The isl_map_plain_get_val_if_fixed function is not robust, since its + // result is different depending on the internal representation. + // Replace it with a different implementation. + return isl::manage(isl_map_plain_get_val_if_fixed( + Map.get(), static_cast<enum isl_dim_type>(Dim), Pos)); +} + isl::union_map polly::shiftDim(isl::union_map UMap, isl::dim Dim, int Pos, int Amount) { isl::union_map Result = isl::union_map::empty(UMap.ctx()); |