> I'd like to get the library tested under VS2017. I have the build tools > installed, but I have not been able to get a 64-bit ARM developer prompt. > > If someone could perform the following, then it would be greatly > appreciated. ... > > cryptest.nmake may need some tuning. It may recognize its environment as > ARM64 or it may not. Just open it up and start turning knobs. Also see > https://github.com/noloader/cryptopp/blob/master/cryptest.nmake . >
Forgot to mention... config.h is what activates the ARMv8 code paths. For Microsoft toolchains, its the CRYPTOPP_MSC_VERSION >= 2000: # if defined(__ARM_FEATURE_CRC32) || (CRYPTOPP_MSC_VERSION >= 2000) || \ defined(__aarch32__) || defined(__aarch64__) # define CRYPTOPP_ARM_CRC32_AVAILABLE 1 # endif For the AMRv8 gear, you are looking for the following symbols: $ grep "_ARMV8(" *.h *.cpp cpu.cpp:extern bool CPU_TryAES_ARMV8(); cpu.cpp:extern bool CPU_TrySHA1_ARMV8(); cpu.cpp:extern bool CPU_TrySHA2_ARMV8(); cpu.cpp:extern bool CPU_TryCRC32_ARMV8(); cpu.cpp:extern bool CPU_TryPMULL_ARMV8(); cpu.cpp: g_hasPMULL = CPU_TryPMULL_ARMV8(); cpu.cpp: g_hasCRC32 = CPU_TryCRC32_ARMV8(); cpu.cpp: g_hasSHA1 = CPU_TrySHA1_ARMV8(); cpu.cpp: g_hasSHA2 = CPU_TrySHA2_ARMV8(); crc.cpp:extern void CRC32_Update_ARMV8(const byte *s, size_t n, word32& c); crc.cpp:extern void CRC32C_Update_ARMV8(const byte *s, size_t n, word32& c); crc.cpp: CRC32_Update_ARMV8(s, n, m_crc); crc.cpp: CRC32C_Update_ARMV8(s, n, m_crc); crc-simd.cpp:bool CPU_TryCRC32_ARMV8() crc-simd.cpp:void CRC32_Update_ARMV8(const byte *s, size_t n, word32& c) crc-simd.cpp:void CRC32C_Update_ARMV8(const byte *s, size_t n, word32& c) gcm-simd.cpp:bool CPU_TryPMULL_ARMV8() sha.cpp:extern void SHA1_Transform_ARMV8(word32 *state, const word32 *data); sha.cpp:extern void CRYPTOPP_FASTCALL SHA256_HashBlocks_ARMV8(word32 *state, const word32 *data, size_t length); sha.cpp:static void SHA256_Transform_ARMV8(word32 *state, const word32 *data) sha-simd.cpp:bool CPU_TrySHA1_ARMV8() sha-simd.cpp:bool CPU_TrySHA2_ARMV8() sha-simd.cpp:void SHA1_Transform_ARMV8(word32 *state, const word32 *data) sha-simd.cpp:void CRYPTOPP_FASTCALL SHA256_HashBlocks_ARMV8(word32 *state, const word32 *data, size_t length) You can verify a symbol is present in an object file with dumpbin. For example, below is checking for NEON in BLAKE2: ;; From a developer command prompt c:\cryptopp-fork>dumpbin /symbols blake2.obj | find "NEON" 832 00000000 SECT21D notype () External | ?HasNEON@CryptoPP@@YA_NXZ (bool __cdecl CryptoPP::HasNEON(void)) 835 00000000 UNDEF notype () External | ?BLAKE2_Compress32_NEON@CryptoPP @@YAXPBEAAU?$BLAKE2_State@I$0A@@1@@Z (void __cdecl CryptoPP::BLAKE2_Compress32_N EON(unsigned char const *,struct CryptoPP::BLAKE2_State<unsigned int,0> &)) 836 00000000 UNDEF notype () External | ?BLAKE2_Compress64_NEON@CryptoPP @@YAXPBEAAU?$BLAKE2_State@_K$00@1@@Z (void __cdecl CryptoPP::BLAKE2_Compress64_N EON(unsigned char const *,struct CryptoPP::BLAKE2_State<unsigned __int64,1> &)) 11AB 00000000 SECT484 notype Static | $pdata1$?HasNEON@CryptoPP@@YA_N XZ 12B8 00000000 UNDEF notype External | ?g_hasNEON@CryptoPP@@3_NA (bool CryptoPP::g_hasNEON) Jeff -- -- You received this message because you are subscribed to the "Crypto++ Users" Google Group. To unsubscribe, send an email to cryptopp-users-unsubscr...@googlegroups.com. More information about Crypto++ and this group is available at http://www.cryptopp.com. --- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to cryptopp-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.