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