aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2017-07-20 20:16:28 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2017-07-20 20:28:35 +0200
commit16240f43a550c9b0c34d541df5fa80c2fb43d17c (patch)
treec11cfd3de39043f74eb7002c0a8a585ced03e906 /src/test
parent7c2400cb8ab7ebd5fe374b1f69657e0b0718ab73 (diff)
parent6b8d872e5e2dd68a5229ec55f5261dae34ff9bdb (diff)
downloadbitcoin-16240f43a550c9b0c34d541df5fa80c2fb43d17c.tar.xz
Merge #10821: Add SSE4 optimized SHA256
6b8d872 Protect SSE4 code behind a compile-time flag (Pieter Wuille) fa9be90 Add selftest for SHA256 transform (Pieter Wuille) c1ccb15 Add SSE4 based SHA256 (Pieter Wuille) 2991c91 Add SHA256 dispatcher (Pieter Wuille) 4d50f38 Support multi-block SHA256 transforms (Pieter Wuille) Pull request description: This adds an SSE4 assembly version of the SHA256 transform by Intel, and uses it at run time if SSE4 instructions are available, and use a fallback C++ implementation otherwise. Nearly every x86_64 CPU supports SSE4. The feature is only enabled when compiled with `--enable-experimental-asm`. In order to avoid build dependencies and other complications, the original Intel YASM code was translated to GCC extended asm syntax. This gives around a 50% speedup on the SHA256 benchmark for me. It is based on an earlier patch by @laanwj, though only includes a single assembly version (for now), and removes the YASM dependency. Tree-SHA512: d31c50695ceb45264291537b93c0d7497670be38edf021ca5402eaa7d4e1e0e1ae492326e28d4e93979d066168129e62d1825e0384b1b906d36f85d93dfcb43c
Diffstat (limited to 'src/test')
-rw-r--r--src/test/test_bitcoin.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/test/test_bitcoin.cpp b/src/test/test_bitcoin.cpp
index 3ba81ed17b..0dd51a4908 100644
--- a/src/test/test_bitcoin.cpp
+++ b/src/test/test_bitcoin.cpp
@@ -7,6 +7,7 @@
#include "chainparams.h"
#include "consensus/consensus.h"
#include "consensus/validation.h"
+#include "crypto/sha256.h"
#include "fs.h"
#include "key.h"
#include "validation.h"
@@ -33,6 +34,7 @@ extern void noui_connect();
BasicTestingSetup::BasicTestingSetup(const std::string& chainName)
{
+ SHA256AutoDetect();
RandomInit();
ECC_Start();
SetupEnvironment();