diff --git a/gcm_simd.cpp b/gcm_simd.cpp index 10f2b47b..0defa158 100644 --- a/gcm_simd.cpp +++ b/gcm_simd.cpp @@ -60,10 +60,6 @@ #define M128_CAST(x) ((__m128i *)(void *)(x)) #define CONST_M128_CAST(x) ((const __m128i *)(const void *)(x)) -// GCC cast warning -#define UINT64X2_CAST(x) ((uint64x2_t *)(void *)(x)) -#define CONST_UINT64X2_CAST(x) ((const uint64x2_t *)(const void *)(x)) - // Squash MS LNK4221 and libtool warnings extern const char GCM_SIMD_FNAME[] = __FILE__; @@ -219,10 +215,7 @@ bool CPU_ProbePMULL() #if CRYPTOPP_ARM_NEON_AVAILABLE void GCM_Xor16_NEON(byte *a, const byte *b, const byte *c) { - CRYPTOPP_ASSERT(IsAlignedOn(a,GetAlignmentOf())); - CRYPTOPP_ASSERT(IsAlignedOn(b,GetAlignmentOf())); - CRYPTOPP_ASSERT(IsAlignedOn(c,GetAlignmentOf())); - *UINT64X2_CAST(a) = veorq_u64(*CONST_UINT64X2_CAST(b), *CONST_UINT64X2_CAST(c)); + vst1q_u8(a, veorq_u8(vld1q_u8(b), vld1q_u8(c))); } #endif // CRYPTOPP_ARM_NEON_AVAILABLE