aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include/__algorithm/pstl_backends/cpu_backend.h
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include/__algorithm/pstl_backends/cpu_backend.h')
-rw-r--r--libcxx/include/__algorithm/pstl_backends/cpu_backend.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/libcxx/include/__algorithm/pstl_backends/cpu_backend.h b/libcxx/include/__algorithm/pstl_backends/cpu_backend.h
new file mode 100644
index 000000000000..e54f331b9430
--- /dev/null
+++ b/libcxx/include/__algorithm/pstl_backends/cpu_backend.h
@@ -0,0 +1,59 @@
+//===----------------------------------------------------------------------===//
+//
+// 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 <__config>
+
+/*
+
+ // _Functor takes a subrange for [__first, __last) that should be executed in serial
+ template <class _RandomAccessIterator, class _Functor>
+ void __parallel_for(_RandomAccessIterator __first, _RandomAccessIterator __last, _Functor __func);
+
+ template <class _Iterator, class _UnaryOp, class _Tp, class _BinaryOp, class _Reduction>
+ _Tp __parallel_transform_reduce(_Iterator __first, _Iterator __last, _UnaryOp, _Tp __init, _BinaryOp, _Reduction);
+
+ // Cancel the execution of other jobs - they aren't needed anymore
+ void __cancel_execution();
+
+ template <class _RandomAccessIterator1,
+ class _RandomAccessIterator2,
+ class _RandomAccessIterator3,
+ class _Compare,
+ class _LeafMerge>
+ void __parallel_merge(
+ _RandomAccessIterator1 __first1,
+ _RandomAccessIterator1 __last1,
+ _RandomAccessIterator2 __first2,
+ _RandomAccessIterator2 __last2,
+ _RandomAccessIterator3 __outit,
+ _Compare __comp,
+ _LeafMerge __leaf_merge);
+
+ template <class _RandomAccessIterator, class _Comp, class _LeafSort>
+ void __parallel_stable_sort(_RandomAccessIterator __first,
+ _RandomAccessIterator __last,
+ _Comp __comp,
+ _LeafSort __leaf_sort);
+
+ TODO: Document the parallel backend
+*/
+
+#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>
+
+#endif // _LIBCPP___ALGORITHM_PSTL_BACKENDS_CPU_BACKEND_H