mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-05 07:13:08 +00:00
Merge pull request #766 from mir-protocol/more_inc_dec_macros
Some more uses of %increment, %decrement
This commit is contained in:
commit
39fc7a2a9e
@ -22,7 +22,7 @@ count_zeros_loop:
|
||||
// stack: zeros', i, retdest
|
||||
SWAP1
|
||||
// stack: i, zeros', retdest
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: i', zeros', retdest
|
||||
%jump(count_zeros_loop)
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
%macro next_context_id
|
||||
// stack: (empty)
|
||||
%mload_global_metadata(@GLOBAL_METADATA_LARGEST_CONTEXT)
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: new_ctx
|
||||
DUP1
|
||||
%mstore_global_metadata(@GLOBAL_METADATA_LARGEST_CONTEXT)
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
%shl_const(8)
|
||||
// stack: c_3 << 8, offset
|
||||
DUP2
|
||||
%add_const(1)
|
||||
%increment
|
||||
%mload_kernel($segment)
|
||||
OR
|
||||
// stack: (c_3 << 8) | c_2, offset
|
||||
@ -91,7 +91,7 @@
|
||||
%mload_kernel($segment)
|
||||
// stack: c0 , offset
|
||||
DUP2
|
||||
%add_const(1)
|
||||
%increment
|
||||
%mload_kernel($segment)
|
||||
%shl_const(8)
|
||||
OR
|
||||
@ -208,7 +208,7 @@
|
||||
// stack: c_2, c_1, c_0, offset
|
||||
DUP4
|
||||
// stack: offset, c_2, c_1, c_0, offset
|
||||
%add_const(1)
|
||||
%increment
|
||||
%mstore_kernel($segment)
|
||||
// stack: c_1, c_0, offset
|
||||
DUP3
|
||||
|
||||
@ -28,15 +28,15 @@ global memcpy:
|
||||
|
||||
// Increment dst_addr.
|
||||
SWAP2
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP2
|
||||
// Increment src_addr.
|
||||
SWAP5
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP5
|
||||
// Decrement count.
|
||||
SWAP6
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
SWAP6
|
||||
|
||||
// Continue the loop.
|
||||
|
||||
@ -71,9 +71,9 @@ mstore_unpacking_loop:
|
||||
// stack: i, context, segment, offset, value, len, retdest
|
||||
|
||||
// Increment offset.
|
||||
SWAP3 %add_const(1) SWAP3
|
||||
SWAP3 %increment SWAP3
|
||||
// Increment i.
|
||||
%add_const(1)
|
||||
%increment
|
||||
|
||||
%jump(mstore_unpacking_loop)
|
||||
|
||||
|
||||
@ -82,7 +82,7 @@ global encode_node:
|
||||
DUP1 %mload_trie_data
|
||||
// stack: node_type, node_ptr, encode_value, retdest
|
||||
// Increment node_ptr, so it points to the node payload instead of its type.
|
||||
SWAP1 %add_const(1) SWAP1
|
||||
SWAP1 %increment SWAP1
|
||||
// stack: node_type, node_payload_ptr, encode_value, retdest
|
||||
|
||||
DUP1 %eq_const(@MPT_NODE_EMPTY) %jumpi(encode_node_empty)
|
||||
@ -214,7 +214,7 @@ encode_node_extension_after_encode_child:
|
||||
PUSH encode_node_extension_after_hex_prefix // retdest
|
||||
PUSH 0 // terminated
|
||||
// stack: terminated, encode_node_extension_after_hex_prefix, result, result_len, node_payload_ptr, retdest
|
||||
DUP5 %add_const(1) %mload_trie_data // Load the packed_nibbles field, which is at index 1.
|
||||
DUP5 %increment %mload_trie_data // Load the packed_nibbles field, which is at index 1.
|
||||
// stack: packed_nibbles, terminated, encode_node_extension_after_hex_prefix, result, result_len, node_payload_ptr, retdest
|
||||
DUP6 %mload_trie_data // Load the num_nibbles field, which is at index 0.
|
||||
// stack: num_nibbles, packed_nibbles, terminated, encode_node_extension_after_hex_prefix, result, result_len, node_payload_ptr, retdest
|
||||
@ -247,7 +247,7 @@ encode_node_leaf:
|
||||
PUSH encode_node_leaf_after_hex_prefix // retdest
|
||||
PUSH 1 // terminated
|
||||
// stack: terminated, encode_node_leaf_after_hex_prefix, node_payload_ptr, encode_value, retdest
|
||||
DUP3 %add_const(1) %mload_trie_data // Load the packed_nibbles field, which is at index 1.
|
||||
DUP3 %increment %mload_trie_data // Load the packed_nibbles field, which is at index 1.
|
||||
// stack: packed_nibbles, terminated, encode_node_leaf_after_hex_prefix, node_payload_ptr, encode_value, retdest
|
||||
DUP4 %mload_trie_data // Load the num_nibbles field, which is at index 0.
|
||||
// stack: num_nibbles, packed_nibbles, terminated, encode_node_leaf_after_hex_prefix, node_payload_ptr, encode_value, retdest
|
||||
|
||||
@ -48,7 +48,7 @@ encode_account:
|
||||
DUP2 %mload_trie_data // nonce = value[0]
|
||||
%rlp_scalar_len
|
||||
// stack: nonce_rlp_len, rlp_pos, value_ptr, retdest
|
||||
DUP3 %add_const(1) %mload_trie_data // balance = value[1]
|
||||
DUP3 %increment %mload_trie_data // balance = value[1]
|
||||
%rlp_scalar_len
|
||||
// stack: balance_rlp_len, nonce_rlp_len, rlp_pos, value_ptr, retdest
|
||||
PUSH 66 // storage_root and code_hash fields each take 1 + 32 bytes
|
||||
@ -68,7 +68,7 @@ encode_account:
|
||||
// stack: nonce, rlp_pos_3, value_ptr, retdest
|
||||
SWAP1 %encode_rlp_scalar
|
||||
// stack: rlp_pos_4, value_ptr, retdest
|
||||
DUP2 %add_const(1) %mload_trie_data // balance = value[1]
|
||||
DUP2 %increment %mload_trie_data // balance = value[1]
|
||||
// stack: balance, rlp_pos_4, value_ptr, retdest
|
||||
SWAP1 %encode_rlp_scalar
|
||||
// stack: rlp_pos_5, value_ptr, retdest
|
||||
|
||||
@ -15,7 +15,7 @@ global hex_prefix_rlp:
|
||||
|
||||
// Compute the length of the hex-prefix string, in bytes:
|
||||
// hp_len = num_nibbles / 2 + 1 = i + 1
|
||||
DUP1 %add_const(1)
|
||||
DUP1 %increment
|
||||
// stack: hp_len, i, rlp_pos, num_nibbles, packed_nibbles, terminated, retdest
|
||||
|
||||
// Write the RLP header.
|
||||
@ -35,7 +35,7 @@ rlp_header_medium:
|
||||
%mstore_rlp
|
||||
|
||||
// rlp_pos += 1
|
||||
SWAP2 %add_const(1) SWAP2
|
||||
SWAP2 %increment SWAP2
|
||||
|
||||
%jump(start_loop)
|
||||
|
||||
@ -49,7 +49,7 @@ rlp_header_large:
|
||||
%mstore_rlp
|
||||
|
||||
DUP1 // value = hp_len
|
||||
DUP4 %add_const(1) // offset = rlp_pos + 1
|
||||
DUP4 %increment // offset = rlp_pos + 1
|
||||
%mstore_rlp
|
||||
|
||||
// rlp_pos += 2
|
||||
@ -74,7 +74,7 @@ loop:
|
||||
%mstore_rlp
|
||||
|
||||
// stack: i, hp_len, rlp_pos, num_nibbles, packed_nibbles, terminated, retdest
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
SWAP4 %shr_const(8) SWAP4 // packed_nibbles >>= 8
|
||||
%jump(loop)
|
||||
|
||||
|
||||
@ -111,7 +111,7 @@ load_mpt_extension:
|
||||
// one element, appending our child pointer. Thus our child node will start
|
||||
// at i + 1. So we will set our child pointer to i + 1.
|
||||
%get_trie_data_size
|
||||
%add_const(1)
|
||||
%increment
|
||||
%append_to_trie_data
|
||||
// stack: retdest
|
||||
|
||||
@ -172,7 +172,7 @@ load_mpt_digest:
|
||||
// stack: leaf_part, leaf_len
|
||||
%append_to_trie_data
|
||||
// stack: leaf_len
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
// stack: leaf_len'
|
||||
%jump(%%loop)
|
||||
%%finish:
|
||||
|
||||
@ -31,7 +31,7 @@ global mpt_read:
|
||||
%mload_trie_data
|
||||
// stack: node_type, node_ptr, num_nibbles, key, retdest
|
||||
// Increment node_ptr, so it points to the node payload instead of its type.
|
||||
SWAP1 %add_const(1) SWAP1
|
||||
SWAP1 %increment SWAP1
|
||||
// stack: node_type, node_payload_ptr, num_nibbles, key, retdest
|
||||
|
||||
DUP1 %eq_const(@MPT_NODE_EMPTY) %jumpi(mpt_read_empty)
|
||||
@ -103,7 +103,7 @@ mpt_read_extension:
|
||||
%mul_const(4) SHR // key_part = key >> (future_nibbles * 4)
|
||||
DUP1
|
||||
// stack: key_part, key_part, future_nibbles, key, node_payload_ptr, retdest
|
||||
DUP5 %add_const(1) %mload_trie_data
|
||||
DUP5 %increment %mload_trie_data
|
||||
// stack: node_key, key_part, key_part, future_nibbles, key, node_payload_ptr, retdest
|
||||
EQ // does the first part of our key match the node's key?
|
||||
%jumpi(mpt_read_extension_found)
|
||||
@ -131,7 +131,7 @@ mpt_read_leaf:
|
||||
// stack: node_payload_ptr, num_nibbles, key, retdest
|
||||
DUP1 %mload_trie_data
|
||||
// stack: node_num_nibbles, node_payload_ptr, num_nibbles, key, retdest
|
||||
DUP2 %add_const(1) %mload_trie_data
|
||||
DUP2 %increment %mload_trie_data
|
||||
// stack: node_key, node_num_nibbles, node_payload_ptr, num_nibbles, key, retdest
|
||||
SWAP3
|
||||
// stack: num_nibbles, node_num_nibbles, node_payload_ptr, node_key, key, retdest
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
%get_trie_data_size
|
||||
// stack: trie_data_size, value
|
||||
DUP1
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: trie_data_size', trie_data_size, value
|
||||
%set_trie_data_size
|
||||
// stack: trie_data_size, value
|
||||
@ -45,7 +45,7 @@
|
||||
// return (first_nibble, num_nibbles, key)
|
||||
%macro split_first_nibble
|
||||
// stack: num_nibbles, key
|
||||
%sub_const(1) // num_nibbles -= 1
|
||||
%decrement // num_nibbles -= 1
|
||||
// stack: num_nibbles, key
|
||||
DUP2
|
||||
// stack: key, num_nibbles, key
|
||||
|
||||
@ -44,7 +44,7 @@ store_input_stack:
|
||||
// stack: offset, byte, rem, length, REM_INP
|
||||
%mstore_kernel_general
|
||||
// stack: rem, length, REM_INP
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
DUP1
|
||||
// stack: rem - 1, rem - 1, length, REM_INP
|
||||
%jumpi(store_input_stack)
|
||||
@ -66,10 +66,10 @@ store_input:
|
||||
// stack: offset, byte, rem , ADDR , length
|
||||
%mstore_kernel_general
|
||||
// stack: rem , ADDR , length
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
// stack: rem-1, ADDR , length
|
||||
SWAP3
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP3
|
||||
// stack: rem-1, ADDR+1, length
|
||||
DUP1
|
||||
@ -90,12 +90,12 @@ global buffer_update:
|
||||
// stack: get, set, get , set , times , retdest
|
||||
%mupdate_kernel_general
|
||||
// stack: get , set , times , retdest
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP1
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP1
|
||||
SWAP2
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
SWAP2
|
||||
// stack: get+1, set+1, times-1, retdest
|
||||
DUP3
|
||||
@ -112,7 +112,7 @@ global buffer_update:
|
||||
// stack: offset = N-i, 0, i
|
||||
%mstore_kernel_general
|
||||
// stack: i
|
||||
%sub_const(1)
|
||||
%decrement
|
||||
DUP1
|
||||
// stack: i-1, i-1
|
||||
%jumpi($label)
|
||||
|
||||
@ -36,7 +36,7 @@ decode_rlp_string_len_medium:
|
||||
%sub_const(0x80)
|
||||
// stack: len, pos, retdest
|
||||
SWAP1
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: pos', len, retdest
|
||||
%stack (pos, len, retdest) -> (retdest, pos, len)
|
||||
JUMP
|
||||
@ -47,7 +47,7 @@ decode_rlp_string_len_large:
|
||||
%sub_const(0xb7)
|
||||
// stack: len_of_len, pos, retdest
|
||||
SWAP1
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: pos', len_of_len, retdest
|
||||
%jump(decode_int_given_len)
|
||||
|
||||
@ -92,7 +92,7 @@ global decode_rlp_list_len:
|
||||
%mload_current(@SEGMENT_RLP_RAW)
|
||||
// stack: first_byte, pos, retdest
|
||||
SWAP1
|
||||
%add_const(1) // increment pos
|
||||
%increment // increment pos
|
||||
SWAP1
|
||||
// stack: first_byte, pos', retdest
|
||||
// If first_byte is >= 0xf8, it's a > 55 byte list, and
|
||||
@ -157,7 +157,7 @@ decode_int_given_len_loop:
|
||||
// stack: acc', pos, end_pos, retdest
|
||||
// Increment pos.
|
||||
SWAP1
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP1
|
||||
// stack: acc', pos', end_pos, retdest
|
||||
%jump(decode_int_given_len_loop)
|
||||
|
||||
@ -14,7 +14,7 @@ global encode_rlp_scalar:
|
||||
// stack: pos, scalar, pos, retdest
|
||||
%mstore_rlp
|
||||
// stack: pos, retdest
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: pos', retdest
|
||||
SWAP1
|
||||
JUMP
|
||||
@ -76,7 +76,7 @@ encode_rlp_fixed:
|
||||
%mstore_rlp
|
||||
// stack: len, pos, string, retdest
|
||||
SWAP1
|
||||
%add_const(1) // increment pos
|
||||
%increment // increment pos
|
||||
// stack: pos, len, string, retdest
|
||||
%stack (pos, len, string) -> (pos, string, len, encode_rlp_fixed_finish)
|
||||
// stack: context, segment, pos, string, len, encode_rlp_fixed_finish, retdest
|
||||
@ -159,7 +159,7 @@ global encode_rlp_list_prefix:
|
||||
// stack: pos, prefix, pos, retdest
|
||||
%mstore_rlp
|
||||
// stack: pos, retdest
|
||||
%add_const(1)
|
||||
%increment
|
||||
SWAP1
|
||||
JUMP
|
||||
encode_rlp_list_prefix_large:
|
||||
@ -172,7 +172,7 @@ encode_rlp_list_prefix_large:
|
||||
DUP3 // pos
|
||||
%mstore_rlp
|
||||
// stack: len_of_len, pos, payload_len, retdest
|
||||
SWAP1 %add_const(1)
|
||||
SWAP1 %increment
|
||||
// stack: pos', len_of_len, payload_len, retdest
|
||||
%stack (pos, len_of_len, payload_len)
|
||||
-> (pos, payload_len, len_of_len,
|
||||
@ -231,7 +231,7 @@ prepend_rlp_list_prefix_big:
|
||||
SUB
|
||||
// stack: start_pos, len_of_len, payload_len, end_pos, retdest
|
||||
DUP2 %add_const(0xf7) DUP2 %mstore_rlp // rlp[start_pos] = 0xf7 + len_of_len
|
||||
DUP1 %add_const(1) // start_len_pos = start_pos + 1
|
||||
DUP1 %increment // start_len_pos = start_pos + 1
|
||||
%stack (start_len_pos, start_pos, len_of_len, payload_len, end_pos, retdest)
|
||||
-> (start_len_pos, payload_len, len_of_len,
|
||||
prepend_rlp_list_prefix_big_done_writing_len,
|
||||
@ -269,7 +269,7 @@ prepend_rlp_list_prefix_big_done_writing_len:
|
||||
// stack: scalar
|
||||
%num_bytes
|
||||
// stack: scalar_bytes
|
||||
%add_const(1) // Account for the length prefix.
|
||||
%increment // Account for the length prefix.
|
||||
// stack: rlp_len
|
||||
%%finish:
|
||||
%endmacro
|
||||
|
||||
@ -25,7 +25,7 @@ read_rlp_to_memory_loop:
|
||||
// stack: pos, byte, pos, len, retdest
|
||||
%mstore_current(@SEGMENT_RLP_RAW)
|
||||
// stack: pos, len, retdest
|
||||
%add_const(1)
|
||||
%increment
|
||||
// stack: pos', len, retdest
|
||||
%jump(read_rlp_to_memory_loop)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user