summaryrefslogtreecommitdiff
path: root/gcm_simd.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2019-05-21 04:03:22 -0400
committerJeffrey Walton <noloader@gmail.com>2019-05-21 04:03:22 -0400
commit6acbbf1849e8ce6fe5c51fdcc995ab958f4d796c (patch)
treed369f7e86f9494367fd18f2345f30cd0b38befb7 /gcm_simd.cpp
parent08235400b0dd5405e6fde2eb4061bd8682f30700 (diff)
downloadcryptopp-git-6acbbf1849e8ce6fe5c51fdcc995ab958f4d796c.tar.gz
Fix crash in GCM mode on ARM with -mthumb
Diffstat (limited to 'gcm_simd.cpp')
-rw-r--r--gcm_simd.cpp9
1 files changed, 1 insertions, 8 deletions
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<uint64x2_t>()));
- CRYPTOPP_ASSERT(IsAlignedOn(b,GetAlignmentOf<uint64x2_t>()));
- CRYPTOPP_ASSERT(IsAlignedOn(c,GetAlignmentOf<uint64x2_t>()));
- *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