3 #ifndef __CDS_COMPILER_ICL_DEFS_H
4 #define __CDS_COMPILER_ICL_DEFS_H
9 # define CDS_COMPILER_VERSION __ICL
11 # define CDS_COMPILER_VERSION __INTEL_COMPILER
15 // Supported compilers: MS VC 2008, 2010, 2012
17 # define CDS_COMPILER__NAME "Intel C++"
18 # define CDS_COMPILER__NICK "icl"
22 # define CDS_OS_INTERFACE CDS_OSI_WINDOWS
23 # define CDS_OS_TYPE CDS_OS_WIN64
24 # define CDS_OS__NAME "Win64"
25 # define CDS_OS__NICK "Win64"
27 # define CDS_OS_INTERFACE CDS_OSI_WINDOWS
28 # define CDS_OS_TYPE CDS_OS_WIN32
29 # define CDS_OS__NAME "Win32"
30 # define CDS_OS__NICK "Win32"
31 #elif defined( __linux__ )
32 # define CDS_OS_INTERFACE CDS_OSI_UNIX
33 # define CDS_OS_TYPE CDS_OS_LINUX
34 # define CDS_OS__NAME "linux"
35 # define CDS_OS__NICK "linux"
38 // Processor architecture
39 #if defined(_M_X64) || defined(_M_AMD64)
40 # define CDS_BUILD_BITS 64
41 # define CDS_PROCESSOR_ARCH CDS_PROCESSOR_AMD64
42 # define CDS_PROCESSOR__NAME "AMD64"
43 # define CDS_PROCESSOR__NICK "amd64"
44 #elif defined(_M_IX86)
45 # define CDS_BUILD_BITS 32
46 # define CDS_PROCESSOR_ARCH CDS_PROCESSOR_X86
47 # define CDS_PROCESSOR__NAME "Intel x86"
48 # define CDS_PROCESSOR__NICK "x86"
50 # define CDS_BUILD_BITS -1
51 # define CDS_PROCESSOR_ARCH CDS_PROCESSOR_UNKNOWN
52 # define CDS_PROCESSOR__NAME "<<Undefined>>"
53 # error Intel C++ compiler is supported for x86 only
56 #if CDS_OS_INTERFACE == CDS_OSI_WINDOWS
57 # define __attribute__( _x )
58 # define CDS_STDCALL __stdcall
60 # if CDS_PROCESSOR_ARCH == CDS_PROCESSOR_X86
61 # define CDS_STDCALL __attribute__((stdcall))
67 #if CDS_OS_INTERFACE == CDS_OSI_WINDOWS
69 # define CDS_EXPORT_API __declspec(dllexport)
71 # define CDS_EXPORT_API __declspec(dllimport)
75 #if CDS_OS_INTERFACE == CDS_OSI_WINDOWS
76 # define alignof __alignof
78 # define alignof __alignof__
81 #define CDS_CONSTEXPR constexpr
82 #define CDS_CONSTEXPR_CONST constexpr const
84 #define CDS_NOEXCEPT_SUPPORT noexcept
85 #define CDS_NOEXCEPT_SUPPORT_(expr) noexcept(expr)
88 #define CDS_CXX11_LAMBDA_SUPPORT
91 #define CDS_RVALUE_SUPPORT
92 #define CDS_MOVE_SEMANTICS_SUPPORT
94 // Default template arguments for function templates (ICL 12.1+)
95 #define CDS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS_SUPPORT
97 // C++11 delete definition ( function declaration = delete)
98 #define CDS_CXX11_DELETE_DEFINITION_SUPPORT
100 // C++11 explicitly-defaulted function (= default) [std 8.4.2 [dcl.fct.def.default]]
101 #define CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT
103 // Variadic template support (ICL 12.1+)
104 #define CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT 1
106 // C++11 inline namespace
107 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
109 // *************************************************
112 #if CDS_OS_INTERFACE == CDS_OSI_WINDOWS
113 # define CDS_TYPE_ALIGNMENT(n) __declspec( align(n) )
114 # define CDS_DATA_ALIGNMENT(n) __declspec( align(n) )
115 # define CDS_CLASS_ALIGNMENT(n) __declspec( align(n) )
117 # define CDS_TYPE_ALIGNMENT(n) __attribute__ ((aligned (n)))
118 # define CDS_CLASS_ALIGNMENT(n) __attribute__ ((aligned (n)))
119 # define CDS_DATA_ALIGNMENT(n) __attribute__ ((aligned (n)))
122 #include <cds/compiler/icl/compiler_barriers.h>
125 #endif // #ifndef __CDS_COMPILER_VC_DEFS_H