xref: /openbsd-src/gnu/llvm/libcxx/include/experimental/__config (revision 4bdff4bed0e3d54e55670334c7d0077db4170f86)
146035553Spatrick// -*- C++ -*-
2*4bdff4beSrobert//===----------------------------------------------------------------------===//
346035553Spatrick//
446035553Spatrick// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
546035553Spatrick// See https://llvm.org/LICENSE.txt for license information.
646035553Spatrick// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
746035553Spatrick//
846035553Spatrick//===----------------------------------------------------------------------===//
946035553Spatrick
1046035553Spatrick#ifndef _LIBCPP_EXPERIMENTAL_CONFIG
1146035553Spatrick#define _LIBCPP_EXPERIMENTAL_CONFIG
1246035553Spatrick
1346035553Spatrick#include <__config>
1446035553Spatrick
1546035553Spatrick#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
1646035553Spatrick#  pragma GCC system_header
1746035553Spatrick#endif
1846035553Spatrick
1946035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace std { namespace experimental {
2046035553Spatrick#define _LIBCPP_END_NAMESPACE_EXPERIMENTAL  } }
2146035553Spatrick#define _VSTD_EXPERIMENTAL std::experimental
2246035553Spatrick
2346035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_LFTS _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v1 {
2446035553Spatrick#define _LIBCPP_END_NAMESPACE_LFTS  } } }
2546035553Spatrick#define _VSTD_LFTS _VSTD_EXPERIMENTAL::fundamentals_v1
2646035553Spatrick
2746035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_LFTS_V2 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v2 {
2846035553Spatrick#define _LIBCPP_END_NAMESPACE_LFTS_V2  } } }
2946035553Spatrick#define _VSTD_LFTS_V2 _VSTD_EXPERIMENTAL::fundamentals_v2
3046035553Spatrick
3146035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_LFTS_PMR _LIBCPP_BEGIN_NAMESPACE_LFTS namespace pmr {
3246035553Spatrick#define _LIBCPP_END_NAMESPACE_LFTS_PMR _LIBCPP_END_NAMESPACE_LFTS }
3346035553Spatrick#define _VSTD_LFTS_PMR _VSTD_LFTS::pmr
3446035553Spatrick
35*4bdff4beSrobert#if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L
36*4bdff4beSrobert#define _LIBCPP_HAS_NO_EXPERIMENTAL_COROUTINES
3746035553Spatrick#endif
3846035553Spatrick
3946035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_COROUTINES \
4046035553Spatrick  _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace coroutines_v1 {
4146035553Spatrick
4246035553Spatrick#define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_COROUTINES \
4346035553Spatrick  } _LIBCPP_END_NAMESPACE_EXPERIMENTAL
4446035553Spatrick
4546035553Spatrick#define _VSTD_CORO _VSTD_EXPERIMENTAL::coroutines_v1
4646035553Spatrick
4746035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD \
4846035553Spatrick    _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace parallelism_v2 {
4946035553Spatrick
5046035553Spatrick#define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD \
5146035553Spatrick    } _LIBCPP_END_NAMESPACE_EXPERIMENTAL
5246035553Spatrick
5346035553Spatrick#define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD_ABI \
5446035553Spatrick    _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD namespace simd_abi {
5546035553Spatrick
5646035553Spatrick#define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD_ABI \
5746035553Spatrick    } _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD
5846035553Spatrick
5946035553Spatrick// TODO: support more targets
6046035553Spatrick#if defined(__AVX__)
6146035553Spatrick#define _LIBCPP_NATIVE_SIMD_WIDTH_IN_BYTES 32
6246035553Spatrick#else
6346035553Spatrick#define _LIBCPP_NATIVE_SIMD_WIDTH_IN_BYTES 16
6446035553Spatrick#endif
6546035553Spatrick
6646035553Spatrick#endif
67