summaryrefslogtreecommitdiff
path: root/lsh512.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2021-04-20 08:31:52 -0400
committerJeffrey Walton <noloader@gmail.com>2021-04-20 08:31:52 -0400
commitd1cea852f06008541966de7af433b57c4e9e2504 (patch)
tree1247a402cfd5349fe702b1da7b8ceeea26c101a1 /lsh512.cpp
parent9bc2e92b2893e78c80e43fe050e6fca3c3529f68 (diff)
downloadcryptopp-git-d1cea852f06008541966de7af433b57c4e9e2504.tar.gz
Make XOP its own define in LSH
Diffstat (limited to 'lsh512.cpp')
-rw-r--r--lsh512.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/lsh512.cpp b/lsh512.cpp
index 3173088c..b6907a33 100644
--- a/lsh512.cpp
+++ b/lsh512.cpp
@@ -36,6 +36,9 @@
# if (defined(__SSSE3__) && defined(__amd64__))
# define CRYPTOPP_LSH512_SSSE3_AVAILABLE 1
# endif
+# if (defined(__XOP__) && defined(__amd64__))
+# define CRYPTOPP_LSH512_XOP_AVAILABLE 1
+# endif
# if (defined(__AVX__) && defined(__amd64__))
# define CRYPTOPP_LSH512_AVX_AVAILABLE 1
# endif
@@ -44,20 +47,17 @@
# endif
#endif
-#if defined(CRYPTOPP_LSH512_SSE2_AVAILABLE)
-# include <emmintrin.h>
-# if defined(__XOP__)
-# include <ammintrin.h>
-# if defined(__GNUC__)
-# include <x86intrin.h>
-# endif
-# endif
-#endif
-
#if defined(CRYPTOPP_LSH512_SSSE3_AVAILABLE)
# include <tmmintrin.h>
#endif
+#if defined(CRYPTOPP_LSH512_XOP_AVAILABLE)
+# include <ammintrin.h>
+# if defined(__GNUC__)
+# include <x86intrin.h>
+# endif
+#endif
+
#if defined(CRYPTOPP_LSH512_AVX_AVAILABLE)
# include <immintrin.h>
#endif
@@ -70,6 +70,10 @@
# include <x86intrin.h>
#endif
+#if defined(__GNUC__)
+# include <x86intrin.h>
+#endif
+
ANONYMOUS_NAMESPACE_BEGIN
using CryptoPP::byte;
@@ -777,7 +781,7 @@ inline void rotate_blk(lsh_u64 cv[8])
_mm256_slli_epi64(_mm256_loadu_si256(CONST_M256_CAST(cv+4)), R),
_mm256_srli_epi64(_mm256_loadu_si256(CONST_M256_CAST(cv+4)), 64-R)));
-#elif defined(CRYPTOPP_LSH512_SSE2_AVAILABLE) && defined(__XOP__)
+#elif defined(CRYPTOPP_LSH512_XOP_AVAILABLE)
_mm_storeu_si128(M128_CAST(cv),
_mm_roti_epi64(_mm_loadu_si128(CONST_M128_CAST(cv)), R));
_mm_storeu_si128(M128_CAST(cv+2),