diff options
author | Jeffrey Walton <noloader@gmail.com> | 2018-12-29 01:08:43 -0500 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2018-12-29 01:08:43 -0500 |
commit | 8838f78ec4247b184d639410fb06704711c58d04 (patch) | |
tree | 4ba0892dba22f4306fd4accac923f57dbecb4007 /chacha_simd.cpp | |
parent | 2d06777747f1fd0476534fd35817e2874947a31f (diff) | |
download | cryptopp-git-8838f78ec4247b184d639410fb06704711c58d04.tar.gz |
Fix ChaCha compiler crash for GCC 3.3
Diffstat (limited to 'chacha_simd.cpp')
-rw-r--r-- | chacha_simd.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/chacha_simd.cpp b/chacha_simd.cpp index 307d4945..534445a6 100644 --- a/chacha_simd.cpp +++ b/chacha_simd.cpp @@ -30,7 +30,12 @@ #include "chacha.h"
#include "misc.h"
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+// Internal compiler error in GCC 3.3 and below
+#if defined(__GNUC__) && (__GNUC__ < 4)
+# undef CRYPTOPP_SSE2_INTRIN_AVAILABLE
+#endif
+
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
# include <xmmintrin.h>
# include <emmintrin.h>
#endif
@@ -161,7 +166,7 @@ inline uint32x4_t Add64(const uint32x4_t& a, const uint32x4_t& b) // ***************************** SSE2 ***************************** //
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
template <unsigned int R>
inline __m128i RotateLeft(const __m128i val)
@@ -199,7 +204,7 @@ inline __m128i RotateLeft<16>(const __m128i val) #endif
}
-#endif // CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE
+#endif // CRYPTOPP_SSE2_INTRIN_AVAILABLE
// **************************** Altivec **************************** //
@@ -556,7 +561,7 @@ void ChaCha_OperateKeystream_NEON(const word32 *state, const byte* input, byte * // ***************************** SSE2 ***************************** //
-#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE)
+#if (CRYPTOPP_SSE2_INTRIN_AVAILABLE)
void ChaCha_OperateKeystream_SSE2(const word32 *state, const byte* input, byte *output, unsigned int rounds)
{
@@ -820,7 +825,7 @@ void ChaCha_OperateKeystream_SSE2(const word32 *state, const byte* input, byte * _mm_storeu_si128(output_mm + 15, r3_3);
}
-#endif // CRYPTOPP_SSE2_INTRIN_AVAILABLE || CRYPTOPP_SSE2_ASM_AVAILABLE
+#endif // CRYPTOPP_SSE2_INTRIN_AVAILABLE
#if (CRYPTOPP_POWER7_AVAILABLE || CRYPTOPP_ALTIVEC_AVAILABLE)
|