
Currently, CPU backends in the PSTL are created by defining functions in the __par_backend namespace. Then, the PSTL includes the CPU backend that gets configured via CMake and gets those definitions. This prevents CPU backends from easily co-existing and is a bit confusing. To solve this problem, this patch introduces the notion of __cpu_traits, which is a cheap encapsulation of the basis operations required to implement a CPU-based PSTL. Different backends can now define their own tag and coexist, and the CPU-based PSTL will simply use __cpu_traits to dispatch to the right implementation of e.g. __for_each. Note that this patch doesn't change the actual implementation of the backends in any way, it only modifies how that implementation is accessed to implement PSTL algorithms. This patch is a step towards #88131.
24 lines
1.1 KiB
C
24 lines
1.1 KiB
C
//===----------------------------------------------------------------------===//
|
|
//
|
|
// 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
|