1 // -*- C++ -*- 2 //===--------------------------- __config ---------------------------------===// 3 // 4 // The LLVM Compiler Infrastructure 5 // 6 // This file is dual licensed under the MIT and the University of Illinois Open 7 // Source Licenses. See LICENSE.TXT for details. 8 // 9 //===----------------------------------------------------------------------===// 10 11 #ifndef _LIBCPP_EXPERIMENTAL_CONFIG 12 #define _LIBCPP_EXPERIMENTAL_CONFIG 13 14 #include <__config> 15 16 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 17 #pragma GCC system_header 18 #endif 19 20 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace std { namespace experimental { 21 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL } } 22 #define _VSTD_EXPERIMENTAL std::experimental 23 24 #define _LIBCPP_BEGIN_NAMESPACE_LFTS _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v1 { 25 #define _LIBCPP_END_NAMESPACE_LFTS } } } 26 #define _VSTD_LFTS _VSTD_EXPERIMENTAL::fundamentals_v1 27 28 #define _LIBCPP_BEGIN_NAMESPACE_LFTS_V2 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v2 { 29 #define _LIBCPP_END_NAMESPACE_LFTS_V2 } } } 30 #define _VSTD_LFTS_V2 _VSTD_EXPERIMENTAL::fundamentals_v2 31 32 #define _LIBCPP_BEGIN_NAMESPACE_LFTS_PMR _LIBCPP_BEGIN_NAMESPACE_LFTS namespace pmr { 33 #define _LIBCPP_END_NAMESPACE_LFTS_PMR _LIBCPP_END_NAMESPACE_LFTS } 34 #define _VSTD_LFTS_PMR _VSTD_LFTS::pmr 35 36 #define _LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS _LIBCPP_BEGIN_NAMESPACE_STD \ 37 namespace chrono { namespace experimental { inline namespace fundamentals_v1 { 38 #define _LIBCPP_END_NAMESPACE_CHRONO_LFTS _LIBCPP_END_NAMESPACE_STD } } } 39 40 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_FILESYSTEM \ 41 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace filesystem { \ 42 inline namespace v1 { 43 44 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_FILESYSTEM \ 45 } } _LIBCPP_END_NAMESPACE_EXPERIMENTAL 46 47 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_COROUTINES \ 48 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace coroutines_v1 { 49 50 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_COROUTINES \ 51 } _LIBCPP_END_NAMESPACE_EXPERIMENTAL 52 53 #define _VSTD_CORO _VSTD_EXPERIMENTAL::coroutines_v1 54 55 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD \ 56 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace parallelism_v2 { 57 58 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD \ 59 } _LIBCPP_END_NAMESPACE_EXPERIMENTAL 60 61 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD_ABI \ 62 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD namespace simd_abi { 63 64 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD_ABI \ 65 } _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD 66 67 // TODO: support more targets 68 #if defined(__AVX__) 69 #define _LIBCPP_NATIVE_SIMD_WIDTH_IN_BYTES 32 70 #else 71 #define _LIBCPP_NATIVE_SIMD_WIDTH_IN_BYTES 16 72 #endif 73 74 #endif 75