15 #ifndef CRYPTOPP_CONFIG_ASM_H 16 #define CRYPTOPP_CONFIG_ASM_H 31 #if defined(__native_client__) 32 # undef CRYPTOPP_DISABLE_ASM 33 # define CRYPTOPP_DISABLE_ASM 1 42 #if defined(__clang__) 43 # undef CRYPTOPP_DISABLE_MIXED_ASM 44 # define CRYPTOPP_DISABLE_MIXED_ASM 1 53 #if (CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32 || CRYPTOPP_BOOL_X64) 56 #if defined(CRYPTOPP_APPLE_CLANG_VERSION) && (CRYPTOPP_APPLE_CLANG_VERSION < 50000) 57 # define CRYPTOPP_DISABLE_ASM 1 62 #if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5100) 63 # define CRYPTOPP_DISABLE_ASM 1 67 #if !defined(CRYPTOPP_DISABLE_ASM) 69 #if (defined(_MSC_VER) && defined(_M_IX86)) || ((defined(__GNUC__) && (defined(__i386__)) || defined(__x86_64__))) 71 #define CRYPTOPP_X86_ASM_AVAILABLE 1 73 #if !defined(CRYPTOPP_DISABLE_SSE2) && (defined(_MSC_VER) || CRYPTOPP_GCC_VERSION >= 30300 || defined(__SSE2__)) 74 #define CRYPTOPP_SSE2_ASM_AVAILABLE 1 77 #if !defined(CRYPTOPP_DISABLE_SSSE3) && (_MSC_VER >= 1500 || CRYPTOPP_GCC_VERSION >= 40300 || defined(__SSSE3__)) 78 #define CRYPTOPP_SSSE3_ASM_AVAILABLE 1 82 #if defined(_MSC_VER) && defined(_M_X64) 83 #define CRYPTOPP_X64_MASM_AVAILABLE 1 86 #if defined(__GNUC__) && defined(__x86_64__) 87 #define CRYPTOPP_X64_ASM_AVAILABLE 1 91 #if !defined(CRYPTOPP_DISABLE_SSE2) && (defined(_MSC_VER) || CRYPTOPP_GCC_VERSION >= 30300 || defined(__SSE2__) || (__SUNPRO_CC >= 0x5100)) 92 #define CRYPTOPP_SSE2_INTRIN_AVAILABLE 1 95 #if !defined(CRYPTOPP_DISABLE_SSSE3) 96 # if defined(__SSSE3__) || (_MSC_VER >= 1500) || \ 97 (CRYPTOPP_GCC_VERSION >= 40300) || (__INTEL_COMPILER >= 1000) || (__SUNPRO_CC >= 0x5110) || \ 98 (CRYPTOPP_LLVM_CLANG_VERSION >= 20300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40000) 99 #define CRYPTOPP_SSSE3_AVAILABLE 1 106 #if !defined(CRYPTOPP_DISABLE_SSE4) && defined(CRYPTOPP_SSSE3_AVAILABLE) && \ 107 (defined(__SSE4_1__) || (CRYPTOPP_MSC_VERSION >= 1500) || \ 108 (CRYPTOPP_GCC_VERSION >= 40300) || (__INTEL_COMPILER >= 1000) || (__SUNPRO_CC >= 0x5110) || \ 109 (CRYPTOPP_LLVM_CLANG_VERSION >= 20300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40000)) 110 #define CRYPTOPP_SSE41_AVAILABLE 1 113 #if !defined(CRYPTOPP_DISABLE_SSE4) && defined(CRYPTOPP_SSSE3_AVAILABLE) && \ 114 (defined(__SSE4_2__) || (CRYPTOPP_MSC_VERSION >= 1500) || (__SUNPRO_CC >= 0x5110) || \ 115 (CRYPTOPP_GCC_VERSION >= 40300) || (__INTEL_COMPILER >= 1000) || \ 116 (CRYPTOPP_LLVM_CLANG_VERSION >= 20300) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40000)) 117 #define CRYPTOPP_SSE42_AVAILABLE 1 122 #if defined(CRYPTOPP_DISABLE_AESNI) 123 #define CRYPTOPP_DISABLE_CLMUL 1 127 #if !defined(CRYPTOPP_DISABLE_CLMUL) && defined(CRYPTOPP_SSE42_AVAILABLE) && \ 128 (defined(__PCLMUL__) || (_MSC_FULL_VER >= 150030729) || (__SUNPRO_CC >= 0x5120) || \ 129 (CRYPTOPP_GCC_VERSION >= 40300) || (__INTEL_COMPILER >= 1110) || \ 130 (CRYPTOPP_LLVM_CLANG_VERSION >= 30200) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300)) 131 #define CRYPTOPP_CLMUL_AVAILABLE 1 135 #if !defined(CRYPTOPP_DISABLE_AESNI) && defined(CRYPTOPP_SSE42_AVAILABLE) && \ 136 (defined(__AES__) || (_MSC_FULL_VER >= 150030729) || (__SUNPRO_CC >= 0x5120) || \ 137 (CRYPTOPP_GCC_VERSION >= 40300) || (__INTEL_COMPILER >= 1110) || \ 138 (CRYPTOPP_LLVM_CLANG_VERSION >= 30200) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40300)) 139 #define CRYPTOPP_AESNI_AVAILABLE 1 143 #if !defined(CRYPTOPP_DISABLE_AVX) && defined(CRYPTOPP_SSE42_AVAILABLE) && \ 144 (defined(__AVX2__) || (CRYPTOPP_MSC_VERSION >= 1800) || (__SUNPRO_CC >= 0x5130) || \ 145 (CRYPTOPP_GCC_VERSION >= 40700) || (__INTEL_COMPILER >= 1400) || \ 146 (CRYPTOPP_LLVM_CLANG_VERSION >= 30100) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40600)) 147 #define CRYPTOPP_AVX_AVAILABLE 1 151 #if !defined(CRYPTOPP_DISABLE_AVX2) && defined(CRYPTOPP_AVX_AVAILABLE) && \ 152 (defined(__AVX2__) || (CRYPTOPP_MSC_VERSION >= 1800) || (__SUNPRO_CC >= 0x5130) || \ 153 (CRYPTOPP_GCC_VERSION >= 40900) || (__INTEL_COMPILER >= 1400) || \ 154 (CRYPTOPP_LLVM_CLANG_VERSION >= 30100) || (CRYPTOPP_APPLE_CLANG_VERSION >= 40600)) 155 #define CRYPTOPP_AVX2_AVAILABLE 1 160 #if !defined(CRYPTOPP_DISABLE_SHANI) && defined(CRYPTOPP_SSE42_AVAILABLE) && \ 161 (defined(__SHA__) || (CRYPTOPP_MSC_VERSION >= 1900) || (__SUNPRO_CC >= 0x5160) || \ 162 (CRYPTOPP_GCC_VERSION >= 40900) || (__INTEL_COMPILER >= 1300) || \ 163 (CRYPTOPP_LLVM_CLANG_VERSION >= 30400) || (CRYPTOPP_APPLE_CLANG_VERSION >= 50100)) 164 #define CRYPTOPP_SHANI_AVAILABLE 1 169 #if !defined(CRYPTOPP_DISABLE_RDRAND) && defined(CRYPTOPP_AESNI_AVAILABLE) 170 #define CRYPTOPP_RDRAND_AVAILABLE 1 175 #if !defined(CRYPTOPP_DISABLE_RDSEED) && defined(CRYPTOPP_AESNI_AVAILABLE) 176 #define CRYPTOPP_RDSEED_AVAILABLE 1 180 #if !defined(CRYPTOPP_DISABLE_PADLOCK) && \ 181 !(defined(__ANDROID__) || defined(ANDROID) || defined(__APPLE__)) && \ 182 defined(CRYPTOPP_X86_ASM_AVAILABLE) 183 #define CRYPTOPP_PADLOCK_AVAILABLE 1 184 #define CRYPTOPP_PADLOCK_RNG_AVAILABLE 1 185 #define CRYPTOPP_PADLOCK_ACE_AVAILABLE 1 186 #define CRYPTOPP_PADLOCK_ACE2_AVAILABLE 1 187 #define CRYPTOPP_PADLOCK_PHE_AVAILABLE 1 188 #define CRYPTOPP_PADLOCK_PMM_AVAILABLE 1 192 #if defined(__ANDROID__) || defined(ANDROID) 193 # if (CRYPTOPP_BOOL_X86) 194 # undef CRYPTOPP_SSE41_AVAILABLE 195 # undef CRYPTOPP_SSE42_AVAILABLE 196 # undef CRYPTOPP_CLMUL_AVAILABLE 197 # undef CRYPTOPP_AESNI_AVAILABLE 198 # undef CRYPTOPP_SHANI_AVAILABLE 199 # undef CRYPTOPP_RDRAND_AVAILABLE 200 # undef CRYPTOPP_RDSEED_AVAILABLE 201 # undef CRYPTOPP_AVX_AVAILABLE 202 # undef CRYPTOPP_AVX2_AVAILABLE 204 # if (CRYPTOPP_BOOL_X64) 205 # undef CRYPTOPP_CLMUL_AVAILABLE 206 # undef CRYPTOPP_AESNI_AVAILABLE 207 # undef CRYPTOPP_SHANI_AVAILABLE 208 # undef CRYPTOPP_RDRAND_AVAILABLE 209 # undef CRYPTOPP_RDSEED_AVAILABLE 210 # undef CRYPTOPP_AVX_AVAILABLE 211 # undef CRYPTOPP_AVX2_AVAILABLE 216 #if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x5130) 217 # undef CRYPTOPP_AESNI_AVAILABLE 222 #if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x5150) 223 # undef CRYPTOPP_CLMUL_AVAILABLE 226 #endif // CRYPTOPP_DISABLE_ASM 228 #endif // X86, X32, X64 232 #if (CRYPTOPP_BOOL_ARM32 || CRYPTOPP_BOOL_ARMV8) 236 #if (CRYPTOPP_BIG_ENDIAN) 237 # define CRYPTOPP_DISABLE_ASM 1 241 #if !defined(CRYPTOPP_DISABLE_ASM) 246 #if !defined(CRYPTOPP_ARM_NEON_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_NEON) 247 # if defined(__arm__) || defined(__ARM_NEON) || defined(__ARM_FEATURE_NEON) || defined(_M_ARM) 248 # if (CRYPTOPP_GCC_VERSION >= 40300) || (CRYPTOPP_LLVM_CLANG_VERSION >= 20800) || \ 249 (CRYPTOPP_MSC_VERSION >= 1700) 250 # define CRYPTOPP_ARM_NEON_AVAILABLE 1 258 #if !defined(CRYPTOPP_ARM_ASIMD_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_ASIMD) 259 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 260 # if defined(__ARM_NEON) || defined(__ARM_FEATURE_NEON) || defined(__ARM_FEATURE_ASIMD) || \ 261 (CRYPTOPP_GCC_VERSION >= 40800) || (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || \ 262 (CRYPTOPP_MSC_VERSION >= 1916) 263 # define CRYPTOPP_ARM_NEON_AVAILABLE 1 264 # define CRYPTOPP_ARM_ASIMD_AVAILABLE 1 272 #if !defined(CRYPTOPP_ARM_CRC32_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_CRC32) 273 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 274 # if defined(__ARM_FEATURE_CRC32) || (CRYPTOPP_GCC_VERSION >= 40800) || \ 275 (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_MSC_VERSION >= 1916) 276 # define CRYPTOPP_ARM_CRC32_AVAILABLE 1 284 #if !defined(CRYPTOPP_ARM_PMULL_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_PMULL) 285 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 286 # if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \ 287 (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_MSC_VERSION >= 1916) 288 # define CRYPTOPP_ARM_PMULL_AVAILABLE 1 296 #if !defined(CRYPTOPP_ARM_AES_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_AES) 297 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 298 # if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \ 299 (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_MSC_VERSION >= 1916) 300 # define CRYPTOPP_ARM_AES_AVAILABLE 1 308 #if !defined(CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SHA) 309 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 310 # if defined(__ARM_FEATURE_CRYPTO) || (CRYPTOPP_GCC_VERSION >= 40800) || \ 311 (CRYPTOPP_LLVM_CLANG_VERSION >= 30300) || (CRYPTOPP_MSC_VERSION >= 1916) 312 # define CRYPTOPP_ARM_SHA1_AVAILABLE 1 313 # define CRYPTOPP_ARM_SHA2_AVAILABLE 1 321 #if !defined(CRYPTOPP_ARM_SHA3_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SHA) 322 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 323 # if defined(__ARM_FEATURE_SHA3) || (CRYPTOPP_GCC_VERSION >= 80000) 324 # define CRYPTOPP_ARM_SHA512_AVAILABLE 1 325 # define CRYPTOPP_ARM_SHA3_AVAILABLE 1 333 #if !defined(CRYPTOPP_ARM_SM3_AVAILABLE) && !defined(CRYPTOPP_DISABLE_ARM_SM3) 334 # if defined(__aarch32__) || defined(__aarch64__) || defined(_M_ARM64) 335 # if defined(__ARM_FEATURE_SM3) || (CRYPTOPP_GCC_VERSION >= 80000) 336 # define CRYPTOPP_ARM_SM3_AVAILABLE 1 337 # define CRYPTOPP_ARM_SM4_AVAILABLE 1 343 #if !defined(CRYPTOPP_ARM_NEON_HEADER) 344 # if defined(CRYPTOPP_ARM_NEON_AVAILABLE) || defined (CRYPTOPP_ARM_ASIMD_AVAILABLE) 345 # if !defined(_M_ARM64) 346 # define CRYPTOPP_ARM_NEON_HEADER 1 352 #if !defined(CRYPTOPP_ARM_ACLE_HEADER) 353 # if defined(__aarch32__) || defined(__aarch64__) || (__ARM_ARCH >= 8) || defined(__ARM_ACLE) 354 # if !defined(__ANDROID__) && !defined(ANDROID) && !defined(__APPLE__) 355 # define CRYPTOPP_ARM_ACLE_HEADER 1 362 #if defined(CRYPTOPP_APPLE_CLANG_VERSION) && (CRYPTOPP_APPLE_CLANG_VERSION < 70000) 363 # undef CRYPTOPP_ARM_PMULL_AVAILABLE 368 #if defined(__ANDROID__) || defined(ANDROID) 369 # undef CRYPTOPP_ARM_CRC32_AVAILABLE 370 # undef CRYPTOPP_ARM_PMULL_AVAILABLE 371 # undef CRYPTOPP_ARM_AES_AVAILABLE 372 # undef CRYPTOPP_ARM_SHA1_AVAILABLE 373 # undef CRYPTOPP_ARM_SHA2_AVAILABLE 374 # undef CRYPTOPP_ARM_SHA3_AVAILABLE 375 # undef CRYPTOPP_ARM_SHA512_AVAILABLE 376 # undef CRYPTOPP_ARM_SM3_AVAILABLE 377 # undef CRYPTOPP_ARM_SM4_AVAILABLE 386 #if defined(__arm__) && defined(__linux__) 387 # if defined(__GNUC__) || defined(__clang__) 388 # define CRYPTOGAMS_ARM_AES 1 389 # define CRYPTOGAMS_ARM_SHA1 1 390 # define CRYPTOGAMS_ARM_SHA256 1 391 # define CRYPTOGAMS_ARM_SHA512 1 395 #endif // CRYPTOPP_DISABLE_ASM 397 #endif // ARM32, ARM64 401 #if (CRYPTOPP_BOOL_PPC32 || CRYPTOPP_BOOL_PPC64) 404 #if !defined(CRYPTOPP_DISABLE_ASM) && !defined(CRYPTOPP_DISABLE_ALTIVEC) 407 #if !defined(CRYPTOPP_ALTIVEC_AVAILABLE) 408 # if defined(_ARCH_PWR4) || defined(__ALTIVEC__) || \ 409 (CRYPTOPP_XLC_VERSION >= 100000) || (CRYPTOPP_GCC_VERSION >= 40001) || \ 410 (CRYPTOPP_LLVM_CLANG_VERSION >= 20900) 411 # define CRYPTOPP_ALTIVEC_AVAILABLE 1 415 #if defined(CRYPTOPP_ALTIVEC_AVAILABLE) 418 #if !defined(CRYPTOPP_POWER7_AVAILABLE) && !defined(CRYPTOPP_DISABLE_POWER7) 419 # if defined(_ARCH_PWR7) || (CRYPTOPP_XLC_VERSION >= 100000) || \ 420 (CRYPTOPP_GCC_VERSION >= 40100) || (CRYPTOPP_LLVM_CLANG_VERSION >= 30100) 421 # define CRYPTOPP_POWER7_AVAILABLE 1 425 #if defined(CRYPTOPP_POWER7_AVAILABLE) 428 #if !defined(CRYPTOPP_POWER8_AVAILABLE) && !defined(CRYPTOPP_DISABLE_POWER8) 429 # if defined(_ARCH_PWR8) || (CRYPTOPP_XLC_VERSION >= 130000) || \ 430 (CRYPTOPP_GCC_VERSION >= 40800) || (CRYPTOPP_LLVM_CLANG_VERSION >= 70000) 431 # define CRYPTOPP_POWER8_AVAILABLE 1 435 #if !defined(CRYPTOPP_POWER8_AES_AVAILABLE) && !defined(CRYPTOPP_DISABLE_POWER8_AES) && defined(CRYPTOPP_POWER8_AVAILABLE) 436 # if defined(__CRYPTO__) || defined(_ARCH_PWR8) || (CRYPTOPP_XLC_VERSION >= 130000) || \ 437 (CRYPTOPP_GCC_VERSION >= 40800) || (CRYPTOPP_LLVM_CLANG_VERSION >= 70000) 439 # define CRYPTOPP_POWER8_AES_AVAILABLE 1 440 # define CRYPTOPP_POWER8_VMULL_AVAILABLE 1 441 # define CRYPTOPP_POWER8_SHA_AVAILABLE 1 445 #if defined(CRYPTOPP_POWER8_AVAILABLE) 448 #if !defined(CRYPTOPP_POWER9_AVAILABLE) && !defined(CRYPTOPP_DISABLE_POWER9) 449 # if defined(_ARCH_PWR9) || (CRYPTOPP_XLC_VERSION >= 130200) || \ 450 (CRYPTOPP_GCC_VERSION >= 70000) || (CRYPTOPP_LLVM_CLANG_VERSION >= 80000) 451 # define CRYPTOPP_POWER9_AVAILABLE 1 455 #endif // CRYPTOPP_POWER8_AVAILABLE 456 #endif // CRYPTOPP_POWER7_AVAILABLE 457 #endif // CRYPTOPP_ALTIVEC_AVAILABLE 458 #endif // CRYPTOPP_DISABLE_ASM 459 #endif // PPC32, PPC64 461 #endif // CRYPTOPP_CONFIG_ASM_H Library configuration file.
Library configuration file.
Library configuration file.