mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-06 07:43:10 +00:00
hash function optimization
This commit is contained in:
parent
70475a5a87
commit
40f90d8312
@ -192,14 +192,10 @@ g_functions_return:
|
||||
|
||||
// Finalize hash value.
|
||||
// stack: cur_block, retdest
|
||||
%blake2b_generate_new_hash_value(7)
|
||||
%blake2b_generate_new_hash_value(6)
|
||||
%blake2b_generate_new_hash_value(5)
|
||||
%blake2b_generate_new_hash_value(4)
|
||||
%blake2b_generate_new_hash_value(3)
|
||||
%blake2b_generate_new_hash_value(2)
|
||||
%blake2b_generate_new_hash_value(1)
|
||||
%blake2b_generate_new_hash_value(0)
|
||||
PUSH hash_generate_return
|
||||
// stack: hash_generate_return, cur_block, retdest
|
||||
%jump(blake2b_generate_all_hash_values)
|
||||
hash_generate_return:
|
||||
// stack: h_0', h_1', h_2', h_3', h_4', h_5', h_6', h_7', cur_block, retdest
|
||||
DUP9
|
||||
// stack: cur_block, h_0', h_1', h_2', h_3', h_4', h_5', h_6', h_7', cur_block, retdest
|
||||
|
||||
@ -1,18 +1,91 @@
|
||||
%macro blake2b_generate_new_hash_value(i)
|
||||
blake2b_generate_new_hash_value:
|
||||
// stack: i, retdest
|
||||
%blake2b_hash_value_addr
|
||||
%add_const($i)
|
||||
// stack: addr, i, retdest
|
||||
DUP2
|
||||
ADD
|
||||
%mload_kernel_general
|
||||
// stack: h_i, ...
|
||||
// stack: h_i, i, retdest
|
||||
%blake2b_internal_state_addr
|
||||
%add_const($i)
|
||||
// stack: addr, h_i, i, retdest
|
||||
DUP3
|
||||
ADD
|
||||
%mload_kernel_general
|
||||
// stack: v_i, h_i, ...
|
||||
// stack: v_i, h_i, i, retdest
|
||||
%blake2b_internal_state_addr
|
||||
%add_const($i)
|
||||
// stack: addr, v_i, h_i, i, retdest
|
||||
DUP4
|
||||
ADD
|
||||
%add_const(8)
|
||||
%mload_kernel_general
|
||||
// stack: v_(i+8), v_i, h_i, ...
|
||||
// stack: v_(i+8), v_i, h_i, i, retdest
|
||||
XOR
|
||||
XOR
|
||||
// stack: h_i' = v_(i+8) ^ v_i ^ h_i, ...
|
||||
%endmacro
|
||||
// stack: h_i' = v_(i+8) ^ v_i ^ h_i, i, retdest
|
||||
SWAP1
|
||||
POP
|
||||
// stack: h_i', retdest
|
||||
SWAP1
|
||||
JUMP
|
||||
|
||||
global blake2b_generate_all_hash_values:
|
||||
// stack: retdest
|
||||
PUSH blake2b_generate_hash_return_7
|
||||
// stack: blake2b_generate_hash_return_7, retdest
|
||||
PUSH 7
|
||||
// stack: 7, blake2b_generate_hash_return_7, retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_7:
|
||||
// stack: h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_6
|
||||
// stack: blake2b_generate_hash_return_6, h_7', retdest
|
||||
PUSH 6
|
||||
// stack: 6, blake2b_generate_hash_return_6, h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_6:
|
||||
// stack: h_6', h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_5
|
||||
// stack: blake2b_generate_hash_return_5, h_6', h_7', retdest
|
||||
PUSH 5
|
||||
// stack: 5, blake2b_generate_hash_return_5, h_6', h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_5:
|
||||
// stack: h_5', h_6', h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_4
|
||||
// stack: blake2b_generate_hash_return_4, h_5', h_6', h_7', retdest
|
||||
PUSH 4
|
||||
// stack: 4, blake2b_generate_hash_return_4, h_5', h_6', h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_4:
|
||||
// stack: h_4', h_5', h_6', h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_3
|
||||
// stack: blake2b_generate_hash_return_3, h_4', h_5', h_6', h_7', retdest
|
||||
PUSH 3
|
||||
// stack: 3, blake2b_generate_hash_return_3, h_4', h_5', h_6', h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_3:
|
||||
// stack: h_3', h_4', h_5', h_6', h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_2
|
||||
// stack: blake2b_generate_hash_return_2, h_3', h_4', h_5', h_6', h_7', retdest
|
||||
PUSH 2
|
||||
// stack: 2, blake2b_generate_hash_return_2, h_3', h_4', h_5', h_6', h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_2:
|
||||
// stack: h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_1
|
||||
// stack: blake2b_generate_hash_return_1, h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
PUSH 1
|
||||
// stack: 1, blake2b_generate_hash_return_1, h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_1:
|
||||
// stack: h_1', h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
PUSH blake2b_generate_hash_return_0
|
||||
// stack: blake2b_generate_hash_return_0, h_1', h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
PUSH 0
|
||||
// stack: 0, blake2b_generate_hash_return_0, h_1', h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
%jump(blake2b_generate_new_hash_value)
|
||||
blake2b_generate_hash_return_0:
|
||||
// stack: h_0', h_1', h_2', h_3', h_4', h_5', h_6', h_7', retdest
|
||||
%stack (h: 8, ret) -> (ret, h)
|
||||
// stack: retdest, h_0', h_1', h_2', h_3', h_4', h_5', h_6', h_7'
|
||||
JUMP
|
||||
Loading…
x
Reference in New Issue
Block a user