Home | History | Annotate | Line # | Download | only in experimental
      1 // -*- C++ -*-
      2 //===--------------------------- __config ---------------------------------===//
      3 //
      4 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
      5 // See https://llvm.org/LICENSE.txt for license information.
      6 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #ifndef _LIBCPP_EXPERIMENTAL_CONFIG
     11 #define _LIBCPP_EXPERIMENTAL_CONFIG
     12 
     13 #include <__config>
     14 
     15 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
     16 #pragma GCC system_header
     17 #endif
     18 
     19 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace std { namespace experimental {
     20 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL  } }
     21 #define _VSTD_EXPERIMENTAL std::experimental
     22 
     23 #define _LIBCPP_BEGIN_NAMESPACE_LFTS _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v1 {
     24 #define _LIBCPP_END_NAMESPACE_LFTS  } } }
     25 #define _VSTD_LFTS _VSTD_EXPERIMENTAL::fundamentals_v1
     26 
     27 #define _LIBCPP_BEGIN_NAMESPACE_LFTS_V2 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v2 {
     28 #define _LIBCPP_END_NAMESPACE_LFTS_V2  } } }
     29 #define _VSTD_LFTS_V2 _VSTD_EXPERIMENTAL::fundamentals_v2
     30 
     31 #define _LIBCPP_BEGIN_NAMESPACE_LFTS_PMR _LIBCPP_BEGIN_NAMESPACE_LFTS namespace pmr {
     32 #define _LIBCPP_END_NAMESPACE_LFTS_PMR _LIBCPP_END_NAMESPACE_LFTS }
     33 #define _VSTD_LFTS_PMR _VSTD_LFTS::pmr
     34 
     35 #if defined(_LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM)
     36 #   define _LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM /* nothing */
     37 #else
     38 #   define _LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM __attribute__((deprecated("std::experimental::filesystem has now been deprecated in favor of C++17's std::filesystem. Please stop using it and start using std::filesystem. This experimental version will be removed in LLVM 11. You can remove this warning by defining the _LIBCPP_NO_EXPERIMENTAL_DEPRECATION_WARNING_FILESYSTEM macro.")))
     39 #endif
     40 
     41 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_FILESYSTEM \
     42     _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace filesystem _LIBCPP_DEPRECATED_EXPERIMENTAL_FILESYSTEM { \
     43     inline namespace v1 {
     44 
     45 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_FILESYSTEM \
     46     } } _LIBCPP_END_NAMESPACE_EXPERIMENTAL
     47 
     48 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_COROUTINES \
     49   _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace coroutines_v1 {
     50 
     51 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_COROUTINES \
     52   } _LIBCPP_END_NAMESPACE_EXPERIMENTAL
     53 
     54 #define _VSTD_CORO _VSTD_EXPERIMENTAL::coroutines_v1
     55 
     56 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD \
     57     _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace parallelism_v2 {
     58 
     59 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD \
     60     } _LIBCPP_END_NAMESPACE_EXPERIMENTAL
     61 
     62 #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD_ABI \
     63     _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_SIMD namespace simd_abi {
     64 
     65 #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD_ABI \
     66     } _LIBCPP_END_NAMESPACE_EXPERIMENTAL_SIMD
     67 
     68 // TODO: support more targets
     69 #if defined(__AVX__)
     70 #define _LIBCPP_NATIVE_SIMD_WIDTH_IN_BYTES 32
     71 #else
     72 #define _LIBCPP_NATIVE_SIMD_WIDTH_IN_BYTES 16
     73 #endif
     74 
     75 #endif
     76