summaryrefslogtreecommitdiff
path: root/chacha.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-12-29 01:08:43 -0500
committerJeffrey Walton <noloader@gmail.com>2018-12-29 01:08:43 -0500
commit8838f78ec4247b184d639410fb06704711c58d04 (patch)
tree4ba0892dba22f4306fd4accac923f57dbecb4007 /chacha.cpp
parent2d06777747f1fd0476534fd35817e2874947a31f (diff)
downloadcryptopp-git-8838f78ec4247b184d639410fb06704711c58d04.tar.gz
Fix ChaCha compiler crash for GCC 3.3
Diffstat (limited to 'chacha.cpp')
-rw-r--r--chacha.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/chacha.cpp b/chacha.cpp
index 43721b7b..2bde58b1 100644
--- a/chacha.cpp
+++ b/chacha.cpp
@@ -10,13 +10,18 @@
#include "misc.h"
#include "cpu.h"
+// Internal compiler error in GCC 3.3 and below
+#if defined(__GNUC__) && (__GNUC__ < 4)
+# undef CRYPTOPP_SSE2_INTRIN_AVAILABLE
+#endif
+
NAMESPACE_BEGIN(CryptoPP)
#if (CRYPTOPP_ARM_NEON_AVAILABLE)
extern void ChaCha_OperateKeystream_NEON(const word32 *state, const byte* input, byte *output, unsigned int rounds);
#endif
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
extern void ChaCha_OperateKeystream_SSE2(const word32 *state, const byte* input, byte *output, unsigned int rounds);
#endif
@@ -73,7 +78,7 @@ std::string ChaCha_Policy::AlgorithmProvider() const
return "AVX2";
else
#endif
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
if (HasSSE2())
return "SSE2";
else
@@ -140,7 +145,7 @@ unsigned int ChaCha_Policy::GetAlignment() const
return 16;
else
#endif
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
if (HasSSE2())
return 16;
else
@@ -160,7 +165,7 @@ unsigned int ChaCha_Policy::GetOptimalBlockSize() const
return 8 * BYTES_PER_ITERATION;
else
#endif
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
if (HasSSE2())
return 4*BYTES_PER_ITERATION;
else
@@ -211,7 +216,7 @@ void ChaCha_Policy::OperateKeystream(KeystreamOperation operation,
}
#endif
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
if (HasSSE2())
{
while (iterationCount >= 4 && MultiBlockSafe(4))