> 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 SECT21D notype ()External| ?HasNEON@CryptoPP@@YA_NXZ
(bool
__cdecl CryptoPP::HasNEON(void))
835 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 &))
836 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
&))
11AB SECT484 notype Static |
$pdata1$?HasNEON@CryptoPP@@YA_N
XZ
12B8 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.