]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/libc++/include/experimental/__config
Merge clang 7.0.1 and several follow-up changes
[FreeBSD/FreeBSD.git] / contrib / libc++ / include / experimental / __config
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