From 17bf824790e071bde20a318b86ff51800cfb1015 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 12 Sep 2017 05:29:51 -0400 Subject: [PATCH] Guard include for GCC 4.8 Use system includes for and --- crc-simd.cpp | 18 ++++++++++++------ gcm-simd.cpp | 13 +++++++------ neon-simd.cpp | 2 +- sha-simd.cpp | 20 +++++++++++--------- shacal2-simd.cpp | 13 +++++++------ 5 files changed, 38 insertions(+), 28 deletions(-) diff --git a/crc-simd.cpp b/crc-simd.cpp index db6ee303..890aa4d9 100644 --- a/crc-simd.cpp +++ b/crc-simd.cpp @@ -10,20 +10,26 @@ #include "config.h" #include "misc.h" -// Clang and GCC hoops... +// We set CRYPTOPP_ARM_CRC32_AVAILABLE based on compiler version. +// If the crypto is not available, then we have to disable it here. #if !(defined(__ARM_FEATURE_CRC32) || defined(_MSC_VER)) # undef CRYPTOPP_ARM_CRC32_AVAILABLE #endif -#if (CRYPTOPP_SSE42_AVAILABLE) -# include "nmmintrin.h" +#if (CRYPTOPP_CLMUL_AVAILABLE) +# include +#endif + +#if (CRYPTOPP_ARM_NEON_AVAILABLE) +# include #endif // Don't include when using Apple Clang. Early Apple compilers // fail to compile with included. Later Apple compilers compile -// intrinsics without included. -#if (CRYPTOPP_ARM_CRC32_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) -# include "arm_acle.h" +// intrinsics without included. Also avoid it with GCC 4.8. +#if (CRYPTOPP_ARM_CRC32_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) && \ + (!defined(CRYPTOPP_GCC_VERSION) || (CRYPTOPP_GCC_VERSION >= 40900)) +# include #endif #ifdef CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY diff --git a/gcm-simd.cpp b/gcm-simd.cpp index c0e96159..e9a30eb3 100644 --- a/gcm-simd.cpp +++ b/gcm-simd.cpp @@ -31,19 +31,20 @@ #endif #if (CRYPTOPP_CLMUL_AVAILABLE) -# include "tmmintrin.h" -# include "wmmintrin.h" +# include +# include #endif #if (CRYPTOPP_ARM_NEON_AVAILABLE) -# include "arm_neon.h" +# include #endif // Don't include when using Apple Clang. Early Apple compilers // fail to compile with included. Later Apple compilers compile -// intrinsics without included. -#if (CRYPTOPP_ARM_PMULL_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) -# include "arm_acle.h" +// intrinsics without included. Also avoid it with GCC 4.8. +#if (CRYPTOPP_ARM_PMULL_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) && \ + (!defined(CRYPTOPP_GCC_VERSION) || (CRYPTOPP_GCC_VERSION >= 40900)) +# include #endif #ifdef CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY diff --git a/neon-simd.cpp b/neon-simd.cpp index c5a9f0e5..46064ac8 100644 --- a/neon-simd.cpp +++ b/neon-simd.cpp @@ -11,7 +11,7 @@ #include "stdcpp.h" #if (CRYPTOPP_ARM_NEON_AVAILABLE) -# include "arm_neon.h" +# include #endif #ifdef CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY diff --git a/sha-simd.cpp b/sha-simd.cpp index 5f8f92f3..126463d8 100644 --- a/sha-simd.cpp +++ b/sha-simd.cpp @@ -11,25 +11,27 @@ #include "sha.h" #include "misc.h" -// Clang and GCC hoops... +// We set CRYPTOPP_ARM_SHA_AVAILABLE based on compiler version. +// If the crypto is not available, then we have to disable it here. #if !(defined(__ARM_FEATURE_CRYPTO) || defined(_MSC_VER)) # undef CRYPTOPP_ARM_SHA_AVAILABLE #endif -#if (CRYPTOPP_SHANI_AVAILABLE) -# include "nmmintrin.h" -# include "immintrin.h" +#if (CRYPTOPP_CLMUL_AVAILABLE) +# include +# include #endif -#if (CRYPTOPP_ARM_SHA_AVAILABLE) -# include "arm_neon.h" +#if (CRYPTOPP_ARM_NEON_AVAILABLE) +# include #endif // Don't include when using Apple Clang. Early Apple compilers // fail to compile with included. Later Apple compilers compile -// intrinsics without included. -#if (CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) -# include "arm_acle.h" +// intrinsics without included. Also avoid it with GCC 4.8. +#if (CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) && \ + (!defined(CRYPTOPP_GCC_VERSION) || (CRYPTOPP_GCC_VERSION >= 40900)) +# include #endif #ifdef CRYPTOPP_GNU_STYLE_INLINE_ASSEMBLY diff --git a/shacal2-simd.cpp b/shacal2-simd.cpp index e5a9046e..6bb80bd7 100644 --- a/shacal2-simd.cpp +++ b/shacal2-simd.cpp @@ -23,19 +23,20 @@ #endif #if (CRYPTOPP_SHANI_AVAILABLE) -# include "nmmintrin.h" -# include "immintrin.h" +# include +# include #endif #if (CRYPTOPP_ARM_SHA_AVAILABLE) -# include "arm_neon.h" +# include #endif // Don't include when using Apple Clang. Early Apple compilers // fail to compile with included. Later Apple compilers compile -// intrinsics without included. -#if (CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) -# include "arm_acle.h" +// intrinsics without included. Also avoid it with GCC 4.8. +#if (CRYPTOPP_ARM_SHA_AVAILABLE) && !defined(CRYPTOPP_APPLE_CLANG_VERSION) && \ + (!defined(CRYPTOPP_GCC_VERSION) || (CRYPTOPP_GCC_VERSION >= 40900)) +# include #endif // Clang __m128i casts, http://bugs.llvm.org/show_bug.cgi?id=20670