Skip to content
Draft
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
152ced5
include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __set_unio…
SergeyKopienko Mar 11, 2026
ca20467
include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __set_inte…
SergeyKopienko Mar 11, 2026
baf0c7b
include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __set_diff…
SergeyKopienko Mar 11, 2026
47df388
include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __set_symm…
SergeyKopienko Mar 11, 2026
f87863b
include/oneapi/dpl/pstl/parallel_backend_utils.h - fix review comment
SergeyKopienko Mar 12, 2026
1ab3b4d
Avoid std::tie
SergeyKopienko Mar 12, 2026
8613403
include/oneapi/dpl/pstl/parallel_backend_utils.h - optimization
SergeyKopienko Mar 12, 2026
90312e5
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - optimization"
SergeyKopienko Mar 12, 2026
6310656
Revert "Avoid std::tie"
SergeyKopienko Mar 12, 2026
b8df54b
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - fix review…
SergeyKopienko Mar 12, 2026
ff9b3fc
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __…
SergeyKopienko Mar 12, 2026
fa5c01d
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __…
SergeyKopienko Mar 12, 2026
432b618
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __…
SergeyKopienko Mar 12, 2026
32b424e
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - rewrite __…
SergeyKopienko Mar 12, 2026
89b062d
include/oneapi/dpl/pstl/parallel_backend_utils.h - improve performanc…
SergeyKopienko Mar 12, 2026
d6f3351
include/oneapi/dpl/pstl/parallel_backend_utils.h - improve performanc…
SergeyKopienko Mar 12, 2026
4a9890b
include/oneapi/dpl/pstl/parallel_backend_utils.h - improve performanc…
SergeyKopienko Mar 12, 2026
27bac32
Revert "include/oneapi/dpl/pstl/parallel_backend_utils.h - improve pe…
SergeyKopienko Mar 12, 2026
a022fd7
Apply GitHUB clang format
SergeyKopienko Mar 12, 2026
3051810
Update include/oneapi/dpl/pstl/parallel_backend_utils.h
SergeyKopienko Mar 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 34 additions & 22 deletions include/oneapi/dpl/pstl/parallel_backend_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -280,25 +280,36 @@ __set_difference_construct(_ForwardIterator1 __first1, _ForwardIterator1 __last1
{
using _Tp = typename ::std::iterator_traits<_OutputIterator>::value_type;

for (; __first1 != __last1;)
// __proj1_val < __proj2_val
auto __op_val1_lt_val2 = [](_ForwardIterator1& __it1, _ForwardIterator2&, _OutputIterator& __out_it) {
::new (::std::addressof(*__out_it)) _Tp(*__it1);
++__it1;
++__out_it;
};

// __proj2_val < __proj1_val
auto __op_val2_lt_val1 = [](_ForwardIterator1&, _ForwardIterator2& __it2, _OutputIterator&) { ++__it2; };

// __proj1_val == __proj2_val
auto __op_val1_eq_val2 = [](_ForwardIterator1& __it1, _ForwardIterator2& __it2, _OutputIterator&) {
++__it1;
++__it2;
};

// 1. Main set_difference operation
while (__first1 != __last1 && __first2 != __last2)
{
Comment thread
SergeyKopienko marked this conversation as resolved.
if (__first2 == __last2)
return __cc_range(__first1, __last1, __result);

if (std::invoke(__comp, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2)))
{
::new (::std::addressof(*__result)) _Tp(*__first1);
++__result;
++__first1;
}
else
{
if (!std::invoke(__comp, std::invoke(__proj2, *__first2), std::invoke(__proj1, *__first1)))
++__first1;
++__first2;
}
const bool __val1_lt_val2 =
std::invoke(__comp, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2));
const bool __val2_lt_val1 =
!__val1_lt_val2 && std::invoke(__comp, std::invoke(__proj2, *__first2), std::invoke(__proj1, *__first1));

__val1_lt_val2 ? __op_val1_lt_val2(__first1, __first2, __result)
: (__val2_lt_val1 ? __op_val2_lt_val1(__first1, __first2, __result)
: __op_val1_eq_val2(__first1, __first2, __result));
Comment thread
SergeyKopienko marked this conversation as resolved.
}
return __result;

return __cc_range(__first1, __last1, __result);
}

template <typename _ForwardIterator1, typename _ForwardIterator2, typename _OutputIterator,
Expand All @@ -310,11 +321,8 @@ __set_symmetric_difference_construct(_ForwardIterator1 __first1, _ForwardIterato
{
using _Tp = typename ::std::iterator_traits<_OutputIterator>::value_type;

for (; __first1 != __last1;)
while (__first1 != __last1 && __first2 != __last2)
{
if (__first2 == __last2)
return __cc_range(__first1, __last1, __result);

if (std::invoke(__comp, std::invoke(__proj1, *__first1), std::invoke(__proj2, *__first2)))
{
::new (::std::addressof(*__result)) _Tp(*__first1);
Expand All @@ -333,7 +341,11 @@ __set_symmetric_difference_construct(_ForwardIterator1 __first1, _ForwardIterato
++__first2;
}
}
return __cc_range(__first2, __last2, __result);

if (__first1 == __last1)
return __cc_range(__first2, __last2, __result);

return __cc_range(__first1, __last1, __result);
}

template <template <typename, typename...> typename _Concrete, typename _ValueType, typename... _Args>
Expand Down
Loading