From 2f82c0b429c42697cec1bee853c5e7e7b61f7b95 Mon Sep 17 00:00:00 2001 From: Toby Hutton Date: Thu, 11 Dec 2025 14:12:05 +1100 Subject: [PATCH 1/2] Change the memory representation of 64-bit, dual-limbed values to be little-endian. In memory the low (least significant) 32-bit limb is now loaded or stored from/to `addr` and the high 32-bit limb from/to `addr+1`. On the stack the limb order is still big-endian. --- codegen/masm/intrinsics/mem.masm | 27 ++-- codegen/masm/src/emit/mem.rs | 35 +++-- .../abi_transform_stdlib_blake3_hash.masm | 12 ++ tests/integration/expected/add_i128.masm | 4 + tests/integration/expected/add_u128.masm | 4 + .../examples/auth_component_no_auth.masm | 24 +++ .../auth_component_rpo_falcon512.masm | 42 ++++++ .../expected/examples/basic_wallet.masm | 18 +++ .../examples/basic_wallet_tx_script.masm | 18 +++ .../expected/examples/counter.masm | 30 ++++ tests/integration/expected/examples/p2id.masm | 9 ++ .../expected/examples/storage_example.masm | 36 +++++ tests/integration/expected/hash_elements.masm | 18 +++ tests/integration/expected/hash_words.masm | 18 +++ tests/integration/expected/mul_i128.masm | 7 + tests/integration/expected/mul_u128.masm | 7 + .../rust_sdk/component_macros_note.masm | 2 + .../rust_sdk/cross_ctx_account_word.masm | 3 + .../rust_sdk/cross_ctx_note_word.masm | 5 + ...nt_asset_build_fungible_asset_binding.masm | 24 +++ ...sset_build_non_fungible_asset_binding.masm | 30 ++++ ...dk_account_compute_commitment_binding.masm | 24 +++ ...ount_compute_delta_commitment_binding.masm | 24 +++ ...nt_compute_storage_commitment_binding.masm | 24 +++ .../rust_sdk_account_faucet_burn_binding.masm | 30 ++++ ..._faucet_create_fungible_asset_binding.masm | 24 +++ ...cet_create_non_fungible_asset_binding.masm | 30 ++++ ..._is_non_fungible_asset_issued_binding.masm | 6 + .../rust_sdk_account_faucet_mint_binding.masm | 30 ++++ ...k_account_get_code_commitment_binding.masm | 24 +++ ...et_initial_storage_commitment_binding.masm | 24 +++ ...ccount_get_initial_vault_root_binding.masm | 24 +++ ...dk_account_get_procedure_root_binding.masm | 24 +++ ...st_sdk_account_get_vault_root_binding.masm | 24 +++ ...ccount_has_non_fungible_asset_binding.masm | 6 + ...ount_storage_get_initial_item_binding.masm | 24 +++ ..._storage_get_initial_map_item_binding.masm | 24 +++ ...count_tx_get_block_commitment_binding.masm | 18 +++ ...tx_get_input_notes_commitment_binding.masm | 18 +++ ...x_get_output_notes_commitment_binding.masm | 18 +++ ...ust_sdk_input_note_get_assets_binding.masm | 6 + ...dk_input_note_get_assets_info_binding.masm | 18 +++ ...dk_input_note_get_inputs_info_binding.masm | 18 +++ ...t_sdk_input_note_get_metadata_binding.masm | 24 +++ ..._sdk_input_note_get_recipient_binding.masm | 34 +++++ ...dk_input_note_get_script_root_binding.masm | 24 +++ ...ust_sdk_input_note_get_sender_binding.masm | 6 + ..._input_note_get_serial_number_binding.masm | 24 +++ ...ust_sdk_output_note_add_asset_binding.masm | 6 + .../rust_sdk_output_note_create_binding.masm | 6 + ...st_sdk_output_note_get_assets_binding.masm | 6 + ...k_output_note_get_assets_info_binding.masm | 18 +++ ..._sdk_output_note_get_metadata_binding.masm | 24 +++ ...sdk_output_note_get_recipient_binding.masm | 24 +++ .../rust_sdk_swapp_note_bindings.masm | 27 ++++ .../expected/rust_sdk_stdlib_sha256_hash.masm | 36 +++++ .../expected/rust_sdk_stdlib_smt_get.masm | 24 +++ .../expected/rust_sdk_stdlib_smt_set.masm | 24 +++ tests/integration/expected/sub_i128.masm | 4 + tests/integration/expected/sub_u128.masm | 4 + .../integration/src/codegen/intrinsics/mem.rs | 138 ++++++++++++++---- .../src/rust_masm_tests/instructions.rs | 19 ++- 62 files changed, 1241 insertions(+), 66 deletions(-) diff --git a/codegen/masm/intrinsics/mem.masm b/codegen/masm/intrinsics/mem.masm index 24d2300c7..5aaa3d1d4 100644 --- a/codegen/masm/intrinsics/mem.masm +++ b/codegen/masm/intrinsics/mem.masm @@ -288,7 +288,7 @@ export.realign_dw # [chunk_hi, chunk_mid, chunk_lo, offset] swap.1 # [x_hi, x_lo] end -# Shift a double-word (64-bit, in two 32-bit chunks) value by the given offset. +# Shift two 32-bit words by the given offset. # # Returns three 32-bit chunks [chunk_lo, chunk_mid, chunk_hi] export.offset_dw # [value_hi, value_lo, offset] @@ -308,7 +308,7 @@ export.offset_dw # [value_hi, value_lo, offset] u32shr # [ chunk_lo, chunk_mid, chunk_hi] end -# Load a machine double-word (64-bit value, in two 32-bit chunks) to the operand stack +# Load two 32-bit words to the operand stack export.load_dw # [addr, offset] # check for alignment and offset validity dup.1 eq.0 # [offset == 0, addr, offset] @@ -326,16 +326,17 @@ export.load_dw # [addr, offset] else # unaligned; an unaligned double-word spans three elements # - # convert offset from bytes to bits - swap.1 push.8 u32wrapping_mul swap.1 # [addr, bit_offset] - - # load the three elements containing the double-word on the stack - dup.0 push.2 u32overflowing_add assertz mem_load # [e2, addr, bit_offset] - dup.1 push.1 add mem_load # [e1, e2, addr, bit_offset] - movup.2 mem_load # [e0, e1, e2, bit_offset] - - # re-align it, and we're done + # convert offset from bytes to bitcount from RHS of triplet (32 - offset * 8) + swap.1 push.8 mul push.32 swap.1 sub swap.1 # [addr, bit_offset] + + # load the three elements containing the double-word on the stack and re-align + # NOTE: realign_dw expects the hi, mid, lo word inputs and returns hi, lo (i.e., everything + # is 64-bit big-endian limb oriented), so we must swap the output to be in the correct order + dup.0 mem_load # [e0, addr, bit_offset] + dup.1 push.1 u32overflowing_add assertz mem_load # [e1, e0, addr, bit_offset] + movup.2 push.2 u32overflowing_add assertz mem_load # [e2, e1, e0, bit_offset] exec.realign_dw + swap.1 end end @@ -434,7 +435,7 @@ export.store_sw # [addr, offset, value] end end -# Store a 64-bit value, i.e. two 32-bit machine words from the given native pointer tuple. +# Store two 32-bit words to the given native pointer tuple. # # A native pointer tuple consists of an element address where the data begins, and a byte offset, # which is the offset of the first byte, in the 32-bit representation of that element. @@ -536,7 +537,7 @@ end # Write `count` copies of `value` to memory, starting at `dst`. # # * `dst` is expected to be an address in byte-addressable space, _not_ an element address. -# * `value` must be a 64-bit value or smaller +# * `value` must be a two 32-bit words. export.memset_dw # [size, dst, count, value_hi, value_lo] # prepare to loop until `count` iterations have been performed push.0 # [i, dst, size, count, value_hi, value_lo] diff --git a/codegen/masm/src/emit/mem.rs b/codegen/masm/src/emit/mem.rs index 667e3349d..89925384d 100644 --- a/codegen/masm/src/emit/mem.rs +++ b/codegen/masm/src/emit/mem.rs @@ -62,7 +62,7 @@ impl OpEmitter<'_> { ); match &ty { Type::I128 => self.load_quad_word(None, span), - Type::I64 | Type::U64 => self.load_double_word(None, span), + Type::I64 | Type::U64 => self.load_double_word_int(None, span), Type::Felt => self.load_felt(None, span), Type::I32 | Type::U32 => self.load_word(None, span), ty @ (Type::I16 | Type::U16 | Type::U8 | Type::I8 | Type::I1) => { @@ -87,7 +87,7 @@ impl OpEmitter<'_> { let ptr = NativePtr::from_ptr(addr); match &ty { Type::I128 => self.load_quad_word(Some(ptr), span), - Type::I64 | Type::U64 => self.load_double_word(Some(ptr), span), + Type::I64 | Type::U64 => self.load_double_word_int(Some(ptr), span), Type::Felt => self.load_felt(Some(ptr), span), Type::I32 | Type::U32 => self.load_word(Some(ptr), span), Type::I16 | Type::U16 | Type::U8 | Type::I8 | Type::I1 => { @@ -170,13 +170,17 @@ impl OpEmitter<'_> { } } - /// Load a pair of machine words (32-bit elements) to the operand stack - fn load_double_word(&mut self, ptr: Option, span: SourceSpan) { + /// Load a 64-bit word from the given address. + fn load_double_word_int(&mut self, ptr: Option, span: SourceSpan) { if let Some(imm) = ptr { - return self.load_double_word_imm(imm, span); + self.load_double_word_imm(imm, span); + } else { + self.raw_exec("intrinsics::mem::load_dw", span); } - self.raw_exec("intrinsics::mem::load_dw", span); + // The mem::intrinsic loads two 32-bit words with the first at the top of the stack. Swap + // them to make a big-endian-limbed stack value. + self.emit(masm::Instruction::Swap1, span); } /// Load a sub-word value (u8, u16, etc.) from memory @@ -538,7 +542,7 @@ impl OpEmitter<'_> { ); match value_ty { Type::I128 => self.store_quad_word(None, span), - Type::I64 | Type::U64 => self.store_double_word(None, span), + Type::I64 | Type::U64 => self.store_double_word_int(None, span), Type::Felt => self.store_felt(None, span), Type::I32 | Type::U32 => self.store_word(None, span), ref ty if ty.size_in_bytes() <= 4 => self.store_small(ty, None, span), @@ -566,7 +570,7 @@ impl OpEmitter<'_> { let ptr = NativePtr::from_ptr(addr); match value_ty { Type::I128 => self.store_quad_word(Some(ptr), span), - Type::I64 | Type::U64 => self.store_double_word(Some(ptr), span), + Type::I64 | Type::U64 => self.store_double_word_int(Some(ptr), span), Type::Felt => self.store_felt(Some(ptr), span), Type::I32 | Type::U32 => self.store_word(Some(ptr), span), ref ty if ty.size_in_bytes() <= 4 => self.store_small(ty, Some(ptr), span), @@ -853,13 +857,18 @@ impl OpEmitter<'_> { } } - /// Store a pair of machine words (32-bit elements) to the operand stack - fn store_double_word(&mut self, ptr: Option, span: SourceSpan) { + /// Store a 64-bit word to the operand stack + fn store_double_word_int(&mut self, ptr: Option, span: SourceSpan) { + // The mem::intrinsic stores two 32-bit words in stack order. Swap them (the 3rd and 4th + // params) first to make a little-endian-limbed memory value. + self.emit(masm::Instruction::MovUp2, span); + self.emit(masm::Instruction::MovDn3, span); + if let Some(imm) = ptr { - return self.store_double_word_imm(imm, span); + self.store_double_word_imm(imm, span); + } else { + self.raw_exec("intrinsics::mem::store_dw", span); } - - self.raw_exec("intrinsics::mem::store_dw", span); } fn store_double_word_imm(&mut self, ptr: NativePtr, span: SourceSpan) { diff --git a/tests/integration/expected/abi_transform_stdlib_blake3_hash.masm b/tests/integration/expected/abi_transform_stdlib_blake3_hash.masm index f8e5f095a..e1a636be4 100644 --- a/tests/integration/expected/abi_transform_stdlib_blake3_hash.masm +++ b/tests/integration/expected/abi_transform_stdlib_blake3_hash.masm @@ -156,11 +156,14 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.5 u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -183,11 +186,14 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.5 u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -210,11 +216,14 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.5 u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -233,9 +242,12 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/add_i128.masm b/tests/integration/expected/add_i128.masm index 1206791be..900face52 100644 --- a/tests/integration/expected/add_i128.masm +++ b/tests/integration/expected/add_i128.masm @@ -44,6 +44,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -58,6 +60,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/add_u128.masm b/tests/integration/expected/add_u128.masm index 7cceaba19..74f6bc9fa 100644 --- a/tests/integration/expected/add_u128.masm +++ b/tests/integration/expected/add_u128.masm @@ -44,6 +44,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -58,6 +60,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/examples/auth_component_no_auth.masm b/tests/integration/expected/examples/auth_component_no_auth.masm index d3a9e54c8..f99bec676 100644 --- a/tests/integration/expected/examples/auth_component_no_auth.masm +++ b/tests/integration/expected/examples/auth_component_no_auth.masm @@ -109,6 +109,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.56 dup.3 add @@ -121,6 +122,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -143,6 +146,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.48 dup.3 add @@ -155,6 +159,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -194,6 +200,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.56 dup.3 add @@ -206,6 +213,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -228,6 +237,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.48 dup.3 add @@ -240,6 +250,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -599,6 +611,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -611,6 +624,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -630,6 +645,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -639,6 +655,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -786,6 +804,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -798,6 +817,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -816,6 +837,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -825,6 +847,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/examples/auth_component_rpo_falcon512.masm b/tests/integration/expected/examples/auth_component_rpo_falcon512.masm index a10c5c551..d78fbeb1f 100644 --- a/tests/integration/expected/examples/auth_component_rpo_falcon512.masm +++ b/tests/integration/expected/examples/auth_component_rpo_falcon512.masm @@ -119,6 +119,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.104 dup.5 add @@ -131,6 +132,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -153,6 +156,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.96 dup.5 add @@ -165,6 +169,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -330,6 +336,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.104 dup.3 add @@ -342,6 +349,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -364,6 +373,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.96 dup.3 add @@ -376,6 +386,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -687,6 +699,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.104 dup.3 add @@ -699,6 +712,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -721,6 +736,7 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.96 dup.3 add @@ -733,6 +749,8 @@ proc miden:base/authentication-component@1.0.0#auth-procedure( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -989,6 +1007,7 @@ proc miden_base_sys::bindings::tx::get_input_notes_commitment( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -1001,6 +1020,8 @@ proc miden_base_sys::bindings::tx::get_input_notes_commitment( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1020,6 +1041,7 @@ proc miden_base_sys::bindings::tx::get_input_notes_commitment( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -1032,6 +1054,8 @@ proc miden_base_sys::bindings::tx::get_input_notes_commitment( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1105,6 +1129,7 @@ proc miden_base_sys::bindings::tx::get_output_notes_commitment( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -1117,6 +1142,8 @@ proc miden_base_sys::bindings::tx::get_output_notes_commitment( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1136,6 +1163,7 @@ proc miden_base_sys::bindings::tx::get_output_notes_commitment( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -1148,6 +1176,8 @@ proc miden_base_sys::bindings::tx::get_output_notes_commitment( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1393,6 +1423,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -1405,6 +1436,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1424,6 +1457,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -1433,6 +1467,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1580,6 +1616,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -1592,6 +1629,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1610,6 +1649,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -1619,6 +1659,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/examples/basic_wallet.masm b/tests/integration/expected/examples/basic_wallet.masm index d7c0b9e5b..e216fd157 100644 --- a/tests/integration/expected/examples/basic_wallet.masm +++ b/tests/integration/expected/examples/basic_wallet.masm @@ -589,6 +589,7 @@ proc miden_base_sys::bindings::native_account::remove_asset( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -601,6 +602,8 @@ proc miden_base_sys::bindings::native_account::remove_asset( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -620,6 +623,7 @@ proc miden_base_sys::bindings::native_account::remove_asset( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -632,6 +636,8 @@ proc miden_base_sys::bindings::native_account::remove_asset( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -769,6 +775,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -781,6 +788,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -800,6 +809,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -809,6 +819,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -956,6 +968,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -968,6 +981,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -986,6 +1001,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -995,6 +1011,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/examples/basic_wallet_tx_script.masm b/tests/integration/expected/examples/basic_wallet_tx_script.masm index e21edb60e..3a78841d9 100644 --- a/tests/integration/expected/examples/basic_wallet_tx_script.masm +++ b/tests/integration/expected/examples/basic_wallet_tx_script.masm @@ -750,6 +750,7 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 movup.3 u32wrapping_add @@ -766,6 +767,7 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 push.32 dup.10 @@ -779,6 +781,8 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -796,6 +800,8 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -888,6 +894,7 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 movup.3 u32wrapping_add @@ -904,6 +911,7 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 push.48 dup.8 @@ -917,6 +925,8 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -934,6 +944,8 @@ proc miden:base/transaction-script@1.0.0#run(felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1453,6 +1465,7 @@ proc ::with_capacity(i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -1022,6 +1023,8 @@ proc alloc::vec::Vec::with_capacity(i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1270,6 +1273,7 @@ proc miden_base_sys::bindings::active_account::get_id( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 push.8 dup.1 @@ -1279,6 +1283,8 @@ proc miden_base_sys::bindings::active_account::get_id( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1526,6 +1532,7 @@ proc miden_base_sys::bindings::active_note::get_assets( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 push.4 dup.1 @@ -1535,6 +1542,8 @@ proc miden_base_sys::bindings::active_note::get_assets( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/examples/storage_example.masm b/tests/integration/expected/examples/storage_example.masm index 53f76f656..96673bd0a 100644 --- a/tests/integration/expected/examples/storage_example.masm +++ b/tests/integration/expected/examples/storage_example.masm @@ -126,6 +126,7 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.56 dup.3 add @@ -138,6 +139,8 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -157,6 +160,7 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.48 dup.3 add @@ -169,6 +173,8 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -447,6 +453,7 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.88 dup.3 add @@ -459,6 +466,8 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -481,6 +490,7 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.80 dup.3 add @@ -493,6 +503,8 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -514,6 +526,7 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.104 dup.3 add @@ -526,6 +539,8 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -548,6 +563,7 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.96 dup.3 add @@ -560,6 +576,8 @@ proc miden:storage-example/foo@1.0.0#set-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -671,6 +689,7 @@ proc miden:storage-example/foo@1.0.0#get-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -683,6 +702,8 @@ proc miden:storage-example/foo@1.0.0#get-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -705,6 +726,7 @@ proc miden:storage-example/foo@1.0.0#get-asset-qty( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -717,6 +739,8 @@ proc miden:storage-example/foo@1.0.0#get-asset-qty( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -875,6 +899,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -887,6 +912,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -906,6 +933,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -915,6 +943,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1062,6 +1092,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -1074,6 +1105,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1092,6 +1125,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -1101,6 +1135,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/hash_elements.masm b/tests/integration/expected/hash_elements.masm index a29386b20..d4c26eadd 100644 --- a/tests/integration/expected/hash_elements.masm +++ b/tests/integration/expected/hash_elements.masm @@ -140,6 +140,7 @@ pub proc entrypoint(i32) -> felt exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -152,6 +153,8 @@ pub proc entrypoint(i32) -> felt assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -174,6 +177,7 @@ pub proc entrypoint(i32) -> felt exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -186,6 +190,8 @@ pub proc entrypoint(i32) -> felt assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -275,6 +281,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -287,6 +294,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -306,6 +315,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -315,6 +325,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -462,6 +474,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -474,6 +487,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -492,6 +507,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -501,6 +517,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/hash_words.masm b/tests/integration/expected/hash_words.masm index 5e2286524..4ded1fe80 100644 --- a/tests/integration/expected/hash_words.masm +++ b/tests/integration/expected/hash_words.masm @@ -122,6 +122,7 @@ pub proc entrypoint(i32) -> felt exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -134,6 +135,8 @@ pub proc entrypoint(i32) -> felt assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -156,6 +159,7 @@ pub proc entrypoint(i32) -> felt exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -168,6 +172,8 @@ pub proc entrypoint(i32) -> felt assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -256,6 +262,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -268,6 +275,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -287,6 +296,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -296,6 +306,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -443,6 +455,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -455,6 +468,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -473,6 +488,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -482,6 +498,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/mul_i128.masm b/tests/integration/expected/mul_i128.masm index 986c12f21..e88022a8f 100644 --- a/tests/integration/expected/mul_i128.masm +++ b/tests/integration/expected/mul_i128.masm @@ -31,6 +31,8 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) locaddr.0 push.0 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -55,6 +57,8 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -87,6 +91,7 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.8 movup.8 trace.240 @@ -109,6 +114,8 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/mul_u128.masm b/tests/integration/expected/mul_u128.masm index 5715251be..4cc632bb2 100644 --- a/tests/integration/expected/mul_u128.masm +++ b/tests/integration/expected/mul_u128.masm @@ -31,6 +31,8 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) locaddr.0 push.0 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -55,6 +57,8 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -87,6 +91,7 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.8 movup.8 trace.240 @@ -109,6 +114,8 @@ pub proc entrypoint.2(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/component_macros_note.masm b/tests/integration/expected/rust_sdk/component_macros_note.masm index 47f39c643..48ea894ea 100644 --- a/tests/integration/expected/rust_sdk/component_macros_note.masm +++ b/tests/integration/expected/rust_sdk/component_macros_note.masm @@ -189,6 +189,8 @@ proc miden:base/note-script@1.0.0#run(felt, felt, felt, felt) movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/cross_ctx_account_word.masm b/tests/integration/expected/rust_sdk/cross_ctx_account_word.masm index 0d1ac4b4f..4cffebed0 100644 --- a/tests/integration/expected/rust_sdk/cross_ctx_account_word.masm +++ b/tests/integration/expected/rust_sdk/cross_ctx_account_word.masm @@ -252,6 +252,7 @@ pub proc process-mixed( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.0 push.8 dup.4 @@ -1159,6 +1160,8 @@ proc miden:cross-ctx-account-word/foo@1.0.0#process-mixed( movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/cross_ctx_note_word.masm b/tests/integration/expected/rust_sdk/cross_ctx_note_word.masm index 4fb5b0261..0010b5ac0 100644 --- a/tests/integration/expected/rust_sdk/cross_ctx_note_word.masm +++ b/tests/integration/expected/rust_sdk/cross_ctx_note_word.masm @@ -297,6 +297,8 @@ proc cross_ctx_note_word::bindings::miden::cross_ctx_account_word::foo::process_ u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -844,6 +846,8 @@ proc miden:base/note-script@1.0.0#run(felt, felt, felt, felt) movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1083,6 +1087,7 @@ proc miden:base/note-script@1.0.0#run(felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.0 push.4294967295 push.4294967295 diff --git a/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_fungible_asset_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_fungible_asset_binding.masm index 50fefd5a6..f19661468 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_fungible_asset_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_fungible_asset_binding.masm @@ -188,6 +188,7 @@ proc miden:rust-sdk-account-asset-build-fungible-asset-binding/rust-sdk-account- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -200,6 +201,8 @@ proc miden:rust-sdk-account-asset-build-fungible-asset-binding/rust-sdk-account- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -219,6 +222,7 @@ proc miden:rust-sdk-account-asset-build-fungible-asset-binding/rust-sdk-account- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -228,6 +232,8 @@ proc miden:rust-sdk-account-asset-build-fungible-asset-binding/rust-sdk-account- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -377,6 +383,7 @@ proc miden_base_sys::bindings::asset::build_fungible_asset( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -389,6 +396,8 @@ proc miden_base_sys::bindings::asset::build_fungible_asset( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -408,6 +417,7 @@ proc miden_base_sys::bindings::asset::build_fungible_asset( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -420,6 +430,8 @@ proc miden_base_sys::bindings::asset::build_fungible_asset( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -478,6 +490,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -490,6 +503,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -509,6 +524,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -518,6 +534,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -665,6 +683,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -677,6 +696,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -695,6 +716,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -704,6 +726,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_non_fungible_asset_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_non_fungible_asset_binding.masm index de2fc395d..e56aab9d3 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_non_fungible_asset_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_account_asset_build_non_fungible_asset_binding.masm @@ -265,6 +265,7 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -277,6 +278,8 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -299,6 +302,7 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.8 dup.1 @@ -308,6 +312,8 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -354,6 +360,7 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -366,6 +373,8 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -388,6 +397,7 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -397,6 +407,8 @@ proc miden:rust-sdk-account-asset-build-non-fungible-asset-binding/rust-sdk-acco assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -614,6 +626,7 @@ proc miden_base_sys::bindings::asset::build_non_fungible_asset( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.4 add @@ -626,6 +639,8 @@ proc miden_base_sys::bindings::asset::build_non_fungible_asset( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -645,6 +660,7 @@ proc miden_base_sys::bindings::asset::build_non_fungible_asset( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.4 add @@ -657,6 +673,8 @@ proc miden_base_sys::bindings::asset::build_non_fungible_asset( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -715,6 +733,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -727,6 +746,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -746,6 +767,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -755,6 +777,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -902,6 +926,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -914,6 +939,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -932,6 +959,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -941,6 +969,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_account_compute_commitment_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_account_compute_commitment_binding.masm index 9648e63db..648e1c2cf 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_account_compute_commitment_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_account_compute_commitment_binding.masm @@ -156,6 +156,7 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -168,6 +169,8 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -190,6 +193,7 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -202,6 +206,8 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -243,6 +249,7 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -255,6 +262,8 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -274,6 +283,7 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -283,6 +293,8 @@ proc miden:rust-sdk-account-compute-commitment-binding/rust-sdk-account-compute- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -407,6 +419,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -419,6 +432,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -438,6 +453,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -447,6 +463,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -594,6 +612,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -606,6 +625,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -624,6 +645,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -633,6 +655,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_account_compute_delta_commitment_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_account_compute_delta_commitment_binding.masm index 6d57357c6..c37e25772 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_account_compute_delta_commitment_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_account_compute_delta_commitment_binding.masm @@ -156,6 +156,7 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -168,6 +169,8 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -190,6 +193,7 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -202,6 +206,8 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -243,6 +249,7 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -255,6 +262,8 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -274,6 +283,7 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -283,6 +293,8 @@ proc miden:rust-sdk-account-compute-delta-commitment-binding/rust-sdk-account-co assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -407,6 +419,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -419,6 +432,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -438,6 +453,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -447,6 +463,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -594,6 +612,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -606,6 +625,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -624,6 +645,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -633,6 +655,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_account_compute_storage_commitment_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_account_compute_storage_commitment_binding.masm index 4f2070eed..789480bc2 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_account_compute_storage_commitment_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_account_compute_storage_commitment_binding.masm @@ -156,6 +156,7 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -168,6 +169,8 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -190,6 +193,7 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -202,6 +206,8 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -243,6 +249,7 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -255,6 +262,8 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -274,6 +283,7 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -283,6 +293,8 @@ proc miden:rust-sdk-account-compute-storage-commitment-binding/rust-sdk-account- assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -407,6 +419,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -419,6 +432,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -438,6 +453,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -447,6 +463,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -594,6 +612,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -606,6 +625,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -624,6 +645,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -633,6 +655,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_account_faucet_burn_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_account_faucet_burn_binding.masm index fe64d56b3..c3c4d5650 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_account_faucet_burn_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_account_faucet_burn_binding.masm @@ -257,6 +257,7 @@ proc miden:rust-sdk-account-faucet-burn-binding/rust-sdk-account-faucet-burn-bin exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -269,6 +270,8 @@ proc miden:rust-sdk-account-faucet-burn-binding/rust-sdk-account-faucet-burn-bin assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -291,6 +294,7 @@ proc miden:rust-sdk-account-faucet-burn-binding/rust-sdk-account-faucet-burn-bin exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -300,6 +304,8 @@ proc miden:rust-sdk-account-faucet-burn-binding/rust-sdk-account-faucet-burn-bin assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -506,6 +512,7 @@ proc miden_base_sys::bindings::faucet::burn(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -518,6 +525,8 @@ proc miden_base_sys::bindings::faucet::burn(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -537,6 +546,7 @@ proc miden_base_sys::bindings::faucet::burn(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -549,6 +559,8 @@ proc miden_base_sys::bindings::faucet::burn(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -597,6 +609,7 @@ proc ::with_capacity(i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -604,6 +605,8 @@ proc alloc::vec::Vec::with_capacity(i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -897,6 +900,7 @@ proc miden_base_sys::bindings::input_note::get_assets( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 push.4 dup.1 @@ -906,6 +910,8 @@ proc miden_base_sys::bindings::input_note::get_assets( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_assets_info_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_assets_info_binding.masm index 6cd4b5bdf..71d197d8d 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_assets_info_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_assets_info_binding.masm @@ -244,6 +244,7 @@ proc miden_base_sys::bindings::input_note::get_assets_info( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -256,6 +257,8 @@ proc miden_base_sys::bindings::input_note::get_assets_info( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -275,6 +278,7 @@ proc miden_base_sys::bindings::input_note::get_assets_info( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -287,6 +291,8 @@ proc miden_base_sys::bindings::input_note::get_assets_info( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -379,6 +385,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -391,6 +398,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -410,6 +419,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -419,6 +429,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -566,6 +578,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -578,6 +591,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -596,6 +611,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -605,6 +621,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_inputs_info_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_inputs_info_binding.masm index 8369fe464..26efc0b53 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_inputs_info_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_inputs_info_binding.masm @@ -244,6 +244,7 @@ proc miden_base_sys::bindings::input_note::get_inputs_info( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -256,6 +257,8 @@ proc miden_base_sys::bindings::input_note::get_inputs_info( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -275,6 +278,7 @@ proc miden_base_sys::bindings::input_note::get_inputs_info( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -287,6 +291,8 @@ proc miden_base_sys::bindings::input_note::get_inputs_info( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -379,6 +385,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -391,6 +398,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -410,6 +419,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -419,6 +429,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -566,6 +578,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -578,6 +591,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -596,6 +611,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -605,6 +621,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_metadata_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_metadata_binding.masm index 21e460f93..4503c561e 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_metadata_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_metadata_binding.masm @@ -170,6 +170,7 @@ proc miden:rust-sdk-input-note-get-metadata-binding/rust-sdk-input-note-get-meta exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -182,6 +183,8 @@ proc miden:rust-sdk-input-note-get-metadata-binding/rust-sdk-input-note-get-meta assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -201,6 +204,7 @@ proc miden:rust-sdk-input-note-get-metadata-binding/rust-sdk-input-note-get-meta exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -210,6 +214,8 @@ proc miden:rust-sdk-input-note-get-metadata-binding/rust-sdk-input-note-get-meta assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -351,6 +357,7 @@ proc miden_base_sys::bindings::input_note::get_metadata( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -363,6 +370,8 @@ proc miden_base_sys::bindings::input_note::get_metadata( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -382,6 +391,7 @@ proc miden_base_sys::bindings::input_note::get_metadata( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -394,6 +404,8 @@ proc miden_base_sys::bindings::input_note::get_metadata( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -452,6 +464,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -464,6 +477,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -483,6 +498,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -492,6 +508,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -639,6 +657,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -651,6 +670,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -669,6 +690,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -678,6 +700,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_recipient_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_recipient_binding.masm index 9d5bed474..617cfb6ef 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_recipient_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_recipient_binding.masm @@ -173,6 +173,7 @@ proc miden:rust-sdk-input-note-get-recipient-binding/rust-sdk-input-note-get-rec exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -185,6 +186,8 @@ proc miden:rust-sdk-input-note-get-recipient-binding/rust-sdk-input-note-get-rec assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -204,6 +207,7 @@ proc miden:rust-sdk-input-note-get-recipient-binding/rust-sdk-input-note-get-rec exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -213,6 +217,8 @@ proc miden:rust-sdk-input-note-get-recipient-binding/rust-sdk-input-note-get-rec assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -354,6 +360,7 @@ proc miden_base_sys::bindings::input_note::get_recipient( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -366,6 +373,8 @@ proc miden_base_sys::bindings::input_note::get_recipient( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -385,6 +394,7 @@ proc miden_base_sys::bindings::input_note::get_recipient( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -397,6 +407,8 @@ proc miden_base_sys::bindings::input_note::get_recipient( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -430,6 +442,7 @@ proc miden_base_sys::bindings::input_note::get_recipient( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -445,6 +458,8 @@ proc miden_base_sys::bindings::input_note::get_recipient( movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -467,6 +482,7 @@ proc miden_base_sys::bindings::input_note::get_recipient( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.5 add @@ -482,6 +498,8 @@ proc miden_base_sys::bindings::input_note::get_recipient( movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -501,6 +519,8 @@ proc miden_base_sys::bindings::input_note::get_recipient( movup.2 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -515,6 +535,8 @@ proc miden_base_sys::bindings::input_note::get_recipient( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -564,6 +586,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -576,6 +599,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -595,6 +620,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -604,6 +630,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -751,6 +779,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -763,6 +792,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -781,6 +812,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -790,6 +822,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_script_root_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_script_root_binding.masm index d74131f3a..bc29094d2 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_script_root_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_script_root_binding.masm @@ -170,6 +170,7 @@ proc miden:rust-sdk-input-note-get-script-root-binding/rust-sdk-input-note-get-s exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -182,6 +183,8 @@ proc miden:rust-sdk-input-note-get-script-root-binding/rust-sdk-input-note-get-s assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -201,6 +204,7 @@ proc miden:rust-sdk-input-note-get-script-root-binding/rust-sdk-input-note-get-s exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -210,6 +214,8 @@ proc miden:rust-sdk-input-note-get-script-root-binding/rust-sdk-input-note-get-s assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -351,6 +357,7 @@ proc miden_base_sys::bindings::input_note::get_script_root( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -363,6 +370,8 @@ proc miden_base_sys::bindings::input_note::get_script_root( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -382,6 +391,7 @@ proc miden_base_sys::bindings::input_note::get_script_root( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -394,6 +404,8 @@ proc miden_base_sys::bindings::input_note::get_script_root( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -452,6 +464,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -464,6 +477,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -483,6 +498,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -492,6 +508,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -639,6 +657,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -651,6 +670,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -669,6 +690,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -678,6 +700,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_sender_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_sender_binding.masm index 34fbc940c..027fbcb12 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_sender_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_sender_binding.masm @@ -145,6 +145,7 @@ proc miden:rust-sdk-input-note-get-sender-binding/rust-sdk-input-note-get-sender exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -154,6 +155,8 @@ proc miden:rust-sdk-input-note-get-sender-binding/rust-sdk-input-note-get-sender assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -297,6 +300,7 @@ proc miden_base_sys::bindings::input_note::get_sender( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 push.8 dup.1 @@ -306,6 +310,8 @@ proc miden_base_sys::bindings::input_note::get_sender( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_serial_number_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_serial_number_binding.masm index d645c6580..8c378634a 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_serial_number_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_input_note_get_serial_number_binding.masm @@ -170,6 +170,7 @@ proc miden:rust-sdk-input-note-get-serial-number-binding/rust-sdk-input-note-get exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -182,6 +183,8 @@ proc miden:rust-sdk-input-note-get-serial-number-binding/rust-sdk-input-note-get assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -201,6 +204,7 @@ proc miden:rust-sdk-input-note-get-serial-number-binding/rust-sdk-input-note-get exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -210,6 +214,8 @@ proc miden:rust-sdk-input-note-get-serial-number-binding/rust-sdk-input-note-get assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -351,6 +357,7 @@ proc miden_base_sys::bindings::input_note::get_serial_number( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -363,6 +370,8 @@ proc miden_base_sys::bindings::input_note::get_serial_number( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -382,6 +391,7 @@ proc miden_base_sys::bindings::input_note::get_serial_number( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -394,6 +404,8 @@ proc miden_base_sys::bindings::input_note::get_serial_number( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -452,6 +464,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -464,6 +477,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -483,6 +498,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -492,6 +508,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -639,6 +657,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -651,6 +670,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -669,6 +690,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -678,6 +700,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_output_note_add_asset_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_output_note_add_asset_binding.masm index 6eaf80472..4557b265a 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_output_note_add_asset_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_output_note_add_asset_binding.masm @@ -371,6 +371,7 @@ proc ::with_capacity(i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -604,6 +605,8 @@ proc alloc::vec::Vec::with_capacity(i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -897,6 +900,7 @@ proc miden_base_sys::bindings::output_note::get_assets( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 push.4 dup.1 @@ -906,6 +910,8 @@ proc miden_base_sys::bindings::output_note::get_assets( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_assets_info_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_assets_info_binding.masm index 00f9ed785..d5ff6e4b1 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_assets_info_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_assets_info_binding.masm @@ -244,6 +244,7 @@ proc miden_base_sys::bindings::output_note::get_assets_info( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -256,6 +257,8 @@ proc miden_base_sys::bindings::output_note::get_assets_info( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -275,6 +278,7 @@ proc miden_base_sys::bindings::output_note::get_assets_info( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -287,6 +291,8 @@ proc miden_base_sys::bindings::output_note::get_assets_info( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -379,6 +385,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -391,6 +398,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -410,6 +419,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -419,6 +429,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -566,6 +578,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -578,6 +591,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -596,6 +611,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -605,6 +621,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_metadata_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_metadata_binding.masm index b532918db..da7acb964 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_metadata_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_metadata_binding.masm @@ -170,6 +170,7 @@ proc miden:rust-sdk-output-note-get-metadata-binding/rust-sdk-output-note-get-me exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -182,6 +183,8 @@ proc miden:rust-sdk-output-note-get-metadata-binding/rust-sdk-output-note-get-me assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -201,6 +204,7 @@ proc miden:rust-sdk-output-note-get-metadata-binding/rust-sdk-output-note-get-me exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -210,6 +214,8 @@ proc miden:rust-sdk-output-note-get-metadata-binding/rust-sdk-output-note-get-me assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -351,6 +357,7 @@ proc miden_base_sys::bindings::output_note::get_metadata( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -363,6 +370,8 @@ proc miden_base_sys::bindings::output_note::get_metadata( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -382,6 +391,7 @@ proc miden_base_sys::bindings::output_note::get_metadata( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -394,6 +404,8 @@ proc miden_base_sys::bindings::output_note::get_metadata( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -452,6 +464,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -464,6 +477,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -483,6 +498,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -492,6 +508,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -639,6 +657,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -651,6 +670,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -669,6 +690,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -678,6 +700,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_recipient_binding.masm b/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_recipient_binding.masm index af905fd0d..85cc62544 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_recipient_binding.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_output_note_get_recipient_binding.masm @@ -173,6 +173,7 @@ proc miden:rust-sdk-output-note-get-recipient-binding/rust-sdk-output-note-get-r exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -185,6 +186,8 @@ proc miden:rust-sdk-output-note-get-recipient-binding/rust-sdk-output-note-get-r assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -204,6 +207,7 @@ proc miden:rust-sdk-output-note-get-recipient-binding/rust-sdk-output-note-get-r exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -213,6 +217,8 @@ proc miden:rust-sdk-output-note-get-recipient-binding/rust-sdk-output-note-get-r assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -354,6 +360,7 @@ proc miden_base_sys::bindings::output_note::get_recipient( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -366,6 +373,8 @@ proc miden_base_sys::bindings::output_note::get_recipient( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -385,6 +394,7 @@ proc miden_base_sys::bindings::output_note::get_recipient( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -397,6 +407,8 @@ proc miden_base_sys::bindings::output_note::get_recipient( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -455,6 +467,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -467,6 +480,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -486,6 +501,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -495,6 +511,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -642,6 +660,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -654,6 +673,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -672,6 +693,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -681,6 +703,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk/rust_sdk_swapp_note_bindings.masm b/tests/integration/expected/rust_sdk/rust_sdk_swapp_note_bindings.masm index be5ca8d81..19c56a9ca 100644 --- a/tests/integration/expected/rust_sdk/rust_sdk_swapp_note_bindings.masm +++ b/tests/integration/expected/rust_sdk/rust_sdk_swapp_note_bindings.masm @@ -598,6 +598,7 @@ proc miden_base_sys::bindings::active_note::get_sender( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.3 push.8 dup.1 @@ -607,6 +608,8 @@ proc miden_base_sys::bindings::active_note::get_sender( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -671,6 +674,7 @@ proc miden_base_sys::bindings::active_note::get_script_root( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -683,6 +687,8 @@ proc miden_base_sys::bindings::active_note::get_script_root( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -702,6 +708,7 @@ proc miden_base_sys::bindings::active_note::get_script_root( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -714,6 +721,8 @@ proc miden_base_sys::bindings::active_note::get_script_root( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -787,6 +796,7 @@ proc miden_base_sys::bindings::active_note::get_serial_number( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.3 add @@ -799,6 +809,8 @@ proc miden_base_sys::bindings::active_note::get_serial_number( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -818,6 +830,7 @@ proc miden_base_sys::bindings::active_note::get_serial_number( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.3 add @@ -830,6 +843,8 @@ proc miden_base_sys::bindings::active_note::get_serial_number( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -888,6 +903,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -900,6 +916,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -919,6 +937,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -928,6 +947,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1075,6 +1096,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -1087,6 +1109,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -1105,6 +1129,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -1114,6 +1139,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk_stdlib_sha256_hash.masm b/tests/integration/expected/rust_sdk_stdlib_sha256_hash.masm index 34c36852e..217b59310 100644 --- a/tests/integration/expected/rust_sdk_stdlib_sha256_hash.masm +++ b/tests/integration/expected/rust_sdk_stdlib_sha256_hash.masm @@ -185,6 +185,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 push.32 dup.4 @@ -198,6 +199,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -213,6 +216,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 push.32 dup.4 @@ -226,6 +230,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -241,6 +247,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 push.32 dup.4 @@ -254,6 +261,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -267,6 +276,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -279,6 +289,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -526,6 +538,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.56 dup.3 add @@ -538,6 +551,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -560,6 +575,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.48 dup.3 add @@ -572,6 +588,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -594,6 +612,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.40 dup.3 add @@ -606,6 +625,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -625,6 +646,7 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.32 dup.3 add @@ -637,6 +659,8 @@ pub proc entrypoint(i32, i32) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -729,9 +753,12 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.3 u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -754,11 +781,14 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.24 dup.4 u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -781,11 +811,14 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.16 dup.4 u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -808,11 +841,14 @@ pub proc entrypoint(i32, i32) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 movup.3 u32wrapping_add u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk_stdlib_smt_get.masm b/tests/integration/expected/rust_sdk_stdlib_smt_get.masm index 85534d6d6..343eeadaa 100644 --- a/tests/integration/expected/rust_sdk_stdlib_smt_get.masm +++ b/tests/integration/expected/rust_sdk_stdlib_smt_get.masm @@ -345,6 +345,7 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.104 dup.3 add @@ -357,6 +358,8 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -379,6 +382,7 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.96 dup.3 add @@ -391,6 +395,8 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -413,6 +419,7 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.120 dup.3 add @@ -425,6 +432,8 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -447,6 +456,7 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.112 dup.3 add @@ -459,6 +469,8 @@ pub proc entrypoint(felt, felt, felt, felt, felt, felt, felt, felt) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -682,6 +694,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -694,6 +707,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -713,6 +728,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -722,6 +738,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -869,6 +887,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -881,6 +900,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -899,6 +920,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -908,6 +930,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/rust_sdk_stdlib_smt_set.masm b/tests/integration/expected/rust_sdk_stdlib_smt_set.masm index 5da6cea82..40002ae17 100644 --- a/tests/integration/expected/rust_sdk_stdlib_smt_set.masm +++ b/tests/integration/expected/rust_sdk_stdlib_smt_set.masm @@ -284,6 +284,7 @@ pub proc entrypoint( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.72 dup.3 add @@ -296,6 +297,8 @@ pub proc entrypoint( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -318,6 +321,7 @@ pub proc entrypoint( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.64 dup.3 add @@ -330,6 +334,8 @@ pub proc entrypoint( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -352,6 +358,7 @@ pub proc entrypoint( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.88 dup.3 add @@ -364,6 +371,8 @@ pub proc entrypoint( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -386,6 +395,7 @@ pub proc entrypoint( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.80 dup.3 add @@ -398,6 +408,8 @@ pub proc entrypoint( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -713,6 +725,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.3 add @@ -725,6 +738,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -744,6 +759,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 dup.2 push.4 dup.1 @@ -753,6 +769,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -900,6 +918,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 push.8 dup.4 add @@ -912,6 +931,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -930,6 +951,7 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( exec.::intrinsics::mem::load_dw trace.252 nop + swap.1 movup.2 push.8 dup.1 @@ -939,6 +961,8 @@ proc miden_stdlib_sys::intrinsics::word::Word::reverse( assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/sub_i128.masm b/tests/integration/expected/sub_i128.masm index f1817ffbe..026ca4557 100644 --- a/tests/integration/expected/sub_i128.masm +++ b/tests/integration/expected/sub_i128.masm @@ -49,6 +49,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -63,6 +65,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/expected/sub_u128.masm b/tests/integration/expected/sub_u128.masm index fa43082e1..7ec20ec87 100644 --- a/tests/integration/expected/sub_u128.masm +++ b/tests/integration/expected/sub_u128.masm @@ -49,6 +49,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw @@ -63,6 +65,8 @@ pub proc entrypoint(i32, [u32; 2], [u32; 2], [u32; 2], [u32; 2]) assertz u32divmod.4 swap.1 + movup.2 + movdn.3 trace.240 nop exec.::intrinsics::mem::store_dw diff --git a/tests/integration/src/codegen/intrinsics/mem.rs b/tests/integration/src/codegen/intrinsics/mem.rs index 1442e2edd..4778daa31 100644 --- a/tests/integration/src/codegen/intrinsics/mem.rs +++ b/tests/integration/src/codegen/intrinsics/mem.rs @@ -70,14 +70,14 @@ fn load_sw() { Ok(()) })?; - prop_assert_eq!(output, value); + prop_assert_eq!(output, value, "expected 0x{:x}; found 0x{:x}", value, output,); Ok(()) }); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -111,28 +111,35 @@ fn load_dw() { let config = proptest::test_runner::Config::with_cases(10); let res = TestRunner::new(config).run(&any::(), move |value| { // Write `value` to the start of the 17th page (1 page after the 16 pages reserved for the - // Rust stack) + // Rust stack). Felts must be written in little endian order. let value_felts = value.to_felts(); let initializers = [Initializer::MemoryFelts { addr: write_to / 4, - felts: Cow::Borrowed(value_felts.as_slice()), + felts: Cow::Borrowed(&[value_felts[1], value_felts[0]]), }]; let args = [Felt::new(write_to as u64)]; let output = eval_package::(&package, initializers, &args, context.session(), |trace| { - let hi = - trace.read_memory_element(write_to / 4).unwrap_or_default().as_int() as u32; - let lo = trace.read_memory_element((write_to / 4) + 1).unwrap_or_default().as_int() - as u32; + let lo = trace.read_memory_element(write_to / 4).unwrap_or_default().as_int(); + let hi = trace.read_memory_element((write_to / 4) + 1).unwrap_or_default().as_int(); + log::trace!(target: "executor", "hi = {hi} ({hi:0x})"); log::trace!(target: "executor", "lo = {lo} ({lo:0x})"); - let stored = trace.read_from_rust_memory::(write_to).ok_or_else(|| { + + prop_assert_eq!(lo, value & 0xffffffff); + prop_assert_eq!(hi, value >> 32); + + let mut stored = trace.read_from_rust_memory::(write_to).ok_or_else(|| { TestCaseError::fail(format!( "expected {value} to have been written to byte address {write_to}, but \ read from that address failed" )) })?; + + // read_from_rust_memory() still reads in big-endian limbs. + stored = ((stored >> 32) & 0xffffffff) | (stored << 32); + prop_assert_eq!( stored, value, @@ -145,14 +152,14 @@ fn load_dw() { Ok(()) })?; - prop_assert_eq!(output, value); + prop_assert_eq!(output, value, "expected 0x{:x}; found 0x{:x}", value, output,); Ok(()) }); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -214,14 +221,14 @@ fn load_u8() { Ok(()) })?; - prop_assert_eq!(output, value); + prop_assert_eq!(output, value, "expected 0x{:x}; found 0x{:x}", value, output,); Ok(()) }); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -283,14 +290,14 @@ fn load_u16() { Ok(()) })?; - prop_assert_eq!(output, value); + prop_assert_eq!(output, value, "expected 0x{:x}; found 0x{:x}", value, output,); Ok(()) }); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -358,14 +365,14 @@ fn load_bool() { }, )?; - prop_assert_eq!(output, value); + prop_assert_eq!(output, value, "expected {}; found {}", output, value); Ok(()) }); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -502,8 +509,8 @@ fn store_u16() { ); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -724,8 +731,8 @@ fn store_u8() { ); match res { - Err(TestError::Fail(_, value)) => { - panic!("Found minimal(shrinked) failing case: {value:?}"); + Err(TestError::Fail(reason, value)) => { + panic!("FAILURE: {}\nMinimal failing case: {value:?}", reason.message()); } Ok(_) => (), _ => panic!("Unexpected test result: {res:?}"), @@ -821,15 +828,80 @@ fn store_unaligned_u32() { run_test(3, 0xaa332211, 0x88ddccbb); } +#[test] +fn load_unaligned_u64() { + // Use the start of the 17th page (1 page after the 16 pages reserved for the Rust stack) + let write_to = 17 * 2u32.pow(16); + + // Generate a `test` module with `main` function that loads from `write_to` + a passed offset. + let signature = Signature::new([AbiParam::new(Type::U32)], [AbiParam::new(Type::U64)]); + + // Compile once outside the test loop + let (package, context) = compile_test_module(signature, |builder| { + let block = builder.current_block(); + + // Get the offset, add it to the base address and load the 64bit value there. + let offs = block.borrow().arguments()[0] as ValueRef; + let base_addr = builder.u32(write_to, SourceSpan::default()); + let read_addr = builder.add(base_addr, offs, SourceSpan::default()).unwrap(); + let ptr = builder + .inttoptr(read_addr, Type::from(PointerType::new(Type::U64)), SourceSpan::default()) + .unwrap(); + let loaded = builder.load(ptr, SourceSpan::default()).unwrap(); + + // Return the value so we can assert that the output of execution matches + builder.ret(Some(loaded), SourceSpan::default()).unwrap(); + }); + + let run_test = |offs: u32, expected: u64| { + // Initialise memory with some known bytes. + let initializers = [Initializer::MemoryBytes { + addr: write_to, + bytes: &[ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + 0x17, 0x18, + ], + }]; + + let output = eval_package::( + &package, + initializers, + &[Felt::new(offs as u64)], + context.session(), + |trace| { + // + let stack = trace.outputs(); + let hi: u64 = stack.get_stack_item(0).unwrap().into(); + let lo: u64 = stack.get_stack_item(1).unwrap().into(); + + eprintln!("hi limb = 0x{hi:08x}"); + eprintln!("lo limb = 0x{lo:08x}"); + + Ok(()) + }, + ) + .unwrap(); + + assert_eq!(output, expected); + }; + + run_test(0, 0x0807060504030201_u64); + run_test(1, 0x1108070605040302_u64); + run_test(2, 0x1211080706050403_u64); + run_test(3, 0x1312110807060504_u64); + run_test(4, 0x1413121108070605_u64); + run_test(5, 0x1514131211080706_u64); + run_test(6, 0x1615141312110807_u64); + run_test(7, 0x1716151413121108_u64); +} + #[test] fn store_unaligned_u64() { // Use the start of the 17th page (1 page after the 16 pages reserved for the Rust stack) let write_to = 17 * 2u32.pow(16); - // STORE_DW writes the high 32bit word to address and low 32bit word to address+1. - // So a .store() of 0xddccbbaa_cdabffee writes 0xddccbbaa to addr and 0xcdabffee to addr+1. - // Which in turn will be little-endian bytes [ AA BB CC DD EE FF AB CD ] at addr. - let write_val = 0xddccbbaa_cdabffee_u64; + // Value which in turn will be little-endian bytes [ AA BB CC DD EE FF AB CD ] at addr. + let write_val = 0xcdabffee_ddccbbaa_u64; // Generate a `test` module with `main` function that stores to a u32 offset. let signature = Signature::new( @@ -917,6 +989,12 @@ fn store_unaligned_u64() { assert_eq!(output, 1); }; + // Overwrite 01 02 03 04 05 06 07 08-11 12 13 14 15 16 17 18 + // with bytes aa bb cc dd ee ff ab cd at offset 0: + // Expect aa bb cc dd ee ff ab cd 11 12 13 14 15 16 17 18 + // or 0xccbbaa01, 0xabffeedd, 0x141312cd, 0x18171615 + run_test(0, 0xddccbbaa, 0xcdabffee, 0x14131211, 0x18171615); + // Overwrite 01 02 03 04 05 06 07 08-11 12 13 14 15 16 17 18 // with bytes aa bb cc dd ee ff ab cd at offset 1: // Expect 01 aa bb cc dd ee ff ab cd 12 13 14 15 16 17 18 diff --git a/tests/integration/src/rust_masm_tests/instructions.rs b/tests/integration/src/rust_masm_tests/instructions.rs index 326b07576..8efdcd509 100644 --- a/tests/integration/src/rust_masm_tests/instructions.rs +++ b/tests/integration/src/rust_masm_tests/instructions.rs @@ -87,13 +87,6 @@ macro_rules! test_wide_bin_op { let rs_out = a $op b; dbg!(&rs_out); - // Moves the little-endian 32bit limbs [A, B, C, D] to [D, C, B, A]. - let rs_out = ((rs_out >> 32) & 0xffffffff_00000000_00000000) - | ((rs_out & 0xffffffff_00000000_00000000) << 32) - | ((rs_out & 0xffffffff_00000000) >> 32) - | ((rs_out & 0xffffffff) << 32); - let rs_out_bytes = rs_out.to_le_bytes(); - // Write the operation result to 20 * PAGE_SIZE. let out_addr = 20u32 * 65536; @@ -104,11 +97,14 @@ macro_rules! test_wide_bin_op { dbg!(&args); eval_package::(&package, None, &args, &test.session, |trace| { - let vm_out: [u8; 16] = + let vm_out_bytes: [u8; 16] = trace.read_from_rust_memory(out_addr).expect("output was not written"); - dbg!(&vm_out); + dbg!(&vm_out_bytes); + + let rs_out_bytes = rs_out.to_le_bytes(); dbg!(&rs_out_bytes); - prop_assert_eq!(&rs_out_bytes, &vm_out, "VM output mismatch"); + + prop_assert_eq!(&rs_out_bytes, &vm_out_bytes, "VM output mismatch"); Ok(()) })?; @@ -253,6 +249,9 @@ test_int_op!(add, +, i8, 0..=i8::MAX/2, 0..=i8::MAX/2); // const WK1234: i128 = 79228162551157825753847955460000; // const WC1234: i128 = 7922816255115782575384795546000; // +// const WK1234H: i128 = 0x00001000_00002000_00003000_00004000; +// const WC1234H: i128 = 0x00000100_00000200_00000300_00000400; +// // test_wide_bin_op!(xxx, x, i128, i128, WK1234..=WK1234, WC1234..=WC1234); test_wide_bin_op!(add, +, u128, u128, 0..=u128::MAX/2, 0..=u128::MAX/2); From 8328937e93ee8d97a764ce8e554673f7afcee5bf Mon Sep 17 00:00:00 2001 From: Toby Hutton Date: Fri, 12 Dec 2025 10:57:08 +1100 Subject: [PATCH 2/2] Optimise the `realign_dw` memory intrinsic slightly. By changing the output to have the low word at the top we can avoid two `swap.1`s. --- codegen/masm/intrinsics/mem.masm | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/codegen/masm/intrinsics/mem.masm b/codegen/masm/intrinsics/mem.masm index 5aaa3d1d4..a50c8bb33 100644 --- a/codegen/masm/intrinsics/mem.masm +++ b/codegen/masm/intrinsics/mem.masm @@ -229,7 +229,9 @@ end # to perform a sequence of shifts and masks to get the bits where they belong. This function # performs those steps, with the assumption that the caller has three values on the operand stack # representing any unaligned double-word value -export.realign_dw # [chunk_hi, chunk_mid, chunk_lo, offset] +# +# Stack transition is [chunk_hi, chunk_mid, chunk_lo, offset] -> [shifted_lo, shifted_hi] +export.realign_dw # We will refer to the parts of our desired double-word value # as two parts, `x_hi` and `x_lo`. # Re-align the high bits by shifting out the offset @@ -283,9 +285,6 @@ export.realign_dw # [chunk_hi, chunk_mid, chunk_lo, offset] # OR the two halves together, giving us our second word, `x_lo` u32or # [x_lo, x_hi] - - # Swap the words so they are in the correct order - swap.1 # [x_hi, x_lo] end # Shift two 32-bit words by the given offset. @@ -330,13 +329,10 @@ export.load_dw # [addr, offset] swap.1 push.8 mul push.32 swap.1 sub swap.1 # [addr, bit_offset] # load the three elements containing the double-word on the stack and re-align - # NOTE: realign_dw expects the hi, mid, lo word inputs and returns hi, lo (i.e., everything - # is 64-bit big-endian limb oriented), so we must swap the output to be in the correct order dup.0 mem_load # [e0, addr, bit_offset] dup.1 push.1 u32overflowing_add assertz mem_load # [e1, e0, addr, bit_offset] movup.2 push.2 u32overflowing_add assertz mem_load # [e2, e1, e0, bit_offset] exec.realign_dw - swap.1 end end