Chris Tate
72e22ed0ed
Run SHA-384 and SHA-512 blocks with AVX2, AVX-512VL or the arm64 SHA-512 instructions
...
SHA-384, SHA-512, SHA-512/224 and SHA-512/256 (createHash, createHmac,
crypto.hash, pbkdf2, hkdf) process their blocks with the fastest kernel
the CPU supports:
- x86-64 with AVX2 and BMI2: the message schedule is computed two words
at a time in vector registers, interleaved with the scalar rounds,
which rotate with RORX.
- x86-64 with AVX-512VL: the same, with vector rotates and three-input
XOR in the schedule.
- arm64 with the SHA-512 extension: SHA512H, SHA512H2, SHA512SU0 and
SHA512SU1.
- Otherwise the portable blocks, now unrolled over a 16-word schedule
ring.
The CPU and OS checks run once and are cached. The update and final
paths pass all their whole blocks to the kernel in one call.
test_sha_kernels.c checks the FIPS 180-4 SHA-384 and SHA-512 vectors
through every kernel the CPU supports and compares each kernel with the
portable blocks over every length from 0 to 1100 bytes and 1 MiB, whole
and in 1-, 7-, 64- and 100-byte updates. Corpus 5779 compares SHA-384,
SHA-512 and HMAC-SHA512 digests over many lengths and update sizes with
Node; tests/harness/corpus-costs/ records its plain and sanitized costs.
2026-10-19 23:22:23 -05:00
..
2026-10-12 12:25:30 -05:00
2026-10-19 01:14:20 -05:00
2026-10-19 01:14:20 -05:00
2026-10-11 07:08:22 -07:00
2026-10-19 03:18:36 -05:00
2026-10-18 18:25:56 -05:00
2026-10-18 21:53:14 -05:00
2026-10-15 22:01:38 -05:00
2026-10-19 08:15:47 -05:00
2026-10-19 06:29:28 -05:00
2026-10-19 08:15:47 -05:00
2026-09-26 19:09:54 -05:00
2026-10-05 17:51:24 -05:00
2026-10-15 02:27:13 -05:00
2026-10-13 12:29:07 -05:00
2026-10-15 02:06:23 -05:00
2026-10-18 08:17:24 -07:00
2026-10-15 02:06:23 -05:00
2026-10-18 18:05:09 -05:00
2026-10-18 16:03:19 -07:00
2026-10-18 19:34:12 -07:00
2026-10-16 01:39:10 -05:00
2026-10-18 21:53:14 -05:00
2026-10-18 21:53:14 -05:00
2026-10-18 21:53:14 -05:00
2026-10-14 04:53:07 -05:00
2026-10-15 02:06:23 -05:00
2026-10-15 01:18:54 -05:00
2026-10-13 18:55:55 -05:00
2026-10-17 11:06:47 -05:00
2026-10-15 02:06:23 -05:00
2026-10-17 11:06:47 -05:00
2026-10-07 19:07:02 -05:00
2026-10-07 19:07:02 -05:00
2026-10-16 00:06:31 -05:00
2026-10-18 00:42:37 -05:00
2026-10-18 09:09:03 -05:00
2026-10-19 17:06:58 -05:00
2026-10-18 21:24:49 -05:00
2026-10-15 14:15:33 -05:00
2026-10-15 02:06:23 -05:00
2026-10-18 21:53:14 -05:00
2026-10-18 09:09:03 -05:00
2026-10-15 21:43:27 -05:00
2026-10-19 18:10:54 -05:00
2026-10-19 20:27:22 -05:00
2026-10-17 11:41:29 -05:00
2026-10-17 11:41:29 -05:00
2026-10-18 03:52:20 -05:00
2026-10-18 03:52:20 -05:00
2026-10-18 07:44:23 -05:00
2026-10-18 07:44:23 -05:00
2026-10-18 15:57:42 -07:00
2026-10-18 15:15:05 -07:00
2026-10-19 21:06:20 -05:00
2026-10-19 21:06:20 -05:00
2026-10-18 20:25:10 -05:00
2026-08-16 22:59:02 -05:00
2026-10-07 19:07:02 -05:00
2026-10-15 02:06:23 -05:00
2026-10-15 23:58:50 -05:00
2026-10-15 23:58:50 -05:00
2026-10-16 21:53:32 -05:00
2026-10-16 21:06:22 -05:00
2026-10-15 23:58:50 -05:00
2026-10-16 08:16:46 -05:00
2026-10-19 02:40:22 -05:00
2026-10-15 07:59:19 -05:00
2026-09-28 19:01:50 -05:00
2026-10-13 19:48:11 -05:00
2026-10-14 23:20:57 -05:00
2026-10-17 19:42:11 -05:00
2026-10-18 01:06:58 -05:00
2026-10-19 03:19:31 -05:00
2026-10-17 18:23:08 -05:00
2026-10-14 08:10:02 -05:00
2026-10-14 17:27:02 -05:00
2026-10-19 22:31:09 -05:00
2026-10-19 03:37:40 -05:00
2026-10-18 05:15:17 -05:00
2026-10-15 21:44:38 -05:00
2026-10-18 05:15:17 -05:00
2026-10-15 19:59:56 -05:00
2026-10-18 15:11:32 -07:00
2026-10-18 15:11:32 -07:00
2026-10-19 19:51:44 -05:00
2026-10-18 09:15:21 -07:00
2026-10-17 10:55:47 -07:00
2026-10-14 22:15:06 -05:00
2026-10-08 15:40:53 -05:00
2026-10-19 23:22:23 -05:00
2026-10-18 05:31:40 -05:00
2026-10-17 23:40:06 -05:00
2026-08-23 20:16:13 -05:00
2026-10-14 11:43:44 -05:00
2026-08-23 20:16:13 -05:00
2026-10-17 11:06:47 -05:00
2026-10-17 11:06:47 -05:00
2026-10-07 19:07:02 -05:00
2026-10-07 19:07:02 -05:00
2026-10-18 13:31:56 -07:00
2026-10-17 03:35:02 -05:00
2026-10-16 07:27:17 -05:00
2026-10-14 22:15:06 -05:00
2026-10-18 15:19:38 -07:00
2026-10-17 11:06:47 -05:00
2026-10-18 22:06:48 -05:00
2026-10-18 15:19:38 -07:00
2026-08-23 20:16:13 -05:00
2026-10-18 01:06:58 -05:00
2026-10-18 01:06:58 -05:00
2026-10-19 15:52:52 -07:00
2026-10-18 15:55:12 -07:00
2026-10-19 08:56:48 -05:00
2026-10-06 13:07:11 -05:00
2026-10-06 13:07:11 -05:00
2026-10-06 13:07:11 -05:00
2026-10-17 12:24:47 -07:00
2026-10-15 02:06:23 -05:00
2026-10-18 16:05:10 -07:00
2026-10-18 16:03:19 -07:00
2026-10-14 11:43:44 -05:00
2026-10-15 07:59:19 -05:00
2026-10-16 07:27:17 -05:00
2026-08-23 20:16:13 -05:00
2026-10-18 18:25:56 -05:00
2026-10-17 17:54:52 -05:00
2026-10-15 02:06:23 -05:00
2026-10-18 21:24:49 -05:00
2026-10-17 02:10:27 -05:00
2026-10-17 11:06:19 -05:00
2026-10-17 02:10:27 -05:00
2026-10-17 02:10:27 -05:00
2026-10-17 02:10:27 -05:00
2026-10-13 07:48:24 -05:00
2026-10-19 08:56:48 -05:00
2026-10-19 03:18:36 -05:00
2026-10-19 03:31:48 -05:00
2026-10-18 06:23:44 -07:00
2026-10-17 11:26:12 -07:00
2026-10-17 11:26:12 -07:00
2026-10-18 04:11:02 -05:00
2026-10-16 00:06:31 -05:00
2026-10-16 00:06:31 -05:00
2026-10-16 00:06:31 -05:00
2026-10-18 04:11:02 -05:00
2026-10-18 04:11:02 -05:00
2026-10-18 04:11:02 -05:00
2026-10-18 04:11:02 -05:00
2026-10-15 21:10:22 -05:00
2026-10-17 17:57:22 -05:00
2026-10-17 11:06:47 -05:00
2026-10-18 15:55:12 -07:00
2026-10-19 18:10:54 -05:00
2026-10-19 18:10:54 -05:00
2026-10-19 15:52:52 -07:00
2026-10-15 08:35:14 -05:00
2026-10-14 17:27:02 -05:00
2026-10-19 21:06:20 -05:00
2026-10-19 06:29:28 -05:00
2026-10-14 17:27:02 -05:00
2026-10-03 05:38:29 -05:00
2026-10-18 20:20:05 -05:00
2026-10-07 19:07:02 -05:00
2026-10-18 01:06:58 -05:00
2026-10-15 17:46:09 -05:00
2026-10-14 04:53:07 -05:00
2026-10-15 02:06:23 -05:00
2026-10-14 17:27:02 -05:00
2026-10-14 11:30:47 -05:00
2026-10-13 19:48:11 -05:00
2026-10-18 11:45:47 -07:00
2026-10-18 06:23:56 -07:00
2026-10-18 21:53:14 -05:00
2026-10-16 00:06:31 -05:00
2026-10-14 17:27:02 -05:00
2026-10-12 12:25:30 -05:00
2026-10-14 11:43:44 -05:00
2026-10-15 02:06:23 -05:00
2026-10-19 05:34:26 -07:00
2026-08-10 12:21:11 -05:00
2026-09-29 20:54:09 -05:00
2026-10-18 03:43:06 -05:00
2026-10-17 17:57:22 -05:00
2026-10-17 12:36:51 -05:00
2026-10-17 11:06:47 -05:00
2026-10-17 11:06:47 -05:00
2026-10-18 14:02:03 -05:00
2026-10-18 14:02:03 -05:00
2026-10-18 09:52:17 -05:00