Skip to content

Commit

Permalink
[SYCL] Remove any/all/none arithmetic restriction
Browse files Browse the repository at this point in the history
pred(x) will transform any input type to Boolean.

Signed-off-by: John Pennycook <john.pennycook@intel.com>
  • Loading branch information
Pennycook committed Sep 18, 2020
1 parent da518f9 commit 282634f
Showing 1 changed file with 12 additions and 21 deletions.
33 changes: 12 additions & 21 deletions sycl/include/CL/sycl/ONEAPI/group_algorithm.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -203,18 +203,15 @@ all_of(Group, bool pred) {
}

template <typename Group, typename T, class Predicate>
detail::enable_if_t<(detail::is_generic_group<Group>::value &&
detail::is_arithmetic<T>::value),
bool>
detail::enable_if_t<detail::is_generic_group<Group>::value, bool>
all_of(Group g, T x, Predicate pred) {
return all_of(g, pred(x));
}

template <typename Group, typename Ptr, class Predicate>
detail::enable_if_t<
(detail::is_generic_group<Group>::value && detail::is_pointer<Ptr>::value &&
detail::is_arithmetic<typename detail::remove_pointer<Ptr>::type>::value),
bool>
detail::enable_if_t<(detail::is_generic_group<Group>::value &&
detail::is_pointer<Ptr>::value),
bool>
all_of(Group g, Ptr first, Ptr last, Predicate pred) {
#ifdef __SYCL_DEVICE_ONLY__
bool partial = true;
Expand Down Expand Up @@ -245,18 +242,15 @@ any_of(Group, bool pred) {
}

template <typename Group, typename T, class Predicate>
detail::enable_if_t<(detail::is_generic_group<Group>::value &&
detail::is_arithmetic<T>::value),
bool>
detail::enable_if_t<detail::is_generic_group<Group>::value, bool>
any_of(Group g, T x, Predicate pred) {
return any_of(g, pred(x));
}

template <typename Group, typename Ptr, class Predicate>
detail::enable_if_t<
(detail::is_generic_group<Group>::value && detail::is_pointer<Ptr>::value &&
detail::is_arithmetic<typename detail::remove_pointer<Ptr>::type>::value),
bool>
detail::enable_if_t<(detail::is_generic_group<Group>::value &&
detail::is_pointer<Ptr>::value),
bool>
any_of(Group g, Ptr first, Ptr last, Predicate pred) {
#ifdef __SYCL_DEVICE_ONLY__
bool partial = false;
Expand Down Expand Up @@ -287,18 +281,15 @@ none_of(Group, bool pred) {
}

template <typename Group, typename T, class Predicate>
detail::enable_if_t<(detail::is_generic_group<Group>::value &&
detail::is_arithmetic<T>::value),
bool>
detail::enable_if_t<detail::is_generic_group<Group>::value, bool>
none_of(Group g, T x, Predicate pred) {
return none_of(g, pred(x));
}

template <typename Group, typename Ptr, class Predicate>
detail::enable_if_t<
(detail::is_generic_group<Group>::value && detail::is_pointer<Ptr>::value &&
detail::is_arithmetic<typename detail::remove_pointer<Ptr>::type>::value),
bool>
detail::enable_if_t<(detail::is_generic_group<Group>::value &&
detail::is_pointer<Ptr>::value),
bool>
none_of(Group g, Ptr first, Ptr last, Predicate pred) {
#ifdef __SYCL_DEVICE_ONLY__
return !any_of(g, first, last, pred);
Expand Down

0 comments on commit 282634f

Please sign in to comment.