Fix ChaCha NEON compile with MSVC compiler (GH #776)

This commit is contained in:
Jeffrey Walton 2019-01-03 13:37:53 -05:00
parent 8baa2f7a27
commit b70bc4865f
No known key found for this signature in database
GPG Key ID: B36AB348921B1838

View File

@ -70,6 +70,15 @@ ANONYMOUS_NAMESPACE_BEGIN
// ***************************** NEON ***************************** //
// Thanks to Peter Cordes, https://stackoverflow.com/q/54016821/608639
#if (CRYPTOPP_ARM_NEON_AVAILABLE)
# if defined(_MSC_VER)
# define PACK32x4(w,x,y,z) { ((w) + (word64(x) << 32)), ((y) + (word64(z) << 32)) }
# else
# define PACK32x4(w,x,y,z) { (w), (x), (y), (z) }
# endif
#endif // Microsoft workaround
#if (CRYPTOPP_ARM_NEON_AVAILABLE)
template <unsigned int R>
@ -303,7 +312,9 @@ void ChaCha_OperateKeystream_NEON(const word32 *state, const byte* input, byte *
const uint32x4_t state3 = vld1q_u32(state + 3*4);
const uint32x4_t CTRS[3] = {
{1,0,0,0}, {2,0,0,0}, {3,0,0,0}
PACK32x4(1,0,0,0),
PACK32x4(2,0,0,0),
PACK32x4(3,0,0,0)
};
uint32x4_t r0_0 = state0;