[PATCH] Improve implementation of parallel equal()

Jonathan Wakely jwakely@redhat.com
Thu Apr 18 21:23:00 GMT 2019


On 16/04/19 12:39 -0700, Thomas Rodgers wrote:
>
>	* include/pstl/algorithm_impl.h
>	(__internal::__brick_equal): use "4 iterator" version of
>	std::equal().
>	(__internal::__brick_equal): use simd for random access
>	iterators on unsequenced execution policies.
>	(__internal::__pattern_equal): add "4 iterator" version
>	(__internal::__pattern_equal): dispatch to simd __brick_equal
>	for vector-only execution policies.
>	(__internal::__pattern_equal): disptach to __parallel_or for

s/disptach/dispatch/ in the changelog



>--- a/libstdc++-v3/include/pstl/glue_algorithm_impl.h
>+++ b/libstdc++-v3/include/pstl/glue_algorithm_impl.h
>@@ -757,7 +757,7 @@ __pstl::__internal::__enable_if_execution_policy<_ExecutionPolicy, bool>
> equal(_ExecutionPolicy&& __exec, _ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2,
>       _ForwardIterator2 __last2)
> {
>-    return equal(std::forward<_ExecutionPolicy>(__exec), __first1, __last1, __first2,
>+    return equal(std::forward<_ExecutionPolicy>(__exec), __first1, __last1, __first2, __last2,

N.B. I don't think this should be an unqualified call, but that can be
fixed in a later patch.

OK for trunk, thanks.



More information about the Gcc-patches mailing list