24 #ifndef CRYPTOPP_CONFIG_CPU_H
25 #define CRYPTOPP_CONFIG_CPU_H
29 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
44 #define CRYPTOPP_BOOL_X32 ...
48 #define CRYPTOPP_BOOL_X64 ...
52 #define CRYPTOPP_BOOL_X86 ...
53 #elif (defined(__ILP32__) || defined(_ILP32)) && defined(__x86_64__)
54 #define CRYPTOPP_BOOL_X32 1
55 #elif (defined(_M_X64) || defined(__x86_64__))
56 #define CRYPTOPP_BOOL_X64 1
57 #elif (defined(_M_IX86) || defined(__i386__) || defined(__i386) || defined(_X86_) || defined(__I86__) || defined(__INTEL__))
58 #define CRYPTOPP_BOOL_X86 1
61 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
67 #define CRYPTOPP_BOOL_ARMV8 ...
72 #define CRYPTOPP_BOOL_ARM64 ...
77 #define CRYPTOPP_BOOL_ARM32 ...
78 #elif defined(__arm64__) || defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64)
80 #define CRYPTOPP_BOOL_ARMV8 1
82 #if defined(__arm64__) || defined(__aarch64__) || defined(_M_ARM64)
83 #define CRYPTOPP_BOOL_ARM64 1
84 #elif defined(__arm__) || defined(_M_ARM)
85 #define CRYPTOPP_BOOL_ARM32 1
88 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
92 #define CRYPTOPP_BOOL_PPC64 ...
96 #define CRYPTOPP_BOOL_PPC32 ...
97 #elif defined(__ppc64__) || defined(__powerpc64__) || defined(__PPC64__) || defined(_ARCH_PPC64)
98 #define CRYPTOPP_BOOL_PPC64 1
99 #elif defined(__powerpc__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC)
100 #define CRYPTOPP_BOOL_PPC32 1
103 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
107 #define CRYPTOPP_BOOL_MIPS64 ...
111 #define CRYPTOPP_BOOL_MIPS32 ...
112 #elif defined(__mips64__)
113 #define CRYPTOPP_BOOL_MIPS64 1
114 #elif defined(__mips__)
115 #define CRYPTOPP_BOOL_MIPS32 1
118 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
122 #define CRYPTOPP_BOOL_SPARC64 ...
126 #define CRYPTOPP_BOOL_SPARC32 ...
127 #elif defined(__sparc64__) || defined(__sparc64) || defined(__sparcv9) || defined(__sparc_v9__)
128 #define CRYPTOPP_BOOL_SPARC64 1
129 #elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8) || defined(__sparc_v8__)
130 #define CRYPTOPP_BOOL_SPARC32 1
133 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
147 #define CRYPTOPP_L1_CACHE_LINE_SIZE ...
149 #ifndef CRYPTOPP_L1_CACHE_LINE_SIZE
150 #if defined(CRYPTOPP_BOOL_X32) || defined(CRYPTOPP_BOOL_X64) || defined(CRYPTOPP_BOOL_ARMV8) || \
151 defined(CRYPTOPP_BOOL_MIPS64) || defined(CRYPTOPP_BOOL_SPARC64)
152 #define CRYPTOPP_L1_CACHE_LINE_SIZE 64
153 #elif defined(CRYPTOPP_BOOL_PPC32) || defined(CRYPTOPP_BOOL_PPC64)
155 #define CRYPTOPP_L1_CACHE_LINE_SIZE 128
158 #define CRYPTOPP_L1_CACHE_LINE_SIZE 32
163 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
168 #define CRYPTOPP_SECTION_INIT ...
171 #if ((defined(__MACH__) && defined(__APPLE__)) && ((CRYPTOPP_LLVM_CLANG_VERSION >= 30600) || \
172 (CRYPTOPP_APPLE_CLANG_VERSION >= 70100) || (CRYPTOPP_GCC_VERSION >= 40300)))
173 #define CRYPTOPP_SECTION_INIT __attribute__((section ("__DATA,__data")))
174 #elif (defined(__ELF__) && (CRYPTOPP_GCC_VERSION >= 40300))
175 #define CRYPTOPP_SECTION_INIT __attribute__((section ("nocommon")))
176 #elif defined(__ELF__) && (defined(__xlC__) || defined(__ibmxl__))
177 #define CRYPTOPP_SECTION_INIT __attribute__((section ("nocommon")))
179 #define CRYPTOPP_SECTION_INIT
191 #if defined(__APPLE__)
192 #define CRYPTOPP_NO_CPU_FEATURE_PROBES 1
196 #if defined(CRYPTOPP_DOXYGEN_PROCESSING)
200 #define CRYPTOPP_MS_STYLE_INLINE_ASSEMBLY ...
204 #define CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY ...
205 #elif defined(CRYPTOPP_MSC_VERSION) || defined(__BORLANDC__) || \
206 defined(CRYPTOPP_MSVC_CLANG_VERSION)
207 #define CRYPTOPP_MS_STYLE_INLINE_ASSEMBLY 1
209 #define CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY 1
Library configuration file.