3 #ifndef CDSLIB_COMPILER_ICL_DEFS_H
4 #define CDSLIB_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) || defined(__amd64__) || defined(__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) || defined(__i386__) || defined(__i386)
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
83 #define CDS_NOEXCEPT_SUPPORT noexcept
84 #define CDS_NOEXCEPT_SUPPORT_(expr) noexcept(expr)
86 // C++11 inline namespace
87 #define CDS_CXX11_INLINE_NAMESPACE_SUPPORT
89 // Inheriting constructors
90 #define CDS_CXX11_INHERITING_CTOR
92 // *************************************************
95 #if CDS_OS_INTERFACE == CDS_OSI_WINDOWS
96 # define CDS_TYPE_ALIGNMENT(n) __declspec( align(n) )
97 # define CDS_DATA_ALIGNMENT(n) __declspec( align(n) )
98 # define CDS_CLASS_ALIGNMENT(n) __declspec( align(n) )
100 # define CDS_TYPE_ALIGNMENT(n) __attribute__ ((aligned (n)))
101 # define CDS_CLASS_ALIGNMENT(n) __attribute__ ((aligned (n)))
102 # define CDS_DATA_ALIGNMENT(n) __attribute__ ((aligned (n)))
105 #include <cds/compiler/icl/compiler_barriers.h>
108 #endif // #ifndef CDSLIB_COMPILER_VC_DEFS_H