[PATCH] Improve implementation of parallel equal()

Thomas Rodgers trodgers@redhat.com
Sat Apr 20 22:38:00 GMT 2019


Jonathan Wakely writes:

> 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.

Tested x86_64-linux-gnu, committed to trunk.



More information about the Libstdc++ mailing list