[libc++][pstl] Promote CPU backends to top-level backends (#88968)
This patch removes the two-level backend dispatching mechanism we had in the PSTL. Instead of selecting both a PSTL backend and a PSTL CPU backend, we now only select a top-level PSTL backend. This greatly simplifies the PSTL configuration layer. While this patch technically removes some flexibility from the PSTL configuration mechanism because CPU backends are not considered separately, it opens the door to a much more powerful configuration mechanism based on chained backends in a follow-up patch. This is a step towards overhauling the PSTL dispatching mechanism.
This commit is contained in:
@@ -300,9 +300,9 @@ option(LIBCXX_HAS_EXTERNAL_THREAD_API
|
||||
This option may only be set to ON when LIBCXX_ENABLE_THREADS=ON." OFF)
|
||||
|
||||
if (LIBCXX_ENABLE_THREADS)
|
||||
set(LIBCXX_PSTL_CPU_BACKEND "std_thread" CACHE STRING "Which PSTL CPU backend to use")
|
||||
set(LIBCXX_PSTL_BACKEND "std_thread" CACHE STRING "Which PSTL backend to use")
|
||||
else()
|
||||
set(LIBCXX_PSTL_CPU_BACKEND "serial" CACHE STRING "Which PSTL CPU backend to use")
|
||||
set(LIBCXX_PSTL_BACKEND "serial" CACHE STRING "Which PSTL backend to use")
|
||||
endif()
|
||||
|
||||
# Misc options ----------------------------------------------------------------
|
||||
@@ -792,14 +792,14 @@ elseif (LIBCXX_HARDENING_MODE STREQUAL "debug")
|
||||
config_define(8 _LIBCPP_HARDENING_MODE_DEFAULT)
|
||||
endif()
|
||||
|
||||
if (LIBCXX_PSTL_CPU_BACKEND STREQUAL "serial")
|
||||
config_define(1 _LIBCPP_PSTL_CPU_BACKEND_SERIAL)
|
||||
elseif(LIBCXX_PSTL_CPU_BACKEND STREQUAL "std_thread")
|
||||
config_define(1 _LIBCPP_PSTL_CPU_BACKEND_THREAD)
|
||||
elseif(LIBCXX_PSTL_CPU_BACKEND STREQUAL "libdispatch")
|
||||
config_define(1 _LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH)
|
||||
if (LIBCXX_PSTL_BACKEND STREQUAL "serial")
|
||||
config_define(1 _LIBCPP_PSTL_BACKEND_SERIAL)
|
||||
elseif(LIBCXX_PSTL_BACKEND STREQUAL "std_thread")
|
||||
config_define(1 _LIBCPP_PSTL_BACKEND_STD_THREAD)
|
||||
elseif(LIBCXX_PSTL_BACKEND STREQUAL "libdispatch")
|
||||
config_define(1 _LIBCPP_PSTL_BACKEND_LIBDISPATCH)
|
||||
else()
|
||||
message(FATAL_ERROR "LIBCXX_PSTL_CPU_BACKEND is set to ${LIBCXX_PSTL_CPU_BACKEND}, which is not a valid backend.
|
||||
message(FATAL_ERROR "LIBCXX_PSTL_BACKEND is set to ${LIBCXX_PSTL_BACKEND}, which is not a valid backend.
|
||||
Valid backends are: serial, std_thread and libdispatch")
|
||||
endif()
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
|
||||
set(LIBCXX_ENABLE_SHARED ON CACHE BOOL "")
|
||||
set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
|
||||
set(LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS ON CACHE BOOL "")
|
||||
set(LIBCXX_PSTL_CPU_BACKEND libdispatch CACHE STRING "")
|
||||
set(LIBCXX_PSTL_BACKEND libdispatch CACHE STRING "")
|
||||
|
||||
set(LIBCXX_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "")
|
||||
set(LIBCXXABI_HERMETIC_STATIC_LIBRARY ON CACHE BOOL "")
|
||||
|
||||
@@ -73,18 +73,12 @@ set(files
|
||||
__algorithm/pop_heap.h
|
||||
__algorithm/prev_permutation.h
|
||||
__algorithm/pstl_any_all_none_of.h
|
||||
__algorithm/pstl_backend.h
|
||||
__algorithm/pstl_backends/cpu_backend.h
|
||||
__algorithm/pstl_backends/cpu_backends/any_of.h
|
||||
__algorithm/pstl_backends/cpu_backends/backend.h
|
||||
__algorithm/pstl_backends/cpu_backends/fill.h
|
||||
__algorithm/pstl_backends/cpu_backends/find_if.h
|
||||
__algorithm/pstl_backends/cpu_backends/for_each.h
|
||||
__algorithm/pstl_backends/cpu_backends/libdispatch.h
|
||||
__algorithm/pstl_backends/cpu_backends/merge.h
|
||||
__algorithm/pstl_backends/cpu_backends/serial.h
|
||||
__algorithm/pstl_backends/cpu_backends/stable_sort.h
|
||||
__algorithm/pstl_backends/cpu_backends/thread.h
|
||||
__algorithm/pstl_backends/cpu_backends/transform.h
|
||||
__algorithm/pstl_backends/cpu_backends/transform_reduce.h
|
||||
__algorithm/pstl_copy.h
|
||||
@@ -594,6 +588,11 @@ set(files
|
||||
__numeric/transform_exclusive_scan.h
|
||||
__numeric/transform_inclusive_scan.h
|
||||
__numeric/transform_reduce.h
|
||||
__pstl/backends/libdispatch.h
|
||||
__pstl/backends/serial.h
|
||||
__pstl/backends/std_thread.h
|
||||
__pstl/configuration.h
|
||||
__pstl/configuration_fwd.h
|
||||
__pstl/cpu_algos/cpu_traits.h
|
||||
__random/bernoulli_distribution.h
|
||||
__random/binomial_distribution.h
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H
|
||||
|
||||
#include <__algorithm/pstl_backends/cpu_backends/any_of.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/fill.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/find_if.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/for_each.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/merge.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/stable_sort.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform_reduce.h>
|
||||
#include <__config>
|
||||
|
||||
#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H
|
||||
@@ -11,12 +11,12 @@
|
||||
|
||||
#include <__algorithm/any_of.h>
|
||||
#include <__algorithm/find_if.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__atomic/atomic.h>
|
||||
#include <__atomic/memory_order.h>
|
||||
#include <__config>
|
||||
#include <__functional/operations.h>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/move.h>
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_BACKEND_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_BACKEND_H
|
||||
|
||||
#include <__config>
|
||||
#include <cstddef>
|
||||
|
||||
#if defined(_LIBCPP_PSTL_CPU_BACKEND_SERIAL)
|
||||
# include <__algorithm/pstl_backends/cpu_backends/serial.h>
|
||||
#elif defined(_LIBCPP_PSTL_CPU_BACKEND_THREAD)
|
||||
# include <__algorithm/pstl_backends/cpu_backends/thread.h>
|
||||
#elif defined(_LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH)
|
||||
# include <__algorithm/pstl_backends/cpu_backends/libdispatch.h>
|
||||
#else
|
||||
# error "Invalid CPU backend choice"
|
||||
#endif
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
# if defined(_LIBCPP_PSTL_CPU_BACKEND_SERIAL)
|
||||
using __cpu_backend_tag = __pstl::__serial_backend_tag;
|
||||
# elif defined(_LIBCPP_PSTL_CPU_BACKEND_THREAD)
|
||||
using __cpu_backend_tag = __pstl::__std_thread_backend_tag;
|
||||
# elif defined(_LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH)
|
||||
using __cpu_backend_tag = __pstl::__libdispatch_backend_tag;
|
||||
# endif
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && && _LIBCPP_STD_VER >= 17
|
||||
|
||||
#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_BACKEND_H
|
||||
@@ -10,9 +10,9 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FILL_H
|
||||
|
||||
#include <__algorithm/fill.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__config>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/empty.h>
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_FIND_IF_H
|
||||
|
||||
#include <__algorithm/find_if.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__atomic/atomic.h>
|
||||
#include <__config>
|
||||
#include <__functional/operations.h>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/move.h>
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKNEDS_FOR_EACH_H
|
||||
|
||||
#include <__algorithm/for_each.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__config>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/empty.h>
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_MERGE_H
|
||||
|
||||
#include <__algorithm/merge.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__config>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/move.h>
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_STABLE_SORT_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_STABLE_SORT_H
|
||||
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__algorithm/stable_sort.h>
|
||||
#include <__config>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/empty.h>
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_H
|
||||
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__algorithm/transform.h>
|
||||
#include <__config>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_REDUCE_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_TRANSFORM_REDUCE_H
|
||||
|
||||
#include <__algorithm/pstl_backends/cpu_backends/backend.h>
|
||||
#include <__config>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__numeric/transform_reduce.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__type_traits/desugars_to.h>
|
||||
#include <__type_traits/is_arithmetic.h>
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_COPY_H
|
||||
|
||||
#include <__algorithm/copy_n.h>
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__algorithm/pstl_transform.h>
|
||||
#include <__config>
|
||||
#include <__functional/identity.h>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_constant_evaluated.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
|
||||
#include <__algorithm/count.h>
|
||||
#include <__algorithm/for_each.h>
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_for_each.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__atomic/atomic.h>
|
||||
@@ -20,6 +19,7 @@
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__numeric/pstl_transform_reduce.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
|
||||
#include <__algorithm/comp.h>
|
||||
#include <__algorithm/find.h>
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__config>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
|
||||
#include <__algorithm/for_each.h>
|
||||
#include <__algorithm/for_each_n.h>
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__config>
|
||||
#include <__iterator/concepts.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_GENERATE_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_GENERATE_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_for_each.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__config>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_IS_PARITTIONED
|
||||
|
||||
#include <__algorithm/pstl_any_all_none_of.h>
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_find.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__config>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_MERGE_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_MERGE_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__config>
|
||||
#include <__functional/operations.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
#define _LIBCPP___ALGORITHM_PSTL_MOVE_H
|
||||
|
||||
#include <__algorithm/copy_n.h>
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__algorithm/pstl_transform.h>
|
||||
#include <__config>
|
||||
#include <__functional/identity.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_constant_evaluated.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_REPLACE_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_REPLACE_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_for_each.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__algorithm/pstl_transform.h>
|
||||
#include <__config>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__iterator/iterator_traits.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
#include <__utility/move.h>
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_ROTATE_COPY_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_ROTATE_COPY_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_copy.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <optional>
|
||||
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_SORT_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_SORT_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__algorithm/pstl_stable_sort.h>
|
||||
#include <__config>
|
||||
#include <__functional/operations.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
#include <__utility/empty.h>
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_STABLE_SORT_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_STABLE_SORT_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__config>
|
||||
#include <__functional/operations.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_TRANSFORM_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_TRANSFORM_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__config>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/enable_if.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__type_traits/remove_cvref.h>
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
#cmakedefine _LIBCPP_INSTRUMENTED_WITH_ASAN
|
||||
|
||||
// PSTL backends
|
||||
#cmakedefine _LIBCPP_PSTL_CPU_BACKEND_SERIAL
|
||||
#cmakedefine _LIBCPP_PSTL_CPU_BACKEND_THREAD
|
||||
#cmakedefine _LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH
|
||||
#cmakedefine _LIBCPP_PSTL_BACKEND_SERIAL
|
||||
#cmakedefine _LIBCPP_PSTL_BACKEND_STD_THREAD
|
||||
#cmakedefine _LIBCPP_PSTL_BACKEND_LIBDISPATCH
|
||||
|
||||
// Hardening.
|
||||
#cmakedefine _LIBCPP_HARDENING_MODE_DEFAULT @_LIBCPP_HARDENING_MODE_DEFAULT@
|
||||
|
||||
@@ -9,12 +9,12 @@
|
||||
#ifndef _LIBCPP___NUMERIC_PSTL_TRANSFORM_REDUCE_H
|
||||
#define _LIBCPP___NUMERIC_PSTL_TRANSFORM_REDUCE_H
|
||||
|
||||
#include <__algorithm/pstl_backend.h>
|
||||
#include <__algorithm/pstl_frontend_dispatch.h>
|
||||
#include <__config>
|
||||
#include <__functional/operations.h>
|
||||
#include <__iterator/cpp17_iterator_concepts.h>
|
||||
#include <__numeric/transform_reduce.h>
|
||||
#include <__pstl/configuration.h>
|
||||
#include <__type_traits/is_execution_policy.h>
|
||||
#include <__utility/move.h>
|
||||
#include <optional>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_LIBDISPATCH_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_LIBDISPATCH_H
|
||||
#ifndef _LIBCPP___PSTL_BACKENDS_LIBDISPATCH_H
|
||||
#define _LIBCPP___PSTL_BACKENDS_LIBDISPATCH_H
|
||||
|
||||
#include <__algorithm/inplace_merge.h>
|
||||
#include <__algorithm/lower_bound.h>
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <__memory/construct_at.h>
|
||||
#include <__memory/unique_ptr.h>
|
||||
#include <__numeric/reduce.h>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__utility/empty.h>
|
||||
#include <__utility/exception_guard.h>
|
||||
@@ -40,8 +41,6 @@ _LIBCPP_PUSH_MACROS
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
namespace __pstl {
|
||||
|
||||
struct __libdispatch_backend_tag {};
|
||||
|
||||
namespace __libdispatch {
|
||||
// ::dispatch_apply is marked as __attribute__((nothrow)) because it doesn't let exceptions propagate, and neither do
|
||||
// we.
|
||||
@@ -349,4 +348,14 @@ _LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
_LIBCPP_POP_MACROS
|
||||
|
||||
#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_LIBDISPATCH_H
|
||||
// Implement PSTL algorithms based on the __cpu_traits specialized above
|
||||
#include <__algorithm/pstl_backends/cpu_backends/any_of.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/fill.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/find_if.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/for_each.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/merge.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/stable_sort.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform_reduce.h>
|
||||
|
||||
#endif // _LIBCPP___PSTL_BACKENDS_LIBDISPATCH_H
|
||||
@@ -7,10 +7,11 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_SERIAL_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_SERIAL_H
|
||||
#ifndef _LIBCPP___PSTL_BACKENDS_SERIAL_H
|
||||
#define _LIBCPP___PSTL_BACKENDS_SERIAL_H
|
||||
|
||||
#include <__config>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__utility/empty.h>
|
||||
#include <__utility/move.h>
|
||||
@@ -29,8 +30,6 @@ _LIBCPP_PUSH_MACROS
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
namespace __pstl {
|
||||
|
||||
struct __serial_backend_tag {};
|
||||
|
||||
template <>
|
||||
struct __cpu_traits<__serial_backend_tag> {
|
||||
template <class _RandomAccessIterator, class _Fp>
|
||||
@@ -82,4 +81,14 @@ _LIBCPP_POP_MACROS
|
||||
|
||||
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && && _LIBCPP_STD_VER >= 17
|
||||
|
||||
#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_SERIAL_H
|
||||
// Implement PSTL algorithms based on the __cpu_traits specialized above
|
||||
#include <__algorithm/pstl_backends/cpu_backends/any_of.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/fill.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/find_if.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/for_each.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/merge.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/stable_sort.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform_reduce.h>
|
||||
|
||||
#endif // _LIBCPP___PSTL_BACKENDS_SERIAL_H
|
||||
@@ -6,11 +6,12 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_THREAD_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_THREAD_H
|
||||
#ifndef _LIBCPP___PSTL_BACKENDS_STD_THREAD_H
|
||||
#define _LIBCPP___PSTL_BACKENDS_STD_THREAD_H
|
||||
|
||||
#include <__assert>
|
||||
#include <__config>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
#include <__pstl/cpu_algos/cpu_traits.h>
|
||||
#include <__utility/empty.h>
|
||||
#include <__utility/move.h>
|
||||
@@ -32,8 +33,6 @@ _LIBCPP_PUSH_MACROS
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
namespace __pstl {
|
||||
|
||||
struct __std_thread_backend_tag {};
|
||||
|
||||
template <>
|
||||
struct __cpu_traits<__std_thread_backend_tag> {
|
||||
template <class _RandomAccessIterator, class _Fp>
|
||||
@@ -85,4 +84,14 @@ _LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
_LIBCPP_POP_MACROS
|
||||
|
||||
#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKENDS_THREAD_H
|
||||
// Implement PSTL algorithms based on the __cpu_traits specialized above
|
||||
#include <__algorithm/pstl_backends/cpu_backends/any_of.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/fill.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/find_if.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/for_each.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/merge.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/stable_sort.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/transform_reduce.h>
|
||||
|
||||
#endif // _LIBCPP___PSTL_BACKENDS_STD_THREAD_H
|
||||
27
libcxx/include/__pstl/configuration.h
Normal file
27
libcxx/include/__pstl/configuration.h
Normal file
@@ -0,0 +1,27 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___PSTL_CONFIGURATION_H
|
||||
#define _LIBCPP___PSTL_CONFIGURATION_H
|
||||
|
||||
#include <__config>
|
||||
#include <__pstl/configuration_fwd.h>
|
||||
|
||||
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
||||
# pragma GCC system_header
|
||||
#endif
|
||||
|
||||
#if defined(_LIBCPP_PSTL_BACKEND_SERIAL)
|
||||
# include <__pstl/backends/serial.h>
|
||||
#elif defined(_LIBCPP_PSTL_BACKEND_STD_THREAD)
|
||||
# include <__pstl/backends/std_thread.h>
|
||||
#elif defined(_LIBCPP_PSTL_BACKEND_LIBDISPATCH)
|
||||
# include <__pstl/backends/libdispatch.h>
|
||||
#endif
|
||||
|
||||
#endif // _LIBCPP___PSTL_CONFIGURATION_H
|
||||
@@ -6,10 +6,9 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef _LIBCPP___ALGORITHM_PSTL_BACKEND_H
|
||||
#define _LIBCPP___ALGORITHM_PSTL_BACKEND_H
|
||||
#ifndef _LIBCPP___PSTL_CONFIGURATION_FWD_H
|
||||
#define _LIBCPP___PSTL_CONFIGURATION_FWD_H
|
||||
|
||||
#include <__algorithm/pstl_backends/cpu_backend.h>
|
||||
#include <__config>
|
||||
#include <execution>
|
||||
|
||||
@@ -191,6 +190,20 @@ into a program termination at the front-end level. When a backend returns a dise
|
||||
frontend will turn that into a call to `std::__throw_bad_alloc();` to report the internal failure to the user.
|
||||
*/
|
||||
|
||||
namespace __pstl {
|
||||
struct __libdispatch_backend_tag {};
|
||||
struct __serial_backend_tag {};
|
||||
struct __std_thread_backend_tag {};
|
||||
} // namespace __pstl
|
||||
|
||||
# if defined(_LIBCPP_PSTL_BACKEND_SERIAL)
|
||||
using __cpu_backend_tag = __pstl::__serial_backend_tag;
|
||||
# elif defined(_LIBCPP_PSTL_BACKEND_STD_THREAD)
|
||||
using __cpu_backend_tag = __pstl::__std_thread_backend_tag;
|
||||
# elif defined(_LIBCPP_PSTL_BACKEND_LIBDISPATCH)
|
||||
using __cpu_backend_tag = __pstl::__libdispatch_backend_tag;
|
||||
# endif
|
||||
|
||||
template <class _ExecutionPolicy>
|
||||
struct __select_backend;
|
||||
|
||||
@@ -206,8 +219,8 @@ struct __select_backend<std::execution::unsequenced_policy> {
|
||||
};
|
||||
# endif
|
||||
|
||||
# if defined(_LIBCPP_PSTL_CPU_BACKEND_SERIAL) || defined(_LIBCPP_PSTL_CPU_BACKEND_THREAD) || \
|
||||
defined(_LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH)
|
||||
# if defined(_LIBCPP_PSTL_BACKEND_SERIAL) || defined(_LIBCPP_PSTL_BACKEND_STD_THREAD) || \
|
||||
defined(_LIBCPP_PSTL_BACKEND_LIBDISPATCH)
|
||||
template <>
|
||||
struct __select_backend<std::execution::parallel_policy> {
|
||||
using type = __cpu_backend_tag;
|
||||
@@ -229,4 +242,4 @@ _LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
#endif // !defined(_LIBCPP_HAS_NO_INCOMPLETE_PSTL) && _LIBCPP_STD_VER >= 17
|
||||
|
||||
#endif // _LIBCPP___ALGORITHM_PSTL_BACKEND_H
|
||||
#endif // _LIBCPP___PSTL_CONFIGURATION_FWD_H
|
||||
@@ -73,18 +73,12 @@
|
||||
{ include: [ "<__algorithm/pop_heap.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/prev_permutation.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_any_all_none_of.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backend.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backend.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/any_of.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/backend.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/fill.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/find_if.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/for_each.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/libdispatch.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/merge.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/serial.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/stable_sort.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/thread.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/transform.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_backends/cpu_backends/transform_reduce.h>", "private", "<algorithm>", "public" ] },
|
||||
{ include: [ "<__algorithm/pstl_copy.h>", "private", "<algorithm>", "public" ] },
|
||||
|
||||
@@ -714,32 +714,14 @@ module std_private_algorithm_partition_point [system
|
||||
module std_private_algorithm_pop_heap [system] { header "__algorithm/pop_heap.h" }
|
||||
module std_private_algorithm_prev_permutation [system] { header "__algorithm/prev_permutation.h" }
|
||||
module std_private_algorithm_pstl_any_all_none_of [system] { header "__algorithm/pstl_any_all_none_of.h" }
|
||||
module std_private_algorithm_pstl_backend [system] {
|
||||
header "__algorithm/pstl_backend.h"
|
||||
export *
|
||||
}
|
||||
module std_private_algorithm_pstl_backends_cpu_backend [system] {
|
||||
header "__algorithm/pstl_backends/cpu_backend.h"
|
||||
export *
|
||||
}
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_any_of [system] { header "__algorithm/pstl_backends/cpu_backends/any_of.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_backend [system] {
|
||||
header "__algorithm/pstl_backends/cpu_backends/backend.h"
|
||||
export *
|
||||
}
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_fill [system] { header "__algorithm/pstl_backends/cpu_backends/fill.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_find_if [system] { header "__algorithm/pstl_backends/cpu_backends/find_if.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_for_each [system] { header "__algorithm/pstl_backends/cpu_backends/for_each.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_libdispatch [system] { header "__algorithm/pstl_backends/cpu_backends/libdispatch.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_merge [system] { header "__algorithm/pstl_backends/cpu_backends/merge.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_serial [system] { textual header "__algorithm/pstl_backends/cpu_backends/serial.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_stable_sort [system] { header "__algorithm/pstl_backends/cpu_backends/stable_sort.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_thread [system] { textual header "__algorithm/pstl_backends/cpu_backends/thread.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_transform [system] {
|
||||
header "__algorithm/pstl_backends/cpu_backends/transform.h"
|
||||
export std_private_algorithm_transform
|
||||
}
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_transform_reduce [system] { header "__algorithm/pstl_backends/cpu_backends/transform_reduce.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_any_of [system] { textual header "__algorithm/pstl_backends/cpu_backends/any_of.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_fill [system] { textual header "__algorithm/pstl_backends/cpu_backends/fill.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_find_if [system] { textual header "__algorithm/pstl_backends/cpu_backends/find_if.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_for_each [system] { textual header "__algorithm/pstl_backends/cpu_backends/for_each.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_merge [system] { textual header "__algorithm/pstl_backends/cpu_backends/merge.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_stable_sort [system] { textual header "__algorithm/pstl_backends/cpu_backends/stable_sort.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_transform [system] { textual header "__algorithm/pstl_backends/cpu_backends/transform.h" }
|
||||
module std_private_algorithm_pstl_backends_cpu_backends_transform_reduce [system] { textual header "__algorithm/pstl_backends/cpu_backends/transform_reduce.h" }
|
||||
module std_private_algorithm_pstl_copy [system] { header "__algorithm/pstl_copy.h" }
|
||||
module std_private_algorithm_pstl_count [system] { header "__algorithm/pstl_count.h" }
|
||||
module std_private_algorithm_pstl_equal [system] { header "__algorithm/pstl_equal.h" }
|
||||
@@ -1613,7 +1595,18 @@ module std_private_numeric_transform_exclusive_scan [system] { header "__numeric
|
||||
module std_private_numeric_transform_inclusive_scan [system] { header "__numeric/transform_inclusive_scan.h" }
|
||||
module std_private_numeric_transform_reduce [system] { header "__numeric/transform_reduce.h" }
|
||||
|
||||
module std_private_pstl_cpu_algos_cpu_traits [system] { header "__pstl/cpu_algos/cpu_traits.h" }
|
||||
module std_private_pstl_backends_libdispatch [system] { header "__pstl/backends/libdispatch.h" }
|
||||
module std_private_pstl_backends_serial [system] { header "__pstl/backends/serial.h" }
|
||||
module std_private_pstl_backends_std_thread [system] { header "__pstl/backends/std_thread.h" }
|
||||
module std_private_pstl_cpu_algos_cpu_traits [system] { header "__pstl/cpu_algos/cpu_traits.h" }
|
||||
module std_private_pstl_configuration_fwd [system] {
|
||||
header "__pstl/configuration_fwd.h"
|
||||
export *
|
||||
}
|
||||
module std_private_pstl_configuration [system] {
|
||||
header "__pstl/configuration.h"
|
||||
export *
|
||||
}
|
||||
|
||||
module std_private_queue_fwd [system] { header "__fwd/queue.h" }
|
||||
|
||||
|
||||
@@ -327,7 +327,7 @@ set(LIBCXX_EXPERIMENTAL_SOURCES
|
||||
experimental/keep.cpp
|
||||
)
|
||||
|
||||
if (LIBCXX_PSTL_CPU_BACKEND STREQUAL "libdispatch")
|
||||
if (LIBCXX_PSTL_BACKEND STREQUAL "libdispatch")
|
||||
list(APPEND LIBCXX_EXPERIMENTAL_SOURCES
|
||||
pstl/libdispatch.cpp
|
||||
)
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <__algorithm/min.h>
|
||||
#include <__algorithm/pstl_backends/cpu_backends/libdispatch.h>
|
||||
#include <__config>
|
||||
#include <__pstl/backends/libdispatch.h>
|
||||
#include <dispatch/dispatch.h>
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
|
||||
// <algorithm>
|
||||
|
||||
// REQUIRES: libcpp-pstl-cpu-backend-libdispatch
|
||||
// REQUIRES: libcpp-pstl-backend-libdispatch
|
||||
|
||||
// __chunk_partitions __partition_chunks(ptrdiff_t);
|
||||
|
||||
#include <__algorithm/pstl_backends/cpu_backends/libdispatch.h>
|
||||
#include <__pstl/backends/libdispatch.h>
|
||||
#include <cassert>
|
||||
#include <cstddef>
|
||||
|
||||
|
||||
@@ -45,4 +45,4 @@
|
||||
|
||||
// Make sure we use the libdispatch backend for the PSTL.
|
||||
//
|
||||
// RUN: grep "%{include-dir}/__config_site" -e '#define _LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH'
|
||||
// RUN: grep "%{include-dir}/__config_site" -e '#define _LIBCPP_PSTL_BACKEND_LIBDISPATCH'
|
||||
|
||||
@@ -318,7 +318,7 @@ macros = {
|
||||
"_LIBCPP_HAS_NO_WIDE_CHARACTERS": "no-wide-characters",
|
||||
"_LIBCPP_HAS_NO_TIME_ZONE_DATABASE": "no-tzdb",
|
||||
"_LIBCPP_HAS_NO_UNICODE": "libcpp-has-no-unicode",
|
||||
"_LIBCPP_PSTL_CPU_BACKEND_LIBDISPATCH": "libcpp-pstl-cpu-backend-libdispatch",
|
||||
"_LIBCPP_PSTL_BACKEND_LIBDISPATCH": "libcpp-pstl-backend-libdispatch",
|
||||
}
|
||||
for macro, feature in macros.items():
|
||||
DEFAULT_FEATURES.append(
|
||||
|
||||
Reference in New Issue
Block a user