Wladimir J. van der Laan
16240f43a5
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
2017-07-20 20:28:35 +02:00
..
2017-07-20 09:03:53 -07:00
2017-05-31 22:21:25 +02:00
2017-07-15 14:28:40 +02:00
2017-07-20 09:03:53 -07:00
2017-06-22 19:18:10 +03:00
2017-07-20 16:56:45 +02:00
2017-07-15 12:22:50 -07:00
2017-07-18 15:54:38 +02:00
2017-07-20 17:02:07 +02:00
2017-07-07 10:45:31 -07:00
2017-06-22 19:18:10 +03:00
2017-06-28 02:12:06 +02:00
2017-07-20 20:28:35 +02:00
2017-07-20 17:02:07 +02:00
2017-06-28 02:12:06 +02:00
2017-07-04 18:05:18 +02:00
2017-06-01 16:42:07 -07:00
2017-06-01 16:42:07 -07:00
2017-04-24 14:28:49 +02:00
2017-04-24 14:28:49 +02:00
2017-05-03 18:00:13 +02:00
2017-06-07 17:21:29 +00:00
2017-06-07 17:21:29 +00:00
2017-07-08 13:33:01 -07:00
2017-07-08 13:33:01 -07:00
2017-07-19 15:44:20 -04:00
2017-07-14 19:24:17 +00:00
2017-07-17 14:56:52 +02:00
2017-07-15 14:28:40 +02:00
2017-06-22 03:48:52 +02:00
2017-06-26 10:45:48 -07:00
2017-06-26 10:45:48 -07:00
2017-06-22 15:21:22 -04:00
2017-06-22 15:21:22 -04:00
2017-05-03 18:15:47 +02:00
2017-05-03 18:15:47 +02:00
2017-06-22 03:48:52 +02:00
2017-06-22 03:48:52 +02:00
2017-04-07 14:37:25 -04:00
2017-07-14 19:24:17 +00:00
2017-06-28 11:44:22 -07:00
2017-07-08 13:33:01 -07:00
2017-07-07 10:45:31 -07:00
2017-07-12 14:03:42 -04:00
2017-07-14 19:24:17 +00:00
2017-06-24 11:28:04 +02:00
2017-06-26 13:40:26 +02:00
2017-05-26 13:33:39 -07:00
2017-06-09 10:25:26 +02:00
2017-05-19 02:01:28 -07:00
2017-07-08 13:33:01 -07:00
2017-05-26 13:24:25 -07:00
2017-07-17 11:56:00 +02:00
2017-06-12 20:37:43 +02:00
2017-07-17 17:42:09 +02:00
2017-07-17 17:42:09 +02:00
2017-07-20 20:28:35 +02:00
2017-07-17 14:56:52 +02:00
2017-07-08 13:37:06 -07:00
2017-04-26 21:20:02 +02:00
2017-06-09 10:25:26 +02:00
2017-06-28 02:12:06 +02:00
2017-07-20 09:03:53 -07:00
2017-06-09 19:25:36 -07:00
2017-07-13 12:49:05 -04:00
2017-06-09 19:25:36 -07:00
2017-06-09 19:25:36 -07:00
2017-07-17 17:42:21 +02:00
2017-06-22 03:48:52 +02:00
2017-07-17 15:12:39 -07:00
2017-07-12 10:48:37 -05:00
2017-06-05 20:10:50 +02:00
2017-06-12 20:37:43 +02:00
2017-07-04 18:05:18 +02:00
2017-06-05 16:33:35 -04:00
2017-07-08 13:31:47 -07:00
2017-07-04 18:05:18 +02:00
2017-07-08 13:33:01 -07:00
2017-06-14 18:05:00 -04:00
2017-07-15 13:26:49 -07:00
2017-07-12 17:06:15 -04:00
2017-07-14 20:52:38 -04:00
2017-06-26 13:40:26 +02:00
2017-07-16 21:22:05 +02:00
2017-07-08 13:31:47 -07:00
2017-07-17 13:14:53 -04:00
2017-06-14 15:22:15 +02:00
2017-06-22 19:18:10 +03:00
2017-06-22 03:48:42 +02:00
2017-07-10 21:08:19 -04:00
2017-07-10 21:08:19 -04:00
2017-07-08 13:33:01 -07:00
2017-07-08 13:33:01 -07:00
2017-06-22 03:48:52 +02:00
2017-06-09 10:25:26 +02:00
2017-06-22 03:48:52 +02:00
2017-07-08 13:33:01 -07:00
2017-07-07 10:45:31 -07:00
2017-06-28 18:26:41 +02:00
2017-07-04 18:05:18 +02:00
2017-06-28 11:22:00 -07:00
2017-06-29 17:48:08 +02:00
2017-07-14 19:24:17 +00:00
2017-06-27 16:29:11 +02:00
2017-07-16 21:22:05 +02:00
2017-07-15 13:26:49 -07:00
2017-07-12 17:06:15 -04:00
2017-05-10 15:49:00 -04:00
2017-05-10 15:49:00 -04:00
2017-07-20 17:34:54 +02:00
2017-07-18 15:54:38 +02:00
2017-07-07 12:55:57 -04:00
2017-07-15 20:04:04 +02:00
2017-06-09 01:45:36 +02:00
2017-06-28 02:12:06 +02:00
2017-05-30 19:21:52 +02:00
2017-07-18 15:54:38 +02:00