code wiki / (root) / _sha512_kernel_soft.nx

_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}