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