summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2019-10-19 13:23:01 -0400
committerJeffrey Walton <noloader@gmail.com>2019-10-19 13:23:01 -0400
commitdc00afed883b0fdb41ac1282820185663f7dee12 (patch)
tree3cb9cf34c449f5606d76bdc9b370ba63258f1551
parent0fdd341811e729b322593468c88ed732a992d46a (diff)
downloadcryptopp-git-dc00afed883b0fdb41ac1282820185663f7dee12.tar.gz
Fix XTS compile on Aarch64 when CRYPTOPP_DISABLE_ASM
-rw-r--r--xts.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/xts.cpp b/xts.cpp
index e5de5c0e..76b6091b 100644
--- a/xts.cpp
+++ b/xts.cpp
@@ -22,6 +22,9 @@
// 0.3 to 0.4 cpb profit
#if defined(__SSE2__) || defined(_M_X64)
# include <immintrin.h>
+// Clang intrinsic casts
+# define M128_CAST(x) ((__m128i *)(void *)(x))
+# define CONST_M128_CAST(x) ((const __m128i *)(const void *)(x))
#endif
@@ -31,10 +34,6 @@
# endif
#endif
-// Clang intrinsic casts
-#define M128_CAST(x) ((__m128i *)(void *)(x))
-#define CONST_M128_CAST(x) ((const __m128i *)(const void *)(x))
-
ANONYMOUS_NAMESPACE_BEGIN
using namespace CryptoPP;
@@ -63,7 +62,10 @@ inline void XorBuffer(byte *output, const byte *input, const byte *mask, size_t
{
CRYPTOPP_ASSERT(count >= 16 && (count % 16 == 0));
-#if defined(__SSE2__) || defined(_M_X64)
+#if defined(CRYPTOPP_DISABLE_ASM)
+ xorbuf(output, input, mask, count);
+
+#elif defined(__SSE2__) || defined(_M_X64)
for (size_t i=0; i<count; i+=16)
_mm_storeu_si128(M128_CAST(output+i),
_mm_xor_si128(