[polly] r288924 - Add more ISL foreachElt functions. NFC.

Johannes Doerfert via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 7 16:08:03 PST 2016


Hey Michael,

I think all the C++ isl stuff you do is great but shouldn't it go into
"isl" or at least a C++ frontend for isl? Hiding it in "GICHelper" and
"ScopHelper" seems to me like the wrong approach as the code is far to
valuable...

Cheers,
  JD


On 12/07, Michael Kruse via llvm-commits wrote:
> Author: meinersbur
> Date: Wed Dec  7 11:47:57 2016
> New Revision: 288924
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=288924&view=rev
> Log:
> Add more ISL foreachElt functions. NFC.
> 
> Add and implement foreachElt for isl_map, isl_set and isl_union_set. These are
> used by an out-of-tree patch which is in process of being upstreamed.
> 
> Modified:
>     polly/trunk/include/polly/Support/GICHelper.h
>     polly/trunk/lib/Support/GICHelper.cpp
> 
> Modified: polly/trunk/include/polly/Support/GICHelper.h
> URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/Support/GICHelper.h?rev=288924&r1=288923&r2=288924&view=diff
> ==============================================================================
> --- polly/trunk/include/polly/Support/GICHelper.h (original)
> +++ polly/trunk/include/polly/Support/GICHelper.h Wed Dec  7 11:47:57 2016
> @@ -365,6 +365,20 @@ static llvm::raw_ostream &operator<<(llv
>    return OS;
>  }
>  
> +/// Enumerate all isl_basic_maps of an isl_map.
> +///
> +/// This basically wraps isl_map_foreach_basic_map() and allows to call back
> +/// C++11 closures.
> +void foreachElt(NonowningIslPtr<isl_map> Map,
> +                const std::function<void(IslPtr<isl_basic_map>)> &F);
> +
> +/// Enumerate all isl_basic_sets of an isl_set.
> +///
> +/// This basically wraps isl_set_foreach_basic_set() and allows to call back
> +/// C++11 closures.
> +void foreachElt(NonowningIslPtr<isl_set> Set,
> +                const std::function<void(IslPtr<isl_basic_set>)> &F);
> +
>  /// Enumerate all isl_maps of an isl_union_map.
>  ///
>  /// This basically wraps isl_union_map_foreach_map() and allows to call back
> @@ -372,6 +386,13 @@ static llvm::raw_ostream &operator<<(llv
>  void foreachElt(NonowningIslPtr<isl_union_map> UMap,
>                  const std::function<void(IslPtr<isl_map> Map)> &F);
>  
> +/// Enumerate all isl_sets of an isl_union_set.
> +///
> +/// This basically wraps isl_union_set_foreach_set() and allows to call back
> +/// C++11 closures.
> +void foreachElt(NonowningIslPtr<isl_union_set> USet,
> +                const std::function<void(IslPtr<isl_set> Set)> &F);
> +
>  /// Enumerate all isl_pw_aff of an isl_union_pw_aff.
>  ///
>  /// This basically wraps isl_union_pw_aff(), but also allows to call back C++11
> 
> Modified: polly/trunk/lib/Support/GICHelper.cpp
> URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Support/GICHelper.cpp?rev=288924&r1=288923&r2=288924&view=diff
> ==============================================================================
> --- polly/trunk/lib/Support/GICHelper.cpp (original)
> +++ polly/trunk/lib/Support/GICHelper.cpp Wed Dec  7 11:47:57 2016
> @@ -225,6 +225,34 @@ DEFINE_ISLPTR(multi_union_pw_aff)
>  DEFINE_ISLPTR(union_pw_multi_aff)
>  }
>  
> +void polly::foreachElt(NonowningIslPtr<isl_map> Map,
> +                       const std::function<void(IslPtr<isl_basic_map>)> &F) {
> +  isl_map_foreach_basic_map(
> +      Map.keep(),
> +      [](__isl_take isl_basic_map *BMap, void *User) -> isl_stat {
> +        auto &F =
> +            *static_cast<const std::function<void(IslPtr<isl_basic_map>)> *>(
> +                User);
> +        F(give(BMap));
> +        return isl_stat_ok;
> +      },
> +      const_cast<void *>(static_cast<const void *>(&F)));
> +}
> +
> +void polly::foreachElt(NonowningIslPtr<isl_set> Set,
> +                       const std::function<void(IslPtr<isl_basic_set>)> &F) {
> +  isl_set_foreach_basic_set(
> +      Set.keep(),
> +      [](__isl_take isl_basic_set *BSet, void *User) -> isl_stat {
> +        auto &F =
> +            *static_cast<const std::function<void(IslPtr<isl_basic_set>)> *>(
> +                User);
> +        F(give(BSet));
> +        return isl_stat_ok;
> +      },
> +      const_cast<void *>(static_cast<const void *>(&F)));
> +}
> +
>  void polly::foreachElt(NonowningIslPtr<isl_union_map> UMap,
>                         const std::function<void(IslPtr<isl_map> Map)> &F) {
>    isl_union_map_foreach_map(
> @@ -236,6 +264,19 @@ void polly::foreachElt(NonowningIslPtr<i
>          return isl_stat_ok;
>        },
>        const_cast<void *>(static_cast<const void *>(&F)));
> +}
> +
> +void polly::foreachElt(NonowningIslPtr<isl_union_set> USet,
> +                       const std::function<void(IslPtr<isl_set> Set)> &F) {
> +  isl_union_set_foreach_set(
> +      USet.keep(),
> +      [](__isl_take isl_set *Set, void *User) -> isl_stat {
> +        auto &F =
> +            *static_cast<const std::function<void(IslPtr<isl_set>)> *>(User);
> +        F(give(Set));
> +        return isl_stat_ok;
> +      },
> +      const_cast<void *>(static_cast<const void *>(&F)));
>  }
>  
>  void polly::foreachElt(NonowningIslPtr<isl_union_pw_aff> UPwAff,
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

-- 

Johannes Doerfert
Researcher / PhD Student

Compiler Design Lab (Prof. Hack)
Saarland Informatics Campus, Germany
Building E1.3, Room 4.31

Tel. +49 (0)681 302-57521 : doerfert at cs.uni-saarland.de
Fax. +49 (0)681 302-3065  : http://www.cdl.uni-saarland.de/people/doerfert
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: Digital signature
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161208/4102c2d2/attachment.sig>


More information about the llvm-commits mailing list