_sha512_kernel_soft.nx source
↩ module page · 21 lines · 718 B
1// _sha512_kernel_soft.nx -- same SHA-512 rotation kernel but using
2// SOFT shift+mask+or fallback rotates. Same loop shape; the only
3// difference is the rotate function called.
4
5import "syscalls.nx"
6import "nx_bits.nx"
7
8func main() -> i64 {
9 let iters: i64 = 100000000
10 var acc: i64 = 0
11 var x: i64 = 0xCAFEBABE12345678
12 var i: i64 = 0
13 while i < iters {
14 let s0: i64 = nx_bits_rotr64_soft(x, 28) ^ nx_bits_rotr64_soft(x, 34) ^ nx_bits_rotr64_soft(x, 39)
15 let s1: i64 = nx_bits_rotr64_soft(x, 14) ^ nx_bits_rotr64_soft(x, 18) ^ nx_bits_rotr64_soft(x, 41)
16 acc = acc + s0 + s1
17 x = x * 6364136223846793005 + 1442695040888963407
18 i = i + 1
19 }
20 return acc & 0
21}