mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
Rename SHANI to X86_SHANI to allow future implementation of ARM_SHANI
This commit is contained in:
14
configure.ac
14
configure.ac
@@ -466,7 +466,7 @@ AX_CHECK_COMPILE_FLAG([-fno-extended-identifiers], [CXXFLAGS="$CXXFLAGS -fno-ext
|
|||||||
enable_sse42=no
|
enable_sse42=no
|
||||||
enable_sse41=no
|
enable_sse41=no
|
||||||
enable_avx2=no
|
enable_avx2=no
|
||||||
enable_shani=no
|
enable_x86_shani=no
|
||||||
|
|
||||||
if test "$use_asm" = "yes"; then
|
if test "$use_asm" = "yes"; then
|
||||||
|
|
||||||
@@ -478,7 +478,7 @@ dnl x86
|
|||||||
AX_CHECK_COMPILE_FLAG([-msse4.2], [SSE42_CXXFLAGS="-msse4.2"], [], [$CXXFLAG_WERROR])
|
AX_CHECK_COMPILE_FLAG([-msse4.2], [SSE42_CXXFLAGS="-msse4.2"], [], [$CXXFLAG_WERROR])
|
||||||
AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_CXXFLAGS="-msse4.1"], [], [$CXXFLAG_WERROR])
|
AX_CHECK_COMPILE_FLAG([-msse4.1], [SSE41_CXXFLAGS="-msse4.1"], [], [$CXXFLAG_WERROR])
|
||||||
AX_CHECK_COMPILE_FLAG([-mavx -mavx2], [AVX2_CXXFLAGS="-mavx -mavx2"], [], [$CXXFLAG_WERROR])
|
AX_CHECK_COMPILE_FLAG([-mavx -mavx2], [AVX2_CXXFLAGS="-mavx -mavx2"], [], [$CXXFLAG_WERROR])
|
||||||
AX_CHECK_COMPILE_FLAG([-msse4 -msha], [SHANI_CXXFLAGS="-msse4 -msha"], [], [$CXXFLAG_WERROR])
|
AX_CHECK_COMPILE_FLAG([-msse4 -msha], [X86_SHANI_CXXFLAGS="-msse4 -msha"], [], [$CXXFLAG_WERROR])
|
||||||
|
|
||||||
enable_clmul=
|
enable_clmul=
|
||||||
AX_CHECK_COMPILE_FLAG([-mpclmul], [enable_clmul=yes], [], [$CXXFLAG_WERROR], [AC_LANG_PROGRAM([
|
AX_CHECK_COMPILE_FLAG([-mpclmul], [enable_clmul=yes], [], [$CXXFLAG_WERROR], [AC_LANG_PROGRAM([
|
||||||
@@ -551,8 +551,8 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|||||||
CXXFLAGS="$TEMP_CXXFLAGS"
|
CXXFLAGS="$TEMP_CXXFLAGS"
|
||||||
|
|
||||||
TEMP_CXXFLAGS="$CXXFLAGS"
|
TEMP_CXXFLAGS="$CXXFLAGS"
|
||||||
CXXFLAGS="$CXXFLAGS $SHANI_CXXFLAGS"
|
CXXFLAGS="$CXXFLAGS $X86_SHANI_CXXFLAGS"
|
||||||
AC_MSG_CHECKING([for SHA-NI intrinsics])
|
AC_MSG_CHECKING([for x86 SHA-NI intrinsics])
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
@@ -562,7 +562,7 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|||||||
__m128i k = _mm_set1_epi32(2);
|
__m128i k = _mm_set1_epi32(2);
|
||||||
return _mm_extract_epi32(_mm_sha256rnds2_epu32(i, i, k), 0);
|
return _mm_extract_epi32(_mm_sha256rnds2_epu32(i, i, k), 0);
|
||||||
]])],
|
]])],
|
||||||
[ AC_MSG_RESULT([yes]); enable_shani=yes; AC_DEFINE([ENABLE_SHANI], [1], [Define this symbol to build code that uses SHA-NI intrinsics]) ],
|
[ AC_MSG_RESULT([yes]); enable_x86_shani=yes; AC_DEFINE([ENABLE_X86_SHANI], [1], [Define this symbol to build code that uses x86 SHA-NI intrinsics]) ],
|
||||||
[ AC_MSG_RESULT([no])]
|
[ AC_MSG_RESULT([no])]
|
||||||
)
|
)
|
||||||
CXXFLAGS="$TEMP_CXXFLAGS"
|
CXXFLAGS="$TEMP_CXXFLAGS"
|
||||||
@@ -1806,7 +1806,7 @@ AM_CONDITIONAL([HARDEN], [test "$use_hardening" = "yes"])
|
|||||||
AM_CONDITIONAL([ENABLE_SSE42], [test "$enable_sse42" = "yes"])
|
AM_CONDITIONAL([ENABLE_SSE42], [test "$enable_sse42" = "yes"])
|
||||||
AM_CONDITIONAL([ENABLE_SSE41], [test "$enable_sse41" = "yes"])
|
AM_CONDITIONAL([ENABLE_SSE41], [test "$enable_sse41" = "yes"])
|
||||||
AM_CONDITIONAL([ENABLE_AVX2], [test "$enable_avx2" = "yes"])
|
AM_CONDITIONAL([ENABLE_AVX2], [test "$enable_avx2" = "yes"])
|
||||||
AM_CONDITIONAL([ENABLE_SHANI], [test "$enable_shani" = "yes"])
|
AM_CONDITIONAL([ENABLE_X86_SHANI], [test "$enable_x86_shani" = "yes"])
|
||||||
AM_CONDITIONAL([ENABLE_ARM_CRC], [test "$enable_arm_crc" = "yes"])
|
AM_CONDITIONAL([ENABLE_ARM_CRC], [test "$enable_arm_crc" = "yes"])
|
||||||
AM_CONDITIONAL([USE_ASM], [test "$use_asm" = "yes"])
|
AM_CONDITIONAL([USE_ASM], [test "$use_asm" = "yes"])
|
||||||
AM_CONDITIONAL([WORDS_BIGENDIAN], [test "$ac_cv_c_bigendian" = "yes"])
|
AM_CONDITIONAL([WORDS_BIGENDIAN], [test "$ac_cv_c_bigendian" = "yes"])
|
||||||
@@ -1864,7 +1864,7 @@ AC_SUBST(SSE42_CXXFLAGS)
|
|||||||
AC_SUBST(SSE41_CXXFLAGS)
|
AC_SUBST(SSE41_CXXFLAGS)
|
||||||
AC_SUBST(CLMUL_CXXFLAGS)
|
AC_SUBST(CLMUL_CXXFLAGS)
|
||||||
AC_SUBST(AVX2_CXXFLAGS)
|
AC_SUBST(AVX2_CXXFLAGS)
|
||||||
AC_SUBST(SHANI_CXXFLAGS)
|
AC_SUBST(X86_SHANI_CXXFLAGS)
|
||||||
AC_SUBST(ARM_CRC_CXXFLAGS)
|
AC_SUBST(ARM_CRC_CXXFLAGS)
|
||||||
AC_SUBST(LIBTOOL_APP_LDFLAGS)
|
AC_SUBST(LIBTOOL_APP_LDFLAGS)
|
||||||
AC_SUBST(USE_SQLITE)
|
AC_SUBST(USE_SQLITE)
|
||||||
|
|||||||
@@ -46,9 +46,9 @@ if ENABLE_AVX2
|
|||||||
LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.a
|
LIBBITCOIN_CRYPTO_AVX2 = crypto/libbitcoin_crypto_avx2.a
|
||||||
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_AVX2)
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_AVX2)
|
||||||
endif
|
endif
|
||||||
if ENABLE_SHANI
|
if ENABLE_X86_SHANI
|
||||||
LIBBITCOIN_CRYPTO_SHANI = crypto/libbitcoin_crypto_shani.a
|
LIBBITCOIN_CRYPTO_X86_SHANI = crypto/libbitcoin_crypto_x86_shani.a
|
||||||
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_SHANI)
|
LIBBITCOIN_CRYPTO += $(LIBBITCOIN_CRYPTO_X86_SHANI)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(wildcard secp256k1/include/*)
|
$(LIBSECP256K1): $(wildcard secp256k1/src/*.h) $(wildcard secp256k1/src/*.c) $(wildcard secp256k1/include/*)
|
||||||
@@ -498,11 +498,11 @@ crypto_libbitcoin_crypto_avx2_a_CXXFLAGS += $(AVX2_CXXFLAGS)
|
|||||||
crypto_libbitcoin_crypto_avx2_a_CPPFLAGS += -DENABLE_AVX2
|
crypto_libbitcoin_crypto_avx2_a_CPPFLAGS += -DENABLE_AVX2
|
||||||
crypto_libbitcoin_crypto_avx2_a_SOURCES = crypto/sha256_avx2.cpp
|
crypto_libbitcoin_crypto_avx2_a_SOURCES = crypto/sha256_avx2.cpp
|
||||||
|
|
||||||
crypto_libbitcoin_crypto_shani_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
crypto_libbitcoin_crypto_x86_shani_a_CXXFLAGS = $(AM_CXXFLAGS) $(PIE_FLAGS)
|
||||||
crypto_libbitcoin_crypto_shani_a_CPPFLAGS = $(AM_CPPFLAGS)
|
crypto_libbitcoin_crypto_x86_shani_a_CPPFLAGS = $(AM_CPPFLAGS)
|
||||||
crypto_libbitcoin_crypto_shani_a_CXXFLAGS += $(SHANI_CXXFLAGS)
|
crypto_libbitcoin_crypto_x86_shani_a_CXXFLAGS += $(X86_SHANI_CXXFLAGS)
|
||||||
crypto_libbitcoin_crypto_shani_a_CPPFLAGS += -DENABLE_SHANI
|
crypto_libbitcoin_crypto_x86_shani_a_CPPFLAGS += -DENABLE_X86_SHANI
|
||||||
crypto_libbitcoin_crypto_shani_a_SOURCES = crypto/sha256_shani.cpp
|
crypto_libbitcoin_crypto_x86_shani_a_SOURCES = crypto/sha256_x86_shani.cpp
|
||||||
|
|
||||||
# consensus: shared between all executables that validate any consensus rules.
|
# consensus: shared between all executables that validate any consensus rules.
|
||||||
libbitcoin_consensus_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
libbitcoin_consensus_a_CPPFLAGS = $(AM_CPPFLAGS) $(BITCOIN_INCLUDES)
|
||||||
|
|||||||
@@ -29,12 +29,12 @@ namespace sha256d64_avx2
|
|||||||
void Transform_8way(unsigned char* out, const unsigned char* in);
|
void Transform_8way(unsigned char* out, const unsigned char* in);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace sha256d64_shani
|
namespace sha256d64_x86_shani
|
||||||
{
|
{
|
||||||
void Transform_2way(unsigned char* out, const unsigned char* in);
|
void Transform_2way(unsigned char* out, const unsigned char* in);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace sha256_shani
|
namespace sha256_x86_shani
|
||||||
{
|
{
|
||||||
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks);
|
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks);
|
||||||
}
|
}
|
||||||
@@ -567,7 +567,7 @@ std::string SHA256AutoDetect()
|
|||||||
bool have_xsave = false;
|
bool have_xsave = false;
|
||||||
bool have_avx = false;
|
bool have_avx = false;
|
||||||
bool have_avx2 = false;
|
bool have_avx2 = false;
|
||||||
bool have_shani = false;
|
bool have_x86_shani = false;
|
||||||
bool enabled_avx = false;
|
bool enabled_avx = false;
|
||||||
|
|
||||||
(void)AVXEnabled;
|
(void)AVXEnabled;
|
||||||
@@ -575,7 +575,7 @@ std::string SHA256AutoDetect()
|
|||||||
(void)have_avx;
|
(void)have_avx;
|
||||||
(void)have_xsave;
|
(void)have_xsave;
|
||||||
(void)have_avx2;
|
(void)have_avx2;
|
||||||
(void)have_shani;
|
(void)have_x86_shani;
|
||||||
(void)enabled_avx;
|
(void)enabled_avx;
|
||||||
|
|
||||||
uint32_t eax, ebx, ecx, edx;
|
uint32_t eax, ebx, ecx, edx;
|
||||||
@@ -589,15 +589,15 @@ std::string SHA256AutoDetect()
|
|||||||
if (have_sse4) {
|
if (have_sse4) {
|
||||||
GetCPUID(7, 0, eax, ebx, ecx, edx);
|
GetCPUID(7, 0, eax, ebx, ecx, edx);
|
||||||
have_avx2 = (ebx >> 5) & 1;
|
have_avx2 = (ebx >> 5) & 1;
|
||||||
have_shani = (ebx >> 29) & 1;
|
have_x86_shani = (ebx >> 29) & 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(ENABLE_SHANI) && !defined(BUILD_BITCOIN_INTERNAL)
|
#if defined(ENABLE_X86_SHANI) && !defined(BUILD_BITCOIN_INTERNAL)
|
||||||
if (have_shani) {
|
if (have_x86_shani) {
|
||||||
Transform = sha256_shani::Transform;
|
Transform = sha256_x86_shani::Transform;
|
||||||
TransformD64 = TransformD64Wrapper<sha256_shani::Transform>;
|
TransformD64 = TransformD64Wrapper<sha256_x86_shani::Transform>;
|
||||||
TransformD64_2way = sha256d64_shani::Transform_2way;
|
TransformD64_2way = sha256d64_x86_shani::Transform_2way;
|
||||||
ret = "shani(1way,2way)";
|
ret = "x86_shani(1way,2way)";
|
||||||
have_sse4 = false; // Disable SSE4/AVX2;
|
have_sse4 = false; // Disable SSE4/AVX2;
|
||||||
have_avx2 = false;
|
have_avx2 = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
// Written and placed in public domain by Jeffrey Walton.
|
// Written and placed in public domain by Jeffrey Walton.
|
||||||
// Based on code from Intel, and by Sean Gulley for the miTLS project.
|
// Based on code from Intel, and by Sean Gulley for the miTLS project.
|
||||||
|
|
||||||
#ifdef ENABLE_SHANI
|
#ifdef ENABLE_X86_SHANI
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
@@ -74,7 +74,7 @@ void inline __attribute__((always_inline)) Save(unsigned char* out, __m128i s)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace sha256_shani {
|
namespace sha256_x86_shani {
|
||||||
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
|
void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
|
||||||
{
|
{
|
||||||
__m128i m0, m1, m2, m3, s0, s1, so0, so1;
|
__m128i m0, m1, m2, m3, s0, s1, so0, so1;
|
||||||
@@ -139,7 +139,7 @@ void Transform(uint32_t* s, const unsigned char* chunk, size_t blocks)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace sha256d64_shani {
|
namespace sha256d64_x86_shani {
|
||||||
|
|
||||||
void Transform_2way(unsigned char* out, const unsigned char* in)
|
void Transform_2way(unsigned char* out, const unsigned char* in)
|
||||||
{
|
{
|
||||||
Reference in New Issue
Block a user